This commit is contained in:
dute7liang
2024-01-20 22:07:35 +08:00
parent 3b6070428c
commit 96570448b5
12 changed files with 122 additions and 15 deletions

View File

@@ -2,11 +2,13 @@ package com.ruoyi.test;
import com.ruoyi.cai.rank.RankManager; import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.rank.RankNode; import com.ruoyi.cai.rank.RankNode;
import com.ruoyi.cai.service.RankService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import java.time.LocalDate;
import java.util.List; import java.util.List;
/** /**
@@ -20,6 +22,8 @@ public class CaiUnitTest {
@Autowired @Autowired
private RankManager rankManager; private RankManager rankManager;
@Autowired
private RankService rankService;
@Test @Test
public void rank(){ public void rank(){
@@ -36,5 +40,9 @@ public class CaiUnitTest {
log.info("userId={}, score={}", node.getUserId(),node.getScore()); log.info("userId={}, score={}", node.getUserId(),node.getScore());
} }
} }
@Test
public void saveRank(){
rankService.saveDayRank(LocalDate.now(),1);
}
} }

View File

@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.Rank;
import com.ruoyi.cai.dto.admin.vo.RankAdminVo;
import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.RankService;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
@@ -38,8 +39,8 @@ public class RankController extends BaseController {
*/ */
@SaCheckPermission("cai:rank:list") @SaCheckPermission("cai:rank:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<Rank> list(Rank bo, PageQuery pageQuery) { public TableDataInfo<RankAdminVo> list(RankAdminVo bo, PageQuery pageQuery) {
Page<Rank> page = rankService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<RankAdminVo> page = rankService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }

View File

@@ -1,6 +1,8 @@
package com.ruoyi.cai.domain; package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.constant.DateConstant;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
@@ -9,6 +11,7 @@ import java.util.Date;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/** /**
* 榜单对象 cai_rank * 榜单对象 cai_rank
@@ -39,7 +42,8 @@ public class Rank implements Serializable {
* 榜单期数 * 榜单期数
*/ */
private String rankTime; private String rankTime;
@DateTimeFormat(pattern = DateConstant.PATTERN_DATE)
@JsonFormat(pattern = DateConstant.PATTERN_DATE)
private LocalDate rankBeginTime; private LocalDate rankBeginTime;
private LocalDate rankEndTime; private LocalDate rankEndTime;
private Integer orderRank; private Integer orderRank;

View File

@@ -0,0 +1,35 @@
package com.ruoyi.cai.dto.admin.vo;
import com.ruoyi.cai.domain.Rank;
import com.ruoyi.common.annotation.Sensitive;
import com.ruoyi.common.enums.SensitiveStrategy;
import lombok.Data;
@Data
public class RankAdminVo extends Rank {
/**
* 用户号/ID号
*/
private String usercode;
/**
* 昵称
*/
private String nickname;
/**
* 手机号
*/
@Sensitive(strategy = SensitiveStrategy.PHONE)
private String mobile;
/**
* 头像
*/
private String avatar;
/**
* 性别
*/
private Integer gender;
private Integer age;
private Integer isAnchor;
}

View File

