diff --git a/src/main/java/com/jsl/oa/controllers/RoleController.java b/src/main/java/com/jsl/oa/controllers/RoleController.java index 39ed16e..bb530a4 100755 --- a/src/main/java/com/jsl/oa/controllers/RoleController.java +++ b/src/main/java/com/jsl/oa/controllers/RoleController.java @@ -1,15 +1,20 @@ package com.jsl.oa.controllers; +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 org.springframework.lang.Nullable; +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.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import javax.validation.constraints.NotNull; /** *

角色控制器

@@ -20,6 +25,7 @@ import javax.validation.constraints.NotNull; * @see RoleService * @since v1.1.0 */ +@Slf4j @RestController @RequiredArgsConstructor public class RoleController { @@ -35,9 +41,30 @@ 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); } + /** + *

角色编辑

+ *
+ * 角色编辑接口 + * + * @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); + } + /** * 用户权限授予 * @@ -45,11 +72,12 @@ 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); } /** @@ -58,11 +86,12 @@ public class RoleController { * @return */ @DeleteMapping("role/user/remove") - public BaseResponse roleRemoveUser(HttpServletRequest request,@RequestParam Long uid) { + public BaseResponse roleRemoveUser(HttpServletRequest request, @RequestParam Long uid) { + log.info("请求接口[POST]: /role/user/remove"); // 判断是否有参数错误 if (uid == null) { return ResultUtil.error(ErrorCode.PARAMETER_ERROR); } - return roleService.roleRemoveUser(request,uid); + return roleService.roleRemoveUser(request, uid); } } diff --git a/src/main/java/com/jsl/oa/dao/RoleDAO.java b/src/main/java/com/jsl/oa/dao/RoleDAO.java index 8f1eed1..7292eec 100644 --- a/src/main/java/com/jsl/oa/dao/RoleDAO.java +++ b/src/main/java/com/jsl/oa/dao/RoleDAO.java @@ -21,13 +21,21 @@ public class RoleDAO { roleMapper.roleRemoveUser(uid); } - public List getRoleById(String id) { + public List getRolesById(String id) { ArrayList getRoleList = new ArrayList<>(); getRoleList.add(roleMapper.getRoleById(Long.valueOf(id))); return getRoleList; } + public RoleDO getRoleById(Long id) { + return roleMapper.getRoleById(id); + } + public List getRole() { return roleMapper.getRole(); } + + public boolean roleEdit(RoleDO getRole) { + return roleMapper.roleEdit(getRole); + } } diff --git a/src/main/java/com/jsl/oa/exception/ProcessException.java b/src/main/java/com/jsl/oa/exception/ProcessException.java index de91c09..c9da1a2 100755 --- a/src/main/java/com/jsl/oa/exception/ProcessException.java +++ b/src/main/java/com/jsl/oa/exception/ProcessException.java @@ -17,19 +17,19 @@ public class ProcessException { @ExceptionHandler(value = HttpRequestMethodNotSupportedException.class) public ResponseEntity businessMethodNotAllowedException() { - log.debug("请求方法错误"); + log.warn("请求方法错误"); return ResultUtil.error("MethodNotAllowed", 405, "请求方法错误"); } @ExceptionHandler(value = DuplicateKeyException.class) public ResponseEntity businessDuplicateKeyException(@NotNull DuplicateKeyException e) { - log.debug(e.getMessage(), e); + log.warn(e.getMessage(), e); return ResultUtil.error("DuplicateEntry", 400, "数据重复/外键约束"); } @ExceptionHandler(value = HttpMessageNotReadableException.class) public ResponseEntity businessHttpMessageNotReadableException(HttpMessageNotReadableException e) { - log.debug(e.getMessage(), e); + log.warn(e.getMessage(), e); return ResultUtil.error("HttpMessageNotReadable", 400, "请求参数错误"); } diff --git a/src/main/java/com/jsl/oa/mapper/RoleMapper.java b/src/main/java/com/jsl/oa/mapper/RoleMapper.java index 970a919..778a14a 100644 --- a/src/main/java/com/jsl/oa/mapper/RoleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/RoleMapper.java @@ -2,10 +2,7 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.doData.RoleDO; import com.jsl.oa.model.doData.RoleUserDO; -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 org.apache.ibatis.annotations.*; import java.util.List; @@ -13,7 +10,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); + void roleAddUser(Long uid, Long rid); @Delete("delete from organize_oa.oa_role_user where uid=#{uid}") void roleRemoveUser(Long uid); @@ -29,4 +26,7 @@ public interface RoleMapper { @Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC") List getRole(); + + @Update("UPDATE organize_oa.oa_role SET role_name=#{roleName},display_name=#{displayName} WHERE id=#{id}") + boolean roleEdit(RoleDO getRole); } diff --git a/src/main/java/com/jsl/oa/model/doData/RoleDO.java b/src/main/java/com/jsl/oa/model/doData/RoleDO.java index 04148c3..68f5c05 100755 --- a/src/main/java/com/jsl/oa/model/doData/RoleDO.java +++ b/src/main/java/com/jsl/oa/model/doData/RoleDO.java @@ -19,6 +19,7 @@ import java.sql.Timestamp; public class RoleDO { private Long id; private String roleName; + private String displayName; private Timestamp createdAt; private Timestamp updatedAt; } diff --git a/src/main/java/com/jsl/oa/model/voData/RoleEditVO.java b/src/main/java/com/jsl/oa/model/voData/RoleEditVO.java new file mode 100644 index 0000000..c5f77d4 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/RoleEditVO.java @@ -0,0 +1,25 @@ +package com.jsl.oa.model.voData; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; + +/** + *

角色编辑VO

+ *
+ * 角色编辑VO,用于接收角色编辑请求 + * + * @version v1.1.0 + * @author 筱锋xiao_lfeng + * @since v1.1.0 + */ +@Data +public class RoleEditVO { + private Long id; + @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 908b4d6..1c4479c 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.RoleEditVO; import com.jsl.oa.utils.BaseResponse; import javax.servlet.http.HttpServletRequest; @@ -18,4 +19,6 @@ public interface RoleService { BaseResponse roleRemoveUser(HttpServletRequest request,Long uid); BaseResponse roleGet(HttpServletRequest request, String id); + + BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO); } 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 b7956fb..4fb8853 100644 --- a/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java @@ -1,8 +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.RoleEditVO; import com.jsl.oa.services.RoleService; import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.ErrorCode; @@ -47,7 +47,7 @@ public class RoleServiceImpl implements RoleService { ArrayList getRoleList; if (id != null && !id.isEmpty()) { if (Pattern.matches("^[0-9]+$", id)) { - getRoleList = (ArrayList) roleDAO.getRoleById(id); + getRoleList = (ArrayList) roleDAO.getRolesById(id); } else { ArrayList error = new ArrayList<>(); error.add("id 只能为数字"); @@ -60,4 +60,28 @@ 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); + } + } } diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index a32dd5d..4b6fd17 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -21,6 +21,7 @@ public enum ErrorCode { NOT_ADMIN("NotAdmin", 40300, "不是管理员"), EMAIL_LOGIN_NOT_SUPPORT("EmailLoginNotSupport", 40300, "请使用邮箱登陆"), PASSWORD_NOT_SAME("PasswordNotSame", 40301, "两次密码不一致"), + ROLE_NOT_FOUNDED("RoleNotFounded", 40400, "角色不存在"), DATABASE_INSERT_ERROR("DatabaseInsertError", 50010, "数据库插入错误"), DATABASE_UPDATE_ERROR("DatabaseUpdateError", 50011, "数据库更新错误"), DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误"), diff --git a/src/main/java/com/jsl/oa/utils/ResultUtil.java b/src/main/java/com/jsl/oa/utils/ResultUtil.java index 99c6636..4f53121 100755 --- a/src/main/java/com/jsl/oa/utils/ResultUtil.java +++ b/src/main/java/com/jsl/oa/utils/ResultUtil.java @@ -10,48 +10,48 @@ public class ResultUtil { @Contract(" -> new") public static @NotNull BaseResponse success() { - log.debug("请求接口成功"); + log.info("请求接口成功[200] 不含数据"); return new BaseResponse("Success", 200, "操作成功", null); } @Contract("_ -> new") public static @NotNull BaseResponse success(String message) { - log.debug("请求接口成功"); + log.info(message + "[200]"); return new BaseResponse("Success", 200, message, null); } @Contract(value = "_ -> new", pure = true) public static @NotNull BaseResponse success(Object data) { - log.debug("请求接口成功"); + log.info("请求接口成功[200] 带数据"); return new BaseResponse("Success", 200, "操作成功", data); } @Contract(value = "_, _ -> new", pure = true) public static @NotNull BaseResponse success(String message, Object data) { - log.debug("请求接口成功"); + log.info(message + "[200] 带数据"); return new BaseResponse("Success", 200, message, data); } @Contract("_ -> new") public static @NotNull BaseResponse error(@NotNull ErrorCode errorCode) { - log.debug("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage()); + log.info("请求接口错误[" + 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.debug("请求接口错误[" + errorCode.getCode() + "] " + errorCode.getMessage()); + log.info("请求接口错误[" + 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.debug("请求接口错误[" + code + "] " + message); + log.info("请求接口错误[" + code + "] " + message); return new BaseResponse(output, code, message, data); } public static @NotNull ResponseEntity error(String output, Integer code, String message) { - log.debug("请求接口错误[" + code + "] " + message); + log.info("请求接口错误[" + code + "] " + message); return ResponseEntity.status(code) .body(new BaseResponse(output, code, message)); }