diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java b/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java index 3b7015e1fff9e0834e80b5a66ef0d4d1c9cf7c8c..369c8a36cb70c93497898fd1f4899d18596c8931 100644 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java +++ b/src/main/java/org/micai/platform/auth/base/storage/impl/AbstractStorage.java @@ -3,7 +3,8 @@ package org.micai.platform.auth.base.storage.impl; import lombok.extern.slf4j.Slf4j; import org.micai.platform.auth.base.storage.Storage; import org.micai.platform.auth.config.SiteOptions; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.utils.FileKit; import org.micai.platform.auth.utils.FilePathUtils; import org.micai.platform.auth.utils.ImageUtils; @@ -27,10 +28,10 @@ public abstract class AbstractStorage implements Storage { */ protected void validateFile(MultipartFile file) { if (file == null || file.isEmpty()) { - throw new ServiceException("文件不能为空"); + throw new PlatformException(ConstantEnum.NO_FILE); } if (!FileKit.checkFileType(file.getOriginalFilename())) { - throw new ServiceException("文件格式不支持"); + throw new PlatformException(ConstantEnum.TYPE); } } diff --git a/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java b/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java index 792dc21c7ae0190a6d6089a3ff6ab7ca8790f870..068160395e66048411686533687d76cd496c4383 100644 --- a/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java +++ b/src/main/java/org/micai/platform/auth/base/storage/impl/OssStorageImpl.java @@ -5,7 +5,8 @@ import com.upyun.UpYunUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.micai.platform.auth.base.storage.Storage; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.utils.FileKit; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; @@ -43,7 +44,7 @@ public class OssStorageImpl extends AbstractStorage implements Storage { String src = siteOptions.getValue(oss_src); if (StringUtils.isAnyBlank(endpoint, bucket)) { - throw new ServiceException("请先在后台设置阿里云配置信息"); + throw new PlatformException(ConstantEnum.NO_ALIYUN_CONFIG); } if (StringUtils.isBlank(src)) { @@ -71,7 +72,7 @@ public class OssStorageImpl extends AbstractStorage implements Storage { String accessKeySecret = siteOptions.getValue(oss_secret); if (StringUtils.isAnyBlank(endpoint, accessKeyId, accessKeySecret)) { - throw new ServiceException("请先在后台设置阿里云配置信息"); + throw new PlatformException(ConstantEnum.NO_ALIYUN_CONFIG); } return new OSSClient(endpoint, accessKeyId, accessKeySecret); } diff --git a/src/main/java/org/micai/platform/auth/bo/MenuDelBo.java b/src/main/java/org/micai/platform/auth/bo/MenuDelBo.java new file mode 100644 index 0000000000000000000000000000000000000000..9aac6037f9f07df926ef80b83547be3debcff217 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/MenuDelBo.java @@ -0,0 +1,23 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.util.List; + +/** + * @Author liuCong + * @Date 2021/12/30 9:17 + * @ClassName MenuDelBo + * @Description + */ +@Data +@ApiModel(value = "菜单删除bo") +public class MenuDelBo { + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; +} diff --git a/src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java b/src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java new file mode 100644 index 0000000000000000000000000000000000000000..8441677954e570dd6fd4bf12afd5ae5d9715e225 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/MenuSaveBo.java @@ -0,0 +1,49 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/30 9:16 + * @ClassName MenuSaveBo + * @Description + */ +@Data +@ApiModel(value = "菜单保存bo") +public class MenuSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "菜单名称") + private String menuName; + + @ApiModelProperty(value = "业务系统标识,区分不同业务系统菜单") + private String systemCode; + + @ApiModelProperty(value = "业务系统名称") + private String systemName; + + @ApiModelProperty(value = "终端类型,00:平台") + private String application; + + @ApiModelProperty(value = "父级菜单编码") + private String parentCode; + + @ApiModelProperty(value = "菜单图标") + private String menuIcon; + + @ApiModelProperty(value = "菜单访问路径") + private String url; + + @ApiModelProperty(value = "菜单打开类型,1:路由 2:新标签页 3:iframe") + private String openType; + + @ApiModelProperty(value = "序号") + private Integer sn; + + +} diff --git a/src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java new file mode 100644 index 0000000000000000000000000000000000000000..cc287e9ec22c77b030fda4decd8c9b50bfdc0407 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/MenuUpdateBo.java @@ -0,0 +1,53 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/30 9:16 + * @ClassName MenuUpdateBo + * @Description + */ +@Data +@ApiModel(value = "菜单更新bo") +public class MenuUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @NotBlank(message = "主键id 不能为空") + private Long id; + + @ApiModelProperty(value = "菜单名称") + private String menuName; + + @ApiModelProperty(value = "业务系统标识,区分不同业务系统菜单") + private String systemCode; + + @ApiModelProperty(value = "业务系统名称") + private String systemName; + + @ApiModelProperty(value = "终端类型,00:平台") + private String application; + + @ApiModelProperty(value = "父级菜单编码") + private String parentCode; + + @ApiModelProperty(value = "菜单图标") + private String menuIcon; + + @ApiModelProperty(value = "菜单访问路径") + private String url; + + @ApiModelProperty(value = "菜单打开类型,1:路由 2:新标签页 3:iframe") + private String openType; + + @ApiModelProperty(value = "序号") + private Integer sn; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java new file mode 100644 index 0000000000000000000000000000000000000000..131d3c11e6f2594d873b4a051f9137273ef3816f --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionDelBo.java @@ -0,0 +1,27 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * @Author liuCong + * @Date 2021/12/29 16:50 + * @ClassName PermissionDelBo + * @Description + */ +@Data +@ApiModel(value = "权限删除bo") +public class PermissionDelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java new file mode 100644 index 0000000000000000000000000000000000000000..7d7f0616664b4067b50e157cd0bc8c1cd6c3d0ae --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionFindBo.java @@ -0,0 +1,31 @@ +package org.micai.platform.auth.bo; + +import cn.hutool.db.Page; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 16:50 + * @ClassName PermissionFindBo + * @Description + */ +@Data +@ApiModel(value = "权限查询bo") +public class PermissionFindBo extends Page implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "权限编码") + private String permissionCode; + + @ApiModelProperty(value = "权限名称") + private String permissionName; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java new file mode 100644 index 0000000000000000000000000000000000000000..99df3cabe7f6a1eef72d6791af80422a04faa80d --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionSaveBo.java @@ -0,0 +1,30 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 16:47 + * @ClassName PermissionSaveBo + * @Description + */ +@Data +@ApiModel(value = "权限保存bo") +public class PermissionSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "权限编码") + private String permissionCode; + + @ApiModelProperty(value = "权限名称") + private String permissionName; + + @ApiModelProperty(value = "描述") + private String description; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java new file mode 100644 index 0000000000000000000000000000000000000000..a215a02819ac2613a3e3bf2e84a17c5f7ecc5879 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/PermissionUpdateBo.java @@ -0,0 +1,40 @@ +package org.micai.platform.auth.bo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 16:50 + * @ClassName PermissionUpdateBo + * @Description + */ +@Data +@ApiModel(value = "权限更新bo") +public class PermissionUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "权限编码") + private String permissionCode; + + @ApiModelProperty(value = "权限名称") + private String permissionName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + + +} diff --git a/src/main/java/org/micai/platform/auth/bo/RoleDelBo.java b/src/main/java/org/micai/platform/auth/bo/RoleDelBo.java new file mode 100644 index 0000000000000000000000000000000000000000..abddc80c5e3f1f0058cac0166983680ba8f301d3 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RoleDelBo.java @@ -0,0 +1,26 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.util.List; + +/** + * @Author liuCong + * @Date 2021/12/29 16:06 + * @ClassName RoleDelBo + * @Description + */ +@Data +@ApiModel(value = "删除角色list的bo") +public class RoleDelBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "idList", required = true) + @NotEmpty(message = "id不能为空") + private List idList; +} diff --git a/src/main/java/org/micai/platform/auth/bo/RoleFindBo.java b/src/main/java/org/micai/platform/auth/bo/RoleFindBo.java new file mode 100644 index 0000000000000000000000000000000000000000..61160f7da52d9e2cdd787bccfc576ac9468eb687 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RoleFindBo.java @@ -0,0 +1,31 @@ +package org.micai.platform.auth.bo; + +import cn.hutool.db.Page; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 15:35 + * @ClassName RoleFindBo + * @Description + */ +@Data +@ApiModel(value = "查询角色bo") +public class RoleFindBo extends Page implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "角色编码") + private String roleCode; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java b/src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java new file mode 100644 index 0000000000000000000000000000000000000000..40952bc8932dc37addd2e37653aeddd5d97773d7 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RoleSaveBo.java @@ -0,0 +1,27 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 15:28 + * @ClassName RoleSaveBo + * @Description + */ +@Data +@ApiModel(value = "角色保存bo") +public class RoleSaveBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "描述") + private String description; + +} diff --git a/src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java b/src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java new file mode 100644 index 0000000000000000000000000000000000000000..08e1f9f7c03ab29279a15db9db35abb3ff082310 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/bo/RoleUpdateBo.java @@ -0,0 +1,34 @@ +package org.micai.platform.auth.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author liuCong + * @Date 2021/12/29 15:49 + * @ClassName RoleUpdateBo + * @Description + */ +@Data +@ApiModel(value = "角色更新bo") +public class RoleUpdateBo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @NotBlank(message = "主键id 不能为空") + private Long id; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; +} diff --git a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java index a58689884ddb9ab681f1a30bf9c4d5388bb35e35..64ad9bf077047bf013c56a62e9610076cece24bf 100644 --- a/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java +++ b/src/main/java/org/micai/platform/auth/config/WebSecurityConfig.java @@ -6,13 +6,13 @@ import org.micai.platform.auth.handler.Http401AuthenticationEntryPoint; import org.micai.platform.auth.provider.CustomAuthenticationProvider; import org.micai.platform.auth.service.*; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.annotation.web.configurers.LogoutConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @@ -65,6 +65,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private PermissionService permissionService; + + @Value("${sign.key}") + private String signKey; + /** * 设置 HTTP 验证规则 * @param http @@ -72,7 +76,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { */ @Override protected void configure(HttpSecurity http) throws Exception { - LogoutConfigurer httpSecurityLogoutConfigurer = http.cors().and().csrf().disable() + http.cors().and().csrf().disable() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeRequests() .antMatchers(AUTH_WHITELIST).permitAll() @@ -84,8 +88,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .and() // .exceptionHandling().accessDeniedHandler(customAccessDeniedHandler) // 自定义访问失败处理器 // .and() - .addFilter(new JWTLoginFilter(authenticationManager())) - .addFilter(new JWTAuthenticationFilter(authenticationManager())) + .addFilter(new JWTLoginFilter(authenticationManager(), signKey)) + .addFilter(new JWTAuthenticationFilter(authenticationManager(), signKey)) .logout() // 默认注销行为为logout,可以通过下面的方式来修改 .logoutUrl("/logout") .logoutSuccessUrl("/login")// 设置注销成功后跳转页面,默认是跳转到登录页面; diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java index d6ecdfb36f6ea7e840941f7892b8f120cd33f0f2..df7f5a0150ed643221a4459a8ee52c617fe139ca 100644 --- a/src/main/java/org/micai/platform/auth/constant/ConstantCode.java +++ b/src/main/java/org/micai/platform/auth/constant/ConstantCode.java @@ -7,10 +7,22 @@ package org.micai.platform.auth.constant; * @Description */ public class ConstantCode { + + /** + * 00 + */ + public static final String STR_DOUBLE_ZONE = "00"; + /** * 01 */ - public static final String STR_ONE = "01"; + public static final String STR_Z_ONE = "01"; + + + /** + * 2 + */ + public static final String STR_TWO = "2"; /** * 0 @@ -27,11 +39,21 @@ public class ConstantCode { */ public static final int INT_TWO = 2; + /** + * 3 + */ + public static final int INT_THREE = 3; + /** * 7 */ public static final int INT_SEVEN = 7; + /** + * 10 + */ + public static final int INT_TEN = 10; + /** * 角色前缀 */ @@ -58,51 +80,142 @@ public class ConstantCode { public static final String CONTENT_TYPE_JSON = "application/json;charset=UTF-8"; /** - * 成功 + * 1024 顶 */ - public static final Integer SUCCESS = 10000; - public static final String SUCCESS_MSG = "成功"; + public static final int DING = 1024; /** - * 失败 + * SIZE */ - public static final Integer FAIL = 10001; - public static final String FAIL_MSG = "失败"; + public static final String SIZE = "size"; /** - * token 验证失败 + * WIDTH */ - public static final Integer TOKEN_ERROR = 10002; - public static final String TOKEN_ERROR_MSG = "无效TOKEN, 请重新登录!"; + public static final String WIDTH = "width"; /** - * token 丢失 + * HEIGHT */ - public static final Integer TOKEN_MISS = 10003; - public static final String TOKEN_MISS_MSG = "token 丢失"; + public static final String HEIGHT = "height"; + /** - * 用户名或密码错误 + * 文件存储-缩略图目录 */ - public static final Integer USER_CODE_ERROR = 10004; - public static final String USER_CODE_ERROR_MSG = "用户名或密码错误"; + public static final String thumbnailPath = "/storage/thumbnails"; /** - * 参数为空 + * 文件存储-头像目录 */ - public static final Integer PARAM_ERROR = 10009; - public static final String PARAM_ERROR_MSG = "参数为空"; + public static final String avatarPath = "/storage/avatars"; /** - * 验证码失效 + * 默认头像 */ - public static final Integer VALIDATION_CODE_ERROR = 10010; - public static final String VALIDATION_CODE_ERROR_MSG = "验证码失效,请重新获取"; + public static final String AVATAR = "https://en.gravatar.com/userimage/154673030/b9a54b5b990a61cc074668b2e2a0b8c0.png"; /** - * 该用户已存在 + * 分隔符 */ - public static final Integer USER_EXIST = 10011; - public static final String USER_EXIST_MSG = "该用户已存在"; + public static final String SEPARATOR = ","; + + public static final String SEPARATOR_X = "x"; + + public static final String ROLE_ADMIN = "admin"; + + public static final int PAGE_DEFAULT_SIZE = 10; + + public static final int IDENTITY_STEP = 1; // 自增步进 + + public static final int DECREASE_STEP = -1; // 递减 + + public static final int TIME_MIN = 1000; // 最小时间单位, 1秒 + + // 忽略值 + public static final int IGNORE = -1; + + public static final int ZERO = 0; + + // 禁用状态 + public static final int STATUS_CLOSED = 1; + + /* 状态-初始 */ + public static final int STATUS_NORMAL = 0; + + /* 状态-推荐 */ + public static final int STATUS_FEATURED = 1; + + /* 状态-锁定 */ + public static final int STATUS_LOCKED = 1; + + public static final int STATUS_HIDDEN = 1; + + /** + * 排序 + */ + public interface order { + String FEATURED = "featured"; + String NEWEST = "newest"; + String HOTTEST = "hottest"; + String FAVOR = "favors"; + } + + public static final int CODE_BIND = 1; // bind email + public static final int CODE_FORGOT = 2; // forgot password + public static final int CODE_REGISTER = 3; + + public static final int CODE_STATUS_INIT = 0; // 验证码-初始 + public static final int CODE_STATUS_CERTIFIED = 1; // 验证码-已使用 + + public static final int FEATURED_DEFAULT = 0; // 推荐状态-默认 + public static final int FEATURED_ACTIVE = 1; // 推荐状态-推荐 + + /** + * 未读 + */ + public static final int UNREAD = 0; + + /** + * 已读 + */ + public static final int READED = 1; + + public static final int MESSAGE_EVENT_FAVOR_POST = 1; // 有人喜欢了你的文章 + + public static final int MESSAGE_EVENT_COMMENT = 3; // 有人评论了你 + + public static final int MESSAGE_EVENT_COMMENT_REPLY = 4; // 有人回复了你 + + public static final String CACHE_USER = "userCaches"; + public static final String CACHE_POST = "postCaches"; + + /** + * 第三方回调配置 + */ + public static final String QQ_CALLBACK = "qq_callback"; // 第三方登录-QQ回调地址 + public static final String QQ_APP_ID = "qq_app_id"; // QQ互联APP_ID + public static final String QQ_APP_KEY = "qq_app_key"; // QQ互联APP_KEY + + public static final String WEIBO_CALLBACK = "weibo_callback"; // 第三方登录-微博回调地址 + public static final String WEIBO_CLIENT_ID = "weibo_client_id"; // 微博应用CLIENT_ID + public static final String WEIBO_CLIENT_SERCRET = "weibo_client_sercret"; // 微博应用CLIENT_SERCRET + + public static final String DOUBAN_CALLBACK = "douban_callback"; // 第三方登录-豆瓣回调地址 + public static final String DOUBAN_API_KEY = "douban_api_key"; // 豆瓣API_KEY + public static final String DOUBAN_SECRET_KEY = "douban_secret_key"; // 豆瓣SECRET_KEY + + public static final String GITHUB_CALLBACK = "github_callback"; // 第三方登录-github回调地址 + public static final String GITHUB_CLIENT_ID = "github_client_id";//github应用CLIENT_ID + public static final String GITHUB_SECRET_KEY = "github_secret_key";//github应用SECRET_KEY + + public static final String EMAIL_TEMPLATE_CODE = "email_code.ftl"; + + public static final String EDITOR_MARKDOWN = "markdown"; + + public static final String STORAGE_LIMIT_SIZE = "storage_limit_size"; + public static final String STORAGE_MAX_WIDTH = "storage_max_width"; + + public static final String THUMBNAIL_POST_SIZE = "thumbnail_post_size"; } diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..28ce06f9cd03f8d11bca735ca69e024f51b009e2 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/constant/ConstantEnum.java @@ -0,0 +1,92 @@ +package org.micai.platform.auth.constant; + +/** + * @Author liuCong + * @Date 2021/12/30 10:15 + * @ClassName ConstantEnum + * @Description + */ +public enum ConstantEnum { + + SUCCESS("10000", "成功"), + + FAIL("10001", "失败"), + + TOKEN_ERROR("10002", "无效TOKEN, 请重新登录!"), + + TOKEN_MISS("10003", "token 丢失"), + + USER_CODE_ERROR("10004", "用户名或密码错误"), + + USER_OLD_PASSWORD("10005","原密码不正确"), + + USER_FREEZE("10007","用户已冻结"), + + REDIS_CONNECT_ERROR("10008","redis 连接异常"), + + PARAM_ERROR("10009", "参数为空"), + + VALIDATION_CODE_ERROR("10010", "验证码失效,请重新获取"), + + USER_EXIST("10011", "该用户已存在"), + + UPDATE_ERROR("10012", "更新失败,请重试"), + + NO_FILE("10013", "未包含文件上传域"), + + TYPE("10014", "不允许的文件格式"), + + SIZE("10015", "文件大小超出限制,最大支持2Mb"), + + EN_TYPE("10016", "请求类型ENTYPE错误"), + + REQUEST("10017", "上传请求异常"), + + IO("10018", "IO异常"), + + DIR("10019", "目录创建失败"), + + UNKNOWN("10020", "未知错误"), + + NO_ROLE("10021", "没有角色信息"), + + NO_ALIYUN_CONFIG("10022", "请先在后台设置阿里云配置信息"), + + NO_PERMISSION("10023", "没有权限信息"), + + SIGNATURE_EX("10024", "签名错误"), + + ILLEGAL_ARG("10025", "非法错误"), + + EXPIRED_JWT("10026", "token过期,请重新登录"); + + + + + + private String code; + + private String message; + + + ConstantEnum(String code, String message) { + this.code = code; + this.message = message; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/org/micai/platform/auth/constant/ConstantKey.java b/src/main/java/org/micai/platform/auth/constant/ConstantKey.java deleted file mode 100644 index ec4d57c0792c2b7ffb729ff27200b8ec3757e605..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/constant/ConstantKey.java +++ /dev/null @@ -1,134 +0,0 @@ -package org.micai.platform.auth.constant; - -/** - * 描述: - *

- * - * @author: 赵新国 - * @date: 2018/3/12 16:07 - */ -public interface ConstantKey { - - /** - * 签名key - */ - public static final String SIGNING_KEY = "spring-security-@Jwt!&Secret^#"; - - /** - * 文件存储-缩略图目录 - */ - String thumbnailPath = "/storage/thumbnails"; - - /** - * 文件存储-头像目录 - */ - String avatarPath = "/storage/avatars"; - - /** - * 默认头像 - */ - String AVATAR = "https://en.gravatar.com/userimage/154673030/b9a54b5b990a61cc074668b2e2a0b8c0.png"; - - /** - * 分隔符 - */ - String SEPARATOR = ","; - - String SEPARATOR_X = "x"; - - String ROLE_ADMIN = "admin"; - - int PAGE_DEFAULT_SIZE = 10; - - int IDENTITY_STEP = 1; // 自增步进 - - int DECREASE_STEP = -1; // 递减 - - int TIME_MIN = 1000; // 最小时间单位, 1秒 - - // 忽略值 - int IGNORE = -1; - - int ZERO = 0; - - // 禁用状态 - int STATUS_CLOSED = 1; - - /* 状态-初始 */ - int STATUS_NORMAL = 0; - - /* 状态-推荐 */ - int STATUS_FEATURED = 1; - - /* 状态-锁定 */ - int STATUS_LOCKED = 1; - - int STATUS_HIDDEN = 1; - - /** - * 排序 - */ - interface order { - String FEATURED = "featured"; - String NEWEST = "newest"; - String HOTTEST = "hottest"; - String FAVOR = "favors"; - } - - int CODE_BIND = 1; // bind email - int CODE_FORGOT = 2; // forgot password - int CODE_REGISTER = 3; - - int CODE_STATUS_INIT = 0; // 验证码-初始 - int CODE_STATUS_CERTIFIED = 1; // 验证码-已使用 - - int FEATURED_DEFAULT = 0; // 推荐状态-默认 - int FEATURED_ACTIVE = 1; // 推荐状态-推荐 - - /** - * 未读 - */ - int UNREAD = 0; - - /** - * 已读 - */ - int READED = 1; - - int MESSAGE_EVENT_FAVOR_POST = 1; // 有人喜欢了你的文章 - - int MESSAGE_EVENT_COMMENT = 3; // 有人评论了你 - - int MESSAGE_EVENT_COMMENT_REPLY = 4; // 有人回复了你 - - String CACHE_USER = "userCaches"; - String CACHE_POST = "postCaches"; - - /** - * 第三方回调配置 - */ - String QQ_CALLBACK = "qq_callback"; // 第三方登录-QQ回调地址 - String QQ_APP_ID = "qq_app_id"; // QQ互联APP_ID - String QQ_APP_KEY = "qq_app_key"; // QQ互联APP_KEY - - String WEIBO_CALLBACK = "weibo_callback"; // 第三方登录-微博回调地址 - String WEIBO_CLIENT_ID = "weibo_client_id"; // 微博应用CLIENT_ID - String WEIBO_CLIENT_SERCRET = "weibo_client_sercret"; // 微博应用CLIENT_SERCRET - - String DOUBAN_CALLBACK = "douban_callback"; // 第三方登录-豆瓣回调地址 - String DOUBAN_API_KEY = "douban_api_key"; // 豆瓣API_KEY - String DOUBAN_SECRET_KEY = "douban_secret_key"; // 豆瓣SECRET_KEY - - String GITHUB_CALLBACK = "github_callback"; // 第三方登录-github回调地址 - String GITHUB_CLIENT_ID = "github_client_id";//github应用CLIENT_ID - String GITHUB_SECRET_KEY = "github_secret_key";//github应用SECRET_KEY - - String EMAIL_TEMPLATE_CODE = "email_code.ftl"; - - String EDITOR_MARKDOWN = "markdown"; - - String STORAGE_LIMIT_SIZE = "storage_limit_size"; - String STORAGE_MAX_WIDTH = "storage_max_width"; - - String THUMBNAIL_POST_SIZE = "thumbnail_post_size"; -} diff --git a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java b/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java index b7c7c8f5180006ac87c7f90248d747c028da8868..2caf64a4b6597d7e99a42b3376158d8c5290dff3 100644 --- a/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java +++ b/src/main/java/org/micai/platform/auth/controller/JwtExceptionController.java @@ -1,10 +1,16 @@ package org.micai.platform.auth.controller; import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.SignatureException; import io.jsonwebtoken.UnsupportedJwtException; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.result.Result; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + import javax.servlet.http.HttpServletRequest; /** @@ -15,34 +21,53 @@ import javax.servlet.http.HttpServletRequest; * @Version 1.0 */ @RestController +@Api(tags = "Jwt异常处理类",value = "Jwt异常处理类") +@Slf4j public class JwtExceptionController { @RequestMapping("/expiredJwtException") - public void expiredJwtException(HttpServletRequest request) throws ExpiredJwtException { + public Result expiredJwtException(HttpServletRequest request) { if (request.getAttribute("expiredJwtException") instanceof ExpiredJwtException) { - throw ((ExpiredJwtException) request.getAttribute("expiredJwtException")); + return new Result(ConstantEnum.EXPIRED_JWT); } + return null; } @RequestMapping("/unsupportedJwtException") - public void unsupportedJwtException(HttpServletRequest request) throws UnsupportedJwtException { + public Result unsupportedJwtException(HttpServletRequest request) { if (request.getAttribute("unsupportedJwtException") instanceof UnsupportedJwtException) { - throw ((UnsupportedJwtException) request.getAttribute("unsupportedJwtException")); + log.error("unsupportedJwtException"); + return new Result(ConstantEnum.TOKEN_ERROR); } + return null; } @RequestMapping("/signatureException") - public void signatureException(HttpServletRequest request) throws SignatureException { - if (request.getAttribute("signatureException") instanceof ExpiredJwtException) { - throw ((SignatureException) request.getAttribute("signatureException")); + public Result signatureException(HttpServletRequest request) { + if (request.getAttribute("signatureException") instanceof SignatureException) { + log.error("signatureException"); + return new Result(ConstantEnum.TOKEN_ERROR); } + return null; } @RequestMapping("/illegalArgumentException") - public void illegalArgumentException(HttpServletRequest request) throws IllegalArgumentException { + public Result illegalArgumentException(HttpServletRequest request) { if (request.getAttribute("illegalArgumentException") instanceof IllegalArgumentException) { - throw ((IllegalArgumentException) request.getAttribute("illegalArgumentException")); + log.error("illegalArgumentException"); + return new Result(ConstantEnum.TOKEN_ERROR); + } + return null; + } + + + @RequestMapping("/malformedJwtException") + public Result malformedJwtException(HttpServletRequest request) { + if (request.getAttribute("malformedJwtException") instanceof MalformedJwtException) { + log.error("malformedJwtException"); + return new Result(ConstantEnum.TOKEN_ERROR); } + return null; } } diff --git a/src/main/java/org/micai/platform/auth/controller/PermissionController.java b/src/main/java/org/micai/platform/auth/controller/PermissionController.java index 07fe70453dd90f7aca91b7ceb769a9f8a1237d36..70fbb5f957a48b12176db7eeb86510038f698056 100644 --- a/src/main/java/org/micai/platform/auth/controller/PermissionController.java +++ b/src/main/java/org/micai/platform/auth/controller/PermissionController.java @@ -1,9 +1,27 @@ package org.micai.platform.auth.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.bo.PermissionDelBo; +import org.micai.platform.auth.bo.PermissionFindBo; +import org.micai.platform.auth.bo.PermissionSaveBo; +import org.micai.platform.auth.bo.PermissionUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; +import org.micai.platform.auth.result.Result; +import org.micai.platform.auth.service.PermissionService; +import org.micai.platform.auth.vo.RoleListVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import org.springframework.stereotype.Controller; +import javax.validation.Valid; /** *

@@ -13,9 +31,87 @@ import org.springframework.stereotype.Controller; * @author liucong * @since 2021-12-04 */ -@Controller -@RequestMapping("/Tb/permission") -public class PermissionController { +@RestController +@RequestMapping("/permission") +@Api(tags = "权限管理",value = "权限管理") +@Slf4j +public class PermissionController extends BaseController{ + + @Autowired + private PermissionService permissionService; + + @ApiOperation(value = "获取权限列表", notes = "获取权限列表") + @PostMapping("/getPermissionList") + @PreAuthorize("hasAnyAuthority('root')") + public Result getPermissionList(@RequestBody PermissionFindBo bo){ + Result result; + try { + Page page = permissionService.getPermissionList(bo); + result = new Result(ConstantEnum.SUCCESS,page); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + + @ApiOperation(value = "更新权限信息", notes = "更新权限信息") + @PostMapping("/updatePermission") + @PreAuthorize("hasAnyAuthority('root')") + public Result updatePermission(@RequestBody @Valid PermissionUpdateBo bo){ + Result result; + try { + permissionService.updatePermission(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增权限", notes = "新增权限") + @PostMapping("/savePermission") + @PreAuthorize("hasAnyAuthority('root')") + public Result savePermission(@RequestBody @Valid PermissionSaveBo bo){ + Result result; + try { + permissionService.savePermission(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除权限", notes = "删除权限") + @PostMapping("/delPermission") + @PreAuthorize("hasAnyAuthority('root')") + public Result delPermission(@RequestBody @Valid PermissionDelBo bo){ + Result result; + try { + permissionService.delPermission(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } } diff --git a/src/main/java/org/micai/platform/auth/controller/RoleController.java b/src/main/java/org/micai/platform/auth/controller/RoleController.java index d870a52a8020ad323b720e9e26143065a57743d7..06c0cef03cc347f8bad3aea4230f104c4b72c9dc 100644 --- a/src/main/java/org/micai/platform/auth/controller/RoleController.java +++ b/src/main/java/org/micai/platform/auth/controller/RoleController.java @@ -1,9 +1,27 @@ package org.micai.platform.auth.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.bo.RoleDelBo; +import org.micai.platform.auth.bo.RoleFindBo; +import org.micai.platform.auth.bo.RoleSaveBo; +import org.micai.platform.auth.bo.RoleUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; +import org.micai.platform.auth.result.Result; +import org.micai.platform.auth.service.RoleService; +import org.micai.platform.auth.vo.UserListVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import org.springframework.stereotype.Controller; +import javax.validation.Valid; /** *

@@ -13,9 +31,87 @@ import org.springframework.stereotype.Controller; * @author liucong * @since 2021-12-04 */ -@Controller -@RequestMapping("/Tb/role") -public class RoleController { +@RestController +@RequestMapping("/role") +@Api(tags = "角色管理", value = "角色管理") +@Slf4j +public class RoleController extends BaseController { + + @Autowired + private RoleService roleService; + + @ApiOperation(value = "获取角色列表", notes = "获取角色列表") + @PostMapping("/getRoleList") + @PreAuthorize("hasAnyAuthority('root')") + public Result getRoleList(@RequestBody RoleFindBo bo){ + Result result; + try { + Page page = roleService.getRoleList(bo); + result = new Result(ConstantEnum.SUCCESS,page); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + + @ApiOperation(value = "更新角色信息", notes = "更新角色信息") + @PostMapping("/updateRole") + @PreAuthorize("hasAnyAuthority('root')") + public Result updateRole(@RequestBody @Valid RoleUpdateBo bo){ + Result result; + try { + roleService.updateRole(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增角色", notes = "新增角色") + @PostMapping("/saveRole") + @PreAuthorize("hasAnyAuthority('root')") + public Result saveRole(@RequestBody @Valid RoleSaveBo bo){ + Result result; + try { + roleService.saveRole(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除角色", notes = "删除角色") + @PostMapping("/delRole") + @PreAuthorize("hasAnyAuthority('root')") + public Result delRole(@RequestBody @Valid RoleDelBo bo){ + Result result; + try { + roleService.delRole(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } } diff --git a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java b/src/main/java/org/micai/platform/auth/controller/SysMenuController.java index 05bebccee2ac109e77c161b42372e4ba36910f73..7827620abc6a7de9a11c73c22bd480e680a3addf 100644 --- a/src/main/java/org/micai/platform/auth/controller/SysMenuController.java +++ b/src/main/java/org/micai/platform/auth/controller/SysMenuController.java @@ -5,15 +5,21 @@ import cn.hutool.core.lang.tree.Tree; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.bo.MenuDelBo; +import org.micai.platform.auth.bo.MenuSaveBo; +import org.micai.platform.auth.bo.MenuUpdateBo; +import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.exception.PlatformException; +import org.micai.platform.auth.result.Result; import org.micai.platform.auth.service.SysMenuService; -import org.micai.platform.auth.utils.Result; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; import java.util.List; /** @@ -40,13 +46,68 @@ public class SysMenuController extends BaseController{ Result result; try { List> treeList = sysMenuService.find(); - result = new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG,treeList); + result = new Result(ConstantEnum.SUCCESS,treeList); } catch (PlatformException e) { - log.error("error info:{}",e); + log.error("error info:",e); result = new Result(e.getErrorCode(), e.getErrorMessage()); } catch (Exception e) { - log.error("error info:{}",e); - result = new Result(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + + @ApiOperation(value = "更新菜单", notes = "更新菜单") + @PostMapping("/updateMenu") + @PreAuthorize("hasAnyAuthority('root')") + public Result updateMenu(@RequestBody @Valid MenuUpdateBo bo){ + Result result; + try { + sysMenuService.updateMenu(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "新增菜单", notes = "新增菜单") + @PostMapping("/saveMenu") + @PreAuthorize("hasAnyAuthority('root')") + public Result saveMenu(@RequestBody @Valid MenuSaveBo bo){ + Result result; + try { + sysMenuService.saveMenu(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); + } + return result; + } + + @ApiOperation(value = "删除菜单", notes = "删除菜单") + @PostMapping("/delMenu") + @PreAuthorize("hasAnyAuthority('root')") + public Result delMenu(@RequestBody @Valid MenuDelBo bo){ + Result result; + try { + sysMenuService.delMenu(bo); + result = new Result(ConstantEnum.SUCCESS); + } catch (PlatformException e) { + log.error("error info:",e); + result = new Result(e.getErrorCode(), e.getErrorMessage()); + } catch (Exception e) { + log.error("error info:",e); + result = new Result(ConstantEnum.FAIL); } return result; } diff --git a/src/main/java/org/micai/platform/auth/controller/UploadController.java b/src/main/java/org/micai/platform/auth/controller/UploadController.java index edc45cdd3246f79eb065bb1d04ae63c2246c0d95..7bfe958ee75659522162fde0d96753c2f91a64ab 100644 --- a/src/main/java/org/micai/platform/auth/controller/UploadController.java +++ b/src/main/java/org/micai/platform/auth/controller/UploadController.java @@ -1,7 +1,12 @@ package org.micai.platform.auth.controller; -import org.apache.commons.lang3.StringUtils; -import org.micai.platform.auth.constant.ConstantKey; +import cn.hutool.core.util.ObjectUtil; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.result.UploadResult; import org.micai.platform.auth.utils.FileKit; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ServletRequestUtils; @@ -10,9 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; + import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.util.HashMap; /** * 文件上传 @@ -20,197 +24,88 @@ import java.util.HashMap; */ @Controller @RequestMapping("/upload") +@Api(tags = "文件上传", value = "文件上传") +@Slf4j public class UploadController extends BaseController { - public static HashMap errorInfo = new HashMap<>(); - - static { - errorInfo.put("SUCCESS", "SUCCESS"); //默认成功 - errorInfo.put("NOFILE", "未包含文件上传域"); - errorInfo.put("TYPE", "不允许的文件格式"); - errorInfo.put("SIZE", "文件大小超出限制,最大支持2Mb"); - errorInfo.put("ENTYPE", "请求类型ENTYPE错误"); - errorInfo.put("REQUEST", "上传请求异常"); - errorInfo.put("IO", "IO异常"); - errorInfo.put("DIR", "目录创建失败"); - errorInfo.put("UNKNOWN", "未知错误"); - } - @PostMapping("/store") @ResponseBody public UploadResult store(@RequestParam(value = "file", required = false) MultipartFile file, - HttpServletRequest request) throws IOException { - UploadResult result = new UploadResult(); - + HttpServletRequest request){ // 检查空 - if (null == file || file.isEmpty()) { - return result.error(errorInfo.get("NOFILE")); + if (ObjectUtil.isEmpty(file)) { + return new UploadResult(ConstantEnum.NO_FILE); } String fileName = file.getOriginalFilename(); // 检查类型 if (!FileKit.checkFileType(fileName)) { - return result.error(errorInfo.get("TYPE")); + return new UploadResult(ConstantEnum.TYPE); } // 检查大小 - String limitSize = siteOptions.getValue(ConstantKey.STORAGE_LIMIT_SIZE); - if (StringUtils.isBlank(limitSize)) { - limitSize = "2"; + String limitSize = siteOptions.getValue(ConstantCode.STORAGE_LIMIT_SIZE); + if (ObjectUtil.isEmpty(limitSize)) { + limitSize = ConstantCode.STR_TWO; } - if (file.getSize() > (Long.parseLong(limitSize) * 1024 * 1024)) { - return result.error(errorInfo.get("SIZE")); + if (file.getSize() > (Long.parseLong(limitSize) * ConstantCode.DING * ConstantCode.DING)) { + return new UploadResult(ConstantEnum.SIZE); } // 保存图片 try { - String path = storageFactory.get().store(file, ConstantKey.thumbnailPath); - result.ok(errorInfo.get("SUCCESS")); - result.setName(fileName); - result.setPath(path); - result.setSize(file.getSize()); + String path = storageFactory.get().store(file, ConstantCode.thumbnailPath); + return new UploadResult(ConstantEnum.SUCCESS).setName(fileName).setPath(path).setSize(file.getSize()); } catch (Exception e) { - result.error(errorInfo.get("UNKNOWN")); - e.printStackTrace(); + log.error("error info:",e); + return new UploadResult(ConstantEnum.UNKNOWN); } - - return result; } @PostMapping("/storeScale") @ResponseBody public UploadResult storeScale(@RequestParam(value = "file", required = false) MultipartFile file, - HttpServletRequest request) throws IOException { - UploadResult result = new UploadResult(); + HttpServletRequest request) { String crop = request.getParameter("crop"); - int size = ServletRequestUtils.getIntParameter(request, "size", siteOptions.getIntegerValue(ConstantKey.STORAGE_MAX_WIDTH)); + int size = ServletRequestUtils.getIntParameter(request, ConstantCode.SIZE, siteOptions.getIntegerValue(ConstantCode.STORAGE_MAX_WIDTH)); // 检查空 - if (null == file || file.isEmpty()) { - return result.error(errorInfo.get("NOFILE")); + if (ObjectUtil.isEmpty(file)) { + return new UploadResult(ConstantEnum.NO_FILE); } String fileName = file.getOriginalFilename(); // 检查类型 if (!FileKit.checkFileType(fileName)) { - return result.error(errorInfo.get("TYPE")); + return new UploadResult(ConstantEnum.TYPE); } // 检查大小 - String limitSize = siteOptions.getValue(ConstantKey.STORAGE_LIMIT_SIZE); - if (StringUtils.isBlank(limitSize)) { - limitSize = "2"; + String limitSize = siteOptions.getValue(ConstantCode.STORAGE_LIMIT_SIZE); + if (ObjectUtil.isEmpty(limitSize)) { + limitSize = ConstantCode.STR_TWO; } - if (file.getSize() > (Long.parseLong(limitSize) * 1024 * 1024)) { - return result.error(errorInfo.get("SIZE")); + if (file.getSize() > (Long.parseLong(limitSize) * ConstantCode.DING * ConstantCode.DING)) { + return new UploadResult(ConstantEnum.SIZE); } // 保存图片 try { String path; - if (StringUtils.isNotBlank(crop)) { - Integer[] imageSize = siteOptions.getIntegerArrayValue(crop, ConstantKey.SEPARATOR_X); - int width = ServletRequestUtils.getIntParameter(request, "width", imageSize[0]); - int height = ServletRequestUtils.getIntParameter(request, "height", imageSize[1]); - path = storageFactory.get().storeScale(file, ConstantKey.thumbnailPath, width, height); + if (ObjectUtil.isEmpty(crop)) { + Integer[] imageSize = siteOptions.getIntegerArrayValue(crop, ConstantCode.SEPARATOR_X); + int width = ServletRequestUtils.getIntParameter(request, ConstantCode.WIDTH, imageSize[ConstantCode.INT_ZERO]); + int height = ServletRequestUtils.getIntParameter(request, ConstantCode.HEIGHT, imageSize[ConstantCode.INT_ONE]); + path = storageFactory.get().storeScale(file, ConstantCode.thumbnailPath, width, height); } else { - path = storageFactory.get().storeScale(file, ConstantKey.thumbnailPath, size); + path = storageFactory.get().storeScale(file, ConstantCode.thumbnailPath, size); } - result.ok(errorInfo.get("SUCCESS")); - result.setName(fileName); - result.setPath(path); - result.setSize(file.getSize()); - + return new UploadResult(ConstantEnum.SUCCESS).setName(fileName).setPath(path).setSize(file.getSize()); } catch (Exception e) { - result.error(errorInfo.get("UNKNOWN")); - e.printStackTrace(); - } - - return result; - } - - public static class UploadResult { - public static int OK = 200; - public static int ERROR = 400; - - /** - * 上传状态 - */ - private int status; - - /** - * 提示文字 - */ - private String message; - - /** - * 文件名 - */ - private String name; - - /** - * 文件大小 - */ - private long size; - - /** - * 文件存放路径 - */ - private String path; - - public UploadResult ok(String message) { - this.status = OK; - this.message = message; - return this; - } - - public UploadResult error(String message) { - this.status = ERROR; - this.message = message; - return this; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public long getSize() { - return size; - } - - public void setSize(long size) { - this.size = size; + log.error("error info:",e); + return new UploadResult(ConstantEnum.UNKNOWN); } - - public String getPath() { - return path; - } - - public void setPath(String path) { - this.path = path; - } - } } diff --git a/src/main/java/org/micai/platform/auth/controller/UserController.java b/src/main/java/org/micai/platform/auth/controller/UserController.java index 710490b4bb363e2209b0544c29bf109ec2b7e822..1f0cd3ab402cba7399272c45e56b8f29aa21082a 100644 --- a/src/main/java/org/micai/platform/auth/controller/UserController.java +++ b/src/main/java/org/micai/platform/auth/controller/UserController.java @@ -8,11 +8,10 @@ import org.micai.platform.auth.bo.UserDelBo; import org.micai.platform.auth.bo.UserFindBo; import org.micai.platform.auth.bo.UserSaveBo; import org.micai.platform.auth.bo.UserUpdateBo; -import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.entity.User; import org.micai.platform.auth.exception.PlatformException; -import org.micai.platform.auth.exception.UsernameIsExitedException; -import org.micai.platform.auth.utils.Result; +import org.micai.platform.auth.result.Result; import org.micai.platform.auth.vo.UserListVo; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -40,12 +39,12 @@ public class UserController extends BaseController { public Result signup(@RequestBody User user) { User bizUser = userService.findByUsername(user.getUsername()); if(null != bizUser){ - throw new UsernameIsExitedException("用户已经存在"); + throw new PlatformException("用户已经存在"); } /*user.setPassword(DigestUtils.md5DigestAsHex((user.getPassword()).getBytes()));*/ user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); boolean flag = userService.save(user); - return new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG,flag); + return new Result(ConstantEnum.SUCCESS,flag); } /** @@ -85,13 +84,13 @@ public class UserController extends BaseController { Result result; try { Page page = userService.getUserList(bo); - result = new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG,page); + result = new Result(ConstantEnum.SUCCESS,page); } catch (PlatformException e) { log.error("error info:",e); result = new Result(e.getErrorCode(), e.getErrorMessage()); } catch (Exception e) { log.error("error info:",e); - result = new Result(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + result = new Result(ConstantEnum.FAIL); } return result; } @@ -104,13 +103,13 @@ public class UserController extends BaseController { Result result; try { userService.updateUser(bo); - result = new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG); + result = new Result(ConstantEnum.SUCCESS); } catch (PlatformException e) { log.error("error info:",e); result = new Result(e.getErrorCode(), e.getErrorMessage()); } catch (Exception e) { log.error("error info:",e); - result = new Result(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + result = new Result(ConstantEnum.FAIL); } return result; } @@ -122,13 +121,13 @@ public class UserController extends BaseController { Result result; try { String password = userService.saveUser(bo); - result = new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG,password); + result = new Result(ConstantEnum.SUCCESS,password); } catch (PlatformException e) { log.error("error info:",e); result = new Result(e.getErrorCode(), e.getErrorMessage()); } catch (Exception e) { log.error("error info:",e); - result = new Result(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + result = new Result(ConstantEnum.FAIL); } return result; } @@ -140,13 +139,13 @@ public class UserController extends BaseController { Result result; try { userService.delUser(bo); - result = new Result(ConstantCode.SUCCESS,ConstantCode.SUCCESS_MSG); + result = new Result(ConstantEnum.SUCCESS); } catch (PlatformException e) { log.error("error info:",e); result = new Result(e.getErrorCode(), e.getErrorMessage()); } catch (Exception e) { log.error("error info:",e); - result = new Result(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + result = new Result(ConstantEnum.FAIL); } return result; } diff --git a/src/main/java/org/micai/platform/auth/exception/DefaultException.java b/src/main/java/org/micai/platform/auth/exception/DefaultException.java index 46b21e2d79ed033eb96282d12d88acc6d2faa609..646de4a1217b1ab2b784655546a6680af1540d48 100644 --- a/src/main/java/org/micai/platform/auth/exception/DefaultException.java +++ b/src/main/java/org/micai/platform/auth/exception/DefaultException.java @@ -1,8 +1,8 @@ package org.micai.platform.auth.exception; import lombok.extern.slf4j.Slf4j; -import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.utils.Result; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.result.Result; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -20,7 +20,7 @@ public class DefaultException { public Result methodArgumentNotValidException(MethodArgumentNotValidException exception) { log.info("捕获异常MethodArgumentNotValidException"); String message = exception.getBindingResult().getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining()); - return new Result(ConstantCode.FAIL,message); + return new Result(ConstantEnum.FAIL,message); } } diff --git a/src/main/java/org/micai/platform/auth/exception/GlobalExceptionHandler.java b/src/main/java/org/micai/platform/auth/exception/GlobalExceptionHandler.java index df3076c3e6194544c29733c0f94c6e15b0756c50..8e2e3c7aaf915ae583043718a603ac9cff60de00 100644 --- a/src/main/java/org/micai/platform/auth/exception/GlobalExceptionHandler.java +++ b/src/main/java/org/micai/platform/auth/exception/GlobalExceptionHandler.java @@ -1,12 +1,7 @@ package org.micai.platform.auth.exception; -import io.jsonwebtoken.ExpiredJwtException; -import io.jsonwebtoken.MalformedJwtException; -import io.jsonwebtoken.SignatureException; -import io.jsonwebtoken.UnsupportedJwtException; -import org.micai.platform.auth.utils.Result; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; +import org.micai.platform.auth.result.Result; import org.springframework.dao.DuplicateKeyException; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.annotation.ControllerAdvice; @@ -25,91 +20,37 @@ import java.net.ConnectException; * @Version 1.0 */ @ControllerAdvice +@Slf4j public class GlobalExceptionHandler { - private Logger logger = LoggerFactory.getLogger(getClass()); - @ExceptionHandler(NoHandlerFoundException.class) public Result handlerNoFoundException(Exception e) { - logger.error(e.getMessage(), e); - return new Result(404, "路径不存在,请检查路径是否正确"); + log.error(e.getMessage(), e); + return new Result("404", "路径不存在,请检查路径是否正确"); } @ExceptionHandler(DuplicateKeyException.class) public Result handleDuplicateKeyException(DuplicateKeyException e){ - logger.error(e.getMessage(), e); + log.error(e.getMessage(), e); return new Result("数据库中已存在该记录"); } - @ExceptionHandler(UsernameIsExitedException.class) - public Result usernameIsExitedException(UsernameIsExitedException e){ - logger.error(e.getMessage(), e); - return new Result("用户已经存在"); - } - - @ExceptionHandler(Exception.class) - public Result handleException(Exception e){ - logger.error(e.getMessage(), e); - return new Result(); - } - - @ExceptionHandler(ServiceException.class) - public Result serviceException(ServiceException e){ - logger.error(e.getMessage(), e); - return new Result(); - } - @ExceptionHandler(ConnectException.class) public Result connectException(ConnectException e){ - logger.error(e.getMessage(), e); + log.error(e.getMessage(), e); return new Result("系统调用异常"); } @ExceptionHandler(ResourceAccessException.class) public Result connectException(ResourceAccessException e){ - logger.error(e.getMessage(), e); + log.error(e.getMessage(), e); return new Result("系统之间调用异常"); } - @ResponseBody - @ExceptionHandler(value = {ExpiredJwtException.class}) - public Result expiredJwtException(ExpiredJwtException e) { - logger.error(e.getMessage(), e); - return new Result("Token过期"); - } - - @ExceptionHandler(value = UnsupportedJwtException.class) - @ResponseBody - public Result unsupportedJwtException(UnsupportedJwtException e) { - logger.error(e.getMessage(), e); - return new Result("Token签名失败"); - } - - @ExceptionHandler(value = SignatureException.class) - @ResponseBody - public Result signatureException(SignatureException e) { - logger.error(e.getMessage(), e); - return new Result("Token格式错误"); - } - - @ExceptionHandler(value = IllegalArgumentException.class) - @ResponseBody - public Result illegalArgumentException(IllegalArgumentException e) { - logger.error(e.getMessage(), e); - return new Result("Token非法参数异常"); - } - @ExceptionHandler(value = AccessDeniedException.class) @ResponseBody public Result accessDeniedException(AccessDeniedException e) { - logger.error(e.getMessage(), e); + log.error(e.getMessage(), e); return new Result("Token非法参数异常"); } - - @ExceptionHandler(value = MalformedJwtException.class) - @ResponseBody - public Result malformedJwtException(MalformedJwtException e) { - logger.error(e.getMessage(), e); - return new Result("Token没有被正确构造"); - } } diff --git a/src/main/java/org/micai/platform/auth/exception/PlatformException.java b/src/main/java/org/micai/platform/auth/exception/PlatformException.java index f77d100f599c74fa33395c1f5f4466cd9f768550..2d59187bc87e2d7bd846214f651000932b007e06 100644 --- a/src/main/java/org/micai/platform/auth/exception/PlatformException.java +++ b/src/main/java/org/micai/platform/auth/exception/PlatformException.java @@ -1,15 +1,21 @@ package org.micai.platform.auth.exception; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.micai.platform.auth.constant.ConstantEnum; + /** * @Author liuCong * @Date 2021/12/7 11:16 * @ClassName PlatformException * @Description */ -public class PlatformException extends Exception{ +@EqualsAndHashCode(callSuper = true) +@Data +public class PlatformException extends RuntimeException{ private static final long serialVersionUID = 1L; - private Integer errorCode; + private String errorCode; private String errorMessage; public PlatformException() { @@ -30,31 +36,19 @@ public class PlatformException extends Exception{ this.errorMessage = msg; } - public PlatformException(Integer code, String msg) { + public PlatformException(String code, String msg) { super(msg); this.errorCode = code; this.errorMessage = msg; } - public PlatformException(Integer errorCode, String errorMessage, Throwable cause) { + public PlatformException(String errorCode, String errorMessage, Throwable cause) { super("[" + errorCode + "]" + errorMessage, cause); this.errorCode = errorCode; this.errorMessage = errorMessage; } - public Integer getErrorCode() { - return errorCode; - } - - public void setErrorCode(Integer errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMessage() { - return errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; + public PlatformException(ConstantEnum constantEnum) { + this(constantEnum.getCode(), constantEnum.getMessage()); } } diff --git a/src/main/java/org/micai/platform/auth/exception/ServiceException.java b/src/main/java/org/micai/platform/auth/exception/ServiceException.java deleted file mode 100644 index 4e6c2a07038afb551cfee7f86fbfcdfd76e3e954..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/exception/ServiceException.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.micai.platform.auth.exception; - -/** - * 描述: - *

- * - * @author: 赵新国 - * @date: 2018/4/11 23:06 - */ -public class ServiceException extends RuntimeException { - - public ServiceException(String message) { - super(message); - } - - public ServiceException(String message, Throwable cause) { - super(message, cause); - } -} - diff --git a/src/main/java/org/micai/platform/auth/exception/UsernameIsExitedException.java b/src/main/java/org/micai/platform/auth/exception/UsernameIsExitedException.java deleted file mode 100644 index a32ac953e9763e7b280a78b384eae4b94e1bb60e..0000000000000000000000000000000000000000 --- a/src/main/java/org/micai/platform/auth/exception/UsernameIsExitedException.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.micai.platform.auth.exception; - -/** - * @author zhaoxinguo on 2017/9/13. - */ -public class UsernameIsExitedException extends ServiceException { - - public UsernameIsExitedException(String msg) { - super(msg); - } - - public UsernameIsExitedException(String msg, Throwable t) { - super(msg, t); - } -} \ No newline at end of file diff --git a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java b/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java index 593b63723a8bc45fe52237bc3c11d58d8598687e..1243c55e2f2c37c1531684e2f9883c2a8e9f1061 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/JWTAuthenticationFilter.java @@ -5,8 +5,8 @@ import com.alibaba.fastjson.JSON; import io.jsonwebtoken.*; import lombok.extern.slf4j.Slf4j; import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantKey; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.service.GrantedAuthorityImpl; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -33,9 +33,12 @@ import java.util.List; */ @Slf4j public class JWTAuthenticationFilter extends BasicAuthenticationFilter { - - public JWTAuthenticationFilter(AuthenticationManager authenticationManager) { + + private final String signKey; + + public JWTAuthenticationFilter(AuthenticationManager authenticationManager, String signKey) { super(authenticationManager); + this.signKey = signKey; } @Override @@ -55,13 +58,12 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { long start = System.currentTimeMillis(); String token = request.getHeader(ConstantCode.AUTHORIZATION); if (ObjectUtil.isEmpty(token)) { - throw new ServiceException("Token不能为空!"); + throw new PlatformException(ConstantEnum.TOKEN_MISS); } // parse the token. String user = null; - - Claims claims = Jwts.parser().setSigningKey(ConstantKey.SIGNING_KEY).parseClaimsJws(token.replace(ConstantCode.HEADER_BEARER, "")).getBody(); - log.info("相关信息:{}",claims.getSubject()); + Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(token.replace(ConstantCode.HEADER_BEARER, "")).getBody(); + log.info("相关信息 : {}",claims.getSubject()); // token签发时间 long issuedAt = claims.getIssuedAt().getTime(); // 当前时间 @@ -86,7 +88,7 @@ public class JWTAuthenticationFilter extends BasicAuthenticationFilter { .setSubject(claims.getSubject()) .setIssuedAt(now)//签发时间 .setExpiration(time)//过期时间 - .signWith(SignatureAlgorithm.HS512, ConstantKey.SIGNING_KEY) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS512, signKey) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); // 重新生成token end diff --git a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java index 63884e9809c5d1c7dd6bc86c66d8673027cad251..f6a8227d61df5735c70edf1792f17c394d9a404a 100644 --- a/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java +++ b/src/main/java/org/micai/platform/auth/filter/JWTLoginFilter.java @@ -6,10 +6,10 @@ import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; import org.micai.platform.auth.constant.ConstantCode; -import org.micai.platform.auth.constant.ConstantKey; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.query.UserQuery; -import org.micai.platform.auth.utils.Result; +import org.micai.platform.auth.result.Result; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; @@ -36,10 +36,13 @@ import java.util.*; @Slf4j public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { - private AuthenticationManager authenticationManager; + private final AuthenticationManager authenticationManager; + + private final String signKey; - public JWTLoginFilter(AuthenticationManager authenticationManager) { + public JWTLoginFilter(AuthenticationManager authenticationManager, String signKey) { this.authenticationManager = authenticationManager; + this.signKey = signKey; } /** @@ -62,17 +65,31 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { ); } catch (IOException e) { log.error("IOException:", e); - } catch (ServiceException ee) { + } catch (PlatformException e) { try { // 捕获权限异常返回到前端的body里面 res.setStatus(HttpServletResponse.SC_FORBIDDEN); res.setContentType(ConstantCode.CONTENT_TYPE_JSON); + Result result = new Result(e.getErrorCode(),e.getErrorMessage()); + PrintWriter out = res.getWriter(); + out.write(new ObjectMapper().writeValueAsString(result)); + out.flush(); + out.close(); + } catch (IOException ee) { + log.error("IOException:", ee); + } + } catch (Exception e) { + try { + // 捕获权限异常返回到前端的body里面 + res.setStatus(HttpServletResponse.SC_BAD_REQUEST); + res.setContentType(ConstantCode.CONTENT_TYPE_JSON); + Result result = new Result(ConstantEnum.FAIL); PrintWriter out = res.getWriter(); - out.write(new ObjectMapper().writeValueAsString(ee.getMessage())); + out.write(new ObjectMapper().writeValueAsString(result)); out.flush(); out.close(); - } catch (IOException e) { - log.error("IOException:", e); + } catch (IOException ee) { + log.error("IOException:", ee); } } return authenticate; @@ -115,13 +132,13 @@ public class JWTLoginFilter extends UsernamePasswordAuthenticationFilter { .setSubject(auth.getName() + "-" + rolesStr) .setIssuedAt(now)//签发时间 .setExpiration(time)//过期时间 - .signWith(SignatureAlgorithm.HS512, ConstantKey.SIGNING_KEY) //采用什么算法是可以自己选择的,不一定非要采用HS512 + .signWith(SignatureAlgorithm.HS512, signKey) //采用什么算法是可以自己选择的,不一定非要采用HS512 .compact(); // 生成token end // 登录成功后,返回token到body里面 Map resultMap = new HashMap<>(); resultMap.put(ConstantCode.AUTHORIZATION, ConstantCode.HEADER_BEARER + token); - Result result = new Result(ConstantCode.SUCCESS, ConstantCode.SUCCESS_MSG, resultMap); + Result result = new Result(ConstantEnum.SUCCESS, resultMap); response.setContentType(ConstantCode.CONTENT_TYPE_JSON); response.setStatus(HttpServletResponse.SC_OK); PrintWriter writer = response.getWriter(); diff --git a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java index e0c4f02831bba35344c05f3d0216c90afd5ede3c..536ee62ebb8e8c958eb4ff28b4b286bcf53029ee 100644 --- a/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java +++ b/src/main/java/org/micai/platform/auth/provider/CustomAuthenticationProvider.java @@ -4,17 +4,16 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.entity.*; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.service.*; import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; -import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import java.util.List; @@ -74,68 +73,57 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { // 认证逻辑 /*UserDetails userDetails = userDetailsService.loadUserByUsername(name);*/ User userDetails = userService.findByUsername(name); - if (ObjectUtil.isNotEmpty(userDetails)) { - if (bCryptPasswordEncoder.matches(password, userDetails.getPassword())) { - //获取用户权限 - List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,userDetails.getId())); - if (ObjectUtil.isEmpty(userRoleList)){ - throw new ServiceException("该用户没有角色,error"); - } - List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); - List roleList = roleService.list(new QueryWrapper().lambda() - .in(Role::getId,roleIdList).eq(Role::getStatus,ConstantCode.STR_ONE)); - if (ObjectUtil.isEmpty(roleList)){ - throw new ServiceException("该用户没有角色,error"); - } - List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() - .in(RolePermission::getRoleId,roleIdList)); - if (ObjectUtil.isEmpty(rolePermissionList)){ - throw new ServiceException("该用户没有权限,error"); - } - List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); - List permissionList = permissionService.list(new QueryWrapper().lambda() - .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_ONE)); - if (ObjectUtil.isEmpty(permissionList)){ - throw new ServiceException("该用户没有权限,error"); - } - - StringBuilder roleStr = new StringBuilder(); - if (ObjectUtil.isNotEmpty(roleList)){ - for (int i = 0; i < roleList.size(); i++) { - roleStr.append("ROLE_").append(roleList.get(i).getRoleCode()); - if (i != (roleList.size() - 1)){ - roleStr.append(","); - } - } - } - log.info("角色:{}",roleStr); - StringBuilder permissionStr = new StringBuilder(); - if (ObjectUtil.isNotEmpty(permissionList)){ - for (int i = 0; i < permissionList.size(); i++) { - permissionStr.append(permissionList.get(i).getPermissionCode()); - if (i != (roleList.size() - 1 )){ - permissionStr.append(","); - } - } - } - log.info("权限:{}",permissionStr); - String authStr = roleStr.append(",").append(permissionStr).toString(); - // 这里设置权限和角色 - List grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authStr); -// ArrayList authorities = new ArrayList<>(); -// authorities.add( new GrantedAuthorityImpl("ROLE_ADMIN")); -// authorities.add( new GrantedAuthorityImpl("AUTH_WRITE")); - // 生成令牌 这里令牌里面存入了:name,password,authorities, 当然你也可以放其他内容 - name = userDetails.getId() + "-" + name; - log.info("用户:{}",name); - return new UsernamePasswordAuthenticationToken(name, password, grantedAuthorities); - - } else { - throw new BadCredentialsException("密码错误"); + if (ObjectUtil.isEmpty(userDetails)) { + throw new PlatformException(ConstantEnum.USER_CODE_ERROR); + } + + if (!bCryptPasswordEncoder.matches(password, userDetails.getPassword())) { + throw new PlatformException(ConstantEnum.USER_CODE_ERROR); + } + //获取用户权限 + List userRoleList = userRoleService.list(new QueryWrapper().lambda().eq(UserRole::getUserId,userDetails.getId())); + if (ObjectUtil.isEmpty(userRoleList)){ + throw new PlatformException(ConstantEnum.NO_ROLE); + } + List roleIdList = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); + List roleList = roleService.list(new QueryWrapper().lambda() + .in(Role::getId,roleIdList).eq(Role::getStatus,ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(roleList)){ + throw new PlatformException(ConstantEnum.NO_ROLE); + } + List rolePermissionList = rolePermissionService.list(new QueryWrapper().lambda() + .in(RolePermission::getRoleId,roleIdList)); + if (ObjectUtil.isEmpty(rolePermissionList)){ + throw new PlatformException(ConstantEnum.NO_PERMISSION); + } + List permissionIdList = rolePermissionList.stream().map(RolePermission::getPermissionId).collect(Collectors.toList()); + List permissionList = permissionService.list(new QueryWrapper().lambda() + .in(Permission::getId,permissionIdList).eq(Permission::getStatus,ConstantCode.STR_Z_ONE)); + if (ObjectUtil.isEmpty(permissionList)){ + throw new PlatformException(ConstantEnum.NO_PERMISSION); + } + + StringBuilder roleStr = new StringBuilder(); + for (int i = 0; i < roleList.size(); i++) { + roleStr.append(ConstantCode.DEFAULT_ROLE_PREFIX).append(roleList.get(i).getRoleCode()); + if (i != (roleList.size() - 1)){ + roleStr.append(ConstantCode.SEPARATOR); + } + } + StringBuilder permissionStr = new StringBuilder(); + for (int i = 0; i < permissionList.size(); i++) { + permissionStr.append(permissionList.get(i).getPermissionCode()); + if (i != (roleList.size() - 1 )){ + permissionStr.append(ConstantCode.SEPARATOR); } - } else { - throw new UsernameNotFoundException("用户不存在"); } + String authStr = roleStr.append(ConstantCode.SEPARATOR).append(permissionStr).toString(); + // 这里设置权限和角色 + List grantedAuthorities = AuthorityUtils.commaSeparatedStringToAuthorityList(authStr); + // 生成令牌 这里令牌里面存入了:name,password,authorities, 当然你也可以放其他内容 + name = userDetails.getId() + "-" + name; + log.info("权限:{} , 角色:{} , 用户:{}",permissionStr,roleStr,name); + return new UsernamePasswordAuthenticationToken(name, password, grantedAuthorities); } /** diff --git a/src/main/java/org/micai/platform/auth/utils/Result.java b/src/main/java/org/micai/platform/auth/result/Result.java similarity index 38% rename from src/main/java/org/micai/platform/auth/utils/Result.java rename to src/main/java/org/micai/platform/auth/result/Result.java index 1e45562e5f2b3268d805a51ae7b1ad10c8ff7ea7..02fa1b3dd1ea61e0ff5f7195de9b40b5e25eba9b 100644 --- a/src/main/java/org/micai/platform/auth/utils/Result.java +++ b/src/main/java/org/micai/platform/auth/result/Result.java @@ -1,23 +1,24 @@ -package org.micai.platform.auth.utils; +package org.micai.platform.auth.result; import lombok.Data; +import org.micai.platform.auth.constant.ConstantEnum; /** * 返回数据 */ @Data public class Result { - private Integer code; + private String code; private String message; private Object data; public Result() {} - public Result(Integer code, String message) { + public Result(String code, String message) { this.code = code; this.message = message; } - public Result(Integer code, String message, Object data) { + public Result(String code, String message, Object data) { this(code, message); this.data = data; } @@ -25,4 +26,14 @@ public class Result { public Result(String message) { this.message = message; } + + public Result(ConstantEnum constantEnum) { + this.code = constantEnum.getCode(); + this.message = constantEnum.getMessage(); + } + + public Result(ConstantEnum constantEnum,Object data) { + this(constantEnum.getCode(), constantEnum.getMessage()); + this.data = data; + } } diff --git a/src/main/java/org/micai/platform/auth/result/UploadResult.java b/src/main/java/org/micai/platform/auth/result/UploadResult.java new file mode 100644 index 0000000000000000000000000000000000000000..3440c3b7b3834957b1399dc94229c3b855246f90 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/result/UploadResult.java @@ -0,0 +1,46 @@ +package org.micai.platform.auth.result; + +import lombok.Data; +import lombok.experimental.Accessors; +import org.micai.platform.auth.constant.ConstantEnum; + +/** + * @Author liuCong + * @Date 2021/12/30 10:04 + * @ClassName UploadResult + * @Description + */ +@Data +@Accessors(chain = true) +public class UploadResult{ + + /** + * 上传状态 + */ + private String status; + + /** + * 提示文字 + */ + private String message; + + /** + * 文件名 + */ + private String name; + + /** + * 文件大小 + */ + private long size; + + /** + * 文件存放路径 + */ + private String path; + + public UploadResult(ConstantEnum constantEnum) { + this.status = constantEnum.getCode(); + this.message = constantEnum.getMessage(); + } +} diff --git a/src/main/java/org/micai/platform/auth/service/PermissionService.java b/src/main/java/org/micai/platform/auth/service/PermissionService.java index 5d7858cd41f34c7a41fe07c632a3129dc02a38dd..7d213f47cf8da1ac36ec73e197de47ce0d369954 100644 --- a/src/main/java/org/micai/platform/auth/service/PermissionService.java +++ b/src/main/java/org/micai/platform/auth/service/PermissionService.java @@ -1,7 +1,13 @@ package org.micai.platform.auth.service; -import org.micai.platform.auth.entity.Permission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.auth.bo.PermissionDelBo; +import org.micai.platform.auth.bo.PermissionFindBo; +import org.micai.platform.auth.bo.PermissionSaveBo; +import org.micai.platform.auth.bo.PermissionUpdateBo; +import org.micai.platform.auth.entity.Permission; +import org.micai.platform.auth.vo.RoleListVo; /** *

@@ -13,4 +19,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface PermissionService extends IService { + Page getPermissionList(PermissionFindBo bo) throws Exception; + + void updatePermission(PermissionUpdateBo bo) throws Exception; + + void savePermission(PermissionSaveBo bo) throws Exception; + + void delPermission(PermissionDelBo bo) throws Exception; } diff --git a/src/main/java/org/micai/platform/auth/service/RoleService.java b/src/main/java/org/micai/platform/auth/service/RoleService.java index fa792a565712530ba199448b0dc10aa320535ad2..9a925dc3a9e962f35d0a34b329a8d0d101aeb66c 100644 --- a/src/main/java/org/micai/platform/auth/service/RoleService.java +++ b/src/main/java/org/micai/platform/auth/service/RoleService.java @@ -1,7 +1,13 @@ package org.micai.platform.auth.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.micai.platform.auth.bo.RoleDelBo; +import org.micai.platform.auth.bo.RoleFindBo; +import org.micai.platform.auth.bo.RoleSaveBo; +import org.micai.platform.auth.bo.RoleUpdateBo; import org.micai.platform.auth.entity.Role; import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.auth.vo.UserListVo; /** *

@@ -13,4 +19,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface RoleService extends IService { + Page getRoleList(RoleFindBo bo)throws Exception; + + void updateRole(RoleUpdateBo bo) throws Exception; + + void saveRole(RoleSaveBo bo) throws Exception; + + void delRole(RoleDelBo bo)throws Exception; } diff --git a/src/main/java/org/micai/platform/auth/service/SysMenuService.java b/src/main/java/org/micai/platform/auth/service/SysMenuService.java index 997c10ead3321c31f50786d887a92cd0bbf77ba1..e9bccda623925552ba2f59184e747c115e643aed 100644 --- a/src/main/java/org/micai/platform/auth/service/SysMenuService.java +++ b/src/main/java/org/micai/platform/auth/service/SysMenuService.java @@ -2,6 +2,9 @@ package org.micai.platform.auth.service; import cn.hutool.core.lang.tree.Tree; import com.baomidou.mybatisplus.extension.service.IService; +import org.micai.platform.auth.bo.MenuDelBo; +import org.micai.platform.auth.bo.MenuSaveBo; +import org.micai.platform.auth.bo.MenuUpdateBo; import org.micai.platform.auth.entity.SysMenu; import java.util.List; @@ -17,4 +20,10 @@ import java.util.List; public interface SysMenuService extends IService { List> find() throws Exception; + + void updateMenu(MenuUpdateBo bo) throws Exception; + + void saveMenu(MenuSaveBo bo) throws Exception; + + void delMenu(MenuDelBo bo) throws Exception; } diff --git a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java index 92f352c7930efb686c9f86cc999270b9d89784d0..462f73451ae5018f1840a11d876baab120cc3cc5 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/PermissionServiceImpl.java @@ -1,10 +1,29 @@ package org.micai.platform.auth.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.bo.PermissionDelBo; +import org.micai.platform.auth.bo.PermissionFindBo; +import org.micai.platform.auth.bo.PermissionSaveBo; +import org.micai.platform.auth.bo.PermissionUpdateBo; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.Permission; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.mapper.PermissionMapper; import org.micai.platform.auth.service.PermissionService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.utils.AuthenticationManger; +import org.micai.platform.auth.vo.RoleListVo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +35,56 @@ import org.springframework.stereotype.Service; */ @Service public class PermissionServiceImpl extends ServiceImpl implements PermissionService { + @Autowired + private PermissionMapper permissionMapper; + + @Override + public Page getPermissionList(PermissionFindBo bo) throws Exception { + Page page = new Page<>(bo.getPageNumber(), bo.getPageSize()); + Page permissionPage = permissionMapper.selectPage(page, new QueryWrapper().lambda() + .like(ObjectUtil.isNotEmpty(bo.getPermissionCode()), Permission::getPermissionCode, bo.getPermissionCode()) + .like(ObjectUtil.isNotEmpty(bo.getPermissionName()), Permission::getPermissionName, bo.getPermissionName()) + .eq(ObjectUtil.isNotEmpty(bo.getStatus()), Permission::getStatus, bo.getStatus())); + + Page roleListVoPage = new Page<>(); + roleListVoPage.setRecords(BeanUtil.copyToList(permissionPage.getRecords(),RoleListVo.class)); + return roleListVoPage; + } + + @Override + public void updatePermission(PermissionUpdateBo bo) throws Exception { + Permission permission = BeanUtil.copyProperties(bo, Permission.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + permission.setUpdateUserId(authentication.getId()); + Permission permissionEn = permissionMapper.selectById(permission.getId()); + permission.setVersion(permissionEn.getVersion()); + int i = permissionMapper.updateById(permission); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + + @Override + public void savePermission(PermissionSaveBo bo) throws Exception { + Permission permission = BeanUtil.copyProperties(bo, Permission.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + permission.setPermissionCode(RandomUtil.randomString(ConstantCode.INT_TEN)); + permission.setCreateUserId(authentication.getId()); + permission.setUpdateUserId(authentication.getId()); + permission.setStatus(ConstantCode.STR_Z_ONE); + int i = permissionMapper.insert(permission); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + @Override + @Transactional(rollbackFor = Exception.class) + public void delPermission(PermissionDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = permissionMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } } diff --git a/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java index 4ff88c3233dac338c97d41fca30c4baade24f4c0..a64e2750e2536397bfb237a3829e5ed3f84bf613 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/RoleServiceImpl.java @@ -1,10 +1,29 @@ package org.micai.platform.auth.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.bo.RoleDelBo; +import org.micai.platform.auth.bo.RoleFindBo; +import org.micai.platform.auth.bo.RoleSaveBo; +import org.micai.platform.auth.bo.RoleUpdateBo; +import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.Role; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.mapper.RoleMapper; import org.micai.platform.auth.service.RoleService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.micai.platform.auth.utils.AuthenticationManger; +import org.micai.platform.auth.vo.UserListVo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -16,5 +35,56 @@ import org.springframework.stereotype.Service; */ @Service public class RoleServiceImpl extends ServiceImpl implements RoleService { + @Autowired + private RoleMapper roleMapper; + + @Override + public Page getRoleList(RoleFindBo bo) throws Exception { + Page page = new Page<>(bo.getPageNumber(), bo.getPageSize()); + Page rolePage = roleMapper.selectPage(page, new QueryWrapper().lambda() + .like(ObjectUtil.isNotEmpty(bo.getRoleCode()), Role::getRoleCode, bo.getRoleCode()) + .like(ObjectUtil.isNotEmpty(bo.getRoleName()), Role::getRoleName, bo.getRoleName()) + .eq(ObjectUtil.isNotEmpty(bo.getStatus()), Role::getStatus, bo.getStatus())); + + Page userListVoPage = new Page<>(); + userListVoPage.setRecords(BeanUtil.copyToList(rolePage.getRecords(),UserListVo.class)); + return userListVoPage; + } + + @Override + public void updateRole(RoleUpdateBo bo) throws Exception { + Role role = BeanUtil.copyProperties(bo, Role.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + role.setUpdateUserId(authentication.getId()); + Role roleEn = roleMapper.selectById(role.getId()); + role.setVersion(roleEn.getVersion()); + int i = roleMapper.updateById(role); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + + @Override + public void saveRole(RoleSaveBo bo) throws Exception { + Role role = BeanUtil.copyProperties(bo, Role.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + role.setRoleCode(RandomUtil.randomString(ConstantCode.INT_TEN)); + role.setCreateUserId(authentication.getId()); + role.setUpdateUserId(authentication.getId()); + role.setStatus(ConstantCode.STR_Z_ONE); + int i = roleMapper.insert(role); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + @Override + @Transactional(rollbackFor = Exception.class) + public void delRole(RoleDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = roleMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } } diff --git a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java index 9e017ced5b9d87753d6aa6309d65b311681ec26c..a8e51350358f233632bf3cbc9deb60b7a7f56e4a 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/SysMenuServiceImpl.java @@ -1,16 +1,23 @@ package org.micai.platform.auth.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.micai.platform.auth.dto.UserAuthenticationDto; +import org.micai.platform.auth.bo.MenuDelBo; +import org.micai.platform.auth.bo.MenuSaveBo; +import org.micai.platform.auth.bo.MenuUpdateBo; import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; +import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.Permission; import org.micai.platform.auth.entity.PermissionMenu; import org.micai.platform.auth.entity.SysMenu; +import org.micai.platform.auth.exception.PlatformException; import org.micai.platform.auth.mapper.PermissionMapper; import org.micai.platform.auth.mapper.PermissionMenuMapper; import org.micai.platform.auth.mapper.SysMenuMapper; @@ -18,6 +25,7 @@ import org.micai.platform.auth.service.SysMenuService; import org.micai.platform.auth.utils.AuthenticationManger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -47,13 +55,13 @@ public class SysMenuServiceImpl extends ServiceImpl impl UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); List permissions = authentication.getPermissions(); List permissionList = permissionMapper.selectList(new QueryWrapper().lambda().in(Permission::getPermissionCode, permissions)); - List permission_code = permissionList.stream().map(Permission::getId).collect(Collectors.toList()); - List permissionMenus = permissionMenuMapper.selectList(new QueryWrapper().in("permission_id",permission_code)); + List permissionCodeList = permissionList.stream().map(Permission::getId).collect(Collectors.toList()); + List permissionMenus = permissionMenuMapper.selectList(new QueryWrapper().in("permission_id",permissionCodeList)); if (ObjectUtil.isEmpty(permissionMenus)){ return null; } List menuIds = permissionMenus.stream().map(PermissionMenu::getMenuId).collect(Collectors.toList()); - List menuList = sysMenuMapper.selectList(new QueryWrapper().in("id", menuIds).eq("status", ConstantCode.STR_ONE)); + List menuList = sysMenuMapper.selectList(new QueryWrapper().in("id", menuIds).eq("status", ConstantCode.STR_Z_ONE)); if (ObjectUtil.isNotEmpty(menuList)){ //配置 TreeNodeConfig treeNodeConfig = new TreeNodeConfig(); @@ -61,9 +69,9 @@ public class SysMenuServiceImpl extends ServiceImpl impl treeNodeConfig.setWeightKey("order"); treeNodeConfig.setIdKey("rid"); // 最大递归深度 - treeNodeConfig.setDeep(3); - //转换器 - return TreeUtil.build(menuList, "00", treeNodeConfig, + treeNodeConfig.setDeep(ConstantCode.INT_THREE); + //转换器 00代表根目录 + return TreeUtil.build(menuList, ConstantCode.STR_DOUBLE_ZONE, treeNodeConfig, (treeNode, tree) -> { tree.setId(treeNode.getMenuCode()); tree.setParentId(treeNode.getParentCode()); @@ -80,4 +88,41 @@ public class SysMenuServiceImpl extends ServiceImpl impl return null; } + + @Override + public void updateMenu(MenuUpdateBo bo) throws Exception { + SysMenu sysMenu = BeanUtil.copyProperties(bo, SysMenu.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + sysMenu.setUpdateUserId(authentication.getId()); + SysMenu sysMenuEn = sysMenuMapper.selectById(sysMenu.getId()); + sysMenu.setVersion(sysMenuEn.getVersion()); + int i = sysMenuMapper.updateById(sysMenu); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + + @Override + public void saveMenu(MenuSaveBo bo) throws Exception { + SysMenu sysMenu = BeanUtil.copyProperties(bo, SysMenu.class); + UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); + sysMenu.setMenuCode(RandomUtil.randomString(ConstantCode.INT_TEN)); + sysMenu.setCreateUserId(authentication.getId()); + sysMenu.setUpdateUserId(authentication.getId()); + sysMenu.setStatus(ConstantCode.STR_Z_ONE); + int i = sysMenuMapper.insert(sysMenu); + if (ConstantCode.INT_ONE != i){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delMenu(MenuDelBo bo) throws Exception { + List idList = bo.getIdList(); + int deleteBatchIds = permissionMapper.deleteBatchIds(idList); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); + } + } } diff --git a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java b/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java index 89c5e90a2941b18455971bfae57fb02ff23e7ebb..7b7b933ea8f83822f8ff6d483bcd27eb482c6550 100644 --- a/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java +++ b/src/main/java/org/micai/platform/auth/service/impl/UserServiceImpl.java @@ -12,6 +12,7 @@ import org.micai.platform.auth.bo.UserFindBo; import org.micai.platform.auth.bo.UserSaveBo; import org.micai.platform.auth.bo.UserUpdateBo; import org.micai.platform.auth.constant.ConstantCode; +import org.micai.platform.auth.constant.ConstantEnum; import org.micai.platform.auth.dto.UserAuthenticationDto; import org.micai.platform.auth.entity.User; import org.micai.platform.auth.exception.PlatformException; @@ -22,6 +23,7 @@ import org.micai.platform.auth.vo.UserListVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -77,7 +79,7 @@ public class UserServiceImpl extends ServiceImpl implements Us user.setVersion(userEn.getVersion()); int i = userMapper.updateById(user); if (ConstantCode.INT_ONE != i){ - throw new PlatformException(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + throw new PlatformException(ConstantEnum.FAIL); } } @@ -85,7 +87,7 @@ public class UserServiceImpl extends ServiceImpl implements Us public String saveUser(UserSaveBo bo) throws Exception { User userOne = userMapper.selectOne(new QueryWrapper().lambda().eq(User::getUsername, bo.getUsername())); if (ObjectUtil.isNotEmpty(userOne)) { - throw new PlatformException(ConstantCode.USER_EXIST,ConstantCode.USER_EXIST_MSG); + throw new PlatformException(ConstantEnum.USER_EXIST); } User user = BeanUtil.copyProperties(bo, User.class); UserAuthenticationDto authentication = AuthenticationManger.getAuthentication(); @@ -96,20 +98,21 @@ public class UserServiceImpl extends ServiceImpl implements Us user.setPassword(encodePass); user.setCreateUserId(id); user.setUpdateUserId(id); - user.setStatus(ConstantCode.STR_ONE); + user.setStatus(ConstantCode.STR_Z_ONE); int i = userMapper.insert(user); if (ConstantCode.INT_ONE != i){ - throw new PlatformException(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + throw new PlatformException(ConstantEnum.UPDATE_ERROR); } return password; } @Override + @Transactional(rollbackFor = Exception.class) public void delUser(UserDelBo bo) throws Exception { List idList = bo.getIdList(); int deleteBatchIds = userMapper.deleteBatchIds(idList); - if (idList.size() !=deleteBatchIds){ - throw new PlatformException(ConstantCode.FAIL,ConstantCode.FAIL_MSG); + if (idList.size() != deleteBatchIds){ + throw new PlatformException(ConstantEnum.UPDATE_ERROR); } } } diff --git a/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java b/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java index 8d1b41a15d853b69defaaf9e3585b10aa0826b82..89e180fdb6b3d373e1881c8499d1680fa0720446 100644 --- a/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java +++ b/src/main/java/org/micai/platform/auth/utils/AuthenticationManger.java @@ -22,31 +22,28 @@ public class AuthenticationManger { /** * 获取用户所拥有的权限列表 + * * @return */ public static UserAuthenticationDto getAuthentication() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Collection authorities = authentication.getAuthorities(); - List list = new ArrayList<>(); - for (GrantedAuthority grantedAuthority : authorities) { - log.info("权限列表:{}", grantedAuthority.getAuthority()); - list.add(grantedAuthority.getAuthority()); - } - List permissionList = new ArrayList<>(); List roleList = new ArrayList<>(); - for (String authStr : list) { - if (authStr.contains(ConstantCode.DEFAULT_ROLE_PREFIX)){ - roleList.add(authStr); + for (GrantedAuthority grantedAuthority : authorities) { + String authority = grantedAuthority.getAuthority(); + if (authority.contains(ConstantCode.DEFAULT_ROLE_PREFIX)) { + roleList.add(authority); continue; } - permissionList.add(authStr); + permissionList.add(authority); } UserAuthenticationDto userAuthenticationDto = new UserAuthenticationDto(); String userId = authentication.getName().split("-")[ConstantCode.INT_ZERO]; userAuthenticationDto.setId(Long.parseLong(userId)); userAuthenticationDto.setRoles(roleList); userAuthenticationDto.setPermissions(permissionList); + log.info("用户id :{}, 角色列表:{}, 权限列表:{}", userAuthenticationDto.getId(), roleList, permissionList); return userAuthenticationDto; } } diff --git a/src/main/java/org/micai/platform/auth/utils/FileKit.java b/src/main/java/org/micai/platform/auth/utils/FileKit.java index b43e59570aa8fda24b85ff831c41a9e974e4edfd..0b7b03c90af07bdd648869d4873ecfe85ef29f04 100644 --- a/src/main/java/org/micai/platform/auth/utils/FileKit.java +++ b/src/main/java/org/micai/platform/auth/utils/FileKit.java @@ -16,7 +16,7 @@ import java.util.List; public class FileKit { // 文件允许格式 - private static List allowFiles = Arrays.asList(".gif", ".png", ".jpg", ".jpeg", ".bmp"); + private final static List allowFiles = Arrays.asList(".gif", ".png", ".jpg", ".jpeg", ".bmp"); private final static String PREFIX_VIDEO = "video/"; private final static String PREFIX_IMAGE = "image/"; diff --git a/src/main/java/org/micai/platform/auth/utils/MD5.java b/src/main/java/org/micai/platform/auth/utils/MD5.java index 73340a512136918692a80d843128047e6370f6ae..086c54beee6bcd02c4c442bd3352a1cc8b7e1c7b 100644 --- a/src/main/java/org/micai/platform/auth/utils/MD5.java +++ b/src/main/java/org/micai/platform/auth/utils/MD5.java @@ -1,7 +1,8 @@ package org.micai.platform.auth.utils; import org.apache.commons.lang3.StringUtils; -import org.micai.platform.auth.exception.ServiceException; +import org.micai.platform.auth.exception.PlatformException; + import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -46,7 +47,7 @@ public class MD5 { try { code = MessageDigest.getInstance("md5").digest(bytes); } catch (NoSuchAlgorithmException e) { - throw new ServiceException(e.getMessage()); + throw new PlatformException(e.getMessage()); } BigInteger bi = new BigInteger(code); return bi.abs().toString(32).toUpperCase(); diff --git a/src/main/java/org/micai/platform/auth/vo/PermissionListVo.java b/src/main/java/org/micai/platform/auth/vo/PermissionListVo.java new file mode 100644 index 0000000000000000000000000000000000000000..282c771b988c6470b8d0b16a32224c2442717611 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/vo/PermissionListVo.java @@ -0,0 +1,49 @@ +package org.micai.platform.auth.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author liuCong + * @Date 2021/12/29 17:22 + * @ClassName PermissionListVo + * @Description + */ +@Data +@ApiModel(value = "权限列表") +public class PermissionListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + private Long id; + + @ApiModelProperty(value = "权限编码") + private String permissionCode; + + @ApiModelProperty(value = "权限名称") + private String permissionName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + + @ApiModelProperty(value = "创建人") + private Long createUserId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改人") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/org/micai/platform/auth/vo/RoleListVo.java b/src/main/java/org/micai/platform/auth/vo/RoleListVo.java new file mode 100644 index 0000000000000000000000000000000000000000..d0d1d36642f03e15808aad933041cfd3eeeb28b6 --- /dev/null +++ b/src/main/java/org/micai/platform/auth/vo/RoleListVo.java @@ -0,0 +1,48 @@ +package org.micai.platform.auth.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author liuCong + * @Date 2021/12/29 15:38 + * @ClassName RoleListVo + * @Description + */ +@Data +@ApiModel(value = "角色列表") +public class RoleListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Long id; + + @ApiModelProperty(value = "角色编码") + private String roleCode; + + @ApiModelProperty(value = "角色名称") + private String roleName; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "状态: 01 启用 02停用") + private String status; + + @ApiModelProperty(value = "创建人") + private Long createUserId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改人") + private Long updateUserId; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index d384a1ccb2259914d2cac7bd347cbb6be9a6647d..84fd4caa7c4e0a3fd6b9ab8253c435a738f6996d 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -8,4 +8,8 @@ spring: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/security?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true username: root - password: ly1218 \ No newline at end of file + password: ly1218 + +#签名key +sign: + key: spring-security-@Jwt!&Secret^# \ No newline at end of file