|
@@ -16,29 +16,32 @@
|
|
|
*/
|
|
|
package com.fjhx.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.fjhx.base.Condition;
|
|
|
import com.fjhx.mapper.TenantMapper;
|
|
|
+import com.fjhx.params.TenantVo;
|
|
|
import com.fjhx.service.*;
|
|
|
import com.fjhx.utils.Assert;
|
|
|
+import com.fjhx.utils.JwtUtil;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springblade.core.cache.utils.CacheUtil;
|
|
|
-import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.mp.base.BaseEntity;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
-import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.constant.BladeConstant;
|
|
|
+import org.springblade.core.tool.utils.DigestUtil;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.system.cache.ParamCache;
|
|
|
import org.springblade.system.entity.*;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
+import org.springblade.system.user.entity.UserDept;
|
|
|
import org.springblade.system.user.enums.UserEnum;
|
|
|
-import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@@ -61,8 +64,10 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
|
|
|
private final IPostService postService;
|
|
|
private final IRoleMenuService roleMenuService;
|
|
|
private final IDictBizService dictBizService;
|
|
|
- private final IUserClient userClient;
|
|
|
private final IMenuService menuService;
|
|
|
+ private final IUserService userService;
|
|
|
+ private final IUserDeptService userDeptService;
|
|
|
+
|
|
|
|
|
|
private final ExRegionService exRegionService;
|
|
|
|
|
@@ -72,6 +77,7 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
|
|
|
if (Func.isEmpty(tenant.getId())) {
|
|
|
|
|
|
String tenantId = tenant.getTenantId();
|
|
|
+ Assert.notEmpty(tenantId, "租户id不能为空");
|
|
|
Long count = count(Wrappers.<Tenant>lambdaQuery().eq(Tenant::getTenantId, tenant));
|
|
|
Assert.eqZero(count, "租户id已存在");
|
|
|
tenant.setTenantId(tenantId);
|
|
@@ -81,78 +87,26 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
|
|
|
// tenant.setAccountNumber(accountNumber);
|
|
|
|
|
|
// 新建租户对应的默认角色
|
|
|
- Role role = new Role();
|
|
|
- role.setTenantId(tenantId);
|
|
|
- role.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
|
- role.setRoleName("管理员");
|
|
|
- role.setRoleAlias("admin");
|
|
|
- role.setSort(2);
|
|
|
- role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
- roleService.save(role);
|
|
|
+ Long roleId = createRole(tenantId);
|
|
|
|
|
|
// 新建租户对应的角色菜单权限
|
|
|
- LinkedList<Menu> userMenus = new LinkedList<>();
|
|
|
- // 获取参数配置的默认菜单集合,逗号隔开
|
|
|
- List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
|
|
|
- List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : MENU_CODES), userMenus);
|
|
|
- List<RoleMenu> roleMenus = new ArrayList<>();
|
|
|
- menus.forEach(menu -> {
|
|
|
- RoleMenu roleMenu = new RoleMenu();
|
|
|
- roleMenu.setMenuId(menu.getId());
|
|
|
- roleMenu.setRoleId(role.getId());
|
|
|
- roleMenus.add(roleMenu);
|
|
|
- });
|
|
|
- roleMenuService.saveBatch(roleMenus);
|
|
|
+ createRoleMenus(roleId);
|
|
|
|
|
|
// 新建租户对应的默认部门
|
|
|
- Dept dept = new Dept();
|
|
|
- dept.setTenantId(tenantId);
|
|
|
- dept.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
|
- dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
|
|
|
- dept.setDeptName(tenant.getTenantName());
|
|
|
- dept.setFullName(tenant.getTenantName());
|
|
|
- dept.setDeptCategory(1);
|
|
|
- dept.setSort(2);
|
|
|
- dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
- deptService.save(dept);
|
|
|
+ Long deptId = createDept(tenantId, tenant.getTenantName());
|
|
|
|
|
|
// 新建租户对应的默认岗位
|
|
|
- Post post = new Post();
|
|
|
- post.setTenantId(tenantId);
|
|
|
- post.setCategory(1);
|
|
|
- post.setPostCode("ceo");
|
|
|
- post.setPostName("首席执行官");
|
|
|
- post.setSort(1);
|
|
|
- postService.save(post);
|
|
|
+ Long postId = createPost(tenantId);
|
|
|
|
|
|
// 新建租户对应的默认业务字典
|
|
|
- LinkedList<DictBiz> dictBizs = new LinkedList<>();
|
|
|
- List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
|
|
|
- dictBizService.saveBatch(dictBizList);
|
|
|
+ createDictBizList(tenantId);
|
|
|
|
|
|
// 新建租户对应的默认管理用户
|
|
|
- User user = new User();
|
|
|
- user.setTenantId(tenantId);
|
|
|
- user.setName("admin");
|
|
|
- user.setRealName("admin");
|
|
|
- user.setAccount("admin");
|
|
|
- // 获取参数配置的密码
|
|
|
- String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
|
|
|
- user.setPassword(password);
|
|
|
- user.setRoleId(String.valueOf(role.getId()));
|
|
|
- user.setDeptId(String.valueOf(dept.getId()));
|
|
|
- user.setPostId(String.valueOf(post.getId()));
|
|
|
- user.setBirthday(new Date());
|
|
|
- user.setSex(1);
|
|
|
- user.setUserType(UserEnum.WEB.getCategory());
|
|
|
- user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
+ createUser(tenantId, "admin", "admin", "admin",
|
|
|
+ Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD), roleId, deptId, postId);
|
|
|
|
|
|
- saveOrUpdate(tenant);
|
|
|
+ save(tenant);
|
|
|
|
|
|
- R<Boolean> result = userClient.saveUser(user);
|
|
|
- if (!result.isSuccess()) {
|
|
|
- throw new ServiceException(result.getMsg());
|
|
|
- }
|
|
|
|
|
|
} else {
|
|
|
CacheUtil.clear(SYS_CACHE, tenant.getTenantId());
|
|
@@ -185,8 +139,7 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
|
|
|
.between(ObjectUtil.isNotEmpty(expireBeginTime), Tenant::getExpireTime, expireBeginTime, expireEndTime)
|
|
|
.eq(ObjectUtil.isNotEmpty(countryId), Tenant::getCountryId, countryId)
|
|
|
.eq(ObjectUtil.isNotEmpty(provinceId), Tenant::getProvinceId, provinceId)
|
|
|
- .eq(ObjectUtil.isNotEmpty(cityId), Tenant::getCityId, cityId)
|
|
|
- ;
|
|
|
+ .eq(ObjectUtil.isNotEmpty(cityId), Tenant::getCityId, cityId);
|
|
|
|
|
|
|
|
|
Page<Map<String, Object>> page = pageMaps(condition.getPage(), wrapper);
|
|
@@ -214,6 +167,178 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void thirdPartyCreate(String token) {
|
|
|
+ TenantVo tenantVo = JwtUtil.parseToken(token, TenantVo.class);
|
|
|
+
|
|
|
+ String tenantId = tenantVo.getTenantId();
|
|
|
+ Assert.notEmpty(tenantId, "租户id不能为空");
|
|
|
+
|
|
|
+ String tenantName = tenantVo.getTenantName();
|
|
|
+ Assert.notEmpty(tenantName, "租户名称不能为空");
|
|
|
+
|
|
|
+ String account = tenantVo.getAccount();
|
|
|
+ Assert.notEmpty(account, "用户账号不能为空");
|
|
|
+
|
|
|
+ Tenant tenant = BeanUtil.toBean(tenantVo, Tenant.class);
|
|
|
+ Long count = count(Wrappers.<Tenant>lambdaQuery().eq(Tenant::getTenantId, tenant));
|
|
|
+ Assert.eqZero(count, "租户id已存在");
|
|
|
+
|
|
|
+ tenant.setLinkman(tenant.getLinkman() == null ? tenantName : tenant.getLinkman());
|
|
|
+
|
|
|
+ tenantVo.setName(tenantVo.getName() == null ? tenantName : tenantVo.getName());
|
|
|
+ tenantVo.setRealName(tenantVo.getRealName() == null ? tenantName : tenantVo.getRealName());
|
|
|
+ tenantVo.setPassword(tenantVo.getPassword() == null ? RandomUtil.randomString(6) : tenantVo.getPassword());
|
|
|
+
|
|
|
+ // 指定账号额度20
|
|
|
+ tenant.setAccountNumber(20);
|
|
|
+
|
|
|
+ // 新建租户对应的默认角色
|
|
|
+ Long roleId = createRole(tenantId);
|
|
|
+
|
|
|
+ // 新建租户对应的角色菜单权限
|
|
|
+ createRoleMenus(roleId);
|
|
|
+
|
|
|
+ // 新建租户对应的默认部门
|
|
|
+ Long deptId = createDept(tenantId, tenant.getTenantName());
|
|
|
+
|
|
|
+ // 新建租户对应的默认岗位
|
|
|
+ Long postId = createPost(tenantId);
|
|
|
+
|
|
|
+ // 新建租户对应的默认业务字典
|
|
|
+ createDictBizList(tenantId);
|
|
|
+
|
|
|
+ createUser(tenantId, tenantVo.getName(), tenantVo.getRealName(), account,
|
|
|
+ tenantVo.getPassword(), roleId, deptId, postId);
|
|
|
+
|
|
|
+ save(tenant);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建租户对应的默认角色
|
|
|
+ *
|
|
|
+ * @param tenantId 租户id
|
|
|
+ * @return 角色id
|
|
|
+ */
|
|
|
+ private Long createRole(String tenantId) {
|
|
|
+ Role role = new Role();
|
|
|
+ role.setTenantId(tenantId);
|
|
|
+ role.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
|
+ role.setRoleName("管理员");
|
|
|
+ role.setRoleAlias("admin");
|
|
|
+ role.setSort(2);
|
|
|
+ role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
+ roleService.save(role);
|
|
|
+ return role.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建租户对应的角色菜单权限
|
|
|
+ *
|
|
|
+ * @param roleId 角色id
|
|
|
+ */
|
|
|
+ private void createRoleMenus(Long roleId) {
|
|
|
+ LinkedList<Menu> userMenus = new LinkedList<>();
|
|
|
+ // 获取参数配置的默认菜单集合,逗号隔开
|
|
|
+ List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
|
|
|
+ List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : MENU_CODES), userMenus);
|
|
|
+ List<RoleMenu> roleMenus = new ArrayList<>();
|
|
|
+ menus.forEach(menu -> {
|
|
|
+ RoleMenu roleMenu = new RoleMenu();
|
|
|
+ roleMenu.setMenuId(menu.getId());
|
|
|
+ roleMenu.setRoleId(roleId);
|
|
|
+ roleMenus.add(roleMenu);
|
|
|
+ });
|
|
|
+ roleMenuService.saveBatch(roleMenus);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建租户对应的默认部门
|
|
|
+ *
|
|
|
+ * @param tenantId 租户id
|
|
|
+ * @param tenantName 租户名称
|
|
|
+ * @return 部门id
|
|
|
+ */
|
|
|
+ private Long createDept(String tenantId, String tenantName) {
|
|
|
+ Dept dept = new Dept();
|
|
|
+ dept.setTenantId(tenantId);
|
|
|
+ dept.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
|
+ dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
|
|
|
+ dept.setDeptName(tenantName);
|
|
|
+ dept.setFullName(tenantName);
|
|
|
+ dept.setDeptCategory(1);
|
|
|
+ dept.setSort(2);
|
|
|
+ dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
+ deptService.save(dept);
|
|
|
+ return dept.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建租户对应的默认岗位
|
|
|
+ *
|
|
|
+ * @param tenantId 租户id
|
|
|
+ * @return 岗位id
|
|
|
+ */
|
|
|
+ private Long createPost(String tenantId) {
|
|
|
+ Post post = new Post();
|
|
|
+ post.setTenantId(tenantId);
|
|
|
+ post.setCategory(1);
|
|
|
+ post.setPostCode("ceo");
|
|
|
+ post.setPostName("首席执行官");
|
|
|
+ post.setSort(1);
|
|
|
+ postService.save(post);
|
|
|
+ return post.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * createDictBizs
|
|
|
+ *
|
|
|
+ * @param tenantId 租户id
|
|
|
+ */
|
|
|
+ private void createDictBizList(String tenantId) {
|
|
|
+ // 新建租户对应的默认业务字典
|
|
|
+ List<DictBiz> dictBizList = getDictBizs(tenantId, new LinkedList<>());
|
|
|
+ dictBizService.saveBatch(dictBizList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建租户对应的默认管理用户
|
|
|
+ *
|
|
|
+ * @param tenantId 租户id
|
|
|
+ * @param name 昵称
|
|
|
+ * @param realName 真名
|
|
|
+ * @param account 账号
|
|
|
+ * @param password 密码
|
|
|
+ * @param roleId 角色id
|
|
|
+ * @param deptId 部门id
|
|
|
+ * @param postId 岗位id
|
|
|
+ */
|
|
|
+ private void createUser(String tenantId, String name, String realName, String account, String password,
|
|
|
+ Long roleId, Long deptId, Long postId) {
|
|
|
+ User user = new User();
|
|
|
+ user.setTenantId(tenantId);
|
|
|
+ user.setName(name);
|
|
|
+ user.setRealName(realName);
|
|
|
+ user.setAccount(account);
|
|
|
+ user.setPassword(DigestUtil.encrypt(password));
|
|
|
+ user.setRoleId(String.valueOf(roleId));
|
|
|
+ user.setDeptId(String.valueOf(deptId));
|
|
|
+ user.setPostId(String.valueOf(postId));
|
|
|
+ user.setBirthday(new Date());
|
|
|
+ user.setSex(1);
|
|
|
+ user.setUserType(UserEnum.WEB.getCategory());
|
|
|
+ user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
+ userService.save(user);
|
|
|
+
|
|
|
+ UserDept userDept = new UserDept();
|
|
|
+ userDept.setUserId(user.getId());
|
|
|
+ userDept.setDeptId(deptId);
|
|
|
+ userDeptService.save(userDept);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
private List<Menu> getMenus(List<String> codes, LinkedList<Menu> menus) {
|
|
|
codes.forEach(code -> {
|
|
|
Menu menu = menuService.getOne(Wrappers.<Menu>query().lambda().eq(Menu::getCode, code).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
|