Commit ad0513c87ccd21ef9fd9f2fcd8f074ab42415982
1 parent
ee15b802
分佣: 推广人列表
Showing
6 changed files
with
73 additions
and
12 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
| ... | ... | @@ -33,7 +33,6 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 33 | 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 34 | 34 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 35 | 35 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 36 | -import static java.util.Arrays.asList; | |
| 37 | 36 | |
| 38 | 37 | @Tag(name = "用户 APP - 分销用户") |
| 39 | 38 | @RestController |
| ... | ... | @@ -113,21 +112,14 @@ public class AppBrokerageUserController { |
| 113 | 112 | return success(BrokerageRecordConvert.INSTANCE.convertPage03(pageResult, userMap)); |
| 114 | 113 | } |
| 115 | 114 | |
| 116 | - // TODO 芋艿:临时 mock => | |
| 117 | 115 | @GetMapping("/child-summary-page") |
| 118 | 116 | @Operation(summary = "获得下级分销统计分页") |
| 119 | 117 | @PreAuthenticated |
| 120 | 118 | public CommonResult<PageResult<AppBrokerageUserChildSummaryRespVO>> getBrokerageUserChildSummaryPage( |
| 121 | 119 | AppBrokerageUserChildSummaryPageReqVO pageReqVO) { |
| 122 | - AppBrokerageUserChildSummaryRespVO vo1 = new AppBrokerageUserChildSummaryRespVO() | |
| 123 | - .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") | |
| 124 | - .setBrokeragePrice(10).setBrokeragePrice(20).setBrokerageOrderCount(30) | |
| 125 | - .setBrokerageTime(LocalDateTime.now()); | |
| 126 | - AppBrokerageUserChildSummaryRespVO vo2 = new AppBrokerageUserChildSummaryRespVO() | |
| 127 | - .setId(1L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") | |
| 128 | - .setBrokeragePrice(20).setBrokeragePrice(30).setBrokerageOrderCount(40) | |
| 129 | - .setBrokerageTime(LocalDateTime.now()); | |
| 130 | - return success(new PageResult<>(asList(vo1, vo2), 10L)); | |
| 120 | + // 分页查询 | |
| 121 | + PageResult<AppBrokerageUserChildSummaryRespVO> pageResult = brokerageUserService.getBrokerageUserChildSummaryPage(pageReqVO, getLoginUserId()); | |
| 122 | + return success(pageResult); | |
| 131 | 123 | } |
| 132 | 124 | |
| 133 | 125 | @GetMapping("/get-rank-by-price") | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserChildSummaryRespVO.java
| ... | ... | @@ -27,7 +27,7 @@ public class AppBrokerageUserChildSummaryRespVO { |
| 27 | 27 | @Schema(description = "分销用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30") |
| 28 | 28 | private Integer brokerageUserCount; |
| 29 | 29 | |
| 30 | - @Schema(description = "成为分销员时间", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 30 | + @Schema(description = "绑定推广员的时间", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 31 | 31 | private LocalDateTime brokerageTime; |
| 32 | 32 | |
| 33 | 33 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageUserMapper.java
| ... | ... | @@ -5,6 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 6 | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | 7 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO; |
| 8 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO; | |
| 9 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO; | |
| 8 | 10 | import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO; |
| 9 | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; |
| 10 | 12 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| ... | ... | @@ -138,4 +140,8 @@ public interface BrokerageUserMapper extends BaseMapperX<BrokerageUserDO> { |
| 138 | 140 | IPage<AppBrokerageUserRankByUserCountRespVO> selectCountPageGroupByBindUserId(Page<?> page, |
| 139 | 141 | @Param("beginTime") LocalDateTime beginTime, |
| 140 | 142 | @Param("endTime") LocalDateTime endTime); |
| 143 | + | |
| 144 | + IPage<AppBrokerageUserChildSummaryRespVO> selectSummaryPageByUserId(Page<?> page, | |
| 145 | + @Param("param") AppBrokerageUserChildSummaryPageReqVO param, | |
| 146 | + @Param("userId") Long userId); | |
| 141 | 147 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserService.java
| ... | ... | @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.trade.service.brokerage; |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; |
| 5 | 5 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO; |
| 6 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO; | |
| 7 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO; | |
| 6 | 8 | import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO; |
| 7 | 9 | import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO; |
| 8 | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; |
| ... | ... | @@ -140,4 +142,13 @@ public interface BrokerageUserService { |
| 140 | 142 | * @return 推广人排行 |
| 141 | 143 | */ |
| 142 | 144 | PageResult<AppBrokerageUserRankByUserCountRespVO> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO); |
| 145 | + | |
| 146 | + /** | |
| 147 | + * 获得下级分销统计分页 | |
| 148 | + * | |
| 149 | + * @param pageReqVO 分页查询 | |
| 150 | + * @param userId 用户编号 | |
| 151 | + * @return 下级分销统计分页 | |
| 152 | + */ | |
| 153 | + PageResult<AppBrokerageUserChildSummaryRespVO> getBrokerageUserChildSummaryPage(AppBrokerageUserChildSummaryPageReqVO pageReqVO, Long userId); | |
| 143 | 154 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserServiceImpl.java
| ... | ... | @@ -9,6 +9,8 @@ import cn.hutool.core.util.StrUtil; |
| 9 | 9 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 10 | 10 | import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; |
| 11 | 11 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.vo.user.BrokerageUserPageReqVO; |
| 12 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryPageReqVO; | |
| 13 | +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO; | |
| 12 | 14 | import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO; |
| 13 | 15 | import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO; |
| 14 | 16 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.BrokerageUserDO; |
| ... | ... | @@ -220,6 +222,12 @@ public class BrokerageUserServiceImpl implements BrokerageUserService { |
| 220 | 222 | return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); |
| 221 | 223 | } |
| 222 | 224 | |
| 225 | + @Override | |
| 226 | + public PageResult<AppBrokerageUserChildSummaryRespVO> getBrokerageUserChildSummaryPage(AppBrokerageUserChildSummaryPageReqVO pageReqVO, Long userId) { | |
| 227 | + IPage<AppBrokerageUserChildSummaryRespVO> pageResult = brokerageUserMapper.selectSummaryPageByUserId(MyBatisUtils.buildPage(pageReqVO), pageReqVO, userId); | |
| 228 | + return new PageResult<>(pageResult.getRecords(), pageResult.getTotal()); | |
| 229 | + } | |
| 230 | + | |
| 223 | 231 | private boolean isUserCanBind(BrokerageUserDO user, Boolean isNewUser) { |
| 224 | 232 | // 校验分销功能是否启用 |
| 225 | 233 | TradeConfigDO tradeConfig = tradeConfigService.getTradeConfig(); | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/resources/mapper/brokerage/BrokerageUserMapper.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | |
| 2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
| 3 | +<mapper namespace="cn.iocoder.yudao.module.trade.dal.mysql.brokerage.BrokerageUserMapper"> | |
| 4 | + | |
| 5 | + <select id="selectSummaryPageByUserId" | |
| 6 | + resultType="cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserChildSummaryRespVO"> | |
| 7 | + SELECT bu.id, bu.bind_user_time AS brokerageTime, | |
| 8 | + u.nickname, u.avatar, | |
| 9 | + (SELECT SUM(price) FROM trade_brokerage_record r | |
| 10 | + WHERE r.user_id = u.id AND biz_type = 1 AND r.status = 1 AND r.deleted = FALSE) AS brokeragePrice, | |
| 11 | + (SELECT COUNT(1) FROM trade_brokerage_record r | |
| 12 | + WHERE r.user_id = u.id AND biz_type = 1 AND r.status = 1 AND r.deleted = FALSE) AS brokerageOrderCount, | |
| 13 | + (SELECT COUNT(1) FROM trade_brokerage_user c | |
| 14 | + WHERE c.bind_user_id = u.id AND c.deleted = FALSE) AS brokerageUserCount | |
| 15 | + FROM member_user AS u | |
| 16 | + JOIN trade_brokerage_user AS bu ON bu.id = u.id | |
| 17 | + <where> | |
| 18 | + <if test="param.nickname != null and param.nickname != ''"> | |
| 19 | + AND u.nickname LIKE concat('', #{param.nickname}, '') | |
| 20 | + </if> | |
| 21 | + <if test="param.level == 1"> | |
| 22 | + AND bu.bind_user_id = #{userId} | |
| 23 | + </if> | |
| 24 | + <if test="param.level == 2"> | |
| 25 | + AND bu.bind_user_id = (SELECT id FROM trade_brokerage_user c WHERE c.bind_user_id = | |
| 26 | + #{userId}) | |
| 27 | + </if> | |
| 28 | + </where> | |
| 29 | + <choose> | |
| 30 | + <when test="param.sortingField.field == 'userCount'"> | |
| 31 | + ORDER BY brokerageUserCount ${param.sortingField.order} | |
| 32 | + </when> | |
| 33 | + <when test="param.sortingField.field == 'orderCount'"> | |
| 34 | + ORDER BY brokerageOrderCount ${param.sortingField.order} | |
| 35 | + </when> | |
| 36 | + <when test="param.sortingField.field == 'price'"> | |
| 37 | + ORDER BY brokeragePrice ${param.sortingField.order} | |
| 38 | + </when> | |
| 39 | + <otherwise> | |
| 40 | + ORDER BY bu.bind_user_time DESC | |
| 41 | + </otherwise> | |
| 42 | + </choose> | |
| 43 | + </select> | |
| 44 | +</mapper> | ... | ... |