diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 4a4e648..f8e81f7 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -1,5 +1,6 @@ package com.jsl.oa.controllers; +import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.services.RoleService; import com.jsl.oa.utils.BaseResponse; @@ -121,4 +122,21 @@ public class RoleController { } return roleService.roleRemoveUser(request, uid); } + + + /** + * @Description: TODO 添加用户权限 + * @Date: 2024/1/19 + * @Param request: + * @Param uid: + **/ + @PostMapping("role/add") + public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult ) { + log.info("请求接口[POST]: /role/add"); + // 判断是否有参数错误 + if (bindingResult.hasErrors()) { + return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult)); + } + return roleService.addRole(request, roleAddVO); + } } diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java index 7d58ae0..5c6c5d7 100644 --- a/src/main/java/com/jsl/oa/dao/RoleDAO.java +++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java @@ -35,6 +35,8 @@ public class RoleDAO { return roleMapper.getRole(); } + public void roleAdd(RoleDO roleDO) { roleMapper.roleAdd(roleDO);} + public boolean roleEdit(RoleDO getRole) { return roleMapper.roleEdit(getRole); } @@ -42,4 +44,14 @@ public class RoleDAO { public boolean roleDelete(Long id) { return roleMapper.roleDelete(id); } + + public boolean isExistRoleByRoleName(String roleName){ + RoleDO roleDO = roleMapper.getRoleByRoleName(roleName); + if(roleDO == null){ + return false; + } + return true; + } + + } diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java index 920586d..73f3fbc 100644 --- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java @@ -12,6 +12,9 @@ public interface RoleMapper { @Insert("insert into organize_oa.oa_role_user (uid, rid) VALUE (#{uid},#{rid})") void roleAddUser(Long uid, Long rid); + @Select("INSERT INTO organize_oa.oa_role (role_name, display_name) VALUES (#{roleName}, #{displayName})") + void roleAdd(RoleDO roleDO); + @Delete("delete from organize_oa.oa_role_user where uid=#{uid}") void roleRemoveUser(Long uid); @@ -32,4 +35,6 @@ public interface RoleMapper { @Delete("DELETE FROM organize_oa.oa_role WHERE id=#{id}") boolean roleDelete(Long id); + + } diff --git a/src/main/java/com/jsl/oa/model/voData/RoleAddVo.java b/src/main/java/com/jsl/oa/model/voData/RoleAddVo.java new file mode 100644 index 0000000..501e055 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/RoleAddVo.java @@ -0,0 +1,20 @@ +package com.jsl.oa.model.voData; + + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +@Data +public class RoleAddVo { + + @NotBlank + @Pattern(regexp = "^[a-zA-Z0-9_]{3,20}$", message = "角色名只能为3-16位的字母、数字、下划线组成") + private String name; + @NotBlank + private String displayName; + +} + + diff --git a/src/main/java/com/jsl/oa/services/RoleService.java b/src/main/java/com/jsl/oa/services/RoleService.java index cd934f3..7509778 100644 --- a/src/main/java/com/jsl/oa/services/RoleService.java +++ b/src/main/java/com/jsl/oa/services/RoleService.java @@ -1,5 +1,6 @@ package com.jsl.oa.services; +import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.utils.BaseResponse; @@ -23,4 +24,6 @@ public interface RoleService { BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO); BaseResponse roleDelete(HttpServletRequest request, Long id); + + BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO); } diff --git a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java index 1d225fc..8c9c4fe 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -2,6 +2,7 @@ package com.jsl.oa.services.impl; import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.model.doData.RoleDO; +import com.jsl.oa.model.voData.RoleAddVo; import com.jsl.oa.model.voData.RoleEditVO; import com.jsl.oa.services.RoleService; import com.jsl.oa.utils.BaseResponse; @@ -22,16 +23,16 @@ public class RoleServiceImpl implements RoleService { private final RoleDAO roleDAO; @Override - public BaseResponse roleAddUser(HttpServletRequest request,Long uid, Long rid) { - if (Processing.checkUserIsAdmin(request,roleDAO.roleMapper)) { + public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) { + if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { roleDAO.roleAddUser(uid, rid); return ResultUtil.success(); } else return ResultUtil.error(ErrorCode.NOT_ADMIN); } @Override - public BaseResponse roleRemoveUser(HttpServletRequest request,Long uid) { - if (Processing.checkUserIsAdmin(request,roleDAO.roleMapper)) { + public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) { + if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { roleDAO.roleRemoveUser(uid); return ResultUtil.success(); } else return ResultUtil.error(ErrorCode.NOT_ADMIN); @@ -106,4 +107,29 @@ public class RoleServiceImpl implements RoleService { } } + + @Override + public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) { + // 检查用户权限 + if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { + return ResultUtil.error(ErrorCode.NOT_ADMIN); + } + // 检查权限名称是否重复 + String roleName = roleAddVO.getName(); + RoleDO roleDO = new RoleDO(); + if (!roleDAO.isExistRoleByRoleName(roleName)) { + try { + Processing.copyProperties(roleAddVO, roleDO); + roleDO.setRoleName(roleAddVO.getName()); + } catch (Exception e) { + return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); + } + } else { + return ResultUtil.error(ErrorCode.ROLE_NAME_REPEAT); + } + //向数据库中插入数据 + roleDAO.roleAdd(roleDO); + + return ResultUtil.success(); + } } diff --git a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java index 3cce3d8..102ebec 100755 --- a/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java @@ -182,7 +182,7 @@ public class UserServiceImpl implements UserService { try { Processing.copyProperties(userEditVo, userDO); } catch (Exception e) { - throw new RuntimeException(e); + return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); } //向数据库中修改属性 @@ -199,7 +199,7 @@ public class UserServiceImpl implements UserService { try { Processing.copyProperties(userDO, userProfile); } catch (Exception e) { - throw new RuntimeException(e); + return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION); } userProfile.setSex(Processing.getSex(userDO.getSex())); return ResultUtil.success(userProfile); diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index 4b6fd17..310512f 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -16,12 +16,14 @@ public enum ErrorCode { TOKEN_EXPIRED("TokenExpired", 40101, "Token已过期"), VERIFICATION_INVALID("VerificationInvalid", 40102, "验证码无效"), TOKEN_NOT_EXIST("TokenNotExist", 40103, "Token不存在"), + CLASS_COPY_EXCEPTION("ClassCopyException",40104,"实体类拷贝异常"), USER_IS_LOCKED("UserIsLocked", 40300, "用户已被锁定"), USER_IS_DEACTIVATED("UserIsDeactivated", 40300, "用户已被禁用"), NOT_ADMIN("NotAdmin", 40300, "不是管理员"), EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40300, "请使用邮箱登陆"), PASSWORD_NOT_SAME("PasswordNotSame", 40301, "两次密码不一致"), ROLE_NOT_FOUNDED("RoleNotFounded", 40400, "角色不存在"), + ROLE_NAME_REPEAT("RoleNameRepeat", 40401, "权限名称重复"), DATABASE_INSERT_ERROR("DatabaseInsertError", 50010, "数据库插入错误"), DATABASE_UPDATE_ERROR("DatabaseUpdateError", 50011, "数据库更新错误"), DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误"), diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index caf4bb7..2e2bbfa 100755 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,17 +1,36 @@ server: - port: 8080 + port: 8155 + max-http-header-size: 102400 spring: datasource: - url: jdbc:mysql://localhost:3306 + url: jdbc:mysql://localhost:3306?organize_oa username: root - password: 123456 + password: Zrx@20041009 driver-class-name: com.mysql.cj.jdbc.Driver redis: database: 0 host: localhost port: 6379 - profiles: - active: dev + password: Zrx@20041009 + mail: + default-encoding: UTF-8 + host: smtp.qiye.aliyun.com + username: wxxydeveloper@x-lf.cn + password: 114477225588Zcw + properties: + form: wxxydeveloper@x-lf.cn + mail: + smtp: + auth: true + starttls: + enable: true + ssl: + enable: true mybatis: configuration: - map-underscore-to-camel-case: true \ No newline at end of file + map-underscore-to-camel-case: true +logging: + level: + root: TRACE + sun.rmi: OFF + org.apache.tomcat: WARN \ No newline at end of file