Commit 3dca66eefa2a2a6b34447288bb32d06624d588ed

Authored by owen
1 parent 0b84c187

分销:提现统计

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/BrokerageUserController.java
... ... @@ -9,9 +9,12 @@ import cn.iocoder.yudao.module.trade.convert.brokerage.BrokerageUserConvert;
9 9 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
10 10 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
11 11 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum;
  12 +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
  13 +import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService;
12 14 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
13 15 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
14 16 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService;
  17 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
15 18 import io.swagger.v3.oas.annotations.Operation;
16 19 import io.swagger.v3.oas.annotations.Parameter;
17 20 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -38,6 +41,8 @@ public class BrokerageUserController {
38 41 private BrokerageUserService brokerageUserService;
39 42 @Resource
40 43 private BrokerageRecordService brokerageRecordService;
  44 + @Resource
  45 + private BrokerageWithdrawService brokerageWithdrawService;
41 46  
42 47 @Resource
43 48 private MemberUserApi memberUserApi;
... ... @@ -97,9 +102,12 @@ public class BrokerageUserController {
97 102 userId -> userId,
98 103 userId -> brokerageUserService.getBrokerageUserCountByBindUserId(userId, null));
99 104  
100   - // todo 合计提现
  105 + // 合计提现
  106 + Map<Long, UserWithdrawSummaryBO> withdrawMap = convertMap(userIds,
  107 + userId -> userId,
  108 + userId -> brokerageWithdrawService.getWithdrawSummaryByUserId(userId, BrokerageWithdrawStatusEnum.AUDIT_SUCCESS));
101 109  
102   - return success(BrokerageUserConvert.INSTANCE.convertPage(pageResult, userMap, brokerageUserCountMap, userOrderSummaryMap));
  110 + return success(BrokerageUserConvert.INSTANCE.convertPage(pageResult, userMap, brokerageUserCountMap, userOrderSummaryMap, withdrawMap));
103 111 }
104 112  
105 113 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
... ... @@ -15,6 +15,7 @@ import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum
15 15 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
16 16 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageUserService;
17 17 import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageWithdrawService;
  18 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
18 19 import io.swagger.v3.oas.annotations.Operation;
19 20 import io.swagger.v3.oas.annotations.Parameter;
20 21 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -82,7 +83,7 @@ public class AppBrokerageUserController {
82 83 LocalDateTime endTime = LocalDateTimeUtil.endOfDay(yesterday);
83 84 AppBrokerageUserMySummaryRespVO respVO = new AppBrokerageUserMySummaryRespVO()
84 85 .setYesterdayPrice(brokerageRecordService.getSummaryPriceByUserId(userId, BrokerageRecordBizTypeEnum.ORDER.getType(), beginTime, endTime))
85   - .setWithdrawPrice(brokerageWithdrawService.getSummaryPriceByUserIdAndStatus(userId, BrokerageWithdrawStatusEnum.AUDIT_SUCCESS.getStatus()))
  86 + .setWithdrawPrice(Optional.ofNullable(brokerageWithdrawService.getWithdrawSummaryByUserId(userId, BrokerageWithdrawStatusEnum.AUDIT_SUCCESS)).map(UserWithdrawSummaryBO::getPrice).orElse(0))
86 87 .setBrokeragePrice(0).setFrozenPrice(0)
87 88 .setFirstBrokerageUserCount(brokerageUserService.getBrokerageUserCountByBindUserId(userId, 1))
88 89 .setSecondBrokerageUserCount(brokerageUserService.getBrokerageUserCountByBindUserId(userId, 2));
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/brokerage/BrokerageUserConvert.java
... ... @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.Brokerag
7 7 import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
8 8 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO;
9 9 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
  10 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
10 11 import org.mapstruct.Mapper;
11 12 import org.mapstruct.MappingTarget;
12 13 import org.mapstruct.factory.Mappers;
... ... @@ -29,13 +30,14 @@ public interface BrokerageUserConvert {
29 30  
30 31 List<BrokerageUserRespVO> convertList(List<BrokerageUserDO> list);
31 32  
32   - PageResult<BrokerageUserRespVO> convertPage(PageResult<BrokerageUserDO> page);
  33 + PageResult<BrokerageUserRespVO> convertPage(PageResult<BrokerageUserDO> page, Map<Long, MemberUserRespDTO> userMap, Map<Long, Long> brokerageUserCountMap, Map<Long, UserBrokerageSummaryBO> userOrderSummaryMap);
33 34  
34 35 default PageResult<BrokerageUserRespVO> convertPage(PageResult<BrokerageUserDO> pageResult,
35 36 Map<Long, MemberUserRespDTO> userMap,
36 37 Map<Long, Long> brokerageUserCountMap,
37   - Map<Long, UserBrokerageSummaryBO> userOrderSummaryMap) {
38   - PageResult<BrokerageUserRespVO> result = convertPage(pageResult);
  38 + Map<Long, UserBrokerageSummaryBO> userOrderSummaryMap,
  39 + Map<Long, UserWithdrawSummaryBO> withdrawMap) {
  40 + PageResult<BrokerageUserRespVO> result = convertPage(pageResult, userMap, brokerageUserCountMap, userOrderSummaryMap);
39 41 for (BrokerageUserRespVO userVO : result.getList()) {
40 42 // 用户信息
41 43 copyTo(userMap.get(userVO.getId()), userVO);
... ... @@ -46,7 +48,10 @@ public interface BrokerageUserConvert {
46 48 Optional<UserBrokerageSummaryBO> orderSummaryOptional = Optional.ofNullable(userOrderSummaryMap.get(userVO.getId()));
47 49 userVO.setBrokerageOrderCount(orderSummaryOptional.map(UserBrokerageSummaryBO::getCount).orElse(0))
48 50 .setBrokerageOrderPrice(orderSummaryOptional.map(UserBrokerageSummaryBO::getPrice).orElse(0));
49   - // todo 已提现次数、已提现金额
  51 + // 已提现次数、已提现金额
  52 + Optional<UserWithdrawSummaryBO> withdrawSummaryOptional = Optional.ofNullable(withdrawMap.get(userVO.getId()));
  53 + userVO.setWithdrawCount(withdrawSummaryOptional.map(UserWithdrawSummaryBO::getCount).orElse(0))
  54 + .setWithdrawPrice(withdrawSummaryOptional.map(UserWithdrawSummaryBO::getPrice).orElse(0));
50 55 userVO.setWithdrawCount(0).setWithdrawPrice(0);
51 56 }
52 57 return result;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageWithdrawMapper.java
... ... @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.withdraw.BrokerageWithdrawPageReqVO;
7 7 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageWithdrawDO;
  8 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
8 9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
9 10 import org.apache.ibatis.annotations.Mapper;
10 11 import org.apache.ibatis.annotations.Param;
... ... @@ -36,8 +37,7 @@ public interface BrokerageWithdrawMapper extends BaseMapperX&lt;BrokerageWithdrawDO
36 37 .eq(BrokerageWithdrawDO::getStatus, status));
37 38 }
38 39  
39   - @Select("SELECT SUM(price) FROM trade_brokerage_withdraw " +
  40 + @Select("SELECT COUNT(1) AS count, SUM(price) AS price FROM trade_brokerage_withdraw " +
40 41 "WHERE user_id = #{userId} AND status = #{status}")
41   - Integer selectSummaryPriceByUserIdAndStatus(@Param("userId") Long userId, @Param("status") Integer status);
42   -
  42 + UserWithdrawSummaryBO selectCountAndSumPriceByUserIdAndStatus(Long userId, Integer status);
43 43 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawService.java
... ... @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.withdraw.Brok
5 5 import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.withdraw.AppBrokerageWithdrawCreateReqVO;
6 6 import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageWithdrawDO;
7 7 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
  8 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
8 9  
9 10 /**
10 11 * 佣金提现 Service 接口
... ... @@ -48,12 +49,12 @@ public interface BrokerageWithdrawService {
48 49 Long createBrokerageWithdraw(AppBrokerageWithdrawCreateReqVO createReqVO, Long userId);
49 50  
50 51 /**
51   - * 获得用户已提现金额
  52 + * 汇总用户提现
52 53 *
53 54 * @param userId 用户编号
54   - * @param status 状态
55   - * @return 用户已提现金额
  55 + * @param status 提现状态
  56 + * @return 用户提现汇总
56 57 */
57   - Integer getSummaryPriceByUserIdAndStatus(Long userId, Integer status);
  58 + UserWithdrawSummaryBO getWithdrawSummaryByUserId(Long userId, BrokerageWithdrawStatusEnum status);
58 59  
59 60 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawServiceImpl.java
... ... @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.service.brokerage;
2 2  
3 3 import cn.hutool.core.date.LocalDateTimeUtil;
4 4 import cn.hutool.core.map.MapUtil;
5   -import cn.hutool.core.math.Money;
6 5 import cn.hutool.core.util.ObjectUtil;
7 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8 7 import cn.iocoder.yudao.framework.common.util.number.MoneyUtils;
... ... @@ -18,6 +17,7 @@ import cn.iocoder.yudao.module.trade.enums.MessageTemplateConstants;
18 17 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
19 18 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawStatusEnum;
20 19 import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawTypeEnum;
  20 +import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserWithdrawSummaryBO;
21 21 import cn.iocoder.yudao.module.trade.service.config.TradeConfigService;
22 22 import org.springframework.stereotype.Service;
23 23 import org.springframework.transaction.annotation.Transactional;
... ... @@ -142,8 +142,9 @@ public class BrokerageWithdrawServiceImpl implements BrokerageWithdrawService {
142 142 }
143 143  
144 144 @Override
145   - public Integer getSummaryPriceByUserIdAndStatus(Long userId, Integer status) {
146   - return brokerageWithdrawMapper.selectSummaryPriceByUserIdAndStatus(userId, status);
  145 + public UserWithdrawSummaryBO getWithdrawSummaryByUserId(Long userId, BrokerageWithdrawStatusEnum status) {
  146 + UserWithdrawSummaryBO summaryBO = brokerageWithdrawMapper.selectCountAndSumPriceByUserIdAndStatus(userId, status.getStatus());
  147 + return summaryBO != null ? summaryBO : new UserWithdrawSummaryBO(0, 0);
147 148 }
148 149  
149 150 /**
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/bo/UserWithdrawSummaryBO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.service.brokerage.bo;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Data;
  5 +import lombok.NoArgsConstructor;
  6 +
  7 +/**
  8 + * 用户佣金提现合计 BO
  9 + *
  10 + * @author owen
  11 + */
  12 +@Data
  13 +@NoArgsConstructor
  14 +@AllArgsConstructor
  15 +public class UserWithdrawSummaryBO {
  16 +
  17 + /**
  18 + * 提现次数
  19 + */
  20 + private Integer count;
  21 + /**
  22 + * 提现金额
  23 + */
  24 + private Integer price;
  25 +
  26 +}
... ...