提交 7c3917c0 authored 作者: hzh's avatar hzh

代码优化

上级 b7dc9dd1
...@@ -11,7 +11,6 @@ import lombok.NoArgsConstructor; ...@@ -11,7 +11,6 @@ import lombok.NoArgsConstructor;
import org.dromara.common.core.constant.TenantConstants; import org.dromara.common.core.constant.TenantConstants;
import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.enums.UserType; import org.dromara.common.core.enums.UserType;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mall.enums.TerminalEnum; import org.dromara.common.mall.enums.TerminalEnum;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
...@@ -66,9 +65,6 @@ public class LoginHelper { ...@@ -66,9 +65,6 @@ public class LoginHelper {
.setExtra(USER_TYPE, loginUser.getUserType()) .setExtra(USER_TYPE, loginUser.getUserType())
); );
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
if (StringUtils.contains(loginUser.getUserType(), UserType.PROJECT_USER.getUserType())) {
StpUtil.getTokenSession().set(PROJECT_ID, Long.valueOf(StringUtils.splitList(loginUser.getUserType(), ":").get(1)));
}
} }
/** /**
......
...@@ -57,7 +57,6 @@ public class SysUserController extends BaseController { ...@@ -57,7 +57,6 @@ public class SysUserController extends BaseController {
private final ISysRoleService roleService; private final ISysRoleService roleService;
private final ISysPostService postService; private final ISysPostService postService;
private final ISysDeptService deptService; private final ISysDeptService deptService;
private final ISysTenantService tenantService;
private final ISysUserProjectService userProjectService; private final ISysUserProjectService userProjectService;
@DubboReference @DubboReference
private RemoteDeptOrderApproveService remoteDeptOrderApproveService; private RemoteDeptOrderApproveService remoteDeptOrderApproveService;
...@@ -179,10 +178,10 @@ public class SysUserController extends BaseController { ...@@ -179,10 +178,10 @@ public class SysUserController extends BaseController {
if (su == null) { if (su == null) {
return R.ok(uoa); return R.ok(uoa);
} }
if (su.getUserType().contains(SysUser.PROJECT_USER_TYPE)) { if (su.getUserType().contains(SysUser.PROJECT_USER_TYPE) && projectId == null) {
uoa.setStaffId(su.getCreateBy()); uoa.setStaffId(su.getCreateBy());
su = userService.selectUserById(uoa.getStaffId()); su = userService.selectUserById(uoa.getStaffId());
} else if (StringUtils.equals(su.getUserType(), UserType.SYS_USER.getUserType()) && projectId != null) { } else if (projectId != null) {
SysUserProjectBo sup = new SysUserProjectBo(); SysUserProjectBo sup = new SysUserProjectBo();
sup.setUserId(LoginHelper.getUserId()); sup.setUserId(LoginHelper.getUserId());
sup.setProjectId(projectId); sup.setProjectId(projectId);
...@@ -242,20 +241,6 @@ public class SysUserController extends BaseController { ...@@ -242,20 +241,6 @@ public class SysUserController extends BaseController {
@Log(title = "用户管理", businessType = BusinessType.INSERT) @Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public R<Void> add(@Validated @RequestBody SysUserBo user) { public R<Void> add(@Validated @RequestBody SysUserBo user) {
deptService.checkDeptDataScope(user.getDeptId());
if (!userService.checkUserNameUnique(user)) {
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (TenantHelper.isEnable()) {
if (!tenantService.checkAccountBalance(TenantHelper.getTenantId())) {
return R.fail("当前租户下用户名额不足,请联系管理员");
}
}
user.setPassword(BCrypt.hashpw(user.getPassword()));
return toAjax(userService.insertUser(user)); return toAjax(userService.insertUser(user));
} }
......
...@@ -76,7 +76,8 @@ public class SysUserProjectController extends BaseController { ...@@ -76,7 +76,8 @@ public class SysUserProjectController extends BaseController {
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/addProjectUser") @PostMapping("/addProjectUser")
public R<Void> addProjectUser(@Validated(AddGroup.class) @RequestBody SysUserProjectInsertBo bo) { public R<Void> addProjectUser(@Validated(AddGroup.class) @RequestBody SysUserProjectInsertBo bo) {
return toAjax(sysUserProjectService.insert(bo)); sysUserProjectService.insert(bo);
return R.ok();
} }
/** /**
......
...@@ -4,8 +4,10 @@ import jakarta.validation.constraints.Email; ...@@ -4,8 +4,10 @@ import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.xss.Xss; import org.dromara.common.core.xss.Xss;
import org.dromara.common.mybatis.core.domain.BaseEntity;
/** /**
* 用户项目业务对象 sys_user_project * 用户项目业务对象 sys_user_project
...@@ -14,13 +16,15 @@ import org.dromara.common.core.xss.Xss; ...@@ -14,13 +16,15 @@ import org.dromara.common.core.xss.Xss;
* @date 2025-06-19 * @date 2025-06-19
*/ */
@Data @Data
public class SysUserProjectInsertBo { @Accessors(chain = true)
public class SysUserProjectInsertBo extends BaseEntity {
/** /**
* 用户id * 用户id
*/ */
private Long userId; private Long userId;
/** /**
* 项目id * 项目id
*/ */
......
...@@ -15,16 +15,16 @@ import org.dromara.system.api.domain.vo.RemoteProjectVo; ...@@ -15,16 +15,16 @@ import org.dromara.system.api.domain.vo.RemoteProjectVo;
import org.dromara.system.constant.Constant; import org.dromara.system.constant.Constant;
import org.dromara.system.domain.SysProject; import org.dromara.system.domain.SysProject;
import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.SysUserProject;
import org.dromara.system.mapper.SysProjectMapper; import org.dromara.system.mapper.SysProjectMapper;
import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.mapper.SysUserProjectMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE_SPLIT;
/** /**
* @author hzh * @author hzh
* @date 2025-06-11 * @date 2025-06-11
...@@ -36,21 +36,26 @@ public class RemoteProjectServiceImpl implements RemoteProjectService { ...@@ -36,21 +36,26 @@ public class RemoteProjectServiceImpl implements RemoteProjectService {
private final SysProjectMapper sysProjectMapper; private final SysProjectMapper sysProjectMapper;
private final SysUserMapper sysUserMapper; private final SysUserMapper sysUserMapper;
private final SysUserProjectMapper sysUserProjectMapper;
@Override @Override
public List<RemoteProjectVo> queryList(String tenantId, String phone) { public List<RemoteProjectVo> queryList(String tenantId, String phone) {
List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>() List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
.eq(StringUtils.isNotEmpty(tenantId), SysUser::getTenantId, tenantId) .eq(StringUtils.isNotEmpty(tenantId), SysUser::getTenantId, tenantId)
.eq(StringUtils.isNotEmpty(phone), SysUser::getPhonenumber, phone) .eq(StringUtils.isNotEmpty(phone), SysUser::getPhonenumber, phone)
.likeRight(SysUser::getUserType, SysUser.PROJECT_USER_TYPE) .eq(SysUser::getUserType, SysUser.PROJECT_USER_TYPE)
.eq(SysUser::getStatus, UserConstants.USER_NORMAL) .eq(SysUser::getStatus, UserConstants.USER_NORMAL)
.select(SysUser::getUserType) .select(SysUser::getUserId)
); );
Set<Long> projectIds = StreamUtils.toSet(userList, u -> { if (CollectionUtil.isEmpty(userList)) {
String[] split = u.getUserType().split(PROJECT_USER_TYPE_SPLIT); return List.of();
return Long.parseLong(split[1]); }
}); List<SysUserProject> supList = sysUserProjectMapper.selectList(new LambdaQueryWrapper<SysUserProject>()
return CollectionUtil.isEmpty(projectIds) ? List.of() : BeanUtil.copyToList(StreamUtils.filter(sysProjectMapper.selectByIds(projectIds), sp -> StringUtils.equals(sp.getStatus(), Constant.PROJECT_NORMAL)), RemoteProjectVo.class); .in(SysUserProject::getUserId, StreamUtils.toList(userList, SysUser::getUserId)));
Set<Long> projectIds = StreamUtils.toSet(supList, SysUserProject::getProjectId);
return CollectionUtil.isEmpty(projectIds) ?
List.of() :
BeanUtil.copyToList(StreamUtils.filter(sysProjectMapper.selectByIds(projectIds), sp -> StringUtils.equals(sp.getStatus(), Constant.PROJECT_NORMAL)), RemoteProjectVo.class);
} }
@Override @Override
......
package org.dromara.system.listener; package org.dromara.system.listener;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HtmlUtil; import cn.hutool.http.HtmlUtil;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener; import org.dromara.common.excel.core.ExcelListener;
import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.controller.system.SysUserController; import org.dromara.system.domain.bo.SysUserProjectInsertBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysProjectUserImportVo; import org.dromara.system.domain.vo.SysProjectUserImportVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysConfigService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserProjectService;
import java.util.List; import java.util.List;
import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE;
import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE_SPLIT;
/** /**
* 项目用户自定义导入 * 项目用户自定义导入
* *
...@@ -36,12 +28,12 @@ import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE_SPLIT; ...@@ -36,12 +28,12 @@ import static org.dromara.system.domain.SysUser.PROJECT_USER_TYPE_SPLIT;
@Slf4j @Slf4j
public class SysProjectUserImportListener extends AnalysisEventListener<SysProjectUserImportVo> implements ExcelListener<SysProjectUserImportVo> { public class SysProjectUserImportListener extends AnalysisEventListener<SysProjectUserImportVo> implements ExcelListener<SysProjectUserImportVo> {
private final ISysUserService userService; private final ISysUserProjectService sysUserProjectService;
private final SysUserController sysUserController;
private final Long operUserId; private final Long operUserId;
private final Long roleId; private final Long roleId;
private final String userType;
private final String operTenantId; private final Long projectId;
private final String initPassword;
private int successNum = 0; private int successNum = 0;
private int failureNum = 0; private int failureNum = 0;
...@@ -49,46 +41,31 @@ public class SysProjectUserImportListener extends AnalysisEventListener<SysProje ...@@ -49,46 +41,31 @@ public class SysProjectUserImportListener extends AnalysisEventListener<SysProje
private final StringBuilder failureMsg = new StringBuilder(); private final StringBuilder failureMsg = new StringBuilder();
public SysProjectUserImportListener(Long projectId, Long roleId) { public SysProjectUserImportListener(Long projectId, Long roleId) {
this.userService = SpringUtils.getBean(ISysUserService.class); this.sysUserProjectService = SpringUtils.getBean(ISysUserProjectService.class);
this.sysUserController = SpringUtils.getBean(SysUserController.class);
this.operUserId = LoginHelper.getUserId(); this.operUserId = LoginHelper.getUserId();
this.operTenantId = LoginHelper.getTenantId(); this.projectId = projectId;
this.userType = PROJECT_USER_TYPE + PROJECT_USER_TYPE_SPLIT + projectId;
this.roleId = roleId; this.roleId = roleId;
this.initPassword =SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
} }
@Override @Override
public void invoke(SysProjectUserImportVo userVo, AnalysisContext context) { public void invoke(SysProjectUserImportVo vo, AnalysisContext context) {
SysUserVo sysUser = this.userService.selectUserByUserName(userVo.getPhonenumber(), userType, operTenantId);
try { try {
// 验证是否存在这个用户 String password = StringUtils.isBlank(vo.getPassword()) ?initPassword:vo.getPassword();
if (ObjectUtil.isNull(sysUser)) { SysUserProjectInsertBo bo = new SysUserProjectInsertBo()
SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); .setProjectId(projectId)
user.setUserName(user.getPhonenumber()); .setRoleId(roleId)
user.setUserType(userType); .setNickName(vo.getNickName())
ValidatorUtils.validate(user); .setPhonenumber(vo.getPhonenumber())
String password = user.getPassword(); .setEmail(vo.getEmail())
if (StringUtils.isBlank(password)) { .setPassword(password);
password = user.getPhonenumber(); bo.setCreateBy(operUserId);
} sysUserProjectService.insert(bo);
user.setPassword(password.trim());
user.setCreateBy(operUserId);
if (roleId != null) {
user.setRoleIds(new Long[]{roleId});
}
R<Void> r = sysUserController.add(user);
if (r.getCode() == R.FAIL) {
throw new ServiceException(r.getMsg());
}
successNum++; successNum++;
successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); successMsg.append("<br/>").append(successNum).append("、账号 ").append(vo.getPhonenumber()).append(" 导入成功");
} else {
failureNum++;
failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在");
}
} catch (Exception e) { } catch (Exception e) {
failureNum++; failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + HtmlUtil.cleanHtmlTag(userVo.getPhonenumber()) + " 导入失败:"; String msg = "<br/>" + failureNum + "、账号 " + HtmlUtil.cleanHtmlTag(vo.getPhonenumber()) + " 导入失败:";
String message = e.getMessage(); String message = e.getMessage();
if (e instanceof ConstraintViolationException cvException) { if (e instanceof ConstraintViolationException cvException) {
message = StreamUtils.join(cvException.getConstraintViolations(), ConstraintViolation::getMessage, ", "); message = StreamUtils.join(cvException.getConstraintViolations(), ConstraintViolation::getMessage, ", ");
......
...@@ -9,7 +9,6 @@ import com.alibaba.excel.event.AnalysisEventListener; ...@@ -9,7 +9,6 @@ import com.alibaba.excel.event.AnalysisEventListener;
import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
...@@ -18,7 +17,6 @@ import org.dromara.common.core.utils.ValidatorUtils; ...@@ -18,7 +17,6 @@ import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener; import org.dromara.common.excel.core.ExcelListener;
import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.controller.system.SysUserController;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysUserImportVo; import org.dromara.system.domain.vo.SysUserImportVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
...@@ -36,7 +34,6 @@ import java.util.Objects; ...@@ -36,7 +34,6 @@ import java.util.Objects;
public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo> implements ExcelListener<SysUserImportVo> { public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo> implements ExcelListener<SysUserImportVo> {
private final ISysUserService userService; private final ISysUserService userService;
private final SysUserController sysUserController;
private final ISysDeptService sysDeptService; private final ISysDeptService sysDeptService;
private final ISysPostService sysPostService; private final ISysPostService sysPostService;
private final ISysRoleService sysRoleService; private final ISysRoleService sysRoleService;
...@@ -55,7 +52,6 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo ...@@ -55,7 +52,6 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
public SysUserImportListener(Boolean isUpdateSupport) { public SysUserImportListener(Boolean isUpdateSupport) {
String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword"); String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
this.userService = SpringUtils.getBean(ISysUserService.class); this.userService = SpringUtils.getBean(ISysUserService.class);
this.sysUserController = SpringUtils.getBean(SysUserController.class);
this.sysDeptService = SpringUtils.getBean(ISysDeptService.class); this.sysDeptService = SpringUtils.getBean(ISysDeptService.class);
this.sysPostService = SpringUtils.getBean(ISysPostService.class); this.sysPostService = SpringUtils.getBean(ISysPostService.class);
this.sysRoleService = SpringUtils.getBean(ISysRoleService.class); this.sysRoleService = SpringUtils.getBean(ISysRoleService.class);
...@@ -87,11 +83,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo ...@@ -87,11 +83,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
if (StringUtils.isNotEmpty(userVo.getRoleName())) { if (StringUtils.isNotEmpty(userVo.getRoleName())) {
user.setRoleIds(sysRoleService.selectRoleIdsByNameList(StrUtil.split(userVo.getRoleName(), "/")).toArray(Long[]::new)); user.setRoleIds(sysRoleService.selectRoleIdsByNameList(StrUtil.split(userVo.getRoleName(), "/")).toArray(Long[]::new));
} }
sysUserController.add(user); userService.insertUser(user);
R<Void> r = sysUserController.add(user);
if (r.getCode() == R.FAIL) {
throw new ServiceException(r.getMsg());
}
successNum++; successNum++;
successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功");
} else if (isUpdateSupport) { } else if (isUpdateSupport) {
......
...@@ -28,6 +28,7 @@ import org.dromara.system.mapper.SysUserMapper; ...@@ -28,6 +28,7 @@ import org.dromara.system.mapper.SysUserMapper;
import org.dromara.system.mapper.SysUserProjectMapper; import org.dromara.system.mapper.SysUserProjectMapper;
import org.dromara.system.mapper.SysUserRoleMapper; import org.dromara.system.mapper.SysUserRoleMapper;
import org.dromara.system.service.ISysUserProjectService; import org.dromara.system.service.ISysUserProjectService;
import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
...@@ -49,6 +50,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec ...@@ -49,6 +50,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
private final SysUserRoleMapper userRoleMapper; private final SysUserRoleMapper userRoleMapper;
private final SysUserMapper sysUserMapper; private final SysUserMapper sysUserMapper;
private final SysProjectMapper sysProjectMapper; private final SysProjectMapper sysProjectMapper;
private final ISysUserService userService;
@Override @Override
public BaseMapperPlus<SysUserProject, SysUserProjectVo> mapper() { public BaseMapperPlus<SysUserProject, SysUserProjectVo> mapper() {
...@@ -61,6 +63,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec ...@@ -61,6 +63,7 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
LambdaQueryWrapper<SysUserProject> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SysUserProject> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getUserId() != null, SysUserProject::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, SysUserProject::getUserId, bo.getUserId());
lqw.eq(bo.getProjectId() != null, SysUserProject::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, SysUserProject::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getUserType()), SysUserProject::getUserType, bo.getUserType());
lqw.eq(bo.getRoleId() != null, SysUserProject::getRoleId, bo.getRoleId()); lqw.eq(bo.getRoleId() != null, SysUserProject::getRoleId, bo.getRoleId());
return lqw; return lqw;
} }
...@@ -172,11 +175,16 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec ...@@ -172,11 +175,16 @@ public class SysUserProjectServiceImpl extends AbstractBaseService<SysUserProjec
su.setUserName(bo.getPhonenumber()); su.setUserName(bo.getPhonenumber());
su.setPhonenumber(bo.getPhonenumber()); su.setPhonenumber(bo.getPhonenumber());
su.setEmail(bo.getEmail()); su.setEmail(bo.getEmail());
su.setRoleIds(new Long[]{bo.getRoleId()});
su.setPassword(bo.getPassword()); su.setPassword(bo.getPassword());
su.setCreateBy(bo.getCreateBy());
userService.insertUser(su);
//查询用户
user = sysUserMapper.selectOne(SysUser::getUserType, UserType.PROJECT_USER.getUserType(), SysUser::getPhonenumber, bo.getPhonenumber());
sup.setUserId(user.getUserId());
} }
} }
sup.setUserType(UserType.PROJECT_USER.getUserType());
insertByBo(sup);
} }
private void validEntity(SysUserProjectInsertBo bo) { private void validEntity(SysUserProjectInsertBo bo) {
......
package org.dromara.system.service.impl; package org.dromara.system.service.impl;
import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
...@@ -15,7 +16,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -15,7 +16,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.CacheNames;
import org.dromara.common.core.constant.UserConstants; import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.enums.UserType; import org.dromara.common.core.enums.UserType;
...@@ -29,8 +29,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; ...@@ -29,8 +29,6 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.server.api.RemoteServerService;
import org.dromara.server.api.domain.RemoteUser;
import org.dromara.system.domain.*; import org.dromara.system.domain.*;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.SysPostVo;
...@@ -38,7 +36,10 @@ import org.dromara.system.domain.vo.SysRoleVo; ...@@ -38,7 +36,10 @@ import org.dromara.system.domain.vo.SysRoleVo;
import org.dromara.system.domain.vo.SysUserExportVo; import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.*; import org.dromara.system.mapper.*;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysTenantService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.IThirdService;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -65,8 +66,9 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -65,8 +66,9 @@ public class SysUserServiceImpl implements ISysUserService {
private final SysUserPostMapper userPostMapper; private final SysUserPostMapper userPostMapper;
private final SysTenantMapper sysTenantMapper; private final SysTenantMapper sysTenantMapper;
private final SysUserProjectMapper sysUserProjectMapper; private final SysUserProjectMapper sysUserProjectMapper;
@DubboReference private final ISysDeptService deptService;
private RemoteServerService remoteServerService; private final ISysTenantService tenantService;
private final IThirdService thirdService;
@Override @Override
public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) { public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
...@@ -411,6 +413,21 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -411,6 +413,21 @@ public class SysUserServiceImpl implements ISysUserService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int insertUser(SysUserBo user) { public int insertUser(SysUserBo user) {
deptService.checkDeptDataScope(user.getDeptId());
if (!checkUserNameUnique(user)) {
throw new ServiceException("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !checkPhoneUnique(user)) {
throw new ServiceException("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail()) && !checkEmailUnique(user)) {
throw new ServiceException("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
if (TenantHelper.isEnable()) {
if (!tenantService.checkAccountBalance(TenantHelper.getTenantId())) {
throw new ServiceException("当前租户下用户名额不足,请联系管理员");
}
}
user.setPassword(BCrypt.hashpw(user.getPassword()));
//新增用户
user.setUserType(StringUtils.isEmpty(user.getUserType()) ? UserType.SYS_USER.getUserType() : user.getUserType()); user.setUserType(StringUtils.isEmpty(user.getUserType()) ? UserType.SYS_USER.getUserType() : user.getUserType());
SysUser sysUser = MapstructUtils.convert(user, SysUser.class); SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
sysUser.setTenantId(LoginHelper.getTenantId()); sysUser.setTenantId(LoginHelper.getTenantId());
...@@ -422,7 +439,7 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -422,7 +439,7 @@ public class SysUserServiceImpl implements ISysUserService {
// 新增用户与角色管理 // 新增用户与角色管理
insertUserRole(user, false); insertUserRole(user, false);
//保存用户信息 //保存用户信息
saveOrUpdateYsUser(sysUser); thirdService.saveOrUpdateYsUser(sysUser);
return rows; return rows;
} }
...@@ -440,29 +457,12 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -440,29 +457,12 @@ public class SysUserServiceImpl implements ISysUserService {
sysUser.setTenantId(tenantId); sysUser.setTenantId(tenantId);
boolean result = baseMapper.insert(sysUser) > 0; boolean result = baseMapper.insert(sysUser) > 0;
if (result) { if (result) {
saveOrUpdateYsUser(sysUser); thirdService.saveOrUpdateYsUser(sysUser);
} }
user.setUserId(sysUser.getUserId()); user.setUserId(sysUser.getUserId());
return result; return result;
} }
/**
* 保存或更新用户信息
*
* @param sysUser 用户信息
*/
@Override
public void saveOrUpdateYsUser(SysUser sysUser) {
remoteServerService.saveOrUpdateUser(
new RemoteUser()
.setSystemUserId(sysUser.getUserId())
.setUserName(sysUser.getUserName())
.setPhoneNumber(sysUser.getPhonenumber())
.setIdCard(sysUser.getIdCard())
.setUserType(sysUser.getUserType())
.setTenantId(sysUser.getTenantId())
);
}
/** /**
* 修改保存用户信息 * 修改保存用户信息
...@@ -484,7 +484,7 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -484,7 +484,7 @@ public class SysUserServiceImpl implements ISysUserService {
if (flag < 1) { if (flag < 1) {
throw new ServiceException("修改用户" + user.getUserName() + "信息失败"); throw new ServiceException("修改用户" + user.getUserName() + "信息失败");
} }
saveOrUpdateYsUser(baseMapper.selectById(user.getUserId())); thirdService.saveOrUpdateYsUser(baseMapper.selectById(user.getUserId()));
return flag; return flag;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论