Browse Source

修复重构若干问题

mac 2 years ago
parent
commit
94689c6759

+ 32 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/util/TotalDateUtil.java

@@ -5,6 +5,8 @@ import cn.hutool.core.date.LocalDateTimeUtil;
 import com.google.common.collect.Lists;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -73,4 +75,34 @@ public class TotalDateUtil {
         return times;
     }
 
+    /**
+     * 获取月份的天列表
+     * 如果为当月则只取历史的天数
+     *
+     * @param month 月
+     * @return {@link List}<{@link Integer}>
+     */
+    public static List<Integer> getMonthDayList(String month){
+
+        List<Integer> times = Lists.newArrayList();
+
+        LocalDate parse = LocalDateTimeUtil.parseDate(month, DatePattern.SIMPLE_MONTH_PATTERN);
+
+        //本月
+        if(parse.equals(LocalDate.now())){
+            LocalDate firstDayOfMonth = parse.withDayOfMonth(1);
+            for (LocalDate date = firstDayOfMonth; !date.isAfter(parse); date = date.plusDays(1)) {
+                times.add(Integer.valueOf(date.format(DatePattern.SIMPLE_MONTH_FORMATTER)));
+            }
+        }else{
+            int daysInMonth = parse.lengthOfMonth();
+            for (int day = 1; day <= daysInMonth; day++) {
+                LocalDate date = parse.withDayOfMonth(day);
+                times.add(Integer.valueOf(date.format(DatePattern.SIMPLE_MONTH_FORMATTER)));
+            }
+        }
+
+        return times;
+    }
+
 }

+ 4 - 1
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/ActivityAddVO.java → kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/MchActTimeAddVO.java

@@ -3,13 +3,16 @@ package com.kxs.stat.api.vo.statUser;
 import lombok.Data;
 /**
  * 计奖交易-激活商户vo 时间分组实体 品牌分组集合
+ * @author mac
  */
 @Data
