Преглед изворни кода

Merge remote-tracking branch 'origin/test' into test

wks пре 1 година
родитељ
комит
790e465309
65 измењених фајлова са 1557 додато и 387 уклоњено
  1. 61 36
      sql/Online.sql
  2. BIN
      sql/jar/crypto-kit-1.1.0-1.0.0.jar
  3. 1 0
      src/main/java/com/ydtech/components/TokenInterceptor.java
  4. 7 1
      src/main/java/com/ydtech/modules/admin/constants/SwitchConfig.java
  5. 12 0
      src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java
  6. 2 2
      src/main/java/com/ydtech/modules/admin/controller/SysUserController.java
  7. 6 4
      src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java
  8. 8 0
      src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java
  9. 16 1
      src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java
  10. 0 8
      src/main/java/com/ydtech/modules/admin/model/SysUser.java
  11. 5 0
      src/main/java/com/ydtech/modules/admin/model/dto/PartnerCountDto.java
  12. 5 0
      src/main/java/com/ydtech/modules/admin/model/po/SysAmountAuditingEntity.java
  13. 6 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java
  14. 1 1
      src/main/java/com/ydtech/modules/admin/model/vo/PartnerCountVo.java
  15. 0 2
      src/main/java/com/ydtech/modules/admin/model/vo/SysUser2Vo.java
  16. 1 0
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  17. 10 0
      src/main/java/com/ydtech/modules/admin/service/SysSwitchConfigService.java
  18. 20 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java
  19. 144 40
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  20. 20 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysSwitchConfigServiceImpl.java
  21. 24 4
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java
  22. 5 3
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  23. 1 1
      src/main/java/com/ydtech/modules/fnc/dao/contract/ContractSupplierMapper.java
  24. 4 0
      src/main/java/com/ydtech/modules/fnc/dto/contract/ContractDto.java
  25. 4 0
      src/main/java/com/ydtech/modules/fnc/entity/ContractEntity.java
  26. 1 1
      src/main/java/com/ydtech/modules/fnc/service/contract/ContractSupplierService.java
  27. 13 10
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java
  28. 14 11
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java
  29. 48 0
      src/main/java/com/ydtech/modules/lg/PushLgLogUtils.java
  30. 30 0
      src/main/java/com/ydtech/modules/lg/PushRetry.java
  31. 70 0
      src/main/java/com/ydtech/modules/lg/SendUtils.java
  32. 7 0
      src/main/java/com/ydtech/modules/lg/dao/PushLgEntityMapper.java
  33. 56 0
      src/main/java/com/ydtech/modules/lg/model/PushLgEntity.java
  34. 11 0
      src/main/java/com/ydtech/modules/lg/service/PushLgEntityService.java
  35. 21 0
      src/main/java/com/ydtech/modules/lg/service/impl/PushLgEntityServiceImpl.java
  36. 5 3
      src/main/java/com/ydtech/modules/order/components/yangguang/YangGuangRequestApiComponents.java
  37. 12 3
      src/main/java/com/ydtech/modules/order/controller/QuoteController.java
  38. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
  39. 11 0
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangSubmitRequest.java
  40. 9 8
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangUpLoadRequest.java
  41. 13 0
      src/main/java/com/ydtech/modules/order/entity/api/yangguang/response/YangGuangSubmitResponse.java
  42. 47 16
      src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java
  43. 156 0
      src/main/java/com/ydtech/modules/ttqf/AmountAuditingService.java
  44. 3 14
      src/main/java/com/ydtech/modules/ttqf/LgInformationPush.java
  45. 30 23
      src/main/java/com/ydtech/modules/ttqf/RetrieveTTQFApi.java
  46. 3 1
      src/main/java/com/ydtech/modules/ttqf/SavePayOrder.java
  47. 62 0
      src/main/java/com/ydtech/modules/ttqf/TtqfDecrypt.java
  48. 44 25
      src/main/java/com/ydtech/modules/ttqf/controller/TtqfController.java
  49. 0 99
      src/main/java/com/ydtech/modules/ttqf/decrypt.java
  50. 5 0
      src/main/java/com/ydtech/modules/ttqf/entity/PaySignCallback.java
  51. 2 0
      src/main/java/com/ydtech/modules/ttqf/entity/PayTtqfLog.java
  52. 16 1
      src/main/java/com/ydtech/modules/ttqf/entity/PayUserSign.java
  53. 23 0
      src/main/java/com/ydtech/modules/ttqf/entity/response/TtqfResponse.java
  54. 5 24
      src/main/java/com/ydtech/modules/ttqf/entity/vo/PaySigningInformation.java
  55. 21 0
      src/main/java/com/ydtech/modules/ttqf/entity/vo/UserWithdrawal.java
  56. 17 0
      src/main/java/com/ydtech/modules/ttqf/entity/vo/WithdrawalFRes.java
  57. 4 5
      src/main/java/com/ydtech/modules/ttqf/service/PayUserSignService.java
  58. 10 3
      src/main/java/com/ydtech/modules/ttqf/service/TtqfService.java
  59. 23 10
      src/main/java/com/ydtech/modules/ttqf/service/impl/PayUserSignServiceImpl.java
  60. 237 14
      src/main/java/com/ydtech/modules/ttqf/service/impl/TtqfServiceImpl.java
  61. 1 1
      src/main/resources/application-test.yml
  62. 51 0
      src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml
  63. 103 2
      src/main/resources/mapper/modules/admin/SysPartnerMapper.xml
  64. 1 1
      src/main/resources/mapper/modules/esm/EsmUserImageMapper.xml
  65. 8 8
      src/main/resources/mapper/modules/fnc/contract/ContractSupplierMapper.xml

+ 61 - 36
sql/Online.sql

@@ -80,6 +80,39 @@ ALTER TABLE `agent`.`sys_user`
 -- 2024.11.1 --
 -- 2024.11.1 --
 ALTER TABLE `agent`.`sys_user` ADD COLUMN `identity_time` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证有效期' AFTER `identity`;
 ALTER TABLE `agent`.`sys_user` ADD COLUMN `identity_time` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证有效期' AFTER `identity`;
 
 
