Quellcode durchsuchen

计奖交易-激活商户统计页面接口已完善

Pota1ovO vor 2 Jahren
Ursprung
Commit
e370181fae

+ 0 - 20
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TimesVO.java

@@ -1,20 +0,0 @@
-package com.kxs.stat.api.vo.statUser;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 计奖交易-激活商户vo
- */
-@Data
-public class TimesVO {
-    /**
-     * 用户名
-     */
-    private String name;
-    /**
-     * 激活商户列表 根据时间
-     */
-    private List<TimeVO> time;
-}

+ 2 - 3
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java

@@ -88,17 +88,16 @@ public class KxsStatUserController {
     /**
     /**
      * 计奖交易-激活商户统计
      * 计奖交易-激活商户统计
      *
      *
-     * @param page 分页对象
      * @param totalType 统计类型 0 个人  1 团队
      * @param totalType 统计类型 0 个人  1 团队
      * @param
      * @param
      * @return 计奖交易-激活商户统计
      * @return 计奖交易-激活商户统计
      */
      */
     @GetMapping("/getActivateMerchantList")
     @GetMapping("/getActivateMerchantList")
-    public R getActivateMerchantList(@ParameterObject Page<KxsUserActTrade> page, @RequestParam("totalType")Integer totalType, @RequestParam("userId")Long userId,@RequestParam("month")String month) {
+    public R getActivateMerchantList(@RequestParam("totalType")Integer totalType, @RequestParam("userId")Long userId,@RequestParam("month")String month) {
         if (userId == 0){
         if (userId == 0){
             userId = SecurityUtils.getUser().getId();
             userId = SecurityUtils.getUser().getId();
         }
         }
-        return kxsUserActTradeService.getActivateMerchantList(page,totalType,userId,month);
+        return kxsUserActTradeService.getActivateMerchantList(totalType,userId,month);
     }
     }
 
 
 
 

+ 11 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserActTradeMapper.java

@@ -43,7 +43,7 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
      * @param type 根据月份或者根据日查询  1日  2月
      * @param type 根据月份或者根据日查询  1日  2月
      * @return
      * @return
      */
      */
-    List<TrendTimesVO> getUserActListByDayOrMonth(@Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type);
+    List<TrendTimesVO> getUserActListByDayOrMonth(@Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type, @Param("totalType") Integer totalType);
 
 
     /**
     /**
      * 查询指定日期个人激活数量,
      * 查询指定日期个人激活数量,
@@ -61,6 +61,16 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
      */
      */
     Integer getActivityStatByLkb(@Param("userId")Long userId,@Param("times") List<String> times);
     Integer getActivityStatByLkb(@Param("userId")Long userId,@Param("times") List<String> times);
 
 
+
+    /**
+     * 查询来客吧指定日期个人或团队激活数量以及日期
+     * @param userId 用户Id
+     * @param times 指定日
+     * @param totalType 0个人  1团队
+     * @return
+     */
+    List<TrendTimesVO> getActivityStatByLkbList(@Param("userId")Long userId,@Param("times") List<String> times,@Param("totalType")Integer totalType);
+
     /**
     /**
      * 获取全部激活
      * 获取全部激活
      * @param userId
      * @param userId

+ 1 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserActTradeService.java

@@ -20,6 +20,6 @@ public interface KxsUserActTradeService extends IService<KxsUserActTrade> {
 
 
     List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(List<GetActivityStatByIdAndTimeDTO> param);
     List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(List<GetActivityStatByIdAndTimeDTO> param);
 
 
-    R getActivateMerchantList(Page<KxsUserActTrade> page, Integer totalType,Long userId,String month);
+    R getActivateMerchantList(Integer totalType,Long userId,String month);
 }
 }
 
 

+ 101 - 42
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserActTradeServiceImpl.java

@@ -1,4 +1,5 @@
 package com.kxs.stat.biz.service.impl;
 package com.kxs.stat.biz.service.impl;
+import java.math.BigDecimal;
 
 
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
@@ -54,10 +55,10 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
     }
     }
 
 
     @Override
     @Override
-    public R getActivateMerchantList(Page<KxsUserActTrade> page, Integer totalType,Long userId,String month) {
+    public R getActivateMerchantList(Integer totalType,Long userId,String month) {
         LocalDate now = LocalDate.now();
         LocalDate now = LocalDate.now();
         List<String> times = new ArrayList<>();
         List<String> times = new ArrayList<>();
-        int type = 0;
+        int type;
         if (month.equals("0")){
         if (month.equals("0")){
             type = 2;
             type = 2;
             //查询近半年
             //查询近半年
@@ -69,40 +70,9 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
                 times.add(currentDateString);
                 times.add(currentDateString);
             }
             }
-
-            //查询全部激活
-            List<TrendTimesVO> trendTimesVOS = baseMapper.getUserActListByDayOrMonth(times, userId,null, type);
-            //查询激活, 根据品牌分组
-            List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserActListByDayOrMonth(times, userId, 1, type);
-
-            // todo  暂停
-            //构造数据
-            //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all
-//            ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
-//            Map<String,List<ActivityAddVO>> treadTrend = new HashMap<>();
-//            for (TrendTimesVO trendTimesVO : trendTimesVOS) {
-//                Integer total = trendTimesVO.getTotal();
-//                Integer brandId = trendTimesVO.getBrandId();
-//                ActivityAddVO activityAddVO = new ActivityAddVO();
-//                activityAddVO.setName(String.valueOf(brandId));
-//                activityAddVO.setTotal(total);
-//                activityAddVOS.add(activityAddVO);
-//            }
-//            treadTrend.put("all",activityAddVOS);
-//            treadTrend.put("all", allTimeVOS);
-//
-//            for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
-//                List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId().toString());
-//
-//            }
-//            //将map转换为返回实体类
-//            ArrayList<TrendVO> trendVOS = new ArrayList<>();
-//            for (Map.Entry<String, List<TrendTimesVO>> entry : treadTrend.entrySet()) {
-//                TrendVO trendVO = new TrendVO();
-//                trendVO.setName(entry.getKey());
-//                trendVO.setTimes(entry.getValue());
-//                trendVOS.add(trendVO);
-//            }
+            //获取全部激活并构造为TimeVo格式
+            ArrayList<TimeVO> timeVOS = getTimeVOArrayList(totalType,userId, times, type);
+            return R.ok(timeVOS);
         }else {
         }else {
             type = 1;
             type = 1;
             //校验时间格式是yyyyMM
             //校验时间格式是yyyyMM
@@ -128,13 +98,102 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
                 }
                 }
             }
             }
         }
         }
+        //获取全部激活并构造为TimeVo格式
+        ArrayList<TimeVO> timeVOArrayList = getTimeVOArrayList(totalType,userId, times, type);
+
+        return R.ok(timeVOArrayList);
+    }
 
 
-        //查询广电激活
-        Integer gdNumber = baseMapper.getActivityStatByGdOrPos(userId,times,2);
-        //查询来客吧激活
-        Integer lkbNumber = baseMapper.getActivityStatByLkb(userId,times);
-        TimesVO timesVO = new TimesVO();
-        return null;
+    private ArrayList<TimeVO> getTimeVOArrayList(Integer totalType,Long userId, List<String> times, int type) {
+        //查询全部激活
+        List<TrendTimesVO> trendTimesVOS = baseMapper.getUserActListByDayOrMonth(times, userId,null, type,totalType);
+        //查询激活, 根据品牌分组
+        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserActListByDayOrMonth(times, userId, 1, type,totalType);
+        //构造数据
+        //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all  或来客吧码牌
+        Map<String,List<ActivityAddVO>> timeActivityMap = new HashMap<>();
+        //查询来客吧码牌激活
+        List<TrendTimesVO> trendTimesVOLkbList = baseMapper.getActivityStatByLkbList(userId, times,totalType);
+        //来客吧码牌不再品牌列表中 同all 需要做特殊处理
+        for (TrendTimesVO trendTimesVO : trendTimesVOLkbList) {
+            ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
+            String time = trendTimesVO.getTime();
+            Integer total = trendTimesVO.getTotal();
+            ActivityAddVO activityAddVO = new ActivityAddVO();
+            activityAddVO.setName("来客吧码牌");
+            activityAddVO.setTotal(total);
+            activityAddVOS.add(activityAddVO);
+            //将该来客吧码牌构造成时间为key的map
+            timeActivityMap.put(time,activityAddVOS);
+        }
+        //遍历全部激活集合  注  该集合全部不包含来客吧码牌
+        for (TrendTimesVO trendTimesVO : trendTimesVOS) {
+            //先查询map中是否包含有改时间日期的来客吧码牌激活数据
+            Integer total = trendTimesVO.getTotal();
+            String time = trendTimesVO.getTime();
+            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(time);
+            if (activityAddVOList == null){
+                //当前全部的时间点不存在码牌激活数据时,走正常逻辑构造map
+                //将全部激活集合全部构造成ActivityAddVO放入hashMap中,
+                ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
+                ActivityAddVO activityAddVO = new ActivityAddVO();
+                activityAddVO.setName("all");
+                activityAddVO.setTotal(total);
+                activityAddVOS.add(activityAddVO);
+                //key为时间,值为其ActivityAddVO本身
+                timeActivityMap.put(time,activityAddVOS);
+            }else {
+                //存在数据时,我们需要将码牌数量添加到总激活中
+                for (ActivityAddVO activityAddVO : activityAddVOList) {
+                    //激活总量加上码牌激活量
+                    total += activityAddVO.getTotal();
+                }
+                //再将全部激活集合全部构造成ActivityAddVO放入hashMap中,
+                ActivityAddVO activityAddVO = new ActivityAddVO();
+                activityAddVO.setName("all");
+                activityAddVO.setTotal(total);
+                //将构造的数据添加到我们从map中拿出的List中
+                activityAddVOList.add(activityAddVO);
+            }
+        }
+        //遍历品牌激活
+        for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
+            //查找map获取当前品牌激活统计的时间点
+            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(trendTimesVO.getTime());
+            //在逻辑上,该activityAddVOList不可能为null,但添加校验防止脏数据导致报错
+            if (activityAddVOList != null){
+                //将当前品牌的激活数量构造成activityAddVO 添加入map中去
+                ActivityAddVO activityAddVO = new ActivityAddVO();
+                activityAddVO.setName(trendTimesVO.getBrandId().toString());
+                activityAddVO.setTotal(trendTimesVO.getTotal());
+                activityAddVOList.add(activityAddVO);
+            }
+        }
+
+        //此时我们的hashmap格式已为TimeVO类格式
+        //将map转换为返回实体类
+        ArrayList<TimeVO> timeVOS = new ArrayList<>();
+        //直接遍历map无法根据时间返回  弃用
+//        for (Map.Entry<String, List<ActivityAddVO>> entry : timeActivityMap.entrySet()) {
+//            TimeVO timeVO = new TimeVO();
+//            String key = entry.getKey();
+//            List<ActivityAddVO> value = entry.getValue();
+//            timeVO.setDate(key);
+//            timeVO.setActivityAdd(value);
+//            timeVOS.add(timeVO);
+//        }
+        //改用foresch  根据我们传入的时间进行写入
+        for (String time : times) {
+            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(time);
+            //存在数据则开始构造TimeVO
+            if (activityAddVOList != null){
+                TimeVO timeVO = new TimeVO();
+                timeVO.setDate(time);
+                timeVO.setActivityAdd(activityAddVOList);
+                timeVOS.add(timeVO);
+            }
+        }
+        return timeVOS;
     }
     }
 }
 }
 
 

+ 6 - 6
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java

@@ -288,7 +288,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
         //获取今日新增商户
         //获取今日新增商户
         Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
         Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
-        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1);
+        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1,1);
         for (TrendTimesVO trendTimesVO : userActListByDay) {
         for (TrendTimesVO trendTimesVO : userActListByDay) {
             merchantAddToDay += trendTimesVO.getTotal();
             merchantAddToDay += trendTimesVO.getTotal();
         }
         }
@@ -296,7 +296,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
         //获取本月新增商户
         //获取本月新增商户
         Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
         Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
-        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2);
+        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2,1);
         for (TrendTimesVO trendTimesVO : userActListByMonth) {
         for (TrendTimesVO trendTimesVO : userActListByMonth) {
             merchantAddMonth += trendTimesVO.getTotal();
             merchantAddMonth += trendTimesVO.getTotal();
         }
         }
@@ -482,17 +482,17 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
     private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
     private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
         //查询用户全部激活根据日期分组
         //查询用户全部激活根据日期分组
-        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,null,type);
+        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,null,type,1);
         //判断是否二次查询
         //判断是否二次查询
         if (lastMonthTimes != null){
         if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type);
+            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type,1);
             trendTimesActVOS.addAll(trendTimesActVOSLast);
             trendTimesActVOS.addAll(trendTimesActVOSLast);
         }
         }
         //查询用户全部激活量根据 日期以及品牌 分组
         //查询用户全部激活量根据 日期以及品牌 分组
-        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type);
+        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type,1);
         //判断是否二次查询
         //判断是否二次查询
         if (lastMonthTimes != null){
         if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type);
+            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type,1);
             trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
             trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
         }
         }
         //构造数据
         //构造数据

+ 17 - 1
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserActTradeMapper.xml

@@ -65,7 +65,7 @@
         kxs_user_act_trade
         kxs_user_act_trade
         WHERE del_flag != 1
         WHERE del_flag != 1
         AND user_id = #{userId}
         AND user_id = #{userId}
-        AND total_type = 1
+        AND total_type = #{totalType}
         <if test="type == 1">
         <if test="type == 1">
             AND trade_date IN
             AND trade_date IN
             <foreach collection="times" item="time" open="(" separator="," close=")">
             <foreach collection="times" item="time" open="(" separator="," close=")">
@@ -146,6 +146,22 @@
             </if>
             </if>
         </if>
         </if>
     </select>
     </select>
+    <select id="getActivityStatByLkbList" resultType="com.kxs.stat.api.vo.statUser.TrendTimesVO">
+        select
+        sum(act_num) as total,  trade_date as `time`
+        from
+        kxs_lkb_act_trade
+        where
+        del_flag != 1
+        and total_type = #{totalType}
+        and user_id = #{userId}
+        and trade_date in
+        <foreach collection="times" item="time" open="(" separator="," close=")">
+            #{time}
+        </foreach>
+        group by
+        `time`
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 1 - 1
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/dto/admin/GetByBcqtPageDTO.java

@@ -20,7 +20,7 @@ public class GetByBcqtPageDTO {
      */
      */
     private String teamName;
     private String teamName;
     /**
     /**
-     * 参与用户id
+     * 参与用户编号
      */
      */
     private String userCode;
     private String userCode;
 }
 }

+ 5 - 1
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/vo/kxsapp/camp/CampGetMyBcqtListVO.java

@@ -74,7 +74,11 @@ public class CampGetMyBcqtListVO implements Serializable {
 
 
 
 
 
 
-
+    /**
+     * 参团人数
+     */
+    @Schema(description = "参团人数")
+    private Integer teamNumber;
 	
 	
 
 
 }
 }