diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/RankAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/RankAppController.java index 02eccd3d..bdd40d08 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/RankAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/RankAppController.java @@ -1,22 +1,24 @@ package com.ruoyi.cai.controller.app; import com.ruoyi.cai.domain.User; -import com.ruoyi.cai.dto.app.vo.rank.RankLoveRemark; +import com.ruoyi.cai.dto.app.RankIdReq; +import com.ruoyi.cai.dto.app.vo.rank.RankRemark; import com.ruoyi.cai.dto.app.vo.rank.RankNodeInvite; import com.ruoyi.cai.dto.app.vo.rank.RankNodeLove; import com.ruoyi.cai.enums.GenderEnum; +import com.ruoyi.cai.manager.AwardManager; import com.ruoyi.cai.rank.RankManager; import com.ruoyi.cai.rank.RankNode; +import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.UserService; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.function.Function; @@ -31,11 +33,14 @@ public class RankAppController { private RankManager rankManager; @Autowired private UserService userService; - + @Autowired + private RankService rankService; + @Autowired + private AwardManager awardManager; @GetMapping("/loveRemark") - @Operation(summary = "榜单说明") - public R remark(){ + @Operation(summary = "魅力榜榜单说明") + public R loveRemark(){ String remark = "(魅力上周榜排名奖励)\n" + "第一名:888元\n" + @@ -52,11 +57,43 @@ public class RankAppController { "第五名:38元\n" + "第六至十名:28元\n" + "提示:凡是刷魅力榜的封号,平台拥有对本次活动的最终解释权。"; - RankLoveRemark res = new RankLoveRemark(); + RankRemark res = new RankRemark(); res.setRemark(remark); return R.ok(res); } + @GetMapping("/inviteRemark") + @Operation(summary = "邀请榜榜单说明") + public R inviteRemark(){ + String remark = + "(邀请上周榜排名奖励)\n" + + "第一名:888元\n" + + "第二名:588元\n" + + "第三名:388元\n" + + "第四名:288元\n" + + "第五名:188元\n" + + "第六至十名:138元\n" + + "(邀请昨日榜排名奖励)\n" + + "第一名:138元\n" + + "第二名:108元\n" + + "第三名:88元\n" + + "第四名:58元\n" + + "第五名:38元\n" + + "第六至十名:28元\n" + + "提示:凡是刷邀请榜的封号,平台拥有对本次活动的最终解释权。"; + RankRemark res = new RankRemark(); + res.setRemark(remark); + return R.ok(res); + } + + @PostMapping("/giveRank") + @Operation(summary = "领取榜单") + public R inviteRank(@RequestBody RankIdReq rankIdReq){ + Long userId = LoginHelper.getUserId(); + awardManager.giveRank(rankIdReq.getRankId(),userId); + return R.ok(); + } + @GetMapping("/love") @Operation(summary = "魅力榜") public R> loveRank( @@ -66,9 +103,9 @@ public class RankAppController { } List rankNodeList; if(type == 1){ - rankNodeList = rankManager.getLoveRankLastWeek(10); + rankNodeList = rankService.getLoveRankLastWeek(10); }else if(type == 2){ - rankNodeList = rankManager.getLoveRankLastDay(10); + rankNodeList = rankService.getLoveRankLastDay(10); }else if(type == 3){ rankNodeList = rankManager.getLoveRankToday(30); }else if(type == 4){ @@ -99,6 +136,8 @@ public class RankAppController { love.setAvatar(user.getAvatar()); love.setNickname(user.getNickname()); love.setValue(rankNode.getScore()); + love.setDraw(rankNode.getDraw()); + love.setRankId(rankNode.getRankId()); love.setHide(false); if(i == 0){ love.setDiffLastValue(0L); @@ -120,9 +159,9 @@ public class RankAppController { } List rankNodeList; if(type == 1){ - rankNodeList = rankManager.getInviteRankLastWeek(10); + rankNodeList = rankService.getInviteRankLastWeek(10); }else if(type == 2){ - rankNodeList = rankManager.getInviteRankLastDay(10); + rankNodeList = rankService.getInviteRankLastDay(10); }else if(type == 3){ rankNodeList = rankManager.getInviteRankToday(30); }else if(type == 4){ @@ -152,6 +191,8 @@ public class RankAppController { invite.setAvatar(GenderEnum.WOMEN.getDefaultAvatar()); invite.setNickname(minNickname(user.getNickname())); invite.setValue(rankNode.getScore()); + invite.setDraw(rankNode.getDraw()); + invite.setRankId(rankNode.getRankId()); if(i == 0){ invite.setDiffLastValue(0L); }else{ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Rank.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Rank.java index 6f7ba750..448f39d8 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Rank.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Rank.java @@ -26,7 +26,7 @@ public class Rank implements Serializable { * */ @TableId(value = "id") - private Integer id; + private Long id; /** * 类型 1-魅力榜 2-邀请榜 */ @@ -43,6 +43,7 @@ public class Rank implements Serializable { private LocalDate rankBeginTime; private LocalDate rankEndTime; private Integer orderRank; + private Long traceId; /** * 数值 */ @@ -54,5 +55,5 @@ public class Rank implements Serializable { /** * 是否领取奖励 */ - private boolean draw; + private Boolean draw; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/RankIdReq.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/RankIdReq.java new file mode 100644 index 00000000..f0dfa42e --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/RankIdReq.java @@ -0,0 +1,13 @@ +package com.ruoyi.cai.dto.app; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class RankIdReq { + @Schema(description = "rankId") + @NotNull(message = "参数异常") + private Long rankId; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeInvite.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeInvite.java index 440cc746..ce47b8b0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeInvite.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeInvite.java @@ -14,6 +14,8 @@ public class RankNodeInvite { private Long value; @Schema(description = "距离上一名差距") private Long diffLastValue; - @Schema(description = "是否已经领取奖励(该字段仅限昨日榜单有用)") + @Schema(description = "是否已经领取奖励(该字段仅限昨日榜单,上周榜单有用)") private boolean draw = true; + @Schema(description = "榜单ID,领取榜单使用") + private Long rankId; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeLove.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeLove.java index 5fac40a9..16cf6ccf 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeLove.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankNodeLove.java @@ -19,6 +19,8 @@ public class RankNodeLove { private Long diffLastValue; @Schema(description = "是否开启隐身模式") private boolean hide; - @Schema(description = "是否已经领取奖励(该字段仅限昨日榜单有用)") + @Schema(description = "是否已经领取奖励(该字段仅限昨日榜单,上周榜单有用)") private boolean draw = true; + @Schema(description = "榜单ID,领取榜单使用") + private Long rankId; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankLoveRemark.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankRemark.java similarity index 76% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankLoveRemark.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankRemark.java index 7952dd42..e52769f8 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankLoveRemark.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/rank/RankRemark.java @@ -3,7 +3,7 @@ package com.ruoyi.cai.dto.app.vo.rank; import lombok.Data; @Data -public class RankLoveRemark { +public class RankRemark { private String remark; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java index c0432580..33fefbc4 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/SystemConfigEnum.java @@ -9,6 +9,10 @@ import lombok.Getter; * @author ZL */ public enum SystemConfigEnum { + RANK_LOVE_DAY_AWARD("138,,108,88,58,38,28,28,28,28,28,28", "魅力榜日榜奖励",SystemConfigGroupEnum.BUSINESS), + RANK_LOVE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "魅力榜周榜奖励",SystemConfigGroupEnum.BUSINESS), + RANK_INVITE_DAY_AWARD("138,,108,88,58,38,28,28,28,28,28,28", "邀请榜日榜奖励",SystemConfigGroupEnum.BUSINESS), + RANK_INVITE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "邀请榜周榜奖励",SystemConfigGroupEnum.BUSINESS), REGISTER_AWARD("88", "注册奖励",SystemConfigGroupEnum.BUSINESS), FAST_PAY_AWARD("300", "首充奖励",SystemConfigGroupEnum.BUSINESS), GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java index f6b44f7b..8c6497b7 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/account/AccountChangeCodeEnum.java @@ -24,7 +24,7 @@ public enum AccountChangeCodeEnum { GIFT_INVITE(504,AccountCateEnum.SYSTEM,"邀请奖励(礼物)",AccountTypeEnum.INCOME_COIN,"",true), GUARD_INVITE(505,AccountCateEnum.SYSTEM,"邀请奖励(守护)",AccountTypeEnum.INCOME_COIN,"",true), REGISTER_AWARD(506,AccountCateEnum.SYSTEM,"注册奖励",AccountTypeEnum.INCOME_COIN,"",null), - RAKE_AWARD(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null), + RANK_AWARD(507,AccountCateEnum.SYSTEM,"排行榜奖励",AccountTypeEnum.INCOME_COIN,"",null), IM_INCOME(701,AccountCateEnum.IM,"收到私信",AccountTypeEnum.INCOME_COIN,"",true), IM_COIN_OUT(702,AccountCateEnum.IM,"私信支出",AccountTypeEnum.COIN,"",false), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java index eb3583ff..3914c13c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/AwardManager.java @@ -2,6 +2,7 @@ package com.ruoyi.cai.manager; import cn.hutool.extra.spring.SpringUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.UserInfo; import com.ruoyi.cai.enums.SystemConfigEnum; @@ -9,8 +10,11 @@ import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; import com.ruoyi.cai.executor.ExecutorConstant; import com.ruoyi.cai.mapper.AccountMapper; import com.ruoyi.cai.service.AccountChangeLogService; +import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.UserInfoService; import com.ruoyi.cai.service.UserService; +import com.ruoyi.cai.util.CaiDateUtil; +import com.ruoyi.common.exception.ServiceException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +22,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDate; @Component @Slf4j @@ -33,6 +38,8 @@ public class AwardManager { private UserService userService; @Autowired private UserInfoService userInfoService; + @Autowired + private RankService rankService; public void giveRegisterAsync(Long userId){ AwardManager bean = SpringUtil.getBean(AwardManager.class); @@ -89,4 +96,31 @@ public class AwardManager { accountMapper.incsIncomeCoin(userId,price); accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.FAST_PAY_AWARD,price,traceId); } + + + public void giveRank(Long rankId,Long userId){ + Rank rank = rankService.getById(rankId); + if(rank == null){ + throw new ServiceException("领取失败,奖励不存在"); + } + if(!rank.getUserId().equals(userId)){ + throw new ServiceException("只能领取自己的奖励哦"); + } + if(rank.getOrderRank() > 10){ + throw new ServiceException("只有前10名可以领取奖励"); + } + if(rank.getDataType().equals(1)){ // 日榜 + LocalDate lastDay = LocalDate.now().plusDays(-1); + if(!rank.getRankBeginTime().equals(lastDay)){ + throw new ServiceException("领奖时间已过"); + } + rankService.giveRank(rankId); + }else if(rank.getDataType().equals(2)){ // 周榜 + LocalDate date = CaiDateUtil.getLastWeekOne(LocalDate.now()); + if(!rank.getRankBeginTime().equals(date)){ + throw new ServiceException("领奖时间已过"); + } + rankService.giveRank(rankId); + } + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/rank/RankNode.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/rank/RankNode.java index 41b3e2d5..71a2ea7f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/rank/RankNode.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/rank/RankNode.java @@ -7,6 +7,8 @@ import org.redisson.client.protocol.ScoredEntry; public class RankNode { private Long score; private Long userId; + private Long rankId; + private Boolean draw; public RankNode() { } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/RankService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/RankService.java index f0c84028..8974f4e6 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/RankService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/RankService.java @@ -2,8 +2,10 @@ package com.ruoyi.cai.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.Rank; +import com.ruoyi.cai.rank.RankNode; import java.time.LocalDate; +import java.util.List; /** * 榜单Service接口 @@ -18,4 +20,14 @@ public interface RankService extends IService { void saveWeekRank(LocalDate date,Integer type); void saveMonthRank(LocalDate date,Integer type); + + void giveRank(Long rankId); + + List getLoveRankLastWeek(int limit); + + List getLoveRankLastDay(int limit); + + List getInviteRankLastWeek(int limit); + + List getInviteRankLastDay(int limit); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RankServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RankServiceImpl.java index c1f17722..049b86e9 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RankServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/RankServiceImpl.java @@ -1,25 +1,37 @@ package com.ruoyi.cai.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.Rank; +import com.ruoyi.cai.domain.User; +import com.ruoyi.cai.enums.SystemConfigEnum; +import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; +import com.ruoyi.cai.manager.IdManager; +import com.ruoyi.cai.manager.SystemConfigManager; +import com.ruoyi.cai.mapper.AccountMapper; import com.ruoyi.cai.mapper.RankMapper; import com.ruoyi.cai.rank.RankManager; import com.ruoyi.cai.rank.RankNode; +import com.ruoyi.cai.service.AccountChangeLogService; import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.UserService; +import com.ruoyi.cai.util.CaiDateUtil; import com.ruoyi.common.exception.ServiceException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; /** * 榜单Service业务层处理 @@ -36,6 +48,12 @@ public class RankServiceImpl extends ServiceImpl implements Ran private RankManager rankManager; @Autowired private UserService userService; + @Resource + private AccountMapper accountMapper; + @Autowired + private SystemConfigManager systemConfigManager; + @Autowired + private AccountChangeLogService accountChangeLogService; @Override public void saveDayRank(LocalDate date, Integer type) { @@ -190,4 +208,127 @@ public class RankServiceImpl extends ServiceImpl implements Ran lock.unlock(); } } + + @Override + @Transactional(rollbackFor = Exception.class) + public void giveRank(Long rankId) { + Rank rank = this.getById(rankId); + if(rank == null){ + throw new ServiceException("领取失败,请联系客服"); + } + User user = userService.getById(rank.getUserId()); + if(user == null){ + throw new ServiceException("用户不存在"); + } + List priceList = null; + if(rank.getType().equals(1)){ // 魅力 + if(rank.getDataType().equals(1)){ + priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_LOVE_DAY_AWARD); + }else if(rank.getDataType().equals(2)){ + priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_LOVE_WEEK_AWARD); + } + }else if(rank.getType().equals(2)){ // 邀请 + if(rank.getDataType().equals(1)){ + priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_INVITE_DAY_AWARD); + }else if(rank.getDataType().equals(2)){ + priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_INVITE_WEEK_AWARD); + } + } + if(priceList == null){ + throw new ServiceException("领取失败,请联系客服"); + } + Long traceId = IdManager.nextId(); + boolean update = this.update(Wrappers.lambdaUpdate(Rank.class) + .eq(Rank::getId, rankId) + .eq(Rank::getDraw, false) + .set(Rank::getTraceId,traceId) + .set(Rank::getDraw, true)); + if(!update){ + throw new ServiceException("您已经领取奖励哦"); + } + String priceStr = priceList.get(rank.getOrderRank() - 1); + Long price = Long.valueOf(priceStr); + accountMapper.incsIncomeCoin(rank.getUserId(),price); + accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.RANK_AWARD,price,traceId); + } + + @Override + public List getLoveRankLastWeek(int limit) { + LocalDate beginDate = CaiDateUtil.getLastWeekOne(LocalDate.now()); + List list = this.list(Wrappers.lambdaQuery(Rank.class) + .eq(Rank::getRankBeginTime, beginDate) + .eq(Rank::getType, 1) + .eq(Rank::getDataType, 2) + .le(Rank::getOrderRank,limit) + .orderByDesc(Rank::getOrderRank) + .last("limit " + limit)); + return list.stream().map(i -> { + RankNode rankNode = new RankNode(); + rankNode.setScore(i.getNum()); + rankNode.setUserId(i.getUserId()); + rankNode.setRankId(i.getId()); + rankNode.setDraw(i.getDraw()); + return rankNode; + }).collect(Collectors.toList()); + } + + @Override + public List getLoveRankLastDay(int limit) { + LocalDate beginDate = LocalDate.now().plusDays(-1); + List list = this.list(Wrappers.lambdaQuery(Rank.class) + .eq(Rank::getRankBeginTime, beginDate) + .eq(Rank::getType, 1) + .eq(Rank::getDataType, 1) + .le(Rank::getOrderRank,limit) + .orderByDesc(Rank::getOrderRank) + .last("limit " + limit)); + return list.stream().map(i -> { + RankNode rankNode = new RankNode(); + rankNode.setScore(i.getNum()); + rankNode.setUserId(i.getUserId()); + rankNode.setRankId(i.getId()); + rankNode.setDraw(i.getDraw()); + return rankNode; + }).collect(Collectors.toList()); + } + + @Override + public List getInviteRankLastWeek(int limit) { + LocalDate beginDate = CaiDateUtil.getLastWeekOne(LocalDate.now()); + List list = this.list(Wrappers.lambdaQuery(Rank.class) + .eq(Rank::getRankBeginTime, beginDate) + .eq(Rank::getType, 2) + .eq(Rank::getDataType, 2) + .le(Rank::getOrderRank,limit) + .orderByDesc(Rank::getOrderRank) + .last("limit " + limit)); + return list.stream().map(i -> { + RankNode rankNode = new RankNode(); + rankNode.setScore(i.getNum()); + rankNode.setUserId(i.getUserId()); + rankNode.setRankId(i.getId()); + rankNode.setDraw(i.getDraw()); + return rankNode; + }).collect(Collectors.toList()); + } + + @Override + public List getInviteRankLastDay(int limit) { + LocalDate beginDate = LocalDate.now().plusDays(-1); + List list = this.list(Wrappers.lambdaQuery(Rank.class) + .eq(Rank::getRankBeginTime, beginDate) + .eq(Rank::getType, 2) + .eq(Rank::getDataType, 1) + .le(Rank::getOrderRank,limit) + .orderByDesc(Rank::getOrderRank) + .last("limit " + limit)); + return list.stream().map(i -> { + RankNode rankNode = new RankNode(); + rankNode.setScore(i.getNum()); + rankNode.setUserId(i.getUserId()); + rankNode.setRankId(i.getId()); + rankNode.setDraw(i.getDraw()); + return rankNode; + }).collect(Collectors.toList()); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/util/CaiDateUtil.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/CaiDateUtil.java new file mode 100644 index 00000000..23b345a2 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/CaiDateUtil.java @@ -0,0 +1,22 @@ +package com.ruoyi.cai.util; + + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAdjusters; + +public class CaiDateUtil { + + + public static LocalDate getLastWeekOne(LocalDate date){ + return date.plusWeeks(-1) + .with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); + } + + public static void main(String[] args) { + LocalDate one = getLastWeekOne(LocalDate.now()); + System.out.println(one.format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + +}