Commit e4b153a866903ffcbbec803a97b05867991a5515

Authored by YunaiV
1 parent 0329f13f

分佣:增加获得分销排行分页 API mock

yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/SortingField.java
1 package cn.iocoder.yudao.framework.common.pojo; 1 package cn.iocoder.yudao.framework.common.pojo;
2 2
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Data;
  5 +import lombok.NoArgsConstructor;
  6 +
3 import java.io.Serializable; 7 import java.io.Serializable;
4 8
5 /** 9 /**
@@ -7,6 +11,9 @@ import java.io.Serializable; @@ -7,6 +11,9 @@ import java.io.Serializable;
7 * 11 *
8 * 类名加了 ing 的原因是,避免和 ES SortField 重名。 12 * 类名加了 ing 的原因是,避免和 ES SortField 重名。
9 */ 13 */
  14 +@Data
  15 +@NoArgsConstructor
  16 +@AllArgsConstructor
10 public class SortingField implements Serializable { 17 public class SortingField implements Serializable {
11 18
12 /** 19 /**
@@ -27,30 +34,4 @@ public class SortingField implements Serializable { @@ -27,30 +34,4 @@ public class SortingField implements Serializable {
27 */ 34 */
28 private String order; 35 private String order;
29 36
30 - // 空构造方法,解决反序列化  
31 - public SortingField() {  
32 - }  
33 -  
34 - public SortingField(String field, String order) {  
35 - this.field = field;  
36 - this.order = order;  
37 - }  
38 -  
39 - public String getField() {  
40 - return field;  
41 - }  
42 -  
43 - public SortingField setField(String field) {  
44 - this.field = field;  
45 - return this;  
46 - }  
47 -  
48 - public String getOrder() {  
49 - return order;  
50 - }  
51 -  
52 - public SortingField setOrder(String order) {  
53 - this.order = order;  
54 - return this;  
55 - }  
56 } 37 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/AppBrokerageUserController.java
@@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.app.brokerage; @@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.app.brokerage;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; 5 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
6 -import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByPriceRespVO;  
7 -import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;  
8 -import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO;  
9 -import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserSummaryRespVO; 6 +import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
10 import io.swagger.v3.oas.annotations.Operation; 7 import io.swagger.v3.oas.annotations.Operation;
11 import io.swagger.v3.oas.annotations.Parameter; 8 import io.swagger.v3.oas.annotations.Parameter;
12 import io.swagger.v3.oas.annotations.tags.Tag; 9 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -35,53 +32,75 @@ public class AppBrokerageUserController { @@ -35,53 +32,75 @@ public class AppBrokerageUserController {
35 @GetMapping("/get-summary") 32 @GetMapping("/get-summary")
36 @Operation(summary = "获得个人分销统计") 33 @Operation(summary = "获得个人分销统计")
37 @PreAuthenticated 34 @PreAuthenticated
38 - public CommonResult<AppBrokerageUserSummaryRespVO> getBrokerageUserSummary() {  
39 - AppBrokerageUserSummaryRespVO respVO = new AppBrokerageUserSummaryRespVO() 35 + public CommonResult<AppBrokerageUserMySummaryRespVO> getBrokerageUserSummary() {
  36 + AppBrokerageUserMySummaryRespVO respVO = new AppBrokerageUserMySummaryRespVO()
40 .setYesterdayBrokeragePrice(1) 37 .setYesterdayBrokeragePrice(1)
41 .setBrokeragePrice(2) 38 .setBrokeragePrice(2)
42 .setFrozenBrokeragePrice(3) 39 .setFrozenBrokeragePrice(3)
43 - .setWithdrawBrokeragePrice(4); 40 + .setWithdrawBrokeragePrice(4)
  41 + .setFirstBrokerageUserCount(166)
  42 + .setSecondBrokerageUserCount(233);
44 return success(respVO); 43 return success(respVO);
45 } 44 }
46 45
  46 + // TODO 芋艿:临时 mock =>
47 @GetMapping("/rank-page-by-user-count") 47 @GetMapping("/rank-page-by-user-count")
48 @Operation(summary = "获得分销用户排行分页(基于用户量)") 48 @Operation(summary = "获得分销用户排行分页(基于用户量)")
49 @PreAuthenticated 49 @PreAuthenticated
50 public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) { 50 public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
51 AppBrokerageUserRankByUserCountRespVO vo1 = new AppBrokerageUserRankByUserCountRespVO() 51 AppBrokerageUserRankByUserCountRespVO vo1 = new AppBrokerageUserRankByUserCountRespVO()
52 - .setUserId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 52 + .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
53 .setBrokerageUserCount(10); 53 .setBrokerageUserCount(10);
54 AppBrokerageUserRankByUserCountRespVO vo2 = new AppBrokerageUserRankByUserCountRespVO() 54 AppBrokerageUserRankByUserCountRespVO vo2 = new AppBrokerageUserRankByUserCountRespVO()
55 - .setUserId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 55 + .setId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
56 .setBrokerageUserCount(6); 56 .setBrokerageUserCount(6);
57 AppBrokerageUserRankByUserCountRespVO vo3 = new AppBrokerageUserRankByUserCountRespVO() 57 AppBrokerageUserRankByUserCountRespVO vo3 = new AppBrokerageUserRankByUserCountRespVO()
58 - .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 58 + .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
59 .setBrokerageUserCount(4); 59 .setBrokerageUserCount(4);
60 AppBrokerageUserRankByUserCountRespVO vo4 = new AppBrokerageUserRankByUserCountRespVO() 60 AppBrokerageUserRankByUserCountRespVO vo4 = new AppBrokerageUserRankByUserCountRespVO()
61 - .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 61 + .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
62 .setBrokerageUserCount(4); 62 .setBrokerageUserCount(4);
63 return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L)); 63 return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
64 } 64 }
65 65
  66 + // TODO 芋艿:临时 mock =>
