This commit is contained in:
176yunxuan 2024-01-19 17:02:53 +08:00
parent eab4f86a83
commit e93cf90d5b
15 changed files with 135 additions and 277 deletions

View File

@ -1,9 +1,34 @@
package com.jsl.oa.controllers;
import com.jsl.oa.services.PermissionService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequiredArgsConstructor
public class PermissionController {
private final PermissionService permissionService;
@PostMapping("/permission/add")
public BaseResponse permissionAdd(HttpServletRequest request, @RequestParam Long rid,@RequestParam Long pid) {
// 判断是否有参数错误
if (rid == null || pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return permissionService.permissionAdd(request,rid,pid);
}
@GetMapping("/permission/current")
public BaseResponse permissionUser(HttpServletRequest request, @RequestParam Long uid) {
// 判断是否有参数错误
if (uid == null ) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else return permissionService.permissionUser(request,uid);
}
}

View File

@ -1,23 +1,15 @@
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;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.lang.Nullable;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.regex.Pattern;
import javax.validation.constraints.NotNull;
/**
* <h1>角色控制器</h1>
@ -28,7 +20,6 @@ import java.util.regex.Pattern;
* @see RoleService
* @since v1.1.0
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class RoleController {
@ -44,55 +35,9 @@ public class RoleController {
*/
@GetMapping("/role/get")
public BaseResponse roleGet(HttpServletRequest request, @RequestParam @Nullable String id) {
log.info("请求接口[GET]: /role/get");
return roleService.roleGet(request, id);
}
/**
* <h2>角色编辑</h2>
* <hr/>
* 角色编辑接口
*
* @param request 请求
* @param roleEditVO 角色编辑VO
* @param bindingResult 参数校验结果
* @return {@link BaseResponse}
*/
@PutMapping("/role/edit")
public BaseResponse roleEdit(HttpServletRequest request, @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /role/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return roleService.roleEdit(request, roleEditVO);
}
/**
* <h2>角色删除</h2>
* <hr/>
* 角色删除接口
*
* @param request 请求
* @param id 角色id
* @return {@link BaseResponse}
*/
@DeleteMapping("/role/delete")
public BaseResponse roleDelete(HttpServletRequest request, @RequestParam String id) {
log.info("请求接口[DELETE]: /role/delete");
// 判断是否有参数错误
if (id == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
} else {
if (Pattern.matches("^[0-9]+$", id)) {
ArrayList<String> error = new ArrayList<>();
error.add("id 只能为数字");
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, error);
}
}
return roleService.roleDelete(request, Long.valueOf(id));
}
/**
* 用户权限授予
*
@ -100,12 +45,11 @@ public class RoleController {
*/
@PostMapping("role/user/add")
public BaseResponse roleAddUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) {
log.info("请求接口[POST]: /role/user/add");
// 判断是否有参数错误
if (uid == null || rid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return roleService.roleAddUser(request, uid, rid);
return roleService.roleAddUser(request,uid, rid);
}
/**
@ -114,40 +58,11 @@ public class RoleController {
* @return
*/
@DeleteMapping("role/user/remove")
public BaseResponse roleRemoveUser(HttpServletRequest request, @RequestParam Long uid) {
log.info("请求接口[POST]: /role/user/remove");
public BaseResponse roleRemoveUser(HttpServletRequest request,@RequestParam Long uid) {
// 判断是否有参数错误
if (uid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
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);
}
@PutMapping("role/user/change")
public BaseResponse roleChangeUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) {
log.info("请求接口[POST]: /role/user/change");
// 判断是否有参数错误
if (uid == null || rid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return roleService.roleChangeUser(request, uid, rid);
return roleService.roleRemoveUser(request,uid);
}
}

View File

@ -21,39 +21,13 @@ public class RoleDAO {
roleMapper.roleRemoveUser(uid);
}
public List<RoleDO> getRolesById(String id) {
public List<RoleDO> getRoleById(String id) {
ArrayList<RoleDO> getRoleList = new ArrayList<>();
getRoleList.add(roleMapper.getRoleById(Long.valueOf(id)));
return getRoleList;
}
public RoleDO getRoleById(Long id) {
return roleMapper.getRoleById(id);
}
public List<RoleDO> getRole() {
return roleMapper.getRole();
}
public void roleAdd(RoleDO roleDO) { roleMapper.roleAdd(roleDO);}
public boolean roleEdit(RoleDO getRole) {
return roleMapper.roleEdit(getRole);
}
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;
}
public boolean roleChangeUser(Long uid, Long rid) {
return roleMapper.roleChangeUser(uid,rid);
}
}

View File

