完成项目、用户与项目关系模块
This commit is contained in:
@ -125,15 +125,7 @@ public class UserProjectRelevancyController extends BaseController {
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/add/project/list")
|
||||
public R<Boolean> addBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
|
||||
Long userId = req.getUserId();
|
||||
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);
|
||||
Boolean result = userProjectRelevancyService.insertBatchByProjectList(req);
|
||||
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.project.domain.UserProjectRelevancy;
|
||||
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.UserProjectRelevancyQueryReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||
@ -114,4 +115,12 @@ public interface IUserProjectRelevancyService extends IService<UserProjectReleva
|
||||
* @return 查询条件封装
|
||||
*/
|
||||
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.mybatis.core.page.PageQuery;
|
||||
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.UserProjectRelevancy;
|
||||
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.UserProjectRelevancyQueryReq;
|
||||
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.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@ -148,6 +152,16 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
||||
BeanUtils.copyProperties(req, 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);
|
||||
if (!save) {
|
||||
@ -220,7 +234,10 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
||||
public List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId) {
|
||||
// 添加查询条件,根据当前用户,获取数据
|
||||
LambdaQueryWrapper<UserProjectRelevancy> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
|
||||
// 如果是超级管理员查看所有
|
||||
if (!LoginHelper.isSuperAdmin()) {
|
||||
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
|
||||
}
|
||||
// 查询数据库,获取数据
|
||||
List<UserProjectRelevancy> list = this.list(queryWrapper);
|
||||
// 获取封装
|
||||
@ -249,8 +266,11 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
||||
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
|
||||
long current = req.getCurrent();
|
||||
long size = req.getPageSize();
|
||||
// 添加查询条件
|
||||
req.setUserId(userId);
|
||||
// 如果是超级管理员查看所有
|
||||
if (!LoginHelper.isSuperAdmin()) {
|
||||
// 添加查询条件
|
||||
req.setUserId(userId);
|
||||
}
|
||||
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
|
||||
// 查询数据库
|
||||
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
|
||||
@ -280,4 +300,41 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
|
||||
underlineSortField);
|
||||
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 = '系统用户与项目关联'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
|
||||
|
||||
-- 菜单 SQL
|
||||
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)
|
||||
|
Reference in New Issue
Block a user