| package com.ruoyi.common.utils; | 
|   | 
| import com.ruoyi.common.core.domain.model.LoginUserApplet; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.security.core.Authentication; | 
| import org.springframework.security.core.context.SecurityContextHolder; | 
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | 
| import com.ruoyi.common.constant.HttpStatus; | 
| import com.ruoyi.common.core.domain.model.LoginUser; | 
| import com.ruoyi.common.exception.ServiceException; | 
|   | 
| /** | 
|  * 安全服务工具类 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| @Slf4j | 
| public class SecurityUtils | 
| { | 
|     /** | 
|      * 用户ID | 
|      **/ | 
|     public static Long getUserId() | 
|     { | 
|         try | 
|         { | 
|             return getLoginUser().getUserId(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 获取部门ID | 
|      **/ | 
|     public static String getDeptId() | 
|     { | 
|         try | 
|         { | 
|             return getLoginUser().getDeptId(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|     } | 
|     /** | 
|      * 获取营业部ID | 
|      **/ | 
|   | 
|     /** | 
|      * 获取用户账户 | 
|      **/ | 
|     public static String getUsername() | 
|     { | 
|         try | 
|         { | 
|             return getLoginUser().getUsername(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             log.error("获取用户信息发生异常",e); | 
| //            throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|         return ""; | 
|     } | 
|     /** | 
|      * 获取用户账户小程序 | 
|      **/ | 
|     public static String getUsernameApplet() | 
|     { | 
|         try | 
|         { | 
|             return getLoginUserApplet().getUsername(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 获取用户 | 
|      **/ | 
|     public static LoginUser getLoginUser() | 
|     { | 
|         try | 
|         { | 
|             return (LoginUser) getAuthentication().getPrincipal(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|     } | 
|     public static LoginUserApplet getLoginUserApplet() | 
|     { | 
|         try | 
|         { | 
|             return (LoginUserApplet) getAuthentication().getPrincipal(); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 获取Authentication | 
|      */ | 
|     public static Authentication getAuthentication() | 
|     { | 
|         return SecurityContextHolder.getContext().getAuthentication(); | 
|     } | 
|   | 
|     /** | 
|      * 生成BCryptPasswordEncoder密码 | 
|      * | 
|      * @param password 密码 | 
|      * @return 加密字符串 | 
|      */ | 
|     public static String encryptPassword(String password) | 
|     { | 
|         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | 
|         return passwordEncoder.encode(password); | 
|     } | 
|   | 
|     /** | 
|      * 判断密码是否相同 | 
|      * | 
|      * @param rawPassword 真实密码 | 
|      * @param encodedPassword 加密后字符 | 
|      * @return 结果 | 
|      */ | 
|     public static boolean matchesPassword(String rawPassword, String encodedPassword) | 
|     { | 
|         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); | 
|         return passwordEncoder.matches(rawPassword, encodedPassword); | 
|     } | 
|   | 
|     /** | 
|      * 是否为管理员 | 
|      *  | 
|      * @param userId 用户ID | 
|      * @return 结果 | 
|      */ | 
|     public static boolean isAdmin(Long userId) | 
|     { | 
|         return userId != null && 1L == userId; | 
|     } | 
| } |