Răsfoiți Sursa

报表统计

linxk 2 săptămâni în urmă
părinte
comite
f696db8381

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

@@ -8,6 +8,7 @@ import com.txz.cif.web.para.RecordParam;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 
@@ -18,4 +19,7 @@ public interface RechargeRecordMapper extends Mapper<RechargeRecord> {
 
     @Select("SELECT COUNT(DISTINCT user_id)  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}")
+    BigDecimal sumByStatus(HashMap map);
 }

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

@@ -17,4 +17,6 @@ public interface RedEnvelopeMapper extends Mapper<RedEnvelope> {
     List<UserTopBo> top(HashMap<String, Object> map);
 
     List<EarningsDTO> sumWithOrderNo(String orderNo);
+
+    BigDecimal sumByStatus(HashMap map);
 }

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

@@ -2,6 +2,16 @@ package com.txz.cif.dao;
 
 import com.txz.cif.core.Mapper;
 import com.txz.cif.model.WithdrawRecord;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
 
 public interface WithdrawRecordMapper extends Mapper<WithdrawRecord> {
+
+    @Select("SELECT COUNT(DISTINCT user_id)  c_withdraw_record WHERE status = #{status} and create_time > #{startTime} and create_time < #{endTime}")
+    Integer countByUserId(HashMap map);
+
+    @Select("SELECT SUM(amount) FROM   c_withdraw_record WHERE status = #{status} and create_time > #{startTime} and create_time < #{endTime}")
+    BigDecimal sumByStatus(HashMap map);
 }

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

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

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

@@ -8,6 +8,7 @@ import com.txz.cif.web.bo.UserTopBo;
 import com.txz.cif.web.para.RedEnvelopeParam;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 import java.util.List;
 
 
@@ -32,4 +33,6 @@ public interface RedEnvelopeService extends Service<RedEnvelope> {
     List<EarningsDTO> sumWithOrderNo(String orderNo);
 
     void settle(RedEnvelope redEnvelope);
+
+    BigDecimal sumByStatus(HashMap map);
 }

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

@@ -3,7 +3,9 @@ package com.txz.cif.service;
 import com.txz.cif.model.WithdrawRecord;
 import com.txz.cif.core.Service;
 
+import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashMap;
 
 
 /**
@@ -18,4 +20,8 @@ public interface WithdrawRecordService extends Service<WithdrawRecord> {
     void success(WithdrawRecord record, Date successTime);
     
     void fail(WithdrawRecord record);
+
+    Integer countByUserId(HashMap map);
+
+    BigDecimal sumByStatus(HashMap map);
 }

+ 6 - 0
cif-service/src/main/java/com/txz/cif/service/impl/RechargeRecordServiceImpl.java

@@ -17,6 +17,7 @@ import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -91,4 +92,9 @@ public class RechargeRecordServiceImpl extends AbstractService<RechargeRecord> i
     public Integer countByUserId(HashMap map) {
         return rechargeRecordMapper.countByUserId(map);
     }
+
+    @Override
+    public BigDecimal sumByStatus(HashMap map) {
+        return rechargeRecordMapper.sumByStatus(map);
+    }
 }

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

@@ -128,7 +128,12 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         flowService.settle(redEnvelope);
         update(RedEnvelope.builder().id(redEnvelope.getId()).status(2).build());
     }
-    
+
+    @Override
+    public BigDecimal sumByStatus(HashMap map) {
+        return cRedEnvelopeMapper.sumByStatus(map);
+    }
+
     public static void main(String[] args) {
         System.out.println(DateUtil.now());
     }

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

@@ -11,6 +11,8 @@ import com.baomidou.lock.executor.RedisTemplateLockExecutor;
 import com.txz.cif.constants.MyConstants;
 import com.txz.cif.core.AbstractService;
 import com.txz.cif.core.ServiceException;
+import com.txz.cif.dao.UserMapper;
+import com.txz.cif.dao.WithdrawRecordMapper;
 import com.txz.cif.dto.BizLogDTO;
 import com.txz.cif.dto.Result;
 import com.txz.cif.dto.tfpay.TFWithdrawDTO;
@@ -25,7 +27,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 
 
@@ -36,7 +40,9 @@ import java.util.Map;
 @Slf4j
 @Transactional
 public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> implements WithdrawRecordService {
-    
+
+    @Resource
+    private WithdrawRecordMapper withdrawRecordMapper;
     @Resource
     private AccountService accountService;
     
@@ -178,4 +184,14 @@ public class WithdrawRecordServiceImpl extends AbstractService<WithdrawRecord> i
         }
         update(WithdrawRecord.builder().id(record.getId()).status(5).build());
     }
+
+    @Override
+    public Integer countByUserId(HashMap map) {
+        return withdrawRecordMapper.countByUserId( map);
+    }
+
+    @Override
+    public BigDecimal sumByStatus(HashMap map) {
+        return withdrawRecordMapper.sumByStatus( map);
+    }
 }

+ 158 - 14
cif-service/src/main/java/com/txz/cif/web/mng/ReportController.java

@@ -1,6 +1,7 @@
 package com.txz.cif.web.mng;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
@@ -51,6 +52,9 @@ public class ReportController extends AbstractApiController {
     @Resource
     private RechargeRecordService rechargeRecordService;
 
+    @Resource
+    private WithdrawRecordService withdrawRecordService;
+
 
 
     @PostMapping("/query")
@@ -60,13 +64,13 @@ public class ReportController extends AbstractApiController {
             Condition c = new Condition(User.class);
             c.createCriteria().andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59");
             Integer num = userService.countByCondition(c);
-            return ResultGenerator.genSuccessResult(num);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
         } else  if (query.getType() == 2){
             Condition  c = new Condition(User.class);
             c.createCriteria().andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
                     .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
             Integer num = userService.countByCondition(c);
-            return ResultGenerator.genSuccessResult(num);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
         } else if (query.getType() == 3){
             Condition  c = new Condition(User.class);
             Date date = DateUtil.parseDate(query.getDay());
@@ -74,29 +78,169 @@ public class ReportController extends AbstractApiController {
             c.createCriteria().andLessThanOrEqualTo("lastLoginTime",date)
                     .andGreaterThanOrEqualTo("lastLoginTime",day7);
             Integer num = userService.countByCondition(c);
-            return ResultGenerator.genSuccessResult(num);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
         } else if (query.getType() == 4){
             HashMap map = new HashMap();
             map.put("status",2);
             map.put("startTime",query.getDay()+" 00:00:00");
             map.put("endTime",query.getDay()+" 23:59:59");
-//            Condition  c = new Condition(RechargeRecord.class);
-//            c.createCriteria().andEqualTo("status",2).andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
-//                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
             Integer num = rechargeRecordService.countByUserId(map);
-            return ResultGenerator.genSuccessResult(num);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
         } else if (query.getType() == 5){
-//            Condition  c = new Condition(Flow.class);
-//            c.createCriteria().andEqualTo("type",6).andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
-//                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
-//            c.setDistinct(true);
-//            c.setCountProperty("user_id");
-
             HashMap map = new HashMap();
             map.put("type",6);
             map.put("startTime",query.getDay()+" 00:00:00");
             map.put("endTime",query.getDay()+" 23:59:59");
-            Integer integer = flowService.countByUserId(map);
+            Integer num = flowService.countByUserId(map);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
+        } else if (query.getType() == 6){
+            HashMap map = new HashMap();
+            map.put("status",4);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            Integer num = withdrawRecordService.countByUserId(map);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
+        } else if (query.getType() == 9){
+            //充值总金额
+            HashMap map = new HashMap();
+            map.put("status",2);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = rechargeRecordService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        } else if (query.getType() == 8){
+            Condition c = new Condition(RechargeRecord.class);
+            c.createCriteria().andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            Integer num = userService.countByCondition(c);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(num));
+        } else if (query.getType() == 10){
+            //充值成功率
+            Condition c = new Condition(RechargeRecord.class);
+            c.createCriteria().andEqualTo("status",2)
+                    .andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            // 执行查询,返回一个包含求和结果的对象列表
+            Integer count = rechargeRecordService.countByCondition(c);
+            c = new Condition(RechargeRecord.class);
+            c.createCriteria()
+                    .andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            // 执行查询,返回一个包含求和结果的对象列表
+            Integer total = rechargeRecordService.countByCondition(c);
+            if (total != 0){
+                return ResultGenerator.genSuccessResult(BigDecimal.valueOf(count).divide(BigDecimal.valueOf(total),2, RoundingMode.DOWN));
+            }
+            return ResultGenerator.genSuccessResult(BigDecimal.ZERO);
+        }else if (query.getType() == 11){
+            //平均充值金额
+            //充值金额
+            HashMap map = new HashMap();
+            map.put("status",2);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            BigDecimal sum = rechargeRecordService.sumByStatus(map);
+            //充值订单数
+            Condition c = new Condition(RechargeRecord.class);
+            c.createCriteria().andEqualTo("status",2)
+                    .andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            Integer count = rechargeRecordService.countByCondition(c);
+            if (count != 0){
+                return ResultGenerator.genSuccessResult(sum.divide(BigDecimal.valueOf(count),2, RoundingMode.DOWN));
+            }
+            return ResultGenerator.genSuccessResult(BigDecimal.ZERO);
+        } else if (query.getType() == 14){
+            //提现总金额
+            HashMap map = new HashMap();
+            map.put("status",4);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = withdrawRecordService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        } else if (query.getType() == 13){
+            //提现订单数
+            Condition c = new Condition(RechargeRecord.class);
+            c.createCriteria().andEqualTo("status",4)
+                    .andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            Integer count = withdrawRecordService.countByCondition(c);
+            return ResultGenerator.genSuccessResult(BigDecimal.valueOf(count));
+        } else if (query.getType() == 16){
+            //平均提现金额
+            //提现金额
+            HashMap map = new HashMap();
+            map.put("status",4);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            BigDecimal sum = withdrawRecordService.sumByStatus(map);
+            //提现订单数
+            Condition c = new Condition(RechargeRecord.class);
+            c.createCriteria().andEqualTo("status",4)
+                    .andLessThanOrEqualTo("createTime",query.getDay()+" 23:59:59")
+                    .andGreaterThanOrEqualTo("createTime",query.getDay()+" 00:00:00");
+            Integer count = withdrawRecordService.countByCondition(c);
+            if (count != 0){
+                return ResultGenerator.genSuccessResult(sum.divide(BigDecimal.valueOf(count),2, RoundingMode.DOWN));
+            }
+            return ResultGenerator.genSuccessResult(BigDecimal.ZERO);
+        }else if (query.getType() == 17){
+            HashMap map = new HashMap();
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 18){
+            HashMap map = new HashMap();
+            map.put("status",1);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 19){
+            HashMap map = new HashMap();
+            map.put("status",2);
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 20){
+            HashMap map = new HashMap();
+            map.put("bizType",BizTypeEnum.PROMOTION_COMMISSION.getValue());
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 21){
+            HashMap map = new HashMap();
+            map.put("bizType",BizTypeEnum.OPEN_GROUP_RED_ENVELOPE.getValue());
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 22){
+            HashMap map = new HashMap();
+            map.put("bizType",BizTypeEnum.JOIN_GROUP_RED_ENVELOPE.getValue());
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
+        }else if (query.getType() == 23){
+            HashMap map = new HashMap();
+            map.put("bizType",BizTypeEnum.SIGN_RED_ENVELOPE.getValue());
+            map.put("startTime",query.getDay()+" 00:00:00");
+            map.put("endTime",query.getDay()+" 23:59:59");
+            // 执行查询,返回一个包含求和结果的对象列表
+            BigDecimal sum = redEnvelopeService.sumByStatus(map);
+            return ResultGenerator.genSuccessResult(sum);
         }
         return ResultGenerator.genSuccessResult(BigDecimal.ZERO);
     }

+ 3 - 3
cif-service/src/main/java/com/txz/cif/web/para/CountQuery.java

@@ -28,9 +28,9 @@ public class CountQuery implements Serializable {
     private String day;
 
     /**
-     * 统计类型 1总用户数 2新增用户数 3 活跃用户数 4充值用户数 5购买用户数 6提现用户数 7充值总金额 8充值订单数 9充值金额
-     * 10充值成功率 11平均充值金额 12提现总金额 13提现订单数 14提现金额 15提现成功率 16平均提现金额
-     * 17营销总金额 18营销总金额-待结算 19营销总金额-已结算  20 邀请好友奖励金额 21开团奖励金额 22拼团奖励金额 23 签到经理金额
+     * 统计类型 1总用户数 2新增用户数 3 活跃用户数 4充值用户数 5购买用户数 6提现用户数  8充值订单数 9充值金额
+     * 10充值成功率 11平均充值金额  13提现订单数 14提现金额 15提现成功率 16平均提现金额
+     * 17营销总金额 18营销总金额-待结算 19营销总金额-已结算  20 邀请好友奖励金额 21开团奖励金额 22拼团奖励金额 23 签到奖励金额
      */
     private Byte type;
 

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

@@ -63,4 +63,21 @@
     FROM c_red_envelope
     WHERE order_no=#{orderNo} group by user_id
   </select>
+
+  <select id="sumByStatus" resultType="java.math.BigDecimal">
+    SELECT SUM(amount)
+    FROM c_red_envelope
+    WHERE
+    1=1
+    <if test="status == 1">
+       and status = 1
+    </if>
+    <if test="status == 2">
+      and status = 2
+    </if>
+    <if test="bizType != null">
+      and bizType = #{bizType}
+    </if>
+    and create_time >= #{startTime} and #{endTime} >=  create_time
+    </select>
 </mapper>