소스 검색

提现list支持统计功能

linxk 2 주 전
부모
커밋
6efd892666

+ 20 - 0
cif-service/src/main/java/com/txz/cif/dao/WithdrawRecordMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
+import java.util.Map;
 
 public interface WithdrawRecordMapper extends Mapper<WithdrawRecord> {
 
@@ -14,4 +15,23 @@ public interface WithdrawRecordMapper extends Mapper<WithdrawRecord> {
 
     @Select("SELECT SUM(amount) FROM   c_withdraw_record WHERE status = #{status} and create_time > #{startTime} and create_time < #{endTime}")
     BigDecimal sumByStatus(HashMap map);
+
+    @Select("<script>" +
+            "SELECT SUM(amount) FROM c_withdraw_record " +
+            "<where> 1 = 1 " +
+            "<if test='channel != null'>AND channel = #{channel}</if>" +
+            "<if test='bank != null'>AND bank = #{bank}</if>" +
+            "<if test='userName != null'>AND user_name = #{userName}</if>" +
+            "<if test='userPhone != null'>AND user_phone = #{userPhone}</if>" +
+            "<if test='orderNo != null'>AND order_no = #{orderNo}</if>" +
+            "<if test='status != null'>AND status = #{status}</if>" +
+            "<if test='accountType != null'>AND account_type = #{accountType}</if>" +
+            "<if test='startTime != null'>AND create_time > #{startTime}</if>" +
+            "<if test='endTime != null'>AND #{endTime} > create_time </if>" +
+            "<if test='startSuccessTime != null'>AND success_time > #{startSuccessTime}</if>" +
+            "<if test='endSuccessTime != null'>AND #{endSuccessTime} > success_time  </if>" +
+
+            "</where>" +
+            "</script>")
+    BigDecimal sumByMap(HashMap map);
 }

+ 3 - 0
cif-service/src/main/java/com/txz/cif/service/WithdrawRecordService.java

@@ -6,6 +6,7 @@ import com.txz.cif.core.Service;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Map;
 
 
 /**
@@ -24,4 +25,6 @@ public interface WithdrawRecordService extends Service<WithdrawRecord> {
     Integer countByUserId(HashMap map);
 
     BigDecimal sumByStatus(HashMap map);
+
+    BigDecimal sumByMap(HashMap<String, String> map);
 }

+ 5 - 0
cif-service/src/main/java/com/txz/cif/service/impl/WithdrawRecordServiceImpl.java

@@ -215,4 +215,9 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
     public BigDecimal sumByStatus(HashMap map) {
         return withdrawRecordMapper.sumByStatus(map);
     }
+
+    @Override
+    public BigDecimal sumByMap(HashMap<String, String> map) {
+        return withdrawRecordMapper.sumByMap(map);
+    }
 }

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

@@ -21,6 +21,7 @@ import com.txz.cif.service.WithdrawRecordService;
 import com.txz.cif.web.bo.WithdrawRecordBO;
 import com.txz.cif.web.para.RecordParam;
 import com.txz.cif.web.para.ReviewParam;
+import com.txz.cif.web.vo.ListVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
@@ -32,8 +33,12 @@ 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.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.
@@ -122,49 +127,92 @@ public class WithdrawRecordController {
     
     @PostMapping("/list")
     @ApiOperation(value = "withdrawRecord获取列表", httpMethod = "POST")
-    public Result<List<WithdrawRecord>> list(@RequestBody RecordParam param) {
+    public Result<ListVO<PageInfo<WithdrawRecord>>> list(@RequestBody RecordParam param) {
         
         PageHelper.startPage(param.getPage(), param.getSize());
         
         Condition condition = new Condition(WithdrawRecord.class);
         Criteria criteria = condition.createCriteria();
+        HashMap<String,String> map = new HashMap<>();
         if (StrUtil.isNotBlank(param.getChannel())) {
             criteria.andEqualTo("channel", param.getChannel());
+            map.put("channel", param.getChannel());
         }
         if (StrUtil.isNotBlank(param.getMethodName())) {
             criteria.andEqualTo("bank", param.getMethodName());
+            map.put("bank", param.getMethodName());
         }
         if (StrUtil.isNotBlank(param.getUserName())) {
             criteria.andEqualTo("userName", param.getUserName());
+            map.put("userName", param.getUserName());
         }
         if (StrUtil.isNotBlank(param.getUserPhone())) {
             criteria.andEqualTo("userPhone", param.getUserPhone());
+            map.put("userPhone", param.getUserPhone());
         }
         if (StrUtil.isNotBlank(param.getOrderNo())) {
             criteria.andEqualTo("orderNo", param.getOrderNo());
+            map.put("orderNo", param.getOrderNo());
+
         }
         if (param.getStatus() != null) {
             criteria.andEqualTo("status", param.getStatus());
+            map.put("status", param.getStatus()+"");
         }
         if (param.getAccountType() != null) {
             criteria.andEqualTo("accountType", param.getAccountType());
+            map.put("accountType", param.getAccountType()+"");
         }
         if (param.getTimeType() != null) {
             if (param.getTimeType() == 1) {
                 if (StrUtil.isNotBlank(param.getStartTime())) {
                     criteria.andBetween("createTime", param.getStartTime(), param.getEndTime());
+                    map.put("startTime", param.getStartTime());
+                    map.put("endTime", param.getEndTime());
                 }
             } else if (param.getTimeType() == 2) {
                 if (StrUtil.isNotBlank(param.getStartTime())) {
                     criteria.andBetween("successTime", param.getStartTime(), param.getEndTime());
+                    map.put("startSuccessTime", param.getStartTime());
+                    map.put("endSuccessTime", param.getEndTime());
                 }
             }
         }
+        ListVO<PageInfo<WithdrawRecord>> vo = new ListVO();
+
         PageInfo pageInfo = null;
         try {
             condition.setOrderByClause("create_time desc");
             List<WithdrawRecord> list = withdrawRecordService.findByCondition(condition);
             pageInfo = new PageInfo(list);
+            vo.setList(pageInfo);
+            Integer num = withdrawRecordService.countByCondition(condition);
+            if (num == null){
+                num=0;
+            }
+            vo.setOrderNum(num);
+            BigDecimal amount = withdrawRecordService.sumByMap(map);
+            if (amount == null){
+                amount=BigDecimal.ZERO;
+            }
+            vo.setOrderAmount(amount);
+            criteria.andEqualTo("status", 4);
+            map.put("status", "4");
+            Integer successNum = withdrawRecordService.countByCondition(condition);
+            if (successNum == null){
+                successNum=0;
+            }
+            vo.setSuccessNum(successNum);
+            BigDecimal successAmount = withdrawRecordService.sumByMap(map);
+            if (successAmount == null){
+                successAmount=BigDecimal.ZERO;
+            }
+            vo.setSuccessAmount(successAmount);
+            BigDecimal successRate = BigDecimal.ZERO;
+            if (num != 0){
+                successRate=BigDecimal.valueOf(successNum).divide(BigDecimal.valueOf(num),2, RoundingMode.DOWN);
+            }
+            vo.setSuccessRate(successRate);
         } catch (Exception e) {
             log.error("查询对象操作异常e:{}", e);
             return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);

+ 54 - 0
cif-service/src/main/java/com/txz/cif/web/vo/ListVO.java

@@ -0,0 +1,54 @@
+package com.txz.cif.web.vo;
+
+import com.alibaba.nacos.api.annotation.NacosApi;
+import com.github.pagehelper.PageInfo;
+import com.txz.cif.model.WithdrawRecord;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author: MTD®️
+ * @date: 2025/9/2
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ListVO<T> {
+    
+    /**
+     * 订单数
+     */
+    private Integer orderNum;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal orderAmount;
+
+    /**
+     * 成功订单数
+     */
+    private Integer successNum;
+
+    /**
+     * 成功金额
+     */
+    private BigDecimal successAmount;
+
+    /**
+     * 成功率
+     */
+    private BigDecimal successRate;
+    
+    /**
+     * 支付连接
+     */
+    private PageInfo<T> list;
+    
+}