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() { 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(); } 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:"; } 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 字符串前缀 ruoyi-common/src/main/java/com/ruoyi/common/core/utils/Constants.java
File was deleted 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; 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; } 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; 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; }