完成项目、用户与项目关系模块
This commit is contained in:
@ -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}")
|
||||
|
@ -55,6 +55,16 @@ public class Project extends BaseEntity {
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -35,6 +35,16 @@ public class ProjectCreateReq implements Serializable {
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
@ -43,6 +43,16 @@ public class ProjectQueryReq extends PageRequest implements Serializable {
|
||||
*/
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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风电)',
|
||||
|
Reference in New Issue
Block a user