Jelajahi Sumber

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

Qchen 1 tahun lalu
induk
melakukan
7a4b17a60b
56 mengubah file dengan 1078 tambahan dan 1385 penghapusan
  1. 61 76
      sql/Online.sql
  2. TEMPAT SAMPAH
      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. 16 1
      src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java
  6. 5 0
      src/main/java/com/ydtech/modules/admin/model/po/SysAmountAuditingEntity.java
  7. 6 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java
  8. 10 0
      src/main/java/com/ydtech/modules/admin/service/SysSwitchConfigService.java
  9. 18 4
      src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java
  10. 20 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysSwitchConfigServiceImpl.java
  11. 24 4
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java
  12. 0 6
      src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java
  13. 1 1
      src/main/java/com/ydtech/modules/fnc/dao/contract/ContractSupplierMapper.java
  14. 1 1
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java
  15. 2 6
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java
  16. 0 15
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  17. 0 90
      src/main/java/com/ydtech/modules/fnc/utils/SendProjectUtils.java
  18. 48 0
      src/main/java/com/ydtech/modules/lg/PushLgLogUtils.java
  19. 30 0
      src/main/java/com/ydtech/modules/lg/PushRetry.java
  20. 70 0
      src/main/java/com/ydtech/modules/lg/SendUtils.java
  21. 7 0
      src/main/java/com/ydtech/modules/lg/dao/PushLgEntityMapper.java
  22. 56 0
      src/main/java/com/ydtech/modules/lg/model/PushLgEntity.java
  23. 11 0
      src/main/java/com/ydtech/modules/lg/service/PushLgEntityService.java
  24. 21 0
      src/main/java/com/ydtech/modules/lg/service/impl/PushLgEntityServiceImpl.java
  25. 0 6
      src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java
  26. 0 36
      src/main/java/com/ydtech/modules/order/entity/vo/sendCollect/SendCollect.java
  27. 0 47
      src/main/java/com/ydtech/modules/order/entity/vo/sendProject/SendProjectInfo.java
  28. 0 15
      src/main/java/com/ydtech/modules/sendCollect/dao/SendCollectMapper.java
  29. 0 91
      src/main/java/com/ydtech/modules/sendCollect/entity/SendCollectEntity.java
  30. 0 15
      src/main/java/com/ydtech/modules/sendProject/dao/SendProjectMapper.java
  31. 0 115
      src/main/java/com/ydtech/modules/sendProject/entity/SendProjectEntity.java
  32. 156 0
      src/main/java/com/ydtech/modules/ttqf/AmountAuditingService.java
  33. 3 14
      src/main/java/com/ydtech/modules/ttqf/LgInformationPush.java
  34. 30 23
      src/main/java/com/ydtech/modules/ttqf/RetrieveTTQFApi.java
  35. 3 1
      src/main/java/com/ydtech/modules/ttqf/SavePayOrder.java
  36. 62 0
      src/main/java/com/ydtech/modules/ttqf/TtqfDecrypt.java
  37. 44 25
      src/main/java/com/ydtech/modules/ttqf/controller/TtqfController.java
  38. 0 99
      src/main/java/com/ydtech/modules/ttqf/decrypt.java
  39. 5 0
      src/main/java/com/ydtech/modules/ttqf/entity/PaySignCallback.java
  40. 2 0
      src/main/java/com/ydtech/modules/ttqf/entity/PayTtqfLog.java
  41. 16 1
      src/main/java/com/ydtech/modules/ttqf/entity/PayUserSign.java
  42. 23 0
      src/main/java/com/ydtech/modules/ttqf/entity/response/TtqfResponse.java
  43. 5 24
      src/main/java/com/ydtech/modules/ttqf/entity/vo/PaySigningInformation.java
  44. 21 0
      src/main/java/com/ydtech/modules/ttqf/entity/vo/UserWithdrawal.java
  45. 17 0
      src/main/java/com/ydtech/modules/ttqf/entity/vo/WithdrawalFRes.java
  46. 4 5
      src/main/java/com/ydtech/modules/ttqf/service/PayUserSignService.java
  47. 10 3
      src/main/java/com/ydtech/modules/ttqf/service/TtqfService.java
  48. 23 10
      src/main/java/com/ydtech/modules/ttqf/service/impl/PayUserSignServiceImpl.java
  49. 237 14
      src/main/java/com/ydtech/modules/ttqf/service/impl/TtqfServiceImpl.java
  50. 0 196
      src/main/java/com/ydtech/utils/sendCollectUtils/SendCollectUtils.java
  51. 0 203
      src/main/java/com/ydtech/utils/sendProjectUtils/SendProjrctUtils.java
  52. 1 1
      src/main/resources/mapper/modules/esm/EsmUserImageMapper.xml
  53. 1 7
      src/main/resources/mapper/modules/fnc/contract/ContractSupplierMapper.xml
  54. 0 19
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml
  55. 0 95
      src/main/resources/mapper/modules/sendCollect/SendCollectMapper.xml
  56. 0 115
      src/main/resources/mapper/modules/sendProject/SendProjectMapper.xml

+ 61 - 76
sql/Online.sql