+
+
+-- 2024.11.4  helixiao --
+
+ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `licenseno` varchar(30) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '车牌号';
+ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `source` tinyint DEFAULT NULL COMMENT '费用来源(1,2,3,4,5级)';
+
+-- 2024.11.11 dongxin --
+CREATE TABLE `sys_user_agent_track`  (
+                                         `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+                                         `user_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
+                                         `status` tinyint NULL DEFAULT NULL COMMENT '状态  0.注册 1.认证成功 2.认证失败 3.审核成功 4.审核失败',
+                                         `approve_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核人Id',
+                                         `approve_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核人',
+                                         `approve_mess` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核认证信息',
+                                         `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
+                                         `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+                                         PRIMARY KEY (`id`) USING BTREE,
+                                         INDEX `idx_sys_user_track_user_id`(`user_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 571 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '个代用户认证审核轨迹表' ROW_FORMAT = DYNAMIC;
+
+
+
+
+
+-- 2024-11-15 协议修改时间格式--
+ALTER TABLE `agent`.`ptl_agreement`
+MODIFY COLUMN `start_date` datetime NOT NULL COMMENT '协议起期' AFTER `insurance_company_id`,
+MODIFY COLUMN `end_date` datetime NOT NULL COMMENT '协议止期' AFTER `start_date`;
+
+
+
+-- 2024-11-16 添加提现与银联api表 --
 CREATE TABLE `pay_payment_notice` (
 CREATE TABLE `pay_payment_notice` (
                                       `id` bigint NOT NULL,
                                       `id` bigint NOT NULL,
                                       `type` varchar(255) DEFAULT NULL COMMENT '通知类型',
                                       `type` varchar(255) DEFAULT NULL COMMENT '通知类型',
@@ -93,22 +126,21 @@ CREATE TABLE `pay_payment_notice` (
                                       `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                       `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                       PRIMARY KEY (`id`)
                                       PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 CREATE TABLE `pay_sign_callback` (
 CREATE TABLE `pay_sign_callback` (
-                                     `id` int NOT NULL,
+                                     `id` bigint NOT NULL,
                                      `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '默认值:PRESIGN',
                                      `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '默认值:PRESIGN',
                                      `org_req_id` bigint DEFAULT NULL COMMENT '最后一次请求',
                                      `org_req_id` bigint DEFAULT NULL COMMENT '最后一次请求',
                                      `name` varchar(255) DEFAULT NULL,
                                      `name` varchar(255) DEFAULT NULL,
                                      `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
                                      `mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
-                                     `id_card_no` varchar(255) DEFAULT NULL,
-                                     `bank_card_no` varchar(255) DEFAULT NULL,
-                                     `bank_name` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+                                     `id_card_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '身份证号',
+                                     `bank_card_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '银行卡号',
+                                     `bank_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '银行名称',
                                      `auth_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '认证状态:0-未实名1-已实名',
                                      `auth_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '认证状态:0-未实名1-已实名',
                                      `sign_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '签约状态:0-未签约1-已签约',
                                      `sign_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '签约状态:0-未签约1-已签约',
                                      `bind_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT ' 绑卡状态:0-未绑定1-已绑定',
                                      `bind_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT ' 绑卡状态:0-未绑定1-已绑定',
+                                     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                      PRIMARY KEY (`id`)
                                      PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户签约回调';
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户签约回调';
-
 CREATE TABLE `pay_ttqf_confirm` (
 CREATE TABLE `pay_ttqf_confirm` (
                                     `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
                                     `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
                                     `user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户ID',
                                     `user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户ID',
@@ -121,7 +153,6 @@ CREATE TABLE `pay_ttqf_confirm` (
                                     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                     PRIMARY KEY (`id`)
                                     PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 CREATE TABLE `pay_ttqf_log` (
 CREATE TABLE `pay_ttqf_log` (
                                 `id` varchar(255) NOT NULL,
                                 `id` varchar(255) NOT NULL,
                                 `user_id` varchar(255) DEFAULT NULL COMMENT '用户ID',
                                 `user_id` varchar(255) DEFAULT NULL COMMENT '用户ID',
@@ -141,43 +172,37 @@ CREATE TABLE `pay_ttqf_log` (
                                 `confirm` tinyint(1) NOT NULL DEFAULT '0' COMMENT '确认打款1-已确认',
                                 `confirm` tinyint(1) NOT NULL DEFAULT '0' COMMENT '确认打款1-已确认',
                                 `create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建者',
                                 `create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建者',
                                 `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                 `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+                                `sys_amount_auditing_id` varchar(255) DEFAULT NULL,
                                 PRIMARY KEY (`id`)
                                 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 CREATE TABLE `pay_user_sign` (
 CREATE TABLE `pay_user_sign` (
                                  `id` bigint NOT NULL,
                                  `id` bigint NOT NULL,
-                                 `user_id` varchar(255) DEFAULT NULL COMMENT '用户ID',
-                                 `sign` tinyint NOT NULL DEFAULT '0' COMMENT '签约1-是',
+                                 `user_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户ID',
+                                 `identity` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用户身份证号',
+                                 `sign` tinyint NOT NULL DEFAULT '0' COMMENT '签约状态:0-未签约1-已签约',
+                                 `auth_status` tinyint DEFAULT '0' COMMENT '认证状态:0-未实名1-已实名',
                                  `online_payment` tinyint NOT NULL DEFAULT '0' COMMENT '线上支付1-是',
                                  `online_payment` tinyint NOT NULL DEFAULT '0' COMMENT '线上支付1-是',
+                                 `create_time` datetime DEFAULT NULL,
                                  PRIMARY KEY (`id`)
                                  PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
--- 2024.11.1  xuqiang --
-
--- 2024.11.4  helixiao --
-
-ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `licenseno` varchar(30) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '车牌号';
-ALTER TABLE `agent`.`sys_premium_details` ADD COLUMN `source` tinyint DEFAULT NULL COMMENT '费用来源(1,2,3,4,5级)';
-
--- 2024.11.11 dongxin --
-CREATE TABLE `sys_user_agent_track`  (
-                                         `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
-                                         `user_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
-                                         `status` tinyint NULL DEFAULT NULL COMMENT '状态  0.注册 1.认证成功 2.认证失败 3.审核成功 4.审核失败',
-                                         `approve_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核人Id',
-                                         `approve_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核人',
-                                         `approve_mess` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核认证信息',
-                                         `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
-                                         `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
-                                         PRIMARY KEY (`id`) USING BTREE,
-                                         INDEX `idx_sys_user_track_user_id`(`user_id` ASC) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 571 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '个代用户认证审核轨迹表' ROW_FORMAT = DYNAMIC;
-
-
-
+CREATE TABLE `push_lg_data` (
+                                `id` bigint NOT NULL,
+                                `application_time` datetime DEFAULT NULL,
+                                `business_umber` varchar(255) DEFAULT NULL,
+                                `payee` varchar(255) DEFAULT NULL,
+                                `payee_id` varchar(36) DEFAULT NULL,
+                                `receiving_account` varchar(255) DEFAULT NULL,
+                                `extract_money` decimal(10,2) DEFAULT NULL,
+                                `service_charge` decimal(10,2) DEFAULT NULL,
+                                `extract_status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+                                `push_status` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
+                                `msg` longtext,
+                                `send_number` int DEFAULT NULL,
+                                PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='推送提现 记录到零工系统';
 
 
+ALTER TABLE `agent`.`sys_amount_auditing` ADD COLUMN `approval` tinyint(1) NULL DEFAULT 0 COMMENT '是否自动审批1-是' AFTER `account_id`;
 
 
--- 2024-11-15 协议修改时间格式--
-ALTER TABLE `agent`.`ptl_agreement`
-MODIFY COLUMN `start_date` datetime NOT NULL COMMENT '协议起期' AFTER `insurance_company_id`,
-MODIFY COLUMN `end_date` datetime NOT NULL COMMENT '协议止期' AFTER `start_date`;
+--  --

BIN
sql/jar/crypto-kit-1.1.0-1.0.0.jar


+ 1 - 0
src/main/java/com/ydtech/components/TokenInterceptor.java

@@ -107,6 +107,7 @@ public class TokenInterceptor {
         notMatchList.add("/ttqf/paymentNotice");
         notMatchList.add("/ttqf/paymentNotice");
         notMatchList.add("/ttqf/userSign");
         notMatchList.add("/ttqf/userSign");
         notMatchList.add("/ttqf/aa/*");
         notMatchList.add("/ttqf/aa/*");
+        notMatchList.add("/ttqf/**");
 
 
         return new SaInterceptor(handler -> {
         return new SaInterceptor(handler -> {
             // 指定一条 match 规则
             // 指定一条 match 规则

+ 7 - 1
src/main/java/com/ydtech/modules/admin/constants/SwitchConfig.java

@@ -32,7 +32,13 @@ public enum SwitchConfig {
     // 是否显示
     // 是否显示
     WCQCA_01("weComQRCodeAgent", "企业微信二维码显示(代理人)"),
     WCQCA_01("weComQRCodeAgent", "企业微信二维码显示(代理人)"),
     WCQCA_02("weComQRCodeChannel", "企业微信二维码显示(渠道)"),
     WCQCA_02("weComQRCodeChannel", "企业微信二维码显示(渠道)"),
-    WCQCA_03("weComQRCodeOther", "企业微信二维码显示(其他)");
+    WCQCA_03("weComQRCodeOther", "企业微信二维码显示(其他)"),
+    //余额提现控制
+    YETX_01("balanceExtract","提现控制(线上或线下)")
+    ;
+
+
+
 
 
     private final String code;
     private final String code;
 
 

+ 12 - 0
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -180,6 +180,18 @@ public class APPPartnerController extends BaseController {
 
 
         return HttpResult.ok("success",this.sysPartnerService.getPartnerCount(partnerCountDto));
         return HttpResult.ok("success",this.sysPartnerService.getPartnerCount(partnerCountDto));
     }
     }
+
+    /**
+     *  五级合伙人新增人员统计
+     */
+    @PostMapping("/getFivePartnerCount")
+    @ApiOperation(value = "五级合伙人新增人员统计")
+    public HttpResult<PartnerCountVo> getFivePartnerCount(@RequestBody PartnerCountDto partnerCountDto) {
+
+        return HttpResult.ok("success",this.sysPartnerService.getFivePartnerCount(partnerCountDto));
+    }
+
+
     /**
     /**
      * 新增人员占比分析
      * 新增人员占比分析
      */
      */

+ 2 - 2
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -929,8 +929,8 @@ public class SysUserController extends BaseController {
         SysUser sysUser = sysUserVo.getSysUser();
         SysUser sysUser = sysUserVo.getSysUser();
         if (sysUserVo.getIsPartner() != null && sysUserVo.getIsPartner().equals("1")) {
         if (sysUserVo.getIsPartner() != null && sysUserVo.getIsPartner().equals("1")) {
             SysUserInfo sysUserInfo = new SysUserInfo();
             SysUserInfo sysUserInfo = new SysUserInfo();
-            SysUser partnerId = sysUserService.getById(sysUserVo.getSysUser().getReferrerId());
-            sysUser.setDeptId(partnerId.getDeptId());
+            SysUser sysUser1 = sysUserService.getById(sysUserVo.getSysUser().getReferrerId());
+            sysUser.setDeptId(sysUser1.getDeptId());
             sysUser.setStatus(2); //直接默认为入司待审核
             sysUser.setStatus(2); //直接默认为入司待审核
             LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
             LocalDate birthday = LocalDate.parse(sysUser.getIdentity().substring(6, 10) + "-" + sysUser.getIdentity().substring(10, 12) + "-" + sysUser.getIdentity().substring(12, 14));
             sysUserInfo.setBirthday(birthday);
             sysUserInfo.setBirthday(birthday);

+ 6 - 4
src/main/java/com/ydtech/modules/admin/dao/SysAgencyLeaderMapper.java

@@ -4,11 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysAgencyLeader;
-import com.ydtech.modules.admin.model.dto.AgencyUserInsAreaDto;
-import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderListDto;
-import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo;
 import com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo;
+import com.ydtech.modules.admin.model.vo.CountUserNumVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -51,5 +49,9 @@ public interface SysAgencyLeaderMapper extends BaseMapper<SysAgencyLeader> {
     IPage<SysAgencyLeader> queryLeaderPage(Page page,@Param("dto") SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
     IPage<SysAgencyLeader> queryLeaderPage(Page page,@Param("dto") SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
 
 
     int updateByIds(@Param("dto") SysAgencyLeaderListDto sysAgencyLeaderDto);
     int updateByIds(@Param("dto") SysAgencyLeaderListDto sysAgencyLeaderDto);
+
+    List<CountUserNumVo> queryWorkByFive(@Param("workIds") List<String> workIds,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryWorkByFiveTime(@Param("workIds") List<String> workIds,@Param("dto") PartnerCountDto partnerCountDto);
 }
 }
 
 

+ 8 - 0
src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java

@@ -49,5 +49,13 @@ public interface SysPartnerMapper extends BaseMapper<SysPartner> {
     List<CountUserNumVo> queryPartnerByTimes(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
     List<CountUserNumVo> queryPartnerByTimes(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
 
 
     List<CountUserNumVo> queryPartnerByTime(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
     List<CountUserNumVo> queryPartnerByTime(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryDeptByFive(@Param("deptIds") List<String> deptIds, @Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryDeptByFiveTime(@Param("deptIds") List<String> deptIds,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryUserByFive(@Param("deptIds") List<String> deptIds,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryUserByFiveTime(@Param("deptIds") List<String> deptIds,@Param("dto")  PartnerCountDto partnerCountDto);
 }
 }
 
 

+ 16 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java

@@ -29,7 +29,22 @@ public interface SysUserBankCardMapper extends BaseMapper<SysUserBankCard> {
 
 
     List<SysUserBankCardHistory> getUserBankCardHistoryList(@Param("sysUserBankCardHistory") SysUserBankCardHistory sysUserBankCardHistory);
     List<SysUserBankCardHistory> getUserBankCardHistoryList(@Param("sysUserBankCardHistory") SysUserBankCardHistory sysUserBankCardHistory);
 
 
-    @Select("SELECT u.mobile, u.identity,u.identity_time, b.real_user_name AS user_name,b.user_id, b.bank_number FROM sys_user_bank_card b INNER JOIN sys_user u ON u.id = b.user_id WHERE b.is_default = 1 AND b.user_id = #{userId}")
+    @Select("SELECT " +
+            "  u.mobile, " +
+            "  u.identity, " +
+            "  u.identity_time, " +
+            "  b.real_user_name AS user_name, " +
+            "  b.user_id, " +
+            "  b.bank_number, " +
+            "  d.management_source " +
+            " FROM " +
+            "  sys_user_bank_card b " +
+            "  INNER JOIN sys_user u ON u.id = b.user_id " +
+            "  INNER JOIN sys_dept d ON u.dept_id = d.id " +
+            "   " +
+            " WHERE " +
+            "  b.is_default = 1  " +
+            "  AND b.user_id = #{userId}")
     SysUserBankCard selectByIdPay(@Param("userId") String userId);
     SysUserBankCard selectByIdPay(@Param("userId") String userId);
 }
 }
 
 

+ 0 - 8
src/main/java/com/ydtech/modules/admin/model/SysUser.java

@@ -236,14 +236,6 @@ public class SysUser extends BaseEntity {
     @ApiModelProperty(value = "合伙人等级;1,2,3,4,5")
     @ApiModelProperty(value = "合伙人等级;1,2,3,4,5")
     private Integer level;
     private Integer level;
 
 
-    @ApiModelProperty(value = "推荐人id")
-    @TableField(exist = false)
-    private String suggestId;
-
-    @ApiModelProperty(value = "推荐人name")
-    @TableField(exist = false)
-    private String suggestName;
-
     @ApiModelProperty(value = "申请机构来源 1 渠道 2 个代")
     @ApiModelProperty(value = "申请机构来源 1 渠道 2 个代")
     @TableField(value = "dept_source")
     @TableField(value = "dept_source")
     private String deptSource;
     private String deptSource;

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerCountDto.java

@@ -14,6 +14,11 @@ public class PartnerCountDto {
 
 
     @ApiModelProperty(value = "合伙人等级类型:1,2,3,4,5")
     @ApiModelProperty(value = "合伙人等级类型:1,2,3,4,5")
     private int type;
     private int type;
+    /**
+     * 五级合伙人参数
+     */
+    @ApiModelProperty(value = "类型:1:工作室,2:团队 3:代理人")
+    private int number;
 
 
 
 
 }
 }

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysAmountAuditingEntity.java

@@ -204,6 +204,11 @@ public class SysAmountAuditingEntity implements Serializable {
     @TableField(value = "account_id")
     @TableField(value = "account_id")
     private String accountId;
     private String accountId;
 
 
+    /***
+     *   是否自动审批1-是
+     */
+    private int approval;
+
     /***
     /***
      *  机构来源
      *  机构来源
      */
      */

+ 6 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java

@@ -107,4 +107,10 @@ public class SysUserBankCard implements Serializable {
     @TableField(exist = false)
     @TableField(exist = false)
     private String identityTime;
     private String identityTime;
 
 
+    /**
+     * 机构来源(1-渠道、2-个代)
+     */
+    @TableField(exist = false)
+    private String managementSource;
+
 }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/admin/model/vo/PartnerCountVo.java

@@ -28,7 +28,7 @@ public class PartnerCountVo {
 
 
     @ApiModelProperty(value = "团队人数")
     @ApiModelProperty(value = "团队人数")
     private Integer deptManSum;
     private Integer deptManSum;
-
+    @ApiModelProperty(value = "曲线图")
     private List<CountUserNumVo> countUserNumVoList;
     private List<CountUserNumVo> countUserNumVoList;
 
 
 }
 }

+ 0 - 2
src/main/java/com/ydtech/modules/admin/model/vo/SysUser2Vo.java

@@ -25,8 +25,6 @@ public class SysUser2Vo {
     @ApiModelProperty("是否是合伙人")
     @ApiModelProperty("是否是合伙人")
     private String isPartner;
     private String isPartner;
 
 
-    @ApiModelProperty("推荐人Id")
-    private String referrerId;
 
 
     @ApiModelProperty("影像信息")
     @ApiModelProperty("影像信息")
     private List<EsmUserImageVo> esmUserImageVo;
     private List<EsmUserImageVo> esmUserImageVo;

+ 1 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -70,6 +70,7 @@ public interface SysPartnerService extends IService<SysPartner> {
     CountUserVo getCountUser(CountUserDto countUserDto);
     CountUserVo getCountUser(CountUserDto countUserDto);
 
 
     PartnerCountVo getPartnerCount(PartnerCountDto partnerCountDto);
     PartnerCountVo getPartnerCount(PartnerCountDto partnerCountDto);
+    PartnerCountVo getFivePartnerCount(PartnerCountDto partnerCountDto);
 
 
     PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto);
     PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto);
 
 

+ 10 - 0
src/main/java/com/ydtech/modules/admin/service/SysSwitchConfigService.java

@@ -96,4 +96,14 @@ public interface SysSwitchConfigService extends BaseIService<SysSwitchConfig> {
      *  @Description:  协议授权开关
      *  @Description:  协议授权开关
      */
      */
     boolean xysqDisplaySwitches();
     boolean xysqDisplaySwitches();
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/10/25 11:43
+     *  @Description:  余额提现走线上或者线下
+     */
+    boolean getBalanceExtractStatus();
+
+
 }
 }

+ 20 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -24,6 +24,8 @@ import com.ydtech.modules.admin.service.SysAmountAuditingService;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fnc.entity.InsPlyIncome;
 import com.ydtech.modules.fnc.entity.InsPlyIncome;
+import com.ydtech.modules.lg.model.PushLgEntity;
+import com.ydtech.modules.lg.service.PushLgEntityService;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -51,6 +53,9 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Autowired
     @Autowired
     private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
     private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
 
 
+    @Autowired
+    private PushLgEntityService pushLgEntityService;
+
     /**
     /**
      *  @version
      *  @version
      *  @author: hxl
      *  @author: hxl
@@ -137,6 +142,21 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         }
         }
     }
     }
 
 
+
+    public void sendLgParams(SysAmountAuditingHistory sysAmountAuditingHistory,SysAmountAuditingEntity sysAmountAuditingEntity){
+        PushLgEntity lgEntity = new PushLgEntity();
+        lgEntity.setApplicationTime(new Date());
+        lgEntity.setBusinessUmber(sysAmountAuditingEntity.getId());
+        lgEntity.setPayee(sysAmountAuditingEntity.getUserName());
+        lgEntity.setPayeeId(String.valueOf(sysAmountAuditingEntity.getUserId()));
+        lgEntity.setReceivingAccount(sysAmountAuditingEntity.getBankNumber());
+        lgEntity.setExtractMoney(sysAmountAuditingHistory.getAmount());
+        lgEntity.setServiceCharge(null);
+        lgEntity.setExtractStatus(sysAmountAuditingHistory.getAuditingStatus());
+        pushLgEntityService.sendLgData(lgEntity);
+    }
+
+
     @Override
     @Override
     public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) {
     public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) {
         return baseMapper.getByUserId(userId,amountStatus);
         return baseMapper.getByUserId(userId,amountStatus);

+ 144 - 40
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -1783,48 +1783,49 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         partnerCountDto.setType(type + partnerCountDto.getType());
         partnerCountDto.setType(type + partnerCountDto.getType());
         //查询登陆人下所有合伙人
         //查询登陆人下所有合伙人
         List<SysPartner> sysPartnerList = sysPartnerMapper.queryPartnerById(userId, partnerCountDto);
         List<SysPartner> sysPartnerList = sysPartnerMapper.queryPartnerById(userId, partnerCountDto);
-        if (CollectionUtil.isEmpty(sysPartnerList)) return partnerCountVo;
-
-
-        //统计每一个等级的合伙人数
-        if (type == 1) {
-            //1
-            List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
-            partnerCountVo.setOnePartnerNum(onePartners.size());
-            //2
-            List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
-            partnerCountVo.setTwoPartnerNum(twoPartners.size());
-            //3
-            List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
-            partnerCountVo.setThreePartnerNum(threePartners.size());
-            //4
-            List<SysPartner> fourPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 4).collect(Collectors.toList());
-            partnerCountVo.setFourPartnerNum(fourPartners.size());
-
-        } else if (type == 2) {
-            //1
-            List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
-            partnerCountVo.setOnePartnerNum(onePartners.size());
-            //2
-            List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
-            partnerCountVo.setTwoPartnerNum(twoPartners.size());
-            //3
-            List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
-            partnerCountVo.setThreePartnerNum(threePartners.size());
+        if (CollectionUtil.isNotEmpty(sysPartnerList)){
+            //统计每一个等级的合伙人数
+            if (type == 1) {
+                //1
+                List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
+                partnerCountVo.setOnePartnerNum(onePartners.size());
+                //2
+                List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
+                partnerCountVo.setTwoPartnerNum(twoPartners.size());
+                //3
+                List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
+                partnerCountVo.setThreePartnerNum(threePartners.size());
+                //4
+                List<SysPartner> fourPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 4).collect(Collectors.toList());
+                partnerCountVo.setFourPartnerNum(fourPartners.size());
+
+            } else if (type == 2) {
+                //1
+                List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
+                partnerCountVo.setOnePartnerNum(onePartners.size());
+                //2
+                List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
+                partnerCountVo.setTwoPartnerNum(twoPartners.size());
+                //3
+                List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
+                partnerCountVo.setThreePartnerNum(threePartners.size());
+
+            } else if (type == 3) {
+                //1
+                List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
+                partnerCountVo.setOnePartnerNum(onePartners.size());
+                //2
+                List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
+                partnerCountVo.setTwoPartnerNum(twoPartners.size());
+
+            } else if (type == 4) {
+                //1
+                List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
+                partnerCountVo.setOnePartnerNum(onePartners.size());
+            }
+        }
 
 
-        } else if (type == 3) {
-            //1
-            List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
-            partnerCountVo.setOnePartnerNum(onePartners.size());
-            //2
-            List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
-            partnerCountVo.setTwoPartnerNum(twoPartners.size());
 
 
-        } else if (type == 4) {
-            //1
-            List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
-            partnerCountVo.setOnePartnerNum(onePartners.size());
-        }
         //工作室
         //工作室
         List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
         List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
                 .eq(SysRelationPerson::getSuggestId, userId)
                 .eq(SysRelationPerson::getSuggestId, userId)
@@ -1888,6 +1889,109 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         return partnerCountVo;
         return partnerCountVo;
     }
     }
 
 
+
+    @Override
+    public PartnerCountVo getFivePartnerCount(PartnerCountDto partnerCountDto) {
+        PartnerCountVo partnerCountVo = new PartnerCountVo();
+        String userId = BaseController.getUserId();
+        //原始参数
+        String startTime1 = partnerCountDto.getBeginTime();
+        String endTime1 = partnerCountDto.getEndTime();
+        List<String> deptIds = new ArrayList<>();
+        //工作室
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(SysRelationPerson::getSuggestId, userId)
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 1));
+        partnerCountVo.setWorkSum(sysRelationPersonList.size());
+        if (CollectionUtil.isNotEmpty(sysRelationPersonList)) {
+            List<String> workIds = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+            //查工作室下的团队
+            List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                    .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, workIds));
+            int deptSum = 0;
+            int deptManSum = 0;
+
+            for (SysAgencyLeader sysAgencyLeader : leaderList) {
+                //根据机构id查下面团队
+                List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
+                        .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
+                        .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
+                        .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
+                deptSum = deptSum + sysDeptList.size();
+                if (sysDeptList.size() > 0) {
+                    for (SysDept sysDept : sysDeptList) {
+                        deptIds.add(sysDept.getId());
+                        //团队下的人数
+                        List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                                .likeRight(SysUser::getId, sysDept.getId())
+                                .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7)));
+                        deptManSum = deptManSum + sysUserList.size();
+                    }
+                }
+            }
+
+            partnerCountVo.setDeptSum(deptSum);
+            partnerCountVo.setDeptManSum(deptManSum);
+
+            //曲线图
+            List<CountUserNumVo> countUserNumVoList = null;
+
+            int type = partnerCountDto.getNumber();
+
+            //类型:1:工作室,2:团队 3:代理人
+            if (type == 1) {
+                if (StringUtils.isNotEmpty(startTime1)) {
+                    String s = startTime1.split(" ")[0];
+                    String s1 = endTime1.split(" ")[0];
+                    if (s.equals(s1)) {
+                        //查一天的数据
+                        countUserNumVoList = sysAgencyLeaderMapper.queryWorkByFive(workIds,partnerCountDto);
+                    } else {
+                        //查日期范围数据
+                        countUserNumVoList = sysAgencyLeaderMapper.queryWorkByFiveTime(workIds,partnerCountDto);
+                    }
+                } else {
+                    countUserNumVoList = sysAgencyLeaderMapper.queryWorkByFiveTime(workIds,partnerCountDto);
+                }
+
+
+            }else if (type == 2) {
+                if (StringUtils.isNotEmpty(startTime1)) {
+                    String s = startTime1.split(" ")[0];
+                    String s1 = endTime1.split(" ")[0];
+                    if (s.equals(s1)) {
+                        //查一天的数据
+                        countUserNumVoList = sysPartnerMapper.queryDeptByFiveTime(deptIds, partnerCountDto);
+                    } else {
+                        countUserNumVoList = sysPartnerMapper.queryDeptByFive(deptIds, partnerCountDto);
+                    }
+                } else {
+                    countUserNumVoList = sysPartnerMapper.queryDeptByFive(deptIds, partnerCountDto);
+                }
+
+            } else if (type == 3){
+                if (StringUtils.isNotEmpty(startTime1)) {
+                    String s = startTime1.split(" ")[0];
+                    String s1 = endTime1.split(" ")[0];
+                    if (s.equals(s1)) {
+                        countUserNumVoList = sysPartnerMapper.queryUserByFive(deptIds, partnerCountDto);
+                    } else {
+                        countUserNumVoList = sysPartnerMapper.queryUserByFiveTime(deptIds, partnerCountDto);
+                    }
+                } else {
+                    countUserNumVoList = sysPartnerMapper.queryUserByFiveTime(deptIds, partnerCountDto);
+                }
+
+            }
+
+            partnerCountVo.setCountUserNumVoList(countUserNumVoList);
+        }
+
+
+        return partnerCountVo;
+    }
+
     @Override
     @Override
     public PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto) {
     public PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto) {
         PartnerProportionVo partnerProportionVo = new PartnerProportionVo();
         PartnerProportionVo partnerProportionVo = new PartnerProportionVo();

+ 20 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysSwitchConfigServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.service.impl;
 package com.ydtech.modules.admin.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.util.StringUtil;
 import com.github.pagehelper.util.StringUtil;
@@ -22,6 +23,7 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
@@ -41,6 +43,10 @@ public class SysSwitchConfigServiceImpl extends ServiceImpl<SysSwitchConfigMappe
 
 
     private final InsFeeOrderConfigService insFeeOrderConfigService;
     private final InsFeeOrderConfigService insFeeOrderConfigService;
 
 
+
+    @Autowired
+    private SysSwitchConfigMapper configMapper;
+
     @Override
     @Override
     public BigDecimal getEnterProportion(String deptId, Integer entryStatus) {
     public BigDecimal getEnterProportion(String deptId, Integer entryStatus) {
         if (entryStatus != 2) {
         if (entryStatus != 2) {
@@ -177,6 +183,20 @@ public class SysSwitchConfigServiceImpl extends ServiceImpl<SysSwitchConfigMappe
     public boolean xysqDisplaySwitches() {
     public boolean xysqDisplaySwitches() {
         return isEnabled(SwitchConfig.XYSQ_01.getCode());
         return isEnabled(SwitchConfig.XYSQ_01.getCode());
     }
     }
+
+    @Override
+    public boolean getBalanceExtractStatus() {
+        LambdaQueryWrapper<SysSwitchConfig> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(SysSwitchConfig::getKeyword, SwitchConfig.YETX_01.getCode());
+        SysSwitchConfig sysSwitchConfig = configMapper.selectOne(queryWrapper);
+        if (null != sysSwitchConfig){
+            if (Integer.valueOf(1).equals(sysSwitchConfig.getEnabled())){
+                return true;
+            }
+            return false;
+        }
+        return false;
+    }
 }
 }
 
 
 
 

+ 24 - 4
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java

@@ -1,16 +1,16 @@
 package com.ydtech.modules.admin.service.impl;
 package com.ydtech.modules.admin.service.impl;
 
 
-import com.baomidou.mybatisplus.annotation.TableField;
+import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageRequest;
 import com.ydtech.exception.SystemException;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.constants.ManagementSource;
 import com.ydtech.modules.admin.constants.MoneyAttrConstants;
 import com.ydtech.modules.admin.constants.MoneyAttrConstants;
 import com.ydtech.modules.admin.constants.WithdrawTypeConstants;
 import com.ydtech.modules.admin.constants.WithdrawTypeConstants;
 import com.ydtech.modules.admin.dao.SysUserAccountMapper;
 import com.ydtech.modules.admin.dao.SysUserAccountMapper;
+import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUser;
@@ -32,6 +32,8 @@ import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal;
+import com.ydtech.modules.ttqf.service.TtqfService;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -43,7 +45,6 @@ import org.springframework.util.CollectionUtils;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
-import java.util.stream.Collectors;
 
 
 /**
 /**
  * @author Administrator
  * @author Administrator
@@ -94,6 +95,9 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     @Autowired
     @Autowired
     private SysSwitchConfigService sysSwitchConfigService;
     private SysSwitchConfigService sysSwitchConfigService;
 
 
+    @Autowired
+    private TtqfService ttqfService;
+
 
 
     @Override
     @Override
     @Transactional
     @Transactional
@@ -288,6 +292,13 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     @Transactional
     @Transactional
     public HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo) {
     public HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo) {
         String userId = BaseController.getUser().getId();
         String userId = BaseController.getUser().getId();
+        if (isManagement(userId) && sysSwitchConfigService.getBalanceExtractStatus()){
+            //  个代走线上付款
+            UserWithdrawal withdrawal = new UserWithdrawal();
+            withdrawal.setUserId(userId);
+            withdrawal.setAmount(sysUserAccountVo.getAmount());
+            return ttqfService.userCashOut(withdrawal);
+        }
         //add  by  hxl   2024-09-26 添加电销组员开关
         //add  by  hxl   2024-09-26 添加电销组员开关
         boolean flag = sysSwitchConfigService.dxtxDisplaySwitches();
         boolean flag = sysSwitchConfigService.dxtxDisplaySwitches();
         if(flag){
         if(flag){
@@ -404,6 +415,15 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         return HttpResult.ok("提现成功,等待审核");
         return HttpResult.ok("提现成功,等待审核");
     }
     }
 
 
+    public boolean isManagement(String userId) {
+        SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(userId);
+        if (ManagementSource.MS_02.getCode().equals(bankCard.getManagementSource())){
+            return true;
+        }
+        return false;
+    }
+
+
     /**
     /**
      * @version
      * @version
      * @author: hxl
      * @author: hxl

+ 5 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -955,8 +955,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     sysUserVo.getSysUserInfo().setLiveAddress(Arrays.stream(userInfo.getLiveAddressString()).map(item -> item.toString()).collect(Collectors.joining(",")));
                     sysUserVo.getSysUserInfo().setLiveAddress(Arrays.stream(userInfo.getLiveAddressString()).map(item -> item.toString()).collect(Collectors.joining(",")));
                 }
                 }
                 userInfo.setId(sysUser.getId());
                 userInfo.setId(sysUser.getId());
+            }else {
+                userInfo=new SysUserInfo();
+                userInfo.setId(sysUser.getId());
             }
             }
-//        userInfo.setId(sysUser.getId());
             sysUserInfoService.save(userInfo);
             sysUserInfoService.save(userInfo);
         }
         }
         List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
         List<EsmUserImageVo> esmUserImageVo = sysUserVo.getEsmUserImageVo();
@@ -965,7 +967,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
             List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
             esmUserImageService.saveBatch(esmUserImages);
             esmUserImageService.saveBatch(esmUserImages);
         }
         }
-        SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, Optional.ofNullable(sysUserVo.getReferrerId()).orElse("admin") );
+        SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, Optional.ofNullable(sysUserVo.getSysUser().getReferrerId()).orElse("admin") );
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
     }
     }
 
 
@@ -1128,7 +1130,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
             List<EsmUserImage> esmUserImages = esmUserImageVo.stream().map(x -> new EsmUserImage(x, finalUserId)).collect(Collectors.toList());
             esmUserImageService.saveBatch(esmUserImages);
             esmUserImageService.saveBatch(esmUserImages);
         }
         }
-        SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, Optional.ofNullable(sysUserVo.getReferrerId()).orElse("admin"));
+        SpringUtil.getBean(RecordUserUtils.class).addRecord(userId, Optional.ofNullable(sysUserVo.getSysUser().getReferrerId()).orElse("admin"));
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
         return HttpResult.ok("新增成功", sysUserMapper.selectById(userId));
     }
     }
 
 

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/dao/contract/ContractSupplierMapper.java

@@ -14,7 +14,7 @@ import java.util.List;
 
 
 @Mapper
 @Mapper
 public interface ContractSupplierMapper  extends BaseMapper<ContractSupplierEntity> {
 public interface ContractSupplierMapper  extends BaseMapper<ContractSupplierEntity> {
-    void deleteBySupplierIds(@Param("supplierIdList") List<String> supplierIdList,@Param("id") String id);
+    void deleteBySupplierIds(@Param("id") String id);
 
 
     /**
     /**
      *
      *

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/dto/contract/ContractDto.java

@@ -124,4 +124,8 @@ public class ContractDto implements Serializable {
 
 
     @ApiModelProperty("顺延日")
     @ApiModelProperty("顺延日")
     private String dayTime;
     private String dayTime;
+
+
+    @ApiModelProperty("顺延时间类型")
+    private String dateType;
 }
 }

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/entity/ContractEntity.java

@@ -141,6 +141,10 @@ public class ContractEntity implements Serializable {
     @TableField("parent_id")
     @TableField("parent_id")
     private String parentId;
     private String parentId;
 
 
+    @ApiModelProperty("顺延时间类型")
+    @TableField("date_type")
+    private String dateType;
+
 
 
 
 
     @ApiModelProperty("供应商id")
     @ApiModelProperty("供应商id")

+ 1 - 1
src/main/java/com/ydtech/modules/fnc/service/contract/ContractSupplierService.java

@@ -9,7 +9,7 @@ import com.ydtech.modules.fnc.vo.ContractVo;
 import java.util.List;
 import java.util.List;
 
 
 public interface ContractSupplierService {
 public interface ContractSupplierService {
-    void saveAndUpdate(List<String> supplierIdList, String id);
+    void saveAndUpdate(String contractType,List<String> supplierIdList, String id);
 
 
     /**
     /**
      *
      *

+ 13 - 10
src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java

@@ -35,8 +35,11 @@ public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMap
      */
      */
     @Override
     @Override
     @Transactional
     @Transactional
-    public void saveAndUpdate(List<String> supplierIdList, String id) {
-        baseMapper.deleteBySupplierIds(supplierIdList,id);
+    public void saveAndUpdate(String contractType,List<String> supplierIdList, String id) {
+        if(!("1".equals(contractType) || "2".equals(contractType))){
+            supplierIdList=new ArrayList<>();
+        }
+        baseMapper.deleteBySupplierIds(id);
         List<ContractSupplierEntity> inserList = new ArrayList<>();
         List<ContractSupplierEntity> inserList = new ArrayList<>();
         String deptId = BaseController.getDeptId();
         String deptId = BaseController.getDeptId();
         String userId = BaseController.getUserId();
         String userId = BaseController.getUserId();
@@ -74,14 +77,14 @@ public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMap
         pageVo.setPageNum(contractVO.getPageNum());
         pageVo.setPageNum(contractVO.getPageNum());
         pageVo.setPageSize(contractVO.getPageSize());
         pageVo.setPageSize(contractVO.getPageSize());
 
 
-        if (contractVO.getSupplierIdList() != null && !contractVO.getSupplierIdList().isEmpty()) { //查关联表获取合同id
-            ContractSupplierDto contractSupplierDto = new ContractSupplierDto();
-            contractSupplierDto.setSupplierIdList(contractVO.getSupplierIdList());
-            List<ContractSupplierEntity> contractSupplierEntityList = contractSupplierService.selecSupplierList(contractSupplierDto);
-            List<String> contractIdList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getContractId).collect(Collectors.toList());
-            contractVO.setContractIdList(contractIdList);
-
-        }
+//        if (contractVO.getSupplierIdList() != null && !contractVO.getSupplierIdList().isEmpty()) { //查关联表获取合同id
+//            ContractSupplierDto contractSupplierDto = new ContractSupplierDto();
+//            contractSupplierDto.setSupplierIdList(contractVO.getSupplierIdList());
+//            List<ContractSupplierEntity> contractSupplierEntityList = contractSupplierService.selecSupplierList(contractSupplierDto);
+//            List<String> contractIdList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getContractId).collect(Collectors.toList());
+//            contractVO.setContractIdList(contractIdList);
+//
+//        }
         IPage<ContractDto> queriedPage = baseMapper.queryPage(page, contractVO);
         IPage<ContractDto> queriedPage = baseMapper.queryPage(page, contractVO);
         return queriedPage;
         return queriedPage;
     }
     }

+ 14 - 11
src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java

@@ -91,14 +91,14 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
             contractEntity.setInternalCompanyName(interName);
             contractEntity.setInternalCompanyName(interName);
 
 
             contractEntity.setContractStatus("0");
             contractEntity.setContractStatus("0");
-            if(contractDto.getExpiringDate() !=null){
-                LocalDateTime shouldPostponedDate =this.saveShouldPostponedDate(contractDto);
-                contractEntity.setShouldPostponedDate(shouldPostponedDate);
-            }
+//            if(contractDto.getExpiringDate() !=null){
+//                LocalDateTime shouldPostponedDate =this.saveShouldPostponedDate(contractDto);
+//                contractEntity.setShouldPostponedDate(shouldPostponedDate);
+//            }
 
 
             baseMapper.insert(contractEntity);
             baseMapper.insert(contractEntity);
             if (contractDto.getSupplierIdList() != null) {
             if (contractDto.getSupplierIdList() != null) {
-                contractSupplierService.saveAndUpdate(supplierIdList, contractEntity.getId());
+                contractSupplierService.saveAndUpdate(contractDto.getContractType(),supplierIdList, contractEntity.getId());
             }
             }
             if (contractDto.getFilePathIdList() != null) {
             if (contractDto.getFilePathIdList() != null) {
                 contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
                 contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
@@ -119,13 +119,13 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
                 contractEntity.setInternalCompanyName(interName);
                 contractEntity.setInternalCompanyName(interName);
             }
             }
 
 
-            if(contractDto.getExpiringDate() !=null){
-                LocalDateTime shouldPostponedDate =this.saveShouldPostponedDate(contractDto);
-                contractEntity.setShouldPostponedDate(shouldPostponedDate);
-            }
+//            if(contractDto.getExpiringDate() !=null){
+//                LocalDateTime shouldPostponedDate =this.saveShouldPostponedDate(contractDto);
+//                contractEntity.setShouldPostponedDate(shouldPostponedDate);
+//            }
 
 
             baseMapper.updateById(contractEntity);
             baseMapper.updateById(contractEntity);
-            contractSupplierService.saveAndUpdate(contractDto.getSupplierIdList(), contractEntity.getId());
+            contractSupplierService.saveAndUpdate(contractDto.getContractType(),contractDto.getSupplierIdList(), contractEntity.getId());
 
 
             contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
             contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
         }
         }
@@ -217,6 +217,9 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
             String firtLetter = "";
             String firtLetter = "";
             String contractCode = contractDto.getContractCode();
             String contractCode = contractDto.getContractCode();
             String simpleName = this.getSimpleName(contractDto.getExternalCompaniesId());
             String simpleName = this.getSimpleName(contractDto.getExternalCompaniesId());
+            if (StringUtils.isEmpty(simpleName)) {
+                throw new SystemException("甲方简称为空不能新增 生成不了合同编号");
+            }
             if (simpleName.isEmpty()) {
             if (simpleName.isEmpty()) {
                 return contractCode;
                 return contractCode;
             }
             }
@@ -332,7 +335,7 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
         contractEntity.setInternalCompanyName(interName);
         contractEntity.setInternalCompanyName(interName);
         baseMapper.insert(contractEntity);
         baseMapper.insert(contractEntity);
         if (contractDto.getSupplierIdList() != null) {
         if (contractDto.getSupplierIdList() != null) {
-            contractSupplierService.saveAndUpdate(supplierIdList, contractEntity.getId());
+            contractSupplierService.saveAndUpdate(contractDto.getContractType(),supplierIdList, contractEntity.getId());
         }
         }
         if (contractDto.getFilePathIdList() != null) {
         if (contractDto.getFilePathIdList() != null) {
             contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
             contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());

+ 48 - 0
src/main/java/com/ydtech/modules/lg/PushLgLogUtils.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.lg;
+
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.ydtech.modules.lg.dao.PushLgEntityMapper;
+import com.ydtech.modules.lg.model.PushLgEntity;
+import com.ydtech.modules.ttqf.QuartzManager;
+import com.ydtech.utils.StringUtils;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class PushLgLogUtils {
+
+    @Async
+    public void pushLg(PushLgEntity lgEntity){
+        JSONObject jsonObject = JSONObject.parseObject(SendUtils.send(JSONObject.toJSONString(lgEntity)));
+        if (null != jsonObject){
+            lgEntity.setPushStatus(String.valueOf(jsonObject.getInteger("code")));
+            lgEntity.setMsg(jsonObject.getString("msg"));
+        }else {
+            lgEntity.setPushStatus("");
+            lgEntity.setMsg("推送失败");
+        }
+        SpringUtil.getBean(PushLgEntityMapper.class).insert(lgEntity);
+        if (!StringUtils.equals(lgEntity.getPushStatus(),"200")){
+            pushLgRetry(lgEntity);
+        }
+    }
+
+
+    public void pushLgRetry(PushLgEntity lgEntity){
+        try {
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("lgEntity", lgEntity);
+            QuartzManager manager = QuartzManager.getInstance();
+            manager.addJob(String.valueOf(lgEntity.getId()),"jobGroup" + lgEntity.getId(), PushRetry.class,"*/5 * * * * ?",map);
+            manager.start();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 30 - 0
src/main/java/com/ydtech/modules/lg/PushRetry.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.lg;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.ydtech.modules.lg.dao.PushLgEntityMapper;
+import com.ydtech.modules.lg.model.PushLgEntity;
+import com.ydtech.modules.ttqf.QuartzManager;
+import org.quartz.*;
+
+public class PushRetry implements Job {
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        JobDataMap mergedJobDataMap = jobExecutionContext.getMergedJobDataMap();
+        Object object = mergedJobDataMap.get("lgEntity");
+        PushLgEntity lgEntity = JSONObject.parseObject((JSONObject.toJSONString(object)) , PushLgEntity.class);
+        JSONObject jsonObject = JSONObject.parseObject(SendUtils.send(JSONObject.toJSONString(lgEntity)));
+        if (null != jsonObject){
+            if (String.valueOf(jsonObject.getInteger("code")).equals("200")){
+                lgEntity.setPushStatus(String.valueOf(jsonObject.getInteger("code")));
+                lgEntity.setMsg(jsonObject.getString("msg"));
+                SpringUtil.getBean(PushLgEntityMapper.class).updateById(lgEntity);
+                try {
+                    QuartzManager.getInstance().removeJob(jobExecutionContext);
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+}

+ 70 - 0
src/main/java/com/ydtech/modules/lg/SendUtils.java

@@ -0,0 +1,70 @@
+package com.ydtech.modules.lg;
+
+
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+@Component
+public class SendUtils {
+
+
+    private static String sendMessageIP;
+
+    @Value("${sendMessage-zg-yggl-IP}")
+    private void setSendMessageIP(String sendMessageIP){
+        SendUtils.sendMessageIP = sendMessageIP;
+    };
+
+
+    public static String send(String data){
+        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
+        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
+        // 创建Post请求
+        HttpPost httpPost = new HttpPost(sendMessageIP + "withdrawal/record/acceptPushWithdrawalData");
+        StringEntity entity = new StringEntity(data, "UTF-8");
+        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
+        httpPost.setEntity(entity);
+        httpPost.setHeader("Content-Type", "application/json;charset=utf8");
+        // 响应模型
+        CloseableHttpResponse response = null;
+        try {
+            // 由客户端执行(发送)Post请求
+            response = httpClient.execute(httpPost);
+            // 从响应模型中获取响应实体
+            HttpEntity responseEntity = response.getEntity();
+            //从响应实体中截取状态码
+            return EntityUtils.toString(responseEntity);
+//            String responseString = string.substring(string.lastIndexOf(":") + 1);
+//            String responseCode = responseString.substring(0, responseString.length() - 1);
+        }catch (Exception e){
+            e.printStackTrace();
+            return "";
+        }finally {
+            try {
+                // 释放资源
+                if (httpClient != null) {
+                    httpClient.close();
+                }
+                if (response != null) {
+                    response.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+
+
+    }
+
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/lg/dao/PushLgEntityMapper.java

@@ -0,0 +1,7 @@
+package com.ydtech.modules.lg.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.lg.model.PushLgEntity;
+
+public interface PushLgEntityMapper extends BaseMapper<PushLgEntity> {
+}

+ 56 - 0
src/main/java/com/ydtech/modules/lg/model/PushLgEntity.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.lg.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+@TableName("push_lg_data")
+public class PushLgEntity {
+
+    @TableId(type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /** 申请时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date applicationTime;
+
+    /** 业务单号 */
+    private String businessUmber;
+
+    /** 收款人 */
+    private String payee;
+
+    /** 收款人ID */
+    private String payeeId;
+
+    /** 收款账户 */
+    private String receivingAccount;
+
+    /** 提取金额 */
+    private BigDecimal extractMoney;
+
+    /** 服务费 */
+    private BigDecimal serviceCharge;
+
+    /** 状态 */
+    private String extractStatus;
+
+    /**
+     * 推送状态 0 未推送 1 已推送
+     */
+    private String pushStatus;
+
+
+    private String msg;
+
+    private int sendNumber;
+
+
+}

+ 11 - 0
src/main/java/com/ydtech/modules/lg/service/PushLgEntityService.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.lg.service;
+
+import com.ydtech.modules.lg.model.PushLgEntity;
+
+public interface PushLgEntityService {
+
+
+   void sendLgData(PushLgEntity lgEntity);
+
+
+}

+ 21 - 0
src/main/java/com/ydtech/modules/lg/service/impl/PushLgEntityServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.lg.service.impl;
+
+import com.ydtech.modules.lg.PushLgLogUtils;
+import com.ydtech.modules.lg.model.PushLgEntity;
+import com.ydtech.modules.lg.service.PushLgEntityService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class PushLgEntityServiceImpl implements PushLgEntityService {
+
+
+    @Autowired
+    private PushLgLogUtils pushLgLogUtils;
+
+    @Override
+    public void sendLgData(PushLgEntity lgEntity) {
+        pushLgLogUtils.pushLg(lgEntity);
+    }
+}

+ 5 - 3
src/main/java/com/ydtech/modules/order/components/yangguang/YangGuangRequestApiComponents.java

@@ -133,12 +133,14 @@ public class YangGuangRequestApiComponents {
     /**
     /**
      *  影像上传
      *  影像上传
      */
      */
-    public String upload(YangGuangUpLoadRequest yangGuangUpLoadRequest) throws Exception {
+    public String upload(String json) throws Exception {
+        String responesStr = "";
         String url = yangGuangApiConfigurationProperties.getUploadUrl();
         String url = yangGuangApiConfigurationProperties.getUploadUrl();
         String secret = yangGuangApiConfigurationProperties.getSecret();
         String secret = yangGuangApiConfigurationProperties.getSecret();
         String referer = yangGuangApiConfigurationProperties.getReferer();
         String referer = yangGuangApiConfigurationProperties.getReferer();
-        String encode = EncodeAccessParam.getEncodeParam(String.valueOf(yangGuangUpLoadRequest), 1000L,secret);
-        return httpPost(url,"req",encode, referer);
+        String encode = EncodeAccessParam.getEncodeParam(String.valueOf(json), 1000L,secret);
+        responesStr = httpPost(url,"req", encode, referer);
+        return responesStr;
     }
     }
 
 
 
 

+ 12 - 3
src/main/java/com/ydtech/modules/order/controller/QuoteController.java

@@ -235,10 +235,19 @@ public class QuoteController extends BaseController {
         }
         }
         if ("YGBX1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)) {
         if ("YGBX1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)) {
             BaseQuoteVo<List<YgQuoteAccidentVo>> quoteVo1 = new BaseQuoteVo<>();
             BaseQuoteVo<List<YgQuoteAccidentVo>> quoteVo1 = new BaseQuoteVo<>();
-            JSONArray jsonObject = JSONArray.parseArray(JSONArray.toJSONString(quoteVo.getAccidentalDrivingVo()));
-            List<YgQuoteAccidentVo> javaObject = jsonObject.toJavaList(YgQuoteAccidentVo.class);
+            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
             BeanUtils.copyProperties(quoteVo, quoteVo1);
             BeanUtils.copyProperties(quoteVo, quoteVo1);
-            quoteVo1.setAccidentalDrivingVo(javaObject);
+            if(jsonObject.size() > 0) {
+                YgQuoteAccidentVo ygQuoteAccidentVo = new YgQuoteAccidentVo();
+                ygQuoteAccidentVo.setProductCode(jsonObject.getString("projectCode"));
+                ygQuoteAccidentVo.setQuantityCasualty(jsonObject.getString("quantity"));
+                List<YgQuoteAccidentVo> javaObjectList = new ArrayList<>();
+                javaObjectList.add(ygQuoteAccidentVo);
+
+                quoteVo1.setAccidentalDrivingVo(javaObjectList);
+            } else {
+                quoteVo1.setAccidentalDrivingVo(new ArrayList<>());
+            }
             respVo = yangGuangOrderApiService.quote(quoteInfo, quoteVo1);
             respVo = yangGuangOrderApiService.quote(quoteInfo, quoteVo1);
         }
         }
         if("PAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
         if("PAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java

@@ -273,7 +273,7 @@ public class YangGuangAccuracyCalculateRequest extends YangGuangBaseRequest{
     this.itemcar = new ItemCarInfoDTO(quoteInfoVo.getCarInfo());
     this.itemcar = new ItemCarInfoDTO(quoteInfoVo.getCarInfo());
     this.kindList = ItemKindListDTO.toItemKindListDTOList(actualValue, quoteInfoVo.getKindList(),
     this.kindList = ItemKindListDTO.toItemKindListDTOList(actualValue, quoteInfoVo.getKindList(),
                 Integer.parseInt(quoteInfoVo.getCarInfo().getSeatCount()) - 1, quoteInfoVo.getCarInfo().isNewEnergy());
                 Integer.parseInt(quoteInfoVo.getCarInfo().getSeatCount()) - 1, quoteInfoVo.getCarInfo().isNewEnergy());
-    if (ArrayUtil.isNotEmpty(accidentVo)) {
+    if (ArrayUtil.isNotEmpty(accidentVo) && accidentVo.size() > 0) {
         this.NonVehicleProductInformationList = accidentVo.stream().map(NonVehicleProductInformationListDTO::new).collect(Collectors.toList());
         this.NonVehicleProductInformationList = accidentVo.stream().map(NonVehicleProductInformationListDTO::new).collect(Collectors.toList());
         this.CasualtyFlag = "1";
         this.CasualtyFlag = "1";
     }
     }

+ 11 - 0
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangSubmitRequest.java

@@ -80,6 +80,10 @@ public class YangGuangSubmitRequest extends YangGuangBaseRequest{
      */
      */
     @JSONField(name = "ElecinvoiceFlag")
     @JSONField(name = "ElecinvoiceFlag")
     private String ElecinvoiceFlag;
     private String ElecinvoiceFlag;
+
+    @JSONField(name = "CasualtyFlag")
+    private String CasualtyFlag;
+
     /**
     /**
      * 录单设备Ip
      * 录单设备Ip
      */
      */
@@ -130,6 +134,13 @@ public class YangGuangSubmitRequest extends YangGuangBaseRequest{
         } else {
         } else {
             this.PolicyType = "3";
             this.PolicyType = "3";
         }
         }
+        if (insAreaCompany.getAccidentInfo() != null) {
+            this.CasualtyFlag = "1";
+        } else {
+            this.CasualtyFlag = "0";
+        }
+
+
 
 
     }
     }
 
 

+ 9 - 8
src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangUpLoadRequest.java

@@ -5,6 +5,7 @@ import com.ydtech.constants.InsuranceImageEnum;
 import com.ydtech.modules.order.entity.api.yangguang.constants.ImageTypeEnum;
 import com.ydtech.modules.order.entity.api.yangguang.constants.ImageTypeEnum;
 import com.ydtech.modules.order.entity.config.YangGuangConfigureParameters;
 import com.ydtech.modules.order.entity.config.YangGuangConfigureParameters;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import com.ydtech.modules.order.entity.po.InsUploadFiles;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
@@ -22,9 +23,9 @@ public class YangGuangUpLoadRequest extends YangGuangBaseRequest{
     @JSONField(name = "Body")
     @JSONField(name = "Body")
     private Body Body;
     private Body Body;
 
 
-    public YangGuangUpLoadRequest (String InfotransNo,InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters) {
+    public YangGuangUpLoadRequest(String InfotransNo, InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters, InsUploadFiles insUploadFiles) {
         this.Head = new Head();
         this.Head = new Head();
-        this.Body = new Body(InfotransNo,insTaskImagesBase64, parameters);
+        this.Body = new Body(InfotransNo,insTaskImagesBase64, parameters,insUploadFiles);
     }
     }
 
 
     @Data
     @Data
@@ -50,8 +51,8 @@ public class YangGuangUpLoadRequest extends YangGuangBaseRequest{
         @JSONField(name = "imageInfo")
         @JSONField(name = "imageInfo")
         private imageInfo imageInfo;
         private imageInfo imageInfo;
 
 
-        public Body(String InfotransNo,InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters) {
-           this.imageInfo = new imageInfo(InfotransNo, insTaskImagesBase64, parameters);
+        public Body(String InfotransNo,InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters,InsUploadFiles insUploadFiles) {
+           this.imageInfo = new imageInfo(InfotransNo, insTaskImagesBase64, parameters,insUploadFiles);
         }
         }
         @Data
         @Data
         public static class imageInfo implements Serializable {
         public static class imageInfo implements Serializable {
@@ -82,13 +83,13 @@ public class YangGuangUpLoadRequest extends YangGuangBaseRequest{
             @JSONField(name = "insuranceImageList")
             @JSONField(name = "insuranceImageList")
             private List<insuranceImageList> insuranceImageList;
             private List<insuranceImageList> insuranceImageList;
 
 
-            public imageInfo(String InfotransNo,InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters) {
+            public imageInfo(String InfotransNo,InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters, InsUploadFiles insUploadFiles) {
                 this.caseNo = InfotransNo;
                 this.caseNo = InfotransNo;
                 this.appCode = "CARAPPLY";
                 this.appCode = "CARAPPLY";
                 this.caseSource = "0";
                 this.caseSource = "0";
                 this.fileServer = "0";
                 this.fileServer = "0";
                 this.ifNationwideQuick = "0";
                 this.ifNationwideQuick = "0";
-                this.insuranceImageList = Arrays.asList(new insuranceImageList(insTaskImagesBase64,parameters));
+                this.insuranceImageList = Arrays.asList(new insuranceImageList(insTaskImagesBase64,parameters,insUploadFiles));
             }
             }
 
 
             @NoArgsConstructor
             @NoArgsConstructor
@@ -133,9 +134,9 @@ public class YangGuangUpLoadRequest extends YangGuangBaseRequest{
                 @JSONField(name = "exifInfo")
                 @JSONField(name = "exifInfo")
                 private String exifInfo;
                 private String exifInfo;
 
 
-                public insuranceImageList(InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters) {
+                public insuranceImageList(InsTaskImagesBase64 insTaskImagesBase64, YangGuangConfigureParameters parameters, InsUploadFiles insUploadFiles) {
                     String suffix = insTaskImagesBase64.getFileName().substring(insTaskImagesBase64.getFileName().lastIndexOf("."));
                     String suffix = insTaskImagesBase64.getFileName().substring(insTaskImagesBase64.getFileName().lastIndexOf("."));
-                    this.imageUrl = insTaskImagesBase64.getBase64String();
+                    this.imageUrl = "https://test.baoxianzhanggui.com/web-api" + insUploadFiles.getUrl();
                     this.imageType = "01";
                     this.imageType = "01";
                     this.referer = "SXJZG";
                     this.referer = "SXJZG";
                     this.userNo = parameters.getHandlerCode();
                     this.userNo = parameters.getHandlerCode();

+ 13 - 0
src/main/java/com/ydtech/modules/order/entity/api/yangguang/response/YangGuangSubmitResponse.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.order.entity.api.yangguang.response;
 package com.ydtech.modules.order.entity.api.yangguang.response;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.annotation.JSONField;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
@@ -92,6 +93,10 @@ public class YangGuangSubmitResponse extends YangGuangBaseResponse {
     @JSONField(name = "Clause")
     @JSONField(name = "Clause")
     private List<Clause> Clause;
     private List<Clause> Clause;
 
 
+    @JSONField(name = "PtptNonVehicleProductInformationList")
+    private JSONArray PtptNonVehicleProductInformationList;
+
+    @Data
     public static class Clause implements Serializable {
     public static class Clause implements Serializable {
         /**
         /**
          * 特约编码
          * 特约编码
@@ -117,4 +122,12 @@ public class YangGuangSubmitResponse extends YangGuangBaseResponse {
         @JSONField(name = "riskCode")
         @JSONField(name = "riskCode")
         private String riskCode;
         private String riskCode;
     }
     }
+    @Data
+    public static class PtptNonVehicleProductInformationList implements Serializable {
+        private String FcProduct;
+
+        private String FcSumPremium;
+
+        private String FcProposalNo;
+    }
 }
 }

+ 47 - 16
src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ydtech.config.properties.YangGuangApiConfigurationProperties;
 import com.ydtech.config.properties.YangGuangApiConfigurationProperties;
 import com.ydtech.constants.enums.InsuranceOrderPdf;
 import com.ydtech.constants.enums.InsuranceOrderPdf;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.InsuranceRisk;
@@ -22,9 +23,11 @@ import com.ydtech.modules.order.entity.api.yangguang.request.*;
 import com.ydtech.modules.order.entity.api.yangguang.response.*;
 import com.ydtech.modules.order.entity.api.yangguang.response.*;
 import com.ydtech.modules.order.entity.api.zijin.constants.enums.BusType;
 import com.ydtech.modules.order.entity.api.zijin.constants.enums.BusType;
 import com.ydtech.modules.order.entity.config.YangGuangConfigureParameters;
 import com.ydtech.modules.order.entity.config.YangGuangConfigureParameters;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import com.ydtech.modules.order.entity.po.InsUploadFiles;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
@@ -70,7 +73,9 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
 
 
     private final InsTaskImagesService insTaskImagesService;
     private final InsTaskImagesService insTaskImagesService;
 
 
-    private InsImagesUploadCacheComponents insImagesUploadCacheComponents;
+    private final InsUploadFilesService insUploadFilesService;
+
+    private final InsImagesUploadCacheComponents insImagesUploadCacheComponents;
 
 
 
 
     @Value("${upload.file.path}")
     @Value("${upload.file.path}")
@@ -121,7 +126,7 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo.getAccidentalDrivingVo());
         YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo.getAccidentalDrivingVo());
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
         YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
-        if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001")) {
+        if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
                 String actualValue = itemcar.getActualValue();
                 String actualValue = itemcar.getActualValue();
@@ -195,9 +200,12 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
             if (insTaskImagesBase64s.isEmpty()) {
             if (insTaskImagesBase64s.isEmpty()) {
                 return HttpResult.ok();
                 return HttpResult.ok();
             }
             }
-            for (InsTaskImagesBase64 insTaskImagesBase64 :insTaskImagesBase64s) {
-                YangGuangUpLoadRequest yangGuangUpLoadRequest = new YangGuangUpLoadRequest(InfotransNo, insTaskImagesBase64, parameters);
-                String yangGuangUpLoadResponse = yangGuangRequestApiComponents.upload(yangGuangUpLoadRequest);
+            for (InsTaskImagesBase64 insTaskImagesBase64 : insTaskImagesBase64s) {
+                ObjectMapper objectMapper = new ObjectMapper();
+                InsUploadFiles insUploadFiles = insUploadFilesService.queryById(insTaskImagesBase64.getImageId());
+                YangGuangUpLoadRequest yangGuangUpLoadRequest = new YangGuangUpLoadRequest(InfotransNo, insTaskImagesBase64, parameters, insUploadFiles);
+                String json = objectMapper.writeValueAsString(yangGuangUpLoadRequest);
+                String yangGuangUpLoadResponse = yangGuangRequestApiComponents.upload(json);
                 log.info("上传影像:{}", yangGuangUpLoadResponse);
                 log.info("上传影像:{}", yangGuangUpLoadResponse);
             }
             }
         insImagesUploadCacheComponents.setUploadImageCache(companyId, insTaskImagesBase64s);
         insImagesUploadCacheComponents.setUploadImageCache(companyId, insTaskImagesBase64s);
@@ -225,6 +233,18 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         if (!yangGuangSubmitResponse.getErrorCode().equals("0")) {
         if (!yangGuangSubmitResponse.getErrorCode().equals("0")) {
             return HttpResult.error(yangGuangSubmitResponse.getErrorMessage());
             return HttpResult.error(yangGuangSubmitResponse.getErrorMessage());
         }
         }
+        if (yangGuangSubmitResponse.getCiProposalNo() != null) {
+            insAreaCompany.setJqapplyno(yangGuangSubmitResponse.getCiProposalNo());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        }
+        if (yangGuangSubmitResponse.getBiProposalNo() != null) {
+            insAreaCompany.setSyapplyno(yangGuangSubmitResponse.getBiProposalNo());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        }
+        if (yangGuangSubmitResponse.getPtptNonVehicleProductInformationList() != null) {
+            insAreaCompany.setCrossInsurance(yangGuangSubmitResponse.getPtptNonVehicleProductInformationList());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        }
         // 核保转人工
         // 核保转人工
         if (yangGuangSubmitResponse.getCiUnderWriteFlag() != null && !yangGuangSubmitResponse.getCiUnderWriteFlag().equals("1")) {
         if (yangGuangSubmitResponse.getCiUnderWriteFlag() != null && !yangGuangSubmitResponse.getCiUnderWriteFlag().equals("1")) {
             if (yangGuangSubmitResponse.getCiUnderWriteFlag().equals("3")) {
             if (yangGuangSubmitResponse.getCiUnderWriteFlag().equals("3")) {
@@ -232,11 +252,11 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
                 insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 String message = yangGuangSubmitResponse.getCiUnderWriteMsg();
                 String message = yangGuangSubmitResponse.getCiUnderWriteMsg();
-                insAreaCompany.setJqpolicyno(yangGuangSubmitResponse.getCiProposalNo() != null ? yangGuangSubmitResponse.getCiProposalNo() :"");
+                insAreaCompany.setJqapplyno(yangGuangSubmitResponse.getCiProposalNo() != null ? yangGuangSubmitResponse.getCiProposalNo() :"");
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
                 return HttpResult.error("自核转人工,原因:" + message);
                 return HttpResult.error("自核转人工,原因:" + message);
             }
             }
-            return HttpResult.error("商业险自核失败,原因:" + yangGuangSubmitResponse.getBiUnderWriteMsg());
+            return HttpResult.error("交强险自核失败,原因:" + yangGuangSubmitResponse.getCiUnderWriteMsg());
         }
         }
         if (yangGuangSubmitResponse.getBiUnderWriteFlag() != null && !yangGuangSubmitResponse.getBiUnderWriteFlag().equals("1")) {
         if (yangGuangSubmitResponse.getBiUnderWriteFlag() != null && !yangGuangSubmitResponse.getBiUnderWriteFlag().equals("1")) {
             if (yangGuangSubmitResponse.getBiUnderWriteFlag().equals("3")) {
             if (yangGuangSubmitResponse.getBiUnderWriteFlag().equals("3")) {
@@ -244,15 +264,18 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
                 insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 String message = yangGuangSubmitResponse.getBiUnderWriteMsg();
                 String message = yangGuangSubmitResponse.getBiUnderWriteMsg();
-                insAreaCompany.setSypolicyno(yangGuangSubmitResponse.getBiProposalNo() != null ? yangGuangSubmitResponse.getBiProposalNo() :"");
+                insAreaCompany.setSyapplyno(yangGuangSubmitResponse.getBiProposalNo() != null ? yangGuangSubmitResponse.getBiProposalNo() :"");
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);
                 return HttpResult.error("自核转人工,原因:" + message);
                 return HttpResult.error("自核转人工,原因:" + message);
             }
             }
             return HttpResult.error("商业险自核失败,原因:" + yangGuangSubmitResponse.getBiUnderWriteMsg());
             return HttpResult.error("商业险自核失败,原因:" + yangGuangSubmitResponse.getBiUnderWriteMsg());
         }
         }
         // 投保单号
         // 投保单号
-        insAreaCompany.setJqpolicyno(yangGuangSubmitResponse.getCiProposalNo() != null ? yangGuangSubmitResponse.getCiProposalNo() :"");
-        insAreaCompany.setSypolicyno(yangGuangSubmitResponse.getBiProposalNo() != null ? yangGuangSubmitResponse.getBiProposalNo() :"");
+        insAreaCompany.setJqapplyno(yangGuangSubmitResponse.getCiProposalNo() != null ? yangGuangSubmitResponse.getCiProposalNo() :"");
+        insAreaCompany.setSyapplyno(yangGuangSubmitResponse.getBiProposalNo() != null ? yangGuangSubmitResponse.getBiProposalNo() :"");
+        if (yangGuangSubmitResponse.getPtptNonVehicleProductInformationList() != null) {
+            insAreaCompany.setCrossInsurance(yangGuangSubmitResponse.getPtptNonVehicleProductInformationList());
+        }
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
 
 
 
 
@@ -385,17 +408,25 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
             }
             }
             insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_PAY.getCode(), "1");
             insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.WAIT_PAY.getCode(), "1");
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
-            //更新投保单号和保单号
+            //核保通过支付链接
+            YangGuangPaymentRequest yangGuangPaymentRequest = new YangGuangPaymentRequest(insAreaCompany, insOrders,yangGuangApiConfigurationProperties.getPayCallBack(),null,yangGuangConfigureParameters);
+            YangGuangPaymentResponse yangGuangPaymentResponse = yangGuangRequestApiComponents.payment(yangGuangPaymentRequest);
+            insAreaCompany.setPaymentLink(yangGuangPaymentResponse.getPayUrl());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            //更新保单号
+            if (insAreaCompany.getJqapplyno() != null && !insAreaCompany.getJqapplyno().equals("") && yangGuangProposalStatusQueryResponse.getCiPolicyNo().equals("")) {
+                return HttpResult.error("该订单未缴费");
+            }
+            if (insAreaCompany.getSyapplyno() != null && !insAreaCompany.getSyapplyno().equals("") && yangGuangProposalStatusQueryResponse.getBiPolicyNo().equals("")) {
+                return HttpResult.error("该订单未缴费");
+            }
             insAreaCompany.setJqpolicyno(yangGuangProposalStatusQueryResponse.getCiPolicyNo());
             insAreaCompany.setJqpolicyno(yangGuangProposalStatusQueryResponse.getCiPolicyNo());
             insAreaCompany.setSypolicyno(yangGuangProposalStatusQueryResponse.getBiPolicyNo());
             insAreaCompany.setSypolicyno(yangGuangProposalStatusQueryResponse.getBiPolicyNo());
             insAreaCompany.setJqapplyno(yangGuangProposalStatusQueryResponse.getCiProposalNo());
             insAreaCompany.setJqapplyno(yangGuangProposalStatusQueryResponse.getCiProposalNo());
             insAreaCompany.setSyapplyno(yangGuangProposalStatusQueryResponse.getBiProposalNo());
             insAreaCompany.setSyapplyno(yangGuangProposalStatusQueryResponse.getBiProposalNo());
-            //支付链接
-            YangGuangPaymentRequest yangGuangPaymentRequest = new YangGuangPaymentRequest(insAreaCompany, insOrders,yangGuangApiConfigurationProperties.getPayCallBack(),null,yangGuangConfigureParameters);
-            YangGuangPaymentResponse yangGuangPaymentResponse = yangGuangRequestApiComponents.payment(yangGuangPaymentRequest);
-            insAreaCompany.setPaymentLink(yangGuangPaymentResponse.getPayUrl());
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-            return HttpResult.ok("核保成功");
+            return HttpResult.ok("更新状态成功");
         } else {
         } else {
             insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
             insSubOrderUpdateDetailService.insertData(insAreaCompany, insAreaCompany.getOrderstatus(), InsOrderStatusEnum.TO_BACK.getCode(), "1");
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());

+ 156 - 0
src/main/java/com/ydtech/modules/ttqf/AmountAuditingService.java

@@ -0,0 +1,156 @@
+package com.ydtech.modules.ttqf;
+
+
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingHistory;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import com.ydtech.modules.admin.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Objects;
+
+@Service
+public class AmountAuditingService {
+
+    @Autowired
+    private SysUserAccountHistoryService historyService;
+
+    @Autowired
+    private SysUserAccountService accountService;
+
+    @Autowired
+    private SysDeptService sysDeptService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private SysSwitchConfigService sysSwitchConfigService;
+
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
+
+    @Autowired
+    private SysAmountAuditingHistoryService sysAmountAuditingHistoryService;
+
+    @Autowired
+    private SysUserAccountService sysUserAccountService;
+
+
+
+    public String sendMessage(BigDecimal amount, String userId,String bankNumber) {
+
+        //add  by  hxl   2024-09-26 添加电销组员开关
+        boolean flag = sysSwitchConfigService.dxtxDisplaySwitches();
+        if (flag) {
+            // add  by  hxl   2024-09-25 电销组员无法提现
+            SysUser user = sysUserService.getById(userId);
+            SysUserBaseVO sysUserBaseVO = sysUserService.selectUserById(userId);
+            SysDept dept = sysDeptService.getById(user.getDeptId());
+            if ("3".equals(sysUserBaseVO.getRoleId()) && "3".equals(dept.getManagementSource())) {
+                throw new SystemException("电销组员不能提现");
+            }
+        }
+        SysUserAccount sysUserAccount = accountService.getById(userId);
+        if (Objects.isNull(sysUserAccount)){
+            throw new SystemException("用户账户表不存在");
+        }
+        // add  by hxl 2024-09-12  =============== 添加提现用户是渠道的话,只能提现100的整数金额
+        // judgeAmount(amount, userId);   注释掉  2024-09-18
+        // add  by  hxl  end =============================
+        BigDecimal zero = BigDecimal.ZERO;
+        BigDecimal beforeAmount;
+        BigDecimal afterAmount;
+//       用户当前金额
+        //    BigDecimal amount = sysUserAccountVo.getAmount();
+        SysUserAccountHistory sysUserAccountHistory = new SysUserAccountHistory();  // 记录
+        sysUserAccountHistory.setDocumentary(1);  // 1提现
+        sysUserAccountHistory.setUserId(userId);
+        sysUserAccountHistory.setProperty(6);
+        sysUserAccountHistory.setBusinessSegmentsType(1);
+        SysAmountAuditingEntity sysAmountAuditingEntity = new SysAmountAuditingEntity();//审核记录表
+        sysAmountAuditingEntity.setUserId(userId);
+        sysAmountAuditingEntity.setAmount(amount);
+        sysUserAccountHistory.setCreateTime(new Date());
+//        SysAmountAuditingEntity judge = sysAmountAuditingService.getByUserId(userId, sysUserAccountVo.getAmountStatus());
+//        if (ObjectUtils.isNotEmpty(judge)) {
+//            return HttpResult.ok("有未提现审核单据, 请审核完成之后再提现");
+//        }
+        sysAmountAuditingEntity.setBankNumber(bankNumber);
+        //  线上自动审批
+        sysAmountAuditingEntity.setApproval(1);
+
+
+        //if (StringUtils.isNotEmpty(sysUserAccountVo.getAmountStatus())) {
+        //sysUserAccountHistory.setProperty(Integer.valueOf(sysUserAccountVo.getAmountStatus()));   //金额类型
+        /**
+         if ("1".equals(sysUserAccountVo.getAmountStatus())) {
+         //                  用户当前费用金
+         beforeAmount = sysUserAccount.getHandlingFee();
+         afterAmount = beforeAmount.subtract(amount);
+         sysUserAccount.setHandlingFee(afterAmount);
+         sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().add(amount));
+         sysUserAccount.setHandlingAmountWithdrawal(sysUserAccount.getHandlingAmountWithdrawal().add(amount));
+         } else if ("2".equals(sysUserAccountVo.getAmountStatus())) {
+         //                    用户当前 非跟单佣金
+         beforeAmount = sysUserAccount.getDocumentary();
+         afterAmount = beforeAmount.subtract(amount);
+         sysUserAccount.setDocumentary(afterAmount);
+         sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().add(amount));
+         sysUserAccount.setDocumentaryAmountWithdrawal(sysUserAccount.getDocumentaryAmountWithdrawal().add(amount));
+         } else {
+         beforeAmount = sysUserAccount.getPromotion();
+         afterAmount = beforeAmount.subtract(amount);
+         sysUserAccount.setPromotion(afterAmount);
+         sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().add(amount));
+         sysUserAccount.setPromotionAmountWithdrawal(sysUserAccount.getPromotionAmountWithdrawal().add(amount));
+         }
+         **/
+        //提现前的金额
+        beforeAmount = sysUserAccount.getSumAmount() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmount();
+        //提现后的金额
+        afterAmount = beforeAmount.subtract(amount);
+        sysUserAccount.setSumAmount(afterAmount);
+        //支付中总金额 = 原先的支付金额 + 提现的金额
+        sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountPayment()).add(amount));
+        //提现的总金额 = 原先的提现总金额 + 提现的金额
+        sysUserAccount.setSumAmountWithdrawal((sysUserAccount.getSumAmountWithdrawal() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountWithdrawal().add(amount)));
+//              用户相差
+        if (beforeAmount.compareTo(zero) == 0 || afterAmount.compareTo(zero) < 0) {
+            throw new SystemException("余额不足");
+        }
+        sysUserAccountHistory.setAmount(amount);  // 金额
+        sysUserAccountHistory.setSurplusAmount(afterAmount); // 剩余金额
+        sysUserAccountHistory.setUserAmount(beforeAmount);   // 用户剩余金额
+        sysAmountAuditingEntity.setCreateTime(new Date());
+        sysAmountAuditingEntity.setAuditingStatus("2");   // 2  为待审核  3  审核通过
+        // sysAmountAuditingEntity.setAmountStatus(sysUserAccountVo.getAmountStatus());
+//              新增金额记录
+        sysAmountAuditingService.save(sysAmountAuditingEntity);
+        sysUserAccountHistory.setAuditiingId(sysAmountAuditingEntity.getId());
+        sysUserAccountService.updateById(sysUserAccount);
+        historyService.updayteByUserAccount(sysUserAccountHistory);
+        // }
+        // 提现审核插入轨迹表   待审核数据 和审核处理中的数据
+
+        // Calendar calendar = Calendar.getInstance();
+        Date date = new Date();
+        //calendar.add(Calendar.MINUTE, 1);
+        // Date afterDate = calendar.getTime();
+        SysAmountAuditingHistory sysAmountAuditingHistory = new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId, date, "1", "1", sysUserAccountHistory.getId());
+        SysAmountAuditingHistory sysAmountAuditingHistoryTwo = new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId, date, "2", "1", sysUserAccountHistory.getId());
+        sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
+        sysAmountAuditingHistoryService.save(sysAmountAuditingHistoryTwo);
+        return sysAmountAuditingEntity.getId();
+    }
+
+
+}

+ 3 - 14
src/main/java/com/ydtech/modules/ttqf/LgInformationPush.java

@@ -2,9 +2,7 @@ package com.ydtech.modules.ttqf;
 
 
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.ipaynow.jiaxin.domain.PresignModel;
-import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
-import com.ydtech.modules.order.entity.api.bohai.constants.DocumentClass;
+import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.vo.PaySigningInformation;
 import com.ydtech.modules.ttqf.entity.vo.PaySigningInformation;
 import com.ydtech.utils.HttpUtil;
 import com.ydtech.utils.HttpUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -12,7 +10,6 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.List;
 
 
 @Slf4j
 @Slf4j
 @Component
 @Component
@@ -22,16 +19,8 @@ public class LgInformationPush {
     private TTFQConfig config;
     private TTFQConfig config;
 
 
     @Async
     @Async
-    public void push(String userId,PresignModel model, List<EsmUserImageQueryVo> esmUserImageQueryVo){
-        PaySigningInformation information = JSONObject.parseObject(JSONObject.toJSONString(model), PaySigningInformation.class);
-        information.setZgUserId(userId);
-        for (EsmUserImageQueryVo imageQueryVo : esmUserImageQueryVo) {
-            if (DocumentClass.SFZ_01.getCode().equals(imageQueryVo.getType())){
-                information.setIdCardPicAFileUrl(imageQueryVo.getPath());
-            }else if(DocumentClass.SFZ_02.getCode().equals(imageQueryVo.getType())){
-                information.setIdCardPicBFileId(imageQueryVo.getPath());
-            }
-        }
+    public void push(PaySignCallback paySignCallback){
+        PaySigningInformation information = JSONObject.parseObject(JSONObject.toJSONString(paySignCallback), PaySigningInformation.class);
         String sendPost = HttpUtil.sendPost(config.getLgUrl(), JSONObject.toJSONString(information));
         String sendPost = HttpUtil.sendPost(config.getLgUrl(), JSONObject.toJSONString(information));
         log.info("推送灵工数据+++++++{}",sendPost);
         log.info("推送灵工数据+++++++{}",sendPost);
 
 

+ 30 - 23
src/main/java/com/ydtech/modules/ttqf/RetrieveTTQFApi.java

@@ -10,11 +10,11 @@ import com.ipaynow.jiaxin.domain.*;
 import com.ipaynow.jiaxin.request.*;
 import com.ipaynow.jiaxin.request.*;
 import com.ipaynow.jiaxin.response.*;
 import com.ipaynow.jiaxin.response.*;
 import com.ydtech.exception.SystemException;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
 import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.order.entity.api.bohai.constants.DocumentClass;
 import com.ydtech.modules.order.entity.api.bohai.constants.DocumentClass;
+import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -64,16 +64,16 @@ public class RetrieveTTQFApi {
     private void setConfig(TangClient client){
     private void setConfig(TangClient client){
         tangClient = client;
         tangClient = client;
     }
     }
-    public  static String extractBalance(String userId,String decimal) throws Exception {
-        SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay("9914D1305");
-          signService.saveUserSign(bankCard.getUserId());
+    public  static boolean extractBalance(SysUserBankCard bankCard,UserWithdrawal withdrawal){
         if (queryPressing(bankCard.getIdentity())){
         if (queryPressing(bankCard.getIdentity())){
+            BigDecimal accountBalance = balance();
+            if (BigDecimal.ZERO.compareTo(accountBalance) == 0 || (accountBalance.compareTo(withdrawal.getAmount()) == -1)){
+                throw new SystemException("商户余额不足,请联系管理员");
+            }
             //用户已经签约  进行打款操作
             //用户已经签约  进行打款操作
-            orderAdd(bankCard,new BigDecimal(decimal),"测试打款");
-            return "0";
+            return orderAdd(bankCard, withdrawal.getAmount(), withdrawal.getRemarks());
         } else {
         } else {
-            //  未签约的用户先签约后进行打款
-            return pres(bankCard);
+            return false;
         }
         }
     }
     }
 
 
@@ -204,7 +204,7 @@ public class RetrieveTTQFApi {
         }else {
         }else {
             throw new SystemException("用户身份证有效日期不全,请检查");
             throw new SystemException("用户身份证有效日期不全,请检查");
         }
         }
-        presignModel.setNotifyUrl("");
+        presignModel.setNotifyUrl(PayConstantStatus.getUserSignNotifyUrl());
         for (EsmUserImageQueryVo item : esmUserImageQueryVo) {
         for (EsmUserImageQueryVo item : esmUserImageQueryVo) {
             try {
             try {
                 if (StringUtils.isEmpty(item.getPath())){
                 if (StringUtils.isEmpty(item.getPath())){
@@ -230,12 +230,11 @@ public class RetrieveTTQFApi {
         request.setRequestId(System.currentTimeMillis() + "");
         request.setRequestId(System.currentTimeMillis() + "");
         PresignResponse response = tangClient.execute(request);
         PresignResponse response = tangClient.execute(request);
         if(response.isSuccess()) {
         if(response.isSuccess()) {
-            SpringUtil.getBean(LgInformationPush.class).push(bankCard.getUserId(),presignModel,esmUserImageQueryVo);
             log.info("成功 ====>Pressing {}", response.getResultModel());
             log.info("成功 ====>Pressing {}", response.getResultModel());
-            return contractH5();
+            return contractH5(bankCard.getIdentity());
         } else {
         } else {
             log.error("失败{}", response);
             log.error("失败{}", response);
-            return "";
+            return response.getBizMsg();
         }
         }
     }
     }
 
 
@@ -261,10 +260,10 @@ public class RetrieveTTQFApi {
     /**
     /**
      * 合同签约唤起接口
      * 合同签约唤起接口
      */
      */
-    public static String contractH5() {
+    public static String contractH5(String idCardNo) {
         ContractH5Response response = tangClient.execute(ContractH5Request.builder()
         ContractH5Response response = tangClient.execute(ContractH5Request.builder()
                 .requestId(System.currentTimeMillis() + "").bizModel(ContractH5Model.builder()
                 .requestId(System.currentTimeMillis() + "").bizModel(ContractH5Model.builder()
-                        .idCardNo("11010219900131252X").mchReturnUrl(PayConstantStatus.getUserSignNotifyUrl()).build())
+                        .idCardNo(idCardNo).mchReturnUrl(PayConstantStatus.getUserSignNotifyUrl()).build())
                 .build());
                 .build());
         if(response.isSuccess()) {
         if(response.isSuccess()) {
             //  返回当前签约H5页面
             //  返回当前签约H5页面
@@ -272,7 +271,7 @@ public class RetrieveTTQFApi {
             log.info("成功 ====>ContractH5 {}", response.getResultModel());
             log.info("成功 ====>ContractH5 {}", response.getResultModel());
             return signUrl;
             return signUrl;
         } else {
         } else {
-            log.error("失败");
+            log.error("调起用户签约信息异常");
         }
         }
         return "";
         return "";
     }
     }
@@ -287,7 +286,7 @@ public class RetrieveTTQFApi {
                 .build();
                 .build();
         OrderAddResponse response = tangClient.execute(addRequest);
         OrderAddResponse response = tangClient.execute(addRequest);
         boolean confirm = confirm(response.getResultModel().getOrderNo(),response.getResultModel().getBatchNo());
         boolean confirm = confirm(response.getResultModel().getOrderNo(),response.getResultModel().getBatchNo());
-        savePayOrder.savePayOrder(addRequest.getApiUrl(),response, JSONObject.toJSONString(addModel),JSONObject.toJSONString(response),userId, confirm);
+        savePayOrder.savePayOrder(addRequest.getApiUrl(),response, JSONObject.toJSONString(addModel),JSONObject.toJSONString(response),userId, confirm,addModel.getUserBankCardNo());
         return response;
         return response;
     }
     }
 
 
@@ -361,13 +360,21 @@ public class RetrieveTTQFApi {
     /**
     /**
      * 商户余额查询接口
      * 商户余额查询接口
      */
      */
-    public static void testBalance() {
-        MerchantBalanceRequest balanceRequest = MerchantBalanceRequest.builder()
-                .requestId(System.currentTimeMillis() + "").bizModel(MerchantBalanceModel.builder().build())
-                .build();
-        MerchantBalanceResponse response = tangClient.execute(balanceRequest);
-        System.out.println(response);
-
+    public static BigDecimal balance() {
+        try {
+            MerchantBalanceRequest balanceRequest = MerchantBalanceRequest.builder()
+                    .requestId(System.currentTimeMillis() + "").bizModel(MerchantBalanceModel.builder().build())
+                    .build();
+            MerchantBalanceResponse response = tangClient.execute(balanceRequest);
+            if (response.isSuccess()){
+                return response.getResultModel().getAvailableBalance();
+            }else {
+                return BigDecimal.ZERO;
+            }
+        }catch (Exception e){
+            log.error("查询商户余额异常{}", e.getMessage());
+            return BigDecimal.ZERO;
+        }
     }
     }
 
 
 
 

+ 3 - 1
src/main/java/com/ydtech/modules/ttqf/SavePayOrder.java

@@ -16,7 +16,7 @@ import java.util.Date;
 public class SavePayOrder {
 public class SavePayOrder {
 
 
     @Async
     @Async
-    public  void savePayOrder(String url, OrderAddResponse response, String requestData, String responseData, String userId,boolean confirm){
+    public  void savePayOrder(String url, OrderAddResponse response, String requestData, String responseData, String userId,boolean confirm,String userBankCardNo){
         PayTtqfLog ttqfLog = new PayTtqfLog();
         PayTtqfLog ttqfLog = new PayTtqfLog();
         ttqfLog.setSedStatus(response.isSuccess());
         ttqfLog.setSedStatus(response.isSuccess());
         ttqfLog.setApiUrl(url);
         ttqfLog.setApiUrl(url);
@@ -35,6 +35,8 @@ public class SavePayOrder {
         ttqfLog.setAmount(response.getResultModel().getAmount());
         ttqfLog.setAmount(response.getResultModel().getAmount());
         ttqfLog.setFeeAmount(response.getResultModel().getFeeAmount());
         ttqfLog.setFeeAmount(response.getResultModel().getFeeAmount());
         ttqfLog.setPaymentType(response.getResultModel().getPaymentType());
         ttqfLog.setPaymentType(response.getResultModel().getPaymentType());
+        String sysAmountAuditingId = SpringUtil.getBean(AmountAuditingService.class).sendMessage(response.getResultModel().getAmount(), userId, userBankCardNo);
+        ttqfLog.setSysAmountAuditingId(sysAmountAuditingId);
         SpringUtil.getBean(PayTtqfLogMapper.class).insert(ttqfLog);
         SpringUtil.getBean(PayTtqfLogMapper.class).insert(ttqfLog);
     }
     }
 
 

+ 62 - 0
src/main/java/com/ydtech/modules/ttqf/TtqfDecrypt.java

@@ -0,0 +1,62 @@
+package com.ydtech.modules.ttqf;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ipaynow.jiaxin.SdkException;
+import com.ipaynow.jiaxin.util.AESUtils;
+import com.ipaynow.jiaxin.util.RSAUtils;
+import com.ipaynow.jiaxin.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+@Slf4j
+public class TtqfDecrypt {
+
+    /**
+     * 解密通知业务报文
+     * @param enc
+     * @return
+     */
+    public static String parse(String enc) {
+
+        TTFQConfig ttfqConfig = SpringUtil.getBean(TTFQConfig.class);
+
+        JSONObject encObj = JSON.parseObject(enc);
+        //1. 解密AES秘钥
+        String aes = null;
+        try {
+            aes = RSAUtils.decrypt(encObj.getString("aes"), ttfqConfig.getMchPrivateKey());
+        } catch (Exception e) {
+            log.error("天天企赋通知-AES秘钥解密错误", e);
+            throw new SdkException(e);
+        }
+        String bizRequest = null;
+        try {
+            bizRequest = AESUtils.decrypt(encObj.getString("reqData"), aes);
+        } catch (Exception e) {
+            log.error("天天企赋通知-业务报文解密错误", e);
+            throw new SdkException(e);
+        }
+        Map<String, String> rtMap = new HashMap<>();
+        rtMap.put("reqData", bizRequest);
+        rtMap.put("mchId", encObj.getString("mchId"));
+        rtMap.put("reqId", encObj.getString("reqId"));
+        rtMap.put("reqTime",encObj.getString("reqTime"));
+        rtMap.put("signType", "RSA");
+        rtMap.put("aes", aes);
+        rtMap.put("version", "1.0");
+        // 8. 构造待验签字符串
+        String dataForm = StringUtils.buildDataForm(rtMap);
+        // 9. 签名结果
+        boolean check = RSAUtils.verifySign(dataForm, encObj.getString("sign"), ttfqConfig.getPlatformPublicKey());
+        if(check) {
+            return bizRequest;
+        } else {
+            return null;
+        }
+    }
+}

+ 44 - 25
src/main/java/com/ydtech/modules/ttqf/controller/TtqfController.java

@@ -1,16 +1,14 @@
 package com.ydtech.modules.ttqf.controller;
 package com.ydtech.modules.ttqf.controller;
 
 
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.ttqf.QuartzManager;
 import com.ydtech.modules.ttqf.RegularlyPaymentStatus;
 import com.ydtech.modules.ttqf.RegularlyPaymentStatus;
-import com.ydtech.modules.ttqf.RegularlyUpdateStatus;
-import com.ydtech.modules.ttqf.RetrieveTTQFApi;
+import com.ydtech.modules.ttqf.entity.response.TtqfResponse;
+import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal;
 import com.ydtech.modules.ttqf.service.TtqfService;
 import com.ydtech.modules.ttqf.service.TtqfService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.HashMap;
 
 
 
 
 @RestController
 @RestController
@@ -29,6 +27,43 @@ public class TtqfController {
     }
     }
 
 
 
 
+    /**
+     * 用户提现
+     * @param withdrawal
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("userCashOut")
+    public HttpResult userCashOut(@RequestBody UserWithdrawal withdrawal){
+        return ttqfService.userCashOut(withdrawal);
+    }
+
+
+    /**
+     * 查询用户是否签约
+     * @param withdrawal
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("queryPressing")
+    public HttpResult queryPressing(@RequestBody UserWithdrawal withdrawal){
+        return ttqfService.queryPressing(withdrawal);
+    }
+
+
+    /**
+     * 调起用户签约页面
+     * @param withdrawal
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("signingAddress")
+    public HttpResult signingAddress(@RequestBody UserWithdrawal withdrawal){
+        return ttqfService.signingAddress(withdrawal);
+    }
+
+
+
     /**
     /**
      * 接收打款通知回调
      * 接收打款通知回调
      * @param obj
      * @param obj
@@ -36,21 +71,17 @@ public class TtqfController {
      */
      */
 
 
     @PostMapping("paymentNotice")
     @PostMapping("paymentNotice")
-    public JSONObject paymentNotice(@RequestBody String obj){
+    public TtqfResponse paymentNotice(@RequestBody String obj){
         return ttqfService.paymentNotice(obj);
         return ttqfService.paymentNotice(obj);
     }
     }
 
 
-
-
-
     /**
     /**
      * 接收用户签约回调
      * 接收用户签约回调
      * @param obj
      * @param obj
      * @return
      * @return
      */
      */
-
     @PostMapping("userSign")
     @PostMapping("userSign")
-    public JSONObject userSign(@RequestBody String obj){
+    public TtqfResponse userSign(@RequestBody String obj){
         return ttqfService.userSign(obj);
         return ttqfService.userSign(obj);
     }
     }
 
 
@@ -86,22 +117,10 @@ public class TtqfController {
     }
     }
 
 
 
 
-    @GetMapping("aa/{de}")
-    public String getss(@PathVariable("de")String de) throws Exception {
-        RetrieveTTQFApi.extractBalance("",de);
-        return "";
-    }
+    @GetMapping("aa")
+    public void getss() throws Exception {
 
 
-    @GetMapping("test")
-    public void test() throws Exception {
-        HashMap<String, String> hashMap = new HashMap<>();
-        hashMap.put("userId","11111111111111");
-        QuartzManager manager = QuartzManager.getInstance();
-        manager.getContext().put("flag",true);
-        manager.addJob("jobName","jobGroup", RegularlyUpdateStatus.class,"*/5 * * * * ?",hashMap);
-        manager.start();
     }
     }
 
 
 
 
-
 }
 }

+ 0 - 99
src/main/java/com/ydtech/modules/ttqf/decrypt.java

@@ -1,99 +0,0 @@
-package com.ydtech.modules.ttqf;
-
-import com.alibaba.fastjson.JSON;
-import com.ipaynow.jiaxin.*;
-import com.ipaynow.jiaxin.domain.ResultModel;
-import com.ipaynow.jiaxin.util.StringUtils;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static com.ipaynow.jiaxin.TangConstants.CODE_SUCCESS;
-import static com.ipaynow.jiaxin.TangConstants.SECRET_KEY_ERROR;
-
-
-@Slf4j
-public class decrypt {
-
-    private Decryptor decryptor;
-    private SignChecker signChecker;
-
-
-    public TangResponse aa(String response){
-
-        // 返回对象初始化
-        TangResponse rsp = null;
-
-        //解析响应报文
-        Map responseMap = JSON.parseObject(response, Map.class);
-        String code = (String) responseMap.get("code");
-        String msg = (String) responseMap.get("msg");
-        if(!CODE_SUCCESS.equals(code)) {
-            rsp.setCode(code);
-            rsp.setMsg(msg);
-            return  rsp;
-        }
-        // 6. 解密AES
-        String decAES = null;
-        Decryptor aesDecryptor = null;
-        try {
-            decAES = this.decryptor.decrypt((String) responseMap.get("aes"));
-            aesDecryptor = new AESDecryptor(decAES);
-        } catch (Exception e) {
-            log.error("天天企赋API => 秘钥错误,解密失败", e);
-            rsp.setCode(SECRET_KEY_ERROR);
-            rsp.setMsg("解密错误");
-            return rsp;
-        }
-        // 7. 解密业务报文
-        String bizResponse = null;
-        try {
-            bizResponse = aesDecryptor.decrypt((String) responseMap.get("respData"));
-        } catch (Exception e) {
-            log.error("天天企赋API => 秘钥错误,解密业务报文失败", e);
-            rsp.setCode(SECRET_KEY_ERROR);
-            rsp.setMsg("解密响应报文错误");
-            return rsp;
-        }
-        // 8. 构造签名
-        Map<String, String> rtMap = new HashMap<>();
-        rtMap.put("respData", bizResponse);
-        rtMap.put("mchId", (String) responseMap.get("mchId"));
-        rtMap.put("reqId", (String) responseMap.get("reqId"));
-        rtMap.put("respTime", (String) responseMap.get("respTime"));
-        rtMap.put("signType", "RSA");
-        rtMap.put("aes", decAES);
-        rtMap.put("version", "1.0");
-        // 8. 构造待验签字符串
-        String dataForm1 = StringUtils.buildDataForm(rtMap);
-        // 9. 签名结果
-        boolean check = this.signChecker.check(dataForm1, (String) responseMap.get("sign"));
-        if (check) {
-            rsp.setCode(code);
-            rsp.setMsg(msg);
-            // 解析业务报文
-            ResultModel rs = null;
-            try {
-                rs = (ResultModel) rsp.getResultModelClass().newInstance();
-            } catch (InstantiationException e) {
-                throw new SdkException(e);
-            } catch (IllegalAccessException e) {
-                throw new SdkException(e);
-            }
-            rs = JSON.parseObject(bizResponse, rs.getClass());
-            rsp.setResultModel(rs);
-            rsp.setBizCode(rs.getBizCode());
-            rsp.setBizMsg(rs.getBizMsg());
-            rsp.setRespData(bizResponse);
-            return  rsp;
-        } else {
-            rsp.setCode(SECRET_KEY_ERROR);
-            rsp.setMsg("签名错误");
-            return  rsp;
-        }
-    }
-
-
-
-}

+ 5 - 0
src/main/java/com/ydtech/modules/ttqf/entity/PaySignCallback.java

@@ -3,9 +3,13 @@ package com.ydtech.modules.ttqf.entity;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.Date;
+
 @Data
 @Data
+@TableName("pay_sign_callback")
 public class PaySignCallback {
 public class PaySignCallback {
 
 
     @TableId(type = IdType.ASSIGN_ID)
     @TableId(type = IdType.ASSIGN_ID)
@@ -31,5 +35,6 @@ public class PaySignCallback {
 
 
     private int bindStatus;
     private int bindStatus;
 
 
+    private Date createTime;
 
 
 }
 }

+ 2 - 0
src/main/java/com/ydtech/modules/ttqf/entity/PayTtqfLog.java

@@ -58,6 +58,8 @@ private static final long serialVersionUID=1L;
 
 
         private boolean confirm;
         private boolean confirm;
 
 
+        private String sysAmountAuditingId;
+
         /**
         /**
          * 创建者
          * 创建者
          */
          */

+ 16 - 1
src/main/java/com/ydtech/modules/ttqf/entity/PayUserSign.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Builder;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.Date;
+
 @Data
 @Data
 @TableName("pay_user_sign")
 @TableName("pay_user_sign")
 @Builder
 @Builder
@@ -20,14 +22,27 @@ public class PayUserSign {
      */
      */
     private String userId;
     private String userId;
 
 
+    /**
+     * 用户身份证号
+     */
+    private String identity;
+
     /**
     /**
      * 是否签约
      * 是否签约
      */
      */
-    private boolean sign;
+    private int sign;
+
+
+    /**
+     * 是认证状态:0-未实名1-已实名
+     */
+    private int authStatus;
 
 
     /**
     /**
      * 是否线上支付
      * 是否线上支付
      */
      */
     private boolean onlinePayment;
     private boolean onlinePayment;
 
 
+    private Date createTime;
+
 }
 }

+ 23 - 0
src/main/java/com/ydtech/modules/ttqf/entity/response/TtqfResponse.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.ttqf.entity.response;
+
+import java.io.Serializable;
+
+public class TtqfResponse<T> implements Serializable {
+
+
+    private String bizCode = "0000";
+
+    public String getBizCode() {
+        return bizCode;
+    }
+
+    public void setBizCode(String bizCode) {
+        this.bizCode = bizCode;
+    }
+
+    public static <T> TtqfResponse<T> ok() {
+        TtqfResponse<T> r = new TtqfResponse<>();
+        return r;
+    }
+
+}

+ 5 - 24
src/main/java/com/ydtech/modules/ttqf/entity/vo/PaySigningInformation.java

@@ -1,13 +1,11 @@
 package com.ydtech.modules.ttqf.entity.vo;
 package com.ydtech.modules.ttqf.entity.vo;
 
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.Data;
 
 
-import java.util.Date;
-
 @Data
 @Data
 public class PaySigningInformation {
 public class PaySigningInformation {
 
 
+    private String name;
 
 
     /** 身份证号 */
     /** 身份证号 */
     private String idCardNo;
     private String idCardNo;
@@ -18,31 +16,14 @@ public class PaySigningInformation {
     /** 银行卡号 */
     /** 银行卡号 */
     private String bankCardNo;
     private String bankCardNo;
 
 
-    /** 身份证有效日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date expiryStart;
-
-    /** 身份证有效日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date expiryEnd;
-
-    /** 正面ID */
-    private String idCardPicAFileId;
-
-    /** 反面ID */
-    private String idCardPicBFileId;
+    private String bankName;
 
 
-    /** 正面url */
-    private String idCardPicAFileUrl;
+    private String authStatus;
 
 
-    /** 反面url */
-    private String idCardPicBFileUrl;
+    private String signStatus;
 
 
-    /** 签约状态 */
-    private Integer signState;
+    private String bindStatus;
 
 
-    /** 掌柜用户ID */
-    private String zgUserId;
 
 
 
 
 
 

+ 21 - 0
src/main/java/com/ydtech/modules/ttqf/entity/vo/UserWithdrawal.java

@@ -0,0 +1,21 @@
+package com.ydtech.modules.ttqf.entity.vo;
+
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ */
+@Data
+public class UserWithdrawal {
+
+    private String userId;
+
+
+    private BigDecimal amount;
+
+    private String remarks;
+
+}

+ 17 - 0
src/main/java/com/ydtech/modules/ttqf/entity/vo/WithdrawalFRes.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.ttqf.entity.vo;
+
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class WithdrawalFRes {
+
+    private String bizCode;
+
+    private String msg;
+
+    private String url;
+
+}

+ 4 - 5
src/main/java/com/ydtech/modules/ttqf/service/PayUserSignService.java

@@ -1,15 +1,14 @@
 package com.ydtech.modules.ttqf.service;
 package com.ydtech.modules.ttqf.service;
 
 
+import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 
 
 public interface PayUserSignService {
 public interface PayUserSignService {
 
 
+    void saveUserSign(String identity,String userId);
 
 
-    void saveUserSign(String userId);
+    PayUserSign selectOne(String identity,String userId);
 
 
-
-    PayUserSign selectOne(String userId);
-
-    void updateUserSign(String userId);
+    void updateUserSign(PaySignCallback paySignCallback);
 
 
 }
 }

+ 10 - 3
src/main/java/com/ydtech/modules/ttqf/service/TtqfService.java

@@ -1,7 +1,8 @@
 package com.ydtech.modules.ttqf.service;
 package com.ydtech.modules.ttqf.service;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.ttqf.entity.response.TtqfResponse;
+import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal;
 
 
 public interface TtqfService {
 public interface TtqfService {
 
 
@@ -10,16 +11,22 @@ public interface TtqfService {
     Object getUserPay(String userId);
     Object getUserPay(String userId);
 
 
 
 
-    JSONObject userSign(String obj);
+    TtqfResponse userSign(String obj);
 
 
-    JSONObject paymentNotice(String obj);
+    TtqfResponse paymentNotice(String obj);
 
 
     HttpResult billDownload(Integer type, String date);
     HttpResult billDownload(Integer type, String date);
 
 
     HttpResult receiptDownload(String mchOrderNo, String orderNo);
     HttpResult receiptDownload(String mchOrderNo, String orderNo);
 
 
 
 
+    HttpResult queryPressing(UserWithdrawal withdrawal);
 
 
 
 
+    HttpResult signingAddress(UserWithdrawal withdrawal);
+
+
+    HttpResult userCashOut(UserWithdrawal withdrawal);
+
 
 
 }
 }

+ 23 - 10
src/main/java/com/ydtech/modules/ttqf/service/impl/PayUserSignServiceImpl.java

@@ -2,12 +2,14 @@ package com.ydtech.modules.ttqf.service.impl;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.modules.ttqf.dao.PayUserSignMapper;
 import com.ydtech.modules.ttqf.dao.PayUserSignMapper;
+import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.Objects;
 import java.util.Objects;
 
 
 @Service
 @Service
@@ -19,26 +21,37 @@ public class PayUserSignServiceImpl implements PayUserSignService {
 
 
     @Async
     @Async
     @Override
     @Override
-    public void saveUserSign(String userId) {
+    public void saveUserSign(String identity,String userId) {
 
 
-        if (Objects.isNull(selectOne(userId))){
-            signMapper.insert(PayUserSign.builder().userId(userId).build());
+        if (Objects.isNull(selectOne(identity,userId))){
+            signMapper.insert(PayUserSign.builder().identity(identity).userId(userId).createTime(new Date()).build());
         }
         }
     }
     }
 
 
     @Override
     @Override
-    public PayUserSign selectOne(String userId) {
+    public PayUserSign selectOne(String identity,String userId) {
         LambdaQueryWrapper<PayUserSign> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<PayUserSign> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PayUserSign::getUserId,userId);
+        queryWrapper.eq(PayUserSign::getIdentity,identity).eq(PayUserSign::getUserId,userId);
         return signMapper.selectOne(queryWrapper);
         return signMapper.selectOne(queryWrapper);
     }
     }
 
 
+
     @Override
     @Override
-    public void updateUserSign(String userId) {
-        PayUserSign payUserSign = selectOne(userId);
-        payUserSign.setSign(true);
-        payUserSign.setOnlinePayment(true);
-        signMapper.updateById(payUserSign);
+    public void updateUserSign(PaySignCallback paySignCallback) {
+        LambdaQueryWrapper<PayUserSign> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PayUserSign::getIdentity,paySignCallback.getIdCardNo());
+        queryWrapper.orderByDesc(PayUserSign::getCreateTime);
+        PayUserSign userSign = signMapper.selectOne(queryWrapper);
+        if (Objects.isNull(userSign)){
+            signMapper.insert(PayUserSign.builder().sign(paySignCallback.getSignStatus()).authStatus(paySignCallback.getAuthStatus())
+                     .identity(paySignCallback.getIdCardNo())
+                    .onlinePayment(true).build());
+        }else {
+            userSign.setSign(paySignCallback.getSignStatus());
+            userSign.setAuthStatus(paySignCallback.getAuthStatus());
+            userSign.setOnlinePayment(true);
+            signMapper.updateById(userSign);
+        }
     }
     }
 
 
 
 

+ 237 - 14
src/main/java/com/ydtech/modules/ttqf/service/impl/TtqfServiceImpl.java

@@ -1,21 +1,50 @@
 package com.ydtech.modules.ttqf.service.impl;
 package com.ydtech.modules.ttqf.service.impl;
 
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ipaynow.jiaxin.response.BillDownloadResponse;
 import com.ipaynow.jiaxin.response.BillDownloadResponse;
 import com.ipaynow.jiaxin.response.ReceiptlDownloadResponse;
 import com.ipaynow.jiaxin.response.ReceiptlDownloadResponse;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.constants.ManagementSource;
+import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
+import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper;
+import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
+import com.ydtech.modules.admin.model.po.*;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+import com.ydtech.modules.admin.service.SysAmountAuditingHistoryService;
+import com.ydtech.modules.admin.service.SysAmountAuditingService;
+import com.ydtech.modules.admin.service.SysSwitchConfigService;
+import com.ydtech.modules.admin.service.SysUserAccountService;
+import com.ydtech.modules.lg.model.PushLgEntity;
+import com.ydtech.modules.ttqf.LgInformationPush;
 import com.ydtech.modules.ttqf.PayConstantStatus;
 import com.ydtech.modules.ttqf.PayConstantStatus;
 import com.ydtech.modules.ttqf.RetrieveTTQFApi;
 import com.ydtech.modules.ttqf.RetrieveTTQFApi;
+import com.ydtech.modules.ttqf.TtqfDecrypt;
 import com.ydtech.modules.ttqf.dao.PaySignCallbackMapper;
 import com.ydtech.modules.ttqf.dao.PaySignCallbackMapper;
 import com.ydtech.modules.ttqf.dao.PayTtqfLogMapper;
 import com.ydtech.modules.ttqf.dao.PayTtqfLogMapper;
+import com.ydtech.modules.ttqf.dao.PaymentNoticeMapper;
 import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PayTtqfLog;
 import com.ydtech.modules.ttqf.entity.PayTtqfLog;
+import com.ydtech.modules.ttqf.entity.PayUserSign;
+import com.ydtech.modules.ttqf.entity.PaymentNoticeEntity;
+import com.ydtech.modules.ttqf.entity.response.TtqfResponse;
+import com.ydtech.modules.ttqf.entity.vo.UserWithdrawal;
+import com.ydtech.modules.ttqf.entity.vo.WithdrawalFRes;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import com.ydtech.modules.ttqf.service.TtqfService;
 import com.ydtech.modules.ttqf.service.TtqfService;
+import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Objects;
 
 
 
 
 @Slf4j
 @Slf4j
@@ -23,15 +52,38 @@ import org.springframework.stereotype.Service;
 public class TtqfServiceImpl implements TtqfService {
 public class TtqfServiceImpl implements TtqfService {
 
 
     @Autowired
     @Autowired
-    private PayTtqfLogMapper ttqfMapper;
+    private PayTtqfLogMapper logMapper;
+
+    @Autowired
+    private SysSwitchConfigService sysSwitchConfigService;
 
 
     @Autowired
     @Autowired
     private PayUserSignService userSignService;
     private PayUserSignService userSignService;
 
 
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
 
 
     @Autowired
     @Autowired
     private PaySignCallbackMapper signCallbackMapper;
     private PaySignCallbackMapper signCallbackMapper;
 
 
+    @Autowired
+    private PaymentNoticeMapper noticeMapper;
+
+    @Autowired
+    private  PayUserSignService signService;
+
+    @Autowired
+    private SysAmountAuditingHistoryService sysAmountAuditingHistoryService;
+
+    @Autowired
+    private SysUserAccountService sysUserAccountService;
+
+    @Autowired
+    private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
+
+    @Autowired
+    private SysAmountAuditingMapper amountAuditingMapper;
+
     @Override
     @Override
     public Object getUserPay(String userId) {
     public Object getUserPay(String userId) {
 
 
@@ -49,26 +101,109 @@ public class TtqfServiceImpl implements TtqfService {
     }
     }
 
 
     @Override
     @Override
-    public JSONObject userSign(String obj) {
-        log.info("接收用户签约回调 + userSign ================={}", obj);
+    public TtqfResponse userSign(String obj) {
+        try {
+            String parse = TtqfDecrypt.parse(obj);
+            if (!StringUtils.isEmpty(parse)){
+                //保存签约回调信息
+                PaySignCallback paySignCallback = JSONObject.parseObject(parse, PaySignCallback.class);
+                paySignCallback.setCreateTime(new Date());
+                int insert = signCallbackMapper.insert(paySignCallback);
+                if (0 < insert){
+                    //用户签约回调成功之后更新为签约状态并支持线上打款  签约成功更新状态
+                    userSignService.updateUserSign(paySignCallback);
+                    SpringUtil.getBean(LgInformationPush.class).push(paySignCallback);
+                }
+            }
+        }catch (Exception r){
+            log.info("接收签约通知回调保存失败 + PaySignCallback ================={}", r.getMessage());
+        }
+        return TtqfResponse.ok();
+    }
 
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public TtqfResponse paymentNotice(String obj) {
+        String parse = TtqfDecrypt.parse(obj);
+        if (!StringUtils.isEmpty(parse)){
+            PaymentNoticeEntity noticeEntity = JSONObject.parseObject(parse, PaymentNoticeEntity.class);
+            noticeEntity.setCreateTime(new Date());
+            noticeMapper.insert(noticeEntity);
+            LambdaQueryWrapper<PayTtqfLog> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(PayTtqfLog::getMchOrderNo, noticeEntity.getMchOrderNo());
+            PayTtqfLog ttqfLog = logMapper.selectOne(wrapper);
+            SysAmountAuditingVo amountAuditingVo = new SysAmountAuditingVo();
+            amountAuditingVo.setAmount(noticeEntity.getAmount());
+            amountAuditingVo.setUserId(ttqfLog.getUserId());
+            writeRecord(amountAuditingVo,ttqfLog.getSysAmountAuditingId());
+        }
+        log.info("接收打款通知回调 + paymentNotice ================={}", parse);
+        return TtqfResponse.ok();
+    }
 
 
 
 
-        //保存签约回调信息
-        signCallbackMapper.insert(JSONObject.parseObject(JSONObject.toJSONString(obj), PaySignCallback.class));
+    public void writeRecord(SysAmountAuditingVo sysAmountAuditingVo,String id){
+        SysAmountAuditingEntity sysAmountAuditingEntity = sysAmountAuditingService.getById(id);
+        if (ObjectUtils.isEmpty(sysAmountAuditingEntity)){
+            return;
+        }
+        sysAmountAuditingVo.setId(sysAmountAuditingEntity.getId());
+        //提现审核金额
+        BigDecimal amount = sysAmountAuditingVo.getAmount();
+        //提现人
+        String userId = sysAmountAuditingVo.getUserId();
+//        SysUserAccount sysUserAccountEntity = new SysUserAccount();
+//      用户扣减金额
+        if (StringUtils.isNotEmpty(userId)) {
+//            sysUserAccountEntity.setUserId(userId);
+            //提现人账户
+            SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
+            if (ObjectUtils.isNotEmpty(sysUserAccount)) {
+                //注释掉原先按类型提现的逻辑 ,改为不区分类型  add by hxl  2024-06-18
+                /**
+                 String amountStatus = sysAmountAuditingVo.getAmountStatus();
+                 if (StringUtils.isNotEmpty(amountStatus)) {
+                 if ("1".equals(amountStatus)) {
+                 sysUserAccount.setHandlingAmountAccount(amount);
+                 sysUserAccount.setHandlingAmountPayment(sysUserAccount.getHandlingAmountPayment().subtract(amount));
+                 //                        sysUserAccountEntity.setHandlingFee(afterAmount);
+                 } else if ("2".equals(amountStatus)) {
+                 sysUserAccount.setDocumentaryAmountAccount(amount);
+                 sysUserAccount.setDocumentaryAmountpayment(sysUserAccount.getDocumentaryAmountpayment().subtract(amount));
+                 //                        sysUserAccountEntity.setDocumentary(afterAmount);
+                 } else {
+                 sysUserAccount.setPromotionAmountAccount(amount);
+                 sysUserAccount.setPromotionAmountPayment(sysUserAccount.getPromotionAmountPayment().subtract(amount));
+                 //                        sysUserAccountEntity.setPromotion(afterAmount);
+                 }
+
+                 }
+                 **/
+                //已到账金额 =  原先的到账金额+ 已到账的金额
+                sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountAccount()).add(amount));
+                //支付中的金额 = 原先的支付金额 -去提现的金额
+                sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment() == null ? BigDecimal.ZERO : sysUserAccount.getSumAmountPayment()).subtract(amount));
 
 
-        //用户签约回调成功之后更新为签约状态并支持线上打款  签约成功更新状态
-        if (true){
-            userSignService.updateUserSign("");
+                sysUserAccountService.updateById(sysUserAccount);
+            }
+            sysAmountAuditingVo.setAuditingStatus("3");
+            //sysAmountAuditingVo.setAuditingUserId(BaseController.getUser().getId());
+            sysAmountAuditingVo.setAuditingTime(new Date());
+            BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
+            sysAmountAuditingEntity.setCreateTime(null);
+            amountAuditingMapper.updateById(sysAmountAuditingEntity);
+            //通过审核表id查询历史记录表
+            LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
+            lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
+            lqw.eq(SysUserAccountHistory::getUserId, userId);
+            //插入轨迹表审核成功数据
+            SysUserAccountHistory sysUserAccountHistory = sysUserAccountHistoryMapper.selectOne(lqw);
+            //插入轨迹表
+            SysAmountAuditingHistory sysAmountAuditingHistory = new SysAmountAuditingHistory(null, sysAmountAuditingEntity.getId(), amount, userId, new Date(), "4", "1", sysUserAccountHistory.getId());
+            sysAmountAuditingHistoryService.save(sysAmountAuditingHistory);
         }
         }
-        return null;
     }
     }
 
 
-    @Override
-    public JSONObject paymentNotice(String obj) {
-        log.info("接收打款通知回调 + paymentNotice ================={}", obj);
-        return null;
-    }
 
 
     @Override
     @Override
     public HttpResult billDownload(Integer type, String date) {
     public HttpResult billDownload(Integer type, String date) {
@@ -88,5 +223,93 @@ public class TtqfServiceImpl implements TtqfService {
         return HttpResult.error(response.getBizMsg());
         return HttpResult.error(response.getBizMsg());
     }
     }
 
 
+    @Override
+    public HttpResult queryPressing(UserWithdrawal withdrawal) {
+        if (!sysSwitchConfigService.getBalanceExtractStatus()){
+            return HttpResult.ok(WithdrawalFRes.builder().bizCode("0").msg("").url("").build());
+        }
+        SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
+        if (Objects.isNull(bankCard)){
+            return HttpResult.error("用户不存在,请检查");
+        }
+        if (StringUtils.isEmpty(bankCard.getIdentity())){
+            return HttpResult.error("用户身份证号不存在,请检查");
+        }
+        if (!ManagementSource.MS_02.getCode().equals(bankCard.getManagementSource())){
+            return HttpResult.ok(WithdrawalFRes.builder().bizCode("0").msg("").url("").build());
+        }
+        PayUserSign payUserSign = signService.selectOne(bankCard.getIdentity(),bankCard.getUserId());
+        if (!Objects.isNull(payUserSign)){
+            String signUrl = RetrieveTTQFApi.contractH5(bankCard.getIdentity());
+            if (Objects.equals(PayConstantStatus.SIGN_STATUS,payUserSign.getSign()) &&
+                    Objects.equals(PayConstantStatus.AUTH_STATUS,payUserSign.getAuthStatus())){
+
+                return HttpResult.ok(WithdrawalFRes.builder().bizCode("3").msg("已签约").url(signUrl).build());
+            }
+            return HttpResult.ok(WithdrawalFRes.builder().bizCode("2").msg("签约中").url(signUrl).build());
+        }
+        try {
+            boolean sign = RetrieveTTQFApi.queryPressing(bankCard.getIdentity());
+            return HttpResult.ok(WithdrawalFRes.builder().bizCode(sign ? "3" : "1").url("").msg(sign ? "已签约" : "未签约").build());
+        }catch (Exception e){
+            log.info("查询签约状态异常:{}", e.getMessage());
+            return HttpResult.error();
+        }
+    }
+
+    @Override
+    public HttpResult signingAddress(UserWithdrawal withdrawal) {
+        SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
+        if (Objects.isNull(bankCard)){
+            return HttpResult.error("用户不存在,请检查");
+        }
+        if (StringUtils.isEmpty(bankCard.getIdentity())){
+            return HttpResult.error("用户身份证号不存在,请检查");
+        }
+        String pres = RetrieveTTQFApi.pres(bankCard);
+        if (!StringUtils.isEmpty(pres)){
+            signService.saveUserSign(bankCard.getIdentity(),bankCard.getUserId());
+        }
+        return HttpResult.ok(WithdrawalFRes.builder().bizCode("").url(pres).msg("").build());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult userCashOut(UserWithdrawal withdrawal) {
+        SysUserBankCard bankCard = SpringUtil.getBean(SysUserBankCardMapper.class).selectByIdPay(withdrawal.getUserId());
+        if (Objects.isNull(bankCard)){
+            return HttpResult.error("用户不存在,请检查");
+        }
+        if (StringUtils.isEmpty(bankCard.getIdentity())){
+            return HttpResult.error("用户身份证号不存在,请检查");
+        }
+        if (!ManagementSource.MS_02.getCode().equals(bankCard.getManagementSource())){
+            return HttpResult.error("用户不是个代,请线下申请提现");
+        }
+        boolean balance = RetrieveTTQFApi.extractBalance(bankCard, withdrawal);
+        if (balance){
+            //推送提现记录
+            sendCollect( bankCard, withdrawal);
+        }
+        return HttpResult.ok(balance);
+    }
+
+
+    public void sendCollect(SysUserBankCard bankCard,UserWithdrawal withdrawal){
+        PushLgEntity lgEntity = new PushLgEntity();
+
+        SysAmountAuditingVo sysAmountAuditingVo = new SysAmountAuditingVo();
+        sysAmountAuditingVo.setId("");
+        sysAmountAuditingVo.setUserId(bankCard.getUserId());
+        sysAmountAuditingVo.setBankNumber(bankCard.getBankNumber());
+        sysAmountAuditingVo.setAmount(withdrawal.getAmount());
+        sysAmountAuditingVo.setCreateTime(new Date());
+        sysAmountAuditingVo.setAuditingStatus("");
+        sysAmountAuditingVo.setUserName(bankCard.getUserName());
+        sysAmountAuditingVo.setMobile(bankCard.getMobile());
+        //sendCollectUtils.sendCollect(sysAmountAuditingVo);
+    }
+
+
 
 
 }
 }

+ 1 - 1
src/main/resources/application-test.yml

@@ -457,7 +457,7 @@ yangguang:
     url: http://chexiantest.sinosig.com:7002/serviceCar/nonstandard.action?sysFlag=CCSI_SXJZG
     url: http://chexiantest.sinosig.com:7002/serviceCar/nonstandard.action?sysFlag=CCSI_SXJZG
     productKey: hhSFrKjVGqFGz6GN
     productKey: hhSFrKjVGqFGz6GN
     payCallBack: https://sxzgkj.baoxianzhanggui.com/web-api/api/yangGuang/callBack
     payCallBack: https://sxzgkj.baoxianzhanggui.com/web-api/api/yangGuang/callBack
-    uploadUrl: unifiedimage.sinosig.com:8082/AutoImagePlatform/third/upload
+    uploadUrl: http://unifiedimage.sinosig.com:8082/AutoImagePlatform/third/upload
     secret: 6CPxxlHwLLphTR7gVg3hJLsH
     secret: 6CPxxlHwLLphTR7gVg3hJLsH
     referer: SXJZG
     referer: SXJZG
 
 

+ 51 - 0
src/main/resources/mapper/modules/admin/SysAgencyLeaderMapper.xml

@@ -183,6 +183,57 @@
         </where>
         </where>
         ORDER BY sal.id desc
         ORDER BY sal.id desc
     </select>
     </select>
+    <select id="queryWorkByFive" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_agency_leader  s
+        <where>
+            s.del_flag = 1
+            <if test="workIds != null and workIds != '' and workIds.size() > 0">
+                AND s.user_id  in
+                <foreach collection="workIds" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
+    <select id="queryWorkByFiveTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_agency_leader  s
+        <where>
+            s.del_flag = 1
+            <if test="workIds != null and workIds != '' and workIds.size() > 0">
+                AND s.user_id  in
+                <foreach collection="workIds" item="id" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
+
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
 
 
 </mapper>
 </mapper>
 
 

+ 103 - 2
src/main/resources/mapper/modules/admin/SysPartnerMapper.xml

@@ -93,6 +93,30 @@
 
 
     </select>
     </select>
 
 
+    <select id="queryDeptByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_dept  s
+        <where>
+            s.del_flag = 0
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
 
 
     <select id="queryDeptByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
     <select id="queryDeptByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         select spa.time, COUNT(spa.id) as countNum
@@ -119,7 +143,7 @@
         spa.time ASC
         spa.time ASC
     </select>
     </select>
 
 
-    <select id="queryDeptByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+    <select id="queryDeptByFive" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         select spa.time, COUNT(spa.id) as countNum
         from(
         from(
         SELECT
         SELECT
@@ -144,6 +168,31 @@
         spa.time ASC
         spa.time ASC
     </select>
     </select>
 
 
+    <select id="queryDeptByFiveTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_dept  s
+        <where>
+            s.del_flag = 0
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
+
     <select id="queryUserByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
     <select id="queryUserByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         select spa.time, COUNT(spa.id) as countNum
         from(
         from(
@@ -169,7 +218,6 @@
         spa.time ASC
         spa.time ASC
 
 
     </select>
     </select>
-
     <select id="queryUserByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
     <select id="queryUserByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         select spa.time, COUNT(spa.id) as countNum
         from(
         from(
@@ -195,6 +243,59 @@
         spa.time ASC
         spa.time ASC
 
 
     </select>
     </select>
+
+    <select id="queryUserByFive" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_user  s
+        <where>
+            s.status in (1, 4, 5, 6, 7)
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.dept_id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
+    <select id="queryUserByFiveTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_user  s
+        <where>
+            s.status in (1, 4, 5, 6, 7)
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.dept_id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+
+    </select>
+
+
     <select id="queryPartnerByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
     <select id="queryPartnerByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         select spa.time, COUNT(spa.id) as countNum
         from(
         from(

+ 1 - 1
src/main/resources/mapper/modules/esm/EsmUserImageMapper.xml

@@ -23,7 +23,7 @@
     </sql>
     </sql>
 
 
     <select id="selectEsmUserImageQueryVo" resultMap="EsmUserImageQueryVo">
     <select id="selectEsmUserImageQueryVo" resultMap="EsmUserImageQueryVo">
-        select i.type, i.images_id, f.url
+        select i.type, i.images_id, f.file_path as url
         from esm_user_image as i
         from esm_user_image as i
                  left join ins_upload_files as f
                  left join ins_upload_files as f
                            on i.images_id = f.id
                            on i.images_id = f.id

+ 8 - 8
src/main/resources/mapper/modules/fnc/contract/ContractSupplierMapper.xml

@@ -6,12 +6,6 @@
     <delete id="deleteBySupplierIds">
     <delete id="deleteBySupplierIds">
         delete from ins_contract_supplier
         delete from ins_contract_supplier
         <where>
         <where>
-            <if test="supplierIdList != null and supplierIdList != '' and supplierIdList.size() > 0">
-                and supplier_id in
-                <foreach collection="supplierIdList" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
             <if test="id !=null  and  id !=''">
             <if test="id !=null  and  id !=''">
                 and contract_id =#{id}
                 and contract_id =#{id}
             </if>
             </if>
@@ -85,9 +79,8 @@
         left join  ins_contract  ic on ic.id =ics.contract_id
         left join  ins_contract  ic on ic.id =ics.contract_id
         <where>
         <where>
             <if test="vo.contractCode !=null  and  vo.contractCode !=''">
             <if test="vo.contractCode !=null  and  vo.contractCode !=''">
-                and ic.contract_code like concat('%',#{vo.contractCode},'%')
+                and (ic.contract_code like concat('%',#{vo.contractCode},'%') or ic.contract_name like concat('%',#{vo.contractCode},'%'))
             </if>
             </if>
-
             <if test="vo.contractIdList != null  and vo.contractIdList !='' and  vo.contractIdList.size()>0 ">
             <if test="vo.contractIdList != null  and vo.contractIdList !='' and  vo.contractIdList.size()>0 ">
                 and ic.id IN
                 and ic.id IN
                 <foreach collection="vo.contractIdList" item="id" index="index" open="(" close=")" separator=",">
                 <foreach collection="vo.contractIdList" item="id" index="index" open="(" close=")" separator=",">
@@ -95,6 +88,13 @@
                 </foreach>
                 </foreach>
             </if>
             </if>
 
 
+            <if test="vo.supplierIdList != null  and vo.supplierIdList !='' and  vo.supplierIdList.size()>0 ">
+                and ics.supplier_id IN
+                <foreach collection="vo.supplierIdList" item="id" index="index" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+
             <if test="vo.contractName !=null  and  vo.contractName !=''">
             <if test="vo.contractName !=null  and  vo.contractName !=''">
                 and ic.contract_name =#{vo.contractName}
                 and ic.contract_name =#{vo.contractName}
             </if>
             </if>