数据
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
package com.ruoyi.cai.manager;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.cai.auth.CaiLoginManager;
|
||||
import com.ruoyi.cai.constant.RedisHttpConstant;
|
||||
import com.ruoyi.cai.domain.*;
|
||||
import com.ruoyi.cai.dto.app.query.AccountAliBankCardRes;
|
||||
import com.ruoyi.cai.dto.app.query.AnchorUpdateReq;
|
||||
@@ -11,6 +14,7 @@ import com.ruoyi.cai.dto.app.query.user.UserUpdateAvatarReq;
|
||||
import com.ruoyi.cai.dto.app.query.user.UserUpdateReq;
|
||||
import com.ruoyi.cai.dto.app.vo.AnchorVo;
|
||||
import com.ruoyi.cai.dto.app.vo.CurrentUserInfoVo;
|
||||
import com.ruoyi.cai.dto.app.vo.top.AnchorTopResp;
|
||||
import com.ruoyi.cai.dto.app.vo.user.*;
|
||||
import com.ruoyi.cai.enums.AuditStatusEnum;
|
||||
import com.ruoyi.cai.enums.GenderEnum;
|
||||
@@ -26,15 +30,21 @@ import com.ruoyi.common.utils.BeanConvertUtil;
|
||||
import com.ruoyi.yunxin.client.ImUserRefClient;
|
||||
import com.ruoyi.yunxin.req.UpdateUinfoReq;
|
||||
import com.ruoyi.yunxin.resp.YxCommonR;
|
||||
import com.ruoyi.yunxin.resp.YxDataR;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
@@ -280,5 +290,42 @@ public class CurrentUserManager {
|
||||
|
||||
@Autowired
|
||||
private AnchorApplyService anchorApplyService;
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
|
||||
public AnchorTopResp top() {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
String lockKey = LockManager.getAnchorTopLock(userId);
|
||||
RLock lock = redissonClient.getLock(lockKey);
|
||||
if(lock.isLocked()){
|
||||
throw new ServiceException("操作太频繁");
|
||||
}
|
||||
try {
|
||||
lock.lock(3, TimeUnit.SECONDS);
|
||||
String userGreetSendTime = String.format(RedisHttpConstant.ANCHOR_TOP_TIME_REDIS,userId); // 最近一次的发送时间
|
||||
String lastTime = stringRedisTemplate.opsForValue().get(userGreetSendTime);
|
||||
if(StringUtils.isNotBlank(lastTime)){
|
||||
int inter = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.ANCHOR_TOP_MIN) * 60;
|
||||
long jiange = DateUtil.currentSeconds() - Long.parseLong(lastTime); // 距离上次发送的间隔
|
||||
long diff = inter - jiange;
|
||||
if(diff > 0){
|
||||
AnchorTopResp resp = new AnchorTopResp();
|
||||
resp.setTopSuccess(false);
|
||||
resp.setNextTopDate(diff);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
anchorService.update(Wrappers.lambdaUpdate(Anchor.class)
|
||||
.set(Anchor::getTopShowRank, LocalDateTime.now())
|
||||
.eq(Anchor::getUserId, userId));
|
||||
stringRedisTemplate.opsForValue().set(userGreetSendTime,DateUtil.currentSeconds()+"",1,TimeUnit.DAYS);
|
||||
}finally {
|
||||
lock.unlock();
|
||||
}
|
||||
AnchorTopResp resp = new AnchorTopResp();
|
||||
resp.setTopSuccess(true);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user