Commit 2a473681 authored by 施翔轲's avatar 施翔轲

修复批量新增企业普通管理员账号手机号重复问题

parent 22d5962b
......@@ -104,10 +104,12 @@ public class SysTenantController extends BaseController {
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping("/addTenantAdmin")
public R<Void> addTenantAdmin(@Validated @RequestBody SysTenantAdminBo tenantAdminBo) {
if (!userService.checkPhoneUnique(BeanUtil.toBean(tenantAdminBo, SysUser.class))) {
//校验手机号是否已存在
if (TenantHelper.ignore(()->userService.checkTenantAdminPhoneUnique(tenantAdminBo))) {
return R.fail("新增用户'" + tenantAdminBo.getPhonenumber() + "'失败,手机号码已存在");
}
return toAjax(TenantHelper.ignore(() -> tenantService.addTenantAdmin(tenantAdminBo)));
//return R.ok("手机号验证成功");
}
/**
......
......@@ -3,6 +3,7 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.system.domain.SysUser;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.bo.SysTenantAdminBo;
import com.dsk.system.domain.vo.SysUserImportVo;
import java.util.List;
......@@ -103,6 +104,14 @@ public interface ISysUserService {
*/
boolean checkPhoneUnique(SysUser user);
/**
* 校验企业普通管理员手机号码是否唯一
*
* @param tenantAdminBo 用户信息
* @return 结果
*/
boolean checkTenantAdminPhoneUnique(SysTenantAdminBo tenantAdminBo);
/**
* 校验email是否唯一
*
......
......@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.common.constant.CacheNames;
import com.dsk.common.constant.Constants;
import com.dsk.common.constant.TenantConstants;
import com.dsk.common.constant.UserConstants;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.common.core.domain.entity.SysDictType;
......@@ -281,20 +282,33 @@ public class ISysTenantServiceImpl implements ISysTenantService {
@Transactional(rollbackFor = Exception.class)
public Boolean addTenantAdmin(SysTenantAdminBo tenantAdminBo) {
String tenantId = tenantAdminBo.getTenantId();
// 根据套餐创建角色
Long roleId = createTenantRole(tenantId, tenantAdminBo.getPackageId(),
TenantConstants.TENANT_ADMIN_ROLE_NAME,
TenantConstants.TENANT_ADMIN_ROLE_KEY);
//获取部门ID
Long deptId = deptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
.eq(SysDept::getTenantId, tenantId)).getDeptId();
// 角色和部门关联表
SysRoleDept roleDept = new SysRoleDept();
roleDept.setRoleId(roleId);
roleDept.setDeptId(deptId);
roleDeptMapper.insert(roleDept);
SysRole sysRole = roleMapper.selectOne(new LambdaQueryWrapper<SysRole>()
.eq(SysRole::getStatus, UserConstants.ROLE_NORMAL)
.eq(SysRole::getDelFlag, UserConstants.ROLE_NORMAL)
.eq(SysRole::getTenantId, tenantId)
.eq(SysRole::getRoleKey, TenantConstants.TENANT_ADMIN_ROLE_KEY));
Long roleId = null;
//校验当前企业是否已存在普通管理员角色
if (ObjectUtil.isNull(sysRole)) {
//不存在,则根据套餐创建角色
roleId = createTenantRole(tenantId, tenantAdminBo.getPackageId(),
TenantConstants.TENANT_ADMIN_ROLE_NAME,
TenantConstants.TENANT_ADMIN_ROLE_KEY);
// 角色和部门关联表
SysRoleDept roleDept = new SysRoleDept();
roleDept.setRoleId(roleId);
roleDept.setDeptId(deptId);
roleDeptMapper.insert(roleDept);
} else {
roleId = sysRole.getRoleId();
}
// 创建系统用户
SysUser user = new SysUser();
......@@ -316,25 +330,9 @@ public class ISysTenantServiceImpl implements ISysTenantService {
userRole.setRoleId(roleId);
userRoleMapper.insert(userRole);
String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID;
//List<SysDictType> dictTypeList = dictTypeMapper.selectList(
// new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getTenantId, defaultTenantId));
//List<SysDictData> dictDataList = dictDataMapper.selectList(
// new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getTenantId, defaultTenantId));
//for (SysDictType dictType : dictTypeList) {
// dictType.setDictId(null);
// dictType.setTenantId(tenantId);
//}
//for (SysDictData dictData : dictDataList) {
// dictData.setDictCode(null);
// dictData.setTenantId(tenantId);
//}
//dictTypeMapper.insertBatch(dictTypeList);
//dictDataMapper.insertBatch(dictDataList);
List<SysConfig> sysConfigList = configMapper.selectList(
new LambdaQueryWrapper<SysConfig>()
.eq(SysConfig::getTenantId, defaultTenantId)
.eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID)
.eq(SysConfig::getConfigType, "Y"));
for (SysConfig config : sysConfigList) {
config.setConfigId(null);
......
......@@ -26,6 +26,7 @@ import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.ValidatorUtils;
import com.dsk.system.domain.*;
import com.dsk.system.domain.bo.SysTenantAdminBo;
import com.dsk.system.domain.vo.SysUserImportVo;
import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysUserService;
......@@ -68,9 +69,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
public Long queryTenantAdminNumCreatedByDSK(Long tenantId) {
LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserId)
.eq(SysUser::getStatus, UserConstants.USER_NORMAL)
.eq(SysUser::getTenantId, tenantId)
.eq(SysUser::getCreateBy, "suadmin");
.eq(SysUser::getStatus, UserConstants.NORMAL)
.eq(SysUser::getDelFlag, UserConstants.NORMAL)
.eq(SysUser::getTenantId, tenantId);
//.eq(SysUser::getCreateBy, "suadmin");
return baseMapper.selectCount(queryWrapper);
}
......@@ -252,6 +254,20 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
return !exist;
}
/**
* 校验企业普通管理员手机号码是否唯一
*
* @param tenantAdminBo 用户信息
* @return 结果
*/
@Override
public boolean checkTenantAdminPhoneUnique(SysTenantAdminBo tenantAdminBo) {
return baseMapper.exists(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getTenantId, tenantAdminBo.getTenantId())
.eq(SysUser::getPhonenumber, tenantAdminBo.getPhonenumber())
.eq(SysUser::getStatus, UserConstants.NORMAL));
}
/**
* 校验email是否唯一
*
......@@ -424,9 +440,10 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
@Transactional(rollbackFor = Exception.class)
public int updateUser(SysUser user) {
Long userId = user.getUserId();
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(user);
if (LoginHelper.isTenantAdmin(LoginHelper.getLoginUser().getRolePermission())) {
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(user);
}
// 删除用户与角色关联
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
// 新增用户与角色管理
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment