diff --git a/doc/1.1.0.sql b/doc/1.1.0.sql new file mode 100644 index 00000000..8f8f48af --- /dev/null +++ b/doc/1.1.0.sql @@ -0,0 +1,2 @@ +ALTER TABLE `cai_anchor` +ADD COLUMN `show_me_rate` int NOT NULL DEFAULT 10 COMMENT '展示自己概率' AFTER `recommend_status`; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java index 65ffe53a..8e4c5cc3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/AnchorController.java @@ -2,6 +2,7 @@ package com.ruoyi.web.controller.cai.admin; import cn.dev33.satoken.annotation.SaCheckPermission; 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.User; import com.ruoyi.cai.domain.UserCameraAudit; @@ -118,6 +119,15 @@ public class AnchorController extends BaseController { return R.ok(); } + @SaCheckPermission("cai:anchor:edit") + @Log(title = "修改主播自我欺骗数据", businessType = BusinessType.DELETE) + @PostMapping("updateShowMeRate") + public R updateShowMeRate(@RequestBody Anchor bo) { + anchorService.update(Wrappers.lambdaUpdate(Anchor.class).eq(Anchor::getId, bo.getId()) + .set(Anchor::getShowMeRate, bo.getShowMeRate())); + return R.ok(); + } + @Autowired private YunxinHttpService yunxinHttpService; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Anchor.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Anchor.java index 3260c75b..b55b6b8f 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Anchor.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/Anchor.java @@ -78,6 +78,8 @@ public class Anchor implements Serializable{ * 是否被推荐 0 不推荐 1 推荐 */ private Integer recommendStatus; + + private Integer showMeRate; /** * 状态 0 可用 1不可用 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java index 7e6994e7..8edaf44e 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/executor/ExecutorConstant.java @@ -3,6 +3,7 @@ package com.ruoyi.cai.executor; import com.alibaba.ttl.threadpool.TtlExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.slf4j.Slf4j; +import org.checkerframework.checker.units.qual.C; import java.util.concurrent.*; @@ -14,7 +15,7 @@ import java.util.concurrent.*; @Slf4j 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; public static Executor SYNC_EXECUTOR; @@ -60,8 +61,8 @@ public class ExecutorConstant { new ThreadPoolExecutor.CallerRunsPolicy()); COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor); - ThreadPoolExecutor roomExecutor = new ThreadPoolExecutor(CPU_NUM, - CPU_NUM << 2, + ThreadPoolExecutor roomExecutor = new ThreadPoolExecutor(CPU_NUM_SYSTEM, + CPU_NUM_SYSTEM << 2, 5, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5), diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java index 70e60423..06bea750 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java @@ -1,10 +1,15 @@ package com.ruoyi.cai.manager; +import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.vo.AnchorListVo; 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.home.AnchorListQueryTypeEnum; 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.AnchorTopService; 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.R; import com.ruoyi.common.helper.LoginHelper; @@ -45,7 +51,6 @@ public class HomeManager { private UserForbidManager userForbidManager; @Autowired private AnchorBannerService anchorBannerService; - public void refreshHomeAnchorTopCache(){ List anchorTop = anchorTopService.anchorTop(4); RBucket> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_TOP_REDIS); @@ -155,6 +160,35 @@ public class HomeManager { 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; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/trd/Agora.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/trd/Agora.java index f256c4d3..2b4207ae 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/trd/Agora.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/trd/Agora.java @@ -70,6 +70,7 @@ public class Agora { } public void closeChannel(Long roomId){ + log.info("开始执行关闭房间操作 roomId={}",roomId); String url = "https://api.sd-rtn.com/dev/v1/kicking-rule"; Map bodyData = new HashMap<>(); bodyData.put("appid",agoraProperties.getAppId()); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/util/RateUtil.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/RateUtil.java index 9ed5acd0..74cafd6b 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/util/RateUtil.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/util/RateUtil.java @@ -1,6 +1,7 @@ package com.ruoyi.cai.util; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.RandomUtil; import java.math.BigDecimal; @@ -9,4 +10,21 @@ public class RateUtil { public static String getRateStr(BigDecimal rate){ 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)); + } + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java index 5976bbfa..9601a5f3 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java @@ -166,7 +166,11 @@ public class SettleService { // 声网踢人 if(room.getRoomData().getBeginTime() != null && room.getRoomData().getBeginTime() > 0){ ExecutorConstant.ROOM_EXECUTOR.execute(() -> { - agora.closeChannel(roomId); + try { + agora.closeChannel(roomId); + }catch (Exception e){ + log.error("关闭房间失败 roomId={}",roomId,e); + } }); } // 修改房间缓存