提交 b7dc9dd1 authored 作者: hzh's avatar hzh

代码优化

上级 c872fd93
......@@ -24,11 +24,11 @@ public interface IBaseService<V, B, T> {
V queryById(Long id);
/**
* 分页查询活动机票订单列表
* 分页查询
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 活动机票订单分页列表
* @return 分页列表
*/
TableDataInfo<V> queryPageList(B bo, PageQuery pageQuery);
......
......@@ -13,6 +13,7 @@ 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.system.domain.bo.SysUserProjectBo;
import org.dromara.system.domain.bo.SysUserProjectInsertBo;
import org.dromara.system.domain.vo.SysUserProjectVo;
import org.dromara.system.domain.vo.UserProjectVo;
import org.dromara.system.service.ISysUserProjectService;
......@@ -67,6 +68,17 @@ public class SysUserProjectController extends BaseController {
return toAjax(sysUserProjectService.insertByBo(bo));
}
/**
* 新增用户项目
*/
@SaCheckPermission("system:userProject:add")
@Log(title = "用户项目", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/addProjectUser")
public R<Void> addProjectUser(@Validated(AddGroup.class) @RequestBody SysUserProjectInsertBo bo) {
return toAjax(sysUserProjectService.insert(bo));
}
/**
* 删除用户项目
*
......
package org.dromara.system.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
......@@ -32,6 +34,11 @@ public class SysUserProject extends TenantEntity {
*/
private Long userId;
/**
* 用户类型
*/
private String userType;
/**
* 项目id
*/
......
......@@ -38,6 +38,11 @@ public class SysUserProjectBo extends BaseEntity {
@NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 用户类型
*/
private String userType;
/**
* 角色id
*/
......
package org.dromara.system.domain.bo;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.xss.Xss;
/**
* 用户项目业务对象 sys_user_project
*
* @author hzh
* @date 2025-06-19
*/
@Data
public class SysUserProjectInsertBo {
/**
* 用户id
*/
private Long userId;
/**
* 项目id
*/
@NotNull(message = "项目id不能为空", groups = {AddGroup.class})
private Long projectId;
/**
* 角色id
*/
@NotNull(message = "角色id不能为空", groups = {AddGroup.class})
private Long roleId;
/**
* 昵称
*/
@Xss(message = "用户名不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户名长度不能超过{max}个字符")
private String nickName;
/**
* 手机号
*/
private String phonenumber;
/**
* 邮箱
*/
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符")
private String email;
/**
* 密码
*/
private String password;
}
......@@ -38,6 +38,11 @@ public class SysUserProjectVo implements Serializable {
@ExcelProperty(value = "用户id")
private Long userId;
/**
* 用户类型
*/
private String userType;
/**
* 项目id
*/
......
......@@ -3,6 +3,7 @@ package org.dromara.system.service;
import org.dromara.common.mybatis.service.IBaseService;
import org.dromara.system.domain.SysUserProject;
import org.dromara.system.domain.bo.SysUserProjectBo;
import org.dromara.system.domain.bo.SysUserProjectInsertBo;
import org.dromara.system.domain.vo.SysUserProjectVo;
import org.dromara.system.domain.vo.UserProjectVo;
......@@ -24,4 +25,11 @@ public interface ISysUserProjectService extends IBaseService<SysUserProjectVo, S
* @return 项目列表
*/
List<UserProjectVo> selectListByUserId(Long userId);
/**
* 添加项目人员
*
* @param bo 数据
*/
void insert(SysUserProjectInsertBo bo);
}
......@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.Objects;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.enums.UserType;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.system.constant.Constant;
......@@ -16,7 +18,9 @@ import org.dromara.system.domain.SysProject;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.SysUserProject;
import org.dromara.system.domain.SysUserRole;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.bo.SysUserProjectBo;
import org.dromara.system.domain.bo.SysUserProjectInsertBo;
import org.dromara.system.domain.vo.SysUserProjectVo;
import org.dromara.system.domain.vo.UserProjectVo;
import org.dromara.system.mapper.SysProjectMapper;
......@@ -98,6 +102,9 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
@Override
public void validEntityBeforeSave(SysUserProject entity) {
super.validEntityBeforeSave(entity);
if (entity.getId() == null) {
entity.setUserType(Optional.ofNullable(sysUserMapper.selectById(entity.getUserId())).map(SysUser::getUserType).orElse(UserType.SYS_USER.getUserType()));
}
//校验用户是否已经存在
List<SysUserProject> supList = baseMapper.selectList(SysUserProject::getUserId, entity.getUserId(), SysUserProject::getProjectId, entity.getProjectId());
SysUserProject sysUserProject = StreamUtils.findFirst(supList, sup -> !Objects.equal(sup.getId(), entity.getId()));
......@@ -144,4 +151,40 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
.eq(SysProject::getStatus, Constant.PROJECT_NORMAL));
return BeanUtil.copyToList(projectList, UserProjectVo.class);
}
@Override
public void insert(SysUserProjectInsertBo bo) {
SysUserProjectBo sup = new SysUserProjectBo();
sup.setProjectId(bo.getProjectId());
sup.setRoleId(bo.getRoleId());
if (bo.getUserId() != null) {
sup.setUserId(bo.getUserId());
} else {
validEntity(bo);
//根据手机号查询是否存在用户信息
SysUser user = sysUserMapper.selectOne(SysUser::getUserType, UserType.PROJECT_USER.getUserType(), SysUser::getPhonenumber, bo.getPhonenumber());
if (user != null) {
sup.setUserId(user.getUserId());
} else {
//新增用户
SysUserBo su = new SysUserBo();
su.setNickName(bo.getNickName());
su.setUserName(bo.getPhonenumber());
su.setPhonenumber(bo.getPhonenumber());
su.setEmail(bo.getEmail());
su.setRoleIds(new Long[]{bo.getRoleId()});
su.setPassword(bo.getPassword());
}
}
}
private void validEntity(SysUserProjectInsertBo bo) {
if (StringUtils.isBlank(bo.getNickName())) {
throw new ServiceException("姓名不能为空");
}
if (StringUtils.isEmpty(bo.getPhonenumber())) {
throw new ServiceException("手机号码不能为空");
}
}
}
......@@ -163,6 +163,7 @@ public class SysUserServiceImpl implements ISysUserService {
.eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId())
.like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
.eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus())
.eq(StringUtils.isNotBlank(user.getUserType()), "u.user_type", user.getUserType())
.like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
.like(StringUtils.isNotBlank(user.getNickName()), "u.nick_name", user.getNickName())
.between(params.get("beginTime") != null && params.get("endTime") != null,
......@@ -178,16 +179,14 @@ public class SysUserServiceImpl implements ISysUserService {
if (StringUtils.isNotBlank(user.getExcludeUserIds())) {
wrapper.notIn("u.user_id", StringUtils.splitList(user.getExcludeUserIds()));
}
if (StringUtils.isNotBlank(user.getUserType())) {
boolean contains = user.getUserType().contains(":");
if (contains) {
wrapper.eq("u.user_type", user.getUserType());
} else {
wrapper.likeRight("u.user_type", user.getUserType());
Object projectId = params.get("projectId");
if (projectId != null) {
List<SysUserProject> supList = sysUserProjectMapper.selectList(SysUserProject::getProjectId, projectId);
wrapper.in("u.user_id", CollectionUtils.isEmpty(supList) ? List.of(-1L) : StreamUtils.toList(supList, SysUserProject::getUserId));
}
}
if (params.get("excludeProjectId") != null) {
List<SysUserProject> supList = sysUserProjectMapper.selectList(SysUserProject::getProjectId, params.get("excludeProjectId"));
Object excludeProjectId = params.get("excludeProjectId");
if (excludeProjectId != null) {
List<SysUserProject> supList = sysUserProjectMapper.selectList(SysUserProject::getProjectId, excludeProjectId);
wrapper.notIn("u.user_id", CollectionUtils.isEmpty(supList) ? List.of(-1L) : StreamUtils.toList(supList, SysUserProject::getUserId));
}
return wrapper;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论