linxk 1 lună în urmă
părinte
comite
1f00b13c5f
52 a modificat fișierele cu 2249 adăugiri și 583 ștergeri
  1. 375 0
      cif-api/src/main/java/com/txz/cif/dto/RedEnvelopeDTO.java
  2. 57 0
      cif-api/src/main/java/com/txz/cif/param/AccomplishParam.java
  3. 57 0
      cif-api/src/main/java/com/txz/cif/param/CancelParam.java
  4. 3 3
      cif-api/src/main/java/com/txz/cif/param/FreezdParam.java
  5. 56 0
      cif-api/src/main/java/com/txz/cif/param/JoinParam.java
  6. 0 44
      cif-api/src/main/java/com/txz/cif/param/MessageParam.java
  7. 56 0
      cif-api/src/main/java/com/txz/cif/param/OpenParam.java
  8. 4 4
      cif-api/src/main/java/com/txz/cif/param/PayParam.java
  9. 7 2
      cif-api/src/main/java/com/txz/cif/param/RechargeParam.java
  10. 3 3
      cif-api/src/main/java/com/txz/cif/param/RefundParam.java
  11. 53 0
      cif-api/src/main/java/com/txz/cif/param/SignRedEnvelopeParam.java
  12. 2 2
      cif-api/src/main/java/com/txz/cif/param/TransParam.java
  13. 7 2
      cif-api/src/main/java/com/txz/cif/param/WithdrawParam.java
  14. 26 18
      cif-api/src/main/java/com/txz/cif/service/AccountDubboService.java
  15. 7 1
      cif-service/pom.xml
  16. 14 17
      cif-service/src/main/java/com/txz/cif/constants/MyConstants.java
  17. 12 0
      cif-service/src/main/java/com/txz/cif/dao/RedEnvelopeMapper.java
  18. 0 18
      cif-service/src/main/java/com/txz/cif/dubbo/client/MessageDubboServiceClient.java
  19. 21 0
      cif-service/src/main/java/com/txz/cif/dubbo/client/OperatingConfigDubboServiceClient.java
  20. 125 40
      cif-service/src/main/java/com/txz/cif/dubbo/impl/AccountDubboServiceImpl.java
  21. 4 0
      cif-service/src/main/java/com/txz/cif/model/Account.java
  22. 1 1
      cif-service/src/main/java/com/txz/cif/model/AccountFlow.java
  23. 1 1
      cif-service/src/main/java/com/txz/cif/model/AccountFreezd.java
  24. 1 1
      cif-service/src/main/java/com/txz/cif/model/DayCut.java
  25. 3 3
      cif-service/src/main/java/com/txz/cif/model/Flow.java
  26. 434 0
      cif-service/src/main/java/com/txz/cif/model/RedEnvelope.java
  27. 1 1
      cif-service/src/main/java/com/txz/cif/model/Subject.java
  28. 9 1
      cif-service/src/main/java/com/txz/cif/model/User.java
  29. 2 0
      cif-service/src/main/java/com/txz/cif/service/AccountService.java
  30. 1 0
      cif-service/src/main/java/com/txz/cif/service/ConfigMemberService.java
  31. 5 30
      cif-service/src/main/java/com/txz/cif/service/FlowService.java
  32. 19 0
      cif-service/src/main/java/com/txz/cif/service/RedEnvelopeService.java
  33. 13 0
      cif-service/src/main/java/com/txz/cif/service/impl/AccountServiceImpl.java
  34. 4 0
      cif-service/src/main/java/com/txz/cif/service/impl/ConfigMemberServiceImpl.java
  35. 146 178
      cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java
  36. 157 0
      cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java
  37. 2 10
      cif-service/src/main/java/com/txz/cif/service/impl/UserServiceImpl.java
  38. 1 0
      cif-service/src/main/java/com/txz/cif/util/MyDateUtil.java
  39. 16 8
      cif-service/src/main/java/com/txz/cif/web/AccountApiController.java
  40. 78 0
      cif-service/src/main/java/com/txz/cif/web/RedEnvelopeApiController.java
  41. 13 93
      cif-service/src/main/java/com/txz/cif/web/UserApiController.java
  42. 128 0
      cif-service/src/main/java/com/txz/cif/web/mng/RedEnvelopeController.java
  43. 2 14
      cif-service/src/main/java/com/txz/cif/web/para/AccountFlowParam.java
  44. 34 0
      cif-service/src/main/java/com/txz/cif/web/para/RedEnvelopeListParam.java
  45. 62 0
      cif-service/src/main/java/com/txz/cif/web/para/RedEnvelopeParam.java
  46. 11 85
      cif-service/src/main/java/com/txz/cif/web/para/UserInfoForm.java
  47. 3 2
      cif-service/src/main/resources/mapper/AccountMapper.xml
  48. 30 0
      cif-service/src/main/resources/mapper/RedEnvelopeMapper.xml
  49. 1 0
      cif-service/src/main/resources/mapper/UserMapper.xml
  50. 1 1
      cif-service/src/test/java/CodeGenerator.java
  51. 164 0
      log.home_IS_UNDEFINED/error.cif.log.2025-07-16.log
  52. 17 0
      log.home_IS_UNDEFINED/log.cif.2025-07-16.0.log

+ 375 - 0
cif-api/src/main/java/com/txz/cif/dto/RedEnvelopeDTO.java

@@ -0,0 +1,375 @@
+/*
+*
+* RedEnvelopeDTO.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2025-07-15
+*/
+package com.txz.cif.dto;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class RedEnvelopeDTO implements Serializable {
+    /**
+     * 
+     */
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+    /**
+     * 交易号
+     */
+    private String tranNo;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 交易金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 余额
+     */
+    private BigDecimal balance;
+
+    /**
+     * 借方账户
+     */
+    private Long debitAccount;
+
+    /**
+     * 贷方账户
+     */
+    private Long creditAccount;
+
+    /**
+     * 状态 1未结算 2已结算
+     */
+    private Integer status;
+
+    /**
+     * 类型 1开团红包 2参团红包 3签到红包
+     */
+    private Integer bizType;
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+    /**
+     * 待结算时间
+     */
+    private Date settleTime;
+
+    /**
+     * 创建人
+     */
+    private String createUser;
+
+    /**
+     * 更新人
+     */
+    private String updateUser;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 版本号
+     */
+    private String version;
+
+    /**
+     * c_red_envelope
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     * @return id 
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * 
+     * @param id 
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * 订单号
+     * @return order_no 订单号
+     */
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    /**
+     * 订单号
+     * @param orderNo 订单号
+     */
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    /**
+     * 交易号
+     * @return tran_no 交易号
+     */
+    public String getTranNo() {
+        return tranNo;
+    }
+
+    /**
+     * 交易号
+     * @param tranNo 交易号
+     */
+    public void setTranNo(String tranNo) {
+        this.tranNo = tranNo;
+    }
+
+    /**
+     * 用户id
+     * @return user_id 用户id
+     */
+    public Long getUserId() {
+        return userId;
+    }
+
+    /**
+     * 用户id
+     * @param userId 用户id
+     */
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 交易金额
+     * @return amount 交易金额
+     */
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    /**
+     * 交易金额
+     * @param amount 交易金额
+     */
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    /**
+     * 余额
+     * @return balance 余额
+     */
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    /**
+     * 余额
+     * @param balance 余额
+     */
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    /**
+     * 借方账户
+     * @return debit_account 借方账户
+     */
+    public Long getDebitAccount() {
+        return debitAccount;
+    }
+
+    /**
+     * 借方账户
+     * @param debitAccount 借方账户
+     */
+    public void setDebitAccount(Long debitAccount) {
+        this.debitAccount = debitAccount;
+    }
+
+    /**
+     * 贷方账户
+     * @return credit_account 贷方账户
+     */
+    public Long getCreditAccount() {
+        return creditAccount;
+    }
+
+    /**
+     * 贷方账户
+     * @param creditAccount 贷方账户
+     */
+    public void setCreditAccount(Long creditAccount) {
+        this.creditAccount = creditAccount;
+    }
+
+    /**
+     * 状态 1未结算 2已结算
+     * @return status 状态 1未结算 2已结算
+     */
+    public Integer getStatus() {
+        return status;
+    }
+
+    /**
+     * 状态 1未结算 2已结算
+     * @param status 状态 1未结算 2已结算
+     */
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    /**
+     * 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     * @return biz_type 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     */
+    public Integer getBizType() {
+        return bizType;
+    }
+
+    /**
+     * 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     * @param bizType 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     */
+    public void setBizType(Integer bizType) {
+        this.bizType = bizType;
+    }
+
+    /**
+     * 交易时间
+     * @return trans_time 交易时间
+     */
+    public Date getTransTime() {
+        return transTime;
+    }
+
+    /**
+     * 交易时间
+     * @param transTime 交易时间
+     */
+    public void setTransTime(Date transTime) {
+        this.transTime = transTime;
+    }
+
+    /**
+     * 待结算时间
+     * @return settle_time 待结算时间
+     */
+    public Date getSettleTime() {
+        return settleTime;
+    }
+
+    /**
+     * 待结算时间
+     * @param settleTime 待结算时间
+     */
+    public void setSettleTime(Date settleTime) {
+        this.settleTime = settleTime;
+    }
+
+    /**
+     * 创建人
+     * @return create_user 创建人
+     */
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    /**
+     * 创建人
+     * @param createUser 创建人
+     */
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    /**
+     * 更新人
+     * @return update_user 更新人
+     */
+    public String getUpdateUser() {
+        return updateUser;
+    }
+
+    /**
+     * 更新人
+     * @param updateUser 更新人
+     */
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    /**
+     * 更新时间
+     * @return update_time 更新时间
+     */
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * 更新时间
+     * @param updateTime 更新时间
+     */
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * 创建时间
+     * @return create_time 创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * 创建时间
+     * @param createTime 创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 版本号
+     * @return version 版本号
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * 版本号
+     * @param version 版本号
+     */
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}

+ 57 - 0
cif-api/src/main/java/com/txz/cif/param/AccomplishParam.java

@@ -0,0 +1,57 @@
+/*
+*
+* FreezdParam.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2022-11-02
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class AccomplishParam implements Serializable {
+
+    /**
+     * 业务编号
+     */
+    private String bizNo;
+
+    /**
+     * 业务Id
+     */
+    private String bizId;
+
+    /**
+     * 退还资金账号
+     */
+    private List<Long> userIds;
+
+
+    /**
+     * 开团金额
+     */
+    private BigDecimal amount;
+
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+    private static final long serialVersionUID = 1L;
+
+
+
+
+}

+ 57 - 0
cif-api/src/main/java/com/txz/cif/param/CancelParam.java

@@ -0,0 +1,57 @@
+/*
+*
+* FreezdParam.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2022-11-02
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class CancelParam implements Serializable {
+
+    /**
+     * 业务编号
+     */
+    private String bizNo;
+
+    /**
+     * 业务Id
+     */
+    private String bizId;
+
+    /**
+     * 退还资金账号
+     */
+    private List<Long> userIds;
+
+
+    /**
+     * 开团金额
+     */
+    private BigDecimal amount;
+
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+    private static final long serialVersionUID = 1L;
+
+
+
+
+}

+ 3 - 3
cif-api/src/main/java/com/txz/cif/param/FreezdParam.java

@@ -23,7 +23,7 @@ public class FreezdParam implements Serializable {
 
 
     /**
-     * 业务编号(病例号)
+     * 业务编号
      */
     private String bizNo;
 
@@ -35,7 +35,7 @@ public class FreezdParam implements Serializable {
     /**
      * 冻结账户
      */
-    private Long accountId;
+    private Long userId;
 
     /**
      * 冻结金额
@@ -43,7 +43,7 @@ public class FreezdParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1001充值 2001平台收费 2002专家佣金 2003销售佣金 3001提现 4001诊断冻结 5001诊断解冻
+     * 业务类型 1001充值 2001钱包支付 2002参团成功 3001提现 4001冻结 5001解冻
      */
     private Integer bizType;
 

+ 56 - 0
cif-api/src/main/java/com/txz/cif/param/JoinParam.java

@@ -0,0 +1,56 @@
+/*
+*
+* FreezdParam.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2022-11-02
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class JoinParam implements Serializable {
+
+    /**
+     * 业务编号
+     */
+    private String bizNo;
+
+    /**
+     * 业务Id
+     */
+    private String bizId;
+
+    /**
+     * 借账户
+     */
+    private Long userId;
+
+
+    /**
+     * 开团金额
+     */
+    private BigDecimal amount;
+
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+    private static final long serialVersionUID = 1L;
+
+
+
+
+}

+ 0 - 44
cif-api/src/main/java/com/txz/cif/param/MessageParam.java

@@ -1,44 +0,0 @@
-package com.txz.cif.param;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * @Author: lxk
- * @Date: 2019/12/14 13:56
- * @Version 1.0
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class MessageParam implements Serializable {
-
-    private static final long serialVersionUID = -5318595472853014732L;
-
-    /**
-     * 业务类型 1收到新病例 2收到新冰冻病例  3处理中的病例信息更新 4处理中的病例收到发起端新的消息留言 5月账单结算
-     */
-    private Integer bizType;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     *  业务数据
-     */
-    private String bizData;
-
-    /**
-     * 参数 1: hospital、userName 2:hospital、userName、surgeryTime 3:hospital、userName 4:hospital、userName 5:month
-     */
-    private Map<String,String> templateParam;
-
-}

+ 56 - 0
cif-api/src/main/java/com/txz/cif/param/OpenParam.java

@@ -0,0 +1,56 @@
+/*
+*
+* FreezdParam.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2022-11-02
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class OpenParam implements Serializable {
+
+    /**
+     * 业务编号
+     */
+    private String bizNo;
+
+    /**
+     * 业务Id
+     */
+    private String bizId;
+
+    /**
+     * 借账户
+     */
+    private Long userId;
+
+
+    /**
+     * 开团金额
+     */
+    private BigDecimal amount;
+
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+    private static final long serialVersionUID = 1L;
+
+
+
+
+}

