Explorar el Código

品牌列表接口添加字段品牌价格 计奖交易-首页交易总额已重构

Pota1ovO hace 2 años
padre
commit
8be77e3d07

+ 5 - 2
kxs-product/kxs-product-api/src/main/java/com/kxs/product/api/vo/kxsapp/brand/BrandListVO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -84,8 +85,10 @@ public class BrandListVO implements Serializable {
      */
     @Schema(description = "全部机具数量")
     private Long totalMachineCount;
-
-
+    /**
+     * 品牌价格
+     */
+    private BigDecimal posPrice;
 
 
 

+ 41 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/TotalTradeAmtVO.java

@@ -0,0 +1,41 @@
+package com.kxs.stat.api.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *  用户交易额汇总
+ *
+ * @author Pota1ovO
+ * @date 2024-05-21
+ */
+@Data
+public class TotalTradeAmtVO {
+
+    /**
+     * pos交易额
+     */
+    private BigDecimal posAmt;
+    /**
+     * 来客吧交易额
+     */
+    private BigDecimal lkbAmt;
+    /**
+     * 来客吧活动交易额
+     */
+    private BigDecimal lkbActAmt;
+    /**
+     * GD 激活量
+     */
+    private Integer gdCount;
+    /**
+     * 助力宝交易额
+     */
+    private BigDecimal zlbAmt;
+    /**
+     * 广电话费
+     */
+    private BigDecimal gdAmount;
+
+}

+ 5 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsLkbTradeMapper.java

@@ -2,9 +2,13 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsLkbTrade;
+import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.cursor.Cursor;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -23,5 +27,6 @@ public interface KxsLkbTradeMapper extends BaseMapper<KxsLkbTrade> {
      */
     Cursor<KxsLkbTrade> getUserTradeMonthList(String month);
 
+    TotalTradeAmtVO getLkbTrade(@Param("userId")Long userId, @Param("date")String date,@Param("type")Integer type);
 }
 

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

@@ -37,7 +37,7 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
 
     /**
      * 查询用户激活量   全部或根据品牌分组   获取半年或近七天
-     * @param times 查询日期
+     * @param times 查询日期集合
      * @param userId 用户id
      * @param brandId 是否根据品牌分组  否传null
      * @param type 根据月份或者根据日查询  1日  2月

+ 16 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserGdTradeMapper.java

@@ -2,7 +2,9 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserGdTrade;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 广电话费统计表(KxsUserGdTrade)表数据库访问层
@@ -12,6 +14,20 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface KxsUserGdTradeMapper extends BaseMapper<KxsUserGdTrade> {
+    /**
+     * 获取广电卡激活量
+     * @param userId 用户id
+     * @param date 日
+     * @return
+     */
+    TotalTradeAmtVO getGdActCount(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
 
+    /**
+     * 获取广电卡话费
+     * @param userId
+     * @param date
+     * @return
+     */
+    TotalTradeAmtVO getGdTrade(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
 }
 

+ 7 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserNewTradeMapper.java

@@ -15,7 +15,13 @@ import java.util.List;
  */
 @Mapper
 public interface KxsUserNewTradeMapper extends BaseMapper<KxsUserNewTrade> {
-
+    /**
+     * 获取指定日期新增的用户
+     * @param userId
+     * @param times 指定日期集合
+     * @param type 1获取近7日,2获取近半年
+     * @return
+     */
     List<TrendTimesVO> getUserAddTrend(Long userId, List<String> times, Integer type);
 }
 

+ 11 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserTradeMapper.java

@@ -3,6 +3,7 @@ package com.kxs.stat.biz.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsUserTrade;
 import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import com.kxs.stat.api.vo.statUser.PercentVO;
 import com.kxs.stat.api.vo.statUser.StatUserGetHomeAmoutVO;
 import com.kxs.stat.api.vo.statUser.TrendTimesVO;
@@ -74,5 +75,15 @@ public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
 
 
     StatUserGetHomeAmoutVO getHomeAmout(@Param("userId")Long userId, @Param("tableName")String tableName,@Param("date")String date,@Param("month")String month);
+
+    /**
+     * 获取月或日pos交易额
+     * @param userId
+     * @param tableName
+     * @param date 时间
+     * @param type 1日  2月
+     * @return
+     */
+    TotalTradeAmtVO getPosTrade(@Param("userId")Long userId, @Param("tableName")String tableName, @Param("date")String date,@Param("type")Integer type);
 }
 

+ 4 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsZlbTradeMapper.java

@@ -2,7 +2,9 @@ package com.kxs.stat.biz.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.kxs.stat.api.model.KxsZlbTrade;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 助力宝交易额统计(KxsZlbTrade)表数据库访问层
@@ -13,5 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface KxsZlbTradeMapper extends BaseMapper<KxsZlbTrade> {
 
+    TotalTradeAmtVO getZlbTrade(@Param("userId")Long userId, @Param("date")String date, @Param("type")Integer type);
+
 }
 

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

@@ -15,6 +15,7 @@ import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.api.model.KxsUserLogoutTrade;
 import com.kxs.stat.api.model.KxsUserTrade;
 import com.kxs.stat.api.vo.ShdTradeAmtVO;
+import com.kxs.stat.api.vo.TotalTradeAmtVO;
 import com.kxs.stat.api.vo.statUser.*;
 import com.kxs.stat.biz.constant.enums.TotalTypeEnum;
 import com.kxs.stat.biz.mapper.*;
@@ -33,10 +34,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 个人交易统计总表(KxsUserTrade)表服务实现类
@@ -59,9 +57,11 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
     private final KxsUserLogoutTradeMapper kxsUserLogoutTradeMapper;
 
     private final KxsUserNewTradeMapper kxsUserNewTradeMapper;
+
+    private final KxsZlbTradeMapper kxsZlbTradeMapper;
     private final static String PREFIX_TABLE_NAME = "kxs_user_trade_";
     private final static String PREFIX_TABLE_NAME_TEMP = "kxs_user_trade_temp_";
-
+    private final KxsUserGdTradeMapper kxsUserGdTradeMapper;
 
     @Override
     @Async
@@ -216,8 +216,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                 // 将LocalDate转换为字符串 yyyyMMdd  获取到所需查询日期
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.PURE_DATE_PATTERN);
                 //获取当前日的月份值
-                int monthValue = now.getMonthValue();
-                //判断今日月份值与当前查询日月份是否一致
+                int monthValue = now.getMonthValue();//判断今日月份值与当前查询日月份是否一致
                 if (toDayMonth == monthValue){
                     //一致加入正常查询序列
                     times.add(currentDateString);
@@ -249,13 +248,91 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
     public R getHomeAmout(Long userId) {
         LocalDate now = LocalDate.now();
         String month = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
-        String date = LocalDateTimeUtil.format(now, DatePattern.PURE_DATE_PATTERN);
+        String today = LocalDateTimeUtil.format(now, DatePattern.PURE_DATE_PATTERN);
         //拼接表名
         String tableName = PREFIX_TABLE_NAME + month;
-        StatUserGetHomeAmoutVO statUserGetHomeAmoutVO = baseMapper.getHomeAmout(userId,tableName,date,month);
+//        StatUserGetHomeAmoutVO statUserGetHomeAmoutVO1 = baseMapper.getHomeAmout(userId,tableName,date,month);
+        //今日交易额
+        StatUserGetHomeAmoutVO statUserGetHomeAmoutVO = new StatUserGetHomeAmoutVO();
+
+        //获取团队日总交易额
+        BigDecimal amountToDay = statUserGetHomeAmoutVO.getAmountToDay();
+        amountToDay = getAmountToDayOrMonth(userId, today, tableName, amountToDay, 1);
+        statUserGetHomeAmoutVO.setAmountToDay(amountToDay);
+
+        //获取团队月总交易额
+        BigDecimal amountMonth = statUserGetHomeAmoutVO.getAmountMonth();
+        amountMonth = getAmountToDayOrMonth(userId, month, tableName, amountMonth, 2);
+        statUserGetHomeAmoutVO.setAmountMonth(amountMonth);
+
+        //获取今日新增用户
+        Integer userAddToDay = statUserGetHomeAmoutVO.getUserAddToDay();
+        List<String> todayList = Arrays.asList(today);
+        List<TrendTimesVO> userAddTrendToday = kxsUserNewTradeMapper.getUserAddTrend(userId, todayList, 1);
+        for (TrendTimesVO trendTimesVO : userAddTrendToday) {
+            userAddToDay += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setUserAddToDay(userAddToDay);
+
+        //获取本月新增用户
+        Integer userAddMonth = statUserGetHomeAmoutVO.getUserAddMonth();
+        List<String> monthList = Arrays.asList(month);
+        List<TrendTimesVO> userAddTrendMonth = kxsUserNewTradeMapper.getUserAddTrend(userId, monthList, 2);
+        for (TrendTimesVO trendTimesVO : userAddTrendMonth) {
+            userAddMonth += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setUserAddMonth(userAddMonth);
+
+        //获取今日新增商户
+        Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
+        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1);
+        for (TrendTimesVO trendTimesVO : userActListByDay) {
+            merchantAddToDay += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setMerchantAddToDay(merchantAddToDay);
+
+        //获取本月新增商户
+        Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
+        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2);
+        for (TrendTimesVO trendTimesVO : userActListByMonth) {
+            merchantAddMonth += trendTimesVO.getTotal();
+        }
+        statUserGetHomeAmoutVO.setMerchantAddMonth(merchantAddMonth);
         return R.ok(statUserGetHomeAmoutVO);
     }
 
+    private BigDecimal getAmountToDayOrMonth(Long userId, String date, String tableName, BigDecimal amount, int type) {
+        //pos交易
+        TotalTradeAmtVO totalTradeAmtVO = baseMapper.getPosTrade(userId, tableName, date, type);
+        if (totalTradeAmtVO!= null){
+            amount = amount.add(totalTradeAmtVO.getPosAmt());
+        }
+        //来客吧交易额
+        totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, date, type);
+        if (totalTradeAmtVO!= null) {
+            amount = amount.add(totalTradeAmtVO.getLkbAmt());
+            amount = amount.add(totalTradeAmtVO.getLkbActAmt());
+        }
+        //助力宝交易额
+        totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, date, type);
+        if (totalTradeAmtVO != null) {
+            amount = amount.add(totalTradeAmtVO.getZlbAmt());
+        }
+        //广电交易额
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, date, type);
+        if (totalTradeAmtVO != null){
+            Integer gdCount = totalTradeAmtVO.getGdCount();
+            //广电激活量 * 10000
+            amount = amount.add(new BigDecimal(gdCount * 10000));
+        }
+        //广电话费
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, date, type);
+        if (totalTradeAmtVO != null){
+            amount = amount.add(totalTradeAmtVO.getGdAmount());
+        }
+        return amount;
+    }
+
 
     private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type) {
         StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();

+ 14 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsLkbTradeMapper.xml

@@ -26,5 +26,19 @@
         </where>
         GROUP BY user_id
     </select>
+    <select id="getLkbTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        SELECT SUM(trade_amt) as trade_amt, SUM(act_trade_amt)
+        FROM kxs_lkb_trade
+        <where>
+            and total_type = 1
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+            and user_id = #{userId}
+        </where>
+    </select>
 
 </mapper>

+ 28 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserGdTradeMapper.xml

@@ -17,5 +17,33 @@
         <result column="total_type" property="totalType" />
 
     </resultMap>
+    <select id="getGdActCount" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        SELECT SUM(act_num) as gdCount
+        FROM kxs_user_act_trade
+        <where>
+            and brand_id = 14
+            and total_type = 1
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+        </where>
+    </select>
+    <select id="getGdTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select  SUM(trade_amt) as gdAmount from kxs_user_gd_trade
+        <where>
+            and total_type = 1
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+        </where>
+    </select>
 
 </mapper>

+ 16 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml

@@ -242,6 +242,22 @@
           and kut.trade_date = #{date}
           and kut.total_type = 0
     </select>
+    <select id="getPosTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select
+        sum(pro_b_direct_trade_amt + pro_b_debit_trade_amt + pro_a_debit_trade_amt + pro_a_direct_trade_amt +
+        pro_debit_trade_amt + pro_direct_trade_amt + help_debit_trade_amt + help_direct_trade_amt) as posAmt
+        from ${tableName}
+        <where>
+            and total_type = 1
+            and user_id = #{userId}
+        <if test="type == 1">
+            and trade_date = #{date}
+        </if>
+        <if test="type == 2">
+            and trade_month = #{date}
+         </if>
+        </where>
+    </select>
 
 
     <insert id="insertTempShdTableData">

+ 14 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsZlbTradeMapper.xml

@@ -15,5 +15,19 @@
         <result column="total_type" property="totalType" />
 
     </resultMap>
+    <select id="getZlbTrade" resultType="com.kxs.stat.api.vo.TotalTradeAmtVO">
+        select sum(trade_amt) as zlbAmt from  kxs_zlb_trade
+        <where>
+            and user_id = #{userId}
+            <if test="type == 1">
+                and trade_date = #{date}
+            </if>
+            <if test="type == 2">
+                and trade_month = #{date}
+            </if>
+            and del_flag != 1
+            and total_type = 1
+        </where>
+    </select>
 
 </mapper>