This commit is contained in:
张良(004796)
2024-03-20 16:25:47 +08:00
parent 56df980731
commit 8768134db7
8 changed files with 96 additions and 22 deletions

View File

@@ -60,4 +60,8 @@ public class Rank implements Serializable {
* 是否领取奖励
*/
private Boolean draw;
/**
* 排行奖励
*/
private Long rankAwardValue;
}

View File

@@ -18,4 +18,6 @@ public class RankNodeInvite {
private boolean draw = true;
@Schema(description = "榜单ID领取榜单使用")
private Long rankId;
@Schema(description = "排行榜奖励数值(该字段仅限昨日榜单,上周榜单有用)")
private Long rankAwardValue;
}

View File

@@ -23,4 +23,6 @@ public class RankNodeLove {
private boolean draw = true;
@Schema(description = "榜单ID领取榜单使用")
private Long rankId;
@Schema(description = "排行榜奖励数值(该字段仅限昨日榜单,上周榜单有用)")
private Long rankAwardValue;
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cai.enums.rank;
import lombok.Getter;
@Getter
public enum RankDataTypeEnum {
DAY(1,"日榜"),
WEEK(2,"周榜"),
MONTH(3,"月榜"),
;
private final Integer code;
private final String text;
RankDataTypeEnum(Integer code, String text) {
this.code = code;
this.text = text;
}
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cai.enums.rank;
import com.sun.org.apache.bcel.internal.generic.IFNE;
import lombok.Getter;
@Getter
public enum RankTypeEnum {
LOVE(1,"魅力榜"),
INVITE(2,"邀请榜"),
;
private final Integer code;
private final String text;
RankTypeEnum(Integer code, String text) {
this.code = code;
this.text = text;
}
}

View File

@@ -9,6 +9,7 @@ public class RankNode {
private Long userId;
private Long rankId;
private Boolean draw;
private Long rankAwardValue;
public RankNode() {
}

View File

@@ -1,7 +1,6 @@
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.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,6 +9,8 @@ import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.RankAdminVo;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.enums.rank.RankDataTypeEnum;
import com.ruoyi.cai.enums.rank.RankTypeEnum;
import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.AccountMapper;
@@ -58,6 +59,25 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
@Autowired
private AccountChangeLogService accountChangeLogService;
private List<Long> getRankValue(Integer rankType, Integer dataType){
List<String> priceList = new ArrayList<>();
if(RankTypeEnum.LOVE.getCode().equals(rankType)){
if(RankDataTypeEnum.DAY.getCode().equals(dataType)){
priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_LOVE_DAY_AWARD);
}else if(RankDataTypeEnum.WEEK.getCode().equals(dataType)){
priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_LOVE_WEEK_AWARD);
}
}else if(RankTypeEnum.INVITE.getCode().equals(rankType)){
if(RankDataTypeEnum.DAY.getCode().equals(dataType)){
priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_INVITE_DAY_AWARD);
}else if(RankDataTypeEnum.WEEK.getCode().equals(dataType)){
priceList = systemConfigManager.getSystemConfigOfList(SystemConfigEnum.RANK_INVITE_WEEK_AWARD);
}
}
return priceList.stream().map(Long::valueOf).collect(Collectors.toList());
}
@Override
public void saveDayRank(LocalDate date, Integer type) {
List<RankNode> rank;
@@ -88,6 +108,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
log.error("本期榜单已经持久化 date={},type={}",date,type);
return;
}
List<Long> rankValue = getRankValue(type, RankDataTypeEnum.DAY.getCode());
List<Rank> res = new ArrayList<>();
for (int i = 0; i < rank.size(); i++) {
RankNode rankNode = rank.get(i);
@@ -100,6 +121,11 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
db.setOrderRank(i+1);
db.setNum(rankNode.getScore());
db.setUserId(rankNode.getUserId());
if(i < 10){
db.setRankAwardValue(rankValue.get(i));
}else{
db.setRankAwardValue(0L);
}
res.add(db);
}
this.saveBatch(res);
@@ -139,6 +165,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
log.error("本期榜单已经持久化 date={},type={}",date,type);
return;
}
List<Long> rankValue = getRankValue(type, RankDataTypeEnum.DAY.getCode());
List<Rank> res = new ArrayList<>();
LocalDate endDate = date.plusDays(7);
String rankTime = date.format(DateTimeFormatter.ofPattern("yyyyMMdd")) +"-"+endDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
@@ -153,6 +180,11 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
db.setOrderRank(i+1);
db.setNum(rankNode.getScore());
db.setUserId(rankNode.getUserId());
if(i < 10){
db.setRankAwardValue(rankValue.get(i));
}else{
db.setRankAwardValue(0L);
}
res.add(db);
}
this.saveBatch(res);
@@ -204,6 +236,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
db.setOrderRank(i+1);
db.setNum(rankNode.getScore());
db.setUserId(rankNode.getUserId());
db.setRankAwardValue(0L);
res.add(db);
}
this.saveBatch(res);
@@ -223,21 +256,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
if(user == null){
throw new ServiceException("用户不存在");
}
List<String> 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){
if(rank.getRankAwardValue() == null || rank.getRankAwardValue() <= 0){
throw new ServiceException("领取失败,请联系客服");
}
Long traceId = IdManager.nextId();
@@ -249,10 +268,8 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
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);
accountMapper.incsIncomeCoin(rank.getUserId(),rank.getRankAwardValue());
accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), AccountChangeCodeEnum.RANK_AWARD,rank.getRankAwardValue(),traceId);
}
@Override
@@ -271,6 +288,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
rankNode.setUserId(i.getUserId());
rankNode.setRankId(i.getId());
rankNode.setDraw(i.getDraw());
rankNode.setRankAwardValue(i.getRankAwardValue());
return rankNode;
}).collect(Collectors.toList());
}
@@ -291,6 +309,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
rankNode.setUserId(i.getUserId());
rankNode.setRankId(i.getId());
rankNode.setDraw(i.getDraw());
rankNode.setRankAwardValue(i.getRankAwardValue());
return rankNode;
}).collect(Collectors.toList());
}
@@ -311,6 +330,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
rankNode.setUserId(i.getUserId());
rankNode.setRankId(i.getId());
rankNode.setDraw(i.getDraw());
rankNode.setRankAwardValue(i.getRankAwardValue());
return rankNode;
}).collect(Collectors.toList());
}
@@ -331,6 +351,7 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
rankNode.setUserId(i.getUserId());
rankNode.setRankId(i.getId());
rankNode.setDraw(i.getDraw());
rankNode.setRankAwardValue(i.getRankAwardValue());
return rankNode;
}).collect(Collectors.toList());
}