@ -17,19 +17,19 @@ public class ProcessException {
@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)
public ResponseEntity<BaseResponse> businessMethodNotAllowedException() {
log.warn("请求方法错误");
log.debug("请求方法错误");
return ResultUtil.error("MethodNotAllowed", 405, "请求方法错误");
}
@ExceptionHandler(value = DuplicateKeyException.class)
public ResponseEntity<BaseResponse> businessDuplicateKeyException(@NotNull DuplicateKeyException e) {
log.warn(e.getMessage(), e);
log.debug(e.getMessage(), e);
return ResultUtil.error("DuplicateEntry", 400, "数据重复/外键约束");
}
@ExceptionHandler(value = HttpMessageNotReadableException.class)
public ResponseEntity<BaseResponse> businessHttpMessageNotReadableException(HttpMessageNotReadableException e) {
log.warn(e.getMessage(), e);
log.debug(e.getMessage(), e);
return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误");
}

View File

@ -0,0 +1,19 @@
package com.jsl.oa.mapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface PermissionMapper {
@Insert("insert into organize_oa.oa_role_permissions(rid, pid) VALUE (#{rid},#{pid})")
void permissionAdd(Long rid, Long pid);
@Select("select name from organize_oa.oa_permissions where id in(select pid " +
"from organize_oa.oa_role_permissions where rid=" +
"(select rid from organize_oa.oa_role_user where uid=#{uid}) )")
List<String> permissionUser(Long uid);
}

View File

@ -2,7 +2,10 @@ package com.jsl.oa.mapper;
import com.jsl.oa.model.doData.RoleDO;
import com.jsl.oa.model.doData.RoleUserDO;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -10,10 +13,7 @@ import java.util.List;
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);
void roleAddUser(Long uid,Long rid);
@Delete("delete from organize_oa.oa_role_user where uid=#{uid}")
void roleRemoveUser(Long uid);
@ -29,16 +29,4 @@ public interface RoleMapper {
@Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC")
List<RoleDO> getRole();
@Update("UPDATE organize_oa.oa_role SET role_name=#{roleName},display_name=#{displayName} WHERE id=#{id}")
boolean roleEdit(RoleDO getRole);
@Update("UPDATE organize_oa.oa_role_user SET rid = #{rid} WHERE uid = #{uid}")
boolean roleChangeUser(Long uid, Long rid);
@Delete("DELETE FROM organize_oa.oa_role WHERE id=#{id}")
boolean roleDelete(Long id);
}

View File

@ -19,7 +19,6 @@ import java.sql.Timestamp;
public class RoleDO {
private Long id;
private String roleName;
private String displayName;
private Timestamp createdAt;
private Timestamp updatedAt;
}

View File

@ -0,0 +1,12 @@
package com.jsl.oa.services;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
public interface PermissionService {
BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid);
BaseResponse permissionUser(HttpServletRequest request, Long uid);
}

View File

@ -1,7 +1,5 @@
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;
import javax.servlet.http.HttpServletRequest;
@ -20,12 +18,4 @@ public interface RoleService {
BaseResponse roleRemoveUser(HttpServletRequest request,Long uid);
BaseResponse roleGet(HttpServletRequest request, String id);
BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO);
BaseResponse roleDelete(HttpServletRequest request, Long id);
BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO);
BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid);
}

View File

