This commit is contained in:
dute7liang
2024-01-27 20:59:24 +08:00
parent 716b2a2d7a
commit edad546c4b
13 changed files with 247 additions and 3 deletions

View File

@@ -7,12 +7,15 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.dto.commom.ignoredata.InviteIgnoreData;
import com.ruoyi.cai.enums.CodeEnum;
import com.ruoyi.cai.enums.GenderEnum;
import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.manager.*;
import com.ruoyi.cai.service.*;
import com.ruoyi.cai.util.RandomSjUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.UserType;
@@ -79,6 +82,8 @@ public class CaiLoginManager {
private AwardManager awardManager;
@Autowired
private SmsVerifyService smsVerifyService;
@Autowired
private IgnoreDataService ignoreDataService;
public String login(String username,String password){
User user = userService.getByUsername(username);
@@ -154,6 +159,15 @@ public class CaiLoginManager {
}
lock.lock(5,TimeUnit.SECONDS);
try {
Integer inviteBindRate = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.INVITE_BIND_RATE);
boolean sj = RandomSjUtil.rateSj(inviteBindRate);
if(!sj){
InviteIgnoreData data = new InviteIgnoreData();
data.setUserId(user.getId());
data.setInviteId(inviteId);
ignoreDataService.saveIgnoreData(IgnoreDataTypeEnum.INVITE,inviteUser.getId(),data);
return;
}
UserInvite check = userInviteService.getByUserId(user.getId());
if(check == null){
UserInvite userInvite = new UserInvite();

View File

@@ -0,0 +1,43 @@
package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 忽略数据对象 cai_ignore_data
*
* @author 77
* @date 2024-01-27
*/
@Data
@TableName("cai_ignore_data")
public class IgnoreData implements Serializable {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 遗漏类型 1-邀请
*/
private Integer type;
/**
* 遗漏用户
*/
private Long userId;
/**
* 数据
*/
private String text;
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.cai.dto.commom.ignoredata;
import lombok.Data;
@Data
public class InviteIgnoreData {
private Long userId;
private Long inviteId;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.cai.enums;
import lombok.Getter;
@Getter
public enum IgnoreDataTypeEnum {
INVITE(1,"邀请");
private final Integer code;
private final String text;
IgnoreDataTypeEnum(Integer code, String text) {
this.code = code;
this.text = text;
}
}

View File

@@ -16,11 +16,15 @@ public enum SystemConfigEnum {
RANK_LOVE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "魅力榜周榜奖励",SystemConfigGroupEnum.BUSINESS, new RankSystemConfigCheck()),
RANK_INVITE_DAY_AWARD("138,108,88,58,38,28,28,28,28,28,28", "邀请榜日榜奖励",SystemConfigGroupEnum.BUSINESS,new RankSystemConfigCheck()),
RANK_INVITE_WEEK_AWARD("888,588,388,288,188,138,138,138,138,138,138,138", "邀请榜周榜奖励",SystemConfigGroupEnum.BUSINESS,new RankSystemConfigCheck()),
INVITE_BIND_RATE("1000", "邀请绑定成功率[0-1000]数字越大成功率越高",SystemConfigGroupEnum.BUSINESS, new Rate1000IntegerSystemConfigCheck()),
// INVITE_GIFT_RATE("100", "礼物分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
// INVITE_GUARD_RATE("100", "守护分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
// INVITE_VIDEO_RATE("100", "视频分销成功率",SystemConfigGroupEnum.BUSINESS, new RateIntegerSystemConfigCheck()),
REGISTER_AWARD("88", "注册奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
FAST_PAY_AWARD("300", "首充奖励",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
GUARD_PRICE("1314", "守护价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
WINDOW_GIFT_THRESHOLD("10", "礼物飘窗阈值(彩贝)",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
WINDOW_RECHARGE_THRESHOLD("10", "充值飘窗阈值(充值金额)",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
WINDOW_GIFT_THRESHOLD("10", "礼物飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
WINDOW_RECHARGE_THRESHOLD("10", "充值飘窗阈值",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
DEFAULT_ANCHOR_PRICE("200","主播默认价格",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
DEFAULT_ANCHOR_GUARD_PRICE("0.5","主播默认守护提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()),
DEFAULT_ANCHOR_GIFT_PRICE("0.5","主播默认礼物提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()),
@@ -30,6 +34,7 @@ public enum SystemConfigEnum {
DEFAULT_GIFT_INCOME_RATE("0.07", "默认分销好友礼物提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()),
DEFAULT_GUARD_INCOME_RATE("0.07", "默认分销好友守护提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()),
DEFAULT_PAY_INCOME_RATE("0.07", "默认分销好友充值提成",SystemConfigGroupEnum.BUSINESS,new RateSystemConfigCheck()),
@Deprecated
DEFAULT_UNION_GIFT_INCOME_RATE("0.01", "默认工会礼物提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),
DEFAULT_UNION_VIDEO_INCOME_RATE("0.01", "默认工会视频提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),
DEFAULT_UNION_ONE_INCOME_RATE("0.07", "默认工会一级提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),

View File

@@ -0,0 +1,23 @@
package com.ruoyi.cai.enums.systemconfig;
import cn.hutool.core.util.NumberUtil;
import com.ruoyi.common.utils.StringUtils;
public class Rate1000IntegerSystemConfigCheck implements ISystemConfigCheck{
@Override
public SystemCheckResp check(String value) {
if(StringUtils.isEmpty(value)){
return SystemCheckResp.fail("该配置必填");
}
boolean b = NumberUtil.isInteger(value);
if(!b){
return SystemCheckResp.fail("请填写[0-1000]之间的整数");
}
int val = Integer.parseInt(value);
if(val < 0 || val > 1000){
return SystemCheckResp.fail("请填写[0-1000]之间的整数");
}
return SystemCheckResp.ok();
}
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.cai.enums.systemconfig;
import cn.hutool.core.util.NumberUtil;
import com.ruoyi.common.utils.StringUtils;
public class Rate100IntegerSystemConfigCheck implements ISystemConfigCheck{
@Override
public SystemCheckResp check(String value) {
if(StringUtils.isEmpty(value)){
return SystemCheckResp.fail("该配置必填");
}
boolean b = NumberUtil.isInteger(value);
if(!b){
return SystemCheckResp.fail("请填写[0-100]之间的整数");
}
int val = Integer.parseInt(value);
if(val < 0 || val > 100){
return SystemCheckResp.fail("请填写[0-100]之间的整数");
}
return SystemCheckResp.ok();
}
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.IgnoreData;
/**
* 忽略数据Mapper接口
*
* @author 77
* @date 2024-01-27
*/
public interface IgnoreDataMapper extends BaseMapper<IgnoreData> {
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.IgnoreData;
import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
/**
* 忽略数据Service接口
*
* @author 77
* @date 2024-01-27
*/
public interface IgnoreDataService extends IService<IgnoreData> {
void saveIgnoreData(IgnoreDataTypeEnum type, Long userId, Object text);
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.cai.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.IgnoreData;
import com.ruoyi.cai.enums.IgnoreDataTypeEnum;
import com.ruoyi.cai.mapper.IgnoreDataMapper;
import com.ruoyi.cai.service.IgnoreDataService;
import org.springframework.stereotype.Service;
/**
* 忽略数据Service业务层处理
*
* @author 77
* @date 2024-01-27
*/
@Service
public class IgnoreDataServiceImpl extends ServiceImpl<IgnoreDataMapper,IgnoreData> implements IgnoreDataService {
@Override
public void saveIgnoreData(IgnoreDataTypeEnum type,Long userId, Object text){
try {
IgnoreData ignoreData = new IgnoreData();
ignoreData.setType(type.getCode());
ignoreData.setUserId(userId);
ignoreData.setText(JSON.toJSONString(text));
this.save(ignoreData);
}catch (Exception e){
log.error("忽略数据存储异常");
}
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,6 +11,7 @@ import com.ruoyi.cai.dto.admin.vo.UnionAdminVo;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.UnionMapper;
import com.ruoyi.cai.mapper.UserInfoMapper;
import com.ruoyi.cai.service.*;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
@@ -17,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@@ -91,7 +95,7 @@ public class UnionServiceImpl extends ServiceImpl<UnionMapper, Union> implements
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveUnion(String usercode) {
public synchronized boolean saveUnion(String usercode) {
User user = userService.getByUserCode(usercode);
if(user == null){
throw new ServiceException("用户不存在");
@@ -107,6 +111,19 @@ public class UnionServiceImpl extends ServiceImpl<UnionMapper, Union> implements
union.setName("工会"+user.getUsercode());
union.setEnableRate(true);
this.save(union);
BigDecimal guardIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_GUARD_INCOME_RATE);
BigDecimal giftIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_GIFT_INCOME_RATE);
BigDecimal videoIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_VIDEO_INCOME_RATE);
BigDecimal unionOneIncomeRate = systemConfigManager.getSystemConfigOfBigDecimal(SystemConfigEnum.DEFAULT_UNION_ONE_INCOME_RATE);
// 将会长的比例充值成最新的
userInfoService.update(Wrappers.lambdaUpdate(UserInfo.class)
.eq(UserInfo::getUserId,user.getId())
.set(UserInfo::getGiftIncomeRate, NumberUtil.add(giftIncomeRate,unionOneIncomeRate))
.set(UserInfo::getGuardIncomeRate, NumberUtil.add(guardIncomeRate,unionOneIncomeRate))
.set(UserInfo::getVideoIncomeRate, NumberUtil.add(videoIncomeRate,unionOneIncomeRate)));
return true;
}
@Resource
private UserInfoMapper userInfoMapper;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.cai.util;
import cn.hutool.core.util.RandomUtil;
public class RandomSjUtil {
public static boolean rateSj(Integer rate){
if(rate == null || rate < 0 | rate > 1000){
return true;
}
int random = RandomUtil.randomInt(1001);
return rate > random;
}
}