Mr.qian пре 2 недеља
родитељ
комит
174a9c274d
18 измењених фајлова са 270 додато и 209 уклоњено
  1. 42 54
      cif-api/src/main/java/com/txz/cif/enums/BizTypeEnum.java
  2. 8 4
      cif-service/src/main/java/com/txz/cif/dao/RechargeRecordMapper.java
  3. 45 3
      cif-service/src/main/java/com/txz/cif/dao/impl/RechargeRecordMapperImpl.java
  4. 20 22
      cif-service/src/main/java/com/txz/cif/enums/WithdrawStatusEnum.java
  5. 4 0
      cif-service/src/main/java/com/txz/cif/model/AccountFreezd.java
  6. 5 2
      cif-service/src/main/java/com/txz/cif/service/RechargeRecordService.java
  7. 76 75
      cif-service/src/main/java/com/txz/cif/service/impl/AccountServiceImpl.java
  8. 19 9
      cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java
  9. 9 3
      cif-service/src/main/java/com/txz/cif/service/impl/RechargeRecordServiceImpl.java
  10. 1 1
      cif-service/src/main/java/com/txz/cif/service/impl/SequenceServiceImpl.java
  11. 2 7
      cif-service/src/main/java/com/txz/cif/web/AccountApiController.java
  12. 1 1
      cif-service/src/main/java/com/txz/cif/web/UserApiController.java
  13. 1 1
      cif-service/src/main/java/com/txz/cif/web/WithdrawRecordApiController.java
  14. 18 4
      cif-service/src/main/java/com/txz/cif/web/mng/RechargeRecordController.java
  15. 1 2
      cif-service/src/main/java/com/txz/cif/web/mng/WithdrawRecordController.java
  16. 14 15
      cif-service/src/main/resources/static/i18n/messages_bn_BD.properties
  17. 2 3
      cif-service/src/main/resources/static/i18n/messages_en.properties
  18. 2 3
      cif-service/src/main/resources/static/i18n/messages_en_US.properties

+ 42 - 54
cif-api/src/main/java/com/txz/cif/enums/BizTypeEnum.java

@@ -1,5 +1,9 @@
 package com.txz.cif.enums;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -7,51 +11,50 @@ import java.util.List;
  * 支付业务类型枚举类
  * 类型 1001充值 2001提现  3001开团支付 3002参团支付  4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004一级红包佣金 5005二级红包佣金 6001充值返点 7001提现手续费 8001冻结 9001解冻
  */
