Просмотр исходного кода

收支明细统计接口优化

mac 2 лет назад
Родитель
Сommit
4d2dd28ddf

+ 2 - 2
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/AmountInExpendTotalVO.java

@@ -26,14 +26,14 @@ public class AmountInExpendTotalVO implements Serializable {
      * 收入合计
      * 收入合计
      */
      */
     @Schema(description = "收入合计")
     @Schema(description = "收入合计")
-    private BigDecimal income;
+    private BigDecimal income = BigDecimal.ZERO;
 
 
 
 
     /**
     /**
      * 支出合计
      * 支出合计
      */
      */
     @Schema(description = "支出合计")
     @Schema(description = "支出合计")
-    private BigDecimal expend;
+    private BigDecimal expend = BigDecimal.ZERO;
 
 
 
 
 
 

+ 3 - 3
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserAccountController.java

@@ -142,12 +142,12 @@ public class UserAccountController {
     /**
     /**
      * 收支明细-收益支出合计
      * 收支明细-收益支出合计
      *
      *
-     * @param tradeMonth 月份
+     * @param param 查询实体
      * @return 收支明细-收益支出合计
      * @return 收支明细-收益支出合计
      */
      */
     @GetMapping("/amountInExpendTotal")
     @GetMapping("/amountInExpendTotal")
-    public R amountInExpendTotal(@RequestParam("tradeMonth") String tradeMonth) {
-        return R.ok(kxsUserAmountLogService.amountInExpendTotal(tradeMonth));
+    public R amountInExpendTotal(@Valid @ParameterObject UserAmountVariationListDTO param) {
+        return R.ok(kxsUserAmountLogService.amountInExpendTotal(param));
     }
     }
 
 
 
 

+ 2 - 2
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAmountLogService.java

@@ -29,11 +29,11 @@ public interface KxsUserAmountLogService extends IService<KxsUserAmountLog> {
     /**
     /**
      * 收益支出合计
      * 收益支出合计
      *
      *
-     * @param tradeMonth 月份
+     * @param param 请求参数
      * @return {@link AmountInExpendTotalVO}
      * @return {@link AmountInExpendTotalVO}
 
 
      */
      */
-    AmountInExpendTotalVO amountInExpendTotal(String tradeMonth);
+    AmountInExpendTotalVO amountInExpendTotal(UserAmountVariationListDTO param);
 
 
     /**
     /**
      * 筛选类型列表
      * 筛选类型列表

+ 34 - 43
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAmountLogServiceImpl.java

@@ -1,44 +1,26 @@
 package com.kxs.user.biz.service.impl;
 package com.kxs.user.biz.service.impl;
 
 
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import cn.hutool.core.util.EnumUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.constant.CommonConstants;
-import com.kxs.common.core.constant.SecurityConstants;
-import com.kxs.common.core.constant.enums.ErrorTypeEnum;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
-import com.kxs.common.core.exception.GlobalCustomerException;
-import com.kxs.common.core.util.R;
-import com.kxs.common.core.util.RetOps;
 import com.kxs.common.mybatis.handler.MonthTableNameHandler;
 import com.kxs.common.mybatis.handler.MonthTableNameHandler;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.common.security.util.SecurityUtils;
-import com.kxs.product.api.feign.RemoteKxsProductService;
-import com.kxs.product.api.model.KxsMachine;
-import com.kxs.product.api.vo.kxsapp.shop.ShopOrderDetailVO;
 import com.kxs.user.api.dto.kxsapp.userAccount.UserAmountVariationListDTO;
 import com.kxs.user.api.dto.kxsapp.userAccount.UserAmountVariationListDTO;
-import com.kxs.user.api.model.KxsChangeTypeKind;
-import com.kxs.user.api.model.KxsLeaderAmountLog;
 import com.kxs.user.api.model.KxsUser;
 import com.kxs.user.api.model.KxsUser;
+import com.kxs.user.api.model.KxsUserAmountLog;
 import com.kxs.user.api.vo.kxsapp.userAccount.*;
 import com.kxs.user.api.vo.kxsapp.userAccount.*;
-import com.kxs.common.core.constant.enums.VariationTypeEnum;
-import com.kxs.user.biz.mapper.KxsChangeTypeKindMapper;
-import com.kxs.user.biz.mapper.KxsLeaderAmountLogMapper;
 import com.kxs.user.biz.mapper.KxsUserAmountLogMapper;
 import com.kxs.user.biz.mapper.KxsUserAmountLogMapper;
-import com.kxs.user.api.model.KxsUserAmountLog;
 import com.kxs.user.biz.mapper.KxsUserMapper;
 import com.kxs.user.biz.mapper.KxsUserMapper;
 import com.kxs.user.biz.service.KxsUserAmountLogService;
 import com.kxs.user.biz.service.KxsUserAmountLogService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.List;
-import java.util.Map;
 
 
 /**
 /**
  * 用户余额记录日志表(KxsUserAmountLog)表服务实现类
  * 用户余额记录日志表(KxsUserAmountLog)表服务实现类
@@ -63,31 +45,40 @@ public class KxsUserAmountLogServiceImpl extends ServiceImpl<KxsUserAmountLogMap
     }
     }
 
 
     @Override
     @Override
-    public AmountInExpendTotalVO amountInExpendTotal(String tradeMonth) {
+    public AmountInExpendTotalVO amountInExpendTotal(UserAmountVariationListDTO param) {
+
         AmountInExpendTotalVO amountInExpendTotalVO = new AmountInExpendTotalVO();
         AmountInExpendTotalVO amountInExpendTotalVO = new AmountInExpendTotalVO();
 
 
         //每个请求线程维护一个month数据,避免多线程数据冲突
         //每个请求线程维护一个month数据,避免多线程数据冲突
-        MonthTableNameHandler.setData(tradeMonth);
-        QueryWrapper<KxsUserAmountLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("user_id", SecurityUtils.getUser().getId());
-        queryWrapper.eq("DATE_FORMAT(create_time, '%Y-%m')", tradeMonth);
-        queryWrapper.eq("kind", KindTypeEnum.ADD.getType());
-        queryWrapper.select("IFNULL(SUM(amount),0) AS amount");
-
-        //收益
-        KxsUserAmountLog add = baseMapper.selectOne(queryWrapper);
-        amountInExpendTotalVO.setIncome(add.getAmount());
-
-        //支出
-        queryWrapper.clear();
-        queryWrapper.eq("user_id", SecurityUtils.getUser().getId());
-        queryWrapper.eq("DATE_FORMAT(create_time, '%Y-%m')", tradeMonth);
-        queryWrapper.eq("kind", KindTypeEnum.SUB.getType());
-        queryWrapper.select("IFNULL(SUM(amount),0) AS amount");
-        KxsUserAmountLog sub = baseMapper.selectOne(queryWrapper);
-        amountInExpendTotalVO.setExpend(sub.getAmount());
-        //删除线程,避免线程污染
-        MonthTableNameHandler.removeData();
+        MonthTableNameHandler.setData(param.getTradeMonth());
+
+        if(StrUtil.isBlank(param.getKind())|| param.getKind().equals(KindTypeEnum.ADD.getType())){
+            QueryWrapper<KxsUserAmountLog> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("user_id", SecurityUtils.getUser().getId());
+            queryWrapper.in(CollUtil.isNotEmpty(param.getBrandIds()),"brand_id", param.getBrandIds());
+            queryWrapper.in(CollUtil.isNotEmpty(param.getChangeType()),"variation_type", param.getChangeType());
+            queryWrapper.select("IFNULL(SUM(amount),0) AS amount");
+            queryWrapper.eq( "kind", KindTypeEnum.ADD.getType());
+
+            //收益
+            KxsUserAmountLog add = baseMapper.selectOne(queryWrapper);
+            amountInExpendTotalVO.setIncome(add.getAmount());
+        }
+
+        if(StrUtil.isBlank(param.getKind()) || param.getKind().equals(KindTypeEnum.SUB.getType())){
+            QueryWrapper<KxsUserAmountLog> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("user_id", SecurityUtils.getUser().getId());
+            queryWrapper.in(CollUtil.isNotEmpty(param.getBrandIds()),"brand_id", param.getBrandIds());
+            queryWrapper.in(CollUtil.isNotEmpty(param.getChangeType()),"variation_type", param.getChangeType());
+            queryWrapper.select("IFNULL(SUM(amount),0) AS amount");
+
+            queryWrapper.eq("kind", KindTypeEnum.SUB.getType());
+            //支出
+            KxsUserAmountLog add = baseMapper.selectOne(queryWrapper);
+            amountInExpendTotalVO.setExpend(add.getAmount());
+        }
+
+
         return amountInExpendTotalVO;
         return amountInExpendTotalVO;
     }
     }
 
 

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

@@ -36,7 +36,7 @@
             <if test="query.kind != null and query.kind != ''">
             <if test="query.kind != null and query.kind != ''">
                 AND a.kind = #{query.kind}
                 AND a.kind = #{query.kind}
             </if>
             </if>
-            <if test="query.brandIds != null">
+            <if test="query.brandIds != null and query.changeType.size() > 0">
                 AND a.brand_id IN
                 AND a.brand_id IN
                 <foreach item="brandId" index="index" collection="query.brandIds" open="(" separator="," close=")">
                 <foreach item="brandId" index="index" collection="query.brandIds" open="(" separator="," close=")">
                     #{brandId}
                     #{brandId}