Merge 推送至业务 #17

Merged
XiaoLFeng merged 46 commits from develop into master 2024-04-17 00:55:37 +08:00
37 changed files with 741 additions and 192 deletions
Showing only changes of commit 365f2dfa67 - Show all commits

View File

@ -4,6 +4,8 @@ import com.jsl.oa.annotations.CheckUserAbleToUse;
import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
@ -43,8 +45,11 @@ import java.util.Objects;
@Component
@RequiredArgsConstructor
public class AnnotationsAspect {
private final RoleDAO roleDAO;
private final UserMapper userMapper;
private final RoleMapper roleMapper;
private final RoleDAO roleDAO;
private final UserDAO userDAO;
private final PermissionDAO permissionDAO;
/**
@ -91,12 +96,12 @@ public class AnnotationsAspect {
} else {
log.info("\t> 用户权限不足,检查是否是管理员");
// 检查用户是管理员
RoleUserDO roleUserDO = roleDAO.roleMapper
RoleUserDO roleUserDO = roleMapper
.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin");
RoleDO roleDO = roleMapper.getRoleByRoleName("admin");
if (roleUserDO.getRid().equals(roleDO.getId())) {
return pjp.proceed();
} else {
@ -127,7 +132,7 @@ public class AnnotationsAspect {
// 获取用户信息
Long userId = Processing.getAuthHeaderToUserId(request);
UserDO userDO = userMapper.getUserById(userId);
UserDO userDO =userMapper.getUserById(userId);
// 用户不存在
if (userDO == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);

View File

@ -1,5 +1,7 @@
package com.jsl.oa.common.constant;
public class SafeConstants {
public static String SECRET_KEY;
}

View File

@ -178,7 +178,8 @@ public class AuthController {
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return authService.authChangePassword(userChangePasswordVO, request);
return authService.
authChangePassword((UserChangePasswordVO) request, (HttpServletRequest) userChangePasswordVO);
}
/**

View File

@ -88,7 +88,8 @@ public class PermissionController {
* @return {@link BaseResponse} 对象包含操作结果
*/
@PutMapping("/permission/edit")
public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo, BindingResult bindingResult, HttpServletRequest request) {
public BaseResponse permissionEdit(@RequestBody @Validated PermissionEditVO permissionEditVo,
BindingResult bindingResult, HttpServletRequest request) {
log.info("请求接口[PUT]: /permission/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {

View File

@ -140,7 +140,8 @@ public class ProjectController {
* @return {@link BaseResponse}
*/
@PostMapping("/project/header/add")
public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO, HttpServletRequest request, @NotNull BindingResult bindingResult) {
public BaseResponse projectAddHeader(@RequestBody @Validated ProjectShowVO projectShowVO,
HttpServletRequest request, @NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/header/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -160,7 +161,9 @@ public class ProjectController {
* @return {@link BaseResponse}
*/
@PutMapping("/project/header/edit/{projectId}")
public BaseResponse projectEditById(@RequestParam Long projectId, HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult) {
public BaseResponse projectEditById(@RequestParam Long projectId,
HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit,
@NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /project/header/edit/{projectId}");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -177,7 +180,9 @@ public class ProjectController {
* @return {@link BaseResponse}
*/
@PostMapping("/project/work/add")
public BaseResponse projectWorkAdd(HttpServletRequest request, @RequestBody @Validated ProjectWorkVO projectWorkVO, @NotNull BindingResult bindingResult) {
public BaseResponse projectWorkAdd(HttpServletRequest request,
@RequestBody @Validated ProjectWorkVO projectWorkVO,
@NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/work/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -220,7 +225,9 @@ public class ProjectController {
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/user/add")
public BaseResponse projectAddUserForCutting(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long pid) {
public BaseResponse projectAddUserForCutting(HttpServletRequest request,
@RequestParam Long uid,
@RequestParam Long pid) {
log.info("请求接口[Post]: /project/cut/user/add");
// 判断是否有参数错误
if (uid == null || pid == null) {
@ -253,7 +260,9 @@ public class ProjectController {
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/add")
public BaseResponse projectCuttingAdd(HttpServletRequest request, @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, @NotNull BindingResult bindingResult) {
public BaseResponse projectCuttingAdd(HttpServletRequest request,
@RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO,
@NotNull BindingResult bindingResult) {
log.info("请求接口[Post]: /project/cut/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -264,7 +273,9 @@ public class ProjectController {
@PutMapping("/project/cut/edit")
public BaseResponse projectCuttingEdit(HttpServletRequest request, @RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO, @NotNull BindingResult bindingResult) {
public BaseResponse projectCuttingEdit(HttpServletRequest request,
@RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO,
@NotNull BindingResult bindingResult) {
log.info("请求接口[Put]: /project/cut/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -274,12 +285,8 @@ public class ProjectController {
}
@PutMapping("/project/cut/user/to")
public BaseResponse projectToOtherUserForCutting(
HttpServletRequest request,
@RequestParam Long oldUid,
@RequestParam Long pid,
@RequestParam Long newUid
) {
public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, @RequestParam Long oldUid,
@RequestParam Long pid, @RequestParam Long newUid) {
log.info("请求接口[Put]: /project/cut/user/to");
// 判断是否有参数错误
if (oldUid == null || pid == null || newUid == null) {

View File

@ -0,0 +1,41 @@
package com.jsl.oa.controllers;
import com.jsl.oa.services.ReviewService;
import com.jsl.oa.utils.BaseResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* 审核控制器
*
* @author xiangZr-hhh
* @version 1.1.0
* @since 1.1.0
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class ReviewController {
// 审核服务
private final ReviewService reviewService;
/**
* @Description: 获取我的审核列表
* @Date: 2024/4/11
* @Param request:
**/
@GetMapping("/review/getMyReview")
public BaseResponse getUserReview(@RequestParam Long projectId, HttpServletRequest request) {
log.info("请求接口[GET]: /review/getMyReview");
return reviewService.getUserReview(projectId, request);
}
}

View File

@ -58,7 +58,8 @@ public class RoleController {
* @return {@link BaseResponse}
*/
@PutMapping("/role/edit")
public BaseResponse roleEdit(HttpServletRequest request, @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) {
public BaseResponse roleEdit(HttpServletRequest request,
@RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[PUT]: /role/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -124,7 +125,9 @@ public class RoleController {
* @Param uid:
**/
@PostMapping("role/add")
public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult) throws ClassCopyException {
public BaseResponse addRole(HttpServletRequest request,
@RequestBody @Validated RoleAddVo roleAddVO,
@NotNull BindingResult bindingResult) throws ClassCopyException {
log.info("请求接口[POST]: /role/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {

View File

@ -77,7 +77,8 @@ public class UserController {
* @return {@link BaseResponse}
*/
@PutMapping("/user/profile/edit")
public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO, BindingResult bindingResult) {
public BaseResponse userEditProfile(@RequestBody @Validated UserEditProfileVO userEditProfileVO,
BindingResult bindingResult) {
log.info("请求接口[PUT]: /user/profile/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -100,7 +101,11 @@ public class UserController {
* @return {@link BaseResponse}
*/
@GetMapping("/user/current")
public BaseResponse userCurrent(HttpServletRequest request, @RequestParam @Nullable String id, @RequestParam @Nullable String username, @RequestParam @Nullable String email, @RequestParam @Nullable String phone) {
public BaseResponse userCurrent(HttpServletRequest request,
@RequestParam @Nullable String id,
@RequestParam @Nullable String username,
@RequestParam @Nullable String email,
@RequestParam @Nullable String phone) {
log.info("请求接口[GET]: /user/current");
// 检查数据是否有问题
if (id != null && !id.isEmpty()) {
@ -119,12 +124,13 @@ public class UserController {
}
}
if (phone != null && !phone.isEmpty()) {
if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) {
if (!Pattern.matches("^(13[0-9]|14[01456879]|15[0-35-9]|"
+ "16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$", phone)) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, "手机格式不正确");
}
}
// 检查是否出现错误
return userService.userCurrent(id, username, email, phone, request);
return userService.userCurrent(request, id, username, email, phone);
}
/**
@ -154,7 +160,9 @@ public class UserController {
* @Param bindingResult:
**/
@PostMapping("/user/add")
public BaseResponse userAdd(@RequestBody @Validated UserAddVO userAddVo, BindingResult bindingResult, HttpServletRequest request) {
public BaseResponse userAdd(@RequestBody @Validated UserAddVO userAddVo,
BindingResult bindingResult,
HttpServletRequest request) {
log.info("请求接口[POST]: /user/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
@ -170,7 +178,9 @@ public class UserController {
* @Param bindingResult:
**/
@PutMapping("/user/edit")
public BaseResponse userEdit(@RequestBody @Validated UserEditVO userEditVO, BindingResult bindingResult, HttpServletRequest request) {
public BaseResponse userEdit(@RequestBody @Validated UserEditVO userEditVO,
BindingResult bindingResult,
HttpServletRequest request) {
log.info("请求接口[PUT]: /user/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {

View File

@ -52,8 +52,7 @@ public class PermissionDAO {
roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440);
} else {
log.info("\t\t> 从 Redis 获取数据");
getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken<List<String>>() {
}.getType());
getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken<List<String>>() { }.getType());
}
return getPermissionForString;
}
@ -69,16 +68,43 @@ public class PermissionDAO {
getPermissionForString = new ArrayList<>();
forPermissionToBuildString(permissionList, getPermissionForString);
// 存入 Redis
roleRedisUtil
.setData(BusinessConstants.ALL_PERMISSION, "string", gson.toJson(getPermissionForString), 1440);
roleRedisUtil.setData(
BusinessConstants.ALL_PERMISSION,
"string",
gson.toJson(getPermissionForString),
1440);
} else {
log.info("\t\t> 从 Redis 获取数据");
getPermissionForString = gson.fromJson(getRedisData, new TypeToken<List<String>>() {
}.getType());
getPermissionForString = gson.fromJson(getRedisData, new TypeToken<List<String>>() { }.getType());
}
return getPermissionForString;
}
public List<PermissionDO> getRootPermission() {
log.info("\t> 执行 DAO 层 PermissionDAO.getRootPermission 方法");
String getRedisData = roleRedisUtil.getData(BusinessConstants.ALL_PERMISSION, "all");
if (getRedisData == null) {
log.info("\t\t> 从 MySQL 获取数据");
List<PermissionDO> permissionList = permissionMapper.getAllPermission();
if (!permissionList.isEmpty()) {
List<PermissionDO> getPermissionList = new ArrayList<>();
for (PermissionDO permission : permissionList) {
if (permission.getPid() == null) {
getPermissionList.add(permission);
}
}
roleRedisUtil.setData(BusinessConstants.ALL_PERMISSION, "all", gson.toJson(getPermissionList), 1440);
return getPermissionList;
} else {
return null;
}
} else {
log.info("\t\t> 从 Redis 获取数据");
return gson.fromJson(getRedisData, new TypeToken<List<PermissionDO>>() {
}.getType());
}
}
/**
* <h2>获取全部权限信息</h2>
* <hr/>
@ -89,8 +115,7 @@ public class PermissionDAO {
*/
private void forPermissionToBuildString(
@NotNull List<PermissionDO> permissionList,
List<String> getPermissionForString
) {
List<String> getPermissionForString) {
for (PermissionDO permission : permissionList) {
// 寻找是否存在父亲
StringBuilder permissionString = new StringBuilder();

View File

@ -34,7 +34,6 @@ public class ProjectDAO {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectAdd(projectAdd);
}
@ -101,13 +100,14 @@ public class ProjectDAO {
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
for (int i = 0; i < projectShowDO.getData().size(); i++) {
for (int j = 0; j < projectShowDO.getData().size(); j++) {
ProjectShowDO.DataDO dataDO = projectShowDO.getData().get(i);
if ("desc".equals(projectShowDO.getOrder())) {
if (dataDO.getDisplayOrder() > projectShowDO.getData().get(j).getDisplayOrder()) {
if (projectShowDO.getData().get(i).getDisplayOrder()
> projectShowDO.getData().get(j).getDisplayOrder()) {
Collections.swap(projectShowDO.getData(), i, j);
}
} else {
if (dataDO.getDisplayOrder() < projectShowDO.getData().get(j).getDisplayOrder()) {
if (projectShowDO.getData().get(i).getDisplayOrder()
< projectShowDO.getData().get(j).getDisplayOrder()) {
Collections.swap(projectShowDO.getData(), i, j);
}
}
@ -150,7 +150,11 @@ public class ProjectDAO {
}
}
public List<ProjectDO> workget(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish, Integer is) {
public List<ProjectDO> workget(Long userId,
Integer listAll,
List<String> tags,
List<Integer> isFinish,
Integer is) {
log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法");
log.info("\t\t> 从 MySQL 获取数据");
if (tags != null && !tags.isEmpty()) {
@ -247,5 +251,22 @@ public class ProjectDAO {
return projectMapper.getProjectWorkById(id);
}
public List<ProjectDO> getProjectByPrincipalUser(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.getProjectFromUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectByPrincipalUser(uid);
}
public List<ProjectWorkDO> getAllSubsystemByUserId(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubsystemByUserId 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getAllSubsystemByUserId(uid);
}
public List<ProjectWorkDO> getAllSubmoduleByUserId(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubmoduleByUserId 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getAllSubmoduleByUserId(uid);
}
}

View File

@ -0,0 +1,49 @@
package com.jsl.oa.dao;
import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.mapper.ReviewMapper;
import com.jsl.oa.model.dodata.ReviewDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* ReviewDAO
* <hr/>
* 用于处理审核相关的请求, 包括获取审核列表编辑审核信息等
*
* @author zrx_hhh
* @version v1.0.0
* @since v1.0.0-SNAPSHOT
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class ReviewDAO {
private final ReviewMapper reviewMapper;
private final ProjectMapper projectMapper;
public List<ReviewDO> getPrincipalUserReview(Long pid) {
return reviewMapper.selectAllReviewFromProject(pid);
}
public String getNameBySubproject(Long subId) {
if (subId != null) {
return projectMapper.getProjectWorkById(subId).getName();
}
if (subId == null) {
return "";
}
return "";
}
}

View File

@ -18,7 +18,7 @@ import java.util.List;
@Component
@RequiredArgsConstructor
public class RoleDAO {
public final RoleMapper roleMapper;
private final RoleMapper roleMapper;
private final Gson gson;
private final RoleRedisUtil<String> roleRedisUtil;
@ -26,7 +26,8 @@ public class RoleDAO {
log.info("\t> 执行 DAO 层 RoleDAO.addRoleUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
roleMapper.roleAddUser(uid, rid);
roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120);
roleRedisUtil.setData(
BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120);
}
public void delRoleUser(Long uid) {
@ -122,7 +123,8 @@ public class RoleDAO {
log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
if (roleMapper.roleChangeUser(uid, rid)) {
roleRedisUtil.setData(BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120);
roleRedisUtil.setData(
BusinessConstants.USER, uid.toString(), gson.toJson(roleMapper.getRoleUserByUid(uid)), 120);
return true;
} else {
return false;
@ -140,4 +142,6 @@ public class RoleDAO {
return gson.fromJson(getRedisData, RoleUserDO.class);
}
}
}

View File

@ -3,6 +3,8 @@ package com.jsl.oa.dao;
import com.google.gson.Gson;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserCurrentBackVO;
@ -23,9 +25,9 @@ import java.util.List;
* 用于用户的增删改查,以及用户权限的获取,用户信息的获取,用户信息的修改,用户信息的删除,用户信息的锁定,用户信息的解锁,用户信息的添加,用户信息的
* 编辑等
*
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
* @version v1.1.0
* @since v1.1.0
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
*/
@Slf4j
@Component
@ -49,11 +51,13 @@ public class UserDAO {
*/
public UserDO getUserInfoByUsername(String username) {
log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法");
UserDO userDO;
UserDO userDO = null;
// Redis 获取数据
// TODO: 10000-Redis: Redis 获取数据
// 从数据库获取用户信息
userDO = userMapper.getUserInfoByUsername(username);
if (userDO == null) {
userDO = userMapper.getUserInfoByUsername(username);
}
return userDO;
}
@ -112,7 +116,7 @@ public class UserDAO {
/**
* 用户账号锁定
*
* @param id 用户id
* @param id
*/
public void userLock(Long id, Long isLock) {
log.info("\t> 执行 DAO 层 UserDAO.userLock 方法");
@ -132,8 +136,9 @@ public class UserDAO {
List<UserDO> userCurrentDO = userMapper.getAllUser(userAllCurrentVO);
UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO();
userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
.setCount(userMapper.getUsersCount());
userCurrentDO
.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
return userCurrentBackVO;
}
@ -144,17 +149,18 @@ public class UserDAO {
List<UserDO> userCurrentDO = userMapper.getAllUserBySearch(userAllCurrentVO);
UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO();
userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
.setCount(userMapper.getUsersCount());
userCurrentDO
.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
return userCurrentBackVO;
}
/**
* Adds a new user to the database.
*
* @param userDO The UserDO object containing the user's information.
* @return True if the user is successfully added, false otherwise.
* @return
* @Description 用户添加
* @Date: 2024/1/16
* @Param userDO: user 数据库表实体类
*/
public boolean userAdd(UserDO userDO) {
log.info("\t> 执行 DAO 层 userAdd 方法");
@ -168,14 +174,12 @@ public class UserDAO {
userMapper.updateUser(userDO);
}
/**
* <h2>用户名获取用户信息</h2>
* <hr/>
* 根据用户名获取用户信息
*
* @param username 用户名
* @return {@link UserDO}
*/
* @Description 根据username检测用户是否重复
* @Date: 2024/1/16
* @Param username: 用户名
**/
public Boolean isRepeatUser(String username) {
log.info("\t> 执行 DAO 层 isRepeatUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -184,21 +188,22 @@ public class UserDAO {
/**
* 通过用户编号获取用户信息
*
* @param userNum 用户编号
* @return UserDO
*/
* @Description 检测用户工号是否重复
* @Date 2024/1/18
* @Param userNum:
**/
public Boolean isRepeatUserNum(String userNum) {
return userMapper.getUserByUserNum(userNum) != null;
if (userMapper.getUserByUserNum(userNum) != null) {
return true;
}
return false;
}
/**
* 通过 Id 获取用户信息
*
* @param userId 用户id
* @return UserDO
*/
* @Description 根据用户id获取用户数据
* @Date 2024/1/17
* @Param userId
**/
public UserDO getUserById(Long userId) {
log.info("\t> 执行 DAO 层 getUserById 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -206,6 +211,34 @@ public class UserDAO {
}
/**
* @Description 根据用户id查询对应用户权限
* @Date 2024/1/18
* @Param uid:用户id
**/
public RoleUserDO getRoleFromUser(Long uid) {
log.info("\t> 执行 DAO 层 getRoleFromUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
return userMapper.getRoleIdByUserId(uid);
}
/**
* @Description 检验用户权限是否为管理员
* @Date 2024/1/18
* @Param null:用户id
**/
public Boolean isManagerByRoleId(Long roleId) {
log.info("\t> 执行 DAO 层 isManagerByRoleId 方法");
log.info("\t\t> 从 MySQL 获取数据");
RoleDO role = userMapper.getRoleById(roleId);
if (role == null) {
return false;
}
return "admin".equals(role.getRoleName());
}
public List<UserDO> getRecommendUser() {
log.info("\t> 执行 DAO 层 getRecommendUser 方法");
log.info("\t\t> 从 MySQL 获取数据");
@ -223,4 +256,10 @@ public class UserDAO {
log.info("\t\t> 从 MySQL 获取数据");
return userMapper.getUserByPhone(phone);
}
public Long getUsersCount() {
log.info("\t> 执行 DAO 层 getUsersCount 方法");
log.info("\t\t> 从 MySQL 获取数据");
return userMapper.getUsersCount();
}
}

View File

@ -54,8 +54,7 @@ public class ProcessException {
@ExceptionHandler(value = MissingServletRequestParameterException.class)
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException(
MissingServletRequestParameterException e
) {
MissingServletRequestParameterException e) {
log.error(e.getMessage(), e);
return ResponseEntity
.status(400)
@ -100,8 +99,7 @@ public class ProcessException {
*/
@ExceptionHandler(value = MethodArgumentTypeMismatchException.class)
public ResponseEntity<BaseResponse> businessMethodArgumentTypeMismatchException(
@NotNull MethodArgumentTypeMismatchException e
) {
@NotNull MethodArgumentTypeMismatchException e) {
log.error(e.getMessage(), e);
return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误");
}

View File

@ -11,6 +11,7 @@ import java.util.List;
public interface ModuleMapper {
List<ProjectWorkDO> getByProjectId(Integer projectId, Long userId, int is);
List<ProjectWorkDO> getBySysId(Integer sysId, Long userId, int is);

View File

@ -51,12 +51,15 @@ public interface ProjectMapper {
@Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())")
void insertProjectShow();
@Update("UPDATE organize_oa.oa_config"
+ " SET data = #{setProjectShow}, updated_at = CURRENT_TIMESTAMP "
+ " WHERE value = 'project_show'"
)
@Update("UPDATE organize_oa.oa_config SET data = #{setProjectShow},"
+ " updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'")
boolean setProjectShow(String setProjectShow);
//@Select("select * from organize_oa.oa_project where json_extract(tags,'$.tags')" +
//"like concat('%',#{tags},'%')")
//@Select("select * from organize_oa.oa_project where is_finish=#{isFinish}
// and is_delete=false and principal_id=#{userId}")
List<ProjectDO> getByIsfinish(Long userId, List<Integer> isFinish);
List<ProjectDO> getByTags(Long userId, List<String> tags, List<Integer> isFinish);
@ -92,7 +95,9 @@ public interface ProjectMapper {
boolean updateUserForProjectUser(Long uid, Long id);
//@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}")
//@Select("select * from organize_oa.oa_project_work
// where is_finish=#{isFinish} and is_delete=false
// and principal_id =#{userId}")
List<ProjectDO> workgetByIsfinish(Long userId, List<Integer> isFinish, Integer is);
List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is, List<Integer> isFinish);
@ -117,9 +122,23 @@ public interface ProjectMapper {
@Select("select principal_id from organize_oa.oa_project_work where id=#{pid}")
Long getPirIdbyWorkid(Long pid);
@Select("select principal_id from organize_oa.oa_project_work where id=#{id}")
@Select("select principal_id from organize_oa.oa_project_work where id=#{id} AND"
+ "is_delete = 0")
Long getPid(Integer id);
@Select("select * from organize_oa.oa_project_work where id=#{id}")
@Select("select * from organize_oa.oa_project_work where id=#{id}"
+ "AND is_delete = 0")
ProjectWorkDO getProjectWorkById(Long id);
@Select("SELECT * FROM organize_oa.oa_project where principal_id = #{uid} "
+ "AND is_delete = 0")
List<ProjectDO> getProjectByPrincipalUser(Long uid);
@Select("SELECT * FROM organize_oa.oa_project_work where principal_id = #{uid} "
+ "AND is_delete = 0 AND category = 0")
List<ProjectWorkDO> getAllSubsystemByUserId(Long uid);
@Select("SELECT * FROM organize_oa.oa_project_work where principal_id = #{uid}"
+ "AND is_delete = 0 AND category = 1")
List<ProjectWorkDO> getAllSubmoduleByUserId(Long uid);
}

View File

@ -0,0 +1,27 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.ReviewDO;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface ReviewMapper {
@Select("SELECT * FROM organize_oa.oa_review WHERE project_id = #{projectId}"
+ "AND is_delete = 0")
List<ReviewDO> selectAllReviewFromProject(Long projectId);
@Select("SELECT * FROM organize_oa.oa_review WHERE "
+ "project_subsystem_id = #{subsystemId} AND is_delete = 0")
List<ReviewDO> selectReviewFromSubsystem(Long subsystemId);
@Select("SELECT * FROM organize_oa.oa_review WHERE "
+ "project_submodule_id = #{subsystemId} AND is_delete = 0")
List<ReviewDO> selectReviewFromSubmodule(Long submoduleId);
@Select("SELECT * FROM organize_oa.oa_review WHERE id = #{id} AND is_delete = 0")
ReviewDO selectReviewById(Long id);
}

View File

@ -30,7 +30,8 @@ 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},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}")
@Update("UPDATE organize_oa.oa_role SET role_name=#{roleName},"
+ "display_name=#{displayName},updated_at=CURRENT_TIMESTAMP WHERE id=#{id}")
boolean roleEdit(RoleDO getRole);
@Update("UPDATE organize_oa.oa_role_user SET rid = #{rid},updated_at = current_timestamp WHERE uid = #{uid}")

View File

@ -37,7 +37,9 @@ public interface UserMapper {
@Update("UPDATE organize_oa.oa_user SET is_delete = true ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id}")
void userDelete(Long id);
@Update("UPDATE organize_oa.oa_user SET account_no_locked = #{isLock} ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ")
@Update("UPDATE organize_oa.oa_user "
+ "SET account_no_locked = #{isLock} "
+ ", updated_at = CURRENT_TIMESTAMP WHERE id = #{id} ")
void userLock(Long id, Long isLock);
@Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}")
@ -77,11 +79,12 @@ public interface UserMapper {
List<UserDO> getRecommendUser();
@Update("UPDATE organize_oa.oa_user " +
"SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " +
"signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " +
"description = #{description} ,updated_at = current_timestamp " +
"WHERE id = #{id}")
@Update("UPDATE organize_oa.oa_user "
+ "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, "
+ "signature = #{signature}, sex = #{sex}, "
+ "avatar = #{avatar}, nickname = #{nickname}, "
+ "description = #{description} ,updated_at = current_timestamp "
+ "WHERE id = #{id}")
void updateUser(UserDO userDO);
@Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}")
@ -96,7 +99,8 @@ public interface UserMapper {
@Select("SELECT COUNT(*) FROM organize_oa.oa_user")
Long getUsersCount();
@Select("select oa_user.id,oa_user.username,oa_role.role_name from organize_oa.oa_user join organize_oa.oa_role_user " +
"on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id")
@Select("select oa_user.id,oa_user.username,"
+ "oa_role.role_name from organize_oa.oa_user join organize_oa.oa_role_user "
+ "on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id")
List<PrincipalSelectVO> getPrincipal();
}

View File

@ -14,8 +14,8 @@ import java.util.List;
* @since v1.1.0
* @version v1.1.0
* @author 176yunxuan
* @param <R> 对类型的泛型处理
*/
@Data
@NoArgsConstructor
@AllArgsConstructor

View File

@ -27,8 +27,8 @@ public class ProjectCuttingDO {
private Long cycle;
private String name;
private String description;
private Integer is_delete;
private Integer is_finish;
private Integer isDelete;
private Integer isFinish;
private Integer status;
private boolean type;
private Timestamp beginTime;

View File

@ -0,0 +1,52 @@
package com.jsl.oa.model.dodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* <h1>oa_review 数据表</h1>
* <hr/>
* 映射 oa_permission 数据表内容进入自定义实体类
*
* @author 筱锋xiao_lfeng
* @since v1.1.0
* @version v1.1.0
*/
@Data
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ReviewDO {
//主键
private Long id;
//申请名称
private String name;
//申请理由
private String content;
//申请者用户id
private Long senderId;
//审核者用户id
private Long recipientId;
//审核类别0子系统1子模块
private Integer category;
//申请的项目id
private Long projectId;
//申请的子系统id
private Long projectSubsystemId;
//申请的子模块id
private Long projectSubmoduleId;
//申请时间
private Date applicationTime;
//审核时间
private Date reviewTime;
//审核结果0未通过1通过2未审批
private Integer reviewResult;
//是否删除0未删除1已删除
private Integer isDelete;
}

View File

@ -0,0 +1,47 @@
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@Accessors(chain = true)
public class ReviewVO {
private Long id;
//申请名称
private String name;
//申请理由
private String content;
//申请者用户id
private Long senderId;
//审请者用户名称
private String senderName;
//审核者用户id
private Long recipientId;
//审核者用户名称
private String recipientName;
//审核类别子系统 子模块
private String category;
//申请的项目id
private Long projectId;
//申请的项目名称
private String projectName;
//申请的子系统id
private Long projectSubsystemId;
//申请的子系统名称
private String subsystemName;
//申请的子模块id
private Long projectSubmoduleId;
//申请的模块名称
private String submoduleName;
//申请时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date applicationTime;
//审核结果0未通过1通过2未审批
private String result;
}

View File

@ -27,10 +27,10 @@ public class UserRegisterVO {
@NotBlank(message = "家乡不能为空")
private String address;
@Pattern(
regexp = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$",
message = "电话格式错误"
)
@NotBlank(message = "电话不能为空")
@Pattern(regexp =
"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$",
message = "电话格式错误")
private String phone;
@NotBlank(message = "邮箱不能为空")

View File

@ -33,7 +33,6 @@ public interface InfoService {
*
* @param request 请求
* @param carouselVO 轮播图VO
* @param id 轮播图ID
* @return {@link BaseResponse}
*/
BaseResponse editHeaderImage(HttpServletRequest request, CarouselVO carouselVO);

View File

@ -24,7 +24,12 @@ public interface ProjectService {
BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id);
BaseResponse get(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer page, Integer pageSize);
BaseResponse get(Integer listAll,
HttpServletRequest request,
List<String> tags,
List<Integer> isFinish,
Integer page,
Integer pageSize);
BaseResponse getByName(String name);
@ -36,7 +41,13 @@ public interface ProjectService {
BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid);
BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is, Integer page, Integer pageSize);
BaseResponse workget(Integer listAll,
HttpServletRequest request,
List<String> tags,
List<Integer> isFinish,
Integer is,
Integer page,
Integer pageSize);
BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO);

View File

@ -0,0 +1,12 @@
package com.jsl.oa.services;
import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest;
public interface ReviewService {
BaseResponse getUserReview(Long projectId, HttpServletRequest request);
}

View File

@ -16,9 +16,9 @@ import javax.servlet.http.HttpServletRequest;
* @since v1.1.0
*/
public interface RoleService {
BaseResponse roleAddUser(HttpServletRequest request,Long uid, Long rid);
BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid);
BaseResponse roleRemoveUser(HttpServletRequest request,Long uid);
BaseResponse roleRemoveUser(HttpServletRequest request, Long uid);
BaseResponse roleGet(HttpServletRequest request, String id);

View File

@ -1,5 +1,6 @@
package com.jsl.oa.services;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.UserAddVO;
import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserEditProfileVO;
@ -17,6 +18,15 @@ import javax.servlet.http.HttpServletRequest;
* @since v1.1.0
*/
public interface UserService {
/**
* <h2>根据用户名获取用户信息</h2>
* <hr/>
* 该方法用于根据用户名获取用户信息
*
* @param username 用户名
* @return 用户信息
*/
UserDO getUserInfoByUsername(String username);
/**
* <h2>用户账号删除</h2>
@ -71,7 +81,7 @@ public interface UserService {
* @param phone 手机号
* @return {@link BaseResponse}
*/
BaseResponse userCurrent(String id, String username, String email, String phone, HttpServletRequest request);
BaseResponse userCurrent(HttpServletRequest request, String id, String username, String email, String phone);
BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request);

View File

@ -4,6 +4,7 @@ import com.jsl.oa.annotations.CheckUserAbleToUse;
import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
@ -39,6 +40,7 @@ import java.util.regex.Pattern;
@RequiredArgsConstructor
public class AuthServiceImpl implements AuthService {
private final UserMapper userMapper;
private final RoleMapper roleMapper;
private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO;
@ -273,7 +275,7 @@ public class AuthServiceImpl implements AuthService {
getPermissionForString = permissionDAO.getPermission(userDO.getId());
}
// 获取用户角色
RoleUserDO getUserRole = roleDAO.roleMapper.getRoleUserByUid(userDO.getId());
RoleUserDO getUserRole = roleMapper.getRoleUserByUid(userDO.getId());
if (getUserRole == null) {
getUserRole = new RoleUserDO();
getUserRole.setRid(0L)

View File

@ -93,12 +93,13 @@ public class ProjectServiceImpl implements ProjectService {
} else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
}//增加子模块
else {
} else {
//是否是子系统的负责人
if (Objects.equals(userId, projectMapper.getPirIdbyWorkid(projectWorkVO.getPid()))) {
projectDAO.projectWorkAdd(projectWorkVO);
} else return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
}
return ResultUtil.success("添加成功");
@ -231,8 +232,8 @@ public class ProjectServiceImpl implements ProjectService {
//判断用户是否为老师 或者 项目负责人
if (!Processing.checkUserIsTeacher(request, roleMapper) ||
!projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) {
if (!Processing.checkUserIsTeacher(request, roleMapper)
|| !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
@ -361,7 +362,10 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
public BaseResponse get(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer page, Integer pageSize) {
public BaseResponse get(Integer listAll,
HttpServletRequest request,
List<String> tags, List<Integer> isFinish,
Integer page, Integer pageSize) {
log.info("\t> 执行 Service 层 ProjectService.get 方法");
//获取用户
@ -437,7 +441,11 @@ public class ProjectServiceImpl implements ProjectService {
}
@Override
public BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is, Integer page, Integer pageSize) {
public BaseResponse workget(Integer listAll,
HttpServletRequest request,
List<String> tags,
List<Integer> isFinish,
Integer is, Integer page, Integer pageSize) {
log.info("\t> 执行 Service 层 ProjectService.workget 方法");
//获取用户

View File

@ -0,0 +1,118 @@
package com.jsl.oa.services.impl;
import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.ReviewDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.ReviewMapper;
import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.dodata.ReviewDO;
import com.jsl.oa.model.vodata.ReviewVO;
import com.jsl.oa.services.ReviewService;
import com.jsl.oa.utils.BaseResponse;
import com.jsl.oa.utils.Processing;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class ReviewServiceImpl implements ReviewService {
private final UserDAO userDAO;
private final ReviewDAO reviewDAO;
private final ProjectDAO projectDAO;
private final UserMapper userMapper;
private final ReviewMapper reviewMapper;
@Override
public BaseResponse getUserReview(Long projectId, HttpServletRequest request) {
log.info("\t> 执行 Service 层 ReviewService.getUserReview 方法");
//获取用户
Long userId = Processing.getAuthHeaderToUserId(request);
//存储审核数据的数组
List<ReviewVO> reviewData = new ArrayList<>();
//先获取用户为项目负责人的项目列表
projectDAO.getProjectByPrincipalUser(userId);
//先从用户为 项目负责人 的项目中获取对应 审核信息
for (ProjectDO projectDO : projectDAO.getProjectByPrincipalUser(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
selectAllReviewFromProject(projectDO.getId());
//封装VO类
reviewData.addAll(encapsulateArrayClass(reviewDOS));
}
//在从用户为 子系统负责人 的项目中获取对应 审核信息
for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
selectReviewFromSubsystem(projectWorkDO.getId());
//封装VO类
reviewData.addAll(encapsulateArrayClass(reviewDOS));
}
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectWorkDO projectWorkDO : projectDAO.getAllSubmoduleByUserId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
selectReviewFromSubmodule(projectWorkDO.getId());
//封装VO类
reviewData.addAll(encapsulateArrayClass(reviewDOS));
}
return ResultUtil.success(reviewData);
}
/**
* @Description: 封装审核的VO类
* @Date: 2024/4/11
* @Param reviewDOS:
**/
public List<ReviewVO> encapsulateArrayClass(List<ReviewDO> reviewDOS) {
// 定义封装类结果集数组
List<ReviewVO> resultData = new ArrayList<>();
for (ReviewDO reviewDO : reviewDOS) {
ReviewVO reviewVO = new ReviewVO();
// 现将相同的属性赋值
Processing.copyProperties(reviewDO, reviewVO);
// 赋值其他属性
reviewVO.setCategory(Processing.turnReviewCategory(reviewDO.getCategory()))
.setSenderName(userMapper.getUserById(reviewDO.getSenderId()).getNickname())
.setRecipientName(userMapper.getUserById(reviewDO.getRecipientId()).getNickname())
.setProjectName(projectDAO.getProjectById(reviewDO.getProjectId()).getName())
.setSubsystemName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubsystemId()))
.setSubmoduleName(reviewDAO.getNameBySubproject(reviewDO.getProjectSubmoduleId()))
.setResult(Processing.turnReviewResult(reviewDO.getReviewResult()));
// 将封装好的结果添加到结果集
resultData.add(reviewVO);
}
return resultData;
}
}

View File

@ -4,6 +4,7 @@ import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.exception.ClassCopyException;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.model.vodata.RoleAddVo;
import com.jsl.oa.model.vodata.RoleEditVO;
@ -41,11 +42,13 @@ public class RoleServiceImpl implements RoleService {
private final RoleDAO roleDAO;
private final UserDAO userDAO;
private final RoleMapper roleMapper;
@Override
@CheckUserHasPermission("role.add")
public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) {
log.info("\t> 执行 Service 层 RoleService.addRoleUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (Processing.checkUserIsAdmin(request, roleMapper)) {
roleDAO.addRoleUser(uid, rid);
return ResultUtil.success();
} else {
@ -57,7 +60,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) {
log.info("\t> 执行 Service 层 RoleService.delRoleUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (Processing.checkUserIsAdmin(request, roleMapper)) {
roleDAO.delRoleUser(uid);
return ResultUtil.success();
} else {
@ -77,7 +80,7 @@ public class RoleServiceImpl implements RoleService {
return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES);
}
//检测用户权限是否为管理员
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (Processing.checkUserIsAdmin(request, roleMapper)) {
if (roleDAO.roleChangeUser(uid, rid)) {
return ResultUtil.success();
} else {
@ -92,7 +95,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleGet(HttpServletRequest request, String id) {
log.info("\t> 执行 Service 层 RoleService.roleGet 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取 Role 权限组
@ -119,7 +122,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) {
log.info("\t> 执行 Service 层 RoleService.roleEdit 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取 Role 相关信息
@ -143,7 +146,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 RoleService.roleDelete 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 获取 Role 相关信息
@ -165,7 +168,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException {
log.info("\t> 执行 Service 层 RoleService.addRole 方法");
// 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 检查权限名称是否重复

View File

@ -5,7 +5,8 @@ import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.model.dodata.RoleDO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.vodata.*;
@ -22,8 +23,6 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
/**
@ -42,16 +41,22 @@ import java.util.regex.Pattern;
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final RoleMapper roleMapper;
private final UserDAO userDAO;
private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO;
@Override
public UserDO getUserInfoByUsername(String username) {
return userDAO.getUserInfoByUsername(username);
}
@Override
public BaseResponse userDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 UserService.userDelete 方法");
//判断用户是否存在
if (userDAO.isExistUser(id)) {
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
// 用户是否已删除
@ -69,7 +74,7 @@ public class UserServiceImpl implements UserService {
@Override
public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) {
log.info("\t> 执行 Service 层 UserService.userLock 方法");
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//判断用户是否存在
@ -127,15 +132,14 @@ public class UserServiceImpl implements UserService {
return ResultUtil.success(userCurrentBackVO);
}
@SuppressWarnings("checkstyle:NestedIfDepth")
@Override
@CheckUserAbleToUse
public BaseResponse userCurrent(
String id,
String username,
String email,
String phone,
HttpServletRequest request
) {
public BaseResponse userCurrent(HttpServletRequest request,
String id,
String username,
String email,
String phone) {
log.info("\t> 执行 Service 层 UserService.userCurrent 方法");
if (id == null && username == null && email == null && phone == null) {
// Token获取信息
@ -148,21 +152,13 @@ public class UserServiceImpl implements UserService {
} else {
// 检查是否是管理员用户
Long userId = Processing.getAuthHeaderToUserId(request);
if (userId != null) {
List<String> getPermission = permissionDAO.getPermission(userId);
// 匹配权限
if (!getPermission.contains("user.current")) {
log.info("\t> 用户权限不足,检查是否是管理员");
// 检查用户是管理员
RoleUserDO roleUserDO = roleDAO
.getRoleUserByUid(Objects.requireNonNull(Processing.getAuthHeaderToUserId(request)));
if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin");
if (!roleUserDO.getRid().equals(roleDO.getId())) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
if (userId != null && !permissionDAO.getPermission(userId).contains("user.current")) {
log.info("\t> 用户权限不足,检查是否是管理员");
RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO == null || !roleUserDO.getRid().equals(roleMapper.getRoleByRoleName("admin").getId())) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
} else {
return ResultUtil.error(ErrorCode.TOKEN_NOT_EXIST);
@ -192,7 +188,7 @@ public class UserServiceImpl implements UserService {
public BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request) {
log.info("\t> 执行 Service 层 UserService.userAdd 方法");
// 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//如果用户不重复添加用户
@ -230,7 +226,7 @@ public class UserServiceImpl implements UserService {
public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) {
log.info("\t> 执行 Service 层 userEdit 方法");
// 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) {
if (!Processing.checkUserIsAdmin(request, roleMapper)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN);
}
//根据id获取用户信息

View File

@ -51,7 +51,8 @@ public enum ErrorCode {
PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"),
PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"),
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"),
PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误");
PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"),
PROJECT_NOT_USER("ProjectNotUser", 40020, "项目无此用户");
private final String output;

View File

@ -182,9 +182,9 @@ public class Processing {
/**
* 检查用户是否是老师
*
* @param request 请求
* @param roleMapper RoleMapper
* @return 如果为 true 是老师false 不是老师
* @param request
* @param roleMapper
* @return
*/
public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) {
RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
@ -205,16 +205,11 @@ public class Processing {
/**
* 将属性从源对象复制到目标对象
*
* @param <T> 目标对象的类型
* @param <S> 源对象的类型
* @param source 从中复制属性的源对象
* @param target 属性将复制到的目标对象
* @return 复制属性后的目标对象
* @throws ClassCopyException 如果在复制过程中出现错误
*/
@Contract(pure = true)
* @Description: VO类与实体类属性赋值
* @Date: 2024/1/18
* @Param source:
* @Param dest:
**/
public static <T, S> T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException {
Class<?> sourceClass = source.getClass();
Class<?> targetClass = target.getClass();
@ -285,10 +280,7 @@ public class Processing {
* @return {@link BaseResponse}
*/
public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo(
@NotNull UserDO userDO,
RoleDAO roleDAO,
PermissionDAO permissionDAO
) {
@NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) {
UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent();
// 获取用户角色
RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId());
@ -308,29 +300,30 @@ public class Processing {
// 获取权限列表信息
getPermissionForString = permissionDAO.getPermission(userDO.getId());
}
userCurrent.setUser(new UserCurrentBackVO.ReturnUser()
.setId(userDO.getId())
.setJobId(userDO.getJobId())
.setUsername(userDO.getUsername())
.setAddress(userDO.getAddress())
.setPhone(userDO.getPhone())
.setEmail(userDO.getEmail())
.setAge(userDO.getAge())
.setSignature(userDO.getSignature())
.setAvatar(userDO.getAvatar())
.setNickname(userDO.getNickname())
.setSex(userDO.getSex())
.setEnabled(userDO.getEnabled())
.setAccountNoExpired(userDO.getAccountNoExpired())
.setCredentialsNoExpired(userDO.getCredentialsNoExpired())
.setRecommend(userDO.getRecommend())
.setAccountNoLocked(userDO.getAccountNoLocked())
.setDescription(userDO.getDescription())
.setCreatedAt(userDO.getCreatedAt())
.setUpdatedAt(userDO.getUpdatedAt())
.setIsDelete(userDO.getIsDelete()))
.setRole(new UserCurrentBackVO.ReturnUserRole().setRid(getUserRole.getRid()))
.setPermission(getPermissionForString);
userCurrent.setUser(new UserCurrentBackVO.ReturnUser().
setId(userDO.getId()).
setJobId(userDO.getJobId()).
setUsername(userDO.getUsername()).
setAddress(userDO.getAddress()).
setPhone(userDO.getPhone()).
setEmail(userDO.getEmail()).
setAge(userDO.getAge()).
setSignature(userDO.getSignature()).
setAvatar(userDO.getAvatar()).
setNickname(userDO.getNickname()).
setSex(userDO.getSex()).
setEnabled(userDO.getEnabled()).
setAccountNoExpired(userDO.getAccountNoExpired()).
setCredentialsNoExpired(userDO.getCredentialsNoExpired()).
setRecommend(userDO.getRecommend()).
setAccountNoLocked(userDO.getAccountNoLocked()).
setDescription(userDO.getDescription()).
setCreatedAt(userDO.getCreatedAt()).
setUpdatedAt(userDO.getUpdatedAt()).
setIsDelete(userDO.getIsDelete())).
setRole(new UserCurrentBackVO.ReturnUserRole().
setRid(getUserRole.getRid())).
setPermission(getPermissionForString);
return userCurrent;
}
@ -356,7 +349,11 @@ public class Processing {
return userDOS;
}
public static void projectTosimply(ProjectSimpleVO projectSimpleVO, ProjectDO projectDO, UserDAO userDAO, ObjectMapper objectMapper) {
public static void projectTosimply(
ProjectSimpleVO projectSimpleVO,
ProjectDO projectDO,
UserDAO userDAO,
ObjectMapper objectMapper) {
projectSimpleVO.setId(projectDO.getId());
projectSimpleVO.setName(projectDO.getName());
@ -432,4 +429,39 @@ public class Processing {
return vo;
}
/**
* @Description: 转换审核的类别属性为字符串
* @Date: 2024/4/11
* @Param category:
**/
public static String turnReviewCategory(Integer category) {
switch (category) {
case 0:
return "子系统";
case 1:
return "模块";
default:
return "其他";
}
}
public static String turnReviewResult(Integer result) {
switch (result) {
case 0:
return "已拒绝";
case 1:
return "已审批";
case 2:
return "待审核";
default:
return "其他";
}
}
}

View File

@ -1,5 +1,5 @@
maven:
timestamp: @buildDate@
timestamp: 2024/3/10
spring:
profiles:
active: @profile.active@