完成项目、用户与项目关系模块
This commit is contained in:
@ -125,15 +125,7 @@ public class UserProjectRelevancyController extends BaseController {
|
|||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PostMapping("/add/project/list")
|
@PostMapping("/add/project/list")
|
||||||
public R<Boolean> addBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
|
public R<Boolean> addBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
|
||||||
Long userId = req.getUserId();
|
Boolean result = userProjectRelevancyService.insertBatchByProjectList(req);
|
||||||
Long[] projectIdList = req.getProjectIdList();
|
|
||||||
List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
|
|
||||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
|
||||||
userProjectRelevancy.setUserId(userId);
|
|
||||||
userProjectRelevancy.setProjectId(projectId);
|
|
||||||
return userProjectRelevancy;
|
|
||||||
}).toList();
|
|
||||||
boolean result = userProjectRelevancyService.saveBatch(userProjectRelevancyList);
|
|
||||||
return R.ok(result);
|
return R.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.project.domain.UserProjectRelevancy;
|
import org.dromara.project.domain.UserProjectRelevancy;
|
||||||
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
||||||
|
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||||
@ -114,4 +115,12 @@ public interface IUserProjectRelevancyService extends IService<UserProjectReleva
|
|||||||
* @return 查询条件封装
|
* @return 查询条件封装
|
||||||
*/
|
*/
|
||||||
QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req);
|
QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param req 新增参数
|
||||||
|
* @return 是否增加成功
|
||||||
|
*/
|
||||||
|
Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req);
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,11 @@ import org.dromara.common.core.utils.ObjectUtils;
|
|||||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.project.domain.Project;
|
import org.dromara.project.domain.Project;
|
||||||
import org.dromara.project.domain.UserProjectRelevancy;
|
import org.dromara.project.domain.UserProjectRelevancy;
|
||||||
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
||||||
|
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
||||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||||
@ -28,7 +30,9 @@ import org.dromara.project.service.IProjectService;
|
|||||||
import org.dromara.project.service.IUserProjectRelevancyService;
|
import org.dromara.project.service.IUserProjectRelevancyService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -148,6 +152,16 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
|||||||
BeanUtils.copyProperties(req, userProjectRelevancy);
|
BeanUtils.copyProperties(req, userProjectRelevancy);
|
||||||
// 数据校验
|
// 数据校验
|
||||||
validEntityBeforeSave(userProjectRelevancy);
|
validEntityBeforeSave(userProjectRelevancy);
|
||||||
|
// 判断对应项目是否存在
|
||||||
|
if (projectService.getById(userProjectRelevancy.getProjectId()) == null) {
|
||||||
|
throw new ServiceException("项目不存在", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
// 判断对应的用户与项目关联是否存在
|
||||||
|
if (this.getOne(new LambdaQueryWrapper<UserProjectRelevancy>()
|
||||||
|
.eq(UserProjectRelevancy::getUserId, userProjectRelevancy.getUserId())
|
||||||
|
.eq(UserProjectRelevancy::getProjectId, userProjectRelevancy.getProjectId())) != null) {
|
||||||
|
throw new ServiceException("用户和项目关联已存在", HttpStatus.CONFLICT);
|
||||||
|
}
|
||||||
// 写入数据库
|
// 写入数据库
|
||||||
boolean save = this.save(userProjectRelevancy);
|
boolean save = this.save(userProjectRelevancy);
|
||||||
if (!save) {
|
if (!save) {
|
||||||
@ -220,7 +234,10 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
|||||||
public List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId) {
|
public List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId) {
|
||||||
// 添加查询条件,根据当前用户,获取数据
|
// 添加查询条件,根据当前用户,获取数据
|
||||||
LambdaQueryWrapper<UserProjectRelevancy> queryWrapper = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<UserProjectRelevancy> queryWrapper = Wrappers.lambdaQuery();
|
||||||
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
|
// 如果是超级管理员查看所有
|
||||||
|
if (!LoginHelper.isSuperAdmin()) {
|
||||||
|
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
|
||||||
|
}
|
||||||
// 查询数据库,获取数据
|
// 查询数据库,获取数据
|
||||||
List<UserProjectRelevancy> list = this.list(queryWrapper);
|
List<UserProjectRelevancy> list = this.list(queryWrapper);
|
||||||
// 获取封装
|
// 获取封装
|
||||||
@ -249,8 +266,11 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
|||||||
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
|
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
|
||||||
long current = req.getCurrent();
|
long current = req.getCurrent();
|
||||||
long size = req.getPageSize();
|
long size = req.getPageSize();
|
||||||
// 添加查询条件
|
// 如果是超级管理员查看所有
|
||||||
req.setUserId(userId);
|
if (!LoginHelper.isSuperAdmin()) {
|
||||||
|
// 添加查询条件
|
||||||
|
req.setUserId(userId);
|
||||||
|
}
|
||||||
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
|
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
|
||||||
// 查询数据库
|
// 查询数据库
|
||||||
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
|
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
|
||||||
@ -280,4 +300,41 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
|||||||
underlineSortField);
|
underlineSortField);
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增用户和项目关联
|
||||||
|
*
|
||||||
|
* @param req 新增参数
|
||||||
|
* @return 是否增加成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req) {
|
||||||
|
Long userId = req.getUserId();
|
||||||
|
Long[] projectIdList = req.getProjectIdList();
|
||||||
|
long count = projectService.count(new QueryWrapper<Project>().in("id", (Object[]) projectIdList));
|
||||||
|
if (count < projectIdList.length) {
|
||||||
|
throw new ServiceException("项目ID列表错误,一个或多个项目不存在", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
|
||||||
|
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||||
|
userProjectRelevancy.setUserId(userId);
|
||||||
|
userProjectRelevancy.setProjectId(projectId);
|
||||||
|
// 查询对应用户与项目关联信息是否存在
|
||||||
|
QueryWrapper<UserProjectRelevancy> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("user_id", userId);
|
||||||
|
queryWrapper.eq("project_id", projectId);
|
||||||
|
// 如果存在则不保存
|
||||||
|
UserProjectRelevancy one = this.getOne(queryWrapper);
|
||||||
|
if (one != null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return userProjectRelevancy;
|
||||||
|
}).filter(Objects::nonNull).toList();
|
||||||
|
if (userProjectRelevancyList.isEmpty()) {
|
||||||
|
throw new ServiceException("对应用户与项目关系均已存在,无需重复添加", HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
// 当用户与项目关系存在时修改,不存在则保存
|
||||||
|
return this.saveOrUpdateBatch(userProjectRelevancyList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,8 @@ CREATE TABLE `user_project_relevancy`
|
|||||||
COLLATE = utf8mb4_general_ci COMMENT = '系统用户与项目关联'
|
COLLATE = utf8mb4_general_ci COMMENT = '系统用户与项目关联'
|
||||||
ROW_FORMAT = DYNAMIC;
|
ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- 菜单 SQL
|
-- 菜单 SQL
|
||||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||||
|
Reference in New Issue
Block a user