Compare commits

..

14 Commits

Author SHA1 Message Date
3d7f457ef3 Merge: 初步合并,后续还需要继续进行修改内容
Reviewed-on: #14
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-14 14:55:42 +08:00
aa9efbcc8b
patch: 补丁
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 18s
2024-04-14 14:54:46 +08:00
05ccc3fdd8
patch: 部分内容进行补丁
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 23s
- 拼写错误
- 未引入部分删除
2024-04-14 14:52:33 +08:00
176yunxuan
55cd033a7e fix:初步重构
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 30s
2024-04-13 20:42:42 +08:00
5a57ea4b1c
patch: 数据表上传 2024-04-11 23:53:16 +08:00
383de6766f Merge pull request 'feat:增加新业务功能获取审核列表' (#10) from feature-zrx into develop
Reviewed-on: #10
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-11 20:46:33 +08:00
381de9d54b
patch: 漏洞修补,规范化
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 20s
2024-04-11 20:22:42 +08:00
061d469c17
Merge branch 'refs/heads/develop' into feature-zrx
# Conflicts:
#	src/main/java/com/jsl/oa/aspect/AnnotationsAspect.java
#	src/main/java/com/jsl/oa/common/constant/SafeConstants.java
#	src/main/java/com/jsl/oa/controllers/PermissionController.java
#	src/main/java/com/jsl/oa/controllers/ProjectController.java
#	src/main/java/com/jsl/oa/controllers/RoleController.java
#	src/main/java/com/jsl/oa/controllers/UserController.java
#	src/main/java/com/jsl/oa/dao/ProjectDAO.java
#	src/main/java/com/jsl/oa/dao/RoleDAO.java
#	src/main/java/com/jsl/oa/dao/UserDAO.java
#	src/main/java/com/jsl/oa/mapper/ProjectMapper.java
#	src/main/java/com/jsl/oa/mapper/RoleMapper.java
#	src/main/java/com/jsl/oa/mapper/UserMapper.java
#	src/main/java/com/jsl/oa/services/ProjectService.java
#	src/main/java/com/jsl/oa/services/impl/AuthServiceImpl.java
#	src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java
#	src/main/java/com/jsl/oa/services/impl/RoleServiceImpl.java
#	src/main/java/com/jsl/oa/services/impl/UserServiceImpl.java
#	src/main/java/com/jsl/oa/utils/Processing.java
2024-04-11 20:17:32 +08:00
a375bdee78 Merge: 代码规约,Message 部分(消息部分)
Reviewed-on: #11
Reviewed-by: 筱锋xiao_lfeng <gm@x-lf.cn>
2024-04-11 20:04:11 +08:00
5f0e58ab06
feat: 代码规约修改,BUG 补丁
All checks were successful
代码检查 / 代码检查 (pull_request) Successful in 19s
2024-04-11 19:31:16 +08:00
176yunxuan
b994aeefd8 feat:定时查找快到期项目提醒
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 21s
2024-04-11 19:10:07 +08:00
xiangZr-hhh
365f2dfa67 feat:增加新业务功能获取审核列表
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 21s
2024-04-11 17:27:34 +08:00
176yunxuan
3e0652034e feat:消息模块
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 19s
2024-04-10 21:10:39 +08:00
176yunxuan
3ca0bed1e1 feat:消息模块
Some checks failed
代码检查 / 代码检查 (pull_request) Failing after 19s
2024-04-10 20:51:48 +08:00
60 changed files with 1420 additions and 824 deletions

View File

@ -0,0 +1,23 @@
USE organize_oa;
create table oa_project_child
(
id bigint unsigned auto_increment comment '项目id'
primary key,
project_id bigint unsigned not null comment '主要项目id',
name varchar(100) not null comment '项目名称',
principal_id bigint unsigned not null comment '项目负责人',
description json null comment '项目描述(技术选择,描述)',
cycle int unsigned not null comment '项目周期',
work_load int unsigned default '1' not null comment '工作量(人天)',
files json null comment '子项目文件',
complete_time date null comment '完成时间',
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at timestamp null comment '更新时间',
is_delete tinyint(1) default 0 not null comment '项目是否删除',
constraint oa_project_child_oa_user_id_fk
foreign key (principal_id) references oa_user (id)
on update cascade
)
comment '项目表';

View File

@ -0,0 +1,21 @@
USE organize_oa;
create table oa_project_modules
(
id bigint unsigned auto_increment comment '模块id'
primary key,
project_child_id bigint unsigned not null comment '子项目id',
name varchar(100) not null comment '模块名称',
principal_id bigint unsigned not null comment '模块负责人',
description json null comment '项目描述(技术选择,描述)',
work_load int unsigned default '1' not null comment '工作量(人天)',
complete_time datetime null comment '完成时间',
created_at timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
updated_at timestamp null comment '更新时间',
is_delete tinyint(1) default 0 not null comment '项目是否删除',
constraint oa_project_modules_oa_user_id_fk
foreign key (principal_id) references oa_user (id)
on update cascade
)
comment '模块表';

View File

@ -39,7 +39,7 @@ public class JslOrganizeInternalOaRunnerApplication implements SmartInitializing
public void afterSingletonsInstantiated() { public void afterSingletonsInstantiated() {
// 获取数据库中的 SecurityKey // 获取数据库中的 SecurityKey
try { try {
SafeConstants.SECRET_KEY = infoMapper.getSecurityKey().getData(); SafeConstants.setSecretKey(infoMapper.getSecurityKey().getData());
} catch (NullPointerException exception) { } catch (NullPointerException exception) {
// 生成密钥 // 生成密钥
String key = Processing.generateKey(System.currentTimeMillis()); String key = Processing.generateKey(System.currentTimeMillis());
@ -53,7 +53,7 @@ public class JslOrganizeInternalOaRunnerApplication implements SmartInitializing
.setData(json) .setData(json)
.setCreatedAt(new Timestamp(System.currentTimeMillis())); .setCreatedAt(new Timestamp(System.currentTimeMillis()));
infoMapper.insertSecurityKey(configDO); infoMapper.insertSecurityKey(configDO);
SafeConstants.SECRET_KEY = key; SafeConstants.setSecretKey(key);
} }
} }
} }

View File

@ -43,8 +43,8 @@ import java.util.Objects;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class AnnotationsAspect { public class AnnotationsAspect {
private final RoleDAO roleDAO;
private final UserMapper userMapper; private final UserMapper userMapper;
private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO; private final PermissionDAO permissionDAO;
/** /**
@ -91,12 +91,12 @@ public class AnnotationsAspect {
} else { } else {
log.info("\t> 用户权限不足,检查是否是管理员"); log.info("\t> 用户权限不足,检查是否是管理员");
// 检查用户是管理员 // 检查用户是管理员
RoleUserDO roleUserDO = roleDAO.roleMapper RoleUserDO roleUserDO = roleDAO
.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); .getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO == null) { if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); RoleDO roleDO = roleDAO.getRoleByRoleName("admin");
if (roleUserDO.getRid().equals(roleDO.getId())) { if (roleUserDO.getRid().equals(roleDO.getId())) {
return pjp.proceed(); return pjp.proceed();
} else { } else {

View File

@ -1,5 +1,12 @@
package com.jsl.oa.common.constant; package com.jsl.oa.common.constant;
import lombok.Getter;
import lombok.Setter;
public class SafeConstants { public class SafeConstants {
public static String SECRET_KEY;
@Getter
@Setter
private static String secretKey;
} }

View File

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

View File

@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate; import java.time.LocalDateTime;
/** /**
* <h1>消息控制器</h1> * <h1>消息控制器</h1>
@ -59,11 +59,12 @@ public class MessageController {
* @return 消息列表 * @return 消息列表
*/ */
@GetMapping("/message/get") @GetMapping("/message/get")
public BaseResponse messageGet(@RequestParam(defaultValue = "1") Long page, public BaseResponse messageGet(
@RequestParam(defaultValue = "10") Long pageSize, @RequestParam(required = false, defaultValue = "1") Integer page,
HttpServletRequest request, @RequestParam(required = false, defaultValue = "10") Integer pageSize,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime end,
HttpServletRequest request) {
log.info("请求接口[GET]:/message/get"); log.info("请求接口[GET]:/message/get");
String token = request.getHeader("Authorization").replace("Bearer ", ""); String token = request.getHeader("Authorization").replace("Bearer ", "");
Long uid = JwtUtil.getUserId(token); Long uid = JwtUtil.getUserId(token);
@ -74,33 +75,18 @@ public class MessageController {
} }
} }
/** @GetMapping("/message/get/id")
* 获取所有消息列表 public BaseResponse messageGetById(
* @RequestParam Long id,
* @param page 页码 HttpServletRequest request) {
* @param pageSize 每页条数 log.info("请求接口[GET]:/message/get/id");
* @param request 请求对象
* @param begin 开始日期
* @param end 结束日期
* @param uid 用户id
* @return 消息列表
*/
@GetMapping("/message/get/all")
public BaseResponse messageGetAll(@RequestParam(defaultValue = "1") Long page,
@RequestParam(defaultValue = "10") Long pageSize,
HttpServletRequest request,
@RequestParam Long uid,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
log.info("请求接口[GET]:/message/get/all");
String token = request.getHeader("Authorization").replace("Bearer ", ""); String token = request.getHeader("Authorization").replace("Bearer ", "");
Long loginId = JwtUtil.getUserId(token); Long uid = JwtUtil.getUserId(token);
if (loginId == null) { if (uid == null) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST); return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
} else { } else {
return messageService.messageGetAll(request, begin, end, page, pageSize, loginId, uid); return messageService.messageGetById(id, uid);
} }
} }
} }

View File

@ -88,7 +88,11 @@ public class PermissionController {
* @return {@link BaseResponse} 对象包含操作结果 * @return {@link BaseResponse} 对象包含操作结果
*/ */
@PutMapping("/permission/edit") @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"); log.info("请求接口[PUT]: /permission/edit");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {

View File

@ -1,8 +1,7 @@
package com.jsl.oa.controllers; package com.jsl.oa.controllers;
import com.jsl.oa.model.vodata.ProjectCuttingAddVO;
import com.jsl.oa.model.vodata.ProjectCuttingEditVO;
import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectWorkVO; import com.jsl.oa.model.vodata.ProjectWorkVO;
import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO;
import com.jsl.oa.services.ProjectService; import com.jsl.oa.services.ProjectService;
@ -51,17 +50,10 @@ public class ProjectController {
return projectService.getHeader(id); return projectService.getHeader(id);
} }
/**
* @param id 获取项目 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/get/id")
public BaseResponse projectGetById(@RequestParam Integer id) {
return projectService.getById(id);
}
/** /**
* @param id 获取项目 id * @param id 要查询的 id
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@GetMapping("/project/getwork/id") @GetMapping("/project/getwork/id")
@ -69,19 +61,28 @@ public class ProjectController {
return projectService.getWorkById(id); return projectService.getWorkById(id);
} }
/**
* @param id 要查询项目的 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/get/id")
public BaseResponse projectGetById(@RequestParam Integer id) {
return projectService.getById(id);
}
/** /**
* 游客获取项目 * 游客获取项目
* *
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@GetMapping("/project/get/custom") @GetMapping("/project/get/custom")
public BaseResponse projectGetCustom(@RequestParam(required = false) Integer id, public BaseResponse projectGetCustom(
@RequestParam(required = false) List<String> tags, @RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish, @RequestParam(required = false) List<String> isFinish,
@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) { @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
log.info("请求接口[GET]: /project/all/get"); log.info("请求接口[GET]: /project/get/custom");
return projectService.tget(id, tags, isFinish, page, pageSize); return projectService.tGet(tags, isFinish, page, pageSize);
} }
/** /**
@ -90,31 +91,31 @@ public class ProjectController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@GetMapping("/project/get") @GetMapping("/project/get")
public BaseResponse projectGet(@RequestParam(required = false) Integer listAll, public BaseResponse projectGet(
@RequestParam(required = false) List<String> tags, @RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish, @RequestParam(required = false) List<String> isFinish,
@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize, @RequestParam(required = false, defaultValue = "10") Integer pageSize,
HttpServletRequest request) { HttpServletRequest request) {
log.info("请求接口[GET]: /project/get"); log.info("请求接口[GET]: /project/get");
return projectService.get(listAll, request, tags, isFinish, page, pageSize); return projectService.get(request, tags, isFinish, page, pageSize);
} }
/** /**
* 我管理的查询 * 我管理的页面的项目查询
* *
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@GetMapping("/project/work/get") @GetMapping("/project/child/get")
public BaseResponse projectWorkGet(@RequestParam(required = false) Integer listAll, public BaseResponse projectWorkGet(
@RequestParam(required = false) List<String> tags, @RequestParam(required = false) List<String> tags,
@RequestParam(required = false) List<Integer> isFinish, @RequestParam(required = false) List<String> isFinish,
@RequestParam(required = false) Integer is, @RequestParam(required = false) Integer is,
@RequestParam(required = false, defaultValue = "1") Integer page, @RequestParam(required = false, defaultValue = "1") Integer page,
@RequestParam(required = false, defaultValue = "10") Integer pageSize, @RequestParam(required = false, defaultValue = "10") Integer pageSize,
HttpServletRequest request) { HttpServletRequest request) {
log.info("请求接口[GET]: /project/work/get"); log.info("请求接口[GET]: /project/work/get");
return projectService.workget(listAll, request, tags, isFinish, is, page, pageSize); return projectService.workGet(request, tags, isFinish, is, page, pageSize);
} }
/** /**
@ -140,7 +141,9 @@ public class ProjectController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PostMapping("/project/header/add") @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"); log.info("请求接口[POST]: /project/header/add");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -160,7 +163,10 @@ public class ProjectController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PutMapping("/project/header/edit/{projectId}") @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,
@RequestBody @Validated ProjectEditVO projectEdit,
@NotNull BindingResult bindingResult,
HttpServletRequest request) {
log.info("请求接口[PUT]: /project/header/edit/{projectId}"); log.info("请求接口[PUT]: /project/header/edit/{projectId}");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -177,13 +183,37 @@ public class ProjectController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PostMapping("/project/work/add") @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"); log.info("请求接口[POST]: /project/work/add");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult)); return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
} }
return projectService.projecWorktAdd(request, projectWorkVO); return projectService.projectWorkAdd(request, projectWorkVO);
}
/**
* 项目添加
*
* @param request 请求
* @param projectInfoVO 项目信息
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PostMapping("/project/add")
public BaseResponse projectAdd(HttpServletRequest request,
@RequestBody @Validated ProjectInfoVO projectInfoVO,
@NotNull BindingResult bindingResult) {
log.info("请求接口[POST]: /project/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return ResultUtil.success(projectService.projectAdd(request, projectInfoVO));
} }
/** /**
@ -196,39 +226,6 @@ public class ProjectController {
return projectService.projectPrincipalGet(); return projectService.projectPrincipalGet();
} }
/**
* 用户获取所分到的项目模块
*
* @param uid 用户 id
* @return {@link BaseResponse}
*/
@GetMapping("/project/cut/user")
public BaseResponse projectGetUserInCutting(@RequestParam Long uid) {
log.info("请求接口[GET]: /project/cut/user");
// 判断是否有参数错误
if (uid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return projectService.projectGetUserInCutting(uid);
}
/**
* 给某用户分配项目模块
*
* @param uid 用户 id
* @param pid 项目 id
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/user/add")
public BaseResponse projectAddUserForCutting(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long pid) {
log.info("请求接口[Post]: /project/cut/user/add");
// 判断是否有参数错误
if (uid == null || pid == null) {
return ResultUtil.error(ErrorCode.PARAMETER_ERROR);
}
return projectService.projectAddUserForCutting(request, uid, pid);
}
/** /**
* 删除某项目记录 * 删除某项目记录
* *
@ -244,51 +241,6 @@ public class ProjectController {
return projectService.projectDelete(request, id); return projectService.projectDelete(request, id);
} }
/**
* 项目轮播图
*
* @param request 请求
* @param projectCuttingAddVO 项目轮播图信息
* @param bindingResult 参数校验
* @return {@link BaseResponse}
*/
@PostMapping("/project/cut/add")
public BaseResponse projectCuttingAdd(HttpServletRequest request, @RequestBody @Validated ProjectCuttingAddVO projectCuttingAddVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[Post]: /project/cut/add");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.addProjectCutting(request, projectCuttingAddVO);
}
@PutMapping("/project/cut/edit")
public BaseResponse projectCuttingEdit(HttpServletRequest request, @RequestBody @Validated ProjectCuttingEditVO projectCuttingEditVO, @NotNull BindingResult bindingResult) {
log.info("请求接口[Put]: /project/cut/edit");
// 判断是否有参数错误
if (bindingResult.hasErrors()) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
}
return projectService.editProjectCutting(request, projectCuttingEditVO);
}
@PutMapping("/project/cut/user/to")
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) {
return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR);
}
return projectService.projectToOtherUserForCutting(request, oldUid, pid, newUid);
}
@GetMapping("/project/file") @GetMapping("/project/file")
public BaseResponse getProjectFile(HttpServletRequest request, @RequestParam Long projectId) { public BaseResponse getProjectFile(HttpServletRequest request, @RequestParam Long projectId) {
log.info("请求接口[Get]: /project/file"); log.info("请求接口[Get]: /project/file");

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,11 @@ public class RoleController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PutMapping("/role/edit") @PutMapping("/role/edit")
public BaseResponse roleEdit(HttpServletRequest request, @RequestBody @Validated RoleEditVO roleEditVO, @NotNull BindingResult bindingResult) { public BaseResponse roleEdit(
@RequestBody @Validated RoleEditVO roleEditVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request
) {
log.info("请求接口[PUT]: /role/edit"); log.info("请求接口[PUT]: /role/edit");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -89,7 +93,7 @@ public class RoleController {
/** /**
* 用户权限授予 * 用户权限授予
* *
* @return * @return baseResponse
*/ */
@PostMapping("role/user/add") @PostMapping("role/user/add")
public BaseResponse roleAddUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) { public BaseResponse roleAddUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) {
@ -104,7 +108,7 @@ public class RoleController {
/** /**
* 用户权限删除 * 用户权限删除
* *
* @return * @return baseResponse
*/ */
@DeleteMapping("role/user/remove") @DeleteMapping("role/user/remove")
public BaseResponse roleRemoveUser(HttpServletRequest request, @RequestParam Long uid) { public BaseResponse roleRemoveUser(HttpServletRequest request, @RequestParam Long uid) {
@ -116,15 +120,17 @@ public class RoleController {
return roleService.roleRemoveUser(request, uid); return roleService.roleRemoveUser(request, uid);
} }
/** /**
* @Description: 添加用户权限 * <h2>角色添加</h2>
* @Date: 2024/1/19 * <hr/>
* @Param request: * 角色添加接口
* @Param uid: */
**/
@PostMapping("role/add") @PostMapping("role/add")
public BaseResponse addRole(HttpServletRequest request, @RequestBody @Validated RoleAddVo roleAddVO, @NotNull BindingResult bindingResult) throws ClassCopyException { public BaseResponse addRole(
@RequestBody @Validated RoleAddVo roleAddVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request
) throws ClassCopyException {
log.info("请求接口[POST]: /role/add"); log.info("请求接口[POST]: /role/add");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -133,14 +139,11 @@ public class RoleController {
return roleService.addRole(request, roleAddVO); return roleService.addRole(request, roleAddVO);
} }
/** /**
* @Description: 改变用户角色权限信息 * <h2>角色用户修改</h2>
* @Date: 2024/1/20 * <hr/>
* @Param request: * 角色用户修改接口
* @Param uid: 用户id */
* @Param rid: 角色id
**/
@PutMapping("role/user/change") @PutMapping("role/user/change")
public BaseResponse roleChangeUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) { public BaseResponse roleChangeUser(HttpServletRequest request, @RequestParam Long uid, @RequestParam Long rid) {
log.info("请求接口[POST]: /role/user/change"); log.info("请求接口[POST]: /role/user/change");

View File

@ -77,7 +77,10 @@ public class UserController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PutMapping("/user/profile/edit") @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"); log.info("请求接口[PUT]: /user/profile/edit");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -100,7 +103,13 @@ public class UserController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@GetMapping("/user/current") @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(
@RequestParam @Nullable String id,
@RequestParam @Nullable String username,
@RequestParam @Nullable String email,
@RequestParam @Nullable String phone,
@NotNull HttpServletRequest request
) {
log.info("请求接口[GET]: /user/current"); log.info("请求接口[GET]: /user/current");
// 检查数据是否有问题 // 检查数据是否有问题
if (id != null && !id.isEmpty()) { if (id != null && !id.isEmpty()) {
@ -119,12 +128,15 @@ public class UserController {
} }
} }
if (phone != null && !phone.isEmpty()) { 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 ResultUtil.error(ErrorCode.PARAMETER_ERROR, "手机格式不正确");
} }
} }
// 检查是否出现错误 // 检查是否出现错误
return userService.userCurrent(id, username, email, phone, request); return userService.userCurrent(request, id, username, email, phone);
} }
/** /**
@ -136,8 +148,11 @@ public class UserController {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
@PostMapping("/user/current/all") @PostMapping("/user/current/all")
public BaseResponse userCurrentAll(@RequestBody @Validated UserAllCurrentVO userAllCurrentVO, public BaseResponse userCurrentAll(
HttpServletRequest request, @NotNull BindingResult bindingResult) { @RequestBody @Validated UserAllCurrentVO userAllCurrentVO,
@NotNull BindingResult bindingResult,
HttpServletRequest request
) {
log.info("请求接口[POST]: /user/current/all"); log.info("请求接口[POST]: /user/current/all");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -154,7 +169,11 @@ public class UserController {
* @Param bindingResult: * @Param bindingResult:
**/ **/
@PostMapping("/user/add") @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"); log.info("请求接口[POST]: /user/add");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
@ -170,7 +189,11 @@ public class UserController {
* @Param bindingResult: * @Param bindingResult:
**/ **/
@PutMapping("/user/edit") @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"); log.info("请求接口[PUT]: /user/edit");
// 判断是否有参数错误 // 判断是否有参数错误
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {

View File

@ -52,8 +52,7 @@ public class PermissionDAO {
roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440); roleRedisUtil.setData(BusinessConstants.NONE, uid.toString(), gson.toJson(getPermissionForString), 1440);
} else { } else {
log.info("\t\t> 从 Redis 获取数据"); log.info("\t\t> 从 Redis 获取数据");
getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken<List<String>>() { getPermissionForString = gson.fromJson(permissionRedisString, new TypeToken<List<String>>() { }.getType());
}.getType());
} }
return getPermissionForString; return getPermissionForString;
} }
@ -69,16 +68,43 @@ public class PermissionDAO {
getPermissionForString = new ArrayList<>(); getPermissionForString = new ArrayList<>();
forPermissionToBuildString(permissionList, getPermissionForString); forPermissionToBuildString(permissionList, getPermissionForString);
// 存入 Redis // 存入 Redis
roleRedisUtil roleRedisUtil.setData(
.setData(BusinessConstants.ALL_PERMISSION, "string", gson.toJson(getPermissionForString), 1440); BusinessConstants.ALL_PERMISSION,
"string",
gson.toJson(getPermissionForString),
1440);
} else { } else {
log.info("\t\t> 从 Redis 获取数据"); log.info("\t\t> 从 Redis 获取数据");
getPermissionForString = gson.fromJson(getRedisData, new TypeToken<List<String>>() { getPermissionForString = gson.fromJson(getRedisData, new TypeToken<List<String>>() { }.getType());
}.getType());
} }
return getPermissionForString; 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> * <h2>获取全部权限信息</h2>
* <hr/> * <hr/>
@ -89,8 +115,7 @@ public class PermissionDAO {
*/ */
private void forPermissionToBuildString( private void forPermissionToBuildString(
@NotNull List<PermissionDO> permissionList, @NotNull List<PermissionDO> permissionList,
List<String> getPermissionForString List<String> getPermissionForString) {
) {
for (PermissionDO permission : permissionList) { for (PermissionDO permission : permissionList) {
// 寻找是否存在父亲 // 寻找是否存在父亲
StringBuilder permissionString = new StringBuilder(); StringBuilder permissionString = new StringBuilder();

View File

@ -1,11 +1,8 @@
package com.jsl.oa.dao; package com.jsl.oa.dao;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.dodata.ProjectCuttingDO;
import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.ProjectUserDO; import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.dodata.info.ProjectShowDO;
import com.jsl.oa.model.vodata.ProjectEditVO; import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectInfoVO;
@ -34,12 +31,11 @@ public class ProjectDAO {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.projectAdd 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectAdd(projectAdd); projectMapper.projectAdd(projectAdd);
} }
public void projectWorkAdd(ProjectWorkVO projectWorkVO) { public void projectWorkAdd(ProjectWorkVO projectWorkVO) {
log.info("\t> 执行 DAO 层 ProjectDAO.projecWorktAdd 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.projectWorkAdd 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectWorkAdd(projectWorkVO); projectMapper.projectWorkAdd(projectWorkVO);
} }
@ -61,18 +57,6 @@ public class ProjectDAO {
return projectMapper.getProjectById(id) != null; return projectMapper.getProjectById(id) != null;
} }
public List<ProjectCuttingDO> projectGetUserInCutting(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectGetUserInCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.projectGetUserInCutting(uid);
}
public void projectAddUserForCutting(Long uid, Long pid) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectAddUserForCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectAddUserInCutting(uid, pid);
}
public ProjectShowDO getHeader() { public ProjectShowDO getHeader() {
log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.getHeader 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
@ -101,13 +85,14 @@ public class ProjectDAO {
log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.sortProject 方法");
for (int i = 0; i < projectShowDO.getData().size(); i++) { for (int i = 0; i < projectShowDO.getData().size(); i++) {
for (int j = 0; j < projectShowDO.getData().size(); j++) { for (int j = 0; j < projectShowDO.getData().size(); j++) {
ProjectShowDO.DataDO dataDO = projectShowDO.getData().get(i);
if ("desc".equals(projectShowDO.getOrder())) { 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); Collections.swap(projectShowDO.getData(), i, j);
} }
} else { } 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); Collections.swap(projectShowDO.getData(), i, j);
} }
} }
@ -130,7 +115,7 @@ public class ProjectDAO {
return projectMapper.getProjectById(id); return projectMapper.getProjectById(id);
} }
public List<ProjectDO> get(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish) { public List<ProjectDO> get(Long userId, List<String> tags, List<String> isFinish) {
log.info("\t> 执行 DAO 层 ProjectDAO.get 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.get 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
@ -143,15 +128,12 @@ public class ProjectDAO {
return projectMapper.getByIsfinish(userId, isFinish); return projectMapper.getByIsfinish(userId, isFinish);
} }
if (listAll == 0) { return projectMapper.get(userId);
return projectMapper.get(userId);
} else {
return projectMapper.get1(userId);
}
} }
public List<ProjectDO> workget(Long userId, Integer listAll, List<String> tags, List<Integer> isFinish, Integer is) { public List<ProjectDO> workget(Long userId, List<String> tags, List<String> isFinish, Integer is) {
log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.workGet 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
return projectMapper.workgetByTags(userId, tags, is, isFinish); return projectMapper.workgetByTags(userId, tags, is, isFinish);
@ -160,12 +142,8 @@ public class ProjectDAO {
if (isFinish != null && !isFinish.isEmpty()) { if (isFinish != null && !isFinish.isEmpty()) {
return projectMapper.workgetByIsfinish(userId, isFinish, is); return projectMapper.workgetByIsfinish(userId, isFinish, is);
} }
return projectMapper.workget(userId, is);
if (listAll == 0) {
return projectMapper.workget(userId, is);
} else {
return projectMapper.workget1(userId, is);
}
} }
public ProjectDO getByName(String name) { public ProjectDO getByName(String name) {
@ -180,46 +158,12 @@ public class ProjectDAO {
return projectMapper.deleteProject(id); return projectMapper.deleteProject(id);
} }
public void projectCuttingAdd(ProjectCuttingDO projectCuttingDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.projectCuttingAdd 方法");
log.info("\t\t> 从 MySQL 获取数据");
projectMapper.projectCuttingAdd(projectCuttingDO);
}
public boolean isExistProjectById(Long id) { public boolean isExistProjectById(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectById 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectById 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectById(id) != null; return projectMapper.getProjectById(id) != null;
} }
public boolean updateProjectCutting(ProjectCuttingDO projectCuttingDO) {
log.info("\t> 执行 DAO 层 ProjectDAO.updateProjectCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.projectCuttingUpdate(projectCuttingDO);
}
public boolean isExistProjectCutting(Long id) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectCutting 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectCuttingById(id) != null;
}
public boolean isExistProjectUser(Long pid, Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.isExistProjectUse 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getProjectUserByPidAndUid(pid, uid) != null;
}
public boolean updateUserForProjectUserByPidAndUid(Long pid, Long oldUid, Long newUid) {
log.info("\t> 执行 DAO 层 ProjectDAO.updateUserForProjectUserByPidAndUid 方法");
log.info("\t\t> 从 MySQL 获取数据");
ProjectUserDO projectUserDO = projectMapper.getProjectUserByPidAndUid(pid, oldUid);
if (projectUserDO == null) {
return false;
}
log.info("\t\t> 从 MySQL 更新数据");
return projectMapper.updateUserForProjectUser(newUid, projectUserDO.getId());
}
public boolean isPrincipalUser(Long uid, Long projectId) { public boolean isPrincipalUser(Long uid, Long projectId) {
log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法"); log.info("\t> 执行 DAO 层 ProjectDAO.isPrincipalUser 方法");
@ -229,7 +173,7 @@ public class ProjectDAO {
} }
public List<ProjectDO> tget(Integer id, List<Integer> isFinish, List<String> tags) { public List<ProjectDO> tget(List<String> isFinish, List<String> tags) {
log.info("DAO层tget"); log.info("DAO层tget");
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
@ -239,13 +183,29 @@ public class ProjectDAO {
if (isFinish != null && !isFinish.isEmpty()) { if (isFinish != null && !isFinish.isEmpty()) {
return projectMapper.tgetByIsfinish(isFinish); return projectMapper.tgetByIsfinish(isFinish);
} }
return projectMapper.getAllProject();
return projectMapper.tget(id);
} }
public ProjectWorkDO getProjectWorkerById(Long id) { public ProjectModuleDO getProjectWorkerById(Long id) {
return projectMapper.getProjectWorkById(id); 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<ProjectModuleDO> getAllSubsystemByUserId(Long uid) {
log.info("\t> 执行 DAO 层 ProjectDAO.getAllSubsystemByUserId 方法");
log.info("\t\t> 从 MySQL 获取数据");
return projectMapper.getAllSubsystemByUserId(uid);
}
public List<ProjectModuleDO> 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 @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class RoleDAO { public class RoleDAO {
public final RoleMapper roleMapper; private final RoleMapper roleMapper;
private final Gson gson; private final Gson gson;
private final RoleRedisUtil<String> roleRedisUtil; private final RoleRedisUtil<String> roleRedisUtil;
@ -26,7 +26,12 @@ public class RoleDAO {
log.info("\t> 执行 DAO 层 RoleDAO.addRoleUser 方法"); log.info("\t> 执行 DAO 层 RoleDAO.addRoleUser 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
roleMapper.roleAddUser(uid, rid); 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) { public void delRoleUser(Long uid) {
@ -82,8 +87,7 @@ public class RoleDAO {
public RoleDO getRoleNameByUid(Long uid) { public RoleDO getRoleNameByUid(Long uid) {
log.info("\t> 执行 DAO 层 RoleDAO.getRoleNameByUid 方法"); log.info("\t> 执行 DAO 层 RoleDAO.getRoleNameByUid 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
RoleDO roleDO = roleMapper.getRoleById(getRoleUserByUid(uid).getRid()); return roleMapper.getRoleById(getRoleUserByUid(uid).getRid());
return roleDO;
} }
@ -122,7 +126,12 @@ public class RoleDAO {
log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法"); log.info("\t> 执行 DAO 层 RoleDAO.roleChangeUser 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
if (roleMapper.roleChangeUser(uid, rid)) { 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; return true;
} else { } else {
return false; return false;
@ -140,4 +149,14 @@ public class RoleDAO {
return gson.fromJson(getRedisData, RoleUserDO.class); return gson.fromJson(getRedisData, RoleUserDO.class);
} }
} }
/**
* 根据角色名获取角色信息
*
* @param roleName 角色名
* @return 角色信息
*/
public RoleDO getRoleByRoleName(String roleName) {
return roleMapper.getRoleByRoleName(roleName);
}
} }

View File

@ -3,6 +3,8 @@ package com.jsl.oa.dao;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jsl.oa.common.constant.BusinessConstants; import com.jsl.oa.common.constant.BusinessConstants;
import com.jsl.oa.mapper.UserMapper; 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.dodata.UserDO;
import com.jsl.oa.model.vodata.UserAllCurrentVO; import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserCurrentBackVO; 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 * @version v1.1.0
* @since v1.1.0 * @since v1.1.0
* @author xiao_lfeng | 176yunxuan | xiangZr-hhh
*/ */
@Slf4j @Slf4j
@Component @Component
@ -49,11 +51,13 @@ public class UserDAO {
*/ */
public UserDO getUserInfoByUsername(String username) { public UserDO getUserInfoByUsername(String username) {
log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法"); log.info("\t> 执行 DAO 层 UserDAO.getUserInfoByUsername 方法");
UserDO userDO; UserDO userDO = null;
// Redis 获取数据 // Redis 获取数据
// TODO: 10000-Redis: Redis 获取数据 // TODO: 10000-Redis: Redis 获取数据
// 从数据库获取用户信息 // 从数据库获取用户信息
userDO = userMapper.getUserInfoByUsername(username); if (userDO == null) {
userDO = userMapper.getUserInfoByUsername(username);
}
return userDO; return userDO;
} }
@ -112,7 +116,7 @@ public class UserDAO {
/** /**
* 用户账号锁定 * 用户账号锁定
* *
* @param id 用户id * @param id
*/ */
public void userLock(Long id, Long isLock) { public void userLock(Long id, Long isLock) {
log.info("\t> 执行 DAO 层 UserDAO.userLock 方法"); log.info("\t> 执行 DAO 层 UserDAO.userLock 方法");
@ -133,7 +137,8 @@ public class UserDAO {
UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO();
userCurrentBackVO.setUsers(new ArrayList<>()) userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount()); .setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
.add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
return userCurrentBackVO; return userCurrentBackVO;
} }
@ -145,16 +150,17 @@ public class UserDAO {
UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO(); UserCurrentBackVO userCurrentBackVO = new UserCurrentBackVO();
userCurrentBackVO.setUsers(new ArrayList<>()) userCurrentBackVO.setUsers(new ArrayList<>())
.setCount(userMapper.getUsersCount()); .setCount(userMapper.getUsersCount());
userCurrentDO.forEach(it -> userCurrentBackVO.getUsers().add(Processing.returnUserInfo(it, roleDAO, permissionDAO))); userCurrentDO.forEach(it -> userCurrentBackVO.getUsers()
.add(Processing.returnUserInfo(it, roleDAO, permissionDAO)));
return userCurrentBackVO; return userCurrentBackVO;
} }
/** /**
* Adds a new user to the database. * @return
* * @Description 用户添加
* @param userDO The UserDO object containing the user's information. * @Date: 2024/1/16
* @return True if the user is successfully added, false otherwise. * @Param userDO: user 数据库表实体类
*/ */
public boolean userAdd(UserDO userDO) { public boolean userAdd(UserDO userDO) {
log.info("\t> 执行 DAO 层 userAdd 方法"); log.info("\t> 执行 DAO 层 userAdd 方法");
@ -168,14 +174,12 @@ public class UserDAO {
userMapper.updateUser(userDO); userMapper.updateUser(userDO);
} }
/** /**
* <h2>用户名获取用户信息</h2> * @Description 根据username检测用户是否重复
* <hr/> * @Date: 2024/1/16
* 根据用户名获取用户信息 * @Param username: 用户名
* **/
* @param username 用户名
* @return {@link UserDO}
*/
public Boolean isRepeatUser(String username) { public Boolean isRepeatUser(String username) {
log.info("\t> 执行 DAO 层 isRepeatUser 方法"); log.info("\t> 执行 DAO 层 isRepeatUser 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
@ -184,21 +188,22 @@ public class UserDAO {
/** /**
* 通过用户编号获取用户信息 * @Description 检测用户工号是否重复
* * @Date 2024/1/18
* @param userNum 用户编号 * @Param userNum:
* @return UserDO **/
*/
public Boolean isRepeatUserNum(String userNum) { public Boolean isRepeatUserNum(String userNum) {
return userMapper.getUserByUserNum(userNum) != null; if (userMapper.getUserByUserNum(userNum) != null) {
return true;
}
return false;
} }
/** /**
* 通过 Id 获取用户信息 * @Description 根据用户id获取用户数据
* * @Date 2024/1/17
* @param userId 用户id * @Param userId
* @return UserDO **/
*/
public UserDO getUserById(Long userId) { public UserDO getUserById(Long userId) {
log.info("\t> 执行 DAO 层 getUserById 方法"); log.info("\t> 执行 DAO 层 getUserById 方法");
log.info("\t\t> 从 MySQL 获取数据"); 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() { public List<UserDO> getRecommendUser() {
log.info("\t> 执行 DAO 层 getRecommendUser 方法"); log.info("\t> 执行 DAO 层 getRecommendUser 方法");
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
@ -223,4 +256,10 @@ public class UserDAO {
log.info("\t\t> 从 MySQL 获取数据"); log.info("\t\t> 从 MySQL 获取数据");
return userMapper.getUserByPhone(phone); 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) @ExceptionHandler(value = MissingServletRequestParameterException.class)
public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException( public ResponseEntity<BaseResponse> businessMissingServletRequestParameterException(
MissingServletRequestParameterException e MissingServletRequestParameterException e) {
) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return ResponseEntity return ResponseEntity
.status(400) .status(400)
@ -100,8 +99,7 @@ public class ProcessException {
*/ */
@ExceptionHandler(value = MethodArgumentTypeMismatchException.class) @ExceptionHandler(value = MethodArgumentTypeMismatchException.class)
public ResponseEntity<BaseResponse> businessMethodArgumentTypeMismatchException( public ResponseEntity<BaseResponse> businessMethodArgumentTypeMismatchException(
@NotNull MethodArgumentTypeMismatchException e @NotNull MethodArgumentTypeMismatchException e) {
) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误"); return ResultUtil.error("ServerInternalError", 50002, "服务器内部错误");
} }

View File

@ -1,11 +1,13 @@
package com.jsl.oa.mapper; package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.MessageDO; import com.jsl.oa.model.dodata.MessageDO;
import com.jsl.oa.model.vodata.MessageAddVO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.time.LocalDate; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -13,17 +15,18 @@ import java.util.List;
public interface MessageMapper { public interface MessageMapper {
@Update("UPDATE organize_oa.oa_message " @Update("UPDATE organize_oa.oa_message "
+ "SET `read` = 1, deleted_at = CURRENT_TIMESTAMP " + "SET `is_delete` = 1, deleted_at = CURRENT_TIMESTAMP "
+ "WHERE id = #{mid}") + "WHERE id = #{mid}")
boolean deleteMessage(Long mid); boolean deleteMessage(Long mid);
@Select("SELECT * FROM organize_oa.oa_message where id = #{mid}") @Select("SELECT * FROM organize_oa.oa_message where id = #{mid}")
MessageDO getMessageById(Long mid); MessageDO getMessageById(Long mid);
@Select("select count(*) from organize_oa.oa_message where uid = #{uid}") @Select("select * from organize_oa.oa_message where uid = #{uid} and is_delete = 0 "
Long count(Long uid); + "and created_at between #{begin} and #{end}")
List<MessageDO> page(LocalDateTime begin, LocalDateTime end, Long uid);
@Select("select * from organize_oa.oa_message where uid = #{uid}") @Insert("insert into organize_oa.oa_message (uid, title, text, sid) "
//and created_at between #{begin} and #{end} limit #{start},#{pageSize}") + "values(#{uid},#{title},#{text},#{sid})")
List<MessageDO> page(LocalDate begin, LocalDate end, Long uid, Long start, Long pageSize); void messageAdd(MessageAddVO messageAddVO);
} }

View File

@ -1,6 +1,6 @@
package com.jsl.oa.mapper; package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.ProjectWorkDO; import com.jsl.oa.model.dodata.ProjectModuleDO;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -11,9 +11,10 @@ import java.util.List;
public interface ModuleMapper { public interface ModuleMapper {
List<ProjectWorkDO> getByProjectId(Integer projectId, Long userId, int is);
List<ProjectWorkDO> getBySysId(Integer sysId, Long userId, int is); List<ProjectModuleDO> getByProjectId(Integer projectId, Long userId, int is);
List<ProjectModuleDO> getBySysId(Integer sysId, Long userId, int is);
@Select("select principal_id from organize_oa.oa_project where id=#{projectId}") @Select("select principal_id from organize_oa.oa_project where id=#{projectId}")
Long getPidByProjectid(Integer projectId); Long getPidByProjectid(Integer projectId);
@ -25,7 +26,7 @@ public interface ModuleMapper {
void deleteMoudule(Long id); void deleteMoudule(Long id);
@Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ") @Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ")
List<ProjectWorkDO> getAllMoudleByPid(Long id); List<ProjectModuleDO> getAllMoudleByPid(Long id);
@Select("select principal_id from organize_oa.oa_project where id=(select project_id " @Select("select principal_id from organize_oa.oa_project where id=(select project_id "
+ "from organize_oa.oa_project_work where oa_project_work.id = #{sysId})") + "from organize_oa.oa_project_work where oa_project_work.id = #{sysId})")

View File

@ -1,9 +1,7 @@
package com.jsl.oa.mapper; package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.ProjectChildDO;
import com.jsl.oa.model.dodata.ProjectCuttingDO;
import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.ProjectUserDO; import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.vodata.ProjectInfoVO; import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectWorkSimpleVO; import com.jsl.oa.model.vodata.ProjectWorkSimpleVO;
import com.jsl.oa.model.vodata.ProjectWorkVO; import com.jsl.oa.model.vodata.ProjectWorkVO;
@ -12,16 +10,17 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Mapper @Mapper
public interface ProjectMapper { public interface ProjectMapper {
@Insert("insert into organize_oa.oa_project " @Insert("insert into organize_oa.oa_project "
+ "(name, description, principal_id, cycle,file,complete_time," + "(name, description, principal_id, cycle,files,complete_time,"
+ "deadline,status,is_finish,tags,work_load) " + "dead_line,status,tags,work_load) "
+ "value (#{name},#{description},#{principalId},#{cycle},#{file}" + "value (#{name},#{description},#{principalId},#{cycle},#{files}"
+ ",#{completeTime},#{deadline},#{status},#{isFinish},#{tags},#{workLoad})") + ",#{completeTime},#{deadLine},#{status},#{tags},#{workLoad})")
void projectAdd(ProjectInfoVO projectAdd); void projectAdd(ProjectInfoVO projectAdd);
@Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id," @Insert("insert into organize_oa.oa_project_work (project_id, pid, name, principal_id,"
@ -38,12 +37,8 @@ public interface ProjectMapper {
@Select("select * from organize_oa.oa_project where id=#{id}") @Select("select * from organize_oa.oa_project where id=#{id}")
ProjectDO tgetProjectById(Integer id); ProjectDO tgetProjectById(Integer id);
@Select("select * from organize_oa.oa_project_work where principal_id=#{uid}") @Select("select * from organize_oa.oa_project where is_delete=false")
//"(select id from organize_oa.oa_project_work where id in)") List<ProjectDO> getAllProject();
List<ProjectCuttingDO> projectGetUserInCutting(Long uid);
@Insert("update organize_oa.oa_project_work set principal_id =#{uid} where id=#{pid}")
void projectAddUserInCutting(Long uid, Long pid);
@Select("select data from organize_oa.oa_config where value='project_show'") @Select("select data from organize_oa.oa_config where value='project_show'")
String getHeader(); String getHeader();
@ -51,17 +46,15 @@ public interface ProjectMapper {
@Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())") @Insert("insert into organize_oa.oa_config(value, data, created_at)value ('project_show',null,NOW())")
void insertProjectShow(); void insertProjectShow();
@Update("UPDATE organize_oa.oa_config" @Update("UPDATE organize_oa.oa_config SET data = #{setProjectShow},"
+ " SET data = #{setProjectShow}, updated_at = CURRENT_TIMESTAMP " + " updated_at = CURRENT_TIMESTAMP WHERE value = 'project_show'")
+ " WHERE value = 'project_show'"
)
boolean setProjectShow(String setProjectShow); boolean setProjectShow(String setProjectShow);
List<ProjectDO> getByIsfinish(Long userId, List<Integer> isFinish); List<ProjectDO> getByIsfinish(Long userId, List<String> isFinish);
List<ProjectDO> getByTags(Long userId, List<String> tags, List<Integer> isFinish); List<ProjectDO> getByTags(Long userId, List<String> tags, List<String> isFinish);
@Select("select * from organize_oa.oa_project where is_delete=false and status=1 and principal_id=#{userId}") @Select("select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId}")
List<ProjectDO> get(Long userId); List<ProjectDO> get(Long userId);
@Select("select * from organize_oa.oa_project where status =1 and principal_id=#{userId}") @Select("select * from organize_oa.oa_project where status =1 and principal_id=#{userId}")
@ -73,29 +66,9 @@ public interface ProjectMapper {
@Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}") @Update("UPDATE organize_oa.oa_project SET is_delete = 1 where id=#{id}")
boolean deleteProject(Long id); boolean deleteProject(Long id);
@Insert("INSERT INTO organize_oa.oa_project_cutting (pid, name, tag, real_time) " List<ProjectDO> workgetByIsfinish(Long userId, List<String> isFinish, Integer is);
+ "VALUES (#{pid}, #{name}, #{tag}, #{realTime})")
void projectCuttingAdd(ProjectCuttingDO projectCuttingDO);
@Update("UPDATE organize_oa.oa_project_cutting SET name = #{name}, " List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is, List<String> isFinish);
+ "tag = #{tag}, engineering = #{engineering}, estimated_time = #{estimatedTime}, "
+ "real_time = #{realTime}, updated_at = CURRENT_TIMESTAMP WHERE id = #{id}")
boolean projectCuttingUpdate(ProjectCuttingDO projectCuttingDO);
@Select("SELECT * FROM organize_oa.oa_project_cutting WHERE id = #{id}")
ProjectCuttingDO getProjectCuttingById(Long id);
@Select("SELECT * FROM organize_oa.oa_project_user WHERE pid = #{pid} AND uid = #{uid}")
ProjectUserDO getProjectUserByPidAndUid(Long pid, Long uid);
@Update("UPDATE organize_oa.oa_project_user SET uid = #{uid} , updated_at = CURRENT_TIMESTAMP WHERE id = #{id}")
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}")
List<ProjectDO> workgetByIsfinish(Long userId, List<Integer> isFinish, Integer is);
List<ProjectDO> workgetByTags(Long userId, List<String> tags, Integer is, List<Integer> isFinish);
//@Select("select * from organize_oa.oa_project where id in(select project_id from " + //@Select("select * from organize_oa.oa_project where id in(select project_id from " +
//"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)") //"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)")
@ -107,19 +80,44 @@ public interface ProjectMapper {
List<ProjectDO> tget(Integer id); List<ProjectDO> tget(Integer id);
List<ProjectDO> tgetByIsfinish(List<Integer> isFinish); List<ProjectDO> tgetByIsfinish(List<String> isFinish);
List<ProjectDO> tgetBytags(List<String> tags, List<Integer> isFinish); List<ProjectDO> tgetBytags(List<String> tags, List<String> isFinish);
@Select("select * from organize_oa.oa_project_work where id=#{id}") @Select("select * from organize_oa.oa_project_child where id=#{id}")
ProjectWorkSimpleVO getWorkById(Integer id); ProjectWorkSimpleVO getWorkById(Integer id);
@Select("select * from organize_oa.oa_project_modules where id=#{id}")
ProjectModuleDO getModuleById(Integer id);
@Select("select principal_id from organize_oa.oa_project_work where id=#{pid}") @Select("select principal_id from organize_oa.oa_project_work where id=#{pid}")
Long getPirIdbyWorkid(Long 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_modules where project_child_id=#{id} "
+ "AND is_delete = 0")
Long getPid(Integer id); 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} "
ProjectWorkDO getProjectWorkById(Long id); + "AND is_delete = 0")
ProjectModuleDO getProjectWorkById(Long id);
@Select("select principal_id from organize_oa.oa_project_child where project_id=#{id}")
List <Long> getMemberByProjectId(Integer id);
@Select("select principal_id from organize_oa.oa_project_modules where project_child_id=#{id}")
List <Long> getMemberBySystemId(Integer id);
@Select("select * from organize_oa.oa_project_modules "
+ "where DATE(deadline) = DATE(#{threeDayLater}) and status = 0")
List<ProjectModuleDO> getProjectWorkByTime(LocalDateTime threeDayLater);
List<ProjectModuleDO> getAllSubmoduleByUserId(Long uid);
List<ProjectDO> getProjectByPrincipalUser(Long uid);
List<ProjectModuleDO> getAllSubsystemByUserId(Long uid);
@Select("select * from organize_oa.oa_project_child where "
+ "DATE (created_at) = DATE (#{threeDaysLater}) and status = 0")
List<ProjectChildDO> getProjectChildByTime(LocalDateTime threeDaysLater);
} }

View File

@ -0,0 +1,28 @@
package com.jsl.oa.mapper;
import com.jsl.oa.model.dodata.ReviewDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
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") @Select("SELECT * FROM organize_oa.oa_role ORDER BY id DESC")
List<RoleDO> getRole(); 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); boolean roleEdit(RoleDO getRole);
@Update("UPDATE organize_oa.oa_role_user SET rid = #{rid},updated_at = current_timestamp WHERE uid = #{uid}") @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}") @Update("UPDATE organize_oa.oa_user SET is_delete = true ,updated_at = CURRENT_TIMESTAMP WHERE id = #{id}")
void userDelete(Long 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); void userLock(Long id, Long isLock);
@Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}") @Select("SELECT * FROM organize_oa.oa_user WHERE id = #{id}")
@ -77,11 +79,12 @@ public interface UserMapper {
List<UserDO> getRecommendUser(); List<UserDO> getRecommendUser();
@Update("UPDATE organize_oa.oa_user " + @Update("UPDATE organize_oa.oa_user "
"SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, " + + "SET address = #{address}, phone = #{phone}, email = #{email}, age = #{age}, "
"signature = #{signature}, sex = #{sex}, avatar = #{avatar}, nickname = #{nickname}, " + + "signature = #{signature}, sex = #{sex}, "
"description = #{description} ,updated_at = current_timestamp " + + "avatar = #{avatar}, nickname = #{nickname}, "
"WHERE id = #{id}") + "description = #{description} ,updated_at = current_timestamp "
+ "WHERE id = #{id}")
void updateUser(UserDO userDO); void updateUser(UserDO userDO);
@Select("SELECT * FROM organize_oa.oa_user WHERE email = #{email}") @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") @Select("SELECT COUNT(*) FROM organize_oa.oa_user")
Long getUsersCount(); 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 " + @Select("select oa_user.id,oa_user.username,"
"on oa_user.id = oa_role_user.uid join organize_oa.oa_role on oa_role_user.rid = oa_role.id") + "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(); List<PrincipalSelectVO> getPrincipal();
} }

View File

@ -22,9 +22,10 @@ public class MessageDO {
private Long id; private Long id;
private Long uid; private Long uid;
private Long sid;
private String title; private String title;
private String text; private String text;
private Short read; private Integer isDelete;
private Timestamp createdAt; private Timestamp createdAt;
private Timestamp deletedAt; private Timestamp deletedAt;

View File

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

View File

@ -18,19 +18,17 @@ import java.sql.Timestamp;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class ProjectCuttingDO { public class ProjectChildDO {
private Long id; private Long id;
private Long principalId; private Long principalId;
private Long projectId; private Long projectId;
private Long pid; private Integer workLoad;
private Long workLoad; private Integer cycle;
private Long cycle;
private String name; private String name;
private String description; private String description;
private Integer is_delete; private Integer isDelete;
private Integer is_finish; private String files;
private Integer status; private Timestamp createdAt;
private boolean type;
private Timestamp beginTime;
private Timestamp completeTime; private Timestamp completeTime;
private Timestamp updatedAt;
} }

View File

@ -23,20 +23,19 @@ public class ProjectDO {
private Long id; private Long id;
private Long principalId; private Long principalId;
private String tags; private String tags;
private Long cycle; private Integer cycle;
private String name; private String name;
private String file; private String file;
private String description; private String description;
private Integer isDelete; private Integer isDelete;
private Integer isFinish; private Integer workLoad;
private Long workLoad; private String status;
private Integer status;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
private Timestamp beginTime; private Timestamp beginTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
private Timestamp completeTime; private Timestamp completeTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
private Timestamp deadline; private Timestamp deadline;
private Timestamp createdAt;
private Timestamp updatedAt;
} }

View File

@ -9,19 +9,15 @@ import java.sql.Timestamp;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class ProjectWorkDO { public class ProjectModuleDO {
private Long id; private Long id;
private Long pid; private Long projectChildId;
private Long projectId;
private Long principalId; private Long principalId;
private Integer cycle;
private Integer workLoad; private Integer workLoad;
private Integer type;
private String name;
private String description; private String description;
private String name;
private Integer isDelete; private Integer isDelete;
private Integer isFinish; private Timestamp createdAt;
private boolean status; private Timestamp updatedAt;
private Timestamp beginTime;
private Timestamp completeTime; private Timestamp completeTime;
} }

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,18 @@
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MessageAddVO {
private String text;
private String title;
private Long uid;
private Long sid;
private String type;
private Integer toId;
}

View File

@ -0,0 +1,17 @@
package com.jsl.oa.model.vodata;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import lombok.experimental.Accessors;
import java.sql.Timestamp;
@Data
@Accessors(chain = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MessageGetVO {
private String text;
private String title;
private Timestamp createdAt;
private String senderName;
}

View File

@ -20,10 +20,10 @@ public class ProjectInfoVO {
@NotNull(message = "工作量不能为空") @NotNull(message = "工作量不能为空")
private Long workLoad; private Long workLoad;
private String tags; private String tags;
private String file; private String files;
private Timestamp beginTime;
private Timestamp completeTime; private Timestamp completeTime;
private Timestamp deadline; private Timestamp deadLine;
private Integer status; private String status;
private Integer isFinish;
} }

View File

@ -10,7 +10,6 @@ import lombok.experimental.Accessors;
public class ProjectSimpleVO { public class ProjectSimpleVO {
private String name; private String name;
private String principalUser; private String principalUser;
private Integer isFinish;
private String description; private String description;
private Long cycle; private Long cycle;
private Long workLoad; private Long workLoad;

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

@ -1,12 +1,12 @@
package com.jsl.oa.model.vodata; package com.jsl.oa.model.vodata;
import lombok.Getter; import lombok.Data;
import javax.validation.constraints.*; import javax.validation.constraints.*;
@Getter @Data
public class UserAddVO { public class UserAddVO {
@NotBlank(message = "用户名不能为空") @NotBlank(message = "用户名不能为空")
@ -20,7 +20,8 @@ public class UserAddVO {
private String address; private String address;
@NotBlank(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 = "电话格式错误") @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; private String phone;
@NotBlank(message = "邮箱不能为空") @NotBlank(message = "邮箱不能为空")

View File

@ -21,7 +21,8 @@ public class UserEditVO {
private String address; 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 = "电话格式错误") @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; private String phone;
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "邮箱格式错误") @Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "邮箱格式错误")

View File

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

View File

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

View File

@ -3,7 +3,7 @@ package com.jsl.oa.services;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate; import java.time.LocalDateTime;
/** /**
* <h1>消息服务接口</h1> * <h1>消息服务接口</h1>
@ -18,15 +18,24 @@ public interface MessageService {
BaseResponse messageDelete(Long mid, HttpServletRequest request); BaseResponse messageDelete(Long mid, HttpServletRequest request);
BaseResponse messageGet(LocalDate begin, LocalDate end, Long page, Long pageSize, Long uid); BaseResponse messageGet(
LocalDateTime begin,
LocalDateTime end,
Integer page,
Integer pageSize,
Long uid);
BaseResponse messageGetAll( void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid,
HttpServletRequest request, HttpServletRequest request);
LocalDate begin, void messageAdd(Integer pId, Integer systemId, Integer moddleId, Long uid, Long isPass,
LocalDate end, HttpServletRequest request);
Long page, void messageAdd(Integer pId, Integer type, Integer systemId,
Long pageSize, HttpServletRequest request);
Long loginId, void messageAdd(Integer pId, Integer systmeId, Integer moddleId, Integer type,
Long uid HttpServletRequest request);
); void messageAdd(Integer pId, Integer systemId, Integer moddleId);
void messageRemind();
BaseResponse messageGetById(Long id, Long uid);
} }

View File

@ -1,6 +1,8 @@
package com.jsl.oa.services; package com.jsl.oa.services;
import com.jsl.oa.model.vodata.*; import com.jsl.oa.model.vodata.ProjectEditVO;
import com.jsl.oa.model.vodata.ProjectInfoVO;
import com.jsl.oa.model.vodata.ProjectWorkVO;
import com.jsl.oa.model.vodata.business.info.ProjectShowVO; import com.jsl.oa.model.vodata.business.info.ProjectShowVO;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
@ -8,14 +10,9 @@ import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
public interface ProjectService { public interface ProjectService {
BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd);
BaseResponse projectEdit(HttpServletRequest request, ProjectEditVO projectEdit, Long projectId); BaseResponse projectEdit(HttpServletRequest request, ProjectEditVO projectEdit, Long projectId);
BaseResponse projectGetUserInCutting(Long uid);
BaseResponse projectAddUserForCutting(HttpServletRequest request, Long uid, Long pid);
BaseResponse getHeader(Integer id); BaseResponse getHeader(Integer id);
BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO); BaseResponse addHeader(HttpServletRequest request, ProjectShowVO projectShowVO);
@ -24,23 +21,30 @@ public interface ProjectService {
BaseResponse editHeader(HttpServletRequest request, ProjectShowVO projectShowVO, Integer id); 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(
HttpServletRequest request,
List<String> tags,
List<String> isFinish,
Integer page,
Integer pageSize);
BaseResponse getByName(String name); BaseResponse getByName(String name);
BaseResponse projectDelete(HttpServletRequest request, List<Long> id); BaseResponse projectDelete(HttpServletRequest request, List<Long> id);
BaseResponse addProjectCutting(HttpServletRequest request, ProjectCuttingAddVO projectCuttingAddVO); BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectVO);
BaseResponse editProjectCutting(HttpServletRequest request, ProjectCuttingEditVO projectCuttingEditVO); BaseResponse workGet(
HttpServletRequest request,
List<String> tags,
List<String> isFinish,
Integer is,
Integer page,
Integer pageSize);
BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid); BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO);
BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is, Integer page, Integer pageSize); BaseResponse tGet(List<String> tags, List<String> isFinish, Integer page, Integer pageSize);
BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO);
BaseResponse tget(Integer id, List<String> tags, List<Integer> isFinish, Integer page, Integer pageSize);
BaseResponse projectFileGet(HttpServletRequest request, Long projectId); BaseResponse projectFileGet(HttpServletRequest request, Long projectId);

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 * @since v1.1.0
*/ */
public interface RoleService { 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); BaseResponse roleGet(HttpServletRequest request, String id);

View File

@ -1,5 +1,6 @@
package com.jsl.oa.services; 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.UserAddVO;
import com.jsl.oa.model.vodata.UserAllCurrentVO; import com.jsl.oa.model.vodata.UserAllCurrentVO;
import com.jsl.oa.model.vodata.UserEditProfileVO; import com.jsl.oa.model.vodata.UserEditProfileVO;
@ -17,6 +18,15 @@ import javax.servlet.http.HttpServletRequest;
* @since v1.1.0 * @since v1.1.0
*/ */
public interface UserService { public interface UserService {
/**
* <h2>根据用户名获取用户信息</h2>
* <hr/>
* 该方法用于根据用户名获取用户信息
*
* @param username 用户名
* @return 用户信息
*/
UserDO getUserInfoByUsername(String username);
/** /**
* <h2>用户账号删除</h2> * <h2>用户账号删除</h2>
@ -71,7 +81,7 @@ public interface UserService {
* @param phone 手机号 * @param phone 手机号
* @return {@link BaseResponse} * @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); 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.common.constant.BusinessConstants;
import com.jsl.oa.dao.PermissionDAO; import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.RoleUserDO; import com.jsl.oa.model.dodata.RoleUserDO;
import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.UserDO;
@ -39,6 +40,7 @@ import java.util.regex.Pattern;
@RequiredArgsConstructor @RequiredArgsConstructor
public class AuthServiceImpl implements AuthService { public class AuthServiceImpl implements AuthService {
private final UserMapper userMapper; private final UserMapper userMapper;
private final RoleMapper roleMapper;
private final RoleDAO roleDAO; private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO; private final PermissionDAO permissionDAO;
@ -273,7 +275,7 @@ public class AuthServiceImpl implements AuthService {
getPermissionForString = permissionDAO.getPermission(userDO.getId()); getPermissionForString = permissionDAO.getPermission(userDO.getId());
} }
// 获取用户角色 // 获取用户角色
RoleUserDO getUserRole = roleDAO.roleMapper.getRoleUserByUid(userDO.getId()); RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId());
if (getUserRole == null) { if (getUserRole == null) {
getUserRole = new RoleUserDO(); getUserRole = new RoleUserDO();
getUserRole.setRid(0L) getUserRole.setRid(0L)

View File

@ -2,8 +2,8 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.InfoDAO; import com.jsl.oa.dao.InfoDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.dodata.info.CarouselDO; import com.jsl.oa.model.dodata.info.CarouselDO;
import com.jsl.oa.model.vodata.UserProfileVo; import com.jsl.oa.model.vodata.UserProfileVo;
@ -36,9 +36,9 @@ import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class InfoServiceImpl implements InfoService { public class InfoServiceImpl implements InfoService {
private final RoleMapper roleMapper;
private final InfoDAO infoDAO; private final InfoDAO infoDAO;
private final UserDAO userDAO; private final UserDAO userDAO;
private final RoleDAO roleDAO;
@Override @Override
@CheckUserHasPermission("info.image.add") @CheckUserHasPermission("info.image.add")
@ -131,7 +131,7 @@ public class InfoServiceImpl implements InfoService {
public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) { public BaseResponse delHeaderImage(HttpServletRequest request, Integer id) {
log.info("\t> 执行 Service 层 InfoService.delHeaderImage 方法"); log.info("\t> 执行 Service 层 InfoService.delHeaderImage 方法");
// 用户权限校验 // 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 获取轮播图信息 // 获取轮播图信息
@ -154,7 +154,7 @@ public class InfoServiceImpl implements InfoService {
public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) { public BaseResponse editSettingHeaderImage(HttpServletRequest request, Boolean showType) {
log.info("\t> 执行 Service 层 InfoService.editSettingHeaderImage 方法"); log.info("\t> 执行 Service 层 InfoService.editSettingHeaderImage 方法");
// 用户权限校验 // 用户权限校验
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 获取轮播图信息 // 获取轮播图信息

View File

@ -1,26 +1,23 @@
package com.jsl.oa.services.impl; package com.jsl.oa.services.impl;
import com.jsl.oa.annotations.CheckUserAbleToUse; import com.jsl.oa.annotations.CheckUserAbleToUse;
import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.MessageMapper; import com.jsl.oa.mapper.MessageMapper;
import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.model.dodata.MessageDO; import com.jsl.oa.model.dodata.MessageDO;
import com.jsl.oa.model.dodata.PageBeanDO; import com.jsl.oa.model.dodata.ProjectChildDO;
import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.vodata.MessageAddVO;
import com.jsl.oa.model.vodata.MessageGetVO;
import com.jsl.oa.services.MessageService; import com.jsl.oa.services.MessageService;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.*;
import com.jsl.oa.utils.ErrorCode;
import com.jsl.oa.utils.JwtUtil;
import com.jsl.oa.utils.ResultUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* <h1>消息服务层实现类</h1> * <h1>消息服务层实现类</h1>
* <hr/> * <hr/>
@ -36,10 +33,11 @@ import java.util.List;
public class MessageServiceImpl implements MessageService { public class MessageServiceImpl implements MessageService {
private final MessageMapper messageMapper; private final MessageMapper messageMapper;
private final RoleMapper roleMapper; private final UserDAO userDAO;
private final ProjectMapper projectMapper;
@Override @Override
@CheckUserHasPermission("message.delete") @CheckUserAbleToUse
public BaseResponse messageDelete(Long mid, HttpServletRequest request) { public BaseResponse messageDelete(Long mid, HttpServletRequest request) {
//获取消息数据 //获取消息数据
MessageDO messageDO = messageMapper.getMessageById(mid); MessageDO messageDO = messageMapper.getMessageById(mid);
@ -55,56 +53,323 @@ public class MessageServiceImpl implements MessageService {
return ResultUtil.success(); return ResultUtil.success();
} }
@SuppressWarnings("checkstyle:Regexp")
@Override @Override
@CheckUserAbleToUse @CheckUserAbleToUse
public BaseResponse messageGet(LocalDate begin, LocalDate end, Long page, Long pageSize, Long uid) { public BaseResponse messageGet(LocalDateTime beginTime,
//1.记录总数据数 LocalDateTime endTime,
Long count = messageMapper.count(uid); Integer page,
Integer pageSize,
//2.获取分页数据列表 Long uid) {
//默认获取时间为最近30天 //默认获取时间为最近30天
if (begin == null) { if (beginTime == null) {
begin = LocalDate.now(); endTime = LocalDateTime.now();
end = begin.minusDays(30); beginTime = endTime.minusDays(30);
} }
Long start = (page - 1) * pageSize; List<MessageDO> messageDOList = messageMapper.page(beginTime, endTime, uid);
List<MessageDO> empList = messageMapper.page(begin, end, uid, start, pageSize); //封装返回数据
List<MessageGetVO> messageGetVOList = new ArrayList<>();
for (MessageDO messageDO : messageDOList) {
MessageGetVO messageGetVO1 = new MessageGetVO();
messageGetVO1.setText(messageDO.getText());
messageGetVO1.setTitle(messageDO.getTitle());
messageGetVO1.setCreatedAt(messageDO.getCreatedAt());
if (messageDO.getSid() != null) {
messageGetVO1.setSenderName(userDAO.getUserById(messageDO.getSid()).getUsername());
}
messageGetVOList.add(messageGetVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<MessageGetVO> pageData = messageGetVOList.subList(start,
Math.min(end, messageGetVOList.size()));
return ResultUtil.success(pageData);
}
//3.封装PageBean对象 /**
PageBeanDO<MessageDO> pageBean = new PageBeanDO<>(count, empList); * 添加指派消息
return ResultUtil.success(pageBean); *
* @param pId 项目id
* @param systemId 系统id
* @param moddleId 模块id
* @param uid 用户id
* @param request
*/
@Override
public void messageAdd(
Integer pId,
Integer systemId,
Integer moddleId,
Long uid,
HttpServletRequest request) {
// 拿到token获取发送人id
String token = request.getHeader("Authorization").replace("Bearer ", "");
Long sid = JwtUtil.getUserId(token);
// 获取发送人名字项目名子系统名子模块名
String senderName = userDAO.getUserById(sid).getUsername();
String projectName = projectMapper.tgetProjectById(pId).getName();
String systemName = projectMapper.getWorkById(systemId).getName();
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setSid(sid);
messageAddVO.setUid(uid);
messageAddVO.setTitle("指派消息");
if (moddleId == null) {
messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统给您");
} else {
String moddleName = projectMapper.getModuleById(moddleId).getName();
messageAddVO.setText(senderName + "指派了" + projectName + "项目的" + systemName + "子系统的" + moddleName + "子模块给您");
}
messageAddVO.setType("跳转审批页");
messageMapper.messageAdd(messageAddVO);
}
/**
* 添加审批消息
*
* @param pId 项目id
* @param systemId 系统id
* @param moddleId 模块id
* @param uid 用户id
* @param isPass 是否通过 1:通过 0:未通过
* @param request
*/
@Override
public void messageAdd(
Integer pId,
Integer systemId,
Integer moddleId,
Long uid,
Long isPass,
HttpServletRequest request) {
// 获取发送人名字项目名子系统名子模块名
String projectName = projectMapper.tgetProjectById(pId).getName();
String systemName = projectMapper.getWorkById(systemId).getName();
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setTitle("审批消息");
String moddleName = projectMapper.getModuleById(moddleId).getName();
if (isPass == 1) {
messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人已通过");
} else {
messageAddVO.setText("您申请的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人未通过");
}
messageAddVO.setType("消息详情");
messageMapper.messageAdd(messageAddVO);
}
/**
* 添加项目变动消息
* @param pId 项目id
* @param type 类型 1:上传文档 2:修改状态 3:修改负责人
* @param systemId 系统id
* @param request
*/
@Override
public void messageAdd(
Integer pId,
Integer type,
Integer systemId,
HttpServletRequest request) {
// 获取项目名,负责人名
String projectName = projectMapper.tgetProjectById(pId).getName();
String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername();
String systemName = projectMapper.getWorkById(systemId).getName();
// 添加消息
// 1:上传文档 2:修改状态 3:修改负责人
List<Long> uidList = projectMapper.getMemberByProjectId(pId);
for (Long uid : uidList) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setTitle("项目变动消息");
if (type == 3) {
messageAddVO.setText("项目负责人" + senderName + "调整了" + systemName + "子系统的负责人");
} else if (type == 2) {
messageAddVO.setText("项目负责人" + senderName + "修改了" + projectName + "项目的状态");
} else if (type == 1) {
messageAddVO.setText("项目负责人" + senderName + "上传了文档到" + projectName + "项目");
}
messageAddVO.setType("跳转项目页");
messageAddVO.setToId(pId);
messageMapper.messageAdd(messageAddVO);
}
}
/**
* 添加子系统变动消息
*
* @param pId 项目id
* @param systmeId 系统id
* @param moddleId 模块id
* @param type 类型 1:删除模块 2:修改简介 3:修改周期
* @param request
*/
@Override
public void messageAdd(
Integer pId,
Integer systmeId,
Integer moddleId,
Integer type,
HttpServletRequest request) {
// 获取项目名,负责人名
String projectName = projectMapper.tgetProjectById(pId).getName();
String senderName = userDAO.getUserById(Processing.getAuthHeaderToUserId(request)).getUsername();
String systemName = projectMapper.getWorkById(systmeId).getName();
String moddleName = projectMapper.getModuleById(moddleId).getName();
// 添加消息
// 1:删除模块 2:修改简介 3:修改周期
if (type == 1) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectMapper.getPid(moddleId));
messageAddVO.setTitle("子系统变动消息");
messageAddVO.setText("项目经理" + senderName + "删除了" + projectName + "项目的"
+ systemName + "系统的" + moddleName + "模块");
messageMapper.messageAdd(messageAddVO);
} else {
List<Long> uidList = projectMapper.getMemberBySystemId(systmeId);
for (Long uid : uidList) {
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(uid);
messageAddVO.setTitle("子系统变动消息");
if (type == 2) {
messageAddVO.setText("项目经理" + senderName + "修改了" + projectName + "项目的"
+ systemName + "系统的简介说明");
} else if (type == 3) {
messageAddVO.setText("项目经理" + senderName + "修改了" + projectName + "项目的"
+ systemName + "系统的系统周期/工作量");
}
messageAddVO.setType("跳转系统页");
messageAddVO.setToId(systmeId);
messageMapper.messageAdd(messageAddVO);
}
}
}
/**
* 添加成员填写日报消息
*
* @param pId 项目id
* @param systemId 系统id
* @param moddleId 模块id
*/
@Override
public void messageAdd(
Integer pId,
Integer systemId,
Integer moddleId) {
// 获取项目名,系统名,模块名,负责人名
String projectName = projectMapper.tgetProjectById(pId).getName();
String systemName = projectMapper.getWorkById(systemId).getName();
String moddleName = projectMapper.getModuleById(moddleId).getName();
String principalName = userDAO.getUserById(projectMapper.getPid(moddleId)).getUsername();
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectMapper.getPid(systemId));
messageAddVO.setTitle("日报消息");
messageAddVO.setText(projectName + "项目的" + systemName + "系统的" + moddleName + "模块负责人" + principalName
+ "刚刚填写了日报");
messageAddVO.setType("跳转日报页");
messageMapper.messageAdd(messageAddVO);
}
/**
* 添加提醒消息
* 系统/模块到期提醒
*/
@Override
public void messageRemind() {
// 当前时间
LocalDateTime now = LocalDateTime.now();
// 三天后时间
LocalDateTime threeDaysLater = now.plusDays(3);
// 七天后时间
LocalDateTime sevenDaysLater = now.plusDays(7);
// 获取三天后到期的模块
List<ProjectModuleDO> projectWorkDOList = projectMapper.getProjectWorkByTime(threeDaysLater);
// 获取七天后到期的模块
List<ProjectModuleDO> projectWorkDOList1 = projectMapper.getProjectWorkByTime(sevenDaysLater);
if (!projectWorkDOList1.isEmpty()) {
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectWorkDO.getPrincipalId());
messageAddVO.setTitle("提醒消息");
String projectName = projectMapper
.tgetProjectById(projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue())
.getProjectId().intValue()).getName();
String systemName = projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()).getName();
String moddleName = projectWorkDO.getName();
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块"
+ "还有七天就要到期了,请及时处理");
messageAddVO.setType("跳转模块页");
messageAddVO.setToId(projectWorkDO.getId().intValue());
messageMapper.messageAdd(messageAddVO);
}
}
if (!projectWorkDOList.isEmpty()) {
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectWorkDO.getPrincipalId());
messageAddVO.setTitle("提醒消息");
String projectName = projectMapper
.tgetProjectById(projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue())
.getPrincipalId().intValue()).getName();
String systemName = projectMapper.getWorkById(projectWorkDO.getProjectChildId().intValue()).getName();
String moddleName = projectWorkDO.getName();
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统的" + moddleName + "模块"
+ "还有三天就要到期了,请及时处理");
messageAddVO.setType("跳转模块页");
messageAddVO.setToId(projectWorkDO.getId().intValue());
messageMapper.messageAdd(messageAddVO);
}
}
// 获取七天后到期的系统
List<ProjectChildDO> projectChildDOList = projectMapper.getProjectChildByTime(sevenDaysLater);
if (!projectChildDOList.isEmpty()) {
for (ProjectChildDO projectChildDO : projectChildDOList) {
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectChildDO.getPrincipalId());
messageAddVO.setTitle("提醒消息");
String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName();
String systemName = projectChildDO.getName();
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有七天就要到期了,请及时处理");
messageAddVO.setType("跳转系统页");
messageAddVO.setToId(projectChildDO.getId().intValue());
messageMapper.messageAdd(messageAddVO);
}
}
// 获取三天后到期的系统
List<ProjectChildDO> projectChildDOList1 = projectMapper.getProjectChildByTime(threeDaysLater);
if (!projectChildDOList1.isEmpty()) {
for (ProjectChildDO projectChildDO : projectChildDOList1) {
// 添加消息
MessageAddVO messageAddVO = new MessageAddVO();
messageAddVO.setUid(projectChildDO.getPrincipalId());
messageAddVO.setTitle("提醒消息");
String projectName = projectMapper.tgetProjectById(projectChildDO.getProjectId().intValue()).getName();
String systemName = projectChildDO.getName();
messageAddVO.setText("您负责的" + projectName + "项目的" + systemName + "系统还有三天就要到期了,请及时处理");
messageAddVO.setType("跳转系统页");
messageAddVO.setToId(projectChildDO.getId().intValue());
messageMapper.messageAdd(messageAddVO);
}
}
} }
@Override @Override
@CheckUserHasPermission("message.get") public BaseResponse messageGetById(Long id, Long uid) {
public BaseResponse messageGetAll( return ResultUtil.success(messageMapper.getMessageById(id));
HttpServletRequest request,
LocalDate begin,
LocalDate end,
Long page,
Long pageSize,
Long loginId,
Long uid
) {
log.info("请求接口服务层");
//1.记录总数据数
Long count = messageMapper.count(uid);
//2.获取分页数据列表
//默认获取时间为最近30天
if (begin == null) {
begin = LocalDate.now();
end = begin.minusDays(30);
}
Long start = (page - 1) * pageSize;
List<MessageDO> messageDOList = messageMapper.page(begin, end, uid, start, pageSize);
//3.封装PageBean对象
PageBeanDO<MessageDO> pageBean = new PageBeanDO<>(count, messageDOList);
return ResultUtil.success(pageBean);
} }
} }

View File

@ -1,11 +1,10 @@
package com.jsl.oa.services.impl; package com.jsl.oa.services.impl;
import com.jsl.oa.dao.ModuleDAO;
import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.ModuleMapper; import com.jsl.oa.mapper.ModuleMapper;
import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.dodata.ProjectModuleDO;
import com.jsl.oa.model.dodata.ProjectWorkDO;
import com.jsl.oa.model.vodata.ProjectWorkAndNameVO; import com.jsl.oa.model.vodata.ProjectWorkAndNameVO;
import com.jsl.oa.services.ModuleService; import com.jsl.oa.services.ModuleService;
import com.jsl.oa.utils.BaseResponse; import com.jsl.oa.utils.BaseResponse;
@ -24,11 +23,10 @@ import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ModuleServiceImpl implements ModuleService { public class ModuleServiceImpl implements ModuleService {
private final RoleMapper roleMapper;
private final ModuleDAO moduleDAO;
private final ProjectDAO projectDAO; private final ProjectDAO projectDAO;
private final ModuleMapper moduleMapper; private final ModuleMapper moduleMapper;
private final UserDAO userDAO; private final UserDAO userDAO;
private final RoleDAO roleDAO;
@Override @Override
public BaseResponse getByProjectId(Integer projectId, HttpServletRequest request) { public BaseResponse getByProjectId(Integer projectId, HttpServletRequest request) {
@ -44,7 +42,7 @@ public class ModuleServiceImpl implements ModuleService {
is = 0; is = 0;
} }
List<ProjectWorkDO> projectWorkDOList = moduleMapper.getByProjectId(projectId, userId, is); List<ProjectModuleDO> projectWorkDOList = moduleMapper.getByProjectId(projectId, userId, is);
return ResultUtil.success(projectWorkDOList); return ResultUtil.success(projectWorkDOList);
} }
@ -63,10 +61,10 @@ public class ModuleServiceImpl implements ModuleService {
is = 0; is = 0;
} }
List<ProjectWorkDO> projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is); List<ProjectModuleDO> projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is);
// 封装VO类 // 封装VO类
List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>(); List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>();
for (ProjectWorkDO projectWorkDO : projectWorkDOList) { for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO(); ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO();
Processing.copyProperties(projectWorkDO, projectWorkAndNameVO); Processing.copyProperties(projectWorkDO, projectWorkAndNameVO);
// 添加负责人和子系统名称 // 添加负责人和子系统名称
@ -83,9 +81,8 @@ public class ModuleServiceImpl implements ModuleService {
@Override @Override
public BaseResponse deleteById(HttpServletRequest request, Long id) { public BaseResponse deleteById(HttpServletRequest request, Long id) {
// 检测是否为管理员 // 检测是否为管理员
if (!Processing.checkUserIsAdmin(request, roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
@ -97,9 +94,9 @@ public class ModuleServiceImpl implements ModuleService {
// 删除子模块方法 // 删除子模块方法
public void deleteMoudule(Long id) { public void deleteMoudule(Long id) {
//获取所有父Id=id的子模块 //获取所有父Id=id的子模块
List<ProjectWorkDO> projectWorkDOS = moduleMapper.getAllMoudleByPid(id); List<ProjectModuleDO> projectWorkDOS = moduleMapper.getAllMoudleByPid(id);
for (ProjectWorkDO workDO : projectWorkDOS) { for (ProjectModuleDO workDO : projectWorkDOS) {
deleteMoudule(workDO.getId()); deleteMoudule(workDO.getId());
} }

View File

@ -5,11 +5,10 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.annotations.CheckUserHasPermission;
import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.ProjectDAO;
import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.mapper.ProjectMapper;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.mapper.UserMapper; import com.jsl.oa.mapper.UserMapper;
import com.jsl.oa.model.dodata.ProjectCuttingDO;
import com.jsl.oa.model.dodata.ProjectDO; import com.jsl.oa.model.dodata.ProjectDO;
import com.jsl.oa.model.dodata.UserDO; import com.jsl.oa.model.dodata.UserDO;
import com.jsl.oa.model.dodata.info.ProjectShowDO; import com.jsl.oa.model.dodata.info.ProjectShowDO;
@ -48,10 +47,10 @@ public class ProjectServiceImpl implements ProjectService {
private final UserMapper userMapper; private final UserMapper userMapper;
private final ProjectMapper projectMapper; private final ProjectMapper projectMapper;
private final RoleMapper roleMapper;
private final ProjectDAO projectDAO; private final ProjectDAO projectDAO;
private final UserDAO userDAO; private final UserDAO userDAO;
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final RoleDAO roleDAO;
@Override @Override
public BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd) { public BaseResponse projectAdd(HttpServletRequest request, ProjectInfoVO projectAdd) {
@ -73,7 +72,7 @@ public class ProjectServiceImpl implements ProjectService {
tag = new StringBuilder(tag.substring(0, tag.length() - 2)); tag = new StringBuilder(tag.substring(0, tag.length() - 2));
} }
projectAdd.setTags(open + tag + close); projectAdd.setTags(open + tag + close);
projectAdd.setFile("{\"URI\":\"" + projectAdd.getFile() + "\"}"); projectAdd.setFiles("{\"URI\":\"" + projectAdd.getFiles() + "\"}");
projectDAO.projectAdd(projectAdd); projectDAO.projectAdd(projectAdd);
@ -81,78 +80,36 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) { public BaseResponse projectWorkAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO) {
log.info("\t> 执行 Service 层 ProjectService.projectWorkAdd 方法"); log.info("\t> 执行 Service 层 ProjectService.projectWorkAdd 方法");
//获取用户id //获取用户id
Long userId = Processing.getAuthHeaderToUserId(request); Long userId = Processing.getAuthHeaderToUserId(request);
//是否是增加子系统 //是否是增加子系统
if (projectWorkVO.getType() == 0) { if (projectWorkVO.getType() == 0) {
//是否是老师 //是否是老师
if (Processing.checkUserIsTeacher(request, roleMapper)) { if (Processing.checkUserIsTeacher(request, roleDAO)) {
projectDAO.projectWorkAdd(projectWorkVO); projectDAO.projectWorkAdd(projectWorkVO);
} else { } else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
}//增加子模块 } else {
else {
//是否是子系统的负责人 //是否是子系统的负责人
if (Objects.equals(userId, projectMapper.getPirIdbyWorkid(projectWorkVO.getPid()))) { if (Objects.equals(userId, projectMapper.getPirIdbyWorkid(projectWorkVO.getPid()))) {
projectDAO.projectWorkAdd(projectWorkVO); projectDAO.projectWorkAdd(projectWorkVO);
} else return ResultUtil.error(ErrorCode.NOT_PERMISSION); } else {
return ResultUtil.error(ErrorCode.NOT_PERMISSION);
}
} }
return ResultUtil.success("添加成功"); return ResultUtil.success("添加成功");
} }
@Override @Override
public BaseResponse tget(Integer id, List<String> tags, List<Integer> isFinish, Integer page, Integer pageSize) { public BaseResponse tGet(List<String> tags, List<String> isFinish, Integer page, Integer pageSize) {
log.info("\t> 执行 Service 层 ProjectService.tget 方法"); log.info("\t> 执行 Service 层 ProjectService.tGet 方法");
//根据id查询
if (id != null) {
ProjectDO projectDO = projectMapper.tgetProjectById(id);
ProjectSimpleVO projectSimpleVO = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO, projectDO, userDAO, objectMapper);
return ResultUtil.success(projectSimpleVO);
}
//根据标签查询 List<ProjectDO> projectDOList = projectDAO.tget(isFinish, tags);
if (tags != null && !tags.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.tget(id, isFinish, tags);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
}
//根据状态查询
if (isFinish != null && !isFinish.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.tget(id, isFinish, tags);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
}
List<ProjectDO> projectDOList = projectDAO.tget(id, isFinish, tags);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>(); List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) { for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
@ -165,6 +122,7 @@ public class ProjectServiceImpl implements ProjectService {
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start, List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size())); Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData); return ResultUtil.success(pageData);
} }
@Override @Override
@ -231,8 +189,8 @@ public class ProjectServiceImpl implements ProjectService {
//判断用户是否为老师 或者 项目负责人 //判断用户是否为老师 或者 项目负责人
if (!Processing.checkUserIsTeacher(request, roleMapper) || if (!Processing.checkUserIsTeacher(request, roleDAO)
!projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) { || !projectDAO.isPrincipalUser(Processing.getAuthHeaderToUserId(request), projectId)) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
@ -246,30 +204,6 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override
@CheckUserHasPermission("project.cutting.user.get")
public BaseResponse projectGetUserInCutting(Long uid) {
log.info("\t> 执行 Service 层 ProjectService.projectGetUserInCutting 方法");
if (userDAO.isExistUser(uid)) {
List<ProjectCuttingDO> projectCuttingDOList = projectDAO.projectGetUserInCutting(uid);
return ResultUtil.success(projectCuttingDOList);
} else {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
}
@Override
@CheckUserHasPermission("project.cutting.user.add")
public BaseResponse projectAddUserForCutting(HttpServletRequest request, Long uid, Long pid) {
log.info("\t> 执行 Service 层 ProjectService.projectAddUserForCutting 方法");
if (userDAO.isExistUser(uid)) {
projectDAO.projectAddUserForCutting(uid, pid);
return ResultUtil.success();
} else {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
}
@Override @Override
public BaseResponse getHeader(Integer id) { public BaseResponse getHeader(Integer id) {
log.info("\t> 执行 Service 层 InfoService.getHeader 方法"); log.info("\t> 执行 Service 层 InfoService.getHeader 方法");
@ -361,14 +295,20 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public BaseResponse get(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer page, Integer pageSize) { public BaseResponse get(
HttpServletRequest request,
List<String> tags,
List<String> isFinish,
Integer page,
Integer pageSize
) {
log.info("\t> 执行 Service 层 ProjectService.get 方法"); log.info("\t> 执行 Service 层 ProjectService.get 方法");
//获取用户 //获取用户
Long userId = Processing.getAuthHeaderToUserId(request); Long userId = Processing.getAuthHeaderToUserId(request);
//根据标签查询 //根据标签查询
if (tags != null && !tags.isEmpty()) { if (tags != null && !tags.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.get(userId, listAll, tags, isFinish); List<ProjectDO> projectDOList = projectDAO.get(userId, tags, isFinish);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>(); List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) { for (ProjectDO projectDO : projectDOList) {
@ -386,40 +326,7 @@ public class ProjectServiceImpl implements ProjectService {
//根据状态查询 //根据状态查询
if (isFinish != null && !isFinish.isEmpty()) { if (isFinish != null && !isFinish.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.get(userId, listAll, tags, isFinish); List<ProjectDO> projectDOList = projectDAO.get(userId, tags, isFinish);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
}
//判断是否是老师(项目负责人)
if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) {
List<ProjectDO> projectDOList = projectDAO.get(userId, listAll, tags, isFinish);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
} else {
listAll = 0;
List<ProjectDO> projectDOList = projectDAO.get(userId, listAll, tags, isFinish);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>(); List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) { for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
@ -433,82 +340,38 @@ public class ProjectServiceImpl implements ProjectService {
Math.min(end, projectSimpleVOList.size())); Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData); return ResultUtil.success(pageData);
} }
return ResultUtil.success(projectMapper.get(userId));
} }
@Override @Override
public BaseResponse workget(Integer listAll, HttpServletRequest request, List<String> tags, List<Integer> isFinish, Integer is, Integer page, Integer pageSize) { public BaseResponse workGet(
log.info("\t> 执行 Service 层 ProjectService.workget 方法"); HttpServletRequest request,
List<String> tags,
List<String> isFinish,
Integer is,
Integer page,
Integer pageSize
) {
log.info("\t> 执行 Service 层 ProjectService.workGet 方法");
//获取用户 //获取用户
Long userId = Processing.getAuthHeaderToUserId(request); Long userId = Processing.getAuthHeaderToUserId(request);
//根据标签查询 List<ProjectDO> projectDOList = projectDAO.workget(userId, tags, isFinish, is);
if (tags != null && !tags.isEmpty()) { List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is); for (ProjectDO projectDO : projectDOList) {
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>(); ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
for (ProjectDO projectDO : projectDOList) { Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO(); projectSimpleVOList.add(projectSimpleVO1);
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
} }
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
//根据状态查询 return ResultUtil.success(pageData);
if (isFinish != null && !isFinish.isEmpty()) {
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
}
//判断是否是老师(项目负责人)
if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) {
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
} else {
listAll = 0;
List<ProjectDO> projectDOList = projectDAO.workget(userId, listAll, tags, isFinish, is);
List<ProjectSimpleVO> projectSimpleVOList = new ArrayList<>();
for (ProjectDO projectDO : projectDOList) {
ProjectSimpleVO projectSimpleVO1 = new ProjectSimpleVO();
Processing.projectTosimply(projectSimpleVO1, projectDO, userDAO, objectMapper);
projectSimpleVOList.add(projectSimpleVO1);
}
//分页返回
int start = (page - 1) * pageSize;
int end = start + pageSize;
List<ProjectSimpleVO> pageData = projectSimpleVOList.subList(start,
Math.min(end, projectSimpleVOList.size()));
return ResultUtil.success(pageData);
}
} }
@ -527,7 +390,7 @@ public class ProjectServiceImpl implements ProjectService {
log.info("\t> 执行 Service 层 ProjectService.projectDelete 方法"); log.info("\t> 执行 Service 层 ProjectService.projectDelete 方法");
//判断用户是否为老师 或者 项目负责人 //判断用户是否为老师 或者 项目负责人
if (!Processing.checkUserIsTeacher(request, roleMapper)) { if (!Processing.checkUserIsTeacher(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
@ -541,57 +404,4 @@ public class ProjectServiceImpl implements ProjectService {
} }
return ResultUtil.success(); return ResultUtil.success();
} }
@Override
@CheckUserHasPermission("project.cutting.add")
public BaseResponse addProjectCutting(HttpServletRequest request, ProjectCuttingAddVO projectCuttingAddVO) {
log.info("\t> 执行 Service 层 ProjectService.projectCuttingAdd方法");
//赋值数据
ProjectCuttingDO projectCuttingDO = new ProjectCuttingDO();
Processing.copyProperties(projectCuttingAddVO, projectCuttingDO);
//根据pid检测项目是否存在
if (!projectDAO.isExistProjectById(projectCuttingAddVO.getPid())) {
return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST);
}
//向数据库添加数据
projectDAO.projectCuttingAdd(projectCuttingDO);
return ResultUtil.success();
}
@Override
@CheckUserHasPermission("project.cutting.edit")
public BaseResponse editProjectCutting(HttpServletRequest request, ProjectCuttingEditVO projectCuttingEditVO) {
log.info("\t> 执行 Service 层 ProjectService.projectCuttingEdit方法");
//赋值数据
ProjectCuttingDO projectCuttingDO = new ProjectCuttingDO();
Processing.copyProperties(projectCuttingEditVO, projectCuttingDO);
//根据id检测项目模块是否存在
if (!projectDAO.isExistProjectCutting(projectCuttingEditVO.getId())) {
return ResultUtil.error(ErrorCode.PROJECT_CUTTING_NOT_EXIST);
}
//向数据库添加数据
projectDAO.updateProjectCutting(projectCuttingDO);
return ResultUtil.success();
}
@Override
@CheckUserHasPermission("project.cutting.delete")
public BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid) {
log.info("\t> 执行 Service 层 ProjectService.projectToOtherUserForCutting方法");
//检测新旧用户是否存在
if (!userDAO.isExistUser(oldUid) || !userDAO.isExistUser(newUid)) {
return ResultUtil.error(ErrorCode.USER_NOT_EXIST);
}
//用户项目表是否含有对应记录
if (!projectDAO.isExistProjectUser(pid, oldUid)) {
return ResultUtil.error(ErrorCode.PROJECT_USER_NOT_EXIST);
}
//更新数据
if (!projectDAO.updateUserForProjectUserByPidAndUid(pid, oldUid, newUid)) {
return ResultUtil.error(ErrorCode.DATABASE_UPDATE_ERROR);
}
return ResultUtil.success();
}
} }

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.ProjectModuleDO;
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 (ProjectModuleDO projectWorkDO : projectDAO.getAllSubsystemByUserId(userId)) {
//查询每个项目下所有的审核信息
List<ReviewDO> reviewDOS = reviewMapper.
selectReviewFromSubsystem(projectWorkDO.getId());
//封装VO类
reviewData.addAll(encapsulateArrayClass(reviewDOS));
}
//在从用户为 子模块负责人 的项目中获取对应 审核信息
for (ProjectModuleDO 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

@ -45,7 +45,7 @@ public class RoleServiceImpl implements RoleService {
@CheckUserHasPermission("role.add") @CheckUserHasPermission("role.add")
public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) { public BaseResponse roleAddUser(HttpServletRequest request, Long uid, Long rid) {
log.info("\t> 执行 Service 层 RoleService.addRoleUser 方法"); log.info("\t> 执行 Service 层 RoleService.addRoleUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (Processing.checkUserIsAdmin(request, roleDAO)) {
roleDAO.addRoleUser(uid, rid); roleDAO.addRoleUser(uid, rid);
return ResultUtil.success(); return ResultUtil.success();
} else { } else {
@ -57,7 +57,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) { public BaseResponse roleRemoveUser(HttpServletRequest request, Long uid) {
log.info("\t> 执行 Service 层 RoleService.delRoleUser 方法"); log.info("\t> 执行 Service 层 RoleService.delRoleUser 方法");
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (Processing.checkUserIsAdmin(request, roleDAO)) {
roleDAO.delRoleUser(uid); roleDAO.delRoleUser(uid);
return ResultUtil.success(); return ResultUtil.success();
} else { } else {
@ -77,7 +77,7 @@ public class RoleServiceImpl implements RoleService {
return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES); return ResultUtil.error(ErrorCode.USER_NOT_CHANGE_TO_THEMSELVES);
} }
//检测用户权限是否为管理员 //检测用户权限是否为管理员
if (Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (Processing.checkUserIsAdmin(request, roleDAO)) {
if (roleDAO.roleChangeUser(uid, rid)) { if (roleDAO.roleChangeUser(uid, rid)) {
return ResultUtil.success(); return ResultUtil.success();
} else { } else {
@ -92,7 +92,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleGet(HttpServletRequest request, String id) { public BaseResponse roleGet(HttpServletRequest request, String id) {
log.info("\t> 执行 Service 层 RoleService.roleGet 方法"); log.info("\t> 执行 Service 层 RoleService.roleGet 方法");
// 检查用户权限 // 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 获取 Role 权限组 // 获取 Role 权限组
@ -119,7 +119,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) { public BaseResponse roleEdit(HttpServletRequest request, RoleEditVO roleEditVO) {
log.info("\t> 执行 Service 层 RoleService.roleEdit 方法"); log.info("\t> 执行 Service 层 RoleService.roleEdit 方法");
// 检查用户权限 // 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 获取 Role 相关信息 // 获取 Role 相关信息
@ -143,7 +143,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse roleDelete(HttpServletRequest request, Long id) { public BaseResponse roleDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 RoleService.roleDelete 方法"); log.info("\t> 执行 Service 层 RoleService.roleDelete 方法");
// 检查用户权限 // 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 获取 Role 相关信息 // 获取 Role 相关信息
@ -165,7 +165,7 @@ public class RoleServiceImpl implements RoleService {
public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException { public BaseResponse addRole(HttpServletRequest request, RoleAddVo roleAddVO) throws ClassCopyException {
log.info("\t> 执行 Service 层 RoleService.addRole 方法"); log.info("\t> 执行 Service 层 RoleService.addRole 方法");
// 检查用户权限 // 检查用户权限
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 检查权限名称是否重复 // 检查权限名称是否重复

View File

@ -41,17 +41,21 @@ import java.util.regex.Pattern;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class UserServiceImpl implements UserService { public class UserServiceImpl implements UserService {
private final UserDAO userDAO; private final UserDAO userDAO;
private final RoleDAO roleDAO; private final RoleDAO roleDAO;
private final PermissionDAO permissionDAO; private final PermissionDAO permissionDAO;
@Override
public UserDO getUserInfoByUsername(String username) {
return userDAO.getUserInfoByUsername(username);
}
@Override @Override
public BaseResponse userDelete(HttpServletRequest request, Long id) { public BaseResponse userDelete(HttpServletRequest request, Long id) {
log.info("\t> 执行 Service 层 UserService.userDelete 方法"); log.info("\t> 执行 Service 层 UserService.userDelete 方法");
//判断用户是否存在 //判断用户是否存在
if (userDAO.isExistUser(id)) { if (userDAO.isExistUser(id)) {
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
// 用户是否已删除 // 用户是否已删除
@ -69,7 +73,7 @@ public class UserServiceImpl implements UserService {
@Override @Override
public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) { public BaseResponse userLock(HttpServletRequest request, Long id, Long isLock) {
log.info("\t> 执行 Service 层 UserService.userLock 方法"); log.info("\t> 执行 Service 层 UserService.userLock 方法");
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
//判断用户是否存在 //判断用户是否存在
@ -127,15 +131,14 @@ public class UserServiceImpl implements UserService {
return ResultUtil.success(userCurrentBackVO); return ResultUtil.success(userCurrentBackVO);
} }
@SuppressWarnings("checkstyle:NestedIfDepth")
@Override @Override
@CheckUserAbleToUse @CheckUserAbleToUse
public BaseResponse userCurrent( public BaseResponse userCurrent(HttpServletRequest request,
String id, String id,
String username, String username,
String email, String email,
String phone, String phone) {
HttpServletRequest request
) {
log.info("\t> 执行 Service 层 UserService.userCurrent 方法"); log.info("\t> 执行 Service 层 UserService.userCurrent 方法");
if (id == null && username == null && email == null && phone == null) { if (id == null && username == null && email == null && phone == null) {
// Token获取信息 // Token获取信息
@ -159,7 +162,7 @@ public class UserServiceImpl implements UserService {
if (roleUserDO == null) { if (roleUserDO == null) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
RoleDO roleDO = roleDAO.roleMapper.getRoleByRoleName("admin"); RoleDO roleDO = roleDAO.getRoleByRoleName("admin");
if (!roleUserDO.getRid().equals(roleDO.getId())) { if (!roleUserDO.getRid().equals(roleDO.getId())) {
return ResultUtil.error(ErrorCode.NOT_PERMISSION); return ResultUtil.error(ErrorCode.NOT_PERMISSION);
} }
@ -192,7 +195,7 @@ public class UserServiceImpl implements UserService {
public BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request) { public BaseResponse userAdd(UserAddVO userAddVo, HttpServletRequest request) {
log.info("\t> 执行 Service 层 UserService.userAdd 方法"); log.info("\t> 执行 Service 层 UserService.userAdd 方法");
// 检测用户是否为管理员 // 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
//如果用户不重复添加用户 //如果用户不重复添加用户
@ -230,7 +233,7 @@ public class UserServiceImpl implements UserService {
public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) { public BaseResponse userEdit(UserEditVO userEditVO, HttpServletRequest request) {
log.info("\t> 执行 Service 层 userEdit 方法"); log.info("\t> 执行 Service 层 userEdit 方法");
// 检测用户是否为管理员 // 检测用户是否为管理员
if (!Processing.checkUserIsAdmin(request, roleDAO.roleMapper)) { if (!Processing.checkUserIsAdmin(request, roleDAO)) {
return ResultUtil.error(ErrorCode.NOT_ADMIN); return ResultUtil.error(ErrorCode.NOT_ADMIN);
} }
//根据id获取用户信息 //根据id获取用户信息

View File

@ -0,0 +1,20 @@
package com.jsl.oa.services.timese;
import com.jsl.oa.services.MessageService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component
public class MessageTimeTask {
@Resource
private MessageService messageService;
// 每天0点执行一次
@Scheduled(cron = "0 0 0 * * ?")
public void messageRemind() {
messageService.messageRemind();
}
}

View File

@ -51,7 +51,8 @@ public enum ErrorCode {
PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"), PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"),
PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"), PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"),
PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"), 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; private final String output;

View File

@ -34,7 +34,7 @@ public class JwtUtil {
* @return 返回生成的Token * @return 返回生成的Token
*/ */
public static String generateToken(@NotNull Long userId) { public static String generateToken(@NotNull Long userId) {
Key key = Keys.hmacShaKeyFor(SafeConstants.SECRET_KEY.getBytes()); Key key = Keys.hmacShaKeyFor(SafeConstants.getSecretKey().getBytes());
return Jwts.builder() return Jwts.builder()
.setSubject(userId.toString()) .setSubject(userId.toString())
.setExpiration(new java.util.Date(System.currentTimeMillis() + EXPIRATION_TIME)) .setExpiration(new java.util.Date(System.currentTimeMillis() + EXPIRATION_TIME))
@ -71,7 +71,7 @@ public class JwtUtil {
* @return 返回获取到的用户名 * @return 返回获取到的用户名
*/ */
public static Long getUserId(String token) { public static Long getUserId(String token) {
Key key = Keys.hmacShaKeyFor(SafeConstants.SECRET_KEY.getBytes()); Key key = Keys.hmacShaKeyFor(SafeConstants.getSecretKey().getBytes());
Jws<Claims> claimsJws = Jwts.parserBuilder() Jws<Claims> claimsJws = Jwts.parserBuilder()
.setSigningKey(key) .setSigningKey(key)
.build() .build()

View File

@ -7,7 +7,6 @@ import com.jsl.oa.dao.PermissionDAO;
import com.jsl.oa.dao.RoleDAO; import com.jsl.oa.dao.RoleDAO;
import com.jsl.oa.dao.UserDAO; import com.jsl.oa.dao.UserDAO;
import com.jsl.oa.exception.ClassCopyException; import com.jsl.oa.exception.ClassCopyException;
import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.dodata.*; import com.jsl.oa.model.dodata.*;
import com.jsl.oa.model.vodata.PermissionContentVo; import com.jsl.oa.model.vodata.PermissionContentVo;
import com.jsl.oa.model.vodata.ProjectSimpleVO; import com.jsl.oa.model.vodata.ProjectSimpleVO;
@ -166,13 +165,12 @@ public class Processing {
* 该方法用于检查用户是否是管理员类型封装后字节返回结果 * 该方法用于检查用户是否是管理员类型封装后字节返回结果
* *
* @param request 请求 * @param request 请求
* @param roleMapper RoleMapper
* @return 如果为 true 是管理员false 不是管理员 * @return 如果为 true 是管理员false 不是管理员
*/ */
public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleMapper roleMapper) { public static @NotNull Boolean checkUserIsAdmin(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO != null) { if (roleUserDO != null) {
RoleDO roleDO = roleMapper.getRoleByRoleName("admin"); RoleDO roleDO = roleDAO.getRoleByRoleName("admin");
return roleUserDO.getRid().equals(roleDO.getId()); return roleUserDO.getRid().equals(roleDO.getId());
} else { } else {
return false; return false;
@ -183,13 +181,12 @@ public class Processing {
* 检查用户是否是老师 * 检查用户是否是老师
* *
* @param request 请求 * @param request 请求
* @param roleMapper RoleMapper
* @return 如果为 true 是老师false 不是老师 * @return 如果为 true 是老师false 不是老师
*/ */
public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleMapper roleMapper) { public static @NotNull Boolean checkUserIsTeacher(HttpServletRequest request, @NotNull RoleDAO roleDAO) {
RoleUserDO roleUserDO = roleMapper.getRoleUserByUid(Processing.getAuthHeaderToUserId(request)); RoleUserDO roleUserDO = roleDAO.getRoleUserByUid(Processing.getAuthHeaderToUserId(request));
if (roleUserDO != null) { if (roleUserDO != null) {
RoleDO roleDO = roleMapper.getRoleByRoleName("teacher"); RoleDO roleDO = roleDAO.getRoleByRoleName("teacher");
return roleUserDO.getRid().equals(roleDO.getId()); return roleUserDO.getRid().equals(roleDO.getId());
} else { } else {
return false; return false;
@ -211,11 +208,10 @@ public class Processing {
* @param <S> 源对象的类型 * @param <S> 源对象的类型
* @param source 从中复制属性的源对象 * @param source 从中复制属性的源对象
* @param target 属性将复制到的目标对象 * @param target 属性将复制到的目标对象
* @return 复制属性后的目标对象
* @throws ClassCopyException 如果在复制过程中出现错误 * @throws ClassCopyException 如果在复制过程中出现错误
*/ */
@Contract(pure = true) @Contract(pure = true)
public static <T, S> T copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException { public static <T, S> void copyProperties(@NotNull S source, @NotNull T target) throws ClassCopyException {
Class<?> sourceClass = source.getClass(); Class<?> sourceClass = source.getClass();
Class<?> targetClass = target.getClass(); Class<?> targetClass = target.getClass();
@ -254,26 +250,23 @@ public class Processing {
} catch (IllegalAccessException ignored) { } catch (IllegalAccessException ignored) {
throw new ClassCopyException(); throw new ClassCopyException();
} }
return null;
} }
/** /**
* @Description: 将性别转为字符形式 * <h2>获取性别</h2>
* @Date: 2024/1/18 * <hr/>
**/ * 用于获取性别
*
* @param sex 性别ID
* @return 返回中文性别
*/
@Contract(pure = true) @Contract(pure = true)
public static @NotNull String getSex(short sex) { public static @NotNull String getSex(short sex) {
if (sex == 0) { switch (sex) {
return "保密"; case 1: return "";
case 2: return "";
default: return "保密";
} }
if (sex == 1) {
return "";
}
if (sex == 2) {
return "";
}
return " ";
} }
/** /**
@ -285,10 +278,7 @@ public class Processing {
* @return {@link BaseResponse} * @return {@link BaseResponse}
*/ */
public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo( public static @NotNull UserCurrentBackVO.UserCurrent returnUserInfo(
@NotNull UserDO userDO, @NotNull UserDO userDO, RoleDAO roleDAO, PermissionDAO permissionDAO) {
RoleDAO roleDAO,
PermissionDAO permissionDAO
) {
UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent(); UserCurrentBackVO.UserCurrent userCurrent = new UserCurrentBackVO.UserCurrent();
// 获取用户角色 // 获取用户角色
RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId()); RoleUserDO getUserRole = roleDAO.getRoleUserByUid(userDO.getId());
@ -308,29 +298,30 @@ public class Processing {
// 获取权限列表信息 // 获取权限列表信息
getPermissionForString = permissionDAO.getPermission(userDO.getId()); getPermissionForString = permissionDAO.getPermission(userDO.getId());
} }
userCurrent.setUser(new UserCurrentBackVO.ReturnUser() userCurrent.setUser(new UserCurrentBackVO.ReturnUser().
.setId(userDO.getId()) setId(userDO.getId()).
.setJobId(userDO.getJobId()) setJobId(userDO.getJobId()).
.setUsername(userDO.getUsername()) setUsername(userDO.getUsername()).
.setAddress(userDO.getAddress()) setAddress(userDO.getAddress()).
.setPhone(userDO.getPhone()) setPhone(userDO.getPhone()).
.setEmail(userDO.getEmail()) setEmail(userDO.getEmail()).
.setAge(userDO.getAge()) setAge(userDO.getAge()).
.setSignature(userDO.getSignature()) setSignature(userDO.getSignature()).
.setAvatar(userDO.getAvatar()) setAvatar(userDO.getAvatar()).
.setNickname(userDO.getNickname()) setNickname(userDO.getNickname()).
.setSex(userDO.getSex()) setSex(userDO.getSex()).
.setEnabled(userDO.getEnabled()) setEnabled(userDO.getEnabled()).
.setAccountNoExpired(userDO.getAccountNoExpired()) setAccountNoExpired(userDO.getAccountNoExpired()).
.setCredentialsNoExpired(userDO.getCredentialsNoExpired()) setCredentialsNoExpired(userDO.getCredentialsNoExpired()).
.setRecommend(userDO.getRecommend()) setRecommend(userDO.getRecommend()).
.setAccountNoLocked(userDO.getAccountNoLocked()) setAccountNoLocked(userDO.getAccountNoLocked()).
.setDescription(userDO.getDescription()) setDescription(userDO.getDescription()).
.setCreatedAt(userDO.getCreatedAt()) setCreatedAt(userDO.getCreatedAt()).
.setUpdatedAt(userDO.getUpdatedAt()) setUpdatedAt(userDO.getUpdatedAt()).
.setIsDelete(userDO.getIsDelete())) setIsDelete(userDO.getIsDelete())).
.setRole(new UserCurrentBackVO.ReturnUserRole().setRid(getUserRole.getRid())) setRole(new UserCurrentBackVO.ReturnUserRole().
.setPermission(getPermissionForString); setRid(getUserRole.getRid())).
setPermission(getPermissionForString);
return userCurrent; return userCurrent;
} }
@ -356,14 +347,17 @@ public class Processing {
return userDOS; 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.setId(projectDO.getId());
projectSimpleVO.setName(projectDO.getName()); projectSimpleVO.setName(projectDO.getName());
projectSimpleVO.setTags(projectDO.getTags()); projectSimpleVO.setTags(projectDO.getTags());
projectSimpleVO.setCycle(projectDO.getCycle()); projectSimpleVO.setCycle(Long.valueOf(projectDO.getCycle()));
projectSimpleVO.setIsFinish(projectDO.getIsFinish()); projectSimpleVO.setWorkLoad(Long.valueOf(projectDO.getWorkLoad()));
projectSimpleVO.setWorkLoad(projectDO.getWorkLoad());
projectSimpleVO.setPrincipalUser(userDAO.getUserById(projectDO.getPrincipalId()).getUsername()); projectSimpleVO.setPrincipalUser(userDAO.getUserById(projectDO.getPrincipalId()).getUsername());
// 解析JSON字符串 // 解析JSON字符串
JsonNode rootNode = null; JsonNode rootNode = null;
@ -432,4 +426,39 @@ public class Processing {
return vo; 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

@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit;
* @see com.jsl.oa.common.constant.BusinessConstants * @see com.jsl.oa.common.constant.BusinessConstants
* @see com.jsl.oa.config.redis.RedisOperating * @see com.jsl.oa.config.redis.RedisOperating
* @author xiao_lfeng * @author xiao_lfeng
* @param <R> 泛型
*/ */
@Slf4j @Slf4j
@Component @Component

View File

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

View File

@ -5,14 +5,14 @@
<mapper namespace="com.jsl.oa.mapper.ModuleMapper"> <mapper namespace="com.jsl.oa.mapper.ModuleMapper">
<select id="getByProjectId" resultType="com.jsl.oa.model.dodata.ProjectWorkDO"> <select id="getByProjectId" resultType="com.jsl.oa.model.dodata.ProjectModuleDO">
select * from organize_oa.oa_project_work where project_id=#{projectId} and type=0 select * from organize_oa.oa_project_work where project_id=#{projectId} and type=0
<if test="is != 1 "> <if test="is != 1 ">
and (principal_id=#{userId} or principal_id is null) and (principal_id=#{userId} or principal_id is null)
</if> </if>
</select> </select>
<select id="getBySysId" resultType="com.jsl.oa.model.dodata.ProjectWorkDO"> <select id="getBySysId" resultType="com.jsl.oa.model.dodata.ProjectModuleDO">
select * from organize_oa.oa_project_work where pid=#{sysId} and type=1 select * from organize_oa.oa_project_work where pid=#{sysId} and type=1
<if test="is != 1 "> <if test="is != 1 ">
and (principal_id=#{userId} or principal_id is null) and (principal_id=#{userId} or principal_id is null)

View File

@ -49,10 +49,10 @@
<select id="getByTags" resultType="com.jsl.oa.model.dodata.ProjectDO"> <select id="getByTags" resultType="com.jsl.oa.model.dodata.ProjectDO">
<if test="tags != null"> <if test="tags != null">
select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId} and status=1 and select * from organize_oa.oa_project where is_delete=false and principal_id=#{userId} and
<if test="isFinish != null and isFinish.size() > 0"> <if test="isFinish != null and isFinish.size() > 0">
is_finish in status in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=") and"> <foreach collection="isFinish" item="Finish" separator="," open="(" close=") and">
#{Finish} #{Finish}
</foreach> </foreach>
@ -67,7 +67,7 @@
</select> </select>
<select id="getByIsfinish" resultType="com.jsl.oa.model.dodata.ProjectDO"> <select id="getByIsfinish" resultType="com.jsl.oa.model.dodata.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and principal_id =#{userId} and status=1 and is_finish in select * from organize_oa.oa_project where is_delete=false and principal_id =#{userId} and status in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=")"> <foreach collection="isFinish" item="Finish" separator="," open="(" close=")">
#{Finish} #{Finish}
</foreach> </foreach>
@ -80,10 +80,10 @@
<if test="is != null"> <if test="is != null">
(principal_id = #{userId} and is_delete=false) or (principal_id = #{userId} and is_delete=false) or
</if> </if>
id in(select project_id from organize_oa.oa_project_work id in(select project_id from organize_oa.oa_project_child
where is_delete=false and (principal_id=#{userId} ) and where is_delete=false and principal_id=#{userId} ) and
<if test="isFinish != null and isFinish.size() > 0"> <if test="isFinish != null and isFinish.size() > 0">
is_finish in oa_project.status in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=") and"> <foreach collection="isFinish" item="Finish" separator="," open="(" close=") and">
#{Finish} #{Finish}
</foreach> </foreach>
@ -102,7 +102,7 @@
<if test="is != null"> <if test="is != null">
(principal_id = #{userId} and is_delete=false) or (principal_id = #{userId} and is_delete=false) or
</if> </if>
id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId}) and is_finish in id in(select project_id from organize_oa.oa_project_child where is_delete=false and (principal_id=#{userId}) and oa_project.status in
<foreach collection="isFinish" item="Finish" separator="," open="(" close="))"> <foreach collection="isFinish" item="Finish" separator="," open="(" close="))">
#{Finish} #{Finish}
</foreach> </foreach>
@ -113,7 +113,7 @@
<if test="is != null"> <if test="is != null">
(principal_id = #{userId} and is_delete=false) or (principal_id = #{userId} and is_delete=false) or
</if> </if>
id in(select project_id from organize_oa.oa_project_work where is_delete=false and principal_id=#{userId}) id in(select project_id from organize_oa.oa_project_child where is_delete=false and principal_id=#{userId})
</select> </select>
<select id="workget1" resultType="com.jsl.oa.model.dodata.ProjectDO"> <select id="workget1" resultType="com.jsl.oa.model.dodata.ProjectDO">
@ -130,9 +130,9 @@
</select> </select>
<select id="tgetBytags" resultType="com.jsl.oa.model.dodata.ProjectDO"> <select id="tgetBytags" resultType="com.jsl.oa.model.dodata.ProjectDO">
select * from organize_oa.oa_project where is_delete=false and status=1 and select * from organize_oa.oa_project where is_delete=false and
<if test="isFinish != null and isFinish.size() > 0"> <if test="isFinish != null and isFinish.size() > 0">
is_finish in oa_project.status in
<foreach collection="isFinish" item="Finish" separator="," open="(" close=") and"> <foreach collection="isFinish" item="Finish" separator="," open="(" close=") and">
#{Finish} #{Finish}
</foreach> </foreach>