Browse Source

新增租户操作同步新增管理员、菜单权限

test
smallchill 5 years ago
parent
commit
ede435a112
  1. 14
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  2. 5
      blade-service/blade-system/pom.xml
  3. 3
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
  4. 6
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictBizServiceImpl.java
  5. 6
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java
  6. 4
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java
  7. 64
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
  8. 10
      blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java
  9. 5
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

14
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@ -23,6 +23,8 @@ import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
@ -38,6 +40,7 @@ public interface IUserClient {
String API_PREFIX = "/client";
String USER_INFO = API_PREFIX + "/user-info";
String USER_INFO_BY_ID = API_PREFIX + "/user-info-by-id";
String SAVE_USER = API_PREFIX + "/save-user";
/**
* 获取用户信息
@ -52,10 +55,19 @@ public interface IUserClient {
* 获取用户信息
*
* @param tenantId 租户ID
* @param account 账号
* @param account 账号
* @return
*/
@GetMapping(USER_INFO)
R<UserInfo> userInfo(@RequestParam("tenantId") String tenantId, @RequestParam("account") String account);
/**
* 新建用户
*
* @param user 用户实体
* @return
*/
@PostMapping(SAVE_USER)
R<Boolean> saveUser(@RequestBody User user);
}

5
blade-service/blade-system/pom.xml

@ -28,6 +28,11 @@
<artifactId>blade-system-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-user-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
</dependencies>
<build>

3
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@ -17,7 +17,6 @@
package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
@ -89,7 +88,7 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
public boolean removeDept(String ids) {
Integer cnt = baseMapper.selectCount(Wrappers.<Dept>query().lambda().in(Dept::getParentId, Func.toLongList(ids)));
if (cnt > 0) {
throw new ApiException("请先删除子节点!");
throw new ServiceException("请先删除子节点!");
}
return removeByIds(Func.toLongList(ids));
}

6
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictBizServiceImpl.java

@ -19,9 +19,9 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.constant.BladeConstant;
@ -75,7 +75,7 @@ public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBiz> impl
LambdaQueryWrapper<DictBiz> lqw = Wrappers.<DictBiz>query().lambda().eq(DictBiz::getCode, dict.getCode()).eq(DictBiz::getDictKey, dict.getDictKey());
Integer cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(DictBiz::getId, dict.getId()));
if (cnt > 0) {
throw new ApiException("当前字典键值已存在!");
throw new ServiceException("当前字典键值已存在!");
}
if (Func.isEmpty(dict.getParentId())) {
dict.setParentId(BladeConstant.TOP_PARENT_ID);
@ -88,7 +88,7 @@ public class DictBizServiceImpl extends ServiceImpl<DictBizMapper, DictBiz> impl
public boolean removeDict(String ids) {
Integer cnt = baseMapper.selectCount(Wrappers.<DictBiz>query().lambda().in(DictBiz::getParentId, Func.toLongList(ids)));
if (cnt > 0) {
throw new ApiException("请先删除子节点!");
throw new ServiceException("请先删除子节点!");
}
return removeByIds(Func.toLongList(ids));
}

6
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DictServiceImpl.java

@ -19,9 +19,9 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.constant.BladeConstant;
@ -81,7 +81,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements ID
LambdaQueryWrapper<Dict> lqw = Wrappers.<Dict>query().lambda().eq(Dict::getCode, dict.getCode()).eq(Dict::getDictKey, dict.getDictKey());
Integer cnt = baseMapper.selectCount((Func.isEmpty(dict.getId())) ? lqw : lqw.notIn(Dict::getId, dict.getId()));
if (cnt > 0) {
throw new ApiException("当前字典键值已存在!");
throw new ServiceException("当前字典键值已存在!");
}
if (Func.isEmpty(dict.getParentId())) {
dict.setParentId(BladeConstant.TOP_PARENT_ID);
@ -94,7 +94,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements ID
public boolean removeDict(String ids) {
Integer cnt = baseMapper.selectCount(Wrappers.<Dict>query().lambda().in(Dict::getParentId, Func.toLongList(ids)));
if (cnt > 0) {
throw new ApiException("请先删除子节点!");
throw new ServiceException("请先删除子节点!");
}
return removeByIds(Func.toLongList(ids));
}

4
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/MenuServiceImpl.java

@ -17,9 +17,9 @@
package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.SecureUtil;
import org.springblade.core.tool.constant.BladeConstant;
@ -175,7 +175,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
public boolean removeMenu(String ids) {
Integer cnt = baseMapper.selectCount(Wrappers.<Menu>query().lambda().in(Menu::getParentId, Func.toLongList(ids)));
if (cnt > 0) {
throw new ApiException("请先删除子节点!");
throw new ServiceException("请先删除子节点!");
}
return removeByIds(Func.toLongList(ids));
}

64
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java

@ -19,21 +19,25 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tenant.TenantId;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dept;
import org.springblade.system.entity.Role;
import org.springblade.system.entity.Tenant;
import org.springblade.system.entity.*;
import org.springblade.system.mapper.DeptMapper;
import org.springblade.system.mapper.MenuMapper;
import org.springblade.system.mapper.RoleMapper;
import org.springblade.system.mapper.TenantMapper;
import org.springblade.system.service.IRoleMenuService;
import org.springblade.system.service.ITenantService;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -47,7 +51,17 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
private final TenantId tenantId;
private final RoleMapper roleMapper;
private final MenuMapper menuMapper;
private final DeptMapper deptMapper;
private final IRoleMenuService roleMenuService;
private final IUserClient userClient;
/**
* 新建默认租户角色所分配的菜单主节点
*/
private final List<String> menuCodes = Arrays.asList(
"desk", "flow", "work", "monitor", "resource", "role", "user", "dept", "dictbiz", "topmenu", "param"
);
@Override
public IPage<Tenant> selectTenantPage(IPage<Tenant> page, Tenant tenant) {
@ -77,6 +91,17 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
role.setSort(2);
role.setIsDeleted(0);
roleMapper.insert(role);
// 新建租户对应的角色菜单权限
LinkedList<Menu> userMenus = new LinkedList<>();
List<Menu> menus = getMenus(menuCodes, 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);
// 新建租户对应的默认部门
Dept dept = new Dept();
dept.setTenantId(tenantId);
@ -88,6 +113,22 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
dept.setSort(2);
dept.setIsDeleted(0);
deptMapper.insert(dept);
// 新建租户对应的默认管理用户
User user = new User();
user.setTenantId(tenantId);
user.setName("admin");
user.setRealName("admin");
user.setAccount("admin");
user.setPassword("admin");
user.setRoleId(String.valueOf(role.getId()));
user.setDeptId(String.valueOf(dept.getId()));
user.setBirthday(new Date());
user.setSex(1);
user.setIsDeleted(0);
R<Boolean> result = userClient.saveUser(user);
if (!result.isSuccess()) {
throw new ServiceException(result.getMsg());
}
}
return super.saveOrUpdate(tenant);
}
@ -100,4 +141,19 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
return code;
}
private List<Menu> getMenus(List<String> codes, LinkedList<Menu> menus) {
codes.forEach(code -> {
Menu menu = menuMapper.selectOne(Wrappers.<Menu>query().lambda().eq(Menu::getCode, code).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
menus.add(menu);
recursion(menu.getId(), menus);
});
return menus;
}
private void recursion(Long parentId, LinkedList<Menu> menus) {
List<Menu> menuList = menuMapper.selectList(Wrappers.<Menu>query().lambda().eq(Menu::getParentId, parentId).eq(Menu::getIsDeleted, BladeConstant.DB_NOT_DELETED));
menus.addAll(menuList);
menuList.forEach(menu -> recursion(menu.getId(), menus));
}
}

10
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@ -22,6 +22,8 @@ import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
import org.springblade.system.user.service.IUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
@ -33,7 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
@AllArgsConstructor
public class UserClient implements IUserClient {
IUserService service;
private IUserService service;
@Override
@GetMapping(USER_INFO_BY_ID)
@ -47,4 +49,10 @@ public class UserClient implements IUserClient {
return R.data(service.userInfo(tenantId, account));
}
@Override
@PostMapping(SAVE_USER)
public R<Boolean> saveUser(@RequestBody User user) {
return R.data(service.submit(user));
}
}

5
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@ -19,7 +19,6 @@ package org.springblade.system.user.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import lombok.AllArgsConstructor;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.log.exception.ServiceException;
@ -69,7 +68,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
}
Integer userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, Func.toStr(tenantId, BladeConstant.ADMIN_TENANT_ID)).eq(User::getAccount, user.getAccount()));
if (userCount > 0 && Func.isEmpty(user.getId())) {
throw new ApiException("当前用户已存在!");
throw new ServiceException("当前用户已存在!");
}
return save(user) && submitUserDept(user);
}
@ -142,7 +141,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
@Override
public boolean removeUser(String userIds) {
if (Func.contains(Func.toLongArray(userIds), SecureUtil.getUserId())) {
throw new ApiException("不能删除本账号!");
throw new ServiceException("不能删除本账号!");
}
return deleteLogic(Func.toLongList(userIds));
}

Loading…
Cancel
Save