@@ -80,6 +80,39 @@ ALTER TABLE `agent`.`sys_user`
 -- 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`;
 
+
+
+-- 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` (
                                       `id` bigint NOT NULL,
                                       `type` varchar(255) DEFAULT NULL COMMENT '通知类型',
@@ -93,22 +126,21 @@ CREATE TABLE `pay_payment_notice` (
                                       `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                       PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 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',
                                      `org_req_id` bigint DEFAULT NULL COMMENT '最后一次请求',
                                      `name` varchar(255) 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-已实名',
                                      `sign_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`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户签约回调';
-
 CREATE TABLE `pay_ttqf_confirm` (
                                     `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',
@@ -121,7 +153,6 @@ CREATE TABLE `pay_ttqf_confirm` (
                                     `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                                     PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
 CREATE TABLE `pay_ttqf_log` (
                                 `id` varchar(255) NOT NULL,
                                 `user_id` varchar(255) DEFAULT NULL COMMENT '用户ID',
@@ -141,83 +172,37 @@ CREATE TABLE `pay_ttqf_log` (
                                 `confirm` tinyint(1) NOT NULL DEFAULT '0' COMMENT '确认打款1-已确认',
                                 `create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建者',
                                 `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+                                `sys_amount_auditing_id` varchar(255) DEFAULT NULL,
                                 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE `pay_user_sign` (
                                  `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-是',
+                                 `create_time` datetime DEFAULT NULL,
                                  PRIMARY KEY (`id`)
 ) 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;
-
-
--- 20241114 huihui --
-CREATE TABLE `send_collect_history` (
-                                        `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
-                                        `bank_number` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '银行卡号',
-                                        `amount` decimal(10,2) DEFAULT NULL COMMENT '提现金额',
-                                        `user_info` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '提现用户信息',
-                                        `collect_id` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '提现单号',
-                                        `collect_time` datetime DEFAULT NULL COMMENT '提现时间',
-                                        `send_state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '推送状态 0-失败 1-成功 2-推送中',
-                                        `fail_num` int DEFAULT NULL COMMENT '失败次数',
-                                        `tran_type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '交易类型 0-提现 1-退款',
-                                        `http_post` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'post请求',
-                                        `http_response` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求响应',
-                                        `send_uuid` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '推送uuid',
-                                        PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='推送提现记录历史表';
-
-CREATE TABLE `send_project_history` (
-                                        `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
-                                        `http_post` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'post请求',
-                                        `total_amount` decimal(10,2) DEFAULT NULL COMMENT '出口费用总金额/发放预算',
-                                        `user_name` varchar(150) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户姓名',
-                                        `user_car_num` varchar(10) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户车牌号',
-                                        `user_phone` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户手机号',
-                                        `http_response` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求响应',
-                                        `send_state` varchar(1) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '推送状态 0-推送失败 1-推送成功 2-推送中 9-未知',
-                                        `send_uuid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '唯一编码',
-                                        `fail_num` int DEFAULT NULL COMMENT '失败次数',
-                                        `referrer_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '推荐人工号',
-                                        `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '归属人工号',
-                                        `state` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT '数据是否有效 0-否 1-是',
-                                        `is_delete` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '数据是否删除 0-否 1-是',
-                                        `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建者',
-                                        `create_time` datetime DEFAULT NULL COMMENT '创建时间',
-                                        `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改者',
-                                        `update_time` datetime DEFAULT NULL COMMENT '修改时间',
-                                        `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
-                                        PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='推送用工平台服务历史记录表';
-
-
+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`;
+--  --

TEMPAT SAMPAH
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/userSign");
         notMatchList.add("/ttqf/aa/*");
+        notMatchList.add("/ttqf/**");
 
         return new SaInterceptor(handler -> {
             // 指定一条 match 规则

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

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

+ 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);
 
-    @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);
 }
 

+ 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")
     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)
     private String identityTime;
 
+    /**
+     * 机构来源(1-渠道、2-个代)
+     */
+    @TableField(exist = false)
+    private String managementSource;
+
 }

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

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

+ 18 - 4
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -24,9 +24,10 @@ import com.ydtech.modules.admin.service.SysAmountAuditingService;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.base.controller.BaseController;
 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.utils.StringUtils;
-import com.ydtech.utils.sendCollectUtils.SendCollectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,7 +54,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
 
     @Autowired
-    private SendCollectUtils sendCollectUtils;
+    private PushLgEntityService pushLgEntityService;
 
     /**
      *  @version
@@ -129,8 +130,6 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
             BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
             sysAmountAuditingEntity.setCreateTime(null);
             baseMapper.updateById(sysAmountAuditingEntity);
-            //推送提现记录
-//            sendCollectUtils.sendCollect(sysAmountAuditingVo);
             //通过审核表id查询历史记录表
             LambdaQueryWrapper<SysUserAccountHistory> lqw = new LambdaQueryWrapper<>();
             lqw.eq(SysUserAccountHistory::getAuditiingId, sysAmountAuditingEntity.getId());
@@ -143,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
     public SysAmountAuditingEntity getByUserId(String userId,String amountStatus) {
         return baseMapper.getByUserId(userId,amountStatus);

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

@@ -1,5 +1,6 @@
 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.service.impl.ServiceImpl;
 import com.github.pagehelper.util.StringUtil;
@@ -22,6 +23,7 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,6 +43,10 @@ public class SysSwitchConfigServiceImpl extends ServiceImpl<SysSwitchConfigMappe
 
     private final InsFeeOrderConfigService insFeeOrderConfigService;
 
+
+    @Autowired
+    private SysSwitchConfigMapper configMapper;
+
     @Override
     public BigDecimal getEnterProportion(String deptId, Integer entryStatus) {
         if (entryStatus != 2) {
@@ -177,6 +183,20 @@ public class SysSwitchConfigServiceImpl extends ServiceImpl<SysSwitchConfigMappe
     public boolean xysqDisplaySwitches() {
         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;
 
-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.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.core.page.PageRequest;
 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.WithdrawTypeConstants;
 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.model.SysDept;
 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.protocols.entity.po.InsFeeOrderNew;
 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.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -43,7 +45,6 @@ import org.springframework.util.CollectionUtils;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author Administrator
@@ -94,6 +95,9 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     @Autowired
     private SysSwitchConfigService sysSwitchConfigService;
 
+    @Autowired
+    private TtqfService ttqfService;
+
 
     @Override
     @Transactional
@@ -288,6 +292,13 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     @Transactional
     public HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo) {
         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 添加电销组员开关
         boolean flag = sysSwitchConfigService.dxtxDisplaySwitches();
         if(flag){
@@ -404,6 +415,15 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         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
      * @author: hxl

+ 0 - 6
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -16,7 +16,6 @@ import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
 import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
-import com.ydtech.modules.fnc.utils.SendProjectUtils;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.order.constants.OrderFeeAuditHistroy;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -68,9 +67,6 @@ public class CarSettleController extends BaseController {
 
     }
 
-    @Autowired
-    private SendProjectUtils sendProjectUtils;
-
     /**
      * 根据费用审核状态查询订单 auditStatus
      *
@@ -154,8 +150,6 @@ public class CarSettleController extends BaseController {
                 e.printStackTrace();
                 return HttpResult.error("系统异常");
             }
-            //异步处理推送用工账务平台发放服务
-            sendProjectUtils.sendProject(insOrderNo);
             return HttpResult.ok("审核成功");
         } else {
             return HttpResult.error("订单号有误-未承保");

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

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

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

@@ -36,7 +36,7 @@ public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMap
     @Override
     @Transactional
     public void saveAndUpdate(List<String> supplierIdList, String id) {
-        baseMapper.deleteBySupplierIds(supplierIdList,id);
+        baseMapper.deleteBySupplierIds(id);
         List<ContractSupplierEntity> inserList = new ArrayList<>();
         String deptId = BaseController.getDeptId();
         String userId = BaseController.getUserId();

+ 2 - 6
src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java

@@ -125,13 +125,9 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
             }
 
             baseMapper.updateById(contractEntity);
-            if (contractDto.getSupplierIdList() != null && !contractDto.getSupplierIdList().isEmpty()) {
-                contractSupplierService.saveAndUpdate(contractDto.getSupplierIdList(), contractEntity.getId());
-            }
+            contractSupplierService.saveAndUpdate(contractDto.getSupplierIdList(), contractEntity.getId());
 
-            if (contractDto.getFilePathIdList() != null) {
-                contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
-            }
+            contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
         }
     }
 

+ 0 - 15
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -45,19 +45,15 @@ import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.order.entity.vo.OrderVo;
-import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewDistribution;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewDistributionService;
 import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
-import com.ydtech.modules.sendProject.dao.SendProjectMapper;
-import com.ydtech.modules.sendProject.entity.SendProjectEntity;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
-import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.redisson.Redisson;
@@ -143,22 +139,11 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     @Resource
     private InsFeeOrderNewDistributionService insFeeOrderNewDistributionService;
 
-    @Autowired
-    private SendProjrctUtils sendProjrctUtils;
-
     @Autowired
     private SysUserRoleService sysUserRoleService;
 
-    @Autowired
-    private SendProjectMapper sendProjectMapper;
-
     private ExecutorService executorService= Executors.newCachedThreadPool();
 
-    private static final String STRING_0 = "0";
-    private static final String STRING_1 = "1";
-    private static final String STRING_2 = "2";
-    private static final Integer INTEGER_0 = 0;
-
 
     public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper,
                                   InsDeptFeeService insDeptFeeService, EsmUserReferrerService esmUserReferrerService,

+ 0 - 90
src/main/java/com/ydtech/modules/fnc/utils/SendProjectUtils.java

@@ -1,90 +0,0 @@
-package com.ydtech.modules.fnc.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
-import com.ydtech.modules.order.entity.vo.OrderVo;
-import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
-import com.ydtech.modules.order.service.InsOrdersService;
-import com.ydtech.modules.sendProject.dao.SendProjectMapper;
-import com.ydtech.modules.sendProject.entity.SendProjectEntity;
-import com.ydtech.utils.sendProjectUtils.SendProjrctUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-@Slf4j
-@Service
-public class SendProjectUtils {
-
-    @Autowired
-    private InsOrdersService insOrdersService;
-
-    @Autowired
-    private SendProjectMapper sendProjectMapper;
-
-    @Autowired
-    private SendProjrctUtils sendProjrctUtils;
-
-    private static final String STRING_0 = "0";
-    private static final String STRING_1 = "1";
-    private static final String STRING_2 = "2";
-    private static final Integer INTEGER_0 = 0;
-
-    @Async
-    public void sendProject(String orderNo) {
-        SendProjectInfo sendProjectInfo = new SendProjectInfo();
-        OrderVo data = insOrdersService.getByCompanyId(orderNo, "accountingUser").getData();
-        List<FeeOrderNewVo.ExportFee> exportFee = data.getFeeOrderNewVo().getExportFee();
-
-        for (FeeOrderNewVo.ExportFee fee : exportFee) {
-            if ("合计".equals(fee.getInsuranceType())) {
-                sendProjectInfo.setGiveBudget(fee.getTotalAmount());
-            }
-        }
-
-        StringBuffer uuid = new StringBuffer();
-        uuid.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))
-                .append(UUID.randomUUID());
-        sendProjectInfo.setReferrerNo(data.getReferrerNo());
-        sendProjectInfo.setUserId(data.getUserid());
-        sendProjectInfo.setUserPhone(data.getApplyinfo().getString("mobile"));
-        sendProjectInfo.setUserCarNum(data.getLicenseno());
-        sendProjectInfo.setUserName(data.getInsuredname());
-        sendProjectInfo.setUuid(uuid.toString());
-
-
-
-        SendProjectEntity addSendProject = new SendProjectEntity();
-        addSendProject.setTotalAmount(sendProjectInfo.getGiveBudget());
-        addSendProject.setUserName(sendProjectInfo.getUserName());
-        addSendProject.setUserCarNum(sendProjectInfo.getUserCarNum());
-        addSendProject.setUserPhone(sendProjectInfo.getUserPhone());
-        addSendProject.setSendState(STRING_2);
-        addSendProject.setSendUuid(sendProjectInfo.getUuid());
-        addSendProject.setUserId(sendProjectInfo.getUserId());
-        addSendProject.setReferrerNo(sendProjectInfo.getReferrerNo());
-        addSendProject.setFailNum(INTEGER_0);
-        addSendProject.setState(STRING_1);
-        addSendProject.setIsDelete(STRING_0);
-        Date date = new Date();
-        addSendProject.setCreateTime(date);
-        addSendProject.setUpdateTime(date);
-        try {
-            log.info("新增推送服务数据库入参:{}", JSON.toJSON(addSendProject));
-            sendProjectMapper.addSendProjectInfo(addSendProject);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("新增推送服务数据库报错:{}", e.getMessage());
-        }
-
-        sendProjrctUtils.firstSendProject(sendProjectInfo);
-
-    }
-
-}

+ 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);
+    }
+}

+ 0 - 6
src/main/java/com/ydtech/modules/order/dao/InsOrdersMapper.java

@@ -7,7 +7,6 @@ import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.dto.TelemarketingAuditOrderDTO;
 import com.ydtech.modules.order.entity.vo.*;
-import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
 import com.ydtech.modules.order.entity.vo.telemarketing.TelemarketingAuditOrderQueryVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -166,9 +165,4 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
      * @return 被保人列表
      */
     List<String> queryInsured(@Param("queryInsuredInOrderVo") QueryLicenseInOrderVo queryInsuredInOrderVo, String userId);
-
-    /**
-     * 推送服务查询客户信息
-     */
-    SendProjectInfo getOrderByCompanyId(@Param("companyId") String companyId);
 }

+ 0 - 36
src/main/java/com/ydtech/modules/order/entity/vo/sendCollect/SendCollect.java

@@ -1,36 +0,0 @@
-package com.ydtech.modules.order.entity.vo.sendCollect;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-@Data
-public class SendCollect implements Serializable {
-
-    private static final long serialVersionUID = 1096616855277490184L;
-
-    /** 收款人 */
-    private String payee;
-
-    /** 收款账户 */
-    private String receivingAccount;
-
-    /** 提取金额 */
-    private BigDecimal extractMoney;
-
-    /** 服务费 */
-    private BigDecimal serviceCharge;
-
-    /** 交易类型0-提现;1退款 */
-    private String tranType;
-
-    /** 掌柜唯一ID */
-    private String zgUuid;
-
-    /**
-     * 提现时间
-     */
-    private Date applicationTime;
-}

+ 0 - 47
src/main/java/com/ydtech/modules/order/entity/vo/sendProject/SendProjectInfo.java

@@ -1,47 +0,0 @@
-package com.ydtech.modules.order.entity.vo.sendProject;
-
-import com.ydtech.modules.sendProject.entity.SendProjectEntity;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-
-@Data
-public class SendProjectInfo extends SendProjectEntity implements Serializable {
-
-    private static final long serialVersionUID = 4878818074979842364L;
-
-    /** 发放预算 */
-    private BigDecimal giveBudget;
-
-    /**
-     * 推送uuid
-     */
-    private String uuid;
-
-    /**
-     * 用户姓名
-     */
-    private String name;
-
-    /**
-     * 用户车牌号
-     */
-    private String userCarNum;
-
-    /**
-     * 用户电话号
-     */
-    private String mobile;
-
-    /**
-     * 推荐人工号
-     */
-    private String referrerNo;
-
-    /**
-     * 归属人工号
-     */
-    private String userId;
-
-}

+ 0 - 15
src/main/java/com/ydtech/modules/sendCollect/dao/SendCollectMapper.java

@@ -1,15 +0,0 @@
-package com.ydtech.modules.sendCollect.dao;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ydtech.modules.sendCollect.entity.SendCollectEntity;
-
-import java.util.List;
-
-public interface SendCollectMapper extends BaseMapper<SendCollectEntity> {
-
-    void addSendCollectInfo(SendCollectEntity sendCollectEntity);
-
-    void updateSendCollectInfo(SendCollectEntity sendCollectEntity);
-
-    List<SendCollectEntity> getSendCollectFailInfo();
-}

+ 0 - 91
src/main/java/com/ydtech/modules/sendCollect/entity/SendCollectEntity.java

@@ -1,91 +0,0 @@
-package com.ydtech.modules.sendCollect.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-@Data
-public class SendCollectEntity implements Serializable {
-
-    private static final long serialVersionUID = -9190669795077605460L;
-
-    /**
-     * 主键
-     */
-    @ApiModelProperty("主键")
-    @TableId(value = "id")
-    private Long id;
-
-    /**
-     * 银行卡号
-     */
-    @ApiModelProperty("银行卡号")
-    @TableField(value = "bank_number")
-    private String bankNumber;
-
-    /**
-     * 提现金额
-     */
-    @ApiModelProperty("提现金额")
-    @TableField(value = "amount")
-    private BigDecimal amount;
-
-    /**
-     * 提现用户信息
-     */
-    @ApiModelProperty("提现用户信息")
-    @TableField(value = "user_info")
-    private String userInfo;
-
-    /**
-     * 提现单号
-     */
-    @ApiModelProperty("提现单号")
-    @TableField(value = "collect_id")
-    private String collectId;
-
-    /**
-     * 提现时间
-     */
-    @ApiModelProperty("提现时间")
-    @TableField(value = "collect_time")
-    private Date collectTime;
-
-    /**
-     * 推送状态
-     */
-    @ApiModelProperty("推送状态")
-    @TableField(value = "send_state")
-    private String sendState;
-
-    /**
-     * 失败次数
-     */
-    @ApiModelProperty("失败次数")
-    @TableField(value = "fail_num")
-    private Integer failNum;
-
-    /**
-     * 交易类型
-     */
-    @ApiModelProperty("交易类型")
-    @TableField(value = "tran_type")
-    private String tranType;
-
-    @ApiModelProperty("post请求")
-    @TableField(value = "http_post")
-    private String httpPost;
-
-    @ApiModelProperty("请求响应")
-    @TableField(value = "http_response")
-    private String httpResponse;
-
-    @ApiModelProperty("推送uuid")
-    @TableField(value = "send_uuid")
-    private String sendUuid;
-}

+ 0 - 15
src/main/java/com/ydtech/modules/sendProject/dao/SendProjectMapper.java

@@ -1,15 +0,0 @@
-package com.ydtech.modules.sendProject.dao;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ydtech.modules.sendProject.entity.SendProjectEntity;
-
-import java.util.List;
-
-public interface SendProjectMapper extends BaseMapper<SendProjectEntity> {
-
-    void addSendProjectInfo(SendProjectEntity sendProjectEntity);
-
-    void updateSendProjectInfo(SendProjectEntity sendProjectEntity);
-
-    List<SendProjectEntity> getSendFailInfo();
-}

+ 0 - 115
src/main/java/com/ydtech/modules/sendProject/entity/SendProjectEntity.java

@@ -1,115 +0,0 @@
-package com.ydtech.modules.sendProject.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
-@TableName("send_project_history")
-@Data
-@ToString
-@EqualsAndHashCode
-@AllArgsConstructor
-@NoArgsConstructor
-public class SendProjectEntity implements Serializable {
-
-    private static final long serialVersionUID = -6917312238129061700L;
-
-    @ApiModelProperty("主键")
-    @TableId(value = "id")
-    private Integer id;
-
-    @ApiModelProperty("post请求")
-    @TableField(value = "http_post")
-    private String httpPost;
-
-    @ApiModelProperty("出口费用总金额/发放预算")
-    @TableField(value = "total_amount")
-    private BigDecimal totalAmount;
-
-    @ApiModelProperty("用户姓名")
-    @TableField(value = "user_name")
-    private String userName;
-
-    @ApiModelProperty("用户车牌号")
-    @TableField(value = "user_car_num")
-    private String userCarNum;
-
-    @ApiModelProperty("用户手机号")
-    @TableField(value = "user_phone")
-    private String userPhone;
-
-    /**
-     * sendState=9 为报错信息  sendState=0 为推送失败信息
-     */
-    @ApiModelProperty("请求响应")
-    @TableField(value = "http_response")
-    private String httpResponse;
-
-    /**
-     * 推送状态 0-推送失败 1-推送成功 2-推送中 9-未知
-     */
-    @ApiModelProperty("推送状态")
-    @TableField(value = "send_state")
-    private String sendState;
-
-    @ApiModelProperty("唯一编码")
-    @TableField(value = "send_uuid")
-    private String sendUuid;
-
-    @ApiModelProperty("失败次数")
-    @TableField(value = "fail_num")
-    private Integer failNum;
-
-    @ApiModelProperty("推荐人工号")
-    @TableField(value = "referrer_no")
-    private String referrerNo;
-
-    @ApiModelProperty("归属人工号")
-    @TableField(value = "user_id")
-    private String userId;
-
-    /**
-     * 数据是否有效 0-否 1-是
-     */
-    @ApiModelProperty("数据是否有效")
-    @TableField(value = "state")
-    private String state;
-
-    /**
-     * 数据是否删除 0-否 1-是
-     */
-    @ApiModelProperty("数据是否删除")
-    @TableField(value = "is_delete")
-    private String isDelete;
-
-    @ApiModelProperty("创建者")
-    @TableField(fill = FieldFill.INSERT)
-    private String createBy;
-
-    @ApiModelProperty("创建时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @TableField(fill = FieldFill.INSERT)
-    private Date createTime;
-
-    @ApiModelProperty("修改者")
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private String updateBy;
-
-    @ApiModelProperty("修改时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Date updateTime;
-
-    @ApiModelProperty("备注")
-    @TableField(value = "remark")
-    private String remark;
-
-}

+ 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.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.utils.HttpUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -12,7 +10,6 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.List;
 
 @Slf4j
 @Component
@@ -22,16 +19,8 @@ public class LgInformationPush {
     private TTFQConfig config;
 
     @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));
         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.response.*;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.esm.model.vo.EsmUserImageQueryVo;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 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.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -64,16 +64,16 @@ public class RetrieveTTQFApi {
     private void setConfig(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())){
+            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 {
-            //  未签约的用户先签约后进行打款
-            return pres(bankCard);
+            return false;
         }
     }
 
@@ -204,7 +204,7 @@ public class RetrieveTTQFApi {
         }else {
             throw new SystemException("用户身份证有效日期不全,请检查");
         }
-        presignModel.setNotifyUrl("");
+        presignModel.setNotifyUrl(PayConstantStatus.getUserSignNotifyUrl());
         for (EsmUserImageQueryVo item : esmUserImageQueryVo) {
             try {
                 if (StringUtils.isEmpty(item.getPath())){
@@ -230,12 +230,11 @@ public class RetrieveTTQFApi {
         request.setRequestId(System.currentTimeMillis() + "");
         PresignResponse response = tangClient.execute(request);
         if(response.isSuccess()) {
-            SpringUtil.getBean(LgInformationPush.class).push(bankCard.getUserId(),presignModel,esmUserImageQueryVo);
             log.info("成功 ====>Pressing {}", response.getResultModel());
-            return contractH5();
+            return contractH5(bankCard.getIdentity());
         } else {
             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()
                 .requestId(System.currentTimeMillis() + "").bizModel(ContractH5Model.builder()
-                        .idCardNo("11010219900131252X").mchReturnUrl(PayConstantStatus.getUserSignNotifyUrl()).build())
+                        .idCardNo(idCardNo).mchReturnUrl(PayConstantStatus.getUserSignNotifyUrl()).build())
                 .build());
         if(response.isSuccess()) {
             //  返回当前签约H5页面
@@ -272,7 +271,7 @@ public class RetrieveTTQFApi {
             log.info("成功 ====>ContractH5 {}", response.getResultModel());
             return signUrl;
         } else {
-            log.error("失败");
+            log.error("调起用户签约信息异常");
         }
         return "";
     }
@@ -287,7 +286,7 @@ public class RetrieveTTQFApi {
                 .build();
         OrderAddResponse response = tangClient.execute(addRequest);
         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;
     }
 
@@ -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 {
 
     @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();
         ttqfLog.setSedStatus(response.isSuccess());
         ttqfLog.setApiUrl(url);
@@ -35,6 +35,8 @@ public class SavePayOrder {
         ttqfLog.setAmount(response.getResultModel().getAmount());
         ttqfLog.setFeeAmount(response.getResultModel().getFeeAmount());
         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);
     }
 

+ 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;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.ttqf.QuartzManager;
 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 org.springframework.web.bind.annotation.*;
+
 import javax.annotation.Resource;
-import java.util.HashMap;
 
 
 @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
@@ -36,21 +71,17 @@ public class TtqfController {
      */
 
     @PostMapping("paymentNotice")
-    public JSONObject paymentNotice(@RequestBody String obj){
+    public TtqfResponse paymentNotice(@RequestBody String obj){
         return ttqfService.paymentNotice(obj);
     }
 
-
-
-
     /**
      * 接收用户签约回调
      * @param obj
      * @return
      */
-
     @PostMapping("userSign")
-    public JSONObject userSign(@RequestBody String obj){
+    public TtqfResponse userSign(@RequestBody String 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.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
+@TableName("pay_sign_callback")
 public class PaySignCallback {
 
     @TableId(type = IdType.ASSIGN_ID)
@@ -31,5 +35,6 @@ public class PaySignCallback {
 
     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 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.Data;
 
+import java.util.Date;
+
 @Data
 @TableName("pay_user_sign")
 @Builder
@@ -20,14 +22,27 @@ public class PayUserSign {
      */
     private String userId;
 
+    /**
+     * 用户身份证号
+     */
+    private String identity;
+
     /**
      * 是否签约
      */
-    private boolean sign;
+    private int sign;
+
+
+    /**
+     * 是认证状态:0-未实名1-已实名
+     */
+    private int authStatus;
 
     /**
      * 是否线上支付
      */
     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;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
-import java.util.Date;
-
 @Data
 public class PaySigningInformation {
 
+    private String name;
 
     /** 身份证号 */
     private String idCardNo;
@@ -18,31 +16,14 @@ public class PaySigningInformation {
     /** 银行卡号 */
     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;
 
+import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 
 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;
 
-import com.alibaba.fastjson.JSONObject;
 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 {
 
@@ -10,16 +11,22 @@ public interface TtqfService {
     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 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.ydtech.modules.ttqf.dao.PayUserSignMapper;
+import com.ydtech.modules.ttqf.entity.PaySignCallback;
 import com.ydtech.modules.ttqf.entity.PayUserSign;
 import com.ydtech.modules.ttqf.service.PayUserSignService;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.Objects;
 
 @Service
@@ -19,26 +21,37 @@ public class PayUserSignServiceImpl implements PayUserSignService {
 
     @Async
     @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
-    public PayUserSign selectOne(String userId) {
+    public PayUserSign selectOne(String identity,String userId) {
         LambdaQueryWrapper<PayUserSign> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PayUserSign::getUserId,userId);
+        queryWrapper.eq(PayUserSign::getIdentity,identity).eq(PayUserSign::getUserId,userId);
         return signMapper.selectOne(queryWrapper);
     }
 
+
     @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;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ipaynow.jiaxin.response.BillDownloadResponse;
 import com.ipaynow.jiaxin.response.ReceiptlDownloadResponse;
 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.RetrieveTTQFApi;
+import com.ydtech.modules.ttqf.TtqfDecrypt;
 import com.ydtech.modules.ttqf.dao.PaySignCallbackMapper;
 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.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.TtqfService;
+import com.ydtech.utils.StringUtils;
 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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Objects;
 
 
 @Slf4j
@@ -23,15 +52,38 @@ import org.springframework.stereotype.Service;
 public class TtqfServiceImpl implements TtqfService {
 
     @Autowired
-    private PayTtqfLogMapper ttqfMapper;
+    private PayTtqfLogMapper logMapper;
+
+    @Autowired
+    private SysSwitchConfigService sysSwitchConfigService;
 
     @Autowired
     private PayUserSignService userSignService;
 
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
 
     @Autowired
     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
     public Object getUserPay(String userId) {
 
@@ -49,26 +101,109 @@ public class TtqfServiceImpl implements TtqfService {
     }
 
     @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
     public HttpResult billDownload(Integer type, String date) {
@@ -88,5 +223,93 @@ public class TtqfServiceImpl implements TtqfService {
         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);
+    }
+
+
 
 }

+ 0 - 196
src/main/java/com/ydtech/utils/sendCollectUtils/SendCollectUtils.java

@@ -1,196 +0,0 @@
-package com.ydtech.utils.sendCollectUtils;
-
-import com.alibaba.fastjson.JSON;
-import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
-import com.ydtech.modules.order.entity.vo.sendCollect.SendCollect;
-import com.ydtech.modules.sendCollect.dao.SendCollectMapper;
-import com.ydtech.modules.sendCollect.entity.SendCollectEntity;
-import com.ydtech.utils.StringUtils;
-import com.ydtech.utils.scheduledFutureUtil.ScheduledFutureUtil;
-import lombok.extern.slf4j.Slf4j;
-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.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-@Slf4j
-@Service
-public class SendCollectUtils{
-
-    @Autowired
-    private SendCollectMapper sendCollectMapper;
-
-    @Autowired
-    private ScheduledFutureUtil scheduledFutureUtil;
-
-    @Value("${sendMessage-zg-yggl-IP}")
-    private String sendMessageIP;
-
-    private Integer num = 0;
-
-    private static final String CORN = "0 */1 * * * ?";
-    private static final String STRING_0 = "0";
-    private static final String STRING_1 = "1";
-    private static final String STRING_2 = "2";
-    private static final Integer INTEGER_0 = 0;
-    private static final String RESPONSE_SUCCESS = "200";
-
-    @Async
-    public void send(SendCollectEntity sendCollectEntity, SendCollect sendCollect) {
-
-        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
-        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
-
-        // 创建Post请求
-        HttpPost httpPost = new HttpPost(sendMessageIP + "withdrawal/record/acceptPushWithdrawalData");
-        // 我这里利用阿里的fastjson,将Object转换为json字符串;
-        // (需要导入com.alibaba.fastjson.JSON包)
-        String jsonString = JSON.toJSONString(sendCollect);
-
-        StringEntity entity = new StringEntity(jsonString, "UTF-8");
-
-        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
-        httpPost.setEntity(entity);
-        httpPost.setHeader("Content-Type", "application/json;charset=utf8");
-
-        sendCollectEntity.setHttpPost(httpPost.toString());
-
-        // 响应模型
-        CloseableHttpResponse response = null;
-
-        try {
-
-            // 由客户端执行(发送)Post请求
-            response = httpClient.execute(httpPost);
-            // 从响应模型中获取响应实体
-            HttpEntity responseEntity = response.getEntity();
-
-
-            //从响应实体中截取状态码
-            String string = EntityUtils.toString(responseEntity);
-            sendCollectEntity.setHttpResponse(string);
-            String responseString = string.substring(string.lastIndexOf(":") + 1);
-            String responseCode = responseString.substring(0, responseString.length() - 1);
-            log.info("响应状态为:{}", response.getStatusLine());
-
-            if (RESPONSE_SUCCESS.equals(responseCode)) {
-                sendCollectEntity.setFailNum(null);
-                sendCollectEntity.setSendState(STRING_1);
-                log.info("修改send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
-                sendCollectMapper.updateSendCollectInfo(sendCollectEntity);
-            } else {
-                sendCollectEntity.setSendState(STRING_0);
-                log.info("修改send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
-                sendCollectMapper.updateSendCollectInfo(sendCollectEntity);
-            }
-
-        } catch (Exception e) {
-//            SendCollectUtils sendCollectUtils = new SendCollectUtils();
-//            scheduledFutureUtil.startJob(sendCollectUtils, CORN);
-//            e.printStackTrace();
-        } finally {
-            try {
-                // 释放资源
-                if (httpClient != null) {
-                    httpClient.close();
-                }
-                if (response != null) {
-                    response.close();
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    public void sendCollect(SysAmountAuditingVo sysAmountAuditingVo) {
-
-        StringBuilder sendUuid = new StringBuilder();
-        sendUuid.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))
-                .append(UUID.randomUUID());
-
-        StringBuilder userInfo = new StringBuilder();
-        userInfo.append(sysAmountAuditingVo.getUserName())
-                .append("-")
-                .append(sysAmountAuditingVo.getUserId());
-        SendCollect sendCollect = new SendCollect();
-        sendCollect.setZgUuid(sysAmountAuditingVo.getId());
-        sendCollect.setApplicationTime(sysAmountAuditingVo.getCreateTime());
-        sendCollect.setExtractMoney(sysAmountAuditingVo.getAmount());
-        sendCollect.setReceivingAccount(sysAmountAuditingVo.getBankNumber());
-        sendCollect.setTranType(STRING_0);
-        sendCollect.setPayee(userInfo.toString());
-
-        SendCollectEntity sendCollectEntity = new SendCollectEntity();
-        sendCollectEntity.setCollectId(sysAmountAuditingVo.getId());
-        sendCollectEntity.setSendState(STRING_2);
-        sendCollectEntity.setCollectTime(sysAmountAuditingVo.getCreateTime());
-        sendCollectEntity.setAmount(sysAmountAuditingVo.getAmount());
-        sendCollectEntity.setBankNumber(sysAmountAuditingVo.getBankNumber());
-        sendCollectEntity.setUserInfo(userInfo.toString());
-        sendCollectEntity.setFailNum(INTEGER_0);
-        sendCollectEntity.setSendUuid(sendUuid.toString());
-        log.info("新增推送send_collect_history数据库入参:{}", JSON.toJSONString(sendCollectEntity));
-        sendCollectMapper.addSendCollectInfo(sendCollectEntity);
-
-        send(sendCollectEntity,sendCollect);
-    }
-
-    public void sendCollectRetry() {
-        log.info("推送提现历史补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        List<SendCollectEntity> sendCollectFailInfoList = new ArrayList<SendCollectEntity>();
-        try {
-            sendCollectFailInfoList = sendCollectMapper.getSendCollectFailInfo();
-            log.info("查询send_collect_history数据库出参:{}", JSON.toJSON(sendCollectFailInfoList));
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("查询send_collect_history数据库报错:{}", e.getMessage());
-        }
-        if (sendCollectFailInfoList != null && !sendCollectFailInfoList.isEmpty()) {
-            for (SendCollectEntity sendCollectEntity : sendCollectFailInfoList) {
-                if (sendCollectEntity == null && StringUtils.isNullOrEmpty(sendCollectEntity)) {
-                    continue;
-                }
-                if (sendCollectEntity.getFailNum() != null && sendCollectEntity.getFailNum() < 3) {
-                    Integer failNum = sendCollectEntity.getFailNum();
-                    failNum = ++failNum;
-                    sendCollectEntity.setFailNum(failNum);
-
-                    SendCollect sendCollect = new SendCollect();
-                    sendCollect.setZgUuid(sendCollectEntity.getCollectId());
-                    sendCollect.setApplicationTime(sendCollectEntity.getCollectTime());
-                    sendCollect.setExtractMoney(sendCollectEntity.getAmount());
-                    sendCollect.setReceivingAccount(sendCollectEntity.getBankNumber());
-                    sendCollect.setTranType(sendCollectEntity.getTranType());
-                    sendCollect.setPayee(sendCollectEntity.getUserInfo());
-                    send(sendCollectEntity, sendCollect);
-                }
-            }
-        }
-    }
-
-//    @Override
-//    public void run() {
-//        num++;
-//        log.info("第{}次重新推送提现记录消息", num);
-//        this.sendCollectRetry();
-//        if (num == 3) {
-//            //停止定时任务
-//            scheduledFutureUtil.endJob("com.ydtech.utils.scheduledFutureUtil");
-//        }
-//    }
-}

+ 0 - 203
src/main/java/com/ydtech/utils/sendProjectUtils/SendProjrctUtils.java

@@ -1,203 +0,0 @@
-package com.ydtech.utils.sendProjectUtils;
-
-import com.alibaba.fastjson.JSON;
-import com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo;
-import com.ydtech.modules.sendProject.dao.SendProjectMapper;
-import com.ydtech.modules.sendProject.entity.SendProjectEntity;
-import com.ydtech.utils.StringUtils;
-import com.ydtech.utils.scheduledFutureUtil.ScheduledFutureUtil;
-import com.ydtech.utils.sendCollectUtils.SendCollectUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpEntity;
-import org.apache.http.ParseException;
-import org.apache.http.client.ClientProtocolException;
-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.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-@Slf4j
-@Component
-public class SendProjrctUtils{
-
-    @Autowired
-    private SendProjectMapper sendProjectMapper;
-
-    @Autowired
-    private ScheduledFutureUtil scheduledFutureUtil;
-
-    @Value("${sendMessage-zg-yggl-IP}")
-    private String sendMessageIP;
-
-    private Integer num = 0;
-
-    private static final String CORN = "0 */1 * * * ?";
-    private static final String STRING_0 = "0";
-    private static final String STRING_1 = "1";
-    private static final String STRING_9 = "9";
-    private static final String RESPONSE_SUCCESS = "200";
-
-    public Map<String, String> sendProject(SendProjectInfo sendProjectInfo) {
-
-        // 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
-        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
-
-        // 创建Post请求
-        HttpPost httpPost = new HttpPost(sendMessageIP + "system/record/receiveDistributeServices");
-        // 我这里利用阿里的fastjson,将Object转换为json字符串;
-        // (需要导入com.alibaba.fastjson.JSON包)
-        String jsonString = JSON.toJSONString(sendProjectInfo);
-
-        StringEntity entity = new StringEntity(jsonString, "UTF-8");
-
-        // post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
-        httpPost.setEntity(entity);
-        httpPost.setHeader("Content-Type", "application/json;charset=utf8");
-        sendProjectInfo.setHttpPost(httpPost.toString());
-
-        // 响应模型
-        CloseableHttpResponse response = null;
-        String responseCode = new String();
-
-        try {
-
-            // 由客户端执行(发送)Post请求
-            response = httpClient.execute(httpPost);
-            // 从响应模型中获取响应实体
-            HttpEntity responseEntity = response.getEntity();
-
-            //从响应实体中截取状态码
-            String string = EntityUtils.toString(responseEntity);
-            sendProjectInfo.setHttpResponse(string);
-            String responseString = string.substring(string.lastIndexOf(":") + 1);
-            responseCode = responseString.substring(0, responseString.length() - 1);
-
-
-            log.info("响应状态为:{}", response.getStatusLine());
-        } catch (Exception e) {
-            sendProjectInfo.setHttpResponse(e.getMessage());
-            sendProjectInfo.setSendState(STRING_9);
-            updateSendProjectInfo(sendProjectInfo);
-//            SendProjrctUtils sendProjrctUtils = new SendProjrctUtils();
-//            scheduledFutureUtil.startJob(sendProjrctUtils, CORN);
-            e.printStackTrace();
-        } finally {
-            try {
-                // 释放资源
-                if (httpClient != null) {
-                    httpClient.close();
-                }
-                if (response != null) {
-                    response.close();
-                }
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-
-
-        final String code = responseCode;
-        return new HashMap<String, String>() {{
-            put("responseCode", code);
-        }};
-    }
-
-    public void firstSendProject(SendProjectInfo sendProjectInfo) {
-        log.info("首次推送服务接口入参:{}", sendProjectInfo);
-        Map<String, String> responseMap = new HashMap<>();
-        responseMap = sendProject(sendProjectInfo);
-        if (RESPONSE_SUCCESS.equals(responseMap.get("responseCode"))) {
-            sendProjectInfo.setSendState(STRING_1);
-            updateSendProjectInfo(sendProjectInfo);
-        } else {
-            sendProjectInfo.setSendState(STRING_0);
-            updateSendProjectInfo(sendProjectInfo);
-        }
-    }
-
-    public void sendProjectRetry(SendProjectInfo sendProjectInfo) {
-        Map<String, String> responseMap = new HashMap<>();
-        responseMap = sendProject(sendProjectInfo);
-        if (RESPONSE_SUCCESS.equals(responseMap.get("responseCode"))) {
-            sendProjectInfo.setSendState(STRING_1);
-            updateSendProjectInfo(sendProjectInfo);
-        } else {
-            Integer failNum = sendProjectInfo.getFailNum();
-            failNum = ++failNum;
-            sendProjectInfo.setFailNum(failNum);
-            sendProjectInfo.setSendState(STRING_0);
-            updateSendProjectInfo(sendProjectInfo);
-        }
-
-    }
-
-    private void updateSendProjectInfo(SendProjectInfo sendProjectInfo) {
-        SendProjectEntity updateSendProject = new SendProjectEntity();
-        if (sendProjectInfo.getFailNum() != null) {
-            Integer failNum = sendProjectInfo.getFailNum();
-            failNum = ++failNum;
-            updateSendProject.setFailNum(failNum);
-        }
-        updateSendProject.setSendUuid(sendProjectInfo.getUuid());
-        updateSendProject.setSendState(sendProjectInfo.getSendState());
-        updateSendProject.setHttpPost(sendProjectInfo.getHttpPost());
-        updateSendProject.setHttpResponse(sendProjectInfo.getHttpResponse());
-        updateSendProject.setUpdateTime(new Date());
-        try {
-            log.info("修改推送服务数据库入参:{}", JSON.toJSON(updateSendProject));
-            sendProjectMapper.updateSendProjectInfo(updateSendProject);
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("修改推送服务数据库报错:{}", e.getMessage());
-        }
-    }
-
-    public void sendProjectRetry() {
-        log.info("推送服务补偿启动,启动时间:{}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
-        List<SendProjectEntity> sendFailInfo = new ArrayList<SendProjectEntity>();
-        try {
-            sendFailInfo = sendProjectMapper.getSendFailInfo();
-            log.info("查询send_project_history数据库出参:{}", JSON.toJSON(sendFailInfo));
-        } catch (Exception e) {
-            e.printStackTrace();
-            log.error("查询send_project_history数据库报错:{}", e.getMessage());
-        }
-        if (sendFailInfo != null && !sendFailInfo.isEmpty()) {
-            for (SendProjectEntity sendProjectEntity : sendFailInfo) {
-                if (sendProjectEntity == null && StringUtils.isNullOrEmpty(sendProjectEntity)) {
-                    continue;
-                }
-                if (sendProjectEntity.getFailNum() != null && sendProjectEntity.getFailNum() < 3) {
-                    SendProjectInfo sendProjectInfo = new SendProjectInfo();
-                    sendProjectInfo.setGiveBudget(sendProjectEntity.getTotalAmount());
-                    sendProjectInfo.setUserName(sendProjectEntity.getUserName());
-                    sendProjectInfo.setUserPhone(sendProjectEntity.getUserPhone());
-                    sendProjectInfo.setUserCarNum(sendProjectEntity.getUserCarNum());
-                    sendProjectInfo.setUuid(sendProjectEntity.getSendUuid());
-                    sendProjectInfo.setFailNum(sendProjectEntity.getFailNum());
-                    this.sendProjectRetry(sendProjectInfo);
-                }
-            }
-        }
-    }
-
-//    @Override
-//    public void run() {
-//        num++;
-//        log.info("第{}次重新推送服务消息", num);
-//        this.sendProjectRetry();
-//        if (num == 3) {
-//            //停止定时任务
-//            scheduledFutureUtil.endJob("com.ydtech.utils.sendProjectUtils");
-//        }
-//    }
-}

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

@@ -23,7 +23,7 @@
     </sql>
 
     <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
                  left join ins_upload_files as f
                            on i.images_id = f.id

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

@@ -6,12 +6,6 @@
     <delete id="deleteBySupplierIds">
         delete from ins_contract_supplier
         <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 !=''">
                 and contract_id =#{id}
             </if>
@@ -54,7 +48,7 @@
                 and ics.contract_id =#{id}
             </if>
             <if test="supplierIdList != null  and supplierIdList !='' and  supplierIdList.size()>0 ">
-                and ics.supplierId IN
+                and ics.supplier_id IN
                 <foreach collection="supplierIdList" item="id" index="index" open="(" close=")" separator=",">
                     #{id}
                 </foreach>

+ 0 - 19
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -1828,23 +1828,4 @@
         </if>
     </select>
 
-    <resultMap id="SendProjectInfoMap" type="com.ydtech.modules.order.entity.vo.sendProject.SendProjectInfo">
-        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
-        <result property="userPhone" column="user_phone" jdbcType="VARCHAR"/>
-        <result property="userCarNum" column="user_car_num" jdbcType="VARCHAR"/>
-    </resultMap>
-
-    <select id="getOrderByCompanyId" resultMap="SendProjectInfoMap" parameterType="java.lang.String">
-        SELECT
-            REPLACE(o.applyinfo -> '$.name', '"', '') AS user_name,
-            REPLACE(o.applyinfo -> '$.mobile', '"', '') AS user_phone,
-            REPLACE(o.carinfo -> '$.licenseNo', '"', '') AS user_car_num
-        FROM
-            ins_orders AS o
-            JOIN
-                ins_area_company iac ON o.orderno = iac.orderno
-        WHERE
-            iac.id = #{companyId}
-    </select>
-
 </mapper>

+ 0 - 95
src/main/resources/mapper/modules/sendCollect/SendCollectMapper.xml

@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ydtech.modules.sendCollect.dao.SendCollectMapper">
-
-    <resultMap id="SendCollectEntityMap" type="com.ydtech.modules.sendCollect.entity.SendCollectEntity">
-        <result property="id" column="id"/>
-        <result property="amount" column="amount"/>
-        <result property="bankNumber" column="bank_number" jdbcType="VARCHAR"/>
-        <result property="userInfo" column="user_info" jdbcType="VARCHAR"/>
-        <result property="collectId" column="collect_id" jdbcType="VARCHAR"/>
-        <result property="collectTime" column="collect_time"/>
-        <result property="sendState" column="send_state" jdbcType="VARCHAR"/>
-        <result property="failNum" column="fail_num"/>
-        <result property="tranType" column="tran_type" jdbcType="VARCHAR"/>
-        <result property="httpPost" column="http_post"/>
-        <result property="httpResponse" column="http_response"/>
-        <result property="sendUuid" column="send_uuid"/>
-    </resultMap>
-
-    <sql id="selectSendCollectEntity">
-        SELECT
-            id,
-            amount,
-            bank_number,
-            user_info,
-            collect_id,
-            collect_time,
-            send_state,
-            fail_num,
-            tran_type,
-            http_post,
-            http_response,
-            send_uuid
-        FROM
-            send_collect_history
-    </sql>
-
-    <insert id="addSendCollectInfo" parameterType="com.ydtech.modules.sendCollect.entity.SendCollectEntity"
-            useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO send_collect_history
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="amount != null">amount,</if>
-            <if test="bankNumber != null and bankNumber != ''">bank_number,</if>
-            <if test="userInfo != null and userInfo != ''">user_info,</if>
-            <if test="collectId != null and collectId != ''">collect_id,</if>
-            <if test="collectTime != null">collect_time,</if>
-            <if test="sendState != null and sendState != ''">send_state,</if>
-            <if test="failNum != null">fail_num,</if>
-            <if test="tranType != null and tranType != ''">tran_type,</if>
-            <if test="httpPost != null and httpPost != ''">http_post,</if>
-            <if test="httpResponse != null and httpResponse != ''">http_response,</if>
-            <if test="sendUuid != null and sendUuid != ''">send_uuid,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
-            <if test="amount != null">#{amount},</if>
-            <if test="bankNumber != null and bankNumber != ''">#{bankNumber},</if>
-            <if test="userInfo != null and userInfo != ''">#{userInfo},</if>
-            <if test="collectId != null and collectId != ''">#{collectId},</if>
-            <if test="collectTime != null">#{collectTime},</if>
-            <if test="sendState != null and sendState != ''">#{sendState},</if>
-            <if test="failNum != null">#{failNum},</if>
-            <if test="tranType != null and tranType != ''">#{tranType},</if>
-            <if test="httpPost != null and httpPost != ''">#{httpPost},</if>
-            <if test="httpResponse != null and httpResponse != ''">#{httpResponse},</if>
-            <if test="sendUuid != null and sendUuid != ''">#{sendUuid},</if>
-        </trim>
-    </insert>
-
-    <update id="updateSendCollectInfo" parameterType="com.ydtech.modules.sendCollect.entity.SendCollectEntity">
-        UPDATE send_collect_history
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="sendState != null and sendState != ''">send_state = #{sendState},</if>
-            <if test="httpPost != null and httpPost != ''">http_post = #{httpPost},</if>
-            <if test="httpResponse != null and httpResponse != ''">http_response = #{httpResponse},</if>
-            <if test="failNum != null">fail_num = #{failNum},</if>
-        </trim>
-        WHERE
-            send_uuid = #{sendUuid}
-    </update>
-
-
-
-    <select id="getSendCollectFailInfo" resultMap="SendCollectEntityMap">
-        <include refid="selectSendCollectEntity"/>
-        WHERE
-            send_state IN ('0')
-        AND
-            fail_num <![CDATA[<]]> 3
-    </select>
-
-</mapper>

+ 0 - 115
src/main/resources/mapper/modules/sendProject/SendProjectMapper.xml

@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ydtech.modules.sendProject.dao.SendProjectMapper">
-
-    <resultMap id="SendProjectEntityMap" type="com.ydtech.modules.sendProject.entity.SendProjectEntity">
-        <result property="id" column="id"/>
-        <result property="httpPost" column="http_post"/>
-        <result property="totalAmount" column="total_amount"/>
-        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
-        <result property="userCarNum" column="user_car_num" jdbcType="VARCHAR"/>
-        <result property="userPhone" column="user_phone" jdbcType="VARCHAR"/>
-        <result property="httpResponse" column="http_response"/>
-        <result property="sendState" column="send_state" jdbcType="VARCHAR"/>
-        <result property="sendUuid" column="send_uuid" jdbcType="VARCHAR"/>
-        <result property="failNum" column="fail_num"/>
-        <result property="referrerNo" column="referrer_no" jdbcType="VARCHAR"/>
-        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
-        <result property="state" column="state" jdbcType="VARCHAR"/>
-        <result property="isDelete" column="is_delete" jdbcType="VARCHAR"/>
-        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="remark" column="remark" jdbcType="VARCHAR"/>
-    </resultMap>
-
-    <sql id="selectSendProjectEntity">
-        SELECT
-            id,
-            http_post,
-            total_amount,
-            user_name,
-            user_car_num,
-            user_phone,
-            http_response,
-            send_state,
-            send_uuid,
-            fail_num,
-            user_id,
-            referrer_no
-        FROM
-            send_project_history
-    </sql>
-
-    <select id="getSendFailInfo" resultMap="SendProjectEntityMap">
-        <include refid="selectSendProjectEntity"/>
-        WHERE
-            send_state IN ('0', '9')
-        AND
-            fail_num <![CDATA[<]]> 3
-    </select>
-
-    <insert id="addSendProjectInfo" parameterType="com.ydtech.modules.sendProject.entity.SendProjectEntity"
-            useGeneratedKeys="true" keyProperty="id">
-        INSERT INTO send_project_history
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="httpPost != null and httpPost != ''">http_post,</if>
-            <if test="totalAmount != null">total_amount,</if>
-            <if test="userName != null and userName != ''">user_name,</if>
-            <if test="userCarNum != null and userCarNum != ''">user_car_num,</if>
-            <if test="userPhone != null and userPhone != ''">user_phone,</if>
-            <if test="httpResponse != null and httpResponse != ''">http_response,</if>
-            <if test="sendState != null and sendState != ''">send_state,</if>
-            <if test="sendUuid != null and sendUuid != ''">send_uuid,</if>
-            <if test="failNum != null">fail_num,</if>
-            <if test="referrerNo != null and referrerNo != ''">referrer_no,</if>
-            <if test="userId != null and userId != ''">user_id,</if>
-            <if test="state != null and state != ''">state,</if>
-            <if test="isDelete != null and isDelete != ''">is_delete,</if>
-            <if test="createBy != null and createBy != ''">create_by,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateBy != null and updateBy != ''">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="remark != null and remark != ''">remark,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
-            <if test="httpPost != null and httpPost != ''">#{httpPost},</if>
-            <if test="totalAmount != null">#{totalAmount},</if>
-            <if test="userName != null and userName != ''">#{userName},</if>
-            <if test="userCarNum != null and userCarNum != ''">#{userCarNum},</if>
-            <if test="userPhone != null and userPhone != ''">#{userPhone},</if>
-            <if test="httpResponse != null and httpResponse != ''">#{httpResponse},</if>
-            <if test="sendState != null and sendState != ''">#{sendState},</if>
-            <if test="sendUuid != null and sendUuid != ''">#{sendUuid},</if>
-            <if test="failNum != null">#{failNum},</if>
-            <if test="referrerNo != null and referrerNo != ''">#{referrerNo},</if>
-            <if test="userId != null and userId != ''">#{userId},</if>
-            <if test="state != null and state != ''">#{state},</if>
-            <if test="isDelete != null and isDelete != ''">#{isDelete},</if>
-            <if test="createBy != null and createBy != ''">#{createBy},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="updateBy != null and updateBy != ''">#{updateBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="remark != null and remark != ''">#{remark},</if>
-        </trim>
-    </insert>
-
-    <update id="updateSendProjectInfo" parameterType="com.ydtech.modules.sendProject.entity.SendProjectEntity">
-        UPDATE send_project_history
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="sendState != null and sendState != ''">send_state = #{sendState},</if>
-            <if test="httpPost != null and httpPost != ''">http_post = #{httpPost},</if>
-            <if test="httpResponse != null and httpResponse != ''">http_response = #{httpResponse},</if>
-            <if test="failNum != null">fail_num = #{failNum},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-        </trim>
-        WHERE
-            send_uuid = #{sendUuid}
-    </update>
-
-</mapper>