This commit is contained in:
张良(004796)
2024-02-04 18:52:07 +08:00
parent 684216368c
commit 9e29c5f321
22 changed files with 700 additions and 11 deletions

View File

@@ -0,0 +1,146 @@
package com.ruoyi.cai.manager;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.cache.RechargeTotalCache;
import com.ruoyi.cai.cache.WithdrawTotalCache;
import com.ruoyi.cai.cache.bean.RechargeTotalCacheBean;
import com.ruoyi.cai.cache.bean.WithdrawTotalCacheBean;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.admin.vo.home.HomeStaticIndexVo;
import com.ruoyi.cai.dto.admin.vo.rank.RankNodeAdminVo;
import com.ruoyi.cai.enums.rank.RankTimeTypeEnum;
import com.ruoyi.cai.rank.RankAdminManager;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.rank.RankNode;
import com.ruoyi.cai.rank.bean.RankAdminNode;
import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.util.CaiNumUtil;
import com.ruoyi.framework.OnlineUserTodayCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Component
public class AdminHomeManager {
@Autowired
private OnlineUserTodayCache onlineUserTodayCache;
@Autowired
private AnchorService anchorService;
@Autowired
private RechargeTotalCache rechargeTotalCache;
@Autowired
private WithdrawTotalCache withdrawTotalCache;
@Autowired
private RankAdminManager rankAdminManager;
@Autowired
private RankManager rankManager;
@Autowired
private UserService userService;
/**
* @param rankType 1-魅力榜 2-邀请榜 3-充值榜 4-提现榜
* @param rankTimeType
*/
public List<RankNodeAdminVo> rank(Integer rankType, RankTimeTypeEnum rankTimeType){
if(rankType == null || rankTimeType == null){
return Collections.emptyList();
}
List<RankNodeAdminVo> res = new ArrayList<>();
List<RankNode> rankNodeList;
if(rankType == 1){
if(rankTimeType == RankTimeTypeEnum.DAY){
rankNodeList = rankManager.getInviteRankToday(30);
}else if(rankTimeType == RankTimeTypeEnum.WEEK){
rankNodeList = rankManager.getInviteRankWeek(30);
}else if(rankTimeType == RankTimeTypeEnum.MONTH){
rankNodeList = rankManager.getInviteRankMonth(30);
}else if(rankTimeType == RankTimeTypeEnum.TOTAL){
rankNodeList = rankManager.getInviteRankTotal(30);
}else{
rankNodeList = Collections.emptyList();
}
res = rankNodeList.stream().map(i -> {
RankNodeAdminVo vo = new RankNodeAdminVo();
vo.setUserId(i.getUserId());
vo.setValue(i.getScore());
return vo;
}).collect(Collectors.toList());
}else if(rankType == 2){
if(rankTimeType == RankTimeTypeEnum.DAY){
rankNodeList = rankManager.getLoveRankToday(30);
}else if(rankTimeType == RankTimeTypeEnum.WEEK){
rankNodeList = rankManager.getLoveRankWeek(30);
}else if(rankTimeType == RankTimeTypeEnum.MONTH){
rankNodeList = rankManager.getLoveRankMonth(30);
}else if(rankTimeType == RankTimeTypeEnum.TOTAL){
rankNodeList = rankManager.getLoveRankTotal(30);
}else{
rankNodeList = Collections.emptyList();
}
res = rankNodeList.stream().map(i -> {
RankNodeAdminVo vo = new RankNodeAdminVo();
vo.setUserId(i.getUserId());
vo.setValue(i.getScore());
return vo;
}).collect(Collectors.toList());
}else if(rankType == 3){
List<RankAdminNode> rank = rankAdminManager.getRechargeRank(LocalDate.now(), rankTimeType, 30);
res = rank.stream().map(i -> {
RankNodeAdminVo vo = new RankNodeAdminVo();
vo.setUserId(i.getUserId());
vo.setValue(i.getScore());
return vo;
}).collect(Collectors.toList());
}else if(rankType == 4){
List<RankAdminNode> rank = rankAdminManager.getWithdrawRank(LocalDate.now(), rankTimeType, 30);
res = rank.stream().map(i -> {
RankNodeAdminVo vo = new RankNodeAdminVo();
vo.setUserId(i.getUserId());
vo.setValue(i.getScore());
return vo;
}).collect(Collectors.toList());
}
if(CollectionUtils.isEmpty(res)){
return res;
}
Set<Long> userIds = res.stream().map(RankNodeAdminVo::getUserId).collect(Collectors.toSet());
List<User> userList = userService.listByIds(userIds);
Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
for (RankNodeAdminVo re : res) {
User user = userMap.get(re.getUserId());
if(user != null){
re.setUsercode(user.getUsercode());
re.setNickname(user.getNickname());
re.setAvatar(user.getAvatar());
}
}
return res;
}
public HomeStaticIndexVo staticIndex(){
Long onlineTodayNum = onlineUserTodayCache.getOnlineTodayNum();
Long onlineLastNum = onlineUserTodayCache.getOnlineLastNum();
HomeStaticIndexVo vo = new HomeStaticIndexVo();
vo.setTodayLoginNum(onlineTodayNum);
vo.setTodayLoginDiffLast(CaiNumUtil.diffRate(onlineTodayNum,onlineLastNum));
vo.setAnchorNum(anchorService.count(Wrappers.emptyWrapper()));
RechargeTotalCacheBean todayRecharge = rechargeTotalCache.getToday();
RechargeTotalCacheBean lastTodayRecharge = rechargeTotalCache.getLastToday();
vo.setTodayRechargeAmountNum(todayRecharge.getAmount());
vo.setTodayRechargeNum(todayRecharge.getNum());
vo.setTodayRechargeAmountDiffLast(CaiNumUtil.diffRate(todayRecharge.getAmount(),lastTodayRecharge.getAmount()));
WithdrawTotalCacheBean todayWithdraw = withdrawTotalCache.getToday();
WithdrawTotalCacheBean lastTodayWithdraw = withdrawTotalCache.getLastToday();
vo.setTodayWithdrawAmount(todayWithdraw.getAmount());
vo.setTodayWithdrawNum(todayWithdraw.getNum());
vo.setTodayWithdrawAmountDiffLast(CaiNumUtil.diffRate(todayWithdraw.getAmount(),lastTodayWithdraw.getAmount()));
return vo;
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.manager;
import com.ruoyi.cai.cache.RechargeTotalCache;
import com.ruoyi.cai.domain.Account;
import com.ruoyi.cai.domain.ConsumeLog;
import com.ruoyi.cai.domain.Gift;
@@ -16,7 +17,9 @@ import com.ruoyi.cai.mq.handle.dto.WindowGiftNotifyDTO;
import com.ruoyi.cai.mq.handle.dto.WindowRechargeNotifyDTO;
import com.ruoyi.cai.notice.YunxinHttpService;
import com.ruoyi.cai.pay.PayTypeEnum;
import com.ruoyi.cai.rank.RankAdminManager;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.rank.bean.RankAdminBean;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.ws.bean.Room;
import lombok.extern.slf4j.Slf4j;
@@ -123,10 +126,24 @@ public class ConsumerManager {
rankManager.sendLoveRankMq(consumeLog.getSourceUserId(),consumeLog.getAnchorAmount(),consumeLog.getTraceId());
return resp;
}
@Autowired
private RechargeTotalCache rechargeTotalCache;
@Autowired
private RankAdminManager rankAdminManager;
public RechargeConsumerResp rechargeOrderSuccess(String tradeNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum){
RechargeConsumerResp resp = rechargeOrderService.orderSuccess(tradeNo,params,appId,payTypeEnum);
if(resp.isSuccess()){
try {
rechargeTotalCache.add(resp.getPrice());
RankAdminBean rankAdminBean = new RankAdminBean();
rankAdminBean.setRankType(3); // 充值榜单
rankAdminBean.setUserId(resp.getUserId());
rankAdminBean.setPrice(resp.getPrice());
rankAdminManager.addRank(rankAdminBean);
}catch (Exception e){
log.error("充值每日实时统计失败",e);
}
try {
amqpProducer.sendCalculateSales(resp.getConsumeLogId()+"");
}catch (Exception e){