| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.cyksj.web.controller.distribute;
- import cn.hutool.core.date.DateTime;
- 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.manage.distribute.UserDistributeMapper;
- import com.cyksj.model.entity.UserDistribute;
- import com.cyksj.model.views.DistributeUserRankPersonalView;
- import com.cyksj.model.views.DistributeUserRankView;
- import com.cyksj.model.views.UserActivityDistributeDetailView;
- import com.cyksj.model.views.UserDistributeRankRewardDetailView;
- 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;
- /**
- * 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;
- /**
- * 分销排行活动详情
- */
- @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 = "money";
- //订单排行
- if (type == 1) {
- orderByField = "orders";
- }
- String statisticsTime;
- if (Constant.week.equals(statisticsType)) {
- //上周一
- LocalDate monday = LocalDate.now().with(ChronoField.DAY_OF_WEEK, DayOfWeek.MONDAY.getValue());
- statisticsTime = monday.toString();
- } else {
- LocalDate monday = LocalDate.now().with(ChronoField.DAY_OF_MONTH, DayOfWeek.MONDAY.getValue()).plusMonths(-1);
- statisticsTime = monday.toString();
- }
- DistributeUserRankView self = userDistributeRankStatisticsRecordMapper.getSelfRank(orderByField, userId, statisticsTime);
- distributeUserRankPersonalView.setSelf(self);
- 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) {
- 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 {
- LocalDate monday = LocalDate.now().with(ChronoField.DAY_OF_MONTH, DayOfWeek.MONDAY.getValue()).plusMonths(-1);
- lastTime = monday.toString();
- }
- String orderByField = "money";
- if (type == 1) {
- orderByField = "orders";
- }
- List<DistributeUserRankView> ranks = userDistributeRankStatisticsRecordMapper.getPreviousWinners(orderByField, lastTime);
- 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)
- .build());
- return GatewayResponse.SUCCESS.newBuilder().toResult(search);
- }
- }
|