Commit 5c2af8e32d7f22493438538c22ae142fb02769ac

Authored by 芋道源码
Committed by Gitee
2 parents 6ffb4ed1 2451942c

!1188 商城缺陷修复

Merge pull request !1188 from puhui999/develop
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/BrokerageUserController.java
@@ -13,23 +13,24 @@ import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum @@ -13,23 +13,24 @@ import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum
13 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService; 13 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
14 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService; 14 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService;
15 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService; 15 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService;
16 -import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryRespBO;  
17 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageWithdrawSummaryRespBO; 16 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageWithdrawSummaryRespBO;
  17 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryRespBO;
18 import io.swagger.v3.oas.annotations.Operation; 18 import io.swagger.v3.oas.annotations.Operation;
19 import io.swagger.v3.oas.annotations.Parameter; 19 import io.swagger.v3.oas.annotations.Parameter;
20 import io.swagger.v3.oas.annotations.tags.Tag; 20 import io.swagger.v3.oas.annotations.tags.Tag;
  21 +import jakarta.annotation.Resource;
  22 +import jakarta.validation.Valid;
21 import org.springframework.security.access.prepost.PreAuthorize; 23 import org.springframework.security.access.prepost.PreAuthorize;
22 import org.springframework.validation.annotation.Validated; 24 import org.springframework.validation.annotation.Validated;
23 import org.springframework.web.bind.annotation.*; 25 import org.springframework.web.bind.annotation.*;
24 26
25 -import jakarta.annotation.Resource;  
26 -import jakarta.validation.Valid;  
27 import java.util.Map; 27 import java.util.Map;
28 import java.util.Set; 28 import java.util.Set;
29 29
30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
31 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; 31 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
32 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 32 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  33 +import static java.util.Arrays.asList;
33 34
34 @Tag(name = "管理后台 - 分销用户") 35 @Tag(name = "管理后台 - 分销用户")
35 @RestController 36 @RestController
@@ -110,7 +111,7 @@ public class BrokerageUserController { @@ -110,7 +111,7 @@ public class BrokerageUserController {
110 // 合计分佣的提现 111 // 合计分佣的提现
111 // TODO @疯狂:如果未来支持了打款这个动作,可能 status 会不对; 112 // TODO @疯狂:如果未来支持了打款这个动作,可能 status 会不对;
112 Map<Long, BrokerageWithdrawSummaryRespBO> withdrawMap = brokerageWithdrawService.getWithdrawSummaryMapByUserId( 113 Map<Long, BrokerageWithdrawSummaryRespBO> withdrawMap = brokerageWithdrawService.getWithdrawSummaryMapByUserId(
113 - userIds, BrokerageWithdrawStatusEnum.AUDIT_SUCCESS); 114 + userIds, asList(BrokerageWithdrawStatusEnum.AUDIT_SUCCESS, BrokerageWithdrawStatusEnum.WITHDRAW_SUCCESS));
114 // 拼接返回 115 // 拼接返回
115 return success(BrokerageUserConvert.INSTANCE.convertPage(pageResult, userMap, brokerageUserCountMap, 116 return success(BrokerageUserConvert.INSTANCE.convertPage(pageResult, userMap, brokerageUserCountMap,
116 brokerageOrderSummaryMap, withdrawMap)); 117 brokerageOrderSummaryMap, withdrawMap));
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
@@ -35,6 +35,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -35,6 +35,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
35 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; 35 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
36 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 36 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
37 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 37 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
  38 +import static java.util.Arrays.asList;
38 39
39 @Tag(name = "用户 APP - 分销用户") 40 @Tag(name = "用户 APP - 分销用户")
40 @RestController 41 @RestController
@@ -84,7 +85,7 @@ public class AppBrokerageUserController { @@ -84,7 +85,7 @@ public class AppBrokerageUserController {
84 BrokerageRecordBizTypeEnum.ORDER, BrokerageRecordStatusEnum.SETTLEMENT, beginTime, endTime); 85 BrokerageRecordBizTypeEnum.ORDER, BrokerageRecordStatusEnum.SETTLEMENT, beginTime, endTime);
85 // 统计用户提现的佣金 86 // 统计用户提现的佣金
86 Integer withdrawPrice = brokerageWithdrawService.getWithdrawSummaryListByUserId(Collections.singleton(userId), 87 Integer withdrawPrice = brokerageWithdrawService.getWithdrawSummaryListByUserId(Collections.singleton(userId),
87 - BrokerageWithdrawStatusEnum.AUDIT_SUCCESS).stream() 88 + asList(BrokerageWithdrawStatusEnum.AUDIT_SUCCESS, BrokerageWithdrawStatusEnum.WITHDRAW_SUCCESS)).stream()
88 .findFirst().map(BrokerageWithdrawSummaryRespBO::getPrice).orElse(0); 89 .findFirst().map(BrokerageWithdrawSummaryRespBO::getPrice).orElse(0);
89 // 统计分销用户数量(一级) 90 // 统计分销用户数量(一级)
90 Long firstBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(userId, 1); 91 Long firstBrokerageUserCount = brokerageUserService.getBrokerageUserCountByBindUserId(userId, 1);
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageWithdrawMapper.java
@@ -41,13 +41,14 @@ public interface BrokerageWithdrawMapper extends BaseMapperX&lt;BrokerageWithdrawDO @@ -41,13 +41,14 @@ public interface BrokerageWithdrawMapper extends BaseMapperX&lt;BrokerageWithdrawDO
41 .eq(BrokerageWithdrawDO::getStatus, status)); 41 .eq(BrokerageWithdrawDO::getStatus, status));
42 } 42 }
43 43
44 - default List<BrokerageWithdrawSummaryRespBO> selectCountAndSumPriceByUserIdAndStatus(Collection<Long> userIds, Integer status) { 44 + default List<BrokerageWithdrawSummaryRespBO> selectCountAndSumPriceByUserIdAndStatus(Collection<Long> userIds,
  45 + Collection<Integer> status) {
45 List<Map<String, Object>> list = selectMaps(new MPJLambdaWrapper<BrokerageWithdrawDO>() 46 List<Map<String, Object>> list = selectMaps(new MPJLambdaWrapper<BrokerageWithdrawDO>()
46 .select(BrokerageWithdrawDO::getUserId) 47 .select(BrokerageWithdrawDO::getUserId)
47 .selectCount(BrokerageWithdrawDO::getId, BrokerageWithdrawSummaryRespBO::getCount) 48 .selectCount(BrokerageWithdrawDO::getId, BrokerageWithdrawSummaryRespBO::getCount)
48 .selectSum(BrokerageWithdrawDO::getPrice) 49 .selectSum(BrokerageWithdrawDO::getPrice)
49 .in(BrokerageWithdrawDO::getUserId, userIds) 50 .in(BrokerageWithdrawDO::getUserId, userIds)
50 - .eq(BrokerageWithdrawDO::getStatus, status) 51 + .in(BrokerageWithdrawDO::getStatus, status)
51 .groupBy(BrokerageWithdrawDO::getUserId)); 52 .groupBy(BrokerageWithdrawDO::getUserId));
52 return BeanUtil.copyToList(list, BrokerageWithdrawSummaryRespBO.class); 53 return BeanUtil.copyToList(list, BrokerageWithdrawSummaryRespBO.class);
53 // selectJoinList有BUG,会与租户插件冲突:解析SQL时,发生异常 https://gitee.com/best_handsome/mybatis-plus-join/issues/I84GYW 54 // selectJoinList有BUG,会与租户插件冲突:解析SQL时,发生异常 https://gitee.com/best_handsome/mybatis-plus-join/issues/I84GYW
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawService.java
@@ -74,7 +74,7 @@ public interface BrokerageWithdrawService { @@ -74,7 +74,7 @@ public interface BrokerageWithdrawService {
74 * @return 用户提现汇总 List 74 * @return 用户提现汇总 List
75 */ 75 */
76 List<BrokerageWithdrawSummaryRespBO> getWithdrawSummaryListByUserId(Collection<Long> userIds, 76 List<BrokerageWithdrawSummaryRespBO> getWithdrawSummaryListByUserId(Collection<Long> userIds,
77 - BrokerageWithdrawStatusEnum status); 77 + Collection<BrokerageWithdrawStatusEnum> status);
78 78
79 /** 79 /**
80 * 按照 userId,汇总每个用户的提现 80 * 按照 userId,汇总每个用户的提现
@@ -84,7 +84,7 @@ public interface BrokerageWithdrawService { @@ -84,7 +84,7 @@ public interface BrokerageWithdrawService {
84 * @return 用户提现汇总 Map 84 * @return 用户提现汇总 Map
85 */ 85 */
86 default Map<Long, BrokerageWithdrawSummaryRespBO> getWithdrawSummaryMapByUserId(Set<Long> userIds, 86 default Map<Long, BrokerageWithdrawSummaryRespBO> getWithdrawSummaryMapByUserId(Set<Long> userIds,
87 - BrokerageWithdrawStatusEnum status) { 87 + Collection<BrokerageWithdrawStatusEnum> status) {
88 return convertMap(getWithdrawSummaryListByUserId(userIds, status), BrokerageWithdrawSummaryRespBO::getUserId); 88 return convertMap(getWithdrawSummaryListByUserId(userIds, status), BrokerageWithdrawSummaryRespBO::getUserId);
89 } 89 }
90 90
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawServiceImpl.java
@@ -42,6 +42,7 @@ import java.util.Collections; @@ -42,6 +42,7 @@ import java.util.Collections;
42 import java.util.List; 42 import java.util.List;
43 43
44 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 44 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  45 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
45 import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; 46 import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
46 import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; 47 import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
47 48
@@ -98,7 +99,7 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService { @@ -98,7 +99,7 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService {
98 // 3.1 审批通过的后续处理 99 // 3.1 审批通过的后续处理
99 if (BrokerageWithdrawStatusEnum.AUDIT_SUCCESS.equals(status)) { 100 if (BrokerageWithdrawStatusEnum.AUDIT_SUCCESS.equals(status)) {
100 auditBrokerageWithdrawSuccess(withdraw); 101 auditBrokerageWithdrawSuccess(withdraw);
101 - // 3.2 审批不通过的后续处理 102 + // 3.2 审批不通过的后续处理
102 } else if (BrokerageWithdrawStatusEnum.AUDIT_FAIL.equals(status)) { 103 } else if (BrokerageWithdrawStatusEnum.AUDIT_FAIL.equals(status)) {
103 brokerageRecordService.addBrokerage(withdraw.getUserId(), BrokerageRecordBizTypeEnum.WITHDRAW_REJECT, 104 brokerageRecordService.addBrokerage(withdraw.getUserId(), BrokerageRecordBizTypeEnum.WITHDRAW_REJECT,
104 String.valueOf(withdraw.getId()), withdraw.getPrice(), BrokerageRecordBizTypeEnum.WITHDRAW_REJECT.getTitle()); 105 String.valueOf(withdraw.getId()), withdraw.getPrice(), BrokerageRecordBizTypeEnum.WITHDRAW_REJECT.getTitle());
@@ -114,11 +115,11 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService { @@ -114,11 +115,11 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService {
114 .setUserId(withdraw.getUserId()).setUserType(UserTypeEnum.MEMBER.getValue()) 115 .setUserId(withdraw.getUserId()).setUserType(UserTypeEnum.MEMBER.getValue())
115 .setBizType(PayWalletBizTypeEnum.BROKERAGE_WITHDRAW.getType()).setBizId(withdraw.getId().toString()) 116 .setBizType(PayWalletBizTypeEnum.BROKERAGE_WITHDRAW.getType()).setBizId(withdraw.getId().toString())
116 .setPrice(withdraw.getPrice())); 117 .setPrice(withdraw.getPrice()));
117 - // 1.2 微信 API 118 + // 1.2 微信 API
118 } else if (BrokerageWithdrawTypeEnum.WECHAT_API.getType().equals(withdraw.getType())) { 119 } else if (BrokerageWithdrawTypeEnum.WECHAT_API.getType().equals(withdraw.getType())) {
119 // TODO @luchi:这里,要加个转账单号的记录;另外,调用 API 转账,是立马成功,还是有延迟的哈? 120 // TODO @luchi:这里,要加个转账单号的记录;另外,调用 API 转账,是立马成功,还是有延迟的哈?
120 Long payTransferId = createPayTransfer(withdraw); 121 Long payTransferId = createPayTransfer(withdraw);
121 - // 1.3 剩余类型,都是手动打款,所以不处理 122 + // 1.3 剩余类型,都是手动打款,所以不处理
122 } else { 123 } else {
123 // TODO 可优化:未来可以考虑,接入支付宝、银联等 API 转账,实现自动打款 124 // TODO 可优化:未来可以考虑,接入支付宝、银联等 API 转账,实现自动打款
124 log.info("[auditBrokerageWithdrawSuccess][withdraw({}) 类型({}) 手动打款,无需处理]", withdraw.getId(), withdraw.getType()); 125 log.info("[auditBrokerageWithdrawSuccess][withdraw({}) 类型({}) 手动打款,无需处理]", withdraw.getId(), withdraw.getType());
@@ -239,11 +240,12 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService { @@ -239,11 +240,12 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService {
239 240
240 @Override 241 @Override
241 public List<BrokerageWithdrawSummaryRespBO> getWithdrawSummaryListByUserId(Collection<Long> userIds, 242 public List<BrokerageWithdrawSummaryRespBO> getWithdrawSummaryListByUserId(Collection<Long> userIds,
242 - BrokerageWithdrawStatusEnum status) {  
243 - if (CollUtil.isEmpty(userIds)) { 243 + Collection<BrokerageWithdrawStatusEnum> status) {
  244 + if (CollUtil.isEmpty(userIds) || CollUtil.isEmpty(status)) {
244 return Collections.emptyList(); 245 return Collections.emptyList();
245 } 246 }
246 - return brokerageWithdrawMapper.selectCountAndSumPriceByUserIdAndStatus(userIds, status.getStatus()); 247 + return brokerageWithdrawMapper.selectCountAndSumPriceByUserIdAndStatus(userIds,
  248 + convertSet(status, BrokerageWithdrawStatusEnum::getStatus));
247 } 249 }
248 250
249 } 251 }