@@ -3,6 +3,7 @@ package com.ruoyi.cai.job;
import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.RankService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.DayOfWeek; import java.time.DayOfWeek;
@@ -16,6 +17,7 @@ public class RankJob {
@Autowired @Autowired
private RankService rankService; private RankService rankService;
@Scheduled(cron = "0 1 0 * * ? ")
public void persistentDb() { public void persistentDb() {
LocalDate date = LocalDateTime.now().plusDays(-1).toLocalDate(); LocalDate date = LocalDateTime.now().plusDays(-1).toLocalDate();
try { try {

View File

@@ -1,7 +1,10 @@
package com.ruoyi.cai.mapper; package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.Rank;
import com.ruoyi.cai.dto.admin.vo.RankAdminVo;
import org.apache.ibatis.annotations.Param;
/** /**
* 榜单Mapper接口 * 榜单Mapper接口
@@ -11,4 +14,5 @@ import com.ruoyi.cai.domain.Rank;
*/ */
public interface RankMapper extends BaseMapper<Rank> { public interface RankMapper extends BaseMapper<Rank> {
Page<RankAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") RankAdminVo bo);
} }

View File

@@ -1,8 +1,11 @@
package com.ruoyi.cai.service; package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.Rank;
import com.ruoyi.cai.dto.admin.vo.RankAdminVo;
import com.ruoyi.cai.rank.RankNode; import com.ruoyi.cai.rank.RankNode;
import com.ruoyi.common.core.domain.PageQuery;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
@@ -30,4 +33,6 @@ public interface RankService extends IService<Rank> {
List<RankNode> getInviteRankLastWeek(int limit); List<RankNode> getInviteRankLastWeek(int limit);
List<RankNode> getInviteRankLastDay(int limit); List<RankNode> getInviteRankLastDay(int limit);
Page<RankAdminVo> pageAdmin(PageQuery pageQuery, RankAdminVo bo);
} }

View File

@@ -8,6 +8,7 @@ import com.ruoyi.cai.enums.ConsumeLogStatus;
import com.ruoyi.cai.enums.ConsumeLogType; import com.ruoyi.cai.enums.ConsumeLogType;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.mapper.ConsumeLogMapper; import com.ruoyi.cai.mapper.ConsumeLogMapper;
import com.ruoyi.cai.rank.RankManager;
import com.ruoyi.cai.service.*; import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.NumCaUtil; import com.ruoyi.cai.util.NumCaUtil;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
@@ -93,23 +94,36 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
throw new ServiceException("分销失败!请联系管理员排查问题!"); throw new ServiceException("分销失败!请联系管理员排查问题!");
} }
try { try {
boolean oneInviteSend = false;
boolean oneUnionSend = false;
// 计算一级 // 计算一级
if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin()) if(consumer.getOneUserId() != null && BooleanUtils.isTrue(consumer.getOneJoin())
&& consumer.getOneAmount() > 0){ && consumer.getOneAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code); AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getOneInviteChange(code);
accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum); accountService.distribution(consumer,consumer.getOneUserId(),consumer.getOneAmount(),changeCodeEnum);
oneInviteSend = true;
} }
// 计算工会 // 计算工会
if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin()) if(consumer.getUnionUserId() != null && BooleanUtils.isTrue(consumer.getUnionJoin())
&& consumer.getUnionAmount() > 0){ && consumer.getUnionAmount() > 0){
AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code); AccountChangeCodeEnum changeCodeEnum = ConsumeLogType.getUnionChange(code);
accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum); accountService.distribution(consumer,consumer.getUnionUserId(),consumer.getUnionAmount(),changeCodeEnum);
oneUnionSend = true;
}
if(oneInviteSend){
rankManager.sendInviteRankMq(consumer.getOneUserId(),consumer.getOneAmount(),consumer.getTraceId());
}
if(oneUnionSend){
rankManager.sendInviteRankMq(consumer.getUnionUserId(),consumer.getUnionAmount(),consumer.getTraceId());
} }
}catch (Exception e){ }catch (Exception e){
log.error("分销发生未知错误,请联系开发检查!",e); log.error("分销发生未知错误,请联系开发检查!",e);
} }
} }
@Autowired
private RankManager rankManager;
@Override @Override
public ConsumeLog calculateInitFenxiao(ConsumeLog consumeLog){ public ConsumeLog calculateInitFenxiao(ConsumeLog consumeLog){
if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){ if(ConsumeLogType.RECHARGE.getCode().equals(consumeLog.getType())){

View File

@@ -3,9 +3,11 @@ package com.ruoyi.cai.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.Rank; import com.ruoyi.cai.domain.Rank;
import com.ruoyi.cai.domain.User; 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.SystemConfigEnum;
import com.ruoyi.cai.enums.account.AccountChangeCodeEnum; import com.ruoyi.cai.enums.account.AccountChangeCodeEnum;
import com.ruoyi.cai.manager.IdManager; import com.ruoyi.cai.manager.IdManager;
@@ -18,6 +20,7 @@ import com.ruoyi.cai.service.AccountChangeLogService;
import com.ruoyi.cai.service.RankService; import com.ruoyi.cai.service.RankService;
import com.ruoyi.cai.service.UserService; import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.util.CaiDateUtil; import com.ruoyi.cai.util.CaiDateUtil;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -331,4 +334,9 @@ public class RankServiceImpl extends ServiceImpl<RankMapper,Rank> implements Ran
return rankNode; return rankNode;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@Override
public Page<RankAdminVo> pageAdmin(PageQuery pageQuery, RankAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(),bo);
}
} }

View File

@@ -88,9 +88,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if(query.getType() == 1){ if(query.getType() == 1){
mapperQuery.setUsercodeAndNickname(query.getText()); mapperQuery.setUsercodeAndNickname(query.getText());
}else if(query.getType() == 2){ }else if(query.getType() == 2){
mapperQuery.setUsercode(query.getText());
}else if(query.getType() == 3){
mapperQuery.setNickname(query.getText()); mapperQuery.setNickname(query.getText());
}else if(query.getType() == 3){
mapperQuery.setUsercode(query.getText());
} }
return baseMapper.pageApp(page.build(),mapperQuery); return baseMapper.pageApp(page.build(),mapperQuery);
} }

View File

@@ -4,16 +4,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.RankMapper"> <mapper namespace="com.ruoyi.cai.mapper.RankMapper">
<resultMap type="com.ruoyi.cai.domain.Rank" id="RankResult"> <select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.RankAdminVo">
<result property="id" column="id"/> select t1.*,t2.usercode,t2.nickname,t2.mobile,t2.avatar,t2.gender,t2.is_anchor,t2.age
<result property="type" column="type"/> from cai_rank t1
<result property="dateType" column="date_type"/> left join cai_user t2 on t1.user_id = t2.id
<result property="rankTime" column="rank_time"/> <where>
<result property="num" column="num"/> <if test="bo.mobile != null and bo.mobile != ''">
<result property="userId" column="user_id"/> and t2.mobile = #{bo.mobile}
<result property="draw" column="draw"/> </if>
<result property="createTime" column="create_time"/> <if test="bo.usercode != null and bo.usercode != ''">
</resultMap> and t2.usercode = #{bo.usercode}
</if>
<if test="bo.rankBeginTime != null">
and t1.rank_begin_time = #{bo.rankBeginTime}
</if>
<if test="bo.type != null">
and t1.type = #{bo.type}
</if>
<if test="bo.dataType != null">
and t1.data_type = #{bo.dataType}
</if>
</where>
order by t1.order_rank
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,13 @@
package com.ruoyi.common.constant;
/**
* <p>created on 2021/7/15</p>
*
* @author zhangliang
*/
public class DateConstant {
public final static String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
public final static String PATTERN_DATE = "yyyy-MM-dd";
}