+@AllArgsConstructor
 public enum BizTypeEnum {
-
-    RECHARGE( 1001, "充值"),
-    WITHDRAW( 2001, "提现"),
-    OPEN_GROUP_PAY( 3001, "开团支付"),
-    JOIN_GROUP_PAY( 3002, "参团支付"),
-
-    FAIL_GROUP_REFUND( 4001, "未成团退款"),
-    SUCCESS_GROUP_REFUND( 4002, "成团退款"),
-
-    OPEN_GROUP_RED_ENVELOPE( 5001, "开团红包收益"),
-    JOIN_GROUP_RED_ENVELOPE( 5002, "参团红包收益"),
-
-    SIGN_RED_ENVELOPE( 5003, "签到红包收益"),
-
-    FIRST_COMMISSION( 5004, "一级佣金"),
-
-    SECONDARY_COMMISSION( 5005, "二级佣金"),
-
-    PROMOTION_COMMISSION( 5006, "直推佣金"),
-
-    REFUND_RECHARGE( 6001, "充值返点"),
-
-    WITHDRAWAL_FEE( 7001, "提现手续费"),
-
-    FREEZE( 8001, "冻结"),
-    UNFREEZE( 9001, "解冻"),
+    
+    RECHARGE(1001, "充值"),
+    WITHDRAW(2001, "提现"),
+    OPEN_GROUP_PAY(3001, "开团支付"),
+    JOIN_GROUP_PAY(3002, "参团支付"),
+    
+    FAIL_GROUP_REFUND(4001, "未成团退款"),
+    SUCCESS_GROUP_REFUND(4002, "成团退款"),
+    
+    OPEN_GROUP_RED_ENVELOPE(5001, "开团红包收益"),
+    JOIN_GROUP_RED_ENVELOPE(5002, "参团红包收益"),
+    
+    SIGN_RED_ENVELOPE(5003, "签到红包收益"),
+    
+    FIRST_COMMISSION(5004, "一级佣金"),
+    
+    SECONDARY_COMMISSION(5005, "二级佣金"),
+    
+    PROMOTION_COMMISSION(5006, "直推佣金"),
+    
+    REFUND_RECHARGE(6001, "充值返点"),
+    
+    WITHDRAWAL_FEE(7001, "提现手续费"),
+    
+    FREEZE(8001, "冻结"),
+    UNFREEZE(9001, "解冻"),
     ;
-
+    
     /**
      * 平台标识
      */
+    @Setter
+    @Getter
     private int key;
-
+    
     /**
      * 平台名称
      */
+    @Setter
+    @Getter
     private String value;
-
-
-    BizTypeEnum(int key, String value) {
-        this.key = key;
-        this.value = value;
-    }
-
+    
     public static String getValueByKey(int key) {
         for (BizTypeEnum value : values()) {
             if (value.key == key) {
@@ -60,9 +63,9 @@ public enum BizTypeEnum {
         }
         return null;
     }
-
+    
     public static List<BizTypeEnum> getRedEnvelopeTypes() {
-        List<BizTypeEnum> ret =new ArrayList<>();
+        List<BizTypeEnum> ret = new ArrayList<>();
         ret.add(BizTypeEnum.OPEN_GROUP_RED_ENVELOPE);
         ret.add(BizTypeEnum.JOIN_GROUP_RED_ENVELOPE);
         ret.add(BizTypeEnum.SIGN_RED_ENVELOPE);
@@ -71,7 +74,7 @@ public enum BizTypeEnum {
         ret.add(BizTypeEnum.PROMOTION_COMMISSION);
         return ret;
     }
-
+    
     public static BizTypeEnum getByKey(int key) {
         for (BizTypeEnum value : values()) {
             if (value.key == key) {
@@ -80,20 +83,5 @@ public enum BizTypeEnum {
         }
         return null;
     }
-
-    public int getKey() {
-        return key;
-    }
-
-    public void setKey(int key) {
-        this.key = key;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
+    
 }

+ 8 - 4
cif-service/src/main/java/com/txz/cif/dao/RechargeRecordMapper.java

@@ -5,6 +5,7 @@ import com.txz.cif.dao.impl.RechargeRecordMapperImpl;
 import com.txz.cif.model.RechargeRecord;
 import com.txz.cif.web.bo.RechargeRecordBO;
 import com.txz.cif.web.para.RecordParam;
+import com.txz.cif.web.vo.ListVO;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;
 
@@ -16,10 +17,13 @@ public interface RechargeRecordMapper extends Mapper<RechargeRecord> {
     
     @SelectProvider(type = RechargeRecordMapperImpl.class, method = "pageList")
     List<RechargeRecordBO> pageList(RecordParam param);
-
-    @Select("SELECT COUNT(DISTINCT user_id) FROM c_recharge_record WHERE status = #{status} and create_time > #{startTime} and create_time < #{endTime}")
+    
+    @SelectProvider(type = RechargeRecordMapperImpl.class, method = "pageParam")
+    ListVO pageParam(RecordParam param);
+    
+    @Select("SELECT COUNT(DISTINCT user_id) FROM c_recharge_record WHERE status = #{status} AND create_time > #{startTime} AND create_time < #{endTime}")
     Integer countByUserId(HashMap map);
-
-    @Select("SELECT SUM(amount) FROM   c_recharge_record WHERE status = #{status} and create_time > #{startTime} and create_time < #{endTime}")
+    
+    @Select("SELECT SUM(amount) FROM   c_recharge_record WHERE status = #{status} AND create_time > #{startTime} AND create_time < #{endTime}")
     BigDecimal sumByStatus(HashMap map);
 }

+ 45 - 3
cif-service/src/main/java/com/txz/cif/dao/impl/RechargeRecordMapperImpl.java

@@ -13,7 +13,7 @@ public class RechargeRecordMapperImpl {
     
     public String pageList(RecordParam param) {
         String sql = " SELECT crr.id, crr.order_no, crr.user_id, crr.amount, crr.discount, crr.status " +
-                " ,crr.channel, cpc.channel_name, cpm.method_name, crr.currency, crr.user_name " +
+                " , crr.channel, cpc.channel_name, cpm.method_name, crr.currency, crr.user_name " +
                 " , crr.user_phone, crr.bank, crr.bank_account, crr.bank_account_name, crr.create_time " +
                 " , crr.success_time, crr.version " +
                 " FROM c_recharge_record crr " +
@@ -35,7 +35,7 @@ public class RechargeRecordMapperImpl {
         if (ObjectUtil.isNotEmpty(param.getStatus())) {
             sql += " AND crr.status = #{status} ";
         }
-        if(StrUtil.isNotBlank(param.getMethodName())){
+        if (StrUtil.isNotBlank(param.getMethodName())) {
             sql += " AND cpm.method_name = #{methodName} ";
         }
         if (param.getTimeType() != null) {
@@ -50,7 +50,49 @@ public class RechargeRecordMapperImpl {
             }
         }
         
-        sql+=" ORDER BY crr.create_time DESC ";
+        sql += " ORDER BY crr.create_time DESC ";
+        return sql;
+    }
+    
+    public String pageParam(RecordParam param) {
+        String sql = "SELECT " +
+                " COUNT(crr.id) AS order_num, " +
+                " IFNULL(SUM(crr.amount),0) AS order_amount, " +
+                " IFNULL(SUM(CASE WHEN crr.status = 2 THEN 1 ELSE 0 END),0) AS success_num, " +
+                " IFNULL(SUM(CASE WHEN crr.status = 2 THEN crr.real_amount ELSE 0 END),0) AS success_amount " +
+                " FROM c_recharge_record crr " +
+                " LEFT JOIN c_payment_method cpm ON crr.method_id = cpm.id " +
+                " LEFT JOIN c_payment_channel cpc ON cpc.id = crr.channel_id " +
+                " WHERE 1=1 ";
+        if (StrUtil.isNotBlank(param.getChannel())) {
+            sql += " AND crr.channel = #{channel} ";
+        }
+        if (StrUtil.isNotBlank(param.getUserName())) {
+            sql += " AND crr.user_name = #{userName} ";
+        }
+        if (StrUtil.isNotBlank(param.getUserPhone())) {
+            sql += " AND crr.user_phone = #{userPhone} ";
+        }
+        if (StrUtil.isNotBlank(param.getOrderNo())) {
+            sql += " AND crr.order_no = #{orderNo} ";
+        }
+        if (ObjectUtil.isNotEmpty(param.getStatus())) {
+            sql += " AND crr.status = #{status} ";
+        }
+        if (StrUtil.isNotBlank(param.getMethodName())) {
+            sql += " AND cpm.method_name = #{methodName} ";
+        }
+        if (param.getTimeType() != null) {
+            if (param.getTimeType() == 1) {
+                if (StrUtil.isNotBlank(param.getStartTime())) {
+                    sql += " AND crr.create_time BETWEEN #{startTime} AND #{endTime} ";
+                }
+            } else if (param.getTimeType() == 2) {
+                if (StrUtil.isNotBlank(param.getStartTime())) {
+                    sql += " AND crr.success_time BETWEEN #{startTime} AND #{endTime} ";
+                }
+            }
+        };
         return sql;
     }
 }

+ 20 - 22
cif-service/src/main/java/com/txz/cif/enums/WithdrawStatusEnum.java

@@ -1,41 +1,39 @@
 package com.txz.cif.enums;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
 /**
- *  状态 1待审核 2处理中 3审核不通过 4提现成功 5提现失败 6超时取消
+ * 状态 1待审核 2处理中 3审核不通过 4提现成功 5提现失败 6超时取消
  */
+@AllArgsConstructor
 public enum WithdrawStatusEnum {
-
+    
     WAITING_REVIEW(1, "待审核"),
     PROCESSED(2, "处理中"),
     REVIEW_FAIL(3, "审核不通过"),
     SUCCESS(4, "成功"),
-    FAIL( 5, "失败"),
-    CANCEL( 6, "超时取消"),
+    FAIL(5, "失败"),
+    CANCEL(6, "超时取消"),
     ;
-
+    
+    @Setter
+    @Getter
     private Integer key;
+    
+    @Setter
+    @Getter
     private String value;
-
-    WithdrawStatusEnum(Integer key, String value) {
-        this.key = key;
-        this.value = value;
-    }
-
+    
     public static WithdrawStatusEnum getEnum(Integer key) {
-        for (WithdrawStatusEnum temp: WithdrawStatusEnum.values()) {
-            if (temp.key.compareTo(key)== 0){
+        for (WithdrawStatusEnum temp : WithdrawStatusEnum.values()) {
+            if (temp.key.compareTo(key) == 0) {
                 return temp;
             }
         }
         return null;
     }
-
-
-    public Integer getKey() {
-        return key;
-    }
-
-    public String getDesc() {
-        return value;
-    }
+    
+    
 }

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

@@ -88,4 +88,8 @@ public class AccountFreezd {
     @Column(name = "unfreeze_time")
     private Date unfreezeTime;
     
+    /**
+     * 业务单号
+     */
+    private String bizNo;
 }

+ 5 - 2
cif-service/src/main/java/com/txz/cif/service/RechargeRecordService.java

@@ -4,6 +4,7 @@ import com.txz.cif.model.RechargeRecord;
 import com.txz.cif.core.Service;
 import com.txz.cif.web.bo.RechargeRecordBO;
 import com.txz.cif.web.para.RecordParam;
+import com.txz.cif.web.vo.ListVO;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
@@ -22,8 +23,10 @@ public interface RechargeRecordService extends Service<RechargeRecord> {
     void closeRecharge();
     
     List<RechargeRecordBO> pageList(RecordParam param);
-
+    
+    ListVO pageParam(RecordParam param);
+    
     Integer countByUserId(HashMap map);
-
+    
     BigDecimal sumByStatus(HashMap map);
 }

+ 76 - 75
cif-service/src/main/java/com/txz/cif/service/impl/AccountServiceImpl.java

@@ -36,68 +36,69 @@ import java.util.List;
 public class AccountServiceImpl extends AbstractService<Account> implements AccountService {
     @Resource
     private AccountMapper cAccountMapper;
-
+    
     @Resource
     private SubjectService subjectService;
-
+    
     @Resource
     private AccountFlowService accountFlowService;
-
+    
     @Resource
     private FlowService flowService;
-
+    
     @Override
     public void deal(AccountFlow accountFlow) {
-        if (accountFlow.getFlowType() == 4){
-            //冻结
-            cAccountMapper.dealFreeze(accountFlow.getAccountId(),accountFlow.getAmount());
-        } else  if (accountFlow.getFlowType() == 5){
-            //解冻
-            cAccountMapper.dealFreeze(accountFlow.getAccountId(),accountFlow.getAmount().negate());
+        if (accountFlow.getFlowType() == 4) {
+            // 冻结
+            cAccountMapper.dealFreeze(accountFlow.getAccountId(), accountFlow.getAmount());
+        } else if (accountFlow.getFlowType() == 5) {
+            // 解冻
+            cAccountMapper.dealFreeze(accountFlow.getAccountId(), accountFlow.getAmount().negate());
         } else {
-
-            if (accountFlow.getType() == 1){
+            
+            if (accountFlow.getType() == 1) {
                 if (BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.WITHDRAW
-                  || BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.RECHARGE){
-                    int i = cAccountMapper.dealWithDayCutHasTotal(accountFlow.getAccountId(),accountFlow.getAmount().negate());
-                    if (i == 0){
-                        cAccountMapper.dealHasTotal(accountFlow.getAccountId(),accountFlow.getAmount().negate());
+                        || BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.RECHARGE) {
+                    int i = cAccountMapper.dealWithDayCutHasTotal(accountFlow.getAccountId(), accountFlow.getAmount().negate());
+                    if (i == 0) {
+                        cAccountMapper.dealHasTotal(accountFlow.getAccountId(), accountFlow.getAmount().negate());
                     }
                 } else {
-                    int i = cAccountMapper.dealWithDayCut(accountFlow.getAccountId(),accountFlow.getAmount().negate());
-                    if (i == 0){
-                        cAccountMapper.deal(accountFlow.getAccountId(),accountFlow.getAmount().negate());
+                    int i = cAccountMapper.dealWithDayCut(accountFlow.getAccountId(), accountFlow.getAmount().negate());
+                    if (i == 0) {
+                        cAccountMapper.deal(accountFlow.getAccountId(), accountFlow.getAmount().negate());
                     }
                 }
             } else {
                 if (BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.WITHDRAW
-                        || BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.RECHARGE){
-                    int i = cAccountMapper.dealWithDayCutHasTotal(accountFlow.getAccountId(),accountFlow.getAmount());
-                    if (i == 0){
-                        cAccountMapper.dealHasTotal(accountFlow.getAccountId(),accountFlow.getAmount());
+                        || BizTypeEnum.getByKey(accountFlow.getBizType()) == BizTypeEnum.RECHARGE) {
+                    int i = cAccountMapper.dealWithDayCutHasTotal(accountFlow.getAccountId(), accountFlow.getAmount());
+                    if (i == 0) {
+                        cAccountMapper.dealHasTotal(accountFlow.getAccountId(), accountFlow.getAmount());
                     }
                 } else {
-                    int i = cAccountMapper.dealWithDayCut(accountFlow.getAccountId(),accountFlow.getAmount());
-                    if (i == 0){
-                        cAccountMapper.deal(accountFlow.getAccountId(),accountFlow.getAmount());
+                    int i = cAccountMapper.dealWithDayCut(accountFlow.getAccountId(), accountFlow.getAmount());
+                    if (i == 0) {
+                        cAccountMapper.deal(accountFlow.getAccountId(), accountFlow.getAmount());
                     }
                 }
             }
         }
+        accountFlow.setCreateTime(new Date());
         accountFlowService.save(accountFlow);
     }
-
+    
     @Override
     public void innerRecharge(RechargeForm form) {
-        SnowflakeGenerator snowflake =new  SnowflakeGenerator();
+        SnowflakeGenerator snowflake = new SnowflakeGenerator();
         String bizNo = snowflake.next().toString();
         Date today = DateUtil.date();
         Account innerAccount = findById(form.getInnerAccountId());
-        if (innerAccount == null){
+        if (innerAccount == null) {
             return;
         }
         Account account = findById(form.getAccountId());
-        if (account == null){
+        if (account == null) {
             return;
         }
         Flow flow = Flow.builder().amount(form.getAmount()).bizType(1001).createUser(
@@ -107,78 +108,78 @@ public class AccountServiceImpl extends AbstractService<Account> implements Acco
                 .type(1)
                 .build();
         flowService.saveUseGeneratedKeys(flow);
-        //借 :资金应收-渠道款-银行xx元  内部户1(资产类:借方账户)+钱
+        // 借 :资金应收-渠道款-银行xx元  内部户1(资产类:借方账户)+钱
         deal(AccountFlow.builder().accountId(form.getInnerAccountId()).amount(flow.getAmount())
                 .bizId(flow.getBizNo()).aliases(innerAccount.getAliases()).transTime(today)
                 .balance(innerAccount.getBalance().add(flow.getAmount()))
                 .freezeAmount(innerAccount.getFreezeAmount())
                 .flowType(1).type(2).bizType(1001).flowId(flow.getId()).build());
-        //贷 :客户资金账户xx元 客户账号(负债类:贷方账户)+钱
+        // 贷 :客户资金账户xx元 客户账号(负债类:贷方账户)+钱
         deal(AccountFlow.builder().accountId(form.getAccountId()).amount(flow.getAmount())
                 .bizId(flow.getBizNo()).aliases(account.getAliases()).transTime(today)
                 .balance(account.getBalance().add(flow.getAmount()))
                 .freezeAmount(account.getFreezeAmount())
                 .flowType(1).type(2).bizType(1001).flowId(flow.getId()).build());
     }
-
+    
     @Override
     public void innerCarry() {
-        SnowflakeGenerator snowflake =new  SnowflakeGenerator();
+        SnowflakeGenerator snowflake = new SnowflakeGenerator();
         String bizNo = snowflake.next().toString();
         Date today = DateUtil.date();
-
+        
         Condition c = new Condition(Subject.class);
-        c.createCriteria().andEqualTo("parentId",3).andEqualTo("leaf",1);
+        c.createCriteria().andEqualTo("parentId", 3).andEqualTo("leaf", 1);
         List<Subject> subjectList = subjectService.findByCondition(c);
-        if (CollUtil.isEmpty(subjectList)){
+        if (CollUtil.isEmpty(subjectList)) {
             return;
         }
         Account innerAccount = findById(MyConstants.INNER_PROFIT);
-        if (innerAccount == null){
+        if (innerAccount == null) {
             log.error("[日切-结转]本年利润账户未找到");
             return;
         }
-        for (Subject subject:subjectList) {
-            Account account = findBy("aliases",subject.getAliases());
-            if (account == null){
-                log.error("[日切-结转]别名为"+subject.getAliases()+"的账户未找到。");
+        for (Subject subject : subjectList) {
+            Account account = findBy("aliases", subject.getAliases());
+            if (account == null) {
+                log.error("[日切-结转]别名为" + subject.getAliases() + "的账户未找到。");
                 return;
             }
-            if (account.getBeforeDayBalance().compareTo(BigDecimal.ZERO) == 0){
+            if (account.getBeforeDayBalance().compareTo(BigDecimal.ZERO) == 0) {
                 continue;
             }
-             BigDecimal amount  = account.getBeforeDayBalance();
-            if (!DateUtil.isSameDay(account.getBeforeDayTime(),DateUtil.date())){
+            BigDecimal amount = account.getBeforeDayBalance();
+            if (!DateUtil.isSameDay(account.getBeforeDayTime(), DateUtil.date())) {
                 amount = account.getBalance();
             }
-
-            //借方结转
+            
+            // 借方结转
             /**
              * 借方结转
              * 借:本年利润(贷)       -500元
              * 贷:专家提成(借)       -500元
              */
-            if (StrUtil.equals("D",subject.getDirection())){
+            if (StrUtil.equals("D", subject.getDirection())) {
                 Flow flow = Flow.builder().amount(amount).bizType(6001).createUser("sys")
                         .bizNo(bizNo).createTime(today).updateTime(today).transTime(today)
                         .debitAccount(innerAccount.getId()).creditAccount(account.getId())
                         .type(8)
                         .build();
                 flowService.saveUseGeneratedKeys(flow);
-                //借:本年利润(贷)       -500元
+                // 借:本年利润(贷)       -500元
                 deal(AccountFlow.builder().accountId(innerAccount.getId()).amount(flow.getAmount())
                         .bizId(flow.getBizNo()).aliases(innerAccount.getAliases())
                         .balance(innerAccount.getBalance().subtract(flow.getAmount()))
                         .freezeAmount(innerAccount.getFreezeAmount()).transTime(today)
                         .flowType(8).type(1).bizType(6001).flowId(flow.getId()).build());
-                //贷:专家提成(借)       -500元
+                // 贷:专家提成(借)       -500元
                 deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                         .bizId(flow.getBizNo()).aliases(account.getAliases())
                         .balance(account.getBalance().subtract(flow.getAmount()))
                         .freezeAmount(account.getFreezeAmount()).transTime(today)
                         .flowType(8).type(1).bizType(6001).flowId(flow.getId()).build());
             } else {
-                //贷方结转
+                // 贷方结转
                 /**
                  * 贷方结转
                  * 借:主营业务收入    (贷)       -500元
@@ -190,65 +191,65 @@ public class AccountServiceImpl extends AbstractService<Account> implements Acco
                         .type(9)
                         .build();
                 flowService.saveUseGeneratedKeys(flow);
-                //借:主营业务收入    (贷)       -500元
+                // 借:主营业务收入    (贷)       -500元
                 deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                         .bizId(flow.getBizNo()).aliases(innerAccount.getAliases()).transTime(today)
                         .balance(innerAccount.getBalance().subtract(flow.getAmount()))
                         .freezeAmount(innerAccount.getFreezeAmount())
-
+                        
                         .flowType(9).type(1).bizType(6002).flowId(flow.getId()).build());
-                //贷:本年利润       (贷)       +500元
+                // 贷:本年利润       (贷)       +500元
                 deal(AccountFlow.builder().accountId(innerAccount.getId()).amount(flow.getAmount())
                         .bizId(flow.getBizNo()).aliases(account.getAliases()).transTime(today)
                         .balance(account.getBalance().add(flow.getAmount()))
                         .freezeAmount(account.getFreezeAmount())
                         .flowType(9).type(2).bizType(6002).flowId(flow.getId()).build());
             }
-
+            
         }
-
+        
     }
-
+    
     @Override
     public BigDecimal sumInit(String aliases) {
-        //查询当日所有初始上日余额
-        BigDecimal today =  cAccountMapper.sumTodayInit(aliases);
-        if (today == null){
+        // 查询当日所有初始上日余额
+        BigDecimal today = cAccountMapper.sumTodayInit(aliases);
+        if (today == null) {
             today = BigDecimal.ZERO;
         }
-        //查询非当日所有初始上日余额
-        BigDecimal befor =  cAccountMapper.sumBeforInit(aliases);
-        if (befor == null){
+        // 查询非当日所有初始上日余额
+        BigDecimal befor = cAccountMapper.sumBeforInit(aliases);
+        if (befor == null) {
             befor = BigDecimal.ZERO;
         }
         return today.add(befor);
     }
-
+    
     @Override
     public BigDecimal sumEnd(String aliases) {
-
-        BigDecimal today =  cAccountMapper.sumTodayEnd(aliases);
-        if (today == null){
+        
+        BigDecimal today = cAccountMapper.sumTodayEnd(aliases);
+        if (today == null) {
             today = BigDecimal.ZERO;
         }
-        //查询非当日所有初始上日余额
-        BigDecimal befor =  cAccountMapper.sumBeforEnd(aliases);
-        if (befor == null){
+        // 查询非当日所有初始上日余额
+        BigDecimal befor = cAccountMapper.sumBeforEnd(aliases);
+        if (befor == null) {
             befor = BigDecimal.ZERO;
         }
         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);
+        c.createCriteria().andEqualTo("userId", userId)
+                .andEqualTo("bizType", type);
         List<Account> accounts = findByCondition(c);
-        if (CollUtil.isEmpty(accounts)){
+        if (CollUtil.isEmpty(accounts)) {
             return null;
         }
         return accounts.get(0);
-
+        
     }
 }

+ 19 - 9
cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java

@@ -3,8 +3,6 @@ package com.txz.cif.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.core.AbstractService;
@@ -86,6 +84,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
                     .userId(param.getUserId())
                     .accountId(account.getId())
                     .bizId(flow.getId())
+                    .bizNo(flow.getBizNo())
                     .amount(param.getAmount())
                     .createTime(today)
                     .unfreezeAmount(BigDecimal.ZERO)
@@ -112,10 +111,21 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
         if (freezd.getStatus() != 1) {
             return Result.genFailResult(LocalUtil.get("frozen.status.is.abnormal"));
         }
-        Flow oldFlow = findById(freezd.getBizId());
-        if (oldFlow == null) {
+        
+        Condition c = new Condition(Flow.class);
+        c.createCriteria()
+                .andEqualTo("bizNo", freezd.getBizNo())
+                .andEqualTo("userId", freezd.getUserId())
+        ;
+        List<Flow> oldFlows = findByCondition(c);
+        // Flow oldFlow = findById(freezd.getBizId());
+        if (CollectionUtil.isEmpty(oldFlows)) {
             return Result.genFailResult(LocalUtil.get("frozen.record.not.found"));
         }
+        Flow oldFlow = oldFlows.get(0);
+        // if (oldFlow == null) {
+        //     return Result.genFailResult(LocalUtil.get("frozen.record.not.found"));
+        // }
         
         Account account = accountService.findById(freezd.getAccountId());
         if (account == null) {
@@ -361,8 +371,8 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
     
     @Override
     public Result withdraw(WithdrawParam param) {
-//        log.error("withdraw : " + JSONUtil.toJsonStr(param));
-
+        //        log.error("withdraw : " + JSONUtil.toJsonStr(param));
+        
         Account account = accountService.getAccount(param.getUserId(), param.getAccountType());
         if (account == null) {
             return Result.genFailResult(LocalUtil.get("account.not.found"));
@@ -387,7 +397,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
                 .type(3)
                 .build();
         saveUseGeneratedKeys(flow);
-//        log.error("withdraw flowId: " + flow.getId() + " amount :"+param.getAmount().subtract(param.getFee()).toPlainString());
+        //        log.error("withdraw flowId: " + flow.getId() + " amount :"+param.getAmount().subtract(param.getFee()).toPlainString());
         // 借 :客户资金账户xx元 客户账号(负债类:贷方账户)-钱
         accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow.getAmount())
                 .bizId(flow.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
@@ -417,7 +427,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
                 .bizId(param.getBizId()).type(6)
                 .build();
         saveUseGeneratedKeys(flow2);
-//        log.error("withdraw flowId2: " + flow2.getId());
+        //        log.error("withdraw flowId2: " + flow2.getId());
         // 借:个人账户钱包(贷)     -500元
         accountService.deal(AccountFlow.builder().accountId(account.getId()).amount(flow2.getAmount())
                 .bizId(flow2.getBizId()).aliases(account.getAliases()).transTime(param.getTransTime())
@@ -430,7 +440,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
                 .bizNo(flow2.getBizNo()).balance(innerIncomeAccount.getBalance().add(flow2.getAmount()))
                 .freezeAmount(innerIncomeAccount.getFreezeAmount()).userId(flow2.getUserId())
                 .flowType(6).type(2).bizType(flow2.getBizType()).flowId(flow2.getId()).build());
-
+        
         return Result.genSuccessResult();
     }
     

+ 9 - 3
cif-service/src/main/java/com/txz/cif/service/impl/RechargeRecordServiceImpl.java

@@ -11,6 +11,7 @@ import com.txz.cif.service.FlowService;
 import com.txz.cif.service.RechargeRecordService;
 import com.txz.cif.web.bo.RechargeRecordBO;
 import com.txz.cif.web.para.RecordParam;
+import com.txz.cif.web.vo.ListVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import tk.mybatis.mapper.entity.Condition;
@@ -82,17 +83,22 @@ public class RechargeRecordServiceImpl extends AbstractService<RechargeRecord> i
                     .build());
         }
     }
-
+    
     @Override
     public List<RechargeRecordBO> pageList(RecordParam param) {
         return rechargeRecordMapper.pageList(param);
     }
-
+    
+    @Override
+    public ListVO pageParam(RecordParam param) {
+        return rechargeRecordMapper.pageParam(param);
+    }
+    
     @Override
     public Integer countByUserId(HashMap map) {
         return rechargeRecordMapper.countByUserId(map);
     }
-
+    
     @Override
     public BigDecimal sumByStatus(HashMap map) {
         return rechargeRecordMapper.sumByStatus(map);

+ 1 - 1
cif-service/src/main/java/com/txz/cif/service/impl/SequenceServiceImpl.java

@@ -58,7 +58,7 @@ public class SequenceServiceImpl extends AbstractService<Sequence> implements Se
             serialNumberRuleDO.setCode("recharge_rule");
             serialNumberRuleDO.setSeqName("recharge_rule");
             serialNumberRuleDO.setPrefix("");
-            serialNumberRuleDO.setDateFormat("YYYYMMDD");
+            serialNumberRuleDO.setDateFormat("yyyyMMdd");
             serialNumberRuleDO.setLen(20);
             // serialNumberRuleDO = numberRuleMapper.selectOne(record);
         }

+ 2 - 7
cif-service/src/main/java/com/txz/cif/web/AccountApiController.java

@@ -31,7 +31,6 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -199,15 +198,11 @@ public class AccountApiController extends AbstractApiController {
             Date start = DateUtil.beginOfYear(DateUtil.date());
             criteria.andGreaterThanOrEqualTo("createTime", start);
         }
+        criteria.andNotIn("bizType", CollUtil.newArrayList(8001, 9001));
         c.setOrderByClause("create_time desc");
         List<AccountFlow> flows = accountFlowService.findByCondition(c);
-        // 根据bizId和type相同的数据去重
+        // 根据bizId和type相同的数据去重,并确保按创建时间倒序排列
         List<AccountFlow> distinctFlows = flows.stream()
-                .collect(Collectors.toMap(
-                        flow -> flow.getBizId() + "_" + flow.getType(), 
-                        Function.identity(), 
-                        (existing, replacement) -> existing))
-                .values().stream()
                 .sorted((af1, af2) -> af2.getCreateTime().compareTo(af1.getCreateTime()))
                 .collect(Collectors.toList());
         PageInfo pageInfo = new PageInfo(distinctFlows);

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

@@ -105,7 +105,7 @@ public class UserApiController extends AbstractApiController {
             case 3:
                 return ResultGenerator.genSuccessResult(Arrays.stream(WithdrawStatusEnum.values())
                         .map(temp -> {
-                            EnumBo bo = EnumBo.builder().code(temp.getKey()).name(temp.getDesc()).build();
+                            EnumBo bo = EnumBo.builder().code(temp.getKey()).name(temp.getValue()).build();
                             String msg = LocalUtil.get("WithdrawStatusEnum." + temp.name());
                             if (StrUtil.isNotBlank(msg)) {
                                 bo.setName(msg);

+ 1 - 1
cif-service/src/main/java/com/txz/cif/web/WithdrawRecordApiController.java

@@ -260,7 +260,7 @@ public class WithdrawRecordApiController {
                 return "FAIL";
             }
             boolean checkSignResult = TFPayUtil.verifySignature(BeanUtil.copyProperties(dto, CheckWithdrawSignDTO.class), paymentChannels.get(0).getSecretKey(), dto.getSign());
-            
+
             if (!checkSignResult) {
                 log.error("签名校验失败");
                 return "FAIL";

+ 18 - 4
cif-service/src/main/java/com/txz/cif/web/mng/RechargeRecordController.java

@@ -15,6 +15,7 @@ import com.txz.cif.model.*;
 import com.txz.cif.service.*;
 import com.txz.cif.web.bo.RechargeRecordBO;
 import com.txz.cif.web.para.RecordParam;
+import com.txz.cif.web.vo.ListVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -26,6 +27,7 @@ import tk.mybatis.mapper.entity.Example.Criteria;
 import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -108,11 +110,23 @@ public class RechargeRecordController {
     
     @PostMapping("/list")
     @ApiOperation(value = "rechargeRecord获取列表", httpMethod = "POST")
-    public Result<PageInfo<RechargeRecordBO>> list(@RequestBody RecordParam param) {
+    public Result<ListVO<PageInfo<RechargeRecordBO>>> list(@RequestBody RecordParam param) {
         
         PageHelper.startPage(param.getPage(), param.getSize());
         
-        return Result.success(new PageInfo(rechargeRecordService.pageList(param)));
+        PageInfo pageInfo = new PageInfo(rechargeRecordService.pageList(param));
+        
+        
+        ListVO listVO = rechargeRecordService.pageParam(param);
+        listVO.setList(pageInfo);
+        
+        if (new BigDecimal(listVO.getOrderNum()).compareTo(BigDecimal.ZERO) == 0) {
+            listVO.setSuccessRate(BigDecimal.ZERO);
+        } else {
+            listVO.setSuccessRate(new BigDecimal(listVO.getSuccessNum()).divide(new BigDecimal(listVO.getOrderNum()), 2, BigDecimal.ROUND_HALF_UP));
+        }
+        
+        return Result.success(listVO);
         
         // Condition condition = new Condition(RechargeRecord.class);
         // Criteria criteria = condition.createCriteria();
@@ -225,14 +239,14 @@ public class RechargeRecordController {
                             temp.getUserId(),
                             temp.getAmount() == null ? "0" : temp.getAmount().toPlainString(),
                             temp.getDiscount() == null ? "0" : temp.getDiscount().toPlainString(),
-
+                            
                             temp.getStatus() + "",
                             temp.getChannel(),
                             temp.getCurrency(),
                             temp.getUserName(),
                             temp.getUserPhone(),
                             temp.getTransTime() == null ? "" : DateUtil.format(temp.getTransTime(), "yyyy-MM-dd HH:mm:ss"),
-
+                            
                             temp.getSuccessTime() == null ? "" : DateUtil.format(temp.getSuccessTime(), "yyyy-MM-dd HH:mm:ss"),
                             temp.getBank(),
                             temp.getBankAccount(),

+ 1 - 2
cif-service/src/main/java/com/txz/cif/web/mng/WithdrawRecordController.java

@@ -38,7 +38,6 @@ import java.math.RoundingMode;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Created by CodeGenerator on 2025/07/15.
@@ -74,7 +73,7 @@ public class WithdrawRecordController {
             WithdrawRecordBO bo = BeanUtil.toBean(withdrawRecord, WithdrawRecordBO.class);
             Condition c = new Condition(BizLog.class);
             c.createCriteria().andEqualTo("bizType", 2)
-                    .andEqualTo("bizNo", withdrawRecord.getThirdOrderNo());
+                    .andEqualTo("bizNo", withdrawRecord.getOrderNo());
             List<BizLog> logs = bizLogService.findByCondition(c);
             bo.setBizLogs(logs);
             

+ 14 - 15
cif-service/src/main/resources/static/i18n/messages_bn_BD.properties

@@ -1,18 +1,18 @@
 
 BizTypeEnum.RECHARGE=recharge
 BizTypeEnum.WITHDRAW=withdraw
-BizTypeEnum.OPEN_GROUP_PAY=open group pay
-BizTypeEnum.JOIN_GROUP_PAY=join group pay
-BizTypeEnum.FAIL_GROUP_REFUND=fail group refund
-BizTypeEnum.SUCCESS_GROUP_REFUND=success group refund
-BizTypeEnum.OPEN_GROUP_RED_ENVELOPE=Open Group Reward
-BizTypeEnum.JOIN_GROUP_RED_ENVELOPE=Join Group Reward
-BizTypeEnum.SIGN_RED_ENVELOPE=Check-in Reward
-BizTypeEnum.FIRST_COMMISSION=Direct Referral Reward
-BizTypeEnum.SECONDARY_COMMISSION=Indirect Referral Reward
-BizTypeEnum.PROMOTION_COMMISSION=Refer Friends Reward
-BizTypeEnum.REFUND_RECHARGE=refund recharge
-BizTypeEnum.WITHDRAWAL_FEE=withdrawal fee
+BizTypeEnum.OPEN GROUP PAY=open group pay
+BizTypeEnum.JOIN GROUP PAY=join group pay
+BizTypeEnum.FAIL GROUP REFUND=fail group refund
+BizTypeEnum.SUCCESS GROUP REFUND=success group refund
+BizTypeEnum.OPEN GROUP RED ENVELOPE=Open Group Reward
+BizTypeEnum.JOIN GROUP RED ENVELOPE=Join Group Reward
+BizTypeEnum.SIGN RED ENVELOPE=Check-in Reward
+BizTypeEnum.FIRST COMMISSION=Direct Referral Reward
+BizTypeEnum.SECONDARY COMMISSION=Indirect Referral Reward
+BizTypeEnum.PROMOTION COMMISSION=Refer Friends Reward
+BizTypeEnum.REFUND RECHARGE=refund recharge
+BizTypeEnum.WITHDRAWAL FEE=withdrawal fee
 BizTypeEnum.FREEZE=freeze
 BizTypeEnum.UNFREEZE=unfreeze
 
@@ -20,10 +20,9 @@ RechargeStatusEnum.PROCESSED=Processing
 RechargeStatusEnum.SUCCESS=Completed
 RechargeStatusEnum.FAIL=Failed
 RechargeStatusEnum.CANCEL=Closed
-
-WithdrawStatusEnum.WAITING_REVIEW=Waiting_Review
+WithdrawStatusEnum.WAITING REVIEW=Waiting Review
 WithdrawStatusEnum.PROCESSED=Processing
-WithdrawStatusEnum.REVIEW_FAIL=Review_Failed
+WithdrawStatusEnum.REVIEW FAIL=Review Failed
 WithdrawStatusEnum.SUCCESS=Completed
 WithdrawStatusEnum.FAIL=Failed
 WithdrawStatusEnum.CANCEL=Closed

+ 2 - 3
cif-service/src/main/resources/static/i18n/messages_en.properties

@@ -20,10 +20,9 @@ RechargeStatusEnum.PROCESSED=Processing
 RechargeStatusEnum.SUCCESS=Completed
 RechargeStatusEnum.FAIL=Failed
 RechargeStatusEnum.CANCEL=Closed
-
-WithdrawStatusEnum.WAITING_REVIEW=Waiting_Review
+WithdrawStatusEnum.WAITING_REVIEW=Waiting Review
 WithdrawStatusEnum.PROCESSED=Processing
-WithdrawStatusEnum.REVIEW_FAIL=Review_Failed
+WithdrawStatusEnum.REVIEW_FAIL=Review Failed
 WithdrawStatusEnum.SUCCESS=Completed
 WithdrawStatusEnum.FAIL=Failed
 WithdrawStatusEnum.CANCEL=Closed

+ 2 - 3
cif-service/src/main/resources/static/i18n/messages_en_US.properties

@@ -20,10 +20,9 @@ RechargeStatusEnum.PROCESSED=Processing
 RechargeStatusEnum.SUCCESS=Completed
 RechargeStatusEnum.FAIL=Failed
 RechargeStatusEnum.CANCEL=Closed
-
-WithdrawStatusEnum.WAITING_REVIEW=Waiting_Review
+WithdrawStatusEnum.WAITING_REVIEW=Waiting Review
 WithdrawStatusEnum.PROCESSED=Processing
-WithdrawStatusEnum.REVIEW_FAIL=Review_Failed
+WithdrawStatusEnum.REVIEW_FAIL=Review Failed
 WithdrawStatusEnum.SUCCESS=Completed
 WithdrawStatusEnum.FAIL=Failed
 WithdrawStatusEnum.CANCEL=Closed