Quellcode durchsuchen

修改目录权限

zhouzeyu vor 1 Woche
Ursprung
Commit
33fa5f35f3

+ 0 - 20
tr-modules/tr-module-system/src/main/java/cn/tr/module/common/exception/CustomException.java

@@ -1,20 +0,0 @@
-package cn.tr.module.common.exception;
-
-import lombok.Data;
-
-/**
- * 自定义异常
- *
- * @author Kevin
- */
-@Data
-public class CustomException extends RuntimeException {
-
-    private Integer code;
-
-    private String message;
-
-    public CustomException(String message) {
-        this.message = message;
-    }
-}

+ 27 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/common/menus/FrameEnum.java

@@ -0,0 +1,27 @@
+package cn.tr.module.common.menus;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 是否内嵌
+ *
+ * @author Kevin
+ */
+@Getter
+@AllArgsConstructor
+public enum FrameEnum {
+
+    /**
+     * 内嵌
+     */
+    YES("0", "内嵌"),
+    /**
+     * 不内嵌
+     */
+    NO("1", "不内嵌");
+
+    private String code;
+    private String desc;
+
+}

+ 27 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/common/menus/KeepaliveEnum.java

@@ -0,0 +1,27 @@
+package cn.tr.module.common.menus;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 是否缓存
+ *
+ * @author Kevin
+ */
+@Getter
+@AllArgsConstructor
+public enum KeepaliveEnum {
+
+    /**
+     * 缓存
+     */
+    NO("0", "缓存"),
+    /**
+     * 不缓存
+     */
+    YES("1", "不缓存");
+
+    private String code;
+    private String desc;
+
+}

+ 0 - 139
tr-modules/tr-module-system/src/main/java/cn/tr/module/common/utils/SecurityUtil.java

@@ -1,139 +0,0 @@
-package cn.tr.module.common.utils;
-
-import cn.dev33.satoken.SaManager;
-import cn.dev33.satoken.secure.BCrypt;
-import cn.dev33.satoken.spring.SpringMVCUtil;
-import cn.dev33.satoken.stp.StpLogic;
-import cn.hutool.core.util.StrUtil;
-
-import cn.tr.module.sys.oauth2.bean.LoginUser;
-import cn.tr.module.sys.oauth2.enums.GrantTypeEnum;
-import jakarta.servlet.http.HttpServletRequest;
-import java.util.Objects;
-
-/**
- * 安全服务工具类
- *
- * @author Kevin
- */
-public class SecurityUtil {
-    public static final String LOGIN_USER_KEY="loginUser";
-    /**
-     * 获取用户账户
-     **/
-    public static String getUsername() {
-        return getLoginUser().getUsername();
-    }
-
-
-    /**
-     * 获取用户
-     **/
-    public static LoginUser getLoginUser(String authorization) {
-        try {
-            return (LoginUser) getStpLogic().getTokenSessionByToken(authorization).get(LOGIN_USER_KEY);
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-    /**
-     * 获取用户
-     **/
-    public static LoginUser getLoginUser() {
-        try {
-
-            return (LoginUser) getStpLogic().getTokenSession().get(LOGIN_USER_KEY);
-        } catch (Exception ex) {
-            return null;
-        }
-    }
-
-    /**
-     * 获取用户
-     **/
-    public static void  setLogin(LoginUser loginUser) {
-        getStpLogic().getTokenSession().set(LOGIN_USER_KEY,loginUser);
-    }
-
-    public static boolean isSys(){
-        LoginUser loginUser = getLoginUser();
-        if(loginUser==null){
-            return false;
-        }
-        GrantTypeEnum grantType = loginUser.getGrantType();
-        if (GrantTypeEnum.APPKEY_APPSECRET.equals(grantType)) {
-            return false;
-        }
-        return Boolean.TRUE.equals(loginUser.isSys());
-    }
-
-    public static String getTenantId(){
-        return String.valueOf(SpringMVCUtil.getRequest().getAttribute("tenantId"));
-    }
-    /**
-     * 是否是超级管理员
-     **/
-    public static Boolean isSuperAdmin() {
-        return getLoginUser().isSuperAdmin();
-//        LoginUser loginUser = getLoginUser();
-//        String grantType = getLoginUser().getGrantType();
-//        if (GrantTypeEnum.APPKEY_APPSECRET.getValue().equalsIgnoreCase(grantType)) {
-//            return false;
-//        }
-//        List<SysRoleBO> roles = getSysUser().getRoles();
-//        if(CollUtil.isEmpty(roles)){
-//            return false;
-//        }
-//        return roles.stream().filter(role-> StrUtil.isNotBlank(role.getRoleCode()))
-//                .map(SysRoleBO::getRoleCode)
-//                .collect(Collectors.toSet())
-//                .contains("admin");
-    }
-
-    /**
-     * 是否是超级管理员
-     **/
-    public static Boolean isSysSuperAdmin(Long userId) {
-        return Objects.nonNull(userId) && userId == 1L;
-    }
-
-    /**
-     * 生成BCryptPasswordEncoder密码
-     *
-     * @param password 密码
-     * @return 加密字符串
-     */
-    public static String encryptPassword(String password) {
-        return BCrypt.hashpw(password);
-    }
-
-    /**
-     * 判断密码是否相同
-     *
-     * @param rawPassword     真实密码
-     * @param encodedPassword 加密后字符
-     * @return 结果
-     */
-    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
-        return BCrypt.checkpw(rawPassword, encodedPassword);
-    }
-
-    public static Object getId() {
-        return getLoginUser().getId();
-    }
-
-
-    public static StpLogic getStpLogic(){
-        HttpServletRequest request = SpringMVCUtil.getRequest();
-        return getStpLogic(request.getHeader("Login-Type"));
-    }
-
-    public static StpLogic getStpLogic(String loginType){
-        String header ="";
-        if(!StrUtil.isNullOrUndefined(loginType)){
-            header=loginType;
-        };
-        return SaManager.getStpLogic(header);
-    }
-}

+ 99 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/oauth2/controller/AccountController.java

@@ -0,0 +1,99 @@
+package cn.tr.module.sys.oauth2.controller;
+
+import cn.tr.core.exception.ServiceException;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.module.common.annotation.Log;
+import cn.tr.module.sys.exception.CustomException;
+import cn.tr.module.sys.oauth2.bean.LoginUser;
+import cn.tr.module.sys.oauth2.granter.IAccountOperator;
+import cn.tr.module.sys.oauth2.utils.SecurityUtil;
+import cn.tr.module.sys.oauth2.vo.AccountInfoVO;
+import cn.tr.module.sys.oauth2.vo.UserPassVo;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Optional;
+
+import static cn.tr.core.exception.TRExcCode.USER_ERROR_A0154;
+
+/**
+ * @author zzy
+ * @version 1.0
+ * @description: AccountController.java
+ * @date 2026/1/20 10:27
+ */
+
+@AllArgsConstructor
+@RestController
+@Tag(name = "账号信息接口")
+public class AccountController {
+    private final List<IAccountOperator> accountOperatorList;
+
+    @Operation(summary = "修改密码")
+    @PostMapping("/updatePass")
+    public CommonResult<Boolean> updatePass(@RequestBody @Validated UserPassVo userPassVo){
+        if (getAccountOperator().updatePass(userPassVo.getOldPass(), userPassVo.getNewPass())){
+            return CommonResult.success();
+        }else {
+            return CommonResult.error(USER_ERROR_A0154);
+        }
+    }
+
+    @Log(title = "获取当前用户信息")
+    @Operation(summary = "获取当前用户信息")
+    @PostMapping("/getUserInfo")
+    public CommonResult getUserInfo(){
+        return CommonResult.success(getAccountOperator().getUserInfo());
+    }
+
+    @Log(title = "获取权限集合")
+    @Operation(summary = "获取当前用户权限集合")
+    @PostMapping("/getPermCode")
+    public CommonResult getPermCode(){
+        return CommonResult.success(getAccountOperator().getPermCode());
+    }
+
+    @Log(title = "获取菜单集合")
+    @Operation(summary = "获取当前用户菜单集合")
+    @PostMapping("/getMenuList")
+    public CommonResult getMenuList(){
+        return CommonResult.success(getAccountOperator().getMenuList());
+    }
+
+    @Log(title = "获取当前用户账户信息")
+    @Operation(summary = "获取当前用户账户信息")
+    @PostMapping("/getAccountInfo")
+    public CommonResult getAccountInfo(){
+        return CommonResult.success(getAccountOperator().getAccountInfo());
+    }
+
+    @Log(title = "保存当前用户信息")
+    @Operation(summary = "保存当前用户信息")
+    @PostMapping("/saveAccountInfo")
+    public CommonResult saveAccountInfo(@RequestBody @Validated AccountInfoVO req){
+        getAccountOperator().saveAccountInfo(req);
+        return CommonResult.success();
+    }
+
+
+
+
+    private IAccountOperator getAccountOperator(){
+        LoginUser loginUser = SecurityUtil.getLoginUser();
+        Optional<IAccountOperator> accountOperator = accountOperatorList.stream()
+                .filter(operator -> operator.matchGrantType(loginUser.getGrantType()))
+                .findFirst();
+        if(accountOperator.isPresent()){
+            return accountOperator.get();
+        }
+        throw new CustomException(String.format("登录方式【%s】不存在",loginUser.getGrantType().getDesc()));
+    }
+
+}

+ 1 - 19
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/oauth2/controller/AuthController.java

@@ -2,7 +2,7 @@ package cn.tr.module.sys.oauth2.controller;
 
 import cn.tr.core.pojo.CommonResult;
 import cn.tr.module.common.annotation.Log;
-import cn.tr.module.common.exception.CustomException;
+import cn.tr.module.sys.exception.CustomException;
 import cn.tr.module.sys.oauth2.bean.AuthInfo;
 import cn.tr.module.sys.oauth2.bean.LoginUser;
 import cn.tr.module.sys.oauth2.granter.IAuthGranter;
@@ -65,24 +65,6 @@ public class AuthController {
                 .build());
     }
 
-//    /*
-//     * 根据键值,获取value
-//     */
-//    @ApiOperation("刷新token时间")
-//    @GetMapping("/refresh")
-//    public R getTime() {
-//        if (SecurityUtil.getStpLogic().isLogin()) {
-//            try {
-//                SecurityUtil.getStpLogic().checkActivityTimeout();
-//                //手动续签
-//                SecurityUtil.getStpLogic().updateLastActivityToNow();
-//            }catch (Exception e){
-//
-//            }
-//        }
-//        return R.success();
-//    }
-
     @Log(title = "退出")
     @Operation(summary = "用户登出")
     @PostMapping("/logout")

+ 3 - 3
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/oauth2/granter/IAccountOperator.java

@@ -3,6 +3,7 @@ package cn.tr.module.sys.oauth2.granter;
 
 
 import cn.tr.module.sys.oauth2.enums.GrantTypeEnum;
+import cn.tr.module.sys.oauth2.vo.AccountInfoVO;
 import cn.tr.module.sys.oauth2.vo.UserInfoVO;
 import cn.tr.module.sys.user.vo.RouteItemVO;
 
@@ -53,16 +54,15 @@ public interface IAccountOperator<T> {
     List<RouteItemVO> getMenuList();
 
 
-//    AccountInfoVO<T> getAccountInfo();
+    AccountInfoVO<T> getAccountInfo();
 
     /**
      * 描述: 设置当前用户账户信息
      * @author lifang
      * @date 2022/8/1 14:39
-     * @param req 账户信息
      * @return Set<String>
      */
-//    void saveAccountInfo(AccountInfoVO<T> req);
+    void saveAccountInfo(AccountInfoVO<T> req);
 
     boolean updatePass(String oldPass, String newPass);
 }

+ 0 - 1
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/oauth2/utils/SecurityUtil.java

@@ -43,7 +43,6 @@ public class SecurityUtil {
      **/
     public static LoginUser getLoginUser() {
         try {
-
             return (LoginUser) getStpLogic().getTokenSession().get(LOGIN_USER_KEY);
         } catch (Exception ex) {
             return null;

+ 76 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/oauth2/vo/AccountInfoVO.java

@@ -0,0 +1,76 @@
+package cn.tr.module.sys.oauth2.vo;
+
+
+import cn.tr.module.common.menus.SexEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * 账户信息VO
+ *
+ * @author Kevin
+ */
+@Data
+public class AccountInfoVO<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 昵称
+     */
+    @Schema(description = "昵称",required = false)
+    @Size(max = 100, message = "昵称长度不能超过100个字符")
+    private String nickname;
+
+    /**
+     * 姓名
+     */
+    @Schema(description = "姓名",required = false)
+    @Size(max = 100, message = "姓名长度不能超过100个字符")
+    private String realName;
+
+    /**
+     * 英文名
+     */
+    @Size(max = 100, message = "英文名长度不能超过100个字符")
+    private String englishName;
+
+    /**
+     * 头像
+     */
+    @Size(max = 100, message = "头像长度不能超过100个字符")
+    private String avatar;
+
+    /**
+     * 邮箱
+     */
+    @Size(max = 100, message = "邮箱长度不能超过100个字符")
+    private String email;
+
+    /**
+     * 手机号
+     */
+    @Size(max = 100, message = "手机号长度不能超过100个字符")
+    private String phone;
+
+
+    /**
+     * 性别 1男;2女;3未知
+     */
+    @Schema(description = "性别",required = false,allowableValues = "1(男)2(女)3(未知)")
+    private SexEnum sex;
+
+    /**
+     * 备注
+     */
+    @Size(max = 500, message = "备注长度不能超过500个字符")
+    private String remarks;
+
+
+    @Schema(description = "扩展字段")
+    private Map<String,Object> extendFields;
+}