-public class ActivityAddVO {
+public class MchActTimeAddVO {
+
     /**
      * 品牌  all为总激活
      */
     private String name;
+
     /**
      * 激活数
      */

+ 5 - 2
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/TimeVO.java → kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/MchActTimeTotalVO.java

@@ -6,16 +6,19 @@ import java.util.List;
 
 /**
  * 计奖交易-激活商户vo 时间分组实体
+ * @author mac
  */
 @Data
-public class TimeVO {
+public class MchActTimeTotalVO {
+
     /**
      * 时间
      */
     private Integer date;
+
     /**
      * 激活品牌分组集合
      */
-    private List<ActivityAddVO> activityAdd;
+    private List<MchActTimeAddVO> activityAdd;
 
 }

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

@@ -97,11 +97,13 @@ public class KxsStatUserController {
      * @return 计奖交易-激活商户统计
      */
     @GetMapping("/getActivateMerchantList")
-    public R getActivateMerchantList(@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){
             userId = SecurityUtils.getUser().getId();
         }
-        return kxsUserActTradeService.getActivateMerchantList(totalType,userId,month);
+        return kxsUserActTradeService.getActivateMerchantList(totalType, userId, month);
     }
 
     /**

+ 47 - 57
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserActTradeServiceImpl.java

@@ -4,14 +4,17 @@ import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.map.MapUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.exception.GlobalCustomerException;
 import com.kxs.common.core.util.AssertUtil;
 import com.kxs.common.core.util.R;
+import com.kxs.common.core.util.RetOps;
+import com.kxs.common.core.util.TotalDateUtil;
+import com.kxs.product.api.feign.RemoteKxsProductService;
 import com.kxs.product.api.model.KxsBrand;
 import com.kxs.stat.api.dto.statUser.GetActivityStatByIdAndTimeDTO;
 import com.kxs.stat.api.vo.GetActivityStatByIdAndTimeVO;
 import com.kxs.stat.api.vo.myUser.TrendVO;
 import com.kxs.stat.api.vo.statUser.*;
-import com.kxs.stat.biz.constant.enums.TotalTypeEnum;
 import com.kxs.stat.biz.mapper.KxsLkbActTradeMapper;
 import com.kxs.stat.biz.mapper.KxsUserActTradeMapper;
 import com.kxs.stat.api.model.KxsUserActTrade;
@@ -19,10 +22,10 @@ import com.kxs.stat.biz.service.KxsUserActTradeService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -37,6 +40,10 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
 
     private final KxsLkbActTradeMapper lkbActTradeMapper;
 
+    private final RemoteKxsProductService remoteKxsProductService;
+
+    private  Map<Integer, KxsBrand> brandsMap;
+
     @Override
     public List<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTime(List<GetActivityStatByIdAndTimeDTO> param) {
         ArrayList<GetActivityStatByIdAndTimeVO> getActivityStatByIdAndTimeVOS = new ArrayList<>();
@@ -62,47 +69,18 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
     @Override
     public R getActivateMerchantList(Integer totalType,Long userId,String month) {
         LocalDate now = LocalDate.now();
-        List<Integer> times = new ArrayList<>();
+        List<Integer> times;
         int type;
-        if (month.equals("0")){
+        if ("0".equals(month)){
             type = 2;
-            //查询近半年
-            //近半年
-            for (int i = 0; i < 6; i++) {
-                // 计算过去半年每月月份
-                LocalDate currentDay = now.minusMonths(i);
-                // 将LocalDate转换为字符串
-                String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
-                times.add(Integer.valueOf(currentDateString));
-            }
+            times = TotalDateUtil.getMonthList(now, 6);
         }else {
             type = 1;
-            //校验时间格式是yyyyMM
-            AssertUtil.isyyyyMM(month);
-            //判断month是否是本月  否则获取月份中全部日日期
-            int year = Integer.parseInt(month.substring(0, 4));
-            int monthOfYear = Integer.parseInt(month.substring(4, 6));
-            // 判断给定的月份字符串是否表示当前月份
-            boolean isCurrentMonth = year == now.getYear() && monthOfYear == now.getMonthValue();
-            // 如果是当前月份,则生成本月到今天的日期字符串
-            if (isCurrentMonth) {
-                LocalDate firstDayOfMonth = now.withDayOfMonth(1);
-                for (LocalDate date = firstDayOfMonth; !date.isAfter(now); date = date.plusDays(1)) {
-                    times.add(Integer.valueOf(date.format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
-                }
-            } else {
-                // 如果不是当前月份,则生成整个月的日期字符串
-                LocalDate firstDayOfMonth = LocalDate.of(year, monthOfYear, 1);
-                int daysInMonth = firstDayOfMonth.lengthOfMonth();
-                for (int day = 1; day <= daysInMonth; day++) {
-                    LocalDate date = firstDayOfMonth.withDayOfMonth(day);
-                    times.add(Integer.valueOf(date.format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
-                }
-            }
+            times = TotalDateUtil.getMonthDayList(month);
         }
         //获取全部激活并构造为TimeVo格式
-        ArrayList<TimeVO> timeVOArrayList = getTimeVOArrayList(totalType,userId, times, type);
-        return R.ok(timeVOArrayList);
+        ArrayList<MchActTimeTotalVO> mchActTimeTotalList = getTimeVOArrayList(totalType,userId, times, type);
+        return R.ok(mchActTimeTotalList);
     }
 
     @Override
@@ -151,18 +129,18 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
         return trendVOList;
     }
 
-    private ArrayList<TimeVO> getTimeVOArrayList(Integer totalType,Long userId, List<Integer> times, int type) {
+    private ArrayList<MchActTimeTotalVO> getTimeVOArrayList(Integer totalType, Long userId, List<Integer> times, int type) {
         //构造数据
         //将全部激活量  或   品牌激活量  构造进入map  key为品牌id  或  all  或来客吧码牌
-        Map<Integer,List<ActivityAddVO>> timeActivityMap = new HashMap<>();
+        Map<Integer,List<MchActTimeAddVO>> timeActivityMap = new HashMap<>();
         //查询来客吧码牌激活
         List<TrendTimesVO> trendTimesVOLkbList = lkbActTradeMapper.getActivityStatByLkbList(userId, times, totalType);
         //来客吧码牌不再品牌列表中 同all 需要做特殊处理
         for (TrendTimesVO trendTimesVO : trendTimesVOLkbList) {
-            ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
+            ArrayList<MchActTimeAddVO> activityAddVOS = new ArrayList<>();
             Integer time = trendTimesVO.getTime();
             Integer total = trendTimesVO.getTotal();
-            ActivityAddVO activityAddVO = new ActivityAddVO();
+            MchActTimeAddVO activityAddVO = new MchActTimeAddVO();
             activityAddVO.setName("来客吧码牌");
             activityAddVO.setTotal(total);
             activityAddVOS.add(activityAddVO);
@@ -176,26 +154,26 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
             //先查询map中是否包含有改时间日期的来客吧码牌激活数据
             Integer total = trendTimesVO.getTotal();
             Integer time = trendTimesVO.getTime();
-            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(time);
+            List<MchActTimeAddVO> activityAddVOList = timeActivityMap.get(time);
             if (activityAddVOList == null){
                 //当前全部的时间点不存在码牌激活数据时,走正常逻辑构造map
                 //将全部激活集合全部构造成ActivityAddVO放入hashMap中,
-                ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
-                ActivityAddVO activityAddVO = new ActivityAddVO();
-                activityAddVO.setName("all");
+                ArrayList<MchActTimeAddVO> activityAddVOS = new ArrayList<>();
+                MchActTimeAddVO activityAddVO = new MchActTimeAddVO();
+                activityAddVO.setName("总激活");
                 activityAddVO.setTotal(total);
                 activityAddVOS.add(activityAddVO);
                 //key为时间,值为其ActivityAddVO本身
                 timeActivityMap.put(time,activityAddVOS);
             }else {
                 //存在数据时,我们需要将码牌数量添加到总激活中
-                for (ActivityAddVO activityAddVO : activityAddVOList) {
+                for (MchActTimeAddVO activityAddVO : activityAddVOList) {
                     //激活总量加上码牌激活量
                     total += activityAddVO.getTotal();
                 }
                 //再将全部激活集合全部构造成ActivityAddVO放入hashMap中,
-                ActivityAddVO activityAddVO = new ActivityAddVO();
-                activityAddVO.setName("all");
+                MchActTimeAddVO activityAddVO = new MchActTimeAddVO();
+                activityAddVO.setName("总激活");
                 activityAddVO.setTotal(total);
                 //将构造的数据添加到我们从map中拿出的List中
                 activityAddVOList.add(activityAddVO);
@@ -206,12 +184,12 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
         //遍历品牌激活
         for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
             //查找map获取当前品牌激活统计的时间点
-            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(trendTimesVO.getTime());
+            List<MchActTimeAddVO> activityAddVOList = timeActivityMap.get(trendTimesVO.getTime());
             //在逻辑上,该activityAddVOList不可能为null,但添加校验防止脏数据导致报错
             if (activityAddVOList != null){
                 //将当前品牌的激活数量构造成activityAddVO 添加入map中去
-                ActivityAddVO activityAddVO = new ActivityAddVO();
-                activityAddVO.setName(trendTimesVO.getBrandId().toString());
+                MchActTimeAddVO activityAddVO = new MchActTimeAddVO();
+                activityAddVO.setName(getBrandMap().get(trendTimesVO.getBrandId()).getName());
                 activityAddVO.setTotal(trendTimesVO.getTotal());
                 activityAddVOList.add(activityAddVO);
             }
@@ -219,24 +197,24 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
 
         //此时我们的hashmap格式已为TimeVO类格式
         //将map转换为返回实体类
-        ArrayList<TimeVO> timeVOS = new ArrayList<>();
+        ArrayList<MchActTimeTotalVO> timeVOS = new ArrayList<>();
         //根据我们传入的时间进行写入
         for (Integer time : times) {
-            List<ActivityAddVO> activityAddVOList = timeActivityMap.get(time);
+            List<MchActTimeAddVO> activityAddVOList = timeActivityMap.get(time);
             //存在数据则开始构造TimeVO
             if (activityAddVOList != null){
-                TimeVO timeVO = new TimeVO();
+                MchActTimeTotalVO timeVO = new MchActTimeTotalVO();
                 timeVO.setDate(time);
                 timeVO.setActivityAdd(activityAddVOList);
                 timeVOS.add(timeVO);
             }else {
                 //不存在则填充空数据
-                ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
-                ActivityAddVO activityAddVO = new ActivityAddVO();
+                ArrayList<MchActTimeAddVO> activityAddVOS = new ArrayList<>();
+                MchActTimeAddVO activityAddVO = new MchActTimeAddVO();
                 activityAddVO.setName("all");
                 activityAddVO.setTotal(0);
                 activityAddVOS.add(activityAddVO);
-                TimeVO timeVO = new TimeVO();
+                MchActTimeTotalVO timeVO = new MchActTimeTotalVO();
                 timeVO.setDate(time);
                 timeVO.setActivityAdd(activityAddVOS);
                 timeVOS.add(timeVO);
@@ -244,5 +222,17 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
         }
         return timeVOS;
     }
+
+    private Map<Integer, KxsBrand> getBrandMap() {
+        if (brandsMap == null) {
+            R<List<KxsBrand>> brandRes = remoteKxsProductService.loadByAllBrand();
+            List<KxsBrand> brands = RetOps.of(brandRes)
+                    .getData()
+                    .orElseThrow(() -> new GlobalCustomerException("获取品牌列表为空"));
+            brandsMap = brands.stream().collect(Collectors.toMap(KxsBrand::getId, Function.identity()));
+        }
+        return brandsMap;
+
+    }
 }
 

+ 10 - 5
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsForAmountWithdrawServiceImpl.java

@@ -3,6 +3,7 @@ package com.kxs.store.biz.service.impl;
 import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.enums.AmountLogChangeTypesEnum;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
@@ -65,6 +66,12 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
         kxsForAmountWithdraw.setBankPhone(realUserInfoVO.getPhone());
         kxsForAmountWithdraw.setAmountType(param.getAmountType());
         kxsForAmountWithdraw.setWithdrawType(param.getWhsType());
+        //分仓/2
+        if(Objects.equals(param.getWhsType(), WarehouseLimitTypeEnum.FC.getType())){
+            kxsForAmountWithdraw.setAmount(NumberUtil.mul(param.getAmount(), 2));
+        }else{
+            kxsForAmountWithdraw.setAmount(param.getAmount());
+        }
 
         KxsWarehouseLimit userLimit = kxsWarehouseLimitMapper.selectOne(Wrappers.<KxsWarehouseLimit>lambdaQuery()
                 .eq(KxsWarehouseLimit::getWarehouseType, param.getWhsType())
@@ -109,7 +116,6 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
         if(param.getAmount().compareTo(bankCashAmount) > 0){
             throw new GlobalCustomerException("提现到银行卡超出限额");
         }
-        kxsForAmountWithdraw.setAmount(param.getAmount());
         baseMapper.insert(kxsForAmountWithdraw);
 
         //扣减可用余额,扣减临额
@@ -134,8 +140,7 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
         if(param.getAmount().compareTo(yueCashAmount) > 0){
             throw new GlobalCustomerException("提现到余额超出限额");
         }
-        kxsForAmountWithdraw.setAmount(param.getAmount());
-        kxsForAmountWithdraw.setStatus(1);
+        kxsForAmountWithdraw.setStatus(CommonConstants.SUCCESS);
         baseMapper.insert(kxsForAmountWithdraw);
 
         //扣减可用余额,扣减临额
@@ -146,7 +151,7 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
         KxsUserAmountLog userAmountLog = new KxsUserAmountLog();
         userAmountLog.setUserId(kxsForAmountWithdraw.getUserId());
         userAmountLog.setKind(KindTypeEnum.ADD.getType());
-        //分仓临时额度提现
+        //分仓临时额度提现余额日志
         if(Objects.equals(param.getWhsType(), WarehouseLimitTypeEnum.FC.getType())){
             userAmountLog.setVariationType(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getType());
             userAmountLog.setRemark(AmountLogChangeTypesEnum.FOR_WILL_BE_REFUNDED.getDescription());
@@ -154,7 +159,7 @@ public class KxsForAmountWithdrawServiceImpl extends ServiceImpl<KxsForAmountWit
             userAmountLog.setVariationType(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getType());
             userAmountLog.setRemark(AmountLogChangeTypesEnum.ADVANCE_ISSUANCE_TEMPORARY_QUOTA_REFUND.getDescription());
         }
-        userAmountLog.setAmount(param.getAmount());
+        userAmountLog.setAmount(kxsForAmountWithdraw.getAmount());
 
         R<Boolean> booleanR = remoteKxsUserService.userAmountChange(userAmountLog, SecurityConstants.FROM_IN);
         if(booleanR.getStatus() == 1 && !booleanR.getData()){

+ 1 - 0
kxs-store/kxs-store-biz/src/main/java/com/kxs/store/biz/service/impl/KxsWarehouseLimitServiceImpl.java

@@ -134,6 +134,7 @@ public class KxsWarehouseLimitServiceImpl extends ServiceImpl<KxsWarehouseLimitM
             warehouseAmountVO.setMaxSubAmt(kxsWarehouseLimit.getValidAmount().compareTo(BigDecimal.ZERO) > 0 ? kxsWarehouseLimit.getValidAmount() : BigDecimal.ZERO);
         }
         warehouseAmountVO.setTotalAmount(NumberUtil.add(kxsWarehouseLimit.getCreditAmount(), warehouseAmountVO.getTotalForAmt(), kxsWarehouseLimit.getFixedAmount()));
+
         return warehouseAmountVO;
     }
 

+ 1 - 1
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserMapper.xml

@@ -98,7 +98,7 @@
             ORDER BY ku.this_month_trade DESC
         </if>
         <if test="param.sort != null and param.sort !='' and param.sort == 'time'">
-            ORDER BY ku.create_time
+            ORDER BY ku.create_time DESC
         </if>
     </select>
     <select id="searchMyUserList" resultType="com.kxs.user.api.vo.kxsapp.user.SearchMyUserListVO">