Răsfoiți Sursa

Merge branch 'distribute_general_rank' into pre

# Conflicts:
#	netflix-common/src/main/java/com/cyksj/common/constant/Constant.java
zoujiajian 2 ani în urmă
părinte
comite
6e8c987789

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

@@ -360,8 +360,7 @@ public interface Constant {
 
 	String week = "week";
 
-	/**
-	 * 镜像GPT cookie
-	 */
-	String MIRROR_GPT_COOKIE = "nf_ticket_info";
+	String money = "money";
+
+	String orders = "orders";
 }

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

@@ -3,7 +3,9 @@ package com.cyksj.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.util.List;
@@ -20,4 +22,8 @@ public interface UserDistributeRankStatisticsRecordMapper extends BaseMapper<Use
 	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);
 }

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserActivity.java

@@ -2,6 +2,7 @@ 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;
@@ -101,6 +102,13 @@ public class UserActivity extends BaseEntity {
 	@TableField(exist = false)
 	private List<UserActivityRankRobot> rankRobots;
 
+	/**
+	 * 活动订单书库
+	 */
+	@DbIgnore
+	@TableField(exist = false)
+	private ActivityOrderDataView orderDataView;
+
 	/**
 	 * 是否删除
 	 */

+ 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;
+}

+ 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;
+}

+ 49 - 18
netflix-dao/src/main/resources/mapper/UserDistributeRankStatisticsRecordMapper.xml

@@ -4,39 +4,35 @@
 <mapper namespace="com.cyksj.mapper.UserDistributeRankStatisticsRecordMapper">
 
     <select id="selectDistributeRanks" resultType="com.cyksj.model.views.DistributeUserRankView">
-        select ROW_NUMBER()                             OVER (ORDER BY ${filed}) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+        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.type,
                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 udsr.is_present is true
-        and statistics_start_time = #{statisticsTime}
+        where statistics_start_time = #{statisticsTime}
         order by ${filed} desc
     </select>
 
     <select id="getSelfRank" 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.type,
-               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
+        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 udsr.user_id = #{userId}
-          and udsr.is_present is true
-          and statistics_start_time = #{statisticsTime}
     </select>
 
     <select id="getPreviousWinners" resultType="com.cyksj.model.views.DistributeUserRankView">
-        select ROW_NUMBER()                             OVER (ORDER BY ${filed}) AS rank_id, concat(LEFT(ifnull(u.nickname,udsr.nickname),1),'*', RIGHT(ifnull(u.nickname,udsr.nickname),1)) as nickname,
+        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.type,
                udsr.user_id,
                udsr.statistics_start_time,
                udsr.money,
@@ -44,6 +40,41 @@
         from user_distribute_rank_statistics_record udsr
                  left join user u on u.id = udsr.user_id
         where statistics_start_time = #{lastTime}
-          and udsr.is_present is false
+    </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
+    </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
+        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>
 </mapper>

+ 14 - 9
netflix-service/src/main/java/com/cyksj/service/user/impl/UserActivityServiceImpl.java

@@ -75,19 +75,24 @@ public class UserActivityServiceImpl extends ServiceImpl<UserActivityMapper, Use
 		saveOrUpdate(userActivity);
 		if (userActivity.getType() == 1) {
 			List<UserActivityRankRobot> rankRoot = userActivity.getRankRobots();
-			List<Long> collect = rankRoot.stream().filter(e -> e.getId() != null).map(UserActivityRankRobot::getId).collect(Collectors.toList());
+			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));
 
-			rankRoot.forEach(root -> {
-				root.setAcId(userActivity.getId());
-				if (root.getId() != null) {
-					UserActivityRankRobotMapper.updateById(root);
-				} else {
-					UserActivityRankRobotMapper.insert(root);
-				}
-			});
+			if (CollUtil.isNotEmpty(rankRoot)) {
+				rankRoot.forEach(root -> {
+					root.setAcId(userActivity.getId());
+					if (root.getId() != null) {
+						UserActivityRankRobotMapper.updateById(root);
+					} else {
+						UserActivityRankRobotMapper.insert(root);
+					}
+				});
+			}
 		}
 	}
 

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

@@ -133,6 +133,7 @@ public class DistributeRankController {
 		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);
 	}

+ 36 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/active/UserActivityController.java

@@ -2,12 +2,17 @@ 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;
@@ -18,9 +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
@@ -39,6 +48,8 @@ public class UserActivityController {
 
 	private final UserActivityRankRobotMapper rankRootMapper;
 
+	private final UserDistributeRankStatisticsRecordMapper userDistributeRankStatisticsRecordMapper;
+
 	/**
 	 * 新建活动
 	 */
@@ -89,9 +100,34 @@ public class UserActivityController {
 					}
 				} 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);
+	}
+
 }