This commit is contained in:
77
2024-07-26 11:38:23 +08:00
parent d11d10f1bf
commit 068a48a128
8 changed files with 77 additions and 5 deletions

2
doc/1.1.0.sql Normal file
View File

@@ -0,0 +1,2 @@
ALTER TABLE `cai_anchor`
ADD COLUMN `show_me_rate` int NOT NULL DEFAULT 10 COMMENT '展示自己概率' AFTER `recommend_status`;

View File

@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.cai.admin;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.Anchor; import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.User; import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.domain.UserCameraAudit; import com.ruoyi.cai.domain.UserCameraAudit;
@@ -118,6 +119,15 @@ public class AnchorController extends BaseController {
return R.ok(); return R.ok();
} }
@SaCheckPermission("cai:anchor:edit")
@Log(title = "修改主播自我欺骗数据", businessType = BusinessType.DELETE)
@PostMapping("updateShowMeRate")
public R<Void> updateShowMeRate(@RequestBody Anchor bo) {
anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId, bo.getId())
.set(Anchor::getShowMeRate, bo.getShowMeRate()));
return R.ok();
}
@Autowired @Autowired
private YunxinHttpService yunxinHttpService; private YunxinHttpService yunxinHttpService;

View File

@@ -78,6 +78,8 @@ public class Anchor implements Serializable{
* 是否被推荐 0 不推荐 1 推荐 * 是否被推荐 0 不推荐 1 推荐
*/ */
private Integer recommendStatus; private Integer recommendStatus;
private Integer showMeRate;
/** /**
* 状态 0 可用 1不可用 * 状态 0 可用 1不可用
*/ */

View File

@@ -3,6 +3,7 @@ package com.ruoyi.cai.executor;
import com.alibaba.ttl.threadpool.TtlExecutors; import com.alibaba.ttl.threadpool.TtlExecutors;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.C;
import java.util.concurrent.*; import java.util.concurrent.*;
@@ -14,7 +15,7 @@ import java.util.concurrent.*;
@Slf4j @Slf4j
public class ExecutorConstant { public class ExecutorConstant {
// private final static int CPU_NUM = Runtime.getRuntime().availableProcessors(); private final static int CPU_NUM_SYSTEM = Runtime.getRuntime().availableProcessors();
private final static int CPU_NUM = 6; private final static int CPU_NUM = 6;
public static Executor SYNC_EXECUTOR; public static Executor SYNC_EXECUTOR;
@@ -60,8 +61,8 @@ public class ExecutorConstant {
new ThreadPoolExecutor.CallerRunsPolicy()); new ThreadPoolExecutor.CallerRunsPolicy());
COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor); COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor);
ThreadPoolExecutor roomExecutor = new ThreadPoolExecutor(CPU_NUM, ThreadPoolExecutor roomExecutor = new ThreadPoolExecutor(CPU_NUM_SYSTEM,
CPU_NUM << 2, CPU_NUM_SYSTEM << 2,
5, 5,
TimeUnit.SECONDS, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(5), new ArrayBlockingQueue<>(5),

View File

@@ -1,10 +1,15 @@
package com.ruoyi.cai.manager; package com.ruoyi.cai.manager;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.constant.RedisHttpConstant; import com.ruoyi.cai.constant.RedisHttpConstant;
import com.ruoyi.cai.domain.Anchor;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.dto.app.query.index.AnchorListQuery; import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig; import com.ruoyi.cai.dto.app.vo.setting.AppHomeConfig;
import com.ruoyi.cai.dto.app.vo.user.OnlineStatusVo;
import com.ruoyi.cai.dto.commom.user.MinUser;
import com.ruoyi.cai.enums.SystemConfigEnum; import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum; import com.ruoyi.cai.enums.home.AnchorListQueryTypeEnum;
import com.ruoyi.cai.mq.AmqpHttpProducer; import com.ruoyi.cai.mq.AmqpHttpProducer;
@@ -13,6 +18,7 @@ import com.ruoyi.cai.service.AnchorBannerService;
import com.ruoyi.cai.service.AnchorService; import com.ruoyi.cai.service.AnchorService;
import com.ruoyi.cai.service.AnchorTopService; import com.ruoyi.cai.service.AnchorTopService;
import com.ruoyi.cai.service.UserService; import com.ruoyi.cai.service.UserService;
import com.ruoyi.cai.util.RateUtil;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
@@ -45,7 +51,6 @@ public class HomeManager {
private UserForbidManager userForbidManager; private UserForbidManager userForbidManager;
@Autowired @Autowired
private AnchorBannerService anchorBannerService; private AnchorBannerService anchorBannerService;
public void refreshHomeAnchorTopCache(){ public void refreshHomeAnchorTopCache(){
List<AnchorListVo> anchorTop = anchorTopService.anchorTop(4); List<AnchorListVo> anchorTop = anchorTopService.anchorTop(4);
RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_TOP_REDIS); RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_TOP_REDIS);
@@ -155,6 +160,35 @@ public class HomeManager {
result.addAll(0, list); result.addAll(0, list);
} }
} }
// 检测自己的概率
if(pageNum == 1){
Long userId = LoginHelper.getUserId();
for (AnchorListVo anchorListVo : result) {
if(anchorListVo.getUserId().equals(userId)){
return result;
}
}
Anchor anchor = anchorService.getByUserId(userId);
if(anchor != null && anchor.getStatus() == 0){
boolean rate = RateUtil.randomRate(anchor.getShowMeRate());
if(rate){
User user = userService.getById(anchor.getUserId());
AnchorListVo vo = new AnchorListVo();
vo.setPrice(anchor.getPrice());
vo.setOnline(1);
vo.setUserId(anchor.getUserId());
vo.setAvatar(user.getAvatar());
vo.setGender(user.getGender());
vo.setCityId(user.getCityId());
vo.setCity(user.getCity());
vo.setNickname(user.getNickname());
vo.setUsercode(user.getUsercode());
vo.setGiveScore(anchor.getGiveScore());
int index = RandomUtil.randomInt(result.size());
result.set(index,vo);
}
}
}
return result; return result;
} }

