baifucheng 2 mesi fa
parent
commit
06934875ca

+ 3 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/NursingWorkerController.java

@@ -25,15 +25,18 @@ import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
 import com.ruoyi.common.utils.CollectionUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.service.ApiTokenService;
 import com.ruoyi.info.hospital.domain.vo.HospitalVo;
 import com.ruoyi.info.hospital.service.IHospitalService;
 import com.ruoyi.info.nursing.domain.bo.EnableStatusBo;
 import com.ruoyi.info.nursing.domain.vo.NursingWorkerVo;
 import com.ruoyi.info.nursing.domain.bo.NursingWorkerBo;
+import com.ruoyi.info.nursing.enums.EnableStatusEnum;
 import com.ruoyi.info.nursing.service.INursingWorkerService;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.info.order.domain.vo.OrderWorkerSumVo;
 import com.ruoyi.info.order.service.IOrderService;
+import com.ruoyi.user.service.IUserService;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiParam;
@@ -128,8 +131,6 @@ public class NursingWorkerController extends BaseController {
     @PostMapping("/update-status")
     public R<Void> updateStatus(@Validated @RequestBody EnableStatusBo bo) {
         iNursingWorkerService.updateStatus(bo);
-
-        // TODO 如果是禁用状态 则需要强制踢出小程序端的登录用户
         return R.ok();
     }
 

+ 0 - 3
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiNursingWorkerController.java

@@ -17,12 +17,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.ruoyi.api.controller.common.AbstractApiController;
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
-import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
 import com.ruoyi.common.utils.BeanCopyUtils;
@@ -136,7 +134,6 @@ public class ApiNursingWorkerController extends AbstractApiController {
      */
     @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
     @ApiOperation("获取护工信息详细信息")
-    @SaCheckPermission("info:nursingWorker:query")
     @GetMapping("/info/{id}")
     public R<NursingWorkerVo> getInfo(@ApiParam("主键")
                                       @NotNull(message = "主键不能为空")

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/LoginApiInterceptor.java

@@ -83,7 +83,7 @@ public class LoginApiInterceptor implements HandlerInterceptor {
             //即将过期,则刷新token
             Date expirationDateFromToken = apiTokenService.getExpirationDateFromToken(accessToken);
 
-            // TODO 刷新token机制,目前前端未进行刷新处理,该逻辑暂时用不上
+            //  刷新token机制,目前前端未进行刷新处理,该逻辑暂时用不上
             if (apiTokenService.isRefreshToken(expirationDateFromToken)) {
                 //刷新token,并返回
                 String token = apiTokenService.generateToken(user);

+ 32 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/management/service/impl/ManagementTeacherServiceImpl.java

@@ -6,18 +6,25 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
+import javax.annotation.Resource;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.web.service.ApiTokenService;
 import com.ruoyi.info.hospital.domain.HospitalDepartment;
 import com.ruoyi.info.hospital.mapper.HospitalDepartmentMapper;
 import com.ruoyi.info.management.domain.ManagementTeacher;
@@ -32,6 +39,8 @@ import com.ruoyi.info.management.service.IManagementTeacherService;
 import com.ruoyi.info.management.service.ITeacherDepartmentRelService;
 import com.ruoyi.info.nursing.domain.bo.EnableStatusBo;
 import com.ruoyi.info.nursing.enums.EnableStatusEnum;
+import com.ruoyi.user.domain.User;
+import com.ruoyi.user.service.IUserService;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
@@ -59,6 +68,17 @@ public class ManagementTeacherServiceImpl implements IManagementTeacherService {
     private final TeacherDepartmentRelMapper teacherDepartmentRelMapper;
 
     private final ITeacherDepartmentRelService teacherDepartmentRelService;
+
+    private final StringRedisTemplate stringRedisTemplate;
+
+    @Lazy
+    @Resource
+    private ApiTokenService apiTokenService;
+
+    @Lazy
+    @Resource
+    private IUserService iUserService;
+
     /**
      * 查询管理老师信息分页
      *
@@ -245,6 +265,18 @@ public class ManagementTeacherServiceImpl implements IManagementTeacherService {
         managementTeacher.setUpdateTime(new Date());
 
         baseMapper.updateById(managementTeacher);
+
+        // 如果是禁用状态 则需要强制踢出小程序端的登录用户
+        if (EnableStatusEnum.isForbidden(bo.getEnableStatus())) {
+            // 获取护工对应的用户id
+            User user = iUserService.loadByMobile(managementTeacher.getPhoneNumber(), true);
+            Set<String> tokens = stringRedisTemplate.opsForSet().members(Constants.JWT_ONLINE_USER_TOKEN + user.getId());
+            if (CollUtil.isNotEmpty(tokens)) {
+                for (String token : tokens) {
+                    apiTokenService.removeToken(token);
+                }
+            }
+        }
     }
 
     @Override

+ 8 - 0
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/nursing/enums/EnableStatusEnum.java

@@ -19,5 +19,13 @@ public enum EnableStatusEnum {
 
     private final String desc;
 
+    public static boolean isEnable(String key) {
+        return ENABLE.getKey().equals(key);
+    }
+
+    public static boolean isForbidden(String key) {
+        return FORBIDDEN.getKey().equals(key);
+    }
+
 
 }

+ 34 - 1
ruoyi-info/ruoyi-info-biz/src/main/java/com/ruoyi/info/nursing/service/impl/NursingWorkerServiceImpl.java

@@ -4,18 +4,25 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
+import javax.annotation.Resource;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.BeanCopyUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.web.service.ApiTokenService;
 import com.ruoyi.info.nursing.domain.NursingCertificate;
 import com.ruoyi.info.nursing.domain.NursingWorker;
 import com.ruoyi.info.nursing.domain.bo.EnableStatusBo;
@@ -30,8 +37,11 @@ import com.ruoyi.info.nursing.mapper.NursingCertificateMapper;
 import com.ruoyi.info.nursing.mapper.NursingWorkerMapper;
 import com.ruoyi.info.nursing.service.INursingCertificateService;
 import com.ruoyi.info.nursing.service.INursingWorkerService;
+import com.ruoyi.user.domain.User;
+import com.ruoyi.user.service.IUserService;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
@@ -52,6 +62,16 @@ public class NursingWorkerServiceImpl implements INursingWorkerService {
 
     private final INursingCertificateService nursingCertificateService;
 
+    @Lazy
+    @Resource
+    private ApiTokenService apiTokenService;
+
+    @Lazy
+    @Resource
+    private IUserService iUserService;
+
+    private final StringRedisTemplate stringRedisTemplate;
+
     /**
      * 查询护工信息分页
      *
@@ -214,13 +234,26 @@ public class NursingWorkerServiceImpl implements INursingWorkerService {
         return true;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateStatus(EnableStatusBo bo) {
+        // 修改状态
         NursingWorker nursingWorker = baseMapper.selectById(bo.getId());
         nursingWorker.setEnableStatus(bo.getEnableStatus());
         nursingWorker.setUpdateTime(new Date());
-
         baseMapper.updateById(nursingWorker);
+
+        // 如果是禁用状态 则需要强制踢出小程序端的登录用户
+        if (EnableStatusEnum.isForbidden(bo.getEnableStatus())) {
+            // 获取护工对应的用户id
+            User user = iUserService.loadByMobile(nursingWorker.getPhoneNumber(), true);
+            Set<String> tokens = stringRedisTemplate.opsForSet().members(Constants.JWT_ONLINE_USER_TOKEN + user.getId());
+            if (CollUtil.isNotEmpty(tokens)) {
+                for (String token : tokens) {
+                    apiTokenService.removeToken(token);
+                }
+            }
+        }
     }
 
     @Override