Commit b073c1d37f0c5027f5d2476d8a12836654b01227

Authored by puhui999
1 parent b227b039

fix: 修复获得个人分销统计 NPE 异常

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
1 1 package cn.iocoder.yudao.module.trade.controller.app.brokerage;
2 2  
3 3 import cn.hutool.core.date.LocalDateTimeUtil;
  4 +import cn.hutool.core.util.ObjUtil;
4 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 7 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
... ... @@ -10,6 +11,8 @@ import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
10 11 import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageRecordConvert;
11 12 import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageUserConvert;
12 13 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
  14 +import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO;
  15 +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum;
13 16 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
14 17 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum;
15 18 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
... ... @@ -17,16 +20,17 @@ import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
17 20 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService;
18 21 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService;
19 22 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageWithdrawSummaryRespBO;
  23 +import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
20 24 import io.swagger.v3.oas.annotations.Operation;
21 25 import io.swagger.v3.oas.annotations.Parameter;
22 26 import io.swagger.v3.oas.annotations.tags.Tag;
  27 +import jakarta.annotation.Resource;
  28 +import jakarta.validation.Valid;
23 29 import lombok.extern.slf4j.Slf4j;
24 30 import org.springframework.format.annotation.DateTimeFormat;
25 31 import org.springframework.validation.annotation.Validated;
26 32 import org.springframework.web.bind.annotation.*;
27 33  
28   -import jakarta.annotation.Resource;
29   -import jakarta.validation.Valid;
30 34 import java.time.LocalDateTime;
31 35 import java.util.Collections;
32 36 import java.util.Map;
... ... @@ -50,7 +54,8 @@ public class AppBrokerageUserController {
50 54 private BrokerageRecordService brokerageRecordService;
51 55 @Resource
52 56 private BrokerageWithdrawService brokerageWithdrawService;
53   -
  57 + @Resource
  58 + private TradeConfigService tradeConfigService;
54 59 @Resource
55 60 private MemberUserApi memberUserApi;
56 61  
... ... @@ -59,9 +64,13 @@ public class AppBrokerageUserController {
59 64 @PreAuthenticated
60 65 public CommonResult<AppBrokerageUserRespVO> getBrokerageUser() {
61 66 Optional<BrokerageUserDO> user = Optional.ofNullable(brokerageUserService.getBrokerageUser(getLoginUserId()));
  67 + // 获得交易中心配置
  68 + TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig();
  69 + // 如果是人人分佣 BrokerageUserDO 为 null 时,也有分销资格
  70 + boolean brokerageEnabled = ObjUtil.equal(BrokerageEnabledConditionEnum.ALL.getCondition(), tradeConfig.getBrokerageEnabledCondition());
62 71 // 返回数据
63 72 AppBrokerageUserRespVO respVO = new AppBrokerageUserRespVO()
64   - .setBrokerageEnabled(user.map(BrokerageUserDO::getBrokerageEnabled).orElse(false))
  73 + .setBrokerageEnabled(user.map(BrokerageUserDO::getBrokerageEnabled).orElse(brokerageEnabled))
65 74 .setBrokeragePrice(user.map(BrokerageUserDO::getBrokeragePrice).orElse(0))
66 75 .setFrozenPrice(user.map(BrokerageUserDO::getFrozenPrice).orElse(0));
67 76 return success(respVO);
... ... @@ -79,21 +88,22 @@ public class AppBrokerageUserController {
79 88 @PreAuthenticated
80 89 public CommonResult<AppBrokerageUserMySummaryRespVO> getBrokerageUserSummary() {
81 90 // 查询当前登录用户信息
82   - BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(getLoginUserId());
  91 + Long userId = getLoginUserId();
  92 + BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(userId);
83 93 // 统计用户昨日的佣金
84 94 LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
85 95 LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(yesterday);
86 96 LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday);
87   - Integer yesterdayPrice = brokerageRecordService.getSummaryPriceByUserId(brokerageUser.getId(),
  97 + Integer yesterdayPrice = brokerageRecordService.getSummaryPriceByUserId(userId,
88 98 BrokerageRecordBizTypeEnum.ORDER, BrokerageRecordStatusEnum.SETTLEMENT, beginTime, endTime);
89 99 // 统计用户提现的佣金
90   - Integer withdrawPrice = brokerageWithdrawService.getWithdrawSummaryListByUserId(Collections.singleton(brokerageUser.getId()),
  100 + Integer withdrawPrice = brokerageWithdrawService.getWithdrawSummaryListByUserId(Collections.singleton(userId),
91 101 BrokerageWithdrawStatusEnum.AUDIT_SUCCESS).stream()
92 102 .findFirst().map(BrokerageWithdrawSummaryRespBO::getPrice).orElse(0);
93 103 // 统计分销用户数量(一级)
94   - Long firstBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(brokerageUser.getId(), 1);
  104 + Long firstBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(userId, 1);
95 105 // 统计分销用户数量(二级)
96   - Long secondBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(brokerageUser.getId(), 2);
  106 + Long secondBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(userId, 2);
97 107  
98 108 // 拼接返回
99 109 return success(BrokerageUserConvert.INSTANCE.convert(yesterdayPrice, withdrawPrice, firstBrokerageUserCount, secondBrokerageUserCount, brokerageUser));
... ...