View File

@@ -70,6 +70,7 @@ public class Agora {
} }
public void closeChannel(Long roomId){ public void closeChannel(Long roomId){
log.info("开始执行关闭房间操作 roomId={}",roomId);
String url = "https://api.sd-rtn.com/dev/v1/kicking-rule"; String url = "https://api.sd-rtn.com/dev/v1/kicking-rule";
Map<String,Object> bodyData = new HashMap<>(); Map<String,Object> bodyData = new HashMap<>();
bodyData.put("appid",agoraProperties.getAppId()); bodyData.put("appid",agoraProperties.getAppId());

View File

@@ -1,6 +1,7 @@
package com.ruoyi.cai.util; package com.ruoyi.cai.util;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -9,4 +10,21 @@ public class RateUtil {
public static String getRateStr(BigDecimal rate){ public static String getRateStr(BigDecimal rate){
return NumberUtil.mul(rate,100).longValue() + ""; return NumberUtil.mul(rate,100).longValue() + "";
} }
public static boolean randomRate(Integer rate){
if(rate == null || rate <= 0){
return false;
}
int ran = RandomUtil.randomInt(101);
if(ran < rate){
return true;
}
return false;
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(randomRate(10));
}
}
} }

View File

@@ -166,7 +166,11 @@ public class SettleService {
// 声网踢人 // 声网踢人
if(room.getRoomData().getBeginTime() != null && room.getRoomData().getBeginTime() > 0){ if(room.getRoomData().getBeginTime() != null && room.getRoomData().getBeginTime() > 0){
ExecutorConstant.ROOM_EXECUTOR.execute(() -> { ExecutorConstant.ROOM_EXECUTOR.execute(() -> {
agora.closeChannel(roomId); try {
agora.closeChannel(roomId);
}catch (Exception e){
log.error("关闭房间失败 roomId={}",roomId,e);
}
}); });
} }
// 修改房间缓存 // 修改房间缓存