Browse Source

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

YunaiV 1 year ago
parent
commit
e4b153a866

+ 7 - 26
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/SortingField.java

@@ -1,5 +1,9 @@
 package cn.iocoder.yudao.framework.common.pojo;
 package cn.iocoder.yudao.framework.common.pojo;
 
 
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
 import java.io.Serializable;
 import java.io.Serializable;
 
 
 /**
 /**
@@ -7,6 +11,9 @@ import java.io.Serializable;
  *
  *
  * 类名加了 ing 的原因是,避免和 ES SortField 重名。
  * 类名加了 ing 的原因是,避免和 ES SortField 重名。
  */
  */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
 public class SortingField implements Serializable {
 public class SortingField implements Serializable {
 
 
     /**
     /**
@@ -27,30 +34,4 @@ public class SortingField implements Serializable {
      */
      */
     private String order;
     private String order;
 
 
-    // 空构造方法,解决反序列化
-    public SortingField() {
-    }
-
-    public SortingField(String field, String order) {
-        this.field = field;
-        this.order = order;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public SortingField setField(String field) {
-        this.field = field;
-        return this;
-    }
-
-    public String getOrder() {
-        return order;
-    }
-
-    public SortingField setOrder(String order) {
-        this.order = order;
-        return this;
-    }
 }
 }

+ 35 - 16
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;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
-import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByPriceRespVO;
-import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankByUserCountRespVO;
-import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserRankPageReqVO;
-import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.AppBrokerageUserSummaryRespVO;
+import cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user.*;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -35,53 +32,75 @@ public class AppBrokerageUserController {
     @GetMapping("/get-summary")
     @GetMapping("/get-summary")
     @Operation(summary = "获得个人分销统计")
     @Operation(summary = "获得个人分销统计")
     @PreAuthenticated
     @PreAuthenticated
-    public CommonResult<AppBrokerageUserSummaryRespVO> getBrokerageUserSummary() {
-        AppBrokerageUserSummaryRespVO respVO = new AppBrokerageUserSummaryRespVO()
+    public CommonResult<AppBrokerageUserMySummaryRespVO> getBrokerageUserSummary() {
+        AppBrokerageUserMySummaryRespVO respVO = new AppBrokerageUserMySummaryRespVO()
                 .setYesterdayBrokeragePrice(1)
                 .setYesterdayBrokeragePrice(1)
                 .setBrokeragePrice(2)
                 .setBrokeragePrice(2)
                 .setFrozenBrokeragePrice(3)
                 .setFrozenBrokeragePrice(3)
-                .setWithdrawBrokeragePrice(4);
+                .setWithdrawBrokeragePrice(4)
+                .setFirstBrokerageUserCount(166)
+                .setSecondBrokerageUserCount(233);
         return success(respVO);
         return success(respVO);
     }
     }
 
 
+    // TODO 芋艿:临时 mock =>
     @GetMapping("/rank-page-by-user-count")
     @GetMapping("/rank-page-by-user-count")
     @Operation(summary = "获得分销用户排行分页(基于用户量)")
     @Operation(summary = "获得分销用户排行分页(基于用户量)")
     @PreAuthenticated
     @PreAuthenticated
     public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
     public CommonResult<PageResult<AppBrokerageUserRankByUserCountRespVO>> getBrokerageUserRankPageByUserCount(AppBrokerageUserRankPageReqVO pageReqVO) {
         AppBrokerageUserRankByUserCountRespVO vo1 = new AppBrokerageUserRankByUserCountRespVO()
         AppBrokerageUserRankByUserCountRespVO vo1 = new AppBrokerageUserRankByUserCountRespVO()
-                .setUserId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokerageUserCount(10);
                 .setBrokerageUserCount(10);
         AppBrokerageUserRankByUserCountRespVO vo2 = new AppBrokerageUserRankByUserCountRespVO()
         AppBrokerageUserRankByUserCountRespVO vo2 = new AppBrokerageUserRankByUserCountRespVO()
-                .setUserId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokerageUserCount(6);
                 .setBrokerageUserCount(6);
         AppBrokerageUserRankByUserCountRespVO vo3 = new AppBrokerageUserRankByUserCountRespVO()
         AppBrokerageUserRankByUserCountRespVO vo3 = new AppBrokerageUserRankByUserCountRespVO()
-                .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokerageUserCount(4);
                 .setBrokerageUserCount(4);
         AppBrokerageUserRankByUserCountRespVO vo4 = new AppBrokerageUserRankByUserCountRespVO()
         AppBrokerageUserRankByUserCountRespVO vo4 = new AppBrokerageUserRankByUserCountRespVO()
-                .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokerageUserCount(4);
                 .setBrokerageUserCount(4);
         return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
         return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
     }
     }
 
 
+    // TODO 芋艿:临时 mock =>
     @GetMapping("/rank-page-by-price")
     @GetMapping("/rank-page-by-price")
     @Operation(summary = "获得分销用户排行分页(基于佣金)")
     @Operation(summary = "获得分销用户排行分页(基于佣金)")
     @PreAuthenticated
     @PreAuthenticated
-    public CommonResult<PageResult<AppBrokerageUserRankByPriceRespVO>> getBrokerageUserRankPageByPrice(AppBrokerageUserRankPageReqVO pageReqVO) {
+    public CommonResult<PageResult<AppBrokerageUserRankByPriceRespVO>> getBrokerageUserChildSummaryPageByPrice(AppBrokerageUserRankPageReqVO pageReqVO) {
         AppBrokerageUserRankByPriceRespVO vo1 = new AppBrokerageUserRankByPriceRespVO()
         AppBrokerageUserRankByPriceRespVO vo1 = new AppBrokerageUserRankByPriceRespVO()
-                .setUserId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokeragePrice(10);
                 .setBrokeragePrice(10);
         AppBrokerageUserRankByPriceRespVO vo2 = new AppBrokerageUserRankByPriceRespVO()
         AppBrokerageUserRankByPriceRespVO vo2 = new AppBrokerageUserRankByPriceRespVO()
-                .setUserId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(2L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokeragePrice(6);
                 .setBrokeragePrice(6);
         AppBrokerageUserRankByPriceRespVO vo3 = new AppBrokerageUserRankByPriceRespVO()
         AppBrokerageUserRankByPriceRespVO vo3 = new AppBrokerageUserRankByPriceRespVO()
-                .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokeragePrice(4);
                 .setBrokeragePrice(4);
         AppBrokerageUserRankByPriceRespVO vo4 = new AppBrokerageUserRankByPriceRespVO()
         AppBrokerageUserRankByPriceRespVO vo4 = new AppBrokerageUserRankByPriceRespVO()
-                .setUserId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setId(3L).setNickname("芋3**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
                 .setBrokeragePrice(4);
                 .setBrokeragePrice(4);
         return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
         return success(new PageResult<>(asList(vo1, vo2, vo3, vo4), 10L));
     }
     }
 
 
+    // TODO 芋艿:临时 mock =>
+    @GetMapping("/child-summary-page")
+    @Operation(summary = "获得下级分销统计分页")
+    @PreAuthenticated
+    public CommonResult<PageResult<AppBrokerageUserChildSummaryRespVO>> getBrokerageUserChildSummaryPage(
+            AppBrokerageUserChildSummaryPageReqVO pageReqVO) {
+        AppBrokerageUserChildSummaryRespVO vo1 = new AppBrokerageUserChildSummaryRespVO()
+                .setId(1L).setNickname("芋1**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setBrokeragePrice(10).setBrokeragePrice(20).setBrokerageOrderCount(30)
+                .setBrokerageTime(LocalDateTime.now());
+        AppBrokerageUserChildSummaryRespVO vo2 = new AppBrokerageUserChildSummaryRespVO()
+                .setId(1L).setNickname("芋2**艿").setAvatar("http://www.iocoder.cn/images/common/wechat_mp_2017_07_31_bak.jpg")
+                .setBrokeragePrice(20).setBrokeragePrice(30).setBrokerageOrderCount(40)
+                .setBrokerageTime(LocalDateTime.now());
+        return success(new PageResult<>(asList(vo1, vo2), 10L));
+    }
+
+    // TODO 芋艿:临时 mock =>
     @GetMapping("/get-rank-by-price")
     @GetMapping("/get-rank-by-price")
     @Operation(summary = "获得分销用户排行(基于佣金)")
     @Operation(summary = "获得分销用户排行(基于佣金)")
     @Parameter(name = "times", description = "时间段", required = true)
     @Parameter(name = "times", description = "时间段", required = true)

+ 25 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserChildSummaryPageReqVO.java

@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.SortingField;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "用户 App - 下级分销统计分页 Request VO")
+@Data
+public class AppBrokerageUserChildSummaryPageReqVO extends PageParam {
+
+    public static final String SORT_FIELD_USER_COUNT = "userCount";
+    public static final String SORT_FIELD_ORDER_COUNT = "orderCount";
+    public static final String SORT_FIELD_PRICE = "price";
+
+    @Schema(description = "用户昵称", example = "李") // 模糊匹配
+    private String nickname;
+
+    @Schema(description = "排序字段", example = "userCount")
+    private SortingField sortingField;
+
+    @Schema(description = "下级的级别", example = "1") // 1 - 直接下级;2 - 间接下级
+    private Integer level;
+
+}

+ 33 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserChildSummaryRespVO.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "用户 App - 下级分销统计 Response VO")
+@Data
+public class AppBrokerageUserChildSummaryRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Long id;
+
+    @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
+    private String nickname;
+
+    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
+    private String avatar;
+
+    @Schema(description = "佣金金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer brokeragePrice;
+
+    @Schema(description = "分销订单数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20")
+    private Integer brokerageOrderCount;
+
+    @Schema(description = "分销用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "30")
+    private Integer brokerageUserCount;
+
+    @Schema(description = "成为分销员时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime brokerageTime;
+
+}

+ 7 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/user/AppBrokerageUserSummaryRespVO.java → 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;
 
 
 @Schema(description = "用户 App - 个人分销统计 Response VO")
 @Schema(description = "用户 App - 个人分销统计 Response VO")
 @Data
 @Data
-public class AppBrokerageUserSummaryRespVO {
+public class AppBrokerageUserMySummaryRespVO {
 
 
     @Schema(description = "昨天的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @Schema(description = "昨天的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     private Integer yesterdayBrokeragePrice;
     private Integer yesterdayBrokeragePrice;
@@ -19,4 +19,10 @@ public class AppBrokerageUserSummaryRespVO {
     @Schema(description = "冻结的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "234")
     @Schema(description = "冻结的佣金,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "234")
     private Integer frozenBrokeragePrice;
     private Integer frozenBrokeragePrice;
 
 
+    @Schema(description = "分销用户数量(一级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer firstBrokerageUserCount;
+
+    @Schema(description = "分销用户数量(二级)", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer secondBrokerageUserCount;
+
 }
 }

+ 2 - 2
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;
 public class AppBrokerageUserRankByPriceRespVO {
 public class AppBrokerageUserRankByPriceRespVO {
 
 
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    private Long userId;
+    private Long id;
 
 
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
     private String nickname;
     private String nickname;
 
 
-    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://www.iocoder.cn/xxx.jpg")
+    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
     private String avatar;
     private String avatar;
 
 
     @Schema(description = "佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @Schema(description = "佣金金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")

+ 2 - 2
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;
 public class AppBrokerageUserRankByUserCountRespVO {
 public class AppBrokerageUserRankByUserCountRespVO {
 
 
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
-    private Long userId;
+    private Long id;
 
 
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
     private String nickname;
     private String nickname;
 
 
-    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://www.iocoder.cn/xxx.jpg")
+    @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xxx.jpg")
     private String avatar;
     private String avatar;
 
 
     @Schema(description = "邀请用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
     @Schema(description = "邀请用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")