66 @GetMapping("/rank-page-by-price") 67 @GetMapping("/rank-page-by-price")
67 @Operation(summary = "获得分销用户排行分页(基于佣金)") 68 @Operation(summary = "获得分销用户排行分页(基于佣金)")
68 @PreAuthenticated 69 @PreAuthenticated
69 - public CommonResult<PageResult<AppBrokerageUserRankByPriceRespVO>> getBrokerageUserRankPageByPrice(AppBrokerageUserRankPageReqVO pageReqVO) { 70 + public CommonResult<PageResult<AppBrokerageUserRankByPriceRespVO>> getBrokerageUserChildSummaryPageByPrice(AppBrokerageUserRankPageReqVO pageReqVO) {
70 AppBrokerageUserRankByPriceRespVO vo1 = new AppBrokerageUserRankByPriceRespVO() 71 AppBrokerageUserRankByPriceRespVO vo1 = new AppBrokerageUserRankByPriceRespVO()
71 - .setUserId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 72 + .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
72 .setBrokeragePrice(10); 73 .setBrokeragePrice(10);
73 AppBrokerageUserRankByPriceRespVO vo2 = new AppBrokerageUserRankByPriceRespVO() 74 AppBrokerageUserRankByPriceRespVO vo2 = new AppBrokerageUserRankByPriceRespVO()
74 - .setUserId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 75 + .setId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
75 .setBrokeragePrice(6); 76 .setBrokeragePrice(6);
76 AppBrokerageUserRankByPriceRespVO vo3 = new AppBrokerageUserRankByPriceRespVO() 77 AppBrokerageUserRankByPriceRespVO vo3 = new AppBrokerageUserRankByPriceRespVO()
77 - .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 78 + .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
78 .setBrokeragePrice(4); 79 .setBrokeragePrice(4);
79 AppBrokerageUserRankByPriceRespVO vo4 = new AppBrokerageUserRankByPriceRespVO() 80 AppBrokerageUserRankByPriceRespVO vo4 = new AppBrokerageUserRankByPriceRespVO()
80 - .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg") 81 + .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
81 .setBrokeragePrice(4); 82 .setBrokeragePrice(4);
82 return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L)); 83 return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
83 } 84 }
84 85
  86 + // TODO 芋艿:临时 mock =>
  87 + @GetMapping("/child-summary-page")
  88 + @Operation(summary = "获得下级分销统计分页")
  89 + @PreAuthenticated
  90 + public CommonResult<PageResult<AppBrokerageUserChildSummaryRespVO>> getBrokerageUserChildSummaryPage(
  91 + AppBrokerageUserChildSummaryPageReqVO pageReqVO) {
  92 + AppBrokerageUserChildSummaryRespVO vo1 = new AppBrokerageUserChildSummaryRespVO()
  93 + .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
  94 + .setBrokeragePrice(10).setBrokeragePrice(20).setBrokerageOrderCount(30)
  95 + .setBrokerageTime(LocalDateTime.now());
  96 + AppBrokerageUserChildSummaryRespVO vo2 = new AppBrokerageUserChildSummaryRespVO()
  97 + .setId(1L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
  98 + .setBrokeragePrice(20).setBrokeragePrice(30).setBrokerageOrderCount(40)
  99 + .setBrokerageTime(LocalDateTime.now());
  100 + return success(new PageResult<>(asList(vo1, vo2), 10L));
  101 + }
  102 +
  103 + // TODO 芋艿:临时 mock =>
85 @GetMapping("/get-rank-by-price") 104 @GetMapping("/get-rank-by-price")
86 @Operation(summary = "获得分销用户排行(基于佣金)") 105 @Operation(summary = "获得分销用户排行(基于佣金)")
87 @Parameter(name = "times", description = "时间段", required = true) 106 @Parameter(name = "times", description = "时间段", required = true)
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserChildSummaryPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import cn.iocoder.yudao.framework.common.pojo.SortingField;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
  6 +import lombok.Data;
  7 +
  8 +@Schema(description = "用户 App - 下级分销统计分页 Request VO")
  9 +@Data
  10 +public class AppBrokerageUserChildSummaryPageReqVO extends PageParam {
  11 +
  12 + public static final String SORT_FIELD_USER_COUNT = "userCount";
  13 + public static final String SORT_FIELD_ORDER_COUNT = "orderCount";
  14 + public static final String SORT_FIELD_PRICE = "price";
  15 +
  16 + @Schema(description = "用户昵称", example = "李") // 模糊匹配
  17 + private String nickname;
  18 +
  19 + @Schema(description = "排序字段", example = "userCount")
  20 + private SortingField sortingField;
  21 +
  22 + @Schema(description = "下级的级别", example = "1") // 1 - 直接下级;2 - 间接下级
  23 + private Integer level;
  24 +
  25 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserChildSummaryRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "用户 App - 下级分销统计 Response VO")
  9 +@Data
  10 +public class AppBrokerageUserChildSummaryRespVO {
  11 +
  12 + @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
  13 + private Long id;
  14 +
  15 + @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
  16 + private String nickname;
  17 +
  18 + @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
  19 + private String avatar;
  20 +
  21 + @Schema(description = "佣金金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
  22 + private Integer brokeragePrice;
  23 +
  24 + @Schema(description = "分销订单数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20")
  25 + private Integer brokerageOrderCount;
  26 +
  27 + @Schema(description = "分销用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30")
  28 + private Integer brokerageUserCount;
  29 +
  30 + @Schema(description = "成为分销员时间", requiredMode = Schema.RequiredMode.REQUIRED)
  31 + private LocalDateTime brokerageTime;
  32 +
  33 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserSummaryRespVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserMySummaryRespVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 5
6 @Schema(description = "用户 App - 个人分销统计 Response VO") 6 @Schema(description = "用户 App - 个人分销统计 Response VO")
7 @Data 7 @Data
8 -public class AppBrokerageUserSummaryRespVO { 8 +public class AppBrokerageUserMySummaryRespVO {
9 9
10 @Schema(description = "昨天的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") 10 @Schema(description = "昨天的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
11 private Integer yesterdayBrokeragePrice; 11 private Integer yesterdayBrokeragePrice;
@@ -19,4 +19,10 @@ public class AppBrokerageUserSummaryRespVO { @@ -19,4 +19,10 @@ public class AppBrokerageUserSummaryRespVO {
19 @Schema(description = "冻结的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "234") 19 @Schema(description = "冻结的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "234")
20 private Integer frozenBrokeragePrice; 20 private Integer frozenBrokeragePrice;
21 21
  22 + @Schema(description = "分销用户数量(一级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
  23 + private Integer firstBrokerageUserCount;
  24 +
  25 + @Schema(description = "分销用户数量(二级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
  26 + private Integer secondBrokerageUserCount;
  27 +
22 } 28 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserRankByPriceRespVO.java
@@ -8,12 +8,12 @@ import lombok.Data; @@ -8,12 +8,12 @@ import lombok.Data;
8 public class AppBrokerageUserRankByPriceRespVO { 8 public class AppBrokerageUserRankByPriceRespVO {
9 9
10 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") 10 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
11 - private Long userId; 11 + private Long id;
12 12
13 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王") 13 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
14 private String nickname; 14 private String nickname;
15 15
16 - @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://www.iocoder.cn/xxx.jpg") 16 + @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
17 private String avatar; 17 private String avatar;
18 18
19 @Schema(description = "佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") 19 @Schema(description = "佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserRankByUserCountRespVO.java
@@ -8,12 +8,12 @@ import lombok.Data; @@ -8,12 +8,12 @@ import lombok.Data;
8 public class AppBrokerageUserRankByUserCountRespVO { 8 public class AppBrokerageUserRankByUserCountRespVO {
9 9
10 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") 10 @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
11 - private Long userId; 11 + private Long id;
12 12
13 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王") 13 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
14 private String nickname; 14 private String nickname;
15 15
16 - @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://www.iocoder.cn/xxx.jpg") 16 + @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
17 private String avatar; 17 private String avatar;
18 18
19 @Schema(description = "邀请用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") 19 @Schema(description = "邀请用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")