lsw 8 місяців тому
батько
коміт
1272af52db

+ 19 - 9
app/common/http.js

@@ -13,11 +13,10 @@ const request = (opt) => {
 	opt.header = opt.header || {
 		"Content-Type": opt.contentType,
 		"Authorization": getUser().token ? getUser().token : ''
-
 	};
 	opt.loading = opt.loading || 'true';
-	opt.success = opt.success || function() {};
-	opt.fail = opt.fail || function() {};
+	opt.success = opt.success || function () {};
+	opt.fail = opt.fail || function () {};
 	// console.log("**************************************参数调式***************************************************");
 	// console.log("请求地址:" + opt.url + " 请求参数:" + JSON.stringify(opt.data));
 	// console.log("************************************************************************************************");
@@ -37,12 +36,23 @@ const request = (opt) => {
 			setTimeout(() => {
 				uni.hideLoading();
 			}, 500)
-			/*******************未授权***************************/
-			if (res.data.code === 401) {
-				uni.removeStorageSync('user');
-				uni.navigateTo({
-					url: '/pages/user/login'
-				})
+			/*******************未授权或未登录***************************/
+			if (res.data.code === 401 || res.data.code === 403) {
+				uni.showModal({
+					title: '提示',
+					content: res.data.msg,
+					showCancel: false,
+					success: () => {
+						uni.removeStorageSync('user');
+						if (res.data.code === 401) {
+							uni.navigateTo({
+								url: '/pages/user/login'
+							})
+						}
+						opt.fail();
+						return;
+					}
+				});
 				return;
 			}
 			/*******************系统内部错误***************************/

+ 10 - 10
ruoyi-admin/src/main/java/com/ruoyi/web/work/controller/UserController.java

@@ -14,11 +14,11 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.List;
 
 /**
  * 用户管理
+ *
  * @author lsw
  * @date 2024-04-15
  */
@@ -33,33 +33,33 @@ public class UserController extends BaseController {
 
     @PreAuthorize("@ss.hasPermi('work:user:list')")
     @GetMapping("/list")
-    public TableDataInfo list(User user){
+    public TableDataInfo list(User user) {
         startPage();
         List<User> list = userService.selectList(user);
         return getDataTable(list);
     }
 
     @GetMapping(value = "/detail/{id}")
-    public AjaxResult detail(@PathVariable("id") Long id){
+    public AjaxResult detail(@PathVariable("id") Long id) {
         return AjaxResult.success(userService.getById(id));
     }
 
     @PreAuthorize("@ss.hasPermi('work:user:edit')")
-    @Log(title = "用户管理", businessType = BusinessType.UPDATE)
+    @Log(title = "启用或停户", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody User user){
-        return toAjax(userService.updateById(user));
+    public AjaxResult edit(@RequestBody User user) {
+        return userService.enable(user);
     }
 
     @PreAuthorize("@ss.hasPermi('work:user:remove')")
     @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids){
-        return toAjax(userService.removeByIds(Arrays.asList(ids)));
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return userService.remove(ids);
     }
 
     @GetMapping("/look")
-    public void look(HttpServletResponse response,Long userId) throws IOException {
-        contractService.look(response,userId);
+    public void look(HttpServletResponse response, Long userId) throws IOException {
+        contractService.look(response, userId);
     }
 }

+ 17 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/IUserService.java

@@ -59,7 +59,24 @@ public interface IUserService extends IService<User> {
 
     /**
      * 用户详情
+     *
      * @return
      */
     AjaxResult info();
+
+    /**
+     * 启用或停用账户
+     *
+     * @param user
+     * @return
+     */
+    AjaxResult enable(User user);
+
+    /**
+     * 批量删除用户
+     *
+     * @param ids
+     * @return
+     */
+    AjaxResult remove(Long[] ids);
 }

+ 40 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/service/impl/UserServiceImpl.java

@@ -3,7 +3,9 @@ package com.ruoyi.web.work.service.impl;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
@@ -27,6 +29,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -42,6 +46,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     private TokenServices tokenService;
 
     @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
     private IResumeService resumeService;
 
     @Autowired
@@ -50,6 +57,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Autowired
     private Environment env;
 
+
     @Override
     public List<User> selectList(User user) {
         return userMapper.selectList(user);
@@ -157,4 +165,36 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public AjaxResult info() {
         return AjaxResult.success(userMapper.selectUser(AppUtil.getUser()));
     }
+
+    @Override
+    public AjaxResult enable(User user) {
+        if (!updateById(user)) {
+            throw new ServiceException("启用或停用账户失败");
+        }
+        if (user.getState() == 1) {
+            deleteCache(user.getId());
+        }
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult remove(Long[] ids) {
+        if (!removeByIds(Arrays.asList(ids))) {
+            throw new ServiceException("删除失败");
+        }
+        for (Long id : ids) {
+            deleteCache(id);
+        }
+        return AjaxResult.success();
+    }
+
+    private void deleteCache(Long id) {
+        Collection<String> keys = redisCache.keys(CacheConstants.APP_LOGIN_TOKEN_KEY + "*");
+        for (String key : keys) {
+            User loginUser = redisCache.getCacheObject(key);
+            if (loginUser != null && loginUser.getId().equals(id)) {
+                tokenService.delLoginUser(loginUser.getToken());
+            }
+        }
+    }
 }