This commit is contained in:
dute7liang
2024-01-07 16:42:24 +08:00
parent 31af6fdc76
commit fad404fe58
52 changed files with 257 additions and 176 deletions

View File

@@ -15,6 +15,7 @@ import com.ruoyi.cai.util.NumCaUtil;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -55,18 +56,18 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
throw new ServiceException("余额不足");
}
boolean flag = false;
long coin = account.getCoin();
long incomeCoin = 0;
long coin = -amount; // 消费余额
long incomeCoin = 0; // 消费收益
long diff = account.getCoin() - amount;
// 充值币够用
if(diff > 0){
long l = baseMapper.decrCoin(userId, coin);
flag = l > 0;
flag = baseMapper.decrCoin(userId, -coin);
} else { // 充值币不够用
coin = -account.getCoin();
incomeCoin = diff;
long decrCoin = baseMapper.decrCoin(userId, account.getCoin());
long decrIncomeCoin = baseMapper.decrIncomeCoin(userId, -diff);
if(decrCoin > 0 && decrIncomeCoin > 0){
boolean decrCoin = baseMapper.decrCoin(userId, -coin);
boolean decrIncomeCoin = baseMapper.decrIncomeCoin(userId, -diff);
if(decrCoin && decrIncomeCoin){
flag = true;
}
}
@@ -88,8 +89,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
if(incomeCoin != 0){
accountChangeLogService.saveLogNoAdmin(userId,consumeLog.getSourceUsercode(), RechargeTypeEnum.COIN_INCOME,businessEnum.getSourceEnum(),incomeCoin,consumeLog.getTraceId());
}
// 记录接收方的流水
if(targetUserId != null){
accountChangeLogService.saveLogNoAdmin(targetUserId,consumeLog.getTargetUsercode(), RechargeTypeEnum.COIN_INCOME,businessEnum.getTargetEnum(),incomeCoin,consumeLog.getTraceId());
accountChangeLogService.saveLogNoAdmin(targetUserId,consumeLog.getTargetUsercode(), RechargeTypeEnum.COIN_INCOME,businessEnum.getTargetEnum(),consumeLog.getAnchorAmount(),consumeLog.getTraceId());
}
// 获取分销的比例和用户
consumeLogService.calculateInitFenxiao(consumeLog);
@@ -108,8 +110,8 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
if(account.getIncomeCoin() < incomeCoin){
throw new ServiceException(""+incomeCoin+"紫贝才可提现");
}
long incs = baseMapper.decrIncomeCoin(userId, incomeCoin);
if(incs <= 0){
boolean incs = baseMapper.decrIncomeCoin(userId, incomeCoin);
if(!incs){
throw new ServiceException(""+incomeCoin+"紫贝才可提现");
}
accountChangeLogService.saveLogNoAdmin(user.getId(),user.getUsercode(), RechargeTypeEnum.COIN_INCOME,AccountBusinessEnum.WITHDRAW.getSourceEnum(),incomeCoin,traceId);

View File

@@ -114,6 +114,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
consumeLog.setOneAmount(NumCaUtil.coin(consumeLog.getAmount(),consumeLog.getOneRate()));
}
}
consumeLog.setCalculateStatus(true);
return consumeLog;
}
Long targetUserId = consumeLog.getTargetUserId();
@@ -166,6 +167,7 @@ public class ConsumeLogServiceImpl extends ServiceImpl<ConsumeLogMapper, Consume
}
}
}
consumeLog.setCalculateStatus(true);
return consumeLog;
}

View File