@ -0,0 +1,42 @@
package com.jsl.oa.services.impl;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.PermissionMapper;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.services.PermissionService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Service
@RequiredArgsConstructor
public class PermissionServiceImpl implements PermissionService {
private final PermissionMapper permissionMapper;
private final RoleMapper roleMapper;
private final UserDAO userDAO;
@Override
public BaseResponse permissionAdd(HttpServletRequest request, Long rid, Long pid) {
if(!Processing.checkUserIsAdmin(request,roleMapper)){
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
permissionMapper.permissionAdd(rid,pid);
return null;
}
@Override
public BaseResponse permissionUser(HttpServletRequest request, Long uid) {
if(userDAO.isExistUser(uid)){
List<String> permission = permissionMapper.permissionUser(uid);
return ResultUtil.success(permission);
}
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
}

View File

@ -1,9 +1,8 @@
package com.jsl.oa.services.impl;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
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;
import com.jsl.oa.utils.ErrorCode;
@ -23,31 +22,21 @@ 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);
}
@Override
public BaseResponse roleChangeUser(HttpServletRequest request, Long uid, Long rid) {
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if(!roleDAO.roleChangeUser(uid, rid)){
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
return ResultUtil.success();
} else return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
@Override
public BaseResponse roleGet(HttpServletRequest request, String id) {
// 检查用户权限
@ -58,7 +47,7 @@ public class RoleServiceImpl implements RoleService {
ArrayList<RoleDO> getRoleList;
if (id != null && !id.isEmpty()) {
if (Pattern.matches("^[0-9]+$", id)) {
getRoleList = (ArrayList<RoleDO>) roleDAO.getRolesById(id);
getRoleList = (ArrayList<RoleDO>) roleDAO.getRoleById(id);
} else {
ArrayList<String> error = new ArrayList<>();
error.add("id 只能为数字");
@ -71,77 +60,4 @@ public class RoleServiceImpl implements RoleService {
// 返回数据
return ResultUtil.success(getRoleList);
}
@Override
public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) {
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取 Role 相关信息
RoleDO getRole = roleDAO.getRoleById(roleEditVO.getId());
// 判断是否存在该 Role
if (getRole != null) {
// 替换 Role 信息
getRole.setRoleName(roleEditVO.getName())
.setDisplayName(roleEditVO.getDisplayName());
// 更新 Role 信息
if (roleDAO.roleEdit(getRole)) {
return ResultUtil.success();
} else {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
} else {
return ResultUtil.error(ErrorCode.ROLE_NOT_FOUNDED);
}
}
@Override
public BaseResponse roleDelete(HttpServletRequest request, Long id) {
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取 Role 相关信息
RoleDO getRole = roleDAO.getRoleById(id);
// 判断是否存在该 Role
if (getRole != null) {
// 删除 Role 信息
if (roleDAO.roleDelete(id)) {
return ResultUtil.success();
} else {
return ResultUtil.error(ErrorCode.DATABASE_DELETE_ERROR);
}
} else {
return ResultUtil.error(ErrorCode.ROLE_NOT_FOUNDED);
}
}
@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) {
return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION);
throw new RuntimeException(e);
}
//向数据库中修改属性
@ -199,7 +199,7 @@ public class UserServiceImpl implements UserService {
try {
Processing.copyProperties(userDO, userProfile);
} catch (Exception e) {
return ResultUtil.error(ErrorCode.CLASS_COPY_EXCEPTION);
throw new RuntimeException(e);
}
userProfile.setSex(Processing.getSex(userDO.getSex()));
return ResultUtil.success(userProfile);

View File

@ -16,14 +16,11 @@ 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

@ -10,48 +10,48 @@ public class ResultUtil {
@Contract(" -> new")
public static @NotNull BaseResponse success() {
log.info("请求接口成功[200] 不含数据");
log.debug("请求接口成功");
return new BaseResponse("Success", 200, "操作成功", null);
}
@Contract("_ -> new")
public static @NotNull BaseResponse success(String message) {
log.info(message + "[200]");
log.debug("请求接口成功");
return new BaseResponse("Success", 200, message, null);
}
@Contract(value = "_ -> new", pure = true)
public static @NotNull BaseResponse success(Object data) {
log.info("请求接口成功[200] 带数据");
log.debug("请求接口成功");
return new BaseResponse("Success", 200, "操作成功", data);
}
@Contract(value = "_, _ -> new", pure = true)
public static @NotNull BaseResponse success(String message, Object data) {
log.info(message + "[200] 带数据");
log.debug("请求接口成功");
return new BaseResponse("Success", 200, message, data);
}
@Contract("_ -> new")
public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode) {
log.info("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage());
log.debug("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage());
return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage());
}
@Contract("_, _ -> new")
public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode, Object data) {
log.info("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage());
log.debug("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage());
return new BaseResponse(errorCode.getOutput(), errorCode.getCode(), errorCode.getMessage(), data);
}
@Contract(value = "_, _, _, _ -> new", pure = true)
public static @NotNull BaseResponse error(String output, Integer code, String message, Object data) {
log.info("请求接口错误[" + code + "] " + message);
log.debug("请求接口错误[" + code + "] " + message);
return new BaseResponse(output, code, message, data);
}
public static @NotNull ResponseEntity<BaseResponse> error(String output, Integer code, String message) {
log.info("请求接口错误[" + code + "] " + message);
log.debug("请求接口错误[" + code + "] " + message);
return ResponseEntity.status(code)
.body(new BaseResponse(output, code, message));
}

View File

@ -1,36 +1,17 @@
server:
port: 8155
max-http-header-size: 102400
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306?organize_oa
url: jdbc:mysql://localhost:3306
username: root
password: Zrx@20041009
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
database: 0
host: localhost
port: 6379
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
profiles:
active: dev
mybatis:
configuration:
map-underscore-to-camel-case: true
logging:
level:
root: TRACE
sun.rmi: OFF
org.apache.tomcat: WARN
map-underscore-to-camel-case: true