数据
This commit is contained in:
2
doc/1.1.0.sql
Normal file
2
doc/1.1.0.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE `cai_anchor`
|
||||||
|
ADD COLUMN `show_me_rate` int NOT NULL DEFAULT 10 COMMENT '展示自己概率' AFTER `recommend_status`;
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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不可用
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 修改房间缓存
|
// 修改房间缓存
|
||||||
|
|||||||
Reference in New Issue
Block a user