@@ -153,11 +153,11 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
if(account.getCoin() < -dto.getRechargeCoin()){
throw new ServiceException("调整后余额为负数,无法调整");
}
long l = accountMapper.decrCoin(userId, -dto.getRechargeCoin());
accountChangeLogService.saveLogAdmin(user.getId(),user.getUsercode(),RechargeTypeEnum.COIN, AccountChangeEnum.SYSTEM_COIN_DECR,dto.getRechargeCoin(),traceId);
if(l == 0){
throw new ServiceException("调整后余额为负数,无法调整");
boolean l = accountMapper.decrCoin(userId, -dto.getRechargeCoin());
if(!l){
throw new ServiceException("调整后收益为负数,无法调整");
}
accountChangeLogService.saveLogAdmin(user.getId(),user.getUsercode(),RechargeTypeEnum.COIN, AccountChangeEnum.SYSTEM_COIN_DECR,dto.getRechargeCoin(),traceId);
}
}else{
if(dto.getRechargeCoin() > 0){
@@ -167,11 +167,11 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
if(account.getIncomeCoin() < -dto.getRechargeCoin()){
throw new ServiceException("调整后收益为负数,无法调整");
}
long l = accountMapper.decrIncomeCoin(userId, -dto.getRechargeCoin());
accountChangeLogService.saveLogAdmin(user.getId(),user.getUsercode(),RechargeTypeEnum.COIN_INCOME, AccountChangeEnum.SYSTEM_INCOME_COIN_DECR,dto.getRechargeCoin(),traceId);
if(l == 0){
boolean l = accountMapper.decrIncomeCoin(userId, -dto.getRechargeCoin());
if(!l){
throw new ServiceException("调整后收益为负数,无法调整");
}
accountChangeLogService.saveLogAdmin(user.getId(),user.getUsercode(),RechargeTypeEnum.COIN_INCOME, AccountChangeEnum.SYSTEM_INCOME_COIN_DECR,dto.getRechargeCoin(),traceId);
}
}
return order;

View File

@@ -11,6 +11,7 @@ import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserGreet;
import com.ruoyi.cai.dto.admin.vo.UserGreetAdminVo;
import com.ruoyi.cai.dto.app.query.user.UserGreetAddReq;
import com.ruoyi.cai.enums.AuditStatusEnum;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.LockManager;
import com.ruoyi.cai.manager.SystemConfigManager;
@@ -102,12 +103,12 @@ public class UserGreetServiceImpl extends ServiceImpl<UserGreetMapper,UserGreet>
if(userGreet == null || !userGreet.getUserId().equals(userId)){
throw new ServiceException("请选择打招呼内容");
}
if(userGreet.getAuditStatus() != 1){
if(AuditStatusEnum.SUCCESS.getCode().equals(userGreet.getAuditStatus())){
throw new ServiceException("内容未通过审核");
}
String lockKey = LockManager.getSendGreetLock(userId);
RLock lock = redissonClient.getLock(lockKey);
if(!lock.isLocked()){
if(lock.isLocked()){
throw new ServiceException("操作太频繁");
}
try {
@@ -118,8 +119,8 @@ public class UserGreetServiceImpl extends ServiceImpl<UserGreetMapper,UserGreet>
if(val != null && Long.parseLong(val) > max){
throw new ServiceException("您今天打招呼的次数已经用完了");
}
String sendGreetLock = LockManager.getSendGreetLock(userId);
String lastTime = stringRedisTemplate.opsForValue().getAndExpire(sendGreetLock, 1, TimeUnit.DAYS);
String sendGreetCount = String.format(RedisConstant.USER_GREET_SEND_TIME_REDIS,userId);
String lastTime = stringRedisTemplate.opsForValue().get(sendGreetCount);
if(StringUtils.isNotBlank(lastTime)){
Integer inter = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.GREET_INTERVAL_MIN);
long jiange = Long.parseLong(lastTime) - DateUtil.currentSeconds();
@@ -140,7 +141,7 @@ public class UserGreetServiceImpl extends ServiceImpl<UserGreetMapper,UserGreet>
if(!r.isSuccess()){
throw new ServiceException("发送失败");
}
stringRedisTemplate.opsForValue().set(sendGreetLock,DateUtil.currentSeconds()+"",1,TimeUnit.DAYS);
stringRedisTemplate.opsForValue().set(sendGreetCount,DateUtil.currentSeconds()+"",1,TimeUnit.DAYS);
stringRedisTemplate.opsForValue().increment(numKey);
stringRedisTemplate.expire(numKey,1,TimeUnit.DAYS);
}finally {

View File

@@ -44,7 +44,7 @@ public class UserInviteServiceImpl extends ServiceImpl<UserInviteMapper, UserInv
InviteCountDTO inviteCount = baseMapper.countInviteAndReward(userId);
vo.setTotalInvite(inviteCount.getTotalInvite());
vo.setTotalReward(inviteCount.getTotalReward());
return null;
return vo;
}
/**

View File

@@ -3,14 +3,17 @@ package com.ruoyi.cai.service.impl;
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.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserVisitor;
import com.ruoyi.cai.dto.app.query.StarOrVisitorReq;
import com.ruoyi.cai.dto.app.query.VisitorQuery;
import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.UserVisitorMapper;
import com.ruoyi.cai.service.UserCountService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.service.UserVisitorService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,8 +32,15 @@ import java.time.LocalDateTime;
public class UserVisitorServiceImpl extends ServiceImpl<UserVisitorMapper, UserVisitor> implements UserVisitorService {
@Autowired
private UserCountService userCountService;
@Autowired
private UserService userService;
@Override
public boolean visitor(StarOrVisitorReq starOrVisitorReq) {
User user = userService.getById(starOrVisitorReq.getToUserId());
if(user == null){
log.error("用户不存在");
return false;
}
Long fromUserId = LoginHelper.getUserId();
UserVisitor userVisitor = this.getOne(Wrappers.lambdaQuery(UserVisitor.class)
.eq(UserVisitor::getVisitorId, fromUserId)
@@ -49,6 +59,9 @@ public class UserVisitorServiceImpl extends ServiceImpl<UserVisitorMapper, UserV
@Override
public Page<UserStarOrVisitorList> pageApp(PageQuery pageQuery, VisitorQuery query) {
if(query.getType() == null || (query.getType() != 1 && query.getType() != 2)){
throw new ServiceException("参数异常");
}
query.setUserId(LoginHelper.getUserId());
return baseMapper.pageApp(pageQuery.build(),query);
}