+ 4 - 4
cif-api/src/main/java/com/txz/cif/param/CommissionParam.java → cif-api/src/main/java/com/txz/cif/param/PayParam.java

@@ -19,7 +19,7 @@ import java.util.Date;
 @Builder
 @AllArgsConstructor
 @NoArgsConstructor
-public class CommissionParam implements Serializable {
+public class PayParam implements Serializable {
 
 
     /**
@@ -33,9 +33,9 @@ public class CommissionParam implements Serializable {
     private String bizId;
 
     /**
-     * 被收费账
+     * 支付用
      */
-    private Long accountId;
+    private Long userId;
 
     /**
      * 金额
@@ -43,7 +43,7 @@ public class CommissionParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1001充值 2001平台收费 2002专家佣金 2003销售佣金 3001提现 4001诊断冻结 5001诊断解冻
+     * 业务类型  2001钱包支付
      */
     private Integer bizType;
 

+ 7 - 2
cif-api/src/main/java/com/txz/cif/param/RechargeParam.java

@@ -35,7 +35,7 @@ public class RechargeParam implements Serializable {
     /**
      * 充值目标账户
      */
-    private Long accountId;
+    private Long userId;
 
     /**
      * 充值金额
@@ -43,7 +43,12 @@ public class RechargeParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1001充值 2001平台收费 3001提现 4001冻结 5001解冻
+     * 充值返现金额
+     */
+    private BigDecimal discount;
+
+    /**
+     * 业务类型 1001充值 2001钱包支付 2002参团成功 3001提现 4001冻结 5001解冻
      */
     private Integer bizType;
 

+ 3 - 3
cif-api/src/main/java/com/txz/cif/param/FeeParam.java → cif-api/src/main/java/com/txz/cif/param/RefundParam.java

@@ -19,7 +19,7 @@ import java.util.Date;
 @Builder
 @AllArgsConstructor
 @NoArgsConstructor
-public class FeeParam implements Serializable {
+public class RefundParam implements Serializable {
 
 
     /**
@@ -35,7 +35,7 @@ public class FeeParam implements Serializable {
     /**
      * 被收费账户
      */
-    private Long accountId;
+    private Long userId;
 
     /**
      * 金额
@@ -43,7 +43,7 @@ public class FeeParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1001充值 2001平台收费 2002专家佣金 2003销售佣金 3001提现 4001诊断冻结 5001诊断解冻
+     * 业务类型  2002 成团 2003 未成团
      */
     private Integer bizType;
 

+ 53 - 0
cif-api/src/main/java/com/txz/cif/param/SignRedEnvelopeParam.java

@@ -0,0 +1,53 @@
+/*
+*
+* RedEnvelopeDTO.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2025-07-15
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class SignRedEnvelopeParam implements Serializable {
+
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 交易金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+
+
+    /**
+     * c_red_envelope
+     */
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 2 - 2
cif-api/src/main/java/com/txz/cif/param/TransParam.java

@@ -22,7 +22,7 @@ import java.util.Date;
 public class TransParam implements Serializable {
 
     /**
-     * 业务编号(病例号)
+     * 业务编号
      */
     private String bizNo;
 
@@ -47,7 +47,7 @@ public class TransParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     *  业务类型 1001充值 2001平台收费 2002专家佣金 2003销售佣金 3001提现 4001诊断冻结 5001诊断解冻
+     *  业务类型 1001充值 2001钱包支付 2002参团成功 3001提现 4001冻结 5001解冻
      */
     private Integer bizType;
 

+ 7 - 2
cif-api/src/main/java/com/txz/cif/param/WithdrawParam.java

@@ -35,7 +35,12 @@ public class WithdrawParam implements Serializable {
     /**
      * 提现目标账户
      */
-    private Long accountId;
+    private Long userId;
+
+    /**
+     * 账户类型 1钱包账户 2收益账户
+     */
+    private Integer accountType;
 
     /**
      * 提现金额
@@ -43,7 +48,7 @@ public class WithdrawParam implements Serializable {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1001充值 2001平台收费 2002专家佣金 2003销售佣金 3001提现 4001诊断冻结 5001诊断解冻
+     * 业务类型 3001提现
      */
     private Integer bizType;
 

+ 26 - 18
cif-api/src/main/java/com/txz/cif/service/AccountDubboService.java

@@ -1,60 +1,68 @@
 package com.txz.cif.service;
 
 
-import com.txz.cif.dto.AccountDTO;
 import com.txz.cif.dto.Result;
 import com.txz.cif.param.*;
 
-import java.math.BigDecimal;
-
 public interface AccountDubboService {
 
+    /**
+     * 初始化个人 钱包账户和收益账户
+     * @param userId
+     * @return 流水号
+     */
+    Result createAccount(Long userId);
+
 
 
 
     /**
-     * 冻结
+     * 钱包账户支付开团、未成团、成团
      * @param param
-     * @return 流水号
+     * @return
      */
-    Result freeze(FreezdParam param);
+    Result openGroup(OpenParam param);
 
     /**
-     * 解冻(全额解冻)
-     * @param freezdId
+     * 钱包账户支付开团、未成团、成团
+     * @param param
+     * @return
      */
-    Result unFreeze(Long freezdId);
+    Result joinGroup(JoinParam param);
+
+
 
     /**
-     * 交易
+     * 未成团
      * @param param
      * @return
      */
-    Result trans(TransParam param);
+    Result cancelGroup(CancelParam param);
 
     /**
-     * 解冻并交易
+     * 成团
      * @param param
      * @return
      */
-    Result unFreezeAndTrans(UnFreezdAndTransParam param);
+    Result accomplishGroup(AccomplishParam param);
+
 
     /**
-     * 解冻并交易
-     * @param param
+     * 新增红包 (签到红包)
      * @return
      */
-    Result unFreezeAndFreeze(Long freezdId,FreezdParam param);
+    Result addRedEnvelope(SignRedEnvelopeParam param);
+
 
     /**
-     * 充值
+     * 充值(钱包账户)
      * @param param
      * @return
      */
     Result recharge(RechargeParam param);
 
     /**
-     * 提现
+     * 提现(钱包账户、收益账户)
      * @param param
      * @return
      */

+ 7 - 1
cif-service/pom.xml

@@ -94,12 +94,18 @@
             <version>3.8.6</version>
         </dependency>
 
-        <!--异维科技公共包依赖-->
+        <!--天仙子科技公共包依赖-->
         <dependency>
             <groupId>com.txz</groupId>
             <artifactId>common</artifactId>
             <version>1.0.0-SNAPSHOT</version>
 
+        </dependency>
+        <dependency>
+            <groupId>com.txz</groupId>
+            <artifactId>operating-api</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+
         </dependency>
         <!--        IJPay-AliPay里引用 和undertow的版本冲突-->
         <dependency>

+ 14 - 17
cif-service/src/main/java/com/txz/cif/constants/MyConstants.java

@@ -18,27 +18,33 @@ public class MyConstants {
   /**
    * 主营收入账户(损益类)id
    */
-  public static final Long INNER_INCOME = 2L;
+  public static final Long INNER_INCOME = 3L;
 
   /**
-   * 平台营销账户(负债类)id
+   * 主营支出-退款(损益类)id
    */
-  public static final Long INNER_MARKETING = 3L;
+  public static final Long INNER_REFUND = 6L;
 
   /**
-   * 销售提成(损益类)id
+   * 主营支出-充值返点(损益类)id
    */
-  public static final Long INNER_SALE = 4L;
+  public static final Long INNER_REBATE = 7L;
+
+
+
+
 
   /**
-   * 专家提成(损益类)id
+   * 平台营销账户(负债类)id
    */
-  public static final Long INNER_SPECIALIST = 5L;
+  public static final Long INNER_MARKETING = 2L;
+
+
 
   /**
    *  本年利润
    */
-  public static final Long INNER_PROFIT = 7L;
+  public static final Long INNER_PROFIT = 5L;
 
 
   /**
@@ -46,13 +52,4 @@ public class MyConstants {
    */
   public static final String ICON_USER = "/public/user.png";
 
-  /**
-   *  医院默认头像
-   */
-  public static final String ICON_HOSPITAL = "/public/hospital.png";
-
-  /**
-   *  组织默认头像
-   */
-  public static final String ICON_ORG = "/public/group.png";
 }

+ 12 - 0
cif-service/src/main/java/com/txz/cif/dao/RedEnvelopeMapper.java

@@ -0,0 +1,12 @@
+package com.txz.cif.dao;
+
+import com.txz.cif.core.Mapper;
+import com.txz.cif.model.RedEnvelope;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public interface RedEnvelopeMapper extends Mapper<RedEnvelope> {
+    BigDecimal sumWithDay(Date day, Long userId);
+
+}

+ 0 - 18
cif-service/src/main/java/com/txz/cif/dubbo/client/MessageDubboServiceClient.java

@@ -1,18 +0,0 @@
-package com.txz.cif.dubbo.client;
-
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.dubbo.config.annotation.Reference;
-import org.springframework.stereotype.Component;
-
-@Slf4j
-@Component
-public class MessageDubboServiceClient {
-
-//    @Reference
-//    private MessageDubboService messageDubboService;
-//
-//    public boolean sendMsg(MessageRequest request){
-//        return messageDubboService.sendMsg(request);
-//    }
-}

+ 21 - 0
cif-service/src/main/java/com/txz/cif/dubbo/client/OperatingConfigDubboServiceClient.java

@@ -0,0 +1,21 @@
+package com.txz.cif.dubbo.client;
+
+
+import com.txz.operating.dto.ConfigDTO;
+import com.txz.operating.result.Result;
+import com.txz.operating.service.OperatingConfigDubboService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.Reference;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class OperatingConfigDubboServiceClient {
+
+    @Reference
+    private OperatingConfigDubboService operatingConfigDubboService;
+
+    public Result<ConfigDTO> getConfigByCode(String code){
+        return operatingConfigDubboService.getConfigByCode(code);
+    }
+}

+ 125 - 40
cif-service/src/main/java/com/txz/cif/dubbo/impl/AccountDubboServiceImpl.java

@@ -1,21 +1,23 @@
 package com.txz.cif.dubbo.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
-import com.txz.cif.dto.AccountDTO;
+import cn.hutool.core.util.StrUtil;
+import com.txz.cif.core.ServiceException;
 import com.txz.cif.dto.Result;
 import com.txz.cif.model.Account;
 import com.txz.cif.model.User;
 import com.txz.cif.param.*;
-import com.txz.cif.service.AccountDubboService;
-import com.txz.cif.service.AccountService;
-import com.txz.cif.service.FlowService;
-import com.txz.cif.service.UserService;
+import com.txz.cif.service.*;
+import com.txz.cif.web.para.RedEnvelopeParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -30,66 +32,149 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Resource
     private UserService userService;
 
+    @Resource
+    private RedEnvelopeService redEnvelopeService;
+
+
 //    @Override
-//    public AccountDTO getAccount(Long userId) {
-//        User user = userService.findById(userId);
-//        if (user == null){
-//            return null;
-//        }
-//        Account account = accountService.findById( user.getAccountId());
-//        if (account == null){
-//            return null;
-//        }
-//        return BeanUtil.toBean(account,AccountDTO.class);
+//    public Result freeze(FreezdParam param) {
+//        return flowService.freeze(param);
 //    }
-
+//
 //    @Override
-//    public Boolean checkFee(Long userId, BigDecimal amount) {
-//        User user = userService.findById(userId);
-//        if (user == null){
-//            return false;
-//        }
-//        Account account = accountService.findById( user.getAccountId());
-//        if (account == null){
-//            return false;
-//        }
-//        if (account.getBalance().subtract(account.getFreezeAmount()).subtract(amount).compareTo(BigDecimal.ZERO) <0){
-//            return false;
-//        }
-//        return true;
+//    public Result unFreeze(Long freezdId) {
+//        return flowService.unFreeze(freezdId);
 //    }
 
     @Override
-    public Result freeze(FreezdParam param) {
-        return flowService.freeze(param);
+    public Result createAccount(Long userId) {
+        User user = userService.findById(userId);
+
+        Account qb = Account.builder().userId(userId).createTime(DateUtil.date())
+                .aliases("202").freezeAmount(BigDecimal.ZERO).balance(BigDecimal.ZERO)
+                .type(1).beforeDayBalance(BigDecimal.ZERO).beforeDayTime(DateUtil.date())
+                .direction("C").bizType(1).subjectType(2).remark("个人钱包账户").name(user.getName())
+                .beforeDayInitBalance(BigDecimal.ZERO).version("1.0.0")
+                .build();
+        Account yl = Account.builder().userId(userId).createTime(DateUtil.date())
+                .aliases("202").freezeAmount(BigDecimal.ZERO).balance(BigDecimal.ZERO)
+                .type(1).beforeDayBalance(BigDecimal.ZERO).beforeDayTime(DateUtil.date())
+                .direction("C").bizType(2).subjectType(2).remark("个人收益账户").name(user.getName())
+                .beforeDayInitBalance(BigDecimal.ZERO).version("1.0.0")
+                .build();
+        List<Account> add = new ArrayList<>();
+        add.add(qb);
+        add.add(yl);
+        accountService.save(add);
+        return Result.genSuccessResult();
     }
 
     @Override
-    public Result unFreeze(Long freezdId) {
-        return flowService.unFreeze(freezdId);
+    public Result openGroup(OpenParam param) {
+        //支付
+        Result result = flowService.pay(PayParam.builder().bizNo(param.getBizNo())
+                .amount(param.getAmount())
+                .bizId(param.getBizId())
+                .transTime(param.getTransTime())
+                .bizType(2001)
+                .build());
+        if (StrUtil.equals("200",result.getCode())){
+            //计算开团红包金额
+            BigDecimal amount = param.getAmount();
+            //开团红包
+            Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
+                    .amount(amount).bizType(1).orderNo(param.getBizNo())
+                    .userIds(CollUtil.newArrayList(param.getUserId()))
+                    .transTime(param.getTransTime())
+                    .build());
+        }
+        return Result.genSuccessResult();
     }
 
     @Override
-    public Result trans(TransParam param) {
-        return flowService.trans(param);
+    public Result joinGroup(JoinParam param) {
+        //支付
+        Result result = flowService.pay(PayParam.builder().bizNo(param.getBizNo())
+                .amount(param.getAmount())
+                .bizId(param.getBizId())
+                .transTime(param.getTransTime())
+                .bizType(2001)
+                .build());
+        return Result.genSuccessResult();
     }
 
     @Override
-    public Result unFreezeAndTrans(UnFreezdAndTransParam param) {
-        return flowService.unFreezeAndTrans(param);
+    public Result cancelGroup(CancelParam param) {
+        for (Long userId:param.getUserIds()){
+            Result result = flowService.refund(RefundParam.builder()
+                    .transTime(param.getTransTime())
+                    .bizType(2003).bizNo(param.getBizNo())
+                    .bizId(param.getBizId())
+                    .amount(param.getAmount())
+                    .userId(userId)
+                    .build());
+            if (!StrUtil.equals("200",result.getCode())){
+               throw  new ServiceException() ;
+            }
+
+        }
+        //TODO 计算参团红包金额
+        BigDecimal amount = param.getAmount();
+        //参团红包
+        Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
+                .amount(amount).bizType(2).orderNo(param.getBizNo())
+                .userIds(param.getUserIds())
+                .transTime(param.getTransTime())
+                .build());
+        return Result.genSuccessResult();
     }
 
     @Override
-    public Result unFreezeAndFreeze(Long freezdId, FreezdParam param) {
-        return flowService.unFreezeAndFreeze(freezdId,param);
+    public Result accomplishGroup(AccomplishParam param) {
+        for (Long userId:param.getUserIds()){
+            Result result = flowService.refund(RefundParam.builder()
+                    .transTime(param.getTransTime())
+                    .bizType(2002).bizNo(param.getBizNo())
+                    .bizId(param.getBizId())
+                    .amount(param.getAmount())
+                    .userId(userId)
+                    .build());
+            if (!StrUtil.equals("200",result.getCode())){
+                throw  new ServiceException() ;
+            }
+        }
+        //TODO 计算参团红包金额
+        BigDecimal amount = param.getAmount();
+        //参团红包
+        Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
+                .amount(amount).bizType(2).orderNo(param.getBizNo())
+                .userIds(param.getUserIds())
+                .transTime(param.getTransTime())
+                .build());
+        return Result.genSuccessResult();
     }
 
+//    @Override
+//    public Result trans(TransParam param) {
+//        return flowService.trans(param);
+//    }
+
+    @Override
+    public Result addRedEnvelope(SignRedEnvelopeParam param) {
+        RedEnvelopeParam p = BeanUtil.toBean(param,RedEnvelopeParam.class);
+        p.setUserIds(CollUtil.newArrayList(param.getUserId()));
+        p.setBizType(3);
+        return redEnvelopeService.addRedEnvelope(p);
+    }
+
+
+
     @Override
     public Result recharge(RechargeParam param) {
         if (param == null){
             return Result.genFailResult("参数为空");
         }
-        if (param.getAccountId() == null){
+        if (param.getUserId() == null){
             return Result.genFailResult("参数账号id为空");
         }
         if (param.getAmount() == null){

+ 4 - 0
cif-service/src/main/java/com/txz/cif/model/Account.java

@@ -55,6 +55,10 @@ public class Account {
     @ApiModelProperty(value="科目分类 1资产类 2负债类 3损益类 4所有者权益")
     private Integer subjectType;
 
+    @Column(name = "biz_type")
+    @ApiModelProperty(value="分类 1钱包账户 2收益账户")
+    private Integer bizType;
+
     /**
      * 余额
      */

+ 1 - 1
cif-service/src/main/java/com/txz/cif/model/AccountFlow.java

@@ -15,7 +15,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.AccountFlow")
+@ApiModel(value="com.txz.cif.model.AccountFlow")
 @Table(name = "c_account_flow")
 public class AccountFlow {
     @Id

+ 1 - 1
cif-service/src/main/java/com/txz/cif/model/AccountFreezd.java

@@ -13,7 +13,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.AccountFreezd")
+@ApiModel(value="com.txz.cif.model.AccountFreezd")
 @Table(name = "c_account_freezd")
 public class AccountFreezd {
     @Id

+ 1 - 1
cif-service/src/main/java/com/txz/cif/model/DayCut.java

@@ -11,7 +11,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.DayCut")
+@ApiModel(value="com.txz.cif.model.DayCut")
 @Table(name = "c_day_cut")
 public class DayCut {
     @Id

+ 3 - 3
cif-service/src/main/java/com/txz/cif/model/Flow.java

@@ -13,7 +13,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.Flow")
+@ApiModel(value="com.txz.cif.model.Flow")
 @Table(name = "c_flow")
 public class Flow {
     @Id
@@ -75,10 +75,10 @@ public class Flow {
     private BigDecimal amount;
 
     /**
-     * 业务类型 1充值 2提现 3参团 4退款 5开团红包 6参团红包 7签到红包 8下级红包佣金 9下下级红包佣金
+     * 业务类型 1充值 2提现 3参团 4退款 5开团红包 6参团红包 7签到红包 8下级红包佣金 9下下级红包佣金 10充值返点
      */
     @Column(name = "biz_type")
-    @ApiModelProperty(value="类型 1充值 2提现 3参团 4退款 5开团红包 6参团红包 7签到红包 8下级红包佣金 9下下级红包佣金 ")
+    @ApiModelProperty(value="类型 1充值 2提现 3参团 4退款 5开团红包 6参团红包 7签到红包 8下级红包佣金 9下下级红包佣金 10充值返点  ")
     private Integer bizType;
 
 

+ 434 - 0
cif-service/src/main/java/com/txz/cif/model/RedEnvelope.java

@@ -0,0 +1,434 @@
+package com.txz.cif.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import javax.persistence.*;
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel(value="com.txz.cif.model.RedEnvelope")
+@Table(name = "c_red_envelope")
+public class RedEnvelope {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @ApiModelProperty(value="id")
+    private Long id;
+
+    /**
+     * 订单号
+     */
+    @Column(name = "order_no")
+    @ApiModelProperty(value="orderNo订单号")
+    private String orderNo;
+
+    /**
+     * 交易号
+     */
+    @Column(name = "tran_no")
+    @ApiModelProperty(value="tranNo交易号")
+    private String tranNo;
+
+    /**
+     * 用户id
+     */
+    @Column(name = "user_id")
+    @ApiModelProperty(value="userId用户id")
+    private Long userId;
+
+    /**
+     * 交易金额
+     */
+    @ApiModelProperty(value="amount交易金额")
+    private BigDecimal amount;
+
+    /**
+     * 余额
+     */
+    @ApiModelProperty(value="balance余额")
+    private BigDecimal balance;
+
+    /**
+     * 借方账户
+     */
+    @Column(name = "debit_account")
+    @ApiModelProperty(value="debitAccount借方账户")
+    private Long debitAccount;
+
+    /**
+     * 贷方账户
+     */
+    @Column(name = "credit_account")
+    @ApiModelProperty(value="creditAccount贷方账户")
+    private Long creditAccount;
+
+    /**
+     * 状态 1未结算 2已结算
+     */
+    @ApiModelProperty(value="status状态 1未结算 2已结算")
+    private Integer status;
+
+    /**
+     * 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     */
+    @Column(name = "biz_type")
+    @ApiModelProperty(value="bizType类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金")
+    private Integer bizType;
+
+    /**
+     * 交易时间
+     */
+    @Column(name = "trans_time")
+    @ApiModelProperty(value="transTime交易时间")
+    private Date transTime;
+
+    /**
+     * 待结算时间
+     */
+    @Column(name = "settle_time")
+    @ApiModelProperty(value="settleTime待结算时间")
+    private Date settleTime;
+
+    /**
+     * 创建人
+     */
+    @Column(name = "create_user")
+    @ApiModelProperty(value="createUser创建人")
+    private String createUser;
+
+    /**
+     * 更新人
+     */
+    @Column(name = "update_user")
+    @ApiModelProperty(value="updateUser更新人")
+    private String updateUser;
+
+    /**
+     * 更新时间
+     */
+    @Column(name = "update_time")
+    @ApiModelProperty(value="updateTime更新时间")
+    private Date updateTime;
+
+    /**
+     * 创建时间
+     */
+    @Column(name = "create_time")
+    @ApiModelProperty(value="createTime创建时间")
+    private Date createTime;
+
+    /**
+     * 版本号
+     */
+    @ApiModelProperty(value="version版本号")
+    private String version;
+
+    /**
+     * @return id
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取订单号
+     *
+     * @return order_no - 订单号
+     */
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    /**
+     * 设置订单号
+     *
+     * @param orderNo 订单号
+     */
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    /**
+     * 获取交易号
+     *
+     * @return tran_no - 交易号
+     */
+    public String getTranNo() {
+        return tranNo;
+    }
+
+    /**
+     * 设置交易号
+     *
+     * @param tranNo 交易号
+     */
+    public void setTranNo(String tranNo) {
+        this.tranNo = tranNo;
+    }
+
+    /**
+     * 获取用户id
+     *
+     * @return user_id - 用户id
+     */
+    public Long getUserId() {
+        return userId;
+    }
+
+    /**
+     * 设置用户id
+     *
+     * @param userId 用户id
+     */
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取交易金额
+     *
+     * @return amount - 交易金额
+     */
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    /**
+     * 设置交易金额
+     *
+     * @param amount 交易金额
+     */
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    /**
+     * 获取余额
+     *
+     * @return balance - 余额
+     */
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    /**
+     * 设置余额
+     *
+     * @param balance 余额
+     */
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    /**
+     * 获取借方账户
+     *
+     * @return debit_account - 借方账户
+     */
+    public Long getDebitAccount() {
+        return debitAccount;
+    }
+
+    /**
+     * 设置借方账户
+     *
+     * @param debitAccount 借方账户
+     */
+    public void setDebitAccount(Long debitAccount) {
+        this.debitAccount = debitAccount;
+    }
+
+    /**
+     * 获取贷方账户
+     *
+     * @return credit_account - 贷方账户
+     */
+    public Long getCreditAccount() {
+        return creditAccount;
+    }
+
+    /**
+     * 设置贷方账户
+     *
+     * @param creditAccount 贷方账户
+     */
+    public void setCreditAccount(Long creditAccount) {
+        this.creditAccount = creditAccount;
+    }
+
+    /**
+     * 获取状态 1未结算 2已结算
+     *
+     * @return status - 状态 1未结算 2已结算
+     */
+    public Integer getStatus() {
+        return status;
+    }
+
+    /**
+     * 设置状态 1未结算 2已结算
+     *
+     * @param status 状态 1未结算 2已结算
+     */
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    /**
+     * 获取类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     *
+     * @return biz_type - 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     */
+    public Integer getBizType() {
+        return bizType;
+    }
+
+    /**
+     * 设置类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     *
+     * @param bizType 类型 1开团红包 2参团红包 3签到红包 4下级红包佣金 5下下级红包佣金
+     */
+    public void setBizType(Integer bizType) {
+        this.bizType = bizType;
+    }
+
+    /**
+     * 获取交易时间
+     *
+     * @return trans_time - 交易时间
+     */
+    public Date getTransTime() {
+        return transTime;
+    }
+
+    /**
+     * 设置交易时间
+     *
+     * @param transTime 交易时间
+     */
+    public void setTransTime(Date transTime) {
+        this.transTime = transTime;
+    }
+
+    /**
+     * 获取待结算时间
+     *
+     * @return settle_time - 待结算时间
+     */
+    public Date getSettleTime() {
+        return settleTime;
+    }
+
+    /**
+     * 设置待结算时间
+     *
+     * @param settleTime 待结算时间
+     */
+    public void setSettleTime(Date settleTime) {
+        this.settleTime = settleTime;
+    }
+
+    /**
+     * 获取创建人
+     *
+     * @return create_user - 创建人
+     */
+    public String getCreateUser() {
+        return createUser;
+    }
+
+    /**
+     * 设置创建人
+     *
+     * @param createUser 创建人
+     */
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    /**
+     * 获取更新人
+     *
+     * @return update_user - 更新人
+     */
+    public String getUpdateUser() {
+        return updateUser;
+    }
+
+    /**
+     * 设置更新人
+     *
+     * @param updateUser 更新人
+     */
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    /**
+     * 获取更新时间
+     *
+     * @return update_time - 更新时间
+     */
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * 设置更新时间
+     *
+     * @param updateTime 更新时间
+     */
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * 获取创建时间
+     *
+     * @return create_time - 创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * 设置创建时间
+     *
+     * @param createTime 创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取版本号
+     *
+     * @return version - 版本号
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * 设置版本号
+     *
+     * @param version 版本号
+     */
+    public void setVersion(String version) {
+        this.version = version;
+    }
+}

+ 1 - 1
cif-service/src/main/java/com/txz/cif/model/Subject.java

@@ -11,7 +11,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.Subject")
+@ApiModel(value="com.txz.cif.model.Subject")
 @Table(name = "c_subject")
 public class Subject {
     @Id

+ 9 - 1
cif-service/src/main/java/com/txz/cif/model/User.java

@@ -17,7 +17,7 @@ import javax.persistence.*;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-@ApiModel(value="com.medipath.cif.model.User")
+@ApiModel(value="com.txz.cif.model.User")
 @Table(name = "c_user")
 public class User  {
     @Id
@@ -137,6 +137,12 @@ public class User  {
     @ApiModelProperty(value="createUser创建人")
     private String createUser;
 
+    @Column(name = "bank_account_name")
+    @ApiModelProperty(value="银行用户名称")
+    private String bankAccountName;
+
+
+
     /**
      * 更新人
      */
@@ -171,6 +177,8 @@ public class User  {
     @ApiModelProperty(value="isDelete删除状态 1未删除 2已删除")
     private Byte isDelete;
 
+
+
     /**
      * 密码
      */

+ 2 - 0
cif-service/src/main/java/com/txz/cif/service/AccountService.java

@@ -33,4 +33,6 @@ public interface AccountService extends Service<Account> {
      * @return
      */
     BigDecimal sumEnd(String aliases);
+
+    Account getAccount(Long userId, int type);
 }

+ 1 - 0
cif-service/src/main/java/com/txz/cif/service/ConfigMemberService.java

@@ -8,4 +8,5 @@ import com.txz.cif.core.Service;
  */
 public interface ConfigMemberService extends Service<ConfigMember> {
 
+
 }

+ 5 - 30
cif-service/src/main/java/com/txz/cif/service/FlowService.java

@@ -9,32 +9,7 @@ import com.txz.cif.param.*;
  */
 public interface FlowService extends Service<Flow> {
 
-    /**
-     * 冻结
-     * @param param
-     * @return 流水号
-     */
-    Result freeze(FreezdParam param);
-
-    /**
-     * 解冻(全额解冻)
-     * @param freezdId
-     */
-    Result unFreeze(Long freezdId);
-
-    /**
-     * 交易
-     * @param param
-     * @return
-     */
-    Result trans(TransParam param);
 
-    /**
-     * 解冻并交易
-     * @param param
-     * @return
-     */
-    Result unFreezeAndTrans(UnFreezdAndTransParam param);
 
     /**
      * 充值
@@ -44,18 +19,18 @@ public interface FlowService extends Service<Flow> {
     Result recharge(RechargeParam param);
 
     /**
-     * 收费
+     * 支付
      * @param param
      * @return
      */
-    Result fee(FeeParam param);
+    Result pay(PayParam param);
 
     /**
-     * 佣金
+     * 退款
      * @param param
      * @return
      */
-    Result commission(CommissionParam param);
+    Result refund(RefundParam param);
 
 
 
@@ -66,5 +41,5 @@ public interface FlowService extends Service<Flow> {
      */
     Result withdraw(WithdrawParam param);
 
-    Result unFreezeAndFreeze(Long freezdId, FreezdParam param);
+
 }

+ 19 - 0
cif-service/src/main/java/com/txz/cif/service/RedEnvelopeService.java

@@ -0,0 +1,19 @@
+package com.txz.cif.service;
+import com.txz.cif.dto.Result;
+import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.core.Service;
+import com.txz.cif.param.SignRedEnvelopeParam;
+import com.txz.cif.web.para.RedEnvelopeParam;
+
+import java.math.BigDecimal;
+
+
+/**
+ * Created by CodeGenerator on 2025/07/15.
+ */
+public interface RedEnvelopeService extends Service<RedEnvelope> {
+
+    Result addRedEnvelope(RedEnvelopeParam param);
+
+    BigDecimal sumWithDay(int day, Long userId);
+}

+ 13 - 0
cif-service/src/main/java/com/txz/cif/service/impl/AccountServiceImpl.java

@@ -220,4 +220,17 @@ public class AccountServiceImpl extends AbstractService<Account> implements Acco
         }
         return today.add(befor);
     }
+
+    @Override
+    public Account getAccount(Long userId, int type) {
+        Condition c = new Condition(Account.class);
+        c.createCriteria().andEqualTo("userId",userId)
+                .andEqualTo("bizType",type);
+        List<Account> accounts = findByCondition(c);
+        if (CollUtil.isEmpty(accounts)){
+            return null;
+        }
+        return accounts.get(0);
+
+    }
 }

+ 4 - 0
cif-service/src/main/java/com/txz/cif/service/impl/ConfigMemberServiceImpl.java

@@ -1,5 +1,6 @@
 package com.txz.cif.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.txz.cif.dao.ConfigMemberMapper;
 import com.txz.cif.model.ConfigMember;
 import com.txz.cif.service.ConfigMemberService;
@@ -8,6 +9,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 
 /**

+ 146 - 178
cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java

@@ -1,17 +1,11 @@
 package com.txz.cif.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
 import com.txz.cif.constants.MyConstants;
-import com.txz.cif.core.ResultCode;
-import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.FlowMapper;
 import com.txz.cif.dto.Result;
 import com.txz.cif.model.Account;
 import com.txz.cif.model.AccountFlow;
-import com.txz.cif.model.AccountFreezd;
 import com.txz.cif.model.Flow;
 import com.txz.cif.param.*;
 import com.txz.cif.service.AccountFlowService;
@@ -24,7 +18,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -46,107 +39,107 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     @Resource
     private AccountFreezdService accountFreezdService;
 
-    @Override
-    public Result freeze(FreezdParam param) {
-        try{
-            Account account = accountService.findById(param.getAccountId());
-            if (account == null){
-                return Result.genFailResult("账号未找到");
-            }
-            if (account.getEffectiveBalance().subtract(param.getAmount()).compareTo(BigDecimal.ZERO) < 0){
-                return Result.genFailResult("冻结金额不足");
-            }
-            Date today = DateUtil.date();
+//    @Override
+//    public Result freeze(FreezdParam param) {
+//        try{
+//            Account account = accountService.findById(param.getAccountId());
+//            if (account == null){
+//                return Result.genFailResult("账号未找到");
+//            }
+//            if (account.getEffectiveBalance().subtract(param.getAmount()).compareTo(BigDecimal.ZERO) < 0){
+//                return Result.genFailResult("冻结金额不足");
+//            }
+//            Date today = DateUtil.date();
+//
+//            Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
+//                    .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
+//                    .debitAccount(param.getAccountId()).creditAccount(param.getAccountId())
+//                    .bizId(param.getBizId()).type(4)
+//                    .build();
+//            saveUseGeneratedKeys(flow);
+//            accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
+//                    .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
+//                    .bizNo(flow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().add(param.getAmount()))
+//                    .flowType(4).type(1).bizType(param.getBizType()).flowId(flow.getId()).build());
+//            AccountFreezd freezd = AccountFreezd.builder().accountId(param.getAccountId()).flowId(flow.getId())
+//                    .amount(param.getAmount()).createTime(today).unfreezeAmount(BigDecimal.ZERO)
+//                    .updateTime(today).status(1).build();
+//            accountFreezdService.saveUseGeneratedKeys(freezd);
+//            return Result.genSuccessResult(freezd.getId());
+//        }catch (Exception e){
+//            log.error("冻结异常",e);
+//            return Result.genFailResult("冻结异常",e);
+//        }
+//
+//    }
 
-            Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
-                    .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                    .debitAccount(param.getAccountId()).creditAccount(param.getAccountId())
-                    .bizId(param.getBizId()).type(4)
-                    .build();
-            saveUseGeneratedKeys(flow);
-            accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
-                    .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
-                    .bizNo(flow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().add(param.getAmount()))
-                    .flowType(4).type(1).bizType(param.getBizType()).flowId(flow.getId()).build());
-            AccountFreezd freezd = AccountFreezd.builder().accountId(param.getAccountId()).flowId(flow.getId())
-                    .amount(param.getAmount()).createTime(today).unfreezeAmount(BigDecimal.ZERO)
-                    .updateTime(today).status(1).build();
-            accountFreezdService.saveUseGeneratedKeys(freezd);
-            return Result.genSuccessResult(freezd.getId());
-        }catch (Exception e){
-            log.error("冻结异常",e);
-            return Result.genFailResult("冻结异常",e);
-        }
+//    @Override
+//    public Result unFreeze(Long freezdId) {
+//        AccountFreezd freezd = accountFreezdService.findById(freezdId);
+//        if (freezd == null){
+//            return Result.genFailResult("冻结记录未找到");
+//        }
+//        Flow oldFlow = findById(freezd.getFlowId());
+//        if (oldFlow == null){
+//            return Result.genFailResult("冻结记录未找到");
+//        }
+//
+//        Account account = accountService.findById(freezd.getAccountId());
+//        if (account == null){
+//            return Result.genFailResult("冻结账号未找到");
+//        }
+//        Date today = DateUtil.date();
+//        Flow flow = Flow.builder().amount(freezd.getAmount()).bizType(5001)
+//                .bizNo(oldFlow.getBizNo()).createTime(today).updateTime(today).transTime(today)
+//                .debitAccount(oldFlow.getDebitAccount()).creditAccount(oldFlow.getCreditAccount())
+//                .bizId(oldFlow.getBizId()).type(5)
+//                .build();
+//        saveUseGeneratedKeys(flow);
+//        accountService.deal(AccountFlow.builder().accountId(oldFlow.getDebitAccount()).amount(flow.getAmount())
+//                .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(today)
+//                .bizNo(flow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().subtract(oldFlow.getAmount()))
+//                .flowType(5).type(2).bizType(flow.getBizType()).flowId(flow.getId()).build());
+//        accountFreezdService.update(AccountFreezd.builder().id(freezdId).status(3).unfreezeAmount(oldFlow.getAmount()).build());
+//        return Result.genSuccessResult();
+//    }
 
-    }
+//    @Override
+//    public Result trans(TransParam param) {
+//        switch (param.getBizType()){
+//            case 1001:
+//                RechargeParam p1 = BeanUtil.toBean(param,RechargeParam.class);
+//                p1.setAccountId(param.getCreditAccount());
+//                return recharge(p1);
+//            case 2001:
+//                FeeParam p2 = BeanUtil.toBean(param,FeeParam.class);
+//                p2.setAccountId(param.getDebitAccount());
+//                return fee(p2);
+//            case 2002:
+//                CommissionParam p3 = BeanUtil.toBean(param,CommissionParam.class);
+//                p3.setAccountId(param.getCreditAccount());
+//                return commission(p3);
+//        }
+//        return null;
+//    }
 
-    @Override
-    public Result unFreeze(Long freezdId) {
-        AccountFreezd freezd = accountFreezdService.findById(freezdId);
-        if (freezd == null){
-            return Result.genFailResult("冻结记录未找到");
-        }
-        Flow oldFlow = findById(freezd.getFlowId());
-        if (oldFlow == null){
-            return Result.genFailResult("冻结记录未找到");
-        }
+//    @Override
+//    public Result unFreezeAndTrans(UnFreezdAndTransParam param) {
+//        unFreeze(param.getFreezdId());
+//        if (CollUtil.isNotEmpty(param.getTrans())){
+//            for (TransParam p: param.getTrans()) {
+//                Result r = trans(p);
+//                if (r == null || !StrUtil.equals(r.getCode() , "200")){
+//                    throw new ServiceException(ResultCode.INTERNAL_SERVER_ERROR);
+//                }
+//            }
+//        }
+//        return Result.genSuccessResult();
+//    }
 
-        Account account = accountService.findById(freezd.getAccountId());
-        if (account == null){
-            return Result.genFailResult("冻结账号未找到");
-        }
-        Date today = DateUtil.date();
-        Flow flow = Flow.builder().amount(freezd.getAmount()).bizType(5001)
-                .bizNo(oldFlow.getBizNo()).createTime(today).updateTime(today).transTime(today)
-                .debitAccount(oldFlow.getDebitAccount()).creditAccount(oldFlow.getCreditAccount())
-                .bizId(oldFlow.getBizId()).type(5)
-                .build();
-        saveUseGeneratedKeys(flow);
-        accountService.deal(AccountFlow.builder().accountId(oldFlow.getDebitAccount()).amount(flow.getAmount())
-                .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(today)
-                .bizNo(flow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().subtract(oldFlow.getAmount()))
-                .flowType(5).type(2).bizType(flow.getBizType()).flowId(flow.getId()).build());
-        accountFreezdService.update(AccountFreezd.builder().id(freezdId).status(3).unfreezeAmount(oldFlow.getAmount()).build());
-        return Result.genSuccessResult();
-    }
-
-    @Override
-    public Result trans(TransParam param) {
-        switch (param.getBizType()){
-            case 1001:
-                RechargeParam p1 = BeanUtil.toBean(param,RechargeParam.class);
-                p1.setAccountId(param.getCreditAccount());
-                return recharge(p1);
-            case 2001:
-                FeeParam p2 = BeanUtil.toBean(param,FeeParam.class);
-                p2.setAccountId(param.getDebitAccount());
-                return fee(p2);
-            case 2002:
-                CommissionParam p3 = BeanUtil.toBean(param,CommissionParam.class);
-                p3.setAccountId(param.getCreditAccount());
-                return commission(p3);
-        }
-        return null;
-    }
-
-    @Override
-    public Result unFreezeAndTrans(UnFreezdAndTransParam param) {
-        unFreeze(param.getFreezdId());
-        if (CollUtil.isNotEmpty(param.getTrans())){
-            for (TransParam p: param.getTrans()) {
-                Result r = trans(p);
-                if (r == null || !StrUtil.equals(r.getCode() , "200")){
-                    throw new ServiceException(ResultCode.INTERNAL_SERVER_ERROR);
-                }
-            }
-        }
-        return Result.genSuccessResult();
-    }
 
     @Override
     public Result recharge(RechargeParam param) {
-
-        Account account = accountService.findById(param.getAccountId());
+        Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
             return Result.genFailResult("账号未找到");
         }
@@ -157,29 +150,55 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
                 .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .debitAccount(MyConstants.INNER_CAPITAL).creditAccount(param.getAccountId())
+                .debitAccount(MyConstants.INNER_CAPITAL).creditAccount(account.getId())
                 .bizId(param.getBizId()).type(1)
                 .build();
         saveUseGeneratedKeys(flow);
-        //借 :资金应收-渠道款-银行xx元  内部户1(资产类:借方账户)+钱
+        //借 :平台资金银行xx元  内部户1(资产类:借方账户)+钱
         accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_CAPITAL).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(innerCapitalAccount.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(innerCapitalAccount.getBalance().add(flow.getAmount()))
                 .freezeAmount(innerCapitalAccount.getFreezeAmount())
                 .flowType(1).type(2).bizType(param.getBizType()).flowId(flow.getId()).build());
         //贷 :客户资金账户xx元 客户账号(负债类:贷方账户)+钱
-        accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(account.getBalance().add(flow.getAmount()))
                 .freezeAmount(account.getFreezeAmount())
                 .flowType(1).type(2).bizType(param.getBizType()).flowId(flow.getId()).build());
+
+        //充值返点
+        Account innerRebateAccount = accountService.findById(MyConstants.INNER_REBATE);
+        if (innerCapitalAccount == null){
+            return Result.genFailResult("账号未找到");
+        }
+        flow = Flow.builder().amount(param.getAmount()).bizType(10)
+                .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
+                .debitAccount(MyConstants.INNER_REBATE).creditAccount(account.getId())
+                .bizId(param.getBizId()).type(1)
+                .build();
+        saveUseGeneratedKeys(flow);
+        //借 :平台资金银行xx元  内部户1(资产类:借方账户)+钱
+        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_REBATE).amount(flow.getAmount())
+                .bizId(flow.getBizId()).aliases(innerRebateAccount.getAliases()).transTime(param.getTransTime())
+                .bizNo(flow.getBizNo()).balance(innerRebateAccount.getBalance().add(flow.getAmount()))
+                .freezeAmount(innerRebateAccount.getFreezeAmount())
+                .flowType(1).type(2).bizType(param.getBizType()).flowId(flow.getId()).build());
+        //贷 :客户资金账户xx元 客户账号(负债类:贷方账户)+钱
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
+                .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
+                .bizNo(flow.getBizNo()).balance(account.getBalance().add(flow.getAmount()))
+                .freezeAmount(account.getFreezeAmount())
+                .flowType(1).type(2).bizType(10).flowId(flow.getId()).build());
+
+
         return Result.genSuccessResult();
     }
 
     @Override
-    public Result fee(FeeParam param) {
+    public Result pay(PayParam param) {
 
-        Account account = accountService.findById(param.getAccountId());
+        Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
             return Result.genFailResult("账号未找到");
         }
@@ -188,17 +207,17 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
             return Result.genFailResult("账号未找到");
         }
 
-        //借:医院A账户(贷)     -500元
+        //借:个人账户钱包(贷)     -500元
         //贷:平台主营收入(贷)   +500元
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
                 .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .debitAccount(param.getAccountId()).creditAccount(MyConstants.INNER_INCOME)
+                .debitAccount(account.getId()).creditAccount(MyConstants.INNER_INCOME)
                 .bizId(param.getBizId()).type(6)
                 .build();
         saveUseGeneratedKeys(flow);
-        //借:医院A账户(贷)     -500元
-        accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
+        //借:个人账户钱包(贷)     -500元
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(account.getBalance().subtract(flow.getAmount()))
                 .freezeAmount(account.getFreezeAmount())
@@ -213,33 +232,33 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     }
 
     @Override
-    public Result commission(CommissionParam param) {
-        //借:专家提成(借)     +100元
-        //贷:销售人员账户(贷)  +100元
+    public Result refund(RefundParam param) {
+        //借:主营支出-退款(借)     +100元
+        //贷:个人账户    (贷)     +100元
 
-        Account account = accountService.findById(param.getAccountId());
+        Account account = accountService.getAccount(param.getUserId(),1);
         if (account == null){
             return Result.genFailResult("账号未找到");
         }
-        Account innerSpecialistAccount = accountService.findById(MyConstants.INNER_SPECIALIST);
-        if (innerSpecialistAccount == null){
+        Account innerRefundAccount = accountService.findById(MyConstants.INNER_REFUND);
+        if (innerRefundAccount == null){
             return Result.genFailResult("账号未找到");
         }
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
                 .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .debitAccount(MyConstants.INNER_SPECIALIST).creditAccount(param.getAccountId())
+                .debitAccount(MyConstants.INNER_REFUND).creditAccount(account.getId())
                 .bizId(param.getBizId()).type(6)
                 .build();
         saveUseGeneratedKeys(flow);
-        //借:专家提成(借)     +100元
-        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_SPECIALIST).amount(flow.getAmount())
-                .bizId(flow.getBizId()).aliases(innerSpecialistAccount.getAliases()).transTime(param.getTransTime())
-                .bizNo(flow.getBizNo()).balance(innerSpecialistAccount.getBalance().add(flow.getAmount()))
-                .freezeAmount(innerSpecialistAccount.getFreezeAmount())
+        //借:主营支出-退款(借)     +100元
+        accountService.deal(AccountFlow.builder().accountId(MyConstants.INNER_REFUND).amount(flow.getAmount())
+                .bizId(flow.getBizId()).aliases(innerRefundAccount.getAliases()).transTime(param.getTransTime())
+                .bizNo(flow.getBizNo()).balance(innerRefundAccount.getBalance().add(flow.getAmount()))
+                .freezeAmount(innerRefundAccount.getFreezeAmount())
                 .flowType(7).type(2).bizType(param.getBizType()).flowId(flow.getId()).build());
-        //贷:销售人员账户(贷)  +100元
-        accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
+        //贷:个人账户(贷)  +100元
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(account.getBalance().add(flow.getAmount()))
                 .freezeAmount(account.getFreezeAmount())
@@ -250,7 +269,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     @Override
     public Result withdraw(WithdrawParam param) {
 
-        Account account = accountService.findById(param.getAccountId());
+        Account account = accountService.getAccount(param.getUserId(),param.getAccountType());
         if (account == null){
             return Result.genFailResult("账号未找到");
         }
@@ -262,13 +281,13 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         Date today = DateUtil.date();
         Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
                 .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .creditAccount(MyConstants.INNER_CAPITAL).debitAccount(param.getAccountId())
+                .creditAccount(MyConstants.INNER_CAPITAL).debitAccount(account.getId())
                 .bizId(param.getBizId()).type(1)
                 .build();
         saveUseGeneratedKeys(flow);
 
         //借 :客户资金账户xx元 客户账号(负债类:贷方账户)-钱
-        accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
+        accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
                 .bizNo(flow.getBizNo()).balance(account.getBalance().subtract(flow.getAmount()))
                 .freezeAmount(account.getFreezeAmount())
@@ -282,56 +301,5 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         return Result.genSuccessResult();
     }
 
-    @Override
-    public Result unFreezeAndFreeze(Long freezdId, FreezdParam param) {
-
-        //判断是否足够冻结
-        AccountFreezd oldFreezd = accountFreezdService.findById(freezdId);
-        if (oldFreezd == null){
-            return Result.genFailResult("冻结记录未找到");
-        }
-        Flow oldFlow = findById(oldFreezd.getFlowId());
-        if (oldFlow == null){
-            return Result.genFailResult("冻结记录未找到");
-        }
-
-        Account account = accountService.findById(oldFreezd.getAccountId());
-        if (account == null){
-            return Result.genFailResult("冻结账号未找到");
-        }
-
-        if (param.getAmount().compareTo(account.getEffectiveBalance().add(oldFreezd.getAmount())) > 0){
-            return Result.genFailResult("冻结金额不足");
-        }
-
-        Date today = DateUtil.date();
-        Flow unflow = Flow.builder().amount(oldFreezd.getAmount()).bizType(5001)
-                .bizNo(oldFlow.getBizNo()).createTime(today).updateTime(today).transTime(today)
-                .debitAccount(oldFlow.getDebitAccount()).creditAccount(oldFlow.getCreditAccount())
-                .bizId(oldFlow.getBizId()).type(5)
-                .build();
-        saveUseGeneratedKeys(unflow);
-        accountService.deal(AccountFlow.builder().accountId(oldFlow.getDebitAccount()).amount(unflow.getAmount())
-                .bizId(unflow.getBizId()).aliases(account.getAliases()).transTime(today)
-                .bizNo(unflow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().subtract(oldFlow.getAmount()))
-                .flowType(5).type(2).bizType(unflow.getBizType()).flowId(unflow.getId()).build());
-        accountFreezdService.update(AccountFreezd.builder().id(freezdId).status(3).unfreezeAmount(oldFlow.getAmount()).build());
 
-
-        Flow flow = Flow.builder().amount(param.getAmount()).bizType(param.getBizType())
-                .bizNo(param.getBizNo()).createTime(today).updateTime(today).transTime(param.getTransTime())
-                .debitAccount(param.getAccountId()).creditAccount(param.getAccountId())
-                .bizId(param.getBizId()).type(4)
-                .build();
-        saveUseGeneratedKeys(flow);
-        accountService.deal(AccountFlow.builder().accountId(param.getAccountId()).amount(flow.getAmount())
-                .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
-                .bizNo(flow.getBizNo()).balance(account.getBalance()).freezeAmount(account.getFreezeAmount().add(param.getAmount()))
-                .flowType(4).type(1).bizType(param.getBizType()).flowId(flow.getId()).build());
-        AccountFreezd freezd = AccountFreezd.builder().accountId(param.getAccountId()).flowId(flow.getId())
-                .amount(param.getAmount()).createTime(today).unfreezeAmount(BigDecimal.ZERO)
-                .updateTime(today).status(1).build();
-        accountFreezdService.saveUseGeneratedKeys(freezd);
-        return Result.genSuccessResult(freezd.getId());
-    }
 }

+ 157 - 0
cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java

@@ -0,0 +1,157 @@
+package com.txz.cif.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import com.txz.cif.constants.MyConstants;
+import com.txz.cif.dao.RedEnvelopeMapper;
+import com.txz.cif.dto.Result;
+import com.txz.cif.dubbo.client.OperatingConfigDubboServiceClient;
+import com.txz.cif.model.Account;
+import com.txz.cif.model.ConfigMember;
+import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.model.User;
+import com.txz.cif.param.SignRedEnvelopeParam;
+import com.txz.cif.service.AccountService;
+import com.txz.cif.service.ConfigMemberService;
+import com.txz.cif.service.RedEnvelopeService;
+import com.txz.cif.core.AbstractService;
+import com.txz.cif.service.UserService;
+import com.txz.cif.web.para.RedEnvelopeParam;
+import com.txz.operating.dto.ConfigDTO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.entity.Condition;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * Created by CodeGenerator on 2025/07/15.
+ */
+@Service
+@Transactional
+public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> implements RedEnvelopeService {
+    @Resource
+    private RedEnvelopeMapper cRedEnvelopeMapper;
+
+    @Resource
+    private AccountService accountService;
+
+    @Resource
+    private UserService userService;
+
+    @Resource
+    private OperatingConfigDubboServiceClient operatingConfigDubboServiceClient;
+
+    @Resource
+    private ConfigMemberService configMemberService;
+
+    @Override
+    public Result addRedEnvelope(RedEnvelopeParam param) {
+        com.txz.operating.result.Result<ConfigDTO> redEnvelopeSettelDay = operatingConfigDubboServiceClient.getConfigByCode("red_envelope_settel_day");
+        Integer settleDay = Integer.parseInt(redEnvelopeSettelDay.getData().getValueInfo());
+        Date settleTime = DateUtil.offsetDay(param.getTransTime(),settleDay);
+        List<RedEnvelope> redEnvelopes = new ArrayList<>();
+        if (param.getBizType() == 1){
+            //开团红包
+            redEnvelopes.addAll(bulidRedEnvelope(param.getUserIds().get(0),param,settleTime)) ;
+        } else if (param.getBizType() == 2){
+            //参团红包
+            for (Long userId:param.getUserIds()){
+                redEnvelopes.addAll(bulidRedEnvelope(userId,param,settleTime)) ;
+            }
+        } else if (param.getBizType() == 3){
+            //签到红包
+            redEnvelopes.addAll(bulidRedEnvelope(param.getUserIds().get(0),param,settleTime)) ;
+        }
+        if (CollUtil.isNotEmpty(redEnvelopes)){
+
+            save(redEnvelopes);
+        }
+        return null;
+    }
+
+    @Override
+    public BigDecimal sumWithDay(int day, Long userId) {
+        return cRedEnvelopeMapper.sumWithDay(DateUtil.offsetDay(DateUtil.date(),-day),userId);
+    }
+
+    /**
+     * 构建红包对象
+     * @param userId
+     * @param param
+     * @param settleTime
+     * @return
+     */
+    private List<RedEnvelope> bulidRedEnvelope(Long userId, RedEnvelopeParam param, Date settleTime) {
+
+        List<RedEnvelope> ret = new ArrayList<>();
+        //红包
+        ret.add(bulidRedEnvelope2(1,userId,param,settleTime)) ;
+        // 开团、参团 才有 佣金红包
+        if (param.getBizType() < 3){
+            //只有 开团、参团 有分佣
+            User user = userService.findById(userId);
+            if (user.getPid() != null){
+                //找父亲 上级分佣
+                ret.add(bulidRedEnvelope2(2,user.getPid(),param,settleTime)) ;
+                if (user.getPpid() != null){
+                    //找爷爷 上上级分佣
+                    ret.add(bulidRedEnvelope2(3,user.getPpid(),param,settleTime)) ;
+                }
+            }
+        }
+
+        return ret;
+    }
+
+    /**
+     *
+     * @param type 1自己 2父亲 3爷爷
+     * @param userId
+     * @param param
+     * @param settleTime
+     * @return
+     */
+    private RedEnvelope bulidRedEnvelope2(Integer type , Long userId, RedEnvelopeParam param, Date settleTime) {
+        Condition c = new Condition(Account.class);
+        c.createCriteria().andEqualTo("userId", userId)
+                .andEqualTo("bizType",2);
+        List<Account> accounts = accountService.findByCondition(c);
+        Account account = accounts.get(0);
+        Long id = IdUtil.getSnowflake(1,1).nextId();
+        //借:营销账户(负债类201)(贷)     -100元
+        //贷:个人账户(负债类202)(贷)     +100元
+        BigDecimal amount = param.getAmount();
+        if (type > 1 ){
+            User user = userService.findById(userId);
+            ConfigMember level = configMemberService.findBy("level", user.getVipLevel());
+            if (type == 2){
+                amount = amount.multiply(level.getDirectReferralReward()).divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN);
+            } else {
+                amount = amount.multiply(level.getIndirectReferralReward()).divide(BigDecimal.valueOf(100),2, RoundingMode.DOWN);
+            }
+        }
+        RedEnvelope redEnvelope = RedEnvelope.builder()
+                .amount(amount)
+                .createTime(DateUtil.date())
+                .orderNo(param.getOrderNo())
+                //类型: 1(自己) 返回  1(开团)或2(参团)  2(父亲)返回4(上级分佣)  3(爷爷)返回5(上上级分佣)
+                .bizType(type == 1?param.getBizType(): type==2? 4:5)
+                .debitAccount(MyConstants.INNER_MARKETING)
+                .creditAccount(account.getId())
+                .transTime(param.getTransTime())
+                .status(1)
+                .userId(param.getUserIds().get(0))
+                .tranNo(id+"")
+                .settleTime(settleTime)
+                .build();
+        return redEnvelope;
+    }
+}

+ 2 - 10
cif-service/src/main/java/com/txz/cif/service/impl/UserServiceImpl.java

@@ -1,36 +1,28 @@
 package com.txz.cif.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
-import cn.hutool.json.JSONUtil;
 import com.txz.cif.constants.RedisConstants;
 import com.txz.cif.core.*;
-import com.txz.cif.dubbo.client.MessageDubboServiceClient;
+import com.txz.cif.dubbo.client.OperatingConfigDubboServiceClient;
 import com.txz.cif.enums.MessageBizTypeEnum;
 import com.txz.cif.model.*;
 import com.txz.cif.param.MessageParam;
 import com.txz.cif.dao.UserMapper;
 import com.txz.cif.service.*;
-import com.txz.cif.util.MailClient;
 import com.txz.cif.web.para.UserAddParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import tk.mybatis.mapper.entity.Condition;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import static java.util.regex.Pattern.compile;
 
@@ -59,7 +51,7 @@ public class UserServiceImpl extends AbstractService<User> implements UserServic
 //    private OperatorService operatorService;
 
     @Resource
-    private MessageDubboServiceClient messageDubboServiceClient;
+    private OperatingConfigDubboServiceClient messageDubboServiceClient;
 
     @Override public Boolean checkMail(String email) {
         User user = findBy("email",email);

+ 1 - 0
cif-service/src/main/java/com/txz/cif/util/MyDateUtil.java

@@ -61,4 +61,5 @@ public class MyDateUtil extends DateUtil {
     }
 
 
+
 }

+ 16 - 8
cif-service/src/main/java/com/txz/cif/web/AccountApiController.java

@@ -85,14 +85,22 @@ public class AccountApiController extends AbstractApiController {
 		if (param.getType() != null){
 			criteria.andEqualTo("type",param.getType());
 		}
-		if (StrUtil.isNotBlank(param.getCaseNo() )){
-			criteria.andEqualTo("caseNo",param.getCaseNo());
-		}
-		if (StrUtil.isNotBlank(param.getStartTime() )){
-			criteria.andGreaterThanOrEqualTo("createTime", param.getStartTime());
-		}
-		if (StrUtil.isNotBlank(param.getEndTime() )){
-			criteria.andLessThanOrEqualTo("createTime", param.getEndTime());
+		if (param.getType() == 1 ){
+			Date todayStart = DateUtil.beginOfDay(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime", todayStart);
+		} else if (param.getType() == 2){
+			Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
+			Date todayStart = DateUtil.beginOfDay(DateUtil.date());
+			criteria.andBetween("createTime", yesterdayStart,todayStart);
+		} else if (param.getType() == 3){
+			Date start = DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.date(),-7));
+			criteria.andGreaterThanOrEqualTo("createTime",start);
+		} else if (param.getType() == 4){
+			Date start = DateUtil.beginOfMonth(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime",start);
+		} else if (param.getType() == 5){
+			Date start = DateUtil.beginOfYear(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime",start);
 		}
 		c.setOrderByClause("create_time desc");
 		List<AccountFlow> flows = accountFlowService.findByCondition(c);

+ 78 - 0
cif-service/src/main/java/com/txz/cif/web/RedEnvelopeApiController.java

@@ -0,0 +1,78 @@
+package com.txz.cif.web;
+import cn.hutool.core.date.DateUtil;
+import com.txz.cif.core.Result;
+import com.txz.cif.core.ResultGenerator;
+import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.service.RedEnvelopeService;
+
+import com.txz.cif.core.ResultCode;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.txz.cif.web.para.RedEnvelopeListParam;
+import com.txz.cif.web.para.RedEnvelopeParam;
+import org.springframework.web.bind.annotation.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.txz.core.ServiceException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import tk.mybatis.mapper.entity.Condition;
+import tk.mybatis.mapper.entity.Example.Criteria;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import org.apache.commons.lang.StringUtils;
+
+/**
+* Created by CodeGenerator on 2025/07/15.
+*/
+@Api(tags = "[api]redEnvelope管理")
+@RestController
+@RequestMapping("/api/red/envelope")
+public class RedEnvelopeApiController {
+
+	private static Logger log = LoggerFactory.getLogger(RedEnvelopeApiController.class);
+
+    @Resource
+    private RedEnvelopeService redEnvelopeService;
+
+    @PostMapping("/list")
+	@ApiOperation(value = "redEnvelope获取列表",httpMethod = "POST")
+    public Result<List<RedEnvelope>> list(@RequestBody RedEnvelopeListParam param) {
+
+        PageHelper.startPage(param.getPage(), param.getSize());
+
+        Condition condition = new Condition(RedEnvelope.class);
+        Criteria criteria = condition.createCriteria();
+		if (param.getType() == 1 ){
+			Date todayStart = DateUtil.beginOfDay(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime", todayStart);
+		} else if (param.getType() == 2){
+			Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
+			Date todayStart = DateUtil.beginOfDay(DateUtil.date());
+			criteria.andBetween("createTime", yesterdayStart,todayStart);
+		} else if (param.getType() == 3){
+			Date start = DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.date(),-7));
+			criteria.andGreaterThanOrEqualTo("createTime",start);
+		} else if (param.getType() == 4){
+			Date start = DateUtil.beginOfMonth(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime",start);
+		} else if (param.getType() == 5){
+			Date start = DateUtil.beginOfYear(DateUtil.date());
+			criteria.andGreaterThanOrEqualTo("createTime",start);
+		}
+		PageInfo pageInfo = null;
+		try {
+			condition.setOrderByClause("create_time desc");
+    		 List<RedEnvelope> list = redEnvelopeService.findByCondition(condition);
+    		 pageInfo = new PageInfo(list);
+		} catch (Exception e) {
+			log.error("查询对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+        return ResultGenerator.genSuccessResult(pageInfo);
+    }
+}

+ 13 - 93
cif-service/src/main/java/com/txz/cif/web/UserApiController.java

@@ -1,5 +1,6 @@
 package com.txz.cif.web;
 
+import java.math.BigDecimal;
 import java.util.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -45,7 +46,7 @@ public class UserApiController extends AbstractApiController {
 
 
     @Resource
-    private ConfigMemberService configMemberService;
+    private RedEnvelopeService redEnvelopeService;
 
 
 
@@ -142,6 +143,17 @@ public class UserApiController extends AbstractApiController {
             return ResultGenerator.genFailResult(ResultCode.USER_IS_NULL);
         }
         UserInfoBO bo = user.generator();
+        Condition c = new Condition(User.class);
+        c.createCriteria().andEqualTo("pid",user.getId());
+        Integer invited = userService.countByCondition(c);
+        bo.setInvitedNo(invited);
+        c = new Condition(User.class);
+        c.createCriteria().andEqualTo("ppid",user.getId());
+        Integer invited2 = userService.countByCondition(c);
+        bo.setTeamNo(invited+invited2);
+        //7日收益
+        BigDecimal amount = redEnvelopeService.sumWithDay(7,user.getId());
+        bo.setL7DEarnings(amount);
         return ResultGenerator.genSuccessResult(bo);
     }
 
@@ -184,98 +196,6 @@ public class UserApiController extends AbstractApiController {
         return userService.resetPwd(userId,pwd,newPwd);
     }
 
-//    /**
-//     * 检查邮箱是否已注册
-//     *
-//     * @return 执行结果
-//     */
-//    @PostMapping("/checkMail")
-//    @ApiOperation(value = "检查邮箱是否被注册 true 未注册 false 已注册 ", notes = "检查邮箱是否已注册")
-//    public Result<Boolean> checkMail( @RequestParam("email") String email) {
-//        Boolean flag = userService.checkMail(email);
-//        return ResultGenerator.genSuccessResult(flag);
-//    }
-
-//    /**
-//     * 发送邮件获取验证码接口
-//     *
-//     * @param email 邮箱地址
-//     * @return 执行结果
-//     */
-//    @PostMapping("/sendMail")
-//    @ApiOperation(value = "发送邮件获取验证码接口 ", notes = "发送邮件获取验证码接口")
-//    public Result<Object> sendMail(@RequestParam("email") String email) {
-//        Result<Object> result = userService.sendMail(email);
-//        return result;
-//    }
-
-//    @ApiOperation(value = "用户邮箱登陆", notes = "用户邮箱登陆")
-//    @PostMapping("/emailLogin")
-//    public Result<?> emailLogin(@RequestParam("email") String email,
-//                                @RequestParam("pwd") String pwd) {
-//        User user = userService.findBy("email",email);
-//        if (user == null){
-//            return ResultGenerator.genFailResult("账号不存在");
-//        }
-//        pwd = SecureUtil.md5(pwd+user.getSalt());
-//        if (!StrUtil.equals(pwd,user.getPwd())){
-//            return ResultGenerator.genFailResult("密码错误");
-//        }
-//        String jwtToken = authService.buildJwtToken(user.getLoginAccount(), user.getId());
-//
-//        return ResultGenerator.genSuccessResult();
-//    }
-
-//    /**
-//     * 邮箱注册并登录
-//     *
-//     * @returnn 执行结果
-//     */
-//    @ApiOperation(value = "邮箱注册并登录 ", notes = "邮箱注册并登录")
-//    @PostMapping("/emailRegister")
-//    public Result<Object> emailRegister(@RequestParam("email") String email,
-//                                        @RequestParam("name") String name,
-//                                        @RequestParam("pwd") String pwd,
-//                                        @RequestParam("code") String code) {
-//        Boolean flag = userService.checkMail(email);
-//        if (!flag){
-//            return ResultGenerator.genFailResult("邮箱已注册");
-//        }
-//
-//        flag = userService.checkCode(email,code);
-//        if (!flag){
-//            return Result.fail("邮箱验证码已失效");
-//        }
-//        String salt = RandomUtil.randomString(4);
-//
-//        pwd = SecureUtil.md5(pwd+salt);
-//        // default avatar
-//        User newUser = new User();
-//        newUser.setName(name);
-//        newUser.setSalt(salt);
-//        newUser.setPwd(pwd);
-//        newUser.setEmail(email);
-//        newUser.setCreateTime(new Date());
-//        userService.save(newUser);
-//        String jwtToken = authService.buildJwtToken(newUser.getLoginAccount(), newUser.getId());
-//
-//        return ResultGenerator.genSuccessResult();
-//    }
-
-
-//    /**
-//     * 通过邮箱设置密码
-//     *
-//     * @param userId       用户 UID
-//     * @return          执行结果
-//     */
-//    @PostMapping("/resetPwd")
-//    public Result<Object> resetPwd(@RequestHeader(value = X_CLIENT_TOKEN_USERID,required = false) Long userId,
-//                                   @RequestParam("pwd") String pwd,
-//                                   @RequestParam("code") String code
-//                                   ) {
-//        return userService.resetPwd(userId,pwd,code);
-//    }
 
     @PostMapping("/myUsers")
     @ApiOperation(value = "获取我的邀请的用户",httpMethod = "POST")

+ 128 - 0
cif-service/src/main/java/com/txz/cif/web/mng/RedEnvelopeController.java

@@ -0,0 +1,128 @@
+package com.txz.cif.web.mng;
+import com.txz.cif.core.Result;
+import com.txz.cif.core.ResultGenerator;
+import com.txz.cif.model.RedEnvelope;
+import com.txz.cif.service.RedEnvelopeService;
+
+import com.txz.cif.core.ResultCode;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.web.bind.annotation.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.txz.core.ServiceException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import tk.mybatis.mapper.entity.Condition;
+import tk.mybatis.mapper.entity.Example.Criteria;
+
+import javax.annotation.Resource;
+import java.util.List;
+import org.apache.commons.lang.StringUtils;
+
+/**
+* Created by CodeGenerator on 2025/07/15.
+*/
+@Api(tags = "[后台]redEnvelope管理")
+@RestController
+@RequestMapping("/red/envelope")
+public class RedEnvelopeController {
+
+	private static Logger log = LoggerFactory.getLogger(RedEnvelopeController.class);
+
+    @Resource
+    private RedEnvelopeService redEnvelopeService;
+
+    @PostMapping("/add")
+	@ApiOperation(value = "redEnvelope新增",httpMethod = "POST")
+    public Result add(@RequestBody RedEnvelope redEnvelope) {
+    	if(redEnvelope == null){
+    		return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
+    	}
+    	try {
+    //		redEnvelope.setCreateTime(new Date());
+    //		redEnvelope.setCreateUserId(userId);
+    		redEnvelopeService.save(redEnvelope);
+		} catch (Exception e) {
+			log.error("新增对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+
+        return ResultGenerator.genSuccessResult(redEnvelope);
+    }
+
+    @GetMapping("/delete")
+	@ApiOperation(value = "redEnvelope删除",httpMethod = "GET")
+    public Result delete(@RequestParam Integer id) {
+    	if(id == null){
+    		return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
+    	}
+    	try {
+    		redEnvelopeService.deleteById(id);
+		} catch (Exception e) {
+			log.error("删除对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+        return ResultGenerator.genSuccessResult();
+    }
+
+    @PostMapping("/update")
+	@ApiOperation(value = "redEnvelope更新",httpMethod = "POST")
+    public Result update(@RequestBody RedEnvelope redEnvelope) {
+    	if(redEnvelope == null){
+    		return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
+    	}
+    	if(redEnvelope.getId() == null){
+    		return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
+    	}
+    	try {
+    //		redEnvelope.setUpdateTime(new Date());
+    //		redEnvelope.setUpdateUserId(userId);
+    		redEnvelopeService.update(redEnvelope);
+		} catch (Exception e) {
+			log.error("更新对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+        return ResultGenerator.genSuccessResult();
+    }
+
+    @GetMapping("/detail")
+	@ApiOperation(value = "redEnvelope获取详情",httpMethod = "GET")
+    public Result<RedEnvelope> detail(@RequestParam Integer id) {
+    	if(id == null){
+    		return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
+    	}
+
+    	RedEnvelope redEnvelope = null;
+    	try {
+    		redEnvelope = redEnvelopeService.findById(id);
+		} catch (Exception e) {
+			log.error("查询对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+
+        return ResultGenerator.genSuccessResult(redEnvelope);
+    }
+
+    @PostMapping("/list")
+	@ApiOperation(value = "redEnvelope获取列表",httpMethod = "POST")
+    public Result<List<RedEnvelope>> list(@RequestBody RedEnvelope redEnvelope, @RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "0") Integer size) {
+
+        PageHelper.startPage(page, size);
+
+        Condition condition = new Condition(redEnvelope.getClass());
+        Criteria criteria = condition.createCriteria();
+//        criteria.andEqualTo("name", city.getName());
+		PageInfo pageInfo = null;
+		try {
+    		 List<RedEnvelope> list = redEnvelopeService.findByCondition(condition);
+    		 pageInfo = new PageInfo(list);
+		} catch (Exception e) {
+			log.error("查询对象操作异常e:{}",e);
+			return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
+		}
+        return ResultGenerator.genSuccessResult(pageInfo);
+    }
+}

+ 2 - 14
cif-service/src/main/java/com/txz/cif/web/para/AccountFlowParam.java

@@ -23,21 +23,9 @@ public class AccountFlowParam {
     private Integer size;
 
     /**
-     * 类型 1出账 2入账
+     * 类型 1今天 2昨天 3近7天 4本月 5本年
      */
-    @ApiModelProperty(value="类型 1出账 2入账 ")
+    @ApiModelProperty(value="类型 1今天 2昨天 3近7天 4本月 5本年 ")
     private Integer type;
 
-    /**
-     * 病理号
-     */
-    @ApiModelProperty(value="病理号")
-    private String caseNo;
-
-    @ApiModelProperty(value="开始时间")
-    private String startTime;
-
-    @ApiModelProperty(value="结束时间")
-    private String endTime;
-
 }

+ 34 - 0
cif-service/src/main/java/com/txz/cif/web/para/RedEnvelopeListParam.java

@@ -0,0 +1,34 @@
+package com.txz.cif.web.para;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.NotNull;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel(value="红包集合入参")
+public class RedEnvelopeListParam {
+
+    @NotNull
+    @ApiModelProperty(value="页面")
+    private Integer page;
+
+    @NotNull
+    @ApiModelProperty(value="页面大小")
+    private Integer size;
+
+    /**
+     * 类型 1今天 2昨天 3近7天 4本月 5本年
+     */
+    @ApiModelProperty(value="类型 1今天 2昨天 3近7天 4本月 5本年 ")
+    private Integer type;
+
+
+
+
+}

+ 62 - 0
cif-service/src/main/java/com/txz/cif/web/para/RedEnvelopeParam.java

@@ -0,0 +1,62 @@
+/*
+*
+* RedEnvelopeDTO.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2025-07-15
+*/
+package com.txz.cif.web.para;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class RedEnvelopeParam implements Serializable {
+
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+
+
+    /**
+     * 用户id
+     */
+    private List<Long> userIds;
+
+    /**
+     * 交易金额
+     */
+    private BigDecimal amount;
+
+
+
+    /**
+     * 类型 1开团红包 2参团红包 3签到红包
+     */
+    private Integer bizType;
+
+    /**
+     * 交易时间
+     */
+    private Date transTime;
+
+
+
+    /**
+     * c_red_envelope
+     */
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 11 - 85
cif-service/src/main/java/com/txz/cif/web/para/UserInfoForm.java

@@ -15,43 +15,23 @@ import javax.persistence.Column;
 public class UserInfoForm {
 
 
-    /**
-     * 单位
-     */
-    @ApiModelProperty(value="unit单位")
-    private String unit;
-
     @ApiModelProperty(value="用户id")
     private Long userId;
 
+    @ApiModelProperty(value="headPic头像")
+    private String headPic;
+
     /**
      * 名字
      */
-    @ApiModelProperty(value="name名字")
+    @ApiModelProperty(value="full name")
     private String name;
 
-    @ApiModelProperty(value="科室名称")
-    private String department;
-
-    /**
-     * 身份证号
-     */
-    @ApiModelProperty(value="identity身份证号")
-    private String identity;
-
-
-    /**
-     * 工作状态 1空闲 2不接诊
-     */
-    @ApiModelProperty(value="workStatus工作状态 1空闲 2不接诊")
-    private Byte workStatus;
+    @ApiModelProperty(value="user name")
+    private String nickname;
 
-    @ApiModelProperty(value="所属系统多个使用,分割 ")
-    private String sysTypes;
 
 
-    @ApiModelProperty(value="看图习惯,前端自定义内容")
-    private String habit;
 
 
     /**
@@ -60,67 +40,13 @@ public class UserInfoForm {
     @ApiModelProperty(value="phoneNo电话")
     private String phoneNo;
 
-    @ApiModelProperty(value="电话消息 1接收 2不接收")
-    private Integer phoneMessage;
-
-
-    /**
-     * 邮箱
-     */
-    @ApiModelProperty(value="email邮箱")
-    private String email;
-
-    @ApiModelProperty(value="邮箱消息 1接收 2不接收")
-    private Integer emailMessage;
-
-    @ApiModelProperty(value="站内消息 1接收 2不接收")
-    private Integer instationMessage;
-
-    @ApiModelProperty(value="语言")
-    private String  language;
-
-    /**
-     * 头像
-     */
-    @ApiModelProperty(value="头像")
-    private String icon;
-
-    /**
-     * 居住地址
-     */
-    @ApiModelProperty(value="address居住地址")
-    private String address;
-
-    /**
-     * 性别 0未知 1男 2女
-     */
-    @ApiModelProperty(value="sex性别 0未知 1男 2女")
-    private Byte sex;
-
-    /**
-     * 所属省份代码
-     */
-    @ApiModelProperty(value="provinceCode所属省份代码")
-    private String provinceCode;
-
-    /**
-     * 所属城市码
-     */
-    @ApiModelProperty(value="cityCode所属城市码")
-    private String cityCode;
-
-    /**
-     * 所属区域代码
-     */
-    @ApiModelProperty(value="areaCode所属区域代码")
-    private String areaCode;
 
     /**
-     * 简介
+     * 银行
      */
-    @ApiModelProperty(value="简介")
-    private String introductory;
+    @ApiModelProperty(value="bank银行")
+    private String bank;
 
-    @ApiModelProperty(value="签名地址")
-    private String signUrl;
+    @ApiModelProperty(value="bankAccount银行账号")
+    private String bankAccount;
 }

+ 3 - 2
cif-service/src/main/resources/mapper/AccountMapper.xml

@@ -9,6 +9,7 @@
     <result column="remark" jdbcType="VARCHAR" property="remark" />
     <result column="aliases" jdbcType="VARCHAR" property="aliases" />
     <result column="subject_type" jdbcType="INTEGER" property="subjectType" />
+    <result column="biz_type" jdbcType="INTEGER" property="bizType" />
     <result column="user_id" jdbcType="BIGINT" property="userId" />
 
     <result column="name" jdbcType="VARCHAR" property="name" />
@@ -50,7 +51,7 @@
           ,before_day_init_balance = before_day_balance
           ,before_day_balance = balance
         where id =  #{accountId}
-          <if test="accountId != 7">
+          <if test="accountId != 5">
             and balance + #{amount} >= 0
           </if>
           and DATE_FORMAT( before_day_time, '%Y-%m-%d' ) != CURRENT_DATE
@@ -60,7 +61,7 @@
     update c_account
     set balance = balance + #{amount}
     where id =  #{accountId}
-    <if test="accountId != 7">
+    <if test="accountId != 5">
       and balance + #{amount} >= 0
     </if>
   </update>

+ 30 - 0
cif-service/src/main/resources/mapper/RedEnvelopeMapper.xml

@@ -0,0 +1,30 @@
+<?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.txz.cif.dao.RedEnvelopeMapper">
+  <resultMap id="BaseResultMap" type="com.txz.cif.model.RedEnvelope">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="order_no" jdbcType="VARCHAR" property="orderNo" />
+    <result column="tran_no" jdbcType="VARCHAR" property="tranNo" />
+    <result column="user_id" jdbcType="BIGINT" property="userId" />
+    <result column="amount" jdbcType="DECIMAL" property="amount" />
+    <result column="balance" jdbcType="DECIMAL" property="balance" />
+    <result column="debit_account" jdbcType="BIGINT" property="debitAccount" />
+    <result column="credit_account" jdbcType="BIGINT" property="creditAccount" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="biz_type" jdbcType="INTEGER" property="bizType" />
+    <result column="trans_time" jdbcType="TIMESTAMP" property="transTime" />
+    <result column="settle_time" jdbcType="TIMESTAMP" property="settleTime" />
+    <result column="create_user" jdbcType="VARCHAR" property="createUser" />
+    <result column="update_user" jdbcType="VARCHAR" property="updateUser" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="version" jdbcType="VARCHAR" property="version" />
+  </resultMap>
+
+  <select id="sumWithDay" resultType="java.math.BigDecimal">
+    SELECT SUM(amount) AS total_amount
+    FROM c_red_envelope WHERE user_id=#{userId} and trans_time >= #{day}</select>
+</mapper>

+ 1 - 0
cif-service/src/main/resources/mapper/UserMapper.xml

@@ -32,6 +32,7 @@
     <result column="pwd" jdbcType="VARCHAR" property="pwd" />
     <result column="salt" jdbcType="VARCHAR" property="salt" />
     <result column="last_token" jdbcType="VARCHAR" property="lastToken" />
+    <result column="bank_account_name" jdbcType="VARCHAR" property="bankAccountName" />
 
   </resultMap>
 

+ 1 - 1
cif-service/src/test/java/CodeGenerator.java

@@ -22,7 +22,7 @@ public class CodeGenerator {
 		//genCode("c_customer","c_customer_address","c_user","c_user_operator","c_bcard_list");
 		// genCode("输入表名","输入自定义Model名称");
 //		 genCode("c_cluster","c_cluster_user");
-		genCode("c_config_member" );
+		genCode("c_red_envelope" );
 	}
 
 

+ 164 - 0
log.home_IS_UNDEFINED/error.cif.log.2025-07-16.log

@@ -0,0 +1,164 @@
+2025-07-16 19:24:46.425 [dubbo-client-idleCheck-thread-1] ERROR o.a.d.r.exchange.support.header.ReconnectTimerTask -  [DUBBO] Fail to connect to HeaderExchangeClient [channel=org.apache.dubbo.remoting.transport.netty4.NettyClient [169.254.89.253:0 -> /172.17.0.3:20881]], dubbo version: 2.7.1, current host: 169.254.89.253
+org.apache.dubbo.remoting.RemotingException: client(url: dubbo://172.17.0.3:20881/com.txz.operating.service.OperatingConfigDubboService?anyhost=true&application=cif&bean.name=providers:dubbo:com.txz.operating.service.OperatingConfigDubboService&category=providers&check=false&codec=dubbo&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.register=true&default.sticky=false&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&heartbeat=60000&interface=com.txz.operating.service.OperatingConfigDubboService&lazy=false&methods=getConfigByCode&path=com.txz.operating.service.OperatingConfigDubboService&payload=83886080&pid=77963&protocol=dubbo&qos.accept.foreign.ip=true&qos.enable=false&qos.port=-1&register=true&register.ip=169.254.89.253&release=2.7.1&remote.application=operating&remote.timestamp=1752546658673&revision=1.0.0-SNAPSHOT&serialization=kryo&side=consumer&sticky=false&timestamp=1752665019069) failed to connect to server /172.17.0.3:20881, error message is:connection timed out: /172.17.0.3:20881
+	at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:131)
+	at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:186)
+	at org.apache.dubbo.remoting.transport.AbstractClient.reconnect(AbstractClient.java:242)
+	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.reconnect(HeaderExchangeClient.java:152)
+	at org.apache.dubbo.remoting.exchange.support.header.ReconnectTimerTask.doTask(ReconnectTimerTask.java:49)
+	at org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask.run(AbstractTimerTask.java:87)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449)
+	at java.lang.Thread.run(Thread.java:750)
+Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /172.17.0.3:20881
+	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:267)
+	at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
+	at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127)
+	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:163)
+	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
+	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
+	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)
+	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
+	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+	... 1 common frames omitted
+2025-07-16 19:25:25.914 [RMI TCP Connection(10)-192.168.0.102] ERROR com.zaxxer.hikari.pool.HikariPool - DatebookHikariCP - Exception during pool initialization.
+com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
+	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
+	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
+	at com.mysql.jdbc.Util.getInstance(Util.java:408)
+	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
+	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
+	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
+	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
+	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2105)
+	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2030)
+	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778)
+	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
+	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
+	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
+	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
+	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
+	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117)
+	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123)
+	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365)
+	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194)
+	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460)
+	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:534)
+	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
+	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
+	at com.zaxxer.hikari.HikariDataSource$$FastClassBySpringCGLIB$$eeb1ae86.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
+	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
+	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
+	at com.zaxxer.hikari.HikariDataSource$$EnhancerBySpringCGLIB$$dd7353f.getConnection(<generated>)
+	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:151)
+	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
+	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
+	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:324)
+	at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.getProduct(DataSourceHealthIndicator.java:122)
+	at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.doDataSourceHealthCheck(DataSourceHealthIndicator.java:109)
+	at org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator.doHealthCheck(DataSourceHealthIndicator.java:104)
+	at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:84)
+	at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:68)
+	at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:47)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:223)
+	at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:76)
+	at org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:61)
+	at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:126)
+	at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:99)
+	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
+	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
+	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
+	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
+	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
+	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
+	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
+	at sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
+	at sun.rmi.transport.Transport$1.run(Transport.java:200)
+	at sun.rmi.transport.Transport$1.run(Transport.java:197)
+	at java.security.AccessController.doPrivileged(Native Method)
+	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
+	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
+	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
+	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
+	at java.security.AccessController.doPrivileged(Native Method)
+	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
+	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+	at java.lang.Thread.run(Thread.java:750)
+Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
+
+The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
+	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
+	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
+	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
+	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
+	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
+	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342)
+	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2197)
+	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2046)
+	... 69 common frames omitted
+Caused by: java.net.SocketTimeoutException: connect timed out
+	at java.net.PlainSocketImpl.socketConnect(Native Method)
+	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
+	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
+	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
+	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
+	at java.net.Socket.connect(Socket.java:606)
+	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211)
+	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:301)
+	... 71 common frames omitted
+2025-07-16 19:25:50.281 [dubbo-client-idleCheck-thread-1] ERROR o.a.d.r.exchange.support.header.ReconnectTimerTask -  [DUBBO] Fail to connect to HeaderExchangeClient [channel=org.apache.dubbo.remoting.transport.netty4.NettyClient [169.254.89.253:0 -> /172.17.0.3:20881]], dubbo version: 2.7.1, current host: 169.254.89.253
+org.apache.dubbo.remoting.RemotingException: client(url: dubbo://172.17.0.3:20881/com.txz.operating.service.OperatingConfigDubboService?anyhost=true&application=cif&bean.name=providers:dubbo:com.txz.operating.service.OperatingConfigDubboService&category=providers&check=false&codec=dubbo&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.register=true&default.sticky=false&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&heartbeat=60000&interface=com.txz.operating.service.OperatingConfigDubboService&lazy=false&methods=getConfigByCode&path=com.txz.operating.service.OperatingConfigDubboService&payload=83886080&pid=77963&protocol=dubbo&qos.accept.foreign.ip=true&qos.enable=false&qos.port=-1&register=true&register.ip=169.254.89.253&release=2.7.1&remote.application=operating&remote.timestamp=1752546658673&revision=1.0.0-SNAPSHOT&serialization=kryo&side=consumer&sticky=false&timestamp=1752665019069) failed to connect to server /172.17.0.3:20881 client-side timeout 3000ms (elapsed: 3008ms) from netty client 169.254.89.253 using dubbo version 2.7.1
+	at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:136)
+	at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:186)
+	at org.apache.dubbo.remoting.transport.AbstractClient.reconnect(AbstractClient.java:242)
+	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.reconnect(HeaderExchangeClient.java:152)
+	at org.apache.dubbo.remoting.exchange.support.header.ReconnectTimerTask.doTask(ReconnectTimerTask.java:49)
+	at org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask.run(AbstractTimerTask.java:87)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449)
+	at java.lang.Thread.run(Thread.java:750)
+2025-07-16 19:26:54.271 [dubbo-client-idleCheck-thread-1] ERROR o.a.d.r.exchange.support.header.ReconnectTimerTask -  [DUBBO] Fail to connect to HeaderExchangeClient [channel=org.apache.dubbo.remoting.transport.netty4.NettyClient [169.254.89.253:0 -> /172.17.0.3:20881]], dubbo version: 2.7.1, current host: 169.254.89.253
+org.apache.dubbo.remoting.RemotingException: client(url: dubbo://172.17.0.3:20881/com.txz.operating.service.OperatingConfigDubboService?anyhost=true&application=cif&bean.name=providers:dubbo:com.txz.operating.service.OperatingConfigDubboService&category=providers&check=false&codec=dubbo&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.register=true&default.sticky=false&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&heartbeat=60000&interface=com.txz.operating.service.OperatingConfigDubboService&lazy=false&methods=getConfigByCode&path=com.txz.operating.service.OperatingConfigDubboService&payload=83886080&pid=77963&protocol=dubbo&qos.accept.foreign.ip=true&qos.enable=false&qos.port=-1&register=true&register.ip=169.254.89.253&release=2.7.1&remote.application=operating&remote.timestamp=1752546658673&revision=1.0.0-SNAPSHOT&serialization=kryo&side=consumer&sticky=false&timestamp=1752665019069) failed to connect to server /172.17.0.3:20881 client-side timeout 3000ms (elapsed: 3006ms) from netty client 169.254.89.253 using dubbo version 2.7.1
+	at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:136)
+	at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:186)
+	at org.apache.dubbo.remoting.transport.AbstractClient.reconnect(AbstractClient.java:242)
+	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.reconnect(HeaderExchangeClient.java:152)
+	at org.apache.dubbo.remoting.exchange.support.header.ReconnectTimerTask.doTask(ReconnectTimerTask.java:49)
+	at org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask.run(AbstractTimerTask.java:87)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449)
+	at java.lang.Thread.run(Thread.java:750)
+2025-07-16 19:27:58.273 [dubbo-client-idleCheck-thread-1] ERROR o.a.d.r.exchange.support.header.ReconnectTimerTask -  [DUBBO] Fail to connect to HeaderExchangeClient [channel=org.apache.dubbo.remoting.transport.netty4.NettyClient [169.254.89.253:0 -> /172.17.0.3:20881]], dubbo version: 2.7.1, current host: 169.254.89.253
+org.apache.dubbo.remoting.RemotingException: client(url: dubbo://172.17.0.3:20881/com.txz.operating.service.OperatingConfigDubboService?anyhost=true&application=cif&bean.name=providers:dubbo:com.txz.operating.service.OperatingConfigDubboService&category=providers&check=false&codec=dubbo&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.register=true&default.sticky=false&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&heartbeat=60000&interface=com.txz.operating.service.OperatingConfigDubboService&lazy=false&methods=getConfigByCode&path=com.txz.operating.service.OperatingConfigDubboService&payload=83886080&pid=77963&protocol=dubbo&qos.accept.foreign.ip=true&qos.enable=false&qos.port=-1&register=true&register.ip=169.254.89.253&release=2.7.1&remote.application=operating&remote.timestamp=1752546658673&revision=1.0.0-SNAPSHOT&serialization=kryo&side=consumer&sticky=false&timestamp=1752665019069) failed to connect to server /172.17.0.3:20881 client-side timeout 3000ms (elapsed: 3010ms) from netty client 169.254.89.253 using dubbo version 2.7.1
+	at org.apache.dubbo.remoting.transport.netty4.NettyClient.doConnect(NettyClient.java:136)
+	at org.apache.dubbo.remoting.transport.AbstractClient.connect(AbstractClient.java:186)
+	at org.apache.dubbo.remoting.transport.AbstractClient.reconnect(AbstractClient.java:242)
+	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.reconnect(HeaderExchangeClient.java:152)
+	at org.apache.dubbo.remoting.exchange.support.header.ReconnectTimerTask.doTask(ReconnectTimerTask.java:49)
+	at org.apache.dubbo.remoting.exchange.support.header.AbstractTimerTask.run(AbstractTimerTask.java:87)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727)
+	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449)
+	at java.lang.Thread.run(Thread.java:750)

Fișier diff suprimat deoarece este prea mare
+ 17 - 0
log.home_IS_UNDEFINED/log.cif.2025-07-16.0.log


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff