Commit b073c1d37f0c5027f5d2476d8a12836654b01227
1 parent
b227b039
fix: 修复获得个人分销统计 NPE 异常
Showing
1 changed file
with
19 additions
and
9 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
| 1 | package cn.iocoder.yudao.module.trade.controller.app.brokerage; | 1 | package cn.iocoder.yudao.module.trade.controller.app.brokerage; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.date.LocalDateTimeUtil; | 3 | import cn.hutool.core.date.LocalDateTimeUtil; |
| 4 | +import cn.hutool.core.util.ObjUtil; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; | 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,6 +11,8 @@ import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*; | ||
| 10 | import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageRecordConvert; | 11 | import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageRecordConvert; |
| 11 | import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageUserConvert; | 12 | import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageUserConvert; |
| 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; | 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 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; | 16 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; |
| 14 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; | 17 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; |
| 15 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum; | 18 | import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum; |
| @@ -17,16 +20,17 @@ import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService; | @@ -17,16 +20,17 @@ import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService; | ||
| 17 | import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService; | 20 | import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService; |
| 18 | import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService; | 21 | import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService; |
| 19 | import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageWithdrawSummaryRespBO; | 22 | import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageWithdrawSummaryRespBO; |
| 23 | +import cn.iocoder.yudao.module.trade.service.config.TradeConfigService; | ||
| 20 | import io.swagger.v3.oas.annotations.Operation; | 24 | import io.swagger.v3.oas.annotations.Operation; |
| 21 | import io.swagger.v3.oas.annotations.Parameter; | 25 | import io.swagger.v3.oas.annotations.Parameter; |
| 22 | import io.swagger.v3.oas.annotations.tags.Tag; | 26 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 27 | +import jakarta.annotation.Resource; | ||
| 28 | +import jakarta.validation.Valid; | ||
| 23 | import lombok.extern.slf4j.Slf4j; | 29 | import lombok.extern.slf4j.Slf4j; |
| 24 | import org.springframework.format.annotation.DateTimeFormat; | 30 | import org.springframework.format.annotation.DateTimeFormat; |
| 25 | import org.springframework.validation.annotation.Validated; | 31 | import org.springframework.validation.annotation.Validated; |
| 26 | import org.springframework.web.bind.annotation.*; | 32 | import org.springframework.web.bind.annotation.*; |
| 27 | 33 | ||
| 28 | -import jakarta.annotation.Resource; | ||
| 29 | -import jakarta.validation.Valid; | ||
| 30 | import java.time.LocalDateTime; | 34 | import java.time.LocalDateTime; |
| 31 | import java.util.Collections; | 35 | import java.util.Collections; |
| 32 | import java.util.Map; | 36 | import java.util.Map; |
| @@ -50,7 +54,8 @@ public class AppBrokerageUserController { | @@ -50,7 +54,8 @@ public class AppBrokerageUserController { | ||
| 50 | private BrokerageRecordService brokerageRecordService; | 54 | private BrokerageRecordService brokerageRecordService; |
| 51 | @Resource | 55 | @Resource |
| 52 | private BrokerageWithdrawService brokerageWithdrawService; | 56 | private BrokerageWithdrawService brokerageWithdrawService; |
| 53 | - | 57 | + @Resource |
| 58 | + private TradeConfigService tradeConfigService; | ||
| 54 | @Resource | 59 | @Resource |
| 55 | private MemberUserApi memberUserApi; | 60 | private MemberUserApi memberUserApi; |
| 56 | 61 | ||
| @@ -59,9 +64,13 @@ public class AppBrokerageUserController { | @@ -59,9 +64,13 @@ public class AppBrokerageUserController { | ||
| 59 | @PreAuthenticated | 64 | @PreAuthenticated |
| 60 | public CommonResult<AppBrokerageUserRespVO> getBrokerageUser() { | 65 | public CommonResult<AppBrokerageUserRespVO> getBrokerageUser() { |
| 61 | Optional<BrokerageUserDO> user = Optional.ofNullable(brokerageUserService.getBrokerageUser(getLoginUserId())); | 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 | AppBrokerageUserRespVO respVO = new AppBrokerageUserRespVO() | 72 | AppBrokerageUserRespVO respVO = new AppBrokerageUserRespVO() |
| 64 | - .setBrokerageEnabled(user.map(BrokerageUserDO::getBrokerageEnabled).orElse(false)) | 73 | + .setBrokerageEnabled(user.map(BrokerageUserDO::getBrokerageEnabled).orElse(brokerageEnabled)) |
| 65 | .setBrokeragePrice(user.map(BrokerageUserDO::getBrokeragePrice).orElse(0)) | 74 | .setBrokeragePrice(user.map(BrokerageUserDO::getBrokeragePrice).orElse(0)) |
| 66 | .setFrozenPrice(user.map(BrokerageUserDO::getFrozenPrice).orElse(0)); | 75 | .setFrozenPrice(user.map(BrokerageUserDO::getFrozenPrice).orElse(0)); |
| 67 | return success(respVO); | 76 | return success(respVO); |
| @@ -79,21 +88,22 @@ public class AppBrokerageUserController { | @@ -79,21 +88,22 @@ public class AppBrokerageUserController { | ||
| 79 | @PreAuthenticated | 88 | @PreAuthenticated |
| 80 | public CommonResult<AppBrokerageUserMySummaryRespVO> getBrokerageUserSummary() { | 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 | LocalDateTime yesterday = LocalDateTime.now().minusDays(1); | 94 | LocalDateTime yesterday = LocalDateTime.now().minusDays(1); |
| 85 | LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(yesterday); | 95 | LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(yesterday); |
| 86 | LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday); | 96 | LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday); |
| 87 | - Integer yesterdayPrice = brokerageRecordService.getSummaryPriceByUserId(brokerageUser.getId(), | 97 | + Integer yesterdayPrice = brokerageRecordService.getSummaryPriceByUserId(userId, |
| 88 | BrokerageRecordBizTypeEnum.ORDER, BrokerageRecordStatusEnum.SETTLEMENT, beginTime, endTime); | 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 | BrokerageWithdrawStatusEnum.AUDIT_SUCCESS).stream() | 101 | BrokerageWithdrawStatusEnum.AUDIT_SUCCESS).stream() |
| 92 | .findFirst().map(BrokerageWithdrawSummaryRespBO::getPrice).orElse(0); | 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 | return success(BrokerageUserConvert.INSTANCE.convert(yesterdayPrice, withdrawPrice, firstBrokerageUserCount, secondBrokerageUserCount, brokerageUser)); | 109 | return success(BrokerageUserConvert.INSTANCE.convert(yesterdayPrice, withdrawPrice, firstBrokerageUserCount, secondBrokerageUserCount, brokerageUser)); |