Mr.qian 2 settimane fa
parent
commit
664201de84

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

+ 44 - 2
cif-service/src/main/java/com/txz/cif/dao/impl/RechargeRecordMapperImpl.java

@@ -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, " +
+                " SUM(crr.amount) AS order_amount, " +
+                " SUM(CASE WHEN crr.status = 2 THEN 1 ELSE 0 END) AS success_num, " +
+                " SUM(CASE WHEN crr.status = 2 THEN crr.real_amount ELSE 0 END) 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;
     }
 }

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

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

+ 14 - 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,19 @@ 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);
+        
+        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 +235,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(),