完成项目、用户与项目关系模块

This commit is contained in:
lcj
2025-03-06 09:17:05 +08:00
parent 93e8ee265f
commit a17f735969
10 changed files with 162 additions and 8 deletions

View File

@ -2,6 +2,7 @@ package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@ -17,7 +18,9 @@ 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.common.web.core.BaseController;
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;
@ -27,6 +30,7 @@ import org.dromara.project.service.IUserProjectRelevancyService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
@ -46,6 +50,7 @@ public class UserProjectRelevancyController extends BaseController {
/**
* 查询系统用户与项目关联列表
*/
@Tag(name = "查询用户与项目关联列表")
@SaCheckPermission("project:projectRelevancy:list")
@GetMapping("/list")
public TableDataInfo<UserProjectRelevancyVo> list(UserProjectRelevancyBo bo, PageQuery pageQuery) {
@ -55,6 +60,7 @@ public class UserProjectRelevancyController extends BaseController {
/**
* 查询登录用户与项目关联列表
*/
@Tag(name = "查询登录用户与项目关联列表")
@SaCheckPermission("project:projectRelevancy:list")
@GetMapping("/login/list")
public R<List<LoginUserProjectRelevancyResp>> listByLoginUser() {
@ -65,6 +71,7 @@ public class UserProjectRelevancyController extends BaseController {
/**
* 查询登录用户与项目关联分页
*/
@Tag(name = "查询登录用户与项目关联分页")
@SaCheckPermission("project:projectRelevancy:list")
@GetMapping("/login/page")
public R<Page<UserProjectRelevancyVo>> pageByLoginUser(UserProjectRelevancyQueryReq req) {
@ -75,6 +82,7 @@ public class UserProjectRelevancyController extends BaseController {
/**
* 导出系统用户与项目关联列表
*/
@Tag(name = "导出用户与项目关联列表")
@SaCheckPermission("project:projectRelevancy:export")
@Log(title = "系统用户与项目关联", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ -88,6 +96,7 @@ public class UserProjectRelevancyController extends BaseController {
*
* @param id 主键
*/
@Tag(name = "获取用户与项目关联详细信息")
@SaCheckPermission("project:projectRelevancy:query")
@GetMapping("/{id}")
public R<UserProjectRelevancyVo> getInfo(@NotNull(message = "主键不能为空")
@ -98,6 +107,7 @@ public class UserProjectRelevancyController extends BaseController {
/**
* 新增系统用户与项目关联
*/
@Tag(name = "新增用户与项目关联")
@SaCheckPermission("project:projectRelevancy:add")
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
@RepeatSubmit()
@ -106,9 +116,53 @@ public class UserProjectRelevancyController extends BaseController {
return R.ok(userProjectRelevancyService.insertByBo(req));
}
/**
* 新增系统用户与项目列表关联
*/
@Tag(name = "新增用户与项目列表关联")
@SaCheckPermission("project:projectRelevancy:add")
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
@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);
return R.ok(result);
}
/**
* 移除系统用户与项目列表关联
*/
@Tag(name = "移除用户与项目列表关联")
@SaCheckPermission("project:projectRelevancy:remove")
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
@RepeatSubmit()
@DeleteMapping("/remove/project/list")
public R<Boolean> removeBatchByProjectList(@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.removeBatchByIds(userProjectRelevancyList);
return R.ok(result);
}
/**
* 修改系统用户与项目关联
*/
@Tag(name = "修改用户与项目关联")
@SaCheckPermission("project:projectRelevancy:edit")
@Log(title = "系统用户与项目关联", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@ -122,6 +176,7 @@ public class UserProjectRelevancyController extends BaseController {
*
* @param ids 主键串
*/
@Tag(name = "删除用户与项目关联")
@SaCheckPermission("project:projectRelevancy:remove")
@Log(title = "系统用户与项目关联", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")

View File

@ -55,6 +55,16 @@ public class Project extends BaseEntity {
*/
private String picUrl;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/

View File

@ -0,0 +1,28 @@
package org.dromara.project.domain.req.project;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lilemy
* @date 2025/3/5 17:16
*/
@Data
public class ProjectBatchByProjectListReq implements Serializable {
@Serial
private static final long serialVersionUID = -3366498681076059844L;
/**
* 用户ID
*/
private Long userId;
/**
* 项目ID列表
*/
private Long[] projectIdList;
}

View File

@ -35,6 +35,16 @@ public class ProjectCreateReq implements Serializable {
*/
private String picUrl;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/

View File

@ -43,6 +43,16 @@ public class ProjectQueryReq extends PageRequest implements Serializable {
*/
private Long status;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/

View File

@ -16,7 +16,7 @@ public class ProjectUpdateReq implements Serializable {
private static final long serialVersionUID = 3431952359907567659L;
/**
*
* id
*/
private Long id;
@ -45,6 +45,16 @@ public class ProjectUpdateReq implements Serializable {
*/
private String picUrl;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/

View File

@ -12,7 +12,6 @@ import java.io.Serial;
import java.io.Serializable;
/**
* 项目视图对象 project
*
@ -64,6 +63,18 @@ public class ProjectVo implements Serializable {
@ExcelProperty(value = "项目图片")
private String picUrl;
/**
* 经度
*/
@ExcelProperty(value = "经度")
private String lng;
/**
* 纬度
*/
@ExcelProperty(value = "纬度")
private String lat;
/**
* 备注
*/

View File

@ -14,7 +14,9 @@ import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
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.ProjectBo;
import org.dromara.project.domain.req.project.ProjectCreateReq;
import org.dromara.project.domain.req.project.ProjectQueryReq;
@ -22,7 +24,10 @@ import org.dromara.project.domain.req.project.ProjectUpdateReq;
import org.dromara.project.domain.vo.ProjectVo;
import org.dromara.project.mapper.ProjectMapper;
import org.dromara.project.service.IProjectService;
import org.dromara.project.service.IUserProjectRelevancyService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.Collection;
@ -41,6 +46,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
@Resource
private ProjectMapper baseMapper;
@Resource
private ISysUserService userService;
@Lazy
@Resource
private IUserProjectRelevancyService userProjectRelevancyService;
/**
* 查询项目
*
@ -205,8 +217,18 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
if (!save) {
throw new ServiceException("新增项目失败,数据库异常", HttpStatus.ERROR);
}
// 返回新写入的数据 id
return project.getId();
Long projectId = project.getId();
Long userId = LoginHelper.getUserId();
// 同步保存用户与项目关联
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
userProjectRelevancy.setUserId(userId);
userProjectRelevancy.setProjectId(projectId);
boolean saveRelevancy = userProjectRelevancyService.save(userProjectRelevancy);
if (!saveRelevancy) {
throw new ServiceException("新增用户与项目关联失败,数据库异常", HttpStatus.ERROR);
}
// 返回新写入的数据 projectId
return projectId;
}
/**

View File

@ -26,7 +26,6 @@ import org.dromara.project.domain.vo.UserProjectRelevancyVo;
import org.dromara.project.mapper.UserProjectRelevancyMapper;
import org.dromara.project.service.IProjectService;
import org.dromara.project.service.IUserProjectRelevancyService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -47,9 +46,6 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
@Resource
private UserProjectRelevancyMapper baseMapper;
@Resource
private ISysUserService userService;
@Resource
private IProjectService projectService;

View File

@ -9,6 +9,8 @@ create table `project`
`p_id` bigint null comment '父项目id',
`status` tinyint(4) default 0 null comment '状态0正常 1停用',
`pic_url` varchar(255) null comment '项目图片',
`lng` varchar(20) null COMMENT '经度',
`lat` varchar(20) null COMMENT '纬度',
`remark` varchar(500) null comment '备注',
`type` varchar(20) null comment '项目类型',
`is_type` tinyint(4) null comment '项目类型1光伏 2风电',