Quellcode durchsuchen

个人分销排行

zoujiajian vor 2 Jahren
Ursprung
Commit
fa256c0763
23 geänderte Dateien mit 1072 neuen und 11 gelöschten Zeilen
  1. 7 4
      netflix-common/src/main/java/com/cyksj/common/constant/Constant.java
  2. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserActivityRankRobotMapper.java
  3. 35 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeRankStatisticsRecordMapper.java
  4. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeReturnMoneyDetailMapper.java
  5. 75 2
      netflix-dao/src/main/java/com/cyksj/model/entity/UserActivity.java
  6. 68 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserActivityRankRobot.java
  7. 57 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeRankStatisticsRecord.java
  8. 22 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeReturnMoneyDetail.java
  9. 20 0
      netflix-dao/src/main/java/com/cyksj/model/views/ActivityOrderDataView.java
  10. 26 0
      netflix-dao/src/main/java/com/cyksj/model/views/DistributeUserRankPersonalView.java
  11. 58 0
      netflix-dao/src/main/java/com/cyksj/model/views/DistributeUserRankView.java
  12. 77 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserActivityDistributeDetailView.java
  13. 48 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRankActivityView.java
  14. 47 0
      netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRankRewardDetailView.java
  15. 33 0
      netflix-dao/src/main/java/com/cyksj/model/views/userDistributeReturnMoneyDetail.java
  16. 128 0
      netflix-dao/src/main/resources/mapper/UserDistributeRankStatisticsRecordMapper.xml
  17. 14 0
      netflix-service/src/main/java/com/cyksj/service/distribute/UserDistributeReturnMoneyDetailService.java
  18. 31 0
      netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserDistributeReturnMoneyDetailServiceImpl.java
  19. 4 0
      netflix-service/src/main/java/com/cyksj/service/pay/impl/TransferFuncServiceImpl.java
  20. 30 4
      netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java
  21. 184 0
      netflix-web/src/main/java/com/cyksj/web/controller/distribute/DistributeRankController.java
  22. 78 1
      netflix-web/src/main/java/com/cyksj/web/controller/manage/active/UserActivityController.java
  23. 4 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

+ 7 - 4
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -356,8 +356,11 @@ public interface Constant {
 	 */
 	List<Long> SPECIAL_PRICE_SKU_IDS = List.of(409l);
 
-	/**
-	 * 镜像GPT cookie
-	 */
-	String MIRROR_GPT_COOKIE = "nf_ticket_info";
+	String month = "month";
+
+	String week = "week";
+
+	String money = "money";
+
+	String orders = "orders";
 }

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserActivityRankRobotMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserActivityRankRobot;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityRankRobotMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/7/24 16:10
+ */
+public interface UserActivityRankRobotMapper extends BaseMapper<UserActivityRankRobot> {
+}

+ 35 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeRankStatisticsRecordMapper.java

@@ -0,0 +1,35 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cyksj.model.entity.UserActivityRankRobot;
+import com.cyksj.model.entity.UserDistributeRankStatisticsRecord;
+import com.cyksj.model.views.ActivityOrderDataView;
+import com.cyksj.model.views.DistributeUserRankView;
+import com.cyksj.model.views.UserDistributeRankActivityView;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeRankStatisticsRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 16:37
+ */
+public interface UserDistributeRankStatisticsRecordMapper extends BaseMapper<UserDistributeRankStatisticsRecord> {
+	Page<DistributeUserRankView> selectDistributeRanks(@Param("filed") String filed, @Param("statisticsTime") String statisticsTime, @Param("page") Page<DistributeUserRankView> objectPage);
+
+	DistributeUserRankView getSelfRank( @Param("filed") String filed, @Param("userId") long userId, @Param("statisticsTime") String statisticsTime);
+
+	List<DistributeUserRankView> getPreviousWinners(@Param("filed") String filed, @Param("lastTime") String lastTime);
+
+	ActivityOrderDataView selectAcOrderDataView(Long acId);
+
+	Page<UserDistributeRankActivityView> rankPage(@Param("nickname") String nickname, @Param("userId") Long userId, @Param("date") String date, @Param("page") Page<UserDistributeRankActivityView> objects, @Param("filed") String filed, @Param("orderBy") String orderBy, @Param("sort") String sort);
+
+	UserActivityRankRobot getRobotRankInfo(@Param("robotId") Long robotId, @Param("filed") String filed, @Param("statisticsTime") String statisticsTime);
+
+	DistributeUserRankView getMoreSelfRank(@Param("rankId") Integer rankId, @Param("orders") Integer orders, @Param("money") BigDecimal money, @Param("filed") String filed, @Param("statisticsTime") String statisticsTime);
+}

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeReturnMoneyDetailMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserDistributeReturnMoneyDetail;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeReturnMoneyDetailMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/7/29 18:46
+ */
+public interface UserDistributeReturnMoneyDetailMapper extends BaseMapper<UserDistributeReturnMoneyDetail> {
+}

+ 75 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/UserActivity.java

@@ -2,11 +2,14 @@ package com.cyksj.model.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.cyksj.model.views.ActivityOrderDataView;
+import com.ejlchina.searcher.bean.DbIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotEmpty;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 项目名: yhlxj
@@ -17,7 +20,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
-public class UserActivity extends BaseEntity{
+public class UserActivity extends BaseEntity {
 	/**
 	 * 活动名称
 	 */
@@ -59,8 +62,78 @@ public class UserActivity extends BaseEntity{
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String rules;
 
+	/**
+	 * 0.大学生认证
+	 * 1.个人分销排行
+	 */
+	private Integer type;
+
+	/**
+	 * 统计类型(周/月)
+	 * week,month
+	 */
+	private String statisticsType;
+
+	/**
+	 * 分销排行榜类型
+	 * 0.金额榜,1.打单榜
+	 */
+	private Integer rankType;
+
+	/**
+	 * 头奖范围
+	 * 5:前五名
+	 */
+	private Integer headRank;
+
+	/**
+	 * 奖励信息json
+	 */
+	private String rewardInfo;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private List<RewardInfo> rewardInfoList;
+
+	/**
+	 * 设置机器人
+	 */
+	@DbIgnore
+	@TableField(exist = false)
+	private List<UserActivityRankRobot> rankRobots;
+
+	/**
+	 * 活动订单书库
+	 */
+	@DbIgnore
+	@TableField(exist = false)
+	private ActivityOrderDataView orderDataView;
+
 	/**
 	 * 是否删除
 	 */
 	private Boolean deleted;
-}
+
+	@Getter
+	@Setter
+	public static class RewardInfo{
+
+		/**
+		 * 名次
+		 */
+		private Integer rank;
+
+		/**
+		 * 0.返现
+		 * 1.余额
+		 * 2.兑换码
+		 * 奖品类型
+		 */
+		private Integer type;
+
+		/**
+		 * 具体奖励
+		 */
+		private String reward;
+	}
+}

+ 68 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserActivityRankRobot.java

@@ -0,0 +1,68 @@
+package com.cyksj.model.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class UserActivityRankRobot extends BaseEntity{
+	private Long acId;
+
+	private String headimgurl;
+
+	private String nickname;
+
+	/**
+	 * 每日增单数开始
+	 */
+	private Integer addOrdersSt;
+
+	/**
+	 * 每日增单数结束
+	 */
+	private Integer addOrdersEt;
+
+	/**
+	 * 初始订单数
+	 */
+	private Integer initOrders;
+
+	/**
+	 * 每单金额开始
+	 */
+	private BigDecimal moneySt;
+
+	/**
+	 * 每单金额结束
+	 */
+	private BigDecimal moneyEt;
+
+	/**
+	 * 初始金额
+	 */
+	private BigDecimal initMoney;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private Integer orders;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private Integer orderRank;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private BigDecimal money;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private Integer moneyRank;
+
+	@DbIgnore
+	@TableField(exist = false)
+	private Integer rankId;
+}

+ 57 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeRankStatisticsRecord.java

@@ -0,0 +1,57 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeRankStatisticsRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 16:33
+ */
+@Getter
+@Setter
+public class UserDistributeRankStatisticsRecord extends BaseEntity{
+	/**
+	 * 排行类型
+	 * 0金额,1单数
+	 */
+	private Integer type;
+
+	/**
+	 * 分销用户
+	 */
+	private Long userId;
+
+	/**
+	 * 机器人id
+	 */
+	private Long robotId;
+
+	/**
+	 * 分销用户数
+	 */
+	private Integer userNUm;
+
+	/**
+	 * 分销订单数
+	 */
+	private Integer orders;
+
+	/**
+	 * 分销金额
+	 */
+	private BigDecimal money;
+
+	/**
+	 * 奖品明细
+	 */
+	private String reward;
+
+	/**
+	 * 统计类型
+	 */
+	private Integer statisticsType;
+}

+ 22 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeReturnMoneyDetail.java

@@ -0,0 +1,22 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeReturnMoneyDetail
+ * 创建者: JavaZou
+ * 创建时间:2024/7/29 18:46
+ */
+@Getter
+@Setter
+public class UserDistributeReturnMoneyDetail extends BaseEntity{
+	private Long userId;
+
+	private BigDecimal money;
+
+	private String source;
+}

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/views/ActivityOrderDataView.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: ActivityOrderDataView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/26 16:59
+ */
+@Getter
+@Setter
+public class ActivityOrderDataView{
+	private Integer orders;
+
+	private BigDecimal money;
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeUserRankPersonalView.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.views;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: DistributeUserRankPersonalView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 17:43
+ */
+@Getter
+@Setter
+public class DistributeUserRankPersonalView {
+
+	/**
+	 * 个人排行
+	 */
+	private DistributeUserRankView self;
+
+	/**
+	 * 排行列表
+	 */
+	private Page<DistributeUserRankView> ranks;
+}

+ 58 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeUserRankView.java

@@ -0,0 +1,58 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: DistributeUserRankView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 17:30
+ */
+@Getter
+@Setter
+@SearchBean(tables = "user_distribute_rank_statistics_record udsr left join user u on u.id = udsr.user_id",
+		where = "udsr.is_present is true")
+public class DistributeUserRankView {
+
+	@DbIgnore
+	private Integer rankId;
+
+	@DbField("udsr.user_id")
+	private Long userId;
+
+	@DbField("concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*',RIGHT(ifnull(u.nickname,udsr.nickname),1))")
+	private String nickname;
+
+	@DbField("ifnull(u.headimgurl,udsr.headimgurl)")
+	private String headimgurl;
+
+	@DbField("udsr.orders")
+	private Integer orders = 0;
+
+	@DbField("udsr.statistics_start_time")
+	private String statisticsStartTime;
+
+	@DbField("udsr.money")
+	private BigDecimal money = BigDecimal.ZERO;
+
+	@DbField("udsr.reward_type")
+	private Integer rewardType;
+
+	@DbField("udsr.reward")
+	private Integer reward;
+
+	@DbIgnore
+	private Integer gapOrders;
+
+	@DbIgnore
+	private BigDecimal gapMoney;
+
+	@DbIgnore
+	private Boolean isPrize = false;
+}

+ 77 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserActivityDistributeDetailView.java

@@ -0,0 +1,77 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserActivityDistributeDetailView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 17:12
+ */
+@Data
+@SearchBean(tables = "user_activity ua"
+		, where = "ua.deleted = true :time:")
+public class UserActivityDistributeDetailView {
+	@DbField("ua.id")
+	private Integer id;
+
+	@DbField("ua.name")
+	private String name;
+
+	@DbField("ua.start_time")
+	private Date startTime;
+
+	@DbField("ua.end_time")
+	private Date endTime;
+
+	@DbField("ua.img")
+	private String img;
+
+	/**
+	 * 规则图片
+	 */
+	@DbField("ua.rules")
+	private String rules;
+
+	/**
+	 * 0.大学生认证
+	 * 1.个人分销排行
+	 */
+	@DbField("ua.type")
+	private Integer type;
+
+	/**
+	 * 统计类型(周/月)
+	 * week,month
+	 */
+	@DbField("ua.statistics_type")
+	private String statisticsType;
+
+	/**
+	 * 分销排行榜类型
+	 * 0.金额榜,1.打单榜
+	 * 2.both
+	 */
+	@DbField("ua.rank_type")
+	private Integer rankType;
+
+	/**
+	 * 头奖范围
+	 * 5:前五名
+	 */
+	@DbField("ua.head_rank")
+	private Integer headRank;
+
+	/**
+	 * 奖励信息json
+	 */
+	@DbField("ua.reward_info")
+	private String rewardInfo;
+
+	@DbField("ua.created_time")
+	private Date createdTime;
+}

+ 48 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRankActivityView.java

@@ -0,0 +1,48 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeRankActivityView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/26 17:04
+ */
+@Getter
+@Setter
+public class UserDistributeRankActivityView {
+
+	/**
+	 * 排行
+	 */
+	private Integer rankId;
+
+	private String statisticsStartTime;
+
+	private String statisticsEndTime;
+
+	private Long userId;
+
+	private String nickname;
+
+	private String headimgurl;
+
+	private Integer userNum;
+
+	private Integer orders;
+
+	private BigDecimal money;
+
+	/**
+	 * 奖励明细
+	 */
+	private String reward;
+
+	/**
+	 * 奖励类型
+	 */
+	private String rewardType;
+}

+ 47 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRankRewardDetailView.java

@@ -0,0 +1,47 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeRankRewardDetailView
+ * 创建者: JavaZou
+ * 创建时间:2024/7/24 17:56
+ */
+
+@Getter
+@Setter
+@SearchBean(tables = "user_distribute_rank_reward_detail ud")
+public class UserDistributeRankRewardDetailView {
+	@DbField("ud.user_id")
+	private Long userId;
+
+	@DbField("ud.reward_type")
+	private Integer rewardType;
+
+	@DbField("ud.reward")
+	private String reward;
+
+	/**
+	 * 排行类型 0金额,1单数
+	 */
+	@DbField("ud.type")
+	private Integer type;
+
+	@DbField("ud.rank_id")
+	private Integer rankId;
+
+	@DbField("ud.statistics_start_time")
+	private String statisticsStartTime;
+
+	@DbField("ud.statistics_end_time")
+	private String statisticsEndTime;
+
+	@DbField("ud.created_time")
+	private Date createdTime;
+}

+ 33 - 0
netflix-dao/src/main/java/com/cyksj/model/views/userDistributeReturnMoneyDetail.java

@@ -0,0 +1,33 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: userDistributeReturnMoneyDetail
+ * 创建者: JavaZou
+ * 创建时间:2024/7/24 17:56
+ */
+
+@Getter
+@Setter
+@SearchBean(tables = "user_distribute_return_money_detail ud")
+public class userDistributeReturnMoneyDetail {
+	@DbField("ud.user_id")
+	private Long userId;
+
+	@DbField("ud.money")
+	private BigDecimal money;
+
+	@DbField("ud.source")
+	private String source;
+
+	@DbField("ud.created_time")
+	private Date createdTime;
+}

+ 128 - 0
netflix-dao/src/main/resources/mapper/UserDistributeRankStatisticsRecordMapper.xml

@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.UserDistributeRankStatisticsRecordMapper">
+
+    <select id="selectDistributeRanks" resultType="com.cyksj.model.views.DistributeUserRankView">
+        select ROW_NUMBER()                             OVER (ORDER BY ${filed} desc) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+               ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+               udsr.statistics_start_time,
+               udsr.money,
+               udsr.orders,
+               udsr.reward_type,
+               udsr.reward
+        from user_distribute_rank_statistics_record udsr
+                 left join user u on u.id = udsr.user_id
+        where statistics_start_time = #{statisticsTime}
+        order by ${filed} desc
+    </select>
+
+    <select id="getSelfRank" resultType="com.cyksj.model.views.DistributeUserRankView">
+        select *
+        from (select ROW_NUMBER()                             OVER (ORDER BY ${filed} desc) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+                     ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+                     udsr.user_id,
+                     udsr.statistics_start_time,
+                     udsr.money,
+                     udsr.orders,
+                     udsr.reward_type,
+                     udsr.reward
+              from user_distribute_rank_statistics_record udsr
+                       left join user u on u.id = udsr.user_id
+              where statistics_start_time = #{statisticsTime}) s
+        where s.user_id = #{userId}
+    </select>
+
+    <select id="getPreviousWinners" resultType="com.cyksj.model.views.DistributeUserRankView">
+        select ROW_NUMBER()                             OVER (ORDER BY ${filed} desc) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+               ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+               udsr.user_id,
+               udsr.statistics_start_time,
+               udsr.money,
+               udsr.orders,
+               udsr.reward,
+               udsr.reward_type
+        from user_distribute_rank_statistics_record udsr
+                 left join user u on u.id = udsr.user_id
+        where statistics_start_time = #{lastTime}
+    </select>
+
+    <select id="selectAcOrderDataView" resultType="com.cyksj.model.views.ActivityOrderDataView">
+        select sum(orders) as orders, sum(money) as money
+        from user_distribute_rank_statistics_record
+        where robot_id is null
+    </select>
+
+    <select id="rankPage" resultType="com.cyksj.model.views.UserDistributeRankActivityView">
+        select * from (select ROW_NUMBER() OVER (ORDER BY ${filed} desc) AS rank_id,
+        ifnull(u.nickname,udsr.nickname) as nickname,
+        ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+        udsr.user_id,
+        udsr.statistics_start_time,
+        udsr.statistics_end_time,
+        udsr.money,
+        udsr.orders,
+        udsr.reward_type,
+        udsr.reward,
+        (select count(1) from user_distribute_shared us where us.shared_id = udsr.user_id) as userNum
+        from user_distribute_rank_statistics_record udsr
+        left join user u on u.id = udsr.user_id
+        <where>
+            <if test="date != null">
+                statistics_start_time = #{date}
+            </if>
+            <if test="userId != null">
+                and udsr.user_id = #{userId}
+            </if>
+            <if test="nickname != null">
+                and u.nickname like '%${nickname}%'
+            </if>
+        </where>
+        order by ${filed} desc limit 20)
+        s
+        <if test="orderBy!=null">
+            order by ${orderBy} ${sort}
+        </if>
+    </select>
+
+    <select id="getRobotRankInfo" resultType="com.cyksj.model.entity.UserActivityRankRobot">
+        select *
+        from (select ROW_NUMBER()                             OVER (ORDER BY ${filed} desc) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+                     ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+                     udsr.user_id,
+                     udsr.statistics_start_time,
+                     udsr.money,
+                     udsr.orders,
+                     robot_id
+              from user_distribute_rank_statistics_record udsr
+                       left join user u on u.id = udsr.user_id
+              where statistics_start_time = #{statisticsTime}) s
+        where s.robot_id = #{robotId}
+    </select>
+
+    <select id="getMoreSelfRank" resultType="com.cyksj.model.views.DistributeUserRankView">
+        select *
+        from (select ROW_NUMBER() OVER (ORDER BY ${filed} desc) AS rank_id,
+        concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+        ifnull(u.headimgurl, udsr.headimgurl) as headimgurl,
+        udsr.user_id,
+        udsr.statistics_start_time,
+        udsr.money,
+        udsr.orders
+        from user_distribute_rank_statistics_record udsr
+        left join user u on u.id = udsr.user_id
+        where statistics_start_time = #{statisticsTime}) s
+        <where>
+            <if test="rankId != null">
+                s.rank_id &lt; #{rankId}
+            </if>
+            <if test="filed = 'orders'">
+                and s.orders > #{orders}
+            </if>
+            <if test="filed = 'money'">
+                and s.money > #{money}
+            </if>
+        </where>
+        order by rank_id desc limit 1
+    </select>
+</mapper>

+ 14 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/UserDistributeReturnMoneyDetailService.java

@@ -0,0 +1,14 @@
+package com.cyksj.service.distribute;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeReturnMoneyDetailService
+ * 创建者: JavaZou
+ * 创建时间:2024/7/29 18:52
+ */
+public interface UserDistributeReturnMoneyDetailService {
+
+	void recordDistributeReturnMoney(Long userId, BigDecimal money, String source);
+}

+ 31 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserDistributeReturnMoneyDetailServiceImpl.java

@@ -0,0 +1,31 @@
+package com.cyksj.service.distribute.impl;
+
+import com.cyksj.mapper.UserDistributeReturnMoneyDetailMapper;
+import com.cyksj.model.entity.UserDistributeReturnMoneyDetail;
+import com.cyksj.service.distribute.UserDistributeReturnMoneyDetailService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: UserDistributeReturnMoneyDetailServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2024/7/29 18:52
+ */
+@Service
+@RequiredArgsConstructor
+public class UserDistributeReturnMoneyDetailServiceImpl implements UserDistributeReturnMoneyDetailService {
+	private final UserDistributeReturnMoneyDetailMapper userDistributeReturnMoneyDetailMapper;
+
+
+	@Override
+	public void recordDistributeReturnMoney(Long userId, BigDecimal money, String source) {
+		UserDistributeReturnMoneyDetail userDistributeReturnMoneyDetail = new UserDistributeReturnMoneyDetail();
+		userDistributeReturnMoneyDetail.setUserId(userId);
+		userDistributeReturnMoneyDetail.setMoney(money);
+		userDistributeReturnMoneyDetail.setSource(source);
+		userDistributeReturnMoneyDetailMapper.insert(userDistributeReturnMoneyDetail);
+	}
+}

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/pay/impl/TransferFuncServiceImpl.java

@@ -36,6 +36,7 @@ import com.cyksj.model.request.ApplyMoneyReq;
 import com.cyksj.model.request.TransferAccountsReq;
 import com.cyksj.model.request.YhShopApplyMoneyReq;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.distribute.UserDistributeReturnMoneyDetailService;
 import com.cyksj.service.pay.TransferFuncService;
 import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.user.UserBenefitsService;
@@ -81,6 +82,8 @@ public class TransferFuncServiceImpl implements TransferFuncService {
 
 	private final SysConfigService sysConfigService;
 
+	private final UserDistributeReturnMoneyDetailService userDistributeReturnMoneyDetailService;
+
 	@Override
 	public Result distributeApply(ApplyMoneyReq applyMoneyReq) throws Exception {
 		applyMoneyReq.setMType(DistributeMoneyApply.MType.ds);
@@ -347,6 +350,7 @@ public class TransferFuncServiceImpl implements TransferFuncService {
 				if (envCommonService.isPrdEnv() && distributeMoneyApply.getVerifyStatus() == DistributeMoneyApply.Status.verifying && distributeMoneyApply.getMoney().compareTo(fourHundred) > 0) {
 					SmsUtil.sendLuoKey2Msg(Constant.ZK_MOBILE, "推广有大额提现申请【银河录像局】");
 				}
+				userDistributeReturnMoneyDetailService.recordDistributeReturnMoney(distributeMoneyApply.getUserId(), distributeMoneyApply.getMoney().negate(), "提现");
 			} catch (Exception e) {
 				userBenefitsService.addDistributePoints(userId, distributeMoneyApply.getPoints());
 				return GatewayResponse.FAIL.newBuilder().setMsg("网络错误,请重试").toResult();

+ 30 - 4
netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java

@@ -1,16 +1,15 @@
 package com.cyksj.service.user.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.UserActivityMapper;
+import com.cyksj.mapper.UserActivityRankRobotMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.UserStudentCertRecordMapper;
-import com.cyksj.model.entity.CouponUser;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.UserActivity;
-import com.cyksj.model.entity.UserStudentCertRecord;
+import com.cyksj.model.entity.*;
 import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.user.UserActivityService;
 import lombok.RequiredArgsConstructor;
@@ -19,6 +18,7 @@ import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 项目名: yhlxj
@@ -35,6 +35,8 @@ public class UserActivityServiceImpl extends ServiceImpl<UserActivityMapper, Use
 	private final UserMapper userMapper;
 
 	private final UserStudentCertRecordMapper userStudentCertRecordMapper;
+
+	private final UserActivityRankRobotMapper UserActivityRankRobotMapper;
 	@Override
 	public void sendStudentCertActivity(User user, String dsCode, String school) throws Exception {
 		UserActivity activity = getById(1);
@@ -67,7 +69,31 @@ public class UserActivityServiceImpl extends ServiceImpl<UserActivityMapper, Use
 	@Override
 	public void saveOrUpdateActivity(UserActivity userActivity) throws Exception {
 		checkActivity(userActivity);
+		if (userActivity.getType() == 1) {
+			userActivity.setRewardInfo(Jsons.toJson(userActivity.getRewardInfoList()));
+		}
 		saveOrUpdate(userActivity);
+		if (userActivity.getType() == 1) {
+			List<UserActivityRankRobot> rankRoot = userActivity.getRankRobots();
+			List<Long> collect = null;
+			if (rankRoot != null) {
+				collect = rankRoot.stream().filter(e -> e.getId() != null).map(UserActivityRankRobot::getId).collect(Collectors.toList());
+			}
+			UserActivityRankRobotMapper.delete(Wrappers.lambdaQuery(UserActivityRankRobot.class)
+					.eq(UserActivityRankRobot::getAcId, userActivity.getId())
+					.notIn(CollUtil.isNotEmpty(collect), UserActivityRankRobot::getId, collect));
+
+			if (CollUtil.isNotEmpty(rankRoot)) {
+				rankRoot.forEach(root -> {
+					root.setAcId(userActivity.getId());
+					if (root.getId() != null) {
+						UserActivityRankRobotMapper.updateById(root);
+					} else {
+						UserActivityRankRobotMapper.insert(root);
+					}
+				});
+			}
+		}
 	}
 
 

+ 184 - 0
netflix-web/src/main/java/com/cyksj/web/controller/distribute/DistributeRankController.java

@@ -0,0 +1,184 @@
+package com.cyksj.web.controller.distribute;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.UserDistributeRankStatisticsRecordMapper;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserDistribute;
+import com.cyksj.model.views.*;
+import com.cyksj.web.util.StpUserUtil;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.ChronoField;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * server/分销排行
+ * 项目名: yhlxj
+ * 文件名: DistributeRankController
+ * 创建者: JavaZou
+ * 创建时间:2024/7/23 17:10
+ */
+@RestController
+@RequestMapping("/applets/distribute/rank")
+@RequiredArgsConstructor
+public class DistributeRankController {
+
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	private final UserDistributeMapper userDistributeMapper;
+
+	private final UserDistributeRankStatisticsRecordMapper userDistributeRankStatisticsRecordMapper;
+
+	private final UserMapper userMapper;
+
+	/**
+	 * 分销排行活动详情
+	 */
+	@GetMapping("/get/activity/detail")
+	public Result<UserActivityDistributeDetailView> getActivityDetail() {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class)
+				.eq(UserDistribute::getUserId, userId)
+				.eq(UserDistribute::getDeleted, 1)
+				.last("limit 1"));
+		//非普通推广渠道
+		if (userDistribute != null) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		String dateStr = DateTime.now().toString();
+		String time = String.format(" and (ua.start_time is null or (ua.start_time < '%s' and ua.end_time > '%s'))", dateStr, dateStr);
+		UserActivityDistributeDetailView view = beanSearcher.searchFirst(UserActivityDistributeDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(UserActivityDistributeDetailView::getType, 1)
+				.put("time", time)
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(view);
+	}
+
+	/**
+	 * 个人分销排行详情  以及所属分类排行列表
+	 */
+	@GetMapping("/get/personal")
+	public Result<DistributeUserRankPersonalView> getPersonal(@RequestParam(defaultValue = "0") Integer type, @RequestParam(defaultValue = "week") String statisticsType, @RequestParam(defaultValue = "1") Integer start, @RequestParam(defaultValue = "5") Integer limit) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		DistributeUserRankPersonalView distributeUserRankPersonalView = new DistributeUserRankPersonalView();
+		String orderByField = Constant.money;
+		//订单排行
+		if (type == 1) {
+			orderByField = Constant.orders;
+		}
+		String statisticsTime;
+		if (Constant.week.equals(statisticsType)) {
+			//上周一
+			LocalDate monday = LocalDate.now().with(ChronoField.DAY_OF_WEEK, DayOfWeek.MONDAY.getValue());
+			statisticsTime = monday.toString();
+		} else {
+			DateTime beginOfMonth = DateUtil.beginOfMonth(DateTime.now());
+			statisticsTime = beginOfMonth.toDateStr();
+		}
+
+		DistributeUserRankView self = Optional.ofNullable(userDistributeRankStatisticsRecordMapper.getSelfRank(orderByField, userId, statisticsTime)).orElseGet(()->{
+			DistributeUserRankView distributeUserRankView = new DistributeUserRankView();
+			User user = userMapper.selectById(userId);
+			distributeUserRankView.setNickname(user.getNickname());
+			distributeUserRankView.setHeadimgurl(user.getHeadimgurl());
+			return distributeUserRankView;
+		});
+		if (self != null && self.getRankId() != null && self.getRankId() <= 10) {
+			self.setIsPrize(true);
+		}
+		distributeUserRankPersonalView.setSelf(self);
+
+		DistributeUserRankView more = userDistributeRankStatisticsRecordMapper.getMoreSelfRank(self.getRankId(), self.getOrders(), self.getMoney(), orderByField, statisticsTime);
+		if (more != null) {
+			if (type == 1) {
+				self.setGapOrders(more.getOrders() - self.getOrders());
+			} else {
+				self.setGapMoney(more.getMoney().subtract(self.getMoney()));
+			}
+		}
+
+		Page<DistributeUserRankView> ranks = userDistributeRankStatisticsRecordMapper.selectDistributeRanks(orderByField, statisticsTime, new Page<>(start, limit));
+		distributeUserRankPersonalView.setRanks(ranks);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(distributeUserRankPersonalView);
+	}
+
+	/**
+	 * 上期获奖名单
+	 */
+	@GetMapping("/get/previous/winners")
+	public Result<List<DistributeUserRankView>> getPreviousWinners(@RequestParam(defaultValue = "0") Integer type, @RequestParam(defaultValue = "week") String statisticsType) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		String lastTime;
+		if (Constant.week.equals(statisticsType)) {
+			//上周一
+			LocalDate monday = LocalDate.now().with(ChronoField.DAY_OF_WEEK, DayOfWeek.MONDAY.getValue()).plusWeeks(-1);
+			lastTime = monday.toString();
+		} else {
+			DateTime lastBeginOfMonth = DateUtil.offsetMonth(DateUtil.beginOfMonth(DateTime.now()), -1);
+			lastTime = lastBeginOfMonth.toDateStr();
+		}
+		String orderByField = "money";
+		if (type == 1) {
+			orderByField = "orders";
+		}
+		List<DistributeUserRankView> ranks = userDistributeRankStatisticsRecordMapper.getPreviousWinners(orderByField, lastTime);
+
+		ranks.forEach(rank -> {
+			if (ObjectUtil.equal(userId, rank.getUserId())) {
+				//在前10
+				rank.setIsPrize(true);
+				rank.setUserId(null);
+			}
+		});
+		return GatewayResponse.SUCCESS.newBuilder().toResult(ranks);
+	}
+
+	/**
+	 * 获奖明细
+	 */
+	@GetMapping("/get/reward/detail")
+	public Result<SearchResult<UserDistributeRankRewardDetailView>> getUserRewardDetailView() {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		SearchResult<UserDistributeRankRewardDetailView> search = beanSearcher.search(UserDistributeRankRewardDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(UserDistributeRankRewardDetailView::getUserId, userId)
+				.orderBy(UserDistributeRankRewardDetailView::getCreatedTime).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 返现明细
+	 */
+	@GetMapping("/get/distribute/returnMoney/detai")
+	public Result<SearchResult<userDistributeReturnMoneyDetail>> getReturnMoneyDetailView() {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		SearchResult<userDistributeReturnMoneyDetail> search = beanSearcher.search(userDistributeReturnMoneyDetail.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(userDistributeReturnMoneyDetail::getUserId, userId)
+				.orderBy(userDistributeReturnMoneyDetail::getCreatedTime).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+}

+ 78 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/active/UserActivityController.java

@@ -1,8 +1,18 @@
 package com.cyksj.web.controller.manage.active;
 
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.UserActivityRankRobotMapper;
+import com.cyksj.mapper.UserDistributeRankStatisticsRecordMapper;
 import com.cyksj.model.entity.UserActivity;
+import com.cyksj.model.entity.UserActivityRankRobot;
+import com.cyksj.model.views.ActivityOrderDataView;
+import com.cyksj.model.views.UserDistributeRankActivityView;
 import com.cyksj.service.user.UserActivityService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -13,8 +23,13 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.temporal.ChronoField;
+import java.util.List;
 
 /**
+ * admin/分销排行
  * 项目名: yhlxj
  * 文件名: UserActivityController
  * 创建者: JavaZou
@@ -31,6 +46,10 @@ public class UserActivityController {
 
 	private final HttpServletRequest request;
 
+	private final UserActivityRankRobotMapper rankRootMapper;
+
+	private final UserDistributeRankStatisticsRecordMapper userDistributeRankStatisticsRecordMapper;
+
 	/**
 	 * 新建活动
 	 */
@@ -66,9 +85,67 @@ public class UserActivityController {
 	 * 活动列表
 	 */
 	@GetMapping("/get")
-	public Result<SearchResult<UserActivity> > get() {
+	public Result<SearchResult<UserActivity>> get() {
 		SearchResult<UserActivity> search = beanSearcher.search(UserActivity.class, MapUtils.flatBuilder(request.getParameterMap()).field(UserActivity::getDeleted, 1).build());
+		search.getDataList().forEach(e -> {
+			if (e.getType() == 1) {
+				String statisticsTime;
+				if (e.getStatisticsType().equals(Constant.week)) {
+					statisticsTime = LocalDate.now().with(ChronoField.DAY_OF_WEEK, DayOfWeek.MONDAY.getValue()).toString();
+				} else {
+					statisticsTime = LocalDate.now().with(ChronoField.DAY_OF_MONTH, DayOfWeek.MONDAY.getValue()).toString();
+				}
+				List<UserActivityRankRobot> userActivityRankRobots = rankRootMapper.selectList(Wrappers.lambdaQuery(UserActivityRankRobot.class)
+						.eq(UserActivityRankRobot::getAcId, e.getId()));
+				userActivityRankRobots.forEach(robot -> {
+					UserActivityRankRobot moneyRank = userDistributeRankStatisticsRecordMapper.getRobotRankInfo(robot.getId(), Constant.money, statisticsTime);
+					if (moneyRank != null) {
+						robot.setMoney(moneyRank.getMoney());
+						robot.setMoneyRank(moneyRank.getRankId());
+					}
+					UserActivityRankRobot orderRank = userDistributeRankStatisticsRecordMapper.getRobotRankInfo(robot.getId(), Constant.orders, statisticsTime);
+					if (orderRank != null) {
+						robot.setOrders(orderRank.getOrders());
+						robot.setOrderRank(orderRank.getRankId());
+					}
+				});
+				e.setRankRobots(userActivityRankRobots);
+
+				try {
+					if (StrUtil.isNotBlank(e.getRewardInfo())) {
+						List<UserActivity.RewardInfo> rewardInfos = Jsons.parseList(e.getRewardInfo(), UserActivity.RewardInfo.class);
+						e.setRewardInfoList(rewardInfos);
+					}
+				} catch (Exception ex) {
+				}
+
+				//活动数据
+				ActivityOrderDataView activityOrderDataView = userDistributeRankStatisticsRecordMapper.selectAcOrderDataView(e.getId());
+				e.setOrderDataView(activityOrderDataView);
+			}
+		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
+	/**
+	 * 分销排行列表
+	 */
+	@GetMapping("/get/rank/list")
+	public Result<Page<UserDistributeRankActivityView>> rankList(Long acId, String nickname, Long userId, String date, @RequestParam(defaultValue = "1") Integer start, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(defaultValue = "0") Integer type, String orderBy, String sort) {
+		String field = Constant.money;
+		if (type == 1) {
+			field = Constant.orders;
+		}
+		UserActivity activity = userActivityService.getById(acId);
+		if (date == null) {
+			if (activity.getStatisticsType().equals(Constant.week)) {
+				date = LocalDate.now().with(ChronoField.DAY_OF_WEEK, DayOfWeek.MONDAY.getValue()).toString();
+			} else {
+				date = LocalDate.now().with(ChronoField.DAY_OF_MONTH, DayOfWeek.MONDAY.getValue()).toString();
+			}
+		}
+		Page<UserDistributeRankActivityView> page = userDistributeRankStatisticsRecordMapper.rankPage(nickname, userId, date, new Page<>(start, limit), field, orderBy, sort);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(page);
+	}
+
 }

+ 4 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -30,6 +30,7 @@ import com.cyksj.model.request.UserDistributeReq;
 import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.distribute.DistributeService;
+import com.cyksj.service.distribute.UserDistributeReturnMoneyDetailService;
 import com.cyksj.service.mange.business.UserBusinessRateService;
 import com.cyksj.service.mange.statistics.StatisticsDataService;
 import com.cyksj.service.sys.SysConfigService;
@@ -125,6 +126,7 @@ public class DistributeController {
 
 	private final UserDistributeSubMapper userDistributeSubMapper;
 
+	private final UserDistributeReturnMoneyDetailService userDistributeReturnMoneyDetailService;
 	/**
 	 * 添加固定推广者
 	 */
@@ -496,6 +498,8 @@ public class DistributeController {
 			Long userId = distributeMoneyApply.getUserId();
 			userBenefitsService.addDistributePoints(userId, distributeMoneyApply.getPoints());
 			log.info("归还积分:{}至用户{}结束", distributeMoneyApply.getPoints(), userId);
+			//记录返现明细
+			userDistributeReturnMoneyDetailService.recordDistributeReturnMoney(distributeMoneyApply.getUserId(), distributeMoneyApply.getMoney(), "提现失败");
 		}
 		if (DistributeMoneyApply.Status.success.name().equals(distributeApplyMoneyReq.getVerifyStatus())) {
 //			if (StrUtil.isBlank(distributeApplyMoneyReq.getImg())) {