From 3033ccf3878fae2c204df53be2a283f29f5853ed Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期五, 10 十月 2025 18:17:02 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/haizhentong --- ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java | 62 +++++++++++++++++++++++++----- 1 files changed, 51 insertions(+), 11 deletions(-) diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java index fe58ad2..ee1a30e 100644 --- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java +++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java @@ -2,15 +2,23 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.ImmutableMap; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysLive; import com.ruoyi.system.query.TSysLiveQuery; import com.ruoyi.system.service.TSysLiveService; +import com.ruoyi.system.task.base.QuartzManager; +import com.ruoyi.system.task.base.TimeJobType; +import com.ruoyi.system.task.jobs.LivePushJob; import com.ruoyi.system.vo.TSysLiveVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,7 +27,10 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; /** * <p> @@ -36,10 +47,12 @@ private final TSysLiveService sysLiveService; private final TokenService tokenService; + private final RedisCache redisCache; @Autowired - public TSysLiveController(TSysLiveService sysLiveService, TokenService tokenService) { + public TSysLiveController(TSysLiveService sysLiveService, TokenService tokenService, RedisCache redisCache) { this.sysLiveService = sysLiveService; this.tokenService = tokenService; + this.redisCache = redisCache; } /** @@ -47,8 +60,8 @@ */ @ApiOperation(value = "获取直播管理分页列表") @PostMapping(value = "/pageList") - public R<PageInfo<TSysLiveVO>> pageList(@RequestBody TSysLiveQuery query) { - return R.ok(sysLiveService.pageList(query)); + public R<PageInfo<TSysLiveVO>> pageListApp(@RequestBody TSysLiveQuery query) { + return R.ok(sysLiveService.pageListApp(query)); } /** @@ -57,18 +70,45 @@ @ApiOperation(value = "查看直播管理详情") @GetMapping(value = "/getDetailById") public R<TSysLive> getDetailById(@RequestParam String id) { - return R.ok(sysLiveService.getById(id)); + TSysLive sysLive = sysLiveService.getById(id); + // 查询次数自增 使用数据库原子更新操作 + sysLiveService.update( + Wrappers.<TSysLive>lambdaUpdate() + .setSql("click_count = click_count + 1") + .eq(TSysLive::getId, id) + ); + return R.ok(sysLive); } /** - * 直播管理推送用户 + * 直播管理预约推送 */ - @Log(title = "直播管理信息-推送用户", businessType = BusinessType.UPDATE) - @ApiOperation(value = "直播管理信息推送用户") - @PutMapping(value = "/pushUser") - public R<String> pushUser(@RequestParam(value = "id") String id, - @RequestParam(value = "pushType")String pushType) { - sysLiveService.pushUser(id,pushType); + @ApiOperation(value = "直播管理信息预约推送") + @PutMapping(value = "/appointmentPush") + public R<String> appointmentPush(@RequestParam(value = "id") String id) { + String userId = tokenService.getLoginUserApplet().getUserId(); + // 判断是否已预约 + boolean memberInSet = redisCache.isMemberInSet(Constants.LIVE_APPOINTMENT_PUSH + id, userId); + if (memberInSet) { + return R.fail("已预约"); + } + Set<String> appointmentPush = new HashSet<>(); + appointmentPush.add(userId); + redisCache.setCacheSet(Constants.LIVE_APPOINTMENT_PUSH + id, appointmentPush); + + TSysLive sysLive = sysLiveService.getById(id); + Map<String, ? extends Object> maps = + new ImmutableMap.Builder<String, String>(). + put("id", sysLive.getId()) + .build(); + QuartzManager.addJob( + LivePushJob.class, + (LivePushJob.name+sysLive.getId()).toUpperCase(), + TimeJobType.LIVE_PUSH, + DateUtils.localDateTimeToDate(sysLive.getStartTime().minusHours(1)), + maps + ); + return R.ok(); } -- Gitblit v1.7.1