From 002244c9264f60aad36e8a7fdb636cc5d81ed573 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 12 九月 2025 15:42:03 +0800 Subject: [PATCH] 小程序直播管理 --- /dev/null | 143 ----------------------------------- ruoyi-system/src/main/java/com/ruoyi/system/query/TSysLiveQuery.java | 2 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysLiveController.java | 31 +++++-- ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java | 4 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysLiveServiceImpl.java | 13 +++ ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysLiveVO.java | 4 + ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java | 11 ++ ruoyi-common/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java | 1 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java | 2 9 files changed, 58 insertions(+), 153 deletions(-) diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java index 96d4b2d..d57c70c 100644 --- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java +++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysAppUserController.java @@ -70,7 +70,6 @@ /** * 修改用户管理 */ - @Log(title = "用户管理信息-修改用户管理", businessType = BusinessType.UPDATE) @ApiOperation(value = "修改用户管理") @PostMapping(value = "/update") public R<Boolean> update(@Validated @RequestBody TSysAppUser dto) { @@ -126,7 +125,6 @@ /** * 退出登录 */ - @Log(title = "用户管理信息-退出登录", businessType = BusinessType.UPDATE) @ApiOperation(value = "退出登录") @PostMapping(value = "/loginOut") public R<Boolean> loginOut() { 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..76437ba 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 @@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.SecurityUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TSysLive; @@ -19,7 +22,9 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * <p> @@ -36,10 +41,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; } /** @@ -48,6 +55,8 @@ @ApiOperation(value = "获取直播管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysLiveVO>> pageList(@RequestBody TSysLiveQuery query) { + String userId = tokenService.getLoginUserApplet().getUserId(); + query.setAppUserId(userId); return R.ok(sysLiveService.pageList(query)); } @@ -61,14 +70,20 @@ } /** - * 直播管理推送用户 + * 直播管理预约推送 */ - @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); return R.ok(); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index 82b912c..9155474 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -162,4 +162,8 @@ * 用户类型 */ public static final String USER_TYPE = "用户类型"; + /** + * 直播推送 + */ + public static final String LIVE_APPOINTMENT_PUSH = "live:appointmentPush:"; } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java index 96864ac..037c1c5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java @@ -263,6 +263,17 @@ } /** + * 判断某个值是否在某个set中 + * + * @param key + * @param value + * @return + */ + public boolean isMemberInSet(String key, Object value) { + return Boolean.TRUE.equals(redisTemplate.opsForSet().isMember(key, value)); + } + + /** * 获得缓存的基本对象列表 * * @param pattern 字符串前缀 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/Constants.java deleted file mode 100644 index 8144c3a..0000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/Constants.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.ruoyi.common.core.utils; - -/** - * 通用常量信息 - * - * @author ruoyi - */ -public class Constants -{ - /** - * UTF-8 字符集 - */ - public static final String UTF8 = "UTF-8"; - - /** - * GBK 字符集 - */ - public static final String GBK = "GBK"; - - /** - * www主域 - */ - public static final String WWW = "www."; - - /** - * RMI 远程方法调用 - */ - public static final String LOOKUP_RMI = "rmi:"; - - /** - * LDAP 远程方法调用 - */ - public static final String LOOKUP_LDAP = "ldap:"; - - /** - * LDAPS 远程方法调用 - */ - public static final String LOOKUP_LDAPS = "ldaps:"; - - /** - * http请求 - */ - public static final String HTTP = "http://"; - - /** - * https请求 - */ - public static final String HTTPS = "https://"; - - /** - * 成功标记 - */ - public static final Integer SUCCESS = 200; - - /** - * 失败标记 - */ - public static final Integer FAIL = 500; - - /** - * 登录成功状态 - */ - public static final String LOGIN_SUCCESS_STATUS = "1"; - - /** - * 登录失败状态 - */ - public static final String LOGIN_FAIL_STATUS = "2"; - - /** - * 登录成功 - */ - public static final String LOGIN_SUCCESS = "Success"; - - /** - * 注销 - */ - public static final String LOGOUT = "Logout"; - - /** - * 注册 - */ - public static final String REGISTER = "Register"; - - /** - * 登录失败 - */ - public static final String LOGIN_FAIL = "Error"; - - /** - * 当前记录起始索引 - */ - public static final String PAGE_NUM = "pageNum"; - - /** - * 每页显示记录数 - */ - public static final String PAGE_SIZE = "pageSize"; - - /** - * 排序列 - */ - public static final String ORDER_BY_COLUMN = "orderByColumn"; - - /** - * 排序的方向 "desc" 或者 "asc". - */ - public static final String IS_ASC = "isAsc"; - - /** - * 验证码有效期(分钟) - */ - public static final long CAPTCHA_EXPIRATION = 2; - - /** - * 资源映射路径 前缀 - */ - public static final String RESOURCE_PREFIX = "/profile"; - - /** - * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) - */ - public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" }; - - /** - * 时间格式化 - */ - public static final String DATE_FORMATTER_TIME = "yyyy-MM-dd HH:mm:ss"; - public static final String DATE_FORMATTER_DATE = "yyyy-MM-dd"; - /** - * 修改手机号后缀 - */ - public static final String UPDATE_PHONE = "_updatePhone"; - /** - * 申请建桩后缀 - */ - public static final String APPLY_CHARGING = "_applyCharging"; - /** - * 定时任务违规的字符 - */ - public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", - "org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" }; -} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java index 7d25f7a..7484b8b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java @@ -1,5 +1,6 @@ package com.ruoyi.common.core.utils; +import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import org.slf4j.Logger; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TSysLiveQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TSysLiveQuery.java index f336394..867ad6e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TSysLiveQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TSysLiveQuery.java @@ -15,4 +15,6 @@ @ApiModelProperty(value = "直播状态 1=未开始 2=已开始 3=已结束") private Integer liveStatus; + @ApiModelProperty(value = "前端忽略") + private String appUserId; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysLiveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysLiveServiceImpl.java index c5456e0..62b5b0e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysLiveServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysLiveServiceImpl.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableMap; 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.utils.DateUtils; import com.ruoyi.system.mapper.TSysLiveMapper; import com.ruoyi.system.model.TSysEducationalInfo; @@ -14,7 +16,9 @@ import com.ruoyi.system.task.base.TimeJobType; import com.ruoyi.system.task.jobs.LivePushJob; import com.ruoyi.system.vo.TSysLiveVO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.Date; @@ -32,6 +36,9 @@ */ @Service public class TSysLiveServiceImpl extends ServiceImpl<TSysLiveMapper, TSysLive> implements TSysLiveService { + + @Autowired + private RedisCache redisCache; @Override public R pushUser(String id, String pushType) { @@ -63,6 +70,9 @@ public PageInfo<TSysLiveVO> pageList(TSysLiveQuery query) { PageInfo<TSysLiveVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TSysLiveVO> list = this.baseMapper.pageList(query,pageInfo); + if (CollectionUtils.isEmpty(list)){ + return pageInfo; + } // 判断状态 for (TSysLiveVO sysLive : list) { if(sysLive.getStartTime().isAfter(LocalDateTime.now())){ @@ -74,6 +84,9 @@ if(sysLive.getEndTime().isBefore(LocalDateTime.now())){ sysLive.setLiveStatus(3); } + // 查看是否包含该值 + boolean memberInSet = redisCache.isMemberInSet(Constants.LIVE_APPOINTMENT_PUSH + sysLive.getId(), query.getAppUserId()); + sysLive.setAppointmentStatus(memberInSet ? 2 : 1); } pageInfo.setRecords(list); return pageInfo; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysLiveVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysLiveVO.java index 1618405..3eeef7b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysLiveVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TSysLiveVO.java @@ -12,4 +12,8 @@ @ApiModelProperty(value = "直播状态 1=未开始 2=已开始 3=已结束") private Integer liveStatus; + @ApiModelProperty(value = "预约状态 1=未预约 2=已预约") + private Integer appointmentStatus; + + } -- Gitblit v1.7.1