This commit is contained in:
dute7liang
2024-01-20 18:11:05 +08:00
parent a1fbc045a1
commit 414c176cef
6 changed files with 122 additions and 26 deletions

View File

@@ -23,15 +23,15 @@ public class CaiUnitTest {
@Test
public void rank(){
List<RankNode> nodes = rankManager.getLoveRankDayToday(9);
List<RankNode> nodes = rankManager.getLoveRankToday(9);
for (RankNode node : nodes) {
log.info("userId={}, score={}", node.getUserId(),node.getScore());
}
nodes = rankManager.getLoveRankDayLastDay(9);
nodes = rankManager.getLoveRankLastDay(9);
for (RankNode node : nodes) {
log.info("userId={}, score={}", node.getUserId(),node.getScore());
}
nodes = rankManager.getInviteRankDayToday(9);
nodes = rankManager.getInviteRankToday(9);
for (RankNode node : nodes) {
log.info("userId={}, score={}", node.getUserId(),node.getScore());
}

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cai.controller;
package com.ruoyi.cai.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;

View File

@@ -1,6 +1,7 @@
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.vo.rank.RankNodeInvite;
import com.ruoyi.cai.dto.app.vo.rank.RankNodeLove;
import com.ruoyi.cai.enums.GenderEnum;
@@ -24,13 +25,38 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/rank")
@Tag(name = "排行榜接口")
public class RankController {
public class RankAppController {
@Autowired
private RankManager rankManager;
@Autowired
private UserService userService;
@GetMapping("/loveRemark")
@Operation(summary = "榜单说明")
public R<RankLoveRemark> remark(){
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" +
"提示:凡是刷魅力榜的封号,平台拥有对本次活动的最终解释权。";
RankLoveRemark res = new RankLoveRemark();
res.setRemark(remark);
return R.ok(res);
}
@GetMapping("/love")
@Operation(summary = "魅力榜")
public R<List<RankNodeLove>> loveRank(
@@ -38,17 +64,17 @@ public class RankController {
if(type == null){
return R.ok(Collections.emptyList());
}
List<RankNode> rankNodeList = null;
List<RankNode> rankNodeList;
if(type == 1){
rankNodeList = rankManager.getLoveRankDayLastWeek(10);
rankNodeList = rankManager.getLoveRankLastWeek(10);
}else if(type == 2){
rankNodeList = rankManager.getLoveRankDayLastDay(10);
rankNodeList = rankManager.getLoveRankLastDay(10);
}else if(type == 3){
rankNodeList = rankManager.getLoveRankDayToday(30);
rankNodeList = rankManager.getLoveRankToday(30);
}else if(type == 4){
rankNodeList = rankManager.getLoveRankDayWeek(30);
rankNodeList = rankManager.getLoveRankWeek(30);
}else if(type == 5){
rankNodeList = rankManager.getLoveRankDayMonth(30);
rankNodeList = rankManager.getLoveRankMonth(30);
}else if(type == 6){
rankNodeList = rankManager.getLoveRankTotal(30);
}else{
@@ -94,15 +120,15 @@ public class RankController {
}
List<RankNode> rankNodeList;
if(type == 1){
rankNodeList = rankManager.getInviteRankDayLastWeek(10);
rankNodeList = rankManager.getInviteRankLastWeek(10);
}else if(type == 2){
rankNodeList = rankManager.getInviteRankDayLastDay(10);
rankNodeList = rankManager.getInviteRankLastDay(10);
}else if(type == 3){
rankNodeList = rankManager.getInviteRankDayToday(30);
rankNodeList = rankManager.getInviteRankToday(30);
}else if(type == 4){
rankNodeList = rankManager.getInviteRankDayWeek(30);
rankNodeList = rankManager.getInviteRankWeek(30);
}else if(type == 5){
rankNodeList = rankManager.getInviteRankDayMonth(30);
rankNodeList = rankManager.getInviteRankMonth(30);
}else if(type == 6){
rankNodeList = rankManager.getInviteRankTotal(30);
}else{

View File

@@ -0,0 +1,9 @@
package com.ruoyi.cai.dto.app.vo.rank;
import lombok.Data;
@Data
public class RankLoveRemark {
private String remark;
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.cai.job;
import com.ruoyi.cai.service.RankService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Component
@Slf4j
public class RankJob {
@Autowired
private RankService rankService;
public void persistentDb() {
LocalDate date = LocalDateTime.now().plusDays(-1).toLocalDate();
try {
rankService.saveDayRank(date,1);
} catch (Exception e) {
log.error("保存魅力 日榜失败", e);
}
try {
rankService.saveDayRank(date,2);
} catch (Exception e) {
log.error("保存邀请 日榜失败", e);
}
DayOfWeek week = date.getDayOfWeek();
if (week.getValue() == 1) { // 昨天是周一 做一下持久化
try {
rankService.saveWeekRank(date,1);
} catch (Exception e) {
log.error("保存魅力 周榜失败", e);
}
try {
rankService.saveWeekRank(date,2);
} catch (Exception e) {
log.error("保存邀请 周榜失败", e);
}
}
int month = date.getDayOfMonth();
if (month == 1) { // 昨天是1号
try {
rankService.saveMonthRank(date,1);
} catch (Exception e) {
log.error("保存魅力 月榜失败", e);
}
try {
rankService.saveMonthRank(date,2);
} catch (Exception e) {
log.error("保存邀请 月榜失败", e);
}
}
}
}

View File

@@ -123,20 +123,20 @@ public class RankManager {
}
public List<RankNode> getLoveRankDayLastDay(int limit){
public List<RankNode> getLoveRankLastDay(int limit){
return getLoveRankDay(LocalDate.now().plusDays(-1),limit);
}
public List<RankNode> getLoveRankDayLastWeek(int limit){
public List<RankNode> getLoveRankLastWeek(int limit){
return getLoveRankWeek(LocalDate.now().plusWeeks(-7),limit);
}
public List<RankNode> getLoveRankDayToday(int limit){
public List<RankNode> getLoveRankToday(int limit){
return getLoveRankDay(LocalDate.now(),limit);
}
public List<RankNode> getLoveRankDayWeek(int limit){
public List<RankNode> getLoveRankWeek(int limit){
return getLoveRankWeek(LocalDate.now(),limit);
}
public List<RankNode> getLoveRankDayMonth(int limit){
public List<RankNode> getLoveRankMonth(int limit){
return getLoveRankMonth(LocalDate.now(),limit);
}
@@ -184,20 +184,20 @@ public class RankManager {
return res;
}
public List<RankNode> getInviteRankDayLastDay(int limit){
public List<RankNode> getInviteRankLastDay(int limit){
return getInviteRankDay(LocalDate.now().plusDays(-1),limit);
}
public List<RankNode> getInviteRankDayLastWeek(int limit){
public List<RankNode> getInviteRankLastWeek(int limit){
return getInviteRankWeek(LocalDate.now().plusWeeks(-7),limit);
}
public List<RankNode> getInviteRankDayToday(int limit){
public List<RankNode> getInviteRankToday(int limit){
return getInviteRankDay(LocalDate.now(),limit);
}
public List<RankNode> getInviteRankDayWeek(int limit){
public List<RankNode> getInviteRankWeek(int limit){
return getInviteRankWeek(LocalDate.now(),limit);
}
public List<RankNode> getInviteRankDayMonth(int limit){
public List<RankNode> getInviteRankMonth(int limit){
return getInviteRankMonth(LocalDate.now(),limit);
}