From 8768134db77ee576321b400f740b76c289fc059e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Wed, 20 Mar 2024 16:25:47 +0800 Subject: [PATCH] 123 --- .../controller/cai/app/RankAppController.java | 12 +++- .../main/java/com/ruoyi/cai/domain/Rank.java | 4 ++ .../cai/dto/app/vo/rank/RankNodeInvite.java | 2 + .../cai/dto/app/vo/rank/RankNodeLove.java | 2 + .../cai/enums/rank/RankDataTypeEnum.java | 18 ++++++ .../ruoyi/cai/enums/rank/RankTypeEnum.java | 18 ++++++ .../java/com/ruoyi/cai/rank/RankNode.java | 1 + .../cai/service/impl/RankServiceImpl.java | 61 +++++++++++++------ 8 files changed, 96 insertions(+), 22 deletions(-) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankDataTypeEnum.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankTypeEnum.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/RankAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/RankAppController.java index a3d7742a..5951c7a4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/RankAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/RankAppController.java @@ -140,6 +140,7 @@ public class RankAppController { love.setNickname(user.getNickname()); love.setValue(rankNode.getScore()); love.setDraw(rankNode.getDraw() == null || rankNode.getDraw()); + love.setRankAwardValue(rankNode.getRankAwardValue()); love.setRankId(rankNode.getRankId()); love.setHide(false); if(i == 0){ @@ -180,6 +181,7 @@ public class RankAppController { if(rankNodeList.isEmpty()){ return R.ok(Collections.emptyList()); } + Long userId = LoginHelper.getUserId(); List res = new ArrayList<>(); Set userIds = rankNodeList.stream().map(RankNode::getUserId).collect(Collectors.toSet()); List userList = userService.listByIds(userIds); @@ -192,10 +194,16 @@ public class RankAppController { continue; } RankNodeInvite invite = new RankNodeInvite(); - invite.setAvatar(GenderEnum.WOMEN.getDefaultAvatar()); - invite.setNickname(minNickname(user.getNickname())); + if(user.getId().equals(userId)){ + invite.setAvatar(user.getAvatar()); + invite.setNickname(user.getNickname()); + }else{ + invite.setAvatar(GenderEnum.WOMEN.getDefaultAvatar()); + invite.setNickname(minNickname(user.getNickname())); + } invite.setValue(rankNode.getScore()); invite.setDraw(rankNode.getDraw() == null || rankNode.getDraw()); + invite.setRankAwardValue(rankNode.getRankAwardValue()); invite.setRankId(rankNode.getRankId()); if(i == 0){ invite.setDiffLastValue(0L); 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 ba9ee037..0e6a3fe3 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 @@ -60,4 +60,8 @@ public class Rank implements Serializable { * 是否领取奖励 */ private Boolean draw; + /** + * 排行奖励 + */ + private Long rankAwardValue; } 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 ce47b8b0..1ebaf5db 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 @@ -18,4 +18,6 @@ public class RankNodeInvite { private boolean draw = true; @Schema(description = "榜单ID,领取榜单使用") private Long rankId; + @Schema(description = "排行榜奖励数值(该字段仅限昨日榜单,上周榜单有用)") + private Long rankAwardValue; } 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 16cf6ccf..4cc5db80 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 @@ -23,4 +23,6 @@ public class RankNodeLove { private boolean draw = true; @Schema(description = "榜单ID,领取榜单使用") private Long rankId; + @Schema(description = "排行榜奖励数值(该字段仅限昨日榜单,上周榜单有用)") + private Long rankAwardValue; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankDataTypeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankDataTypeEnum.java new file mode 100644 index 00000000..55aa7f17 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankDataTypeEnum.java @@ -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; + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankTypeEnum.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankTypeEnum.java new file mode 100644 index 00000000..854232f4 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/enums/rank/RankTypeEnum.java @@ -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; + } +} 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 71a2ea7f..839db11c 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 @@ -9,6 +9,7 @@ public class RankNode { private Long userId; private Long rankId; private Boolean draw; + private Long rankAwardValue; public RankNode() { } 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 55b5dacd..4408c7bb 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,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 implements Ran @Autowired private AccountChangeLogService accountChangeLogService; + private List getRankValue(Integer rankType, Integer dataType){ + List 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 rank; @@ -88,6 +108,7 @@ public class RankServiceImpl extends ServiceImpl implements Ran log.error("本期榜单已经持久化 date={},type={}",date,type); return; } + List rankValue = getRankValue(type, RankDataTypeEnum.DAY.getCode()); List 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 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 implements Ran log.error("本期榜单已经持久化 date={},type={}",date,type); return; } + List rankValue = getRankValue(type, RankDataTypeEnum.DAY.getCode()); List 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 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 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 implements Ran 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){ + if(rank.getRankAwardValue() == null || rank.getRankAwardValue() <= 0){ throw new ServiceException("领取失败,请联系客服"); } Long traceId = IdManager.nextId(); @@ -249,10 +268,8 @@ public class RankServiceImpl extends ServiceImpl 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 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 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 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 implements Ran rankNode.setUserId(i.getUserId()); rankNode.setRankId(i.getId()); rankNode.setDraw(i.getDraw()); + rankNode.setRankAwardValue(i.getRankAwardValue()); return rankNode; }).collect(Collectors.toList()); }