Commit 3dca66eefa2a2a6b34447288bb32d06624d588ed
1 parent
0b84c187
分销:提现统计
Showing
7 changed files
with
59 additions
and
17 deletions
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<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 | +} | ... | ... |