Commit 7949dea9 authored by 施翔轲's avatar 施翔轲

完成租户相关改造、联调

parent 11528755
package com.dsk.web.controller.system; package com.dsk.web.controller.system;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import com.baomidou.lock.annotation.Lock4j; import com.baomidou.lock.annotation.Lock4j;
...@@ -15,7 +14,6 @@ import com.dsk.common.core.validate.AddGroup; ...@@ -15,7 +14,6 @@ import com.dsk.common.core.validate.AddGroup;
import com.dsk.common.core.validate.EditGroup; import com.dsk.common.core.validate.EditGroup;
import com.dsk.common.enums.BusinessType; import com.dsk.common.enums.BusinessType;
import com.dsk.common.tenant.helper.TenantHelper; import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.bo.SysTenantBo; import com.dsk.system.domain.bo.SysTenantBo;
import com.dsk.system.domain.vo.SysTenantVo; import com.dsk.system.domain.vo.SysTenantVo;
import com.dsk.system.service.ISysTenantService; import com.dsk.system.service.ISysTenantService;
...@@ -23,12 +21,10 @@ import lombok.RequiredArgsConstructor; ...@@ -23,12 +21,10 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
/** /**
* 租户管理 * 租户管理
...@@ -53,26 +49,17 @@ public class SysTenantController extends BaseController { ...@@ -53,26 +49,17 @@ public class SysTenantController extends BaseController {
return tenantService.queryPageList(bo, pageQuery); return tenantService.queryPageList(bo, pageQuery);
} }
// /**
@PostMapping("/init") // * 导出租户列表
public R<Void> init(@Validated(AddGroup.class) @RequestBody SysTenantBo bo) { // */
// if (!tenantService.checkCompanyNameUnique(bo)) { // @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
// return R.fail("新增租户'" + bo.getCompanyName() + "'失败,企业名称已存在"); // @SaCheckPermission("system:tenant:export")
// } // @Log(title = "租户", businessType = BusinessType.EXPORT)
return toAjax(tenantService.saveTenant(bo)); // @PostMapping("/export")
} // public void export(SysTenantBo bo, HttpServletResponse response) {
// List<SysTenantVo> list = tenantService.queryList(bo);
/** // ExcelUtil.exportExcel(list, "租户", SysTenantVo.class, response);
* 导出租户列表 // }
*/
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenant:export")
@Log(title = "租户", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SysTenantBo bo, HttpServletResponse response) {
List<SysTenantVo> list = tenantService.queryList(bo);
ExcelUtil.exportExcel(list, "租户", SysTenantVo.class, response);
}
/** /**
* 获取租户详细信息 * 获取租户详细信息
...@@ -118,17 +105,17 @@ public class SysTenantController extends BaseController { ...@@ -118,17 +105,17 @@ public class SysTenantController extends BaseController {
return toAjax(tenantService.updateByBo(bo)); return toAjax(tenantService.updateByBo(bo));
} }
/** // /**
* 状态修改 // * 状态修改
*/ // */
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) // @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@SaCheckPermission("system:tenant:edit") // @SaCheckPermission("system:tenant:edit")
@Log(title = "租户", businessType = BusinessType.UPDATE) // @Log(title = "租户", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus") // @PutMapping("/changeStatus")
public R<Void> changeStatus(@RequestBody SysTenantBo bo) { // public R<Void> changeStatus(@RequestBody SysTenantBo bo) {
tenantService.checkTenantAllowed(bo.getTenantId()); // tenantService.checkTenantAllowed(bo.getTenantId());
return toAjax(tenantService.updateTenantStatus(bo)); // return toAjax(tenantService.updateTenantStatus(bo));
} // }
/** /**
* 删除租户 * 删除租户
...@@ -143,17 +130,17 @@ public class SysTenantController extends BaseController { ...@@ -143,17 +130,17 @@ public class SysTenantController extends BaseController {
return toAjax(tenantService.deleteWithValidByIds(Arrays.asList(ids), Boolean.TRUE)); return toAjax(tenantService.deleteWithValidByIds(Arrays.asList(ids), Boolean.TRUE));
} }
/** // /**
* 动态切换租户 // * 动态切换租户
* // *
* @param tenantId 租户ID // * @param tenantId 租户ID
*/ // */
@SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) // @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY)
@GetMapping("/dynamic/{tenantId}") // @GetMapping("/dynamic/{tenantId}")
public R<Void> dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) { // public R<Void> dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) {
TenantHelper.setDynamic(tenantId); // TenantHelper.setDynamic(tenantId);
return R.ok(); // return R.ok();
} // }
/** /**
* 清除动态租户 * 清除动态租户
......
...@@ -59,11 +59,11 @@ public class SysTenantBo extends BaseEntity { ...@@ -59,11 +59,11 @@ public class SysTenantBo extends BaseEntity {
// @NotBlank(message = "用户名不能为空", groups = {AddGroup.class}) // @NotBlank(message = "用户名不能为空", groups = {AddGroup.class})
// private String username; // private String username;
/** // /**
* 密码(创建系统用户) // * 密码(创建系统用户)
*/ // */
@NotBlank(message = "密码不能为空", groups = {AddGroup.class}) // @NotBlank(message = "密码不能为空", groups = {AddGroup.class})
private String password; // private String password;
/** /**
* 统一社会信用代码 * 统一社会信用代码
...@@ -93,7 +93,7 @@ public class SysTenantBo extends BaseEntity { ...@@ -93,7 +93,7 @@ public class SysTenantBo extends BaseEntity {
/** /**
* 租户套餐编号 * 租户套餐编号
*/ */
@NotNull(message = "租户套餐不能为空", groups = {AddGroup.class}) @NotNull(message = "租户套餐不能为空", groups = {AddGroup.class, EditGroup.class})
private Long packageId; private Long packageId;
/** /**
...@@ -114,7 +114,9 @@ public class SysTenantBo extends BaseEntity { ...@@ -114,7 +114,9 @@ public class SysTenantBo extends BaseEntity {
/** /**
* 用户数量(-1不限制) * 用户数量(-1不限制)
* 即企业规模
*/ */
@NotNull(message = "企业规模不能为空", groups = {AddGroup.class, EditGroup.class})
private Long accountCount; private Long accountCount;
/** /**
......
...@@ -90,6 +90,12 @@ public class SysTenantVo implements Serializable { ...@@ -90,6 +90,12 @@ public class SysTenantVo implements Serializable {
@ExcelProperty(value = "租户套餐编号") @ExcelProperty(value = "租户套餐编号")
private Long packageId; private Long packageId;
/**
* 租户套餐名称
*/
@ExcelProperty(value = "租户套餐名称")
private String packageName;
/** /**
* 开始时间 * 开始时间
*/ */
...@@ -102,6 +108,12 @@ public class SysTenantVo implements Serializable { ...@@ -102,6 +108,12 @@ public class SysTenantVo implements Serializable {
@ExcelProperty(value = "过期时间") @ExcelProperty(value = "过期时间")
private Date expireTime; private Date expireTime;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/** /**
* 用户数量(-1不限制) * 用户数量(-1不限制)
*/ */
......
...@@ -19,10 +19,10 @@ public interface ISysTenantService { ...@@ -19,10 +19,10 @@ public interface ISysTenantService {
*/ */
TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery); TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery);
/** // /**
* 查询租户列表 // * 查询租户列表
*/ // */
List<SysTenantVo> queryList(SysTenantBo bo); // List<SysTenantVo> queryList(SysTenantBo bo);
/** /**
* 查询租户 * 查询租户
...@@ -49,10 +49,10 @@ public interface ISysTenantService { ...@@ -49,10 +49,10 @@ public interface ISysTenantService {
*/ */
Boolean updateByBo(SysTenantBo bo); Boolean updateByBo(SysTenantBo bo);
/** // /**
* 修改租户状态 // * 修改租户状态
*/ // */
int updateTenantStatus(SysTenantBo bo); // int updateTenantStatus(SysTenantBo bo);
/** /**
* 校验并批量删除租户信息 * 校验并批量删除租户信息
...@@ -63,7 +63,6 @@ public interface ISysTenantService { ...@@ -63,7 +63,6 @@ public interface ISysTenantService {
* 同步租户套餐 * 同步租户套餐
*/ */
Boolean syncTenantPackage(String tenantId, Long packageId); Boolean syncTenantPackage(String tenantId, Long packageId);
Boolean saveTenant(SysTenantBo bo);
List<SysTenantVo> selectTenantList(String username); List<SysTenantVo> selectTenantList(String username);
......
...@@ -16,7 +16,7 @@ import com.dsk.common.core.domain.entity.SysDictData; ...@@ -16,7 +16,7 @@ import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.common.core.domain.entity.SysDictType; import com.dsk.common.core.domain.entity.SysDictType;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.MapStructUtils; import com.dsk.common.utils.DingTalkUtil;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.*; import com.dsk.system.domain.*;
import com.dsk.system.domain.bo.SysTenantBo; import com.dsk.system.domain.bo.SysTenantBo;
...@@ -33,6 +33,7 @@ import javax.annotation.Resource; ...@@ -33,6 +33,7 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Random;
/** /**
* @author sxk * @author sxk
...@@ -71,18 +72,24 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -71,18 +72,24 @@ public class ISysTenantServiceImpl implements ISysTenantService {
@Override @Override
public TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery) { public TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo);
pageQuery.setIsAsc("desc");
pageQuery.setOrderByColumn("createTime");
Page<SysTenantVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<SysTenantVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
for (SysTenantVo sysTenantVo : result.getRecords()) {
SysTenantPackage sysTenantPackage = tenantPackageMapper.selectById(sysTenantVo.getPackageId());
sysTenantVo.setPackageName(sysTenantPackage.getPackageName());
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
/** // /**
* 查询租户列表 // * 查询租户列表
*/ // */
@Override // @Override
public List<SysTenantVo> queryList(SysTenantBo bo) { // public List<SysTenantVo> queryList(SysTenantBo bo) {
LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo); // LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); // return baseMapper.selectVoList(lqw);
} // }
/** /**
* 基于租户ID查询租户 * 基于租户ID查询租户
...@@ -93,12 +100,6 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -93,12 +100,6 @@ public class ISysTenantServiceImpl implements ISysTenantService {
return baseMapper.selectVoOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantId, tenantId)); return baseMapper.selectVoOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantId, tenantId));
} }
@Override
public Boolean saveTenant(SysTenantBo bo) {
return null;
}
@Override @Override
public List<SysTenantVo> selectTenantList(String username) { public List<SysTenantVo> selectTenantList(String username) {
return baseMapper.selectTenantList(username); return baseMapper.selectTenantList(username);
...@@ -181,9 +182,12 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -181,9 +182,12 @@ public class ISysTenantServiceImpl implements ISysTenantService {
SysUser user = new SysUser(); SysUser user = new SysUser();
user.setTenantId(tenantId); user.setTenantId(tenantId);
user.setPhonenumber(bo.getContactPhone()); user.setPhonenumber(bo.getContactPhone());
user.setUserName(bo.getContactUserName()); //默认新增用户名为手机号
user.setUserName(bo.getContactPhone());
user.setNickName(bo.getContactUserName()); user.setNickName(bo.getContactUserName());
user.setPassword(BCrypt.hashpw(bo.getPassword())); //生成8位随机密码
String password = generatePassword(8);
user.setPassword(BCrypt.hashpw(password));
user.setDeptId(deptId); user.setDeptId(deptId);
userMapper.insert(user); userMapper.insert(user);
//新增系统用户后,默认当前用户为部门的负责人 //新增系统用户后,默认当前用户为部门的负责人
...@@ -221,9 +225,29 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -221,9 +225,29 @@ public class ISysTenantServiceImpl implements ISysTenantService {
config.setTenantId(tenantId); config.setTenantId(tenantId);
} }
configMapper.insertBatch(sysConfigList); configMapper.insertBatch(sysConfigList);
//租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信
String content = "【央企数字经营管理系统通知】:" + bo.getCompanyName() + "您好,您已经成功注册央企数字经营管理系统,请使用手机号码登录,初始密码为" + password + "。友情提示:为了您的账号安全,请勿泄露密码。若需要修改密码,请联系管理员。";
DingTalkUtil.sendDingTalkMsg(content);
System.out.println("👉🏻:" + content);
return true; return true;
} }
// 生成随机密码
public static String generatePassword(int length) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*_+=";
StringBuilder password = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
int index = random.nextInt(characters.length());
password.append(characters.charAt(index));
}
return password.toString();
}
/** /**
* 生成租户id * 生成租户id
* *
...@@ -295,26 +319,25 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -295,26 +319,25 @@ public class ISysTenantServiceImpl implements ISysTenantService {
* 修改租户 * 修改租户
*/ */
@Override @Override
@CacheEvict(cacheNames = CacheNames.SYS_TENANT,key = "#bo.tenantId") @CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId")
public Boolean updateByBo(SysTenantBo bo) { public Boolean updateByBo(SysTenantBo bo) {
SysTenant tenant = MapStructUtils.convert(bo, SysTenant.class); SysTenant tenant = BeanUtil.toBean(bo, SysTenant.class);
tenant.setTenantId(null); tenant.setTenantId(null);
tenant.setPackageId(null);
return baseMapper.updateById(tenant) > 0; return baseMapper.updateById(tenant) > 0;
} }
/** // /**
* 修改租户状态 // * 修改租户状态
* // *
* @param bo 租户信息 // * @param bo 租户信息
* @return 结果 // * @return 结果
*/ // */
@Override // @Override
@CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId") // @CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId")
public int updateTenantStatus(SysTenantBo bo) { // public int updateTenantStatus(SysTenantBo bo) {
SysTenant tenant = MapStructUtils.convert(bo, SysTenant.class); // SysTenant tenant = MapStructUtils.convert(bo, SysTenant.class);
return baseMapper.updateById(tenant); // return baseMapper.updateById(tenant);
} // }
/** /**
* 校验并批量删除租户信息 * 校验并批量删除租户信息
......
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...@@ -8,18 +9,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -8,18 +9,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.constant.UserConstants; import com.dsk.common.constant.UserConstants;
import com.dsk.system.domain.SysMenu;
import com.dsk.system.domain.SysRole;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.StreamUtils; import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.TreeBuildUtils; import com.dsk.common.utils.TreeBuildUtils;
import com.dsk.system.domain.SysRoleMenu; import com.dsk.system.domain.*;
import com.dsk.system.domain.vo.MetaVo; import com.dsk.system.domain.vo.MetaVo;
import com.dsk.system.domain.vo.RouterVo; import com.dsk.system.domain.vo.RouterVo;
import com.dsk.system.mapper.SysMenuMapper; import com.dsk.system.domain.vo.SysTenantPackageVo;
import com.dsk.system.mapper.SysRoleMapper; import com.dsk.system.domain.vo.SysTenantVo;
import com.dsk.system.mapper.SysRoleMenuMapper; import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysMenuService; import com.dsk.system.service.ISysMenuService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -38,6 +37,8 @@ public class SysMenuServiceImpl implements ISysMenuService { ...@@ -38,6 +37,8 @@ public class SysMenuServiceImpl implements ISysMenuService {
private final SysMenuMapper baseMapper; private final SysMenuMapper baseMapper;
private final SysRoleMapper roleMapper; private final SysRoleMapper roleMapper;
private final SysRoleMenuMapper roleMenuMapper; private final SysRoleMenuMapper roleMenuMapper;
private final SysTenantMapper tenantMapper;
private final SysTenantPackageMapper tenantPackageMapper;
/** /**
* 根据用户查询系统菜单列表 * 根据用户查询系统菜单列表
...@@ -126,8 +127,17 @@ public class SysMenuServiceImpl implements ISysMenuService { ...@@ -126,8 +127,17 @@ public class SysMenuServiceImpl implements ISysMenuService {
public List<SysMenu> selectMenuTreeByUserId(Long userId) { public List<SysMenu> selectMenuTreeByUserId(Long userId) {
List<SysMenu> menus = null; List<SysMenu> menus = null;
if (LoginHelper.isSuperAdmin(userId)) { if (LoginHelper.isSuperAdmin(userId)) {
//Sass超管
menus = baseMapper.selectMenuTreeAll(); menus = baseMapper.selectMenuTreeAll();
} else if (LoginHelper.isTenantAdmin()) {
//租户管理员
// String ids = baseMapper.selectMenuIdsByTenantId(LoginHelper.getTenantId());
SysTenantVo sysTenantVo = tenantMapper.selectVoOne(new LambdaQueryWrapper<SysTenant>().eq(SysTenant::getTenantId, LoginHelper.getTenantId()));
SysTenantPackageVo sysTenantPackageVo = tenantPackageMapper.selectVoOne(new LambdaQueryWrapper<SysTenantPackage>().eq(SysTenantPackage::getPackageId, sysTenantVo.getPackageId()));
List<Long> menuIds = StringUtils.splitTo(sysTenantPackageVo.getMenuIds(), Convert::toLong);
menus = baseMapper.selectBatchIds(menuIds);
} else { } else {
//租户下的员工
menus = baseMapper.selectMenuTreeByUserId(userId); menus = baseMapper.selectMenuTreeByUserId(userId);
} }
return getChildPerms(menus, 0); return getChildPerms(menus, 0);
......
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