添加权限

This commit is contained in:
xiangZr-hhh 2024-01-19 16:24:09 +08:00
parent e3baeb8c0c
commit 26cb8ea28d
9 changed files with 117 additions and 12 deletions

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
@ -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();
}
}

View File

@ -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);

View File

@ -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, "数据库删除错误"),

View File

@ -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
logging:
level:
root: TRACE
sun.rmi: OFF
org.apache.tomcat: WARN