拆分think模块包

This commit is contained in:
2024-08-13 17:51:18 +08:00
parent 9dc17cd63e
commit 09a752e12a
1547 changed files with 88305 additions and 10329 deletions
@@ -0,0 +1,234 @@
package com.gxwebsoft.common.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.common.core.utils.CommonUtil;
import com.gxwebsoft.common.system.entity.*;
import com.gxwebsoft.common.system.mapper.MenuMapper;
import com.gxwebsoft.common.system.mapper.RoleMapper;
import com.gxwebsoft.common.system.param.MenuParam;
import com.gxwebsoft.common.system.param.RoleParam;
import com.gxwebsoft.common.system.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 菜单Service实现
*
* @author WebSoft
* @since 2018-12-24 16:10:10
*/
@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
private Integer plugMenuId;
@Resource
private RoleService roleService;
@Resource
private RoleMenuService roleMenuService;
@Resource
private UserService userService;
@Resource
private UserRoleService userRoleService;
@Override
@Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE)
public Boolean cloneMenu(MenuParam param) {
System.out.println("准备待克隆的菜单数据 = " + param);
// 删除本项目菜单
baseMapper.delete(new LambdaQueryWrapper<Menu>().eq(Menu::getDeleted,0));
// 顶级栏目
param.setParentId(0);
// 工单系统
if (param.getTenantId().equals(10125)) {
// 初始化数据
initializedData();
}
// 开始克隆
doCloneMenu(baseMapper.getMenuByClone(param));
return true;
}
@Override
@Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE)
public Boolean install(Integer id) {
// 1.插件绑定的菜单ID
final MenuParam param = new MenuParam();
param.setMenuId(id);
final List<Menu> list = baseMapper.getMenuByClone(param);
// TODO 克隆当前插件到顶级菜单
doCloneMenu(list);
// 2.查找当前租户的超管权限的roleId
final Role superAdmin = roleService.getOne(new LambdaQueryWrapper<Role>().eq(Role::getRoleCode, "superAdmin"));
final Integer roleId = superAdmin.getRoleId();
final Integer tenantId = superAdmin.getTenantId();
// 3.勾选菜单根权限
final RoleMenu roleMenu0 = new RoleMenu();
roleMenu0.setRoleId(roleId);
roleMenu0.setMenuId(this.plugMenuId);
roleMenuService.save(roleMenu0);
// 4.勾选根节点下的子菜单权限
final MenuParam menuParam = new MenuParam();
menuParam.setParentId(this.plugMenuId);
menuParam.setTenantId(tenantId);
final List<Menu> menuList = baseMapper.getMenuByClone(menuParam);
menuList.forEach(d->{
RoleMenu roleMenu = new RoleMenu();
roleMenu.setRoleId(roleId);
roleMenu.setMenuId(d.getMenuId());
roleMenuService.save(roleMenu);
});
// 5.调整新插件的排序
final Menu menu = baseMapper.selectById(this.plugMenuId);
menu.setSortNumber(100);
baseMapper.updateById(menu);
return true;
}
// 克隆菜单
private void doCloneMenu(List<Menu> list) {
final MenuParam param = new MenuParam();
list.forEach(d -> {
Menu menu = new Menu();
menu.setParentId(0);
menu.setTitle(d.getTitle());
menu.setPath(d.getPath());
menu.setComponent(d.getComponent());
menu.setMenuType(d.getMenuType());
menu.setSortNumber(d.getSortNumber());
menu.setAuthority(d.getAuthority());
menu.setIcon(d.getIcon());
menu.setHide(d.getHide());
menu.setMeta(d.getMeta());
menu.setModules(d.getModules());
menu.setModulesUrl(d.getModulesUrl());
save(menu);
this.plugMenuId = menu.getMenuId();
// 二级菜单
param.setParentId(d.getMenuId());
final List<Menu> list1 = baseMapper.getMenuByClone(param);
list1.forEach(d1 -> {
final Menu menu1 = new Menu();
menu1.setParentId(menu.getMenuId());
menu1.setTitle(d1.getTitle());
menu1.setPath(d1.getPath());
menu1.setComponent(d1.getComponent());
menu1.setMenuType(d1.getMenuType());
menu1.setSortNumber(d1.getSortNumber());
menu1.setAuthority(d1.getAuthority());
menu1.setIcon(d1.getIcon());
menu1.setHide(d1.getHide());
menu1.setMeta(d1.getMeta());
menu1.setModules(d1.getModules());
menu1.setModulesUrl(d1.getModulesUrl());
save(menu1);
// 三级菜单
param.setParentId(d1.getMenuId());
final List<Menu> list2 = baseMapper.getMenuByClone(param);
list2.forEach(d2 -> {
final Menu menu2 = new Menu();
menu2.setParentId(menu1.getMenuId());
menu2.setTitle(d2.getTitle());
menu2.setPath(d2.getPath());
menu2.setComponent(d2.getComponent());
menu2.setMenuType(d2.getMenuType());
menu2.setSortNumber(d2.getSortNumber());
menu2.setAuthority(d2.getAuthority());
menu2.setIcon(d2.getIcon());
menu2.setHide(d2.getHide());
menu2.setMeta(d2.getMeta());
menu2.setModules(d2.getModules());
menu2.setModulesUrl(d2.getModulesUrl());
save(menu2);
// 四级菜单
param.setParentId(d2.getMenuId());
final List<Menu> list3 = baseMapper.getMenuByClone(param);
list3.forEach(d3 -> {
final Menu menu3 = new Menu();
menu3.setParentId(menu2.getMenuId());
menu3.setTitle(d3.getTitle());
menu3.setPath(d3.getPath());
menu3.setComponent(d3.getComponent());
menu3.setMenuType(d3.getMenuType());
menu3.setSortNumber(d3.getSortNumber());
menu3.setAuthority(d3.getAuthority());
menu3.setIcon(d3.getIcon());
menu3.setHide(d3.getHide());
menu3.setMeta(d3.getMeta());
menu3.setModules(d3.getModules());
menu3.setModulesUrl(d3.getModulesUrl());
save(menu3);
});
});
});
});
}
// 初始化数据
private void initializedData(){
Role role = new Role();
User user = new User();
UserRole userRole = new UserRole();
if(roleService.count(new LambdaQueryWrapper<Role>().eq(Role::getRoleCode, "admin")) == 0){
role.setRoleCode("admin");
role.setRoleName("管理人员");
role.setComments("工单分派管理专员");
roleService.save(role);
if(userService.count(new LambdaQueryWrapper<User>().eq(User::getUsername, "管理人员")) == 0){
user.setUsername("刘备");
user.setNickname("刘备");
user.setPhone("13800138001");
user.setPassword(userService.encodePassword("123456"));
user.setSex("1");
userService.save(user);
// 添加用户角色
userRole.setRoleId(role.getRoleId());
userRole.setUserId(user.getUserId());
userRoleService.save(userRole);
// 添加统计表
}
}
if(roleService.count(new LambdaQueryWrapper<Role>().eq(Role::getRoleCode, "commander")) == 0){
role.setRoleCode("commander");
role.setRoleName("受理人员");
role.setComments("负责解决问题的处理人员");
roleService.save(role);
if(userService.count(new LambdaQueryWrapper<User>().eq(User::getUsername, "commander")) == 0){
user.setUsername("关羽");
user.setNickname("关羽");
user.setPhone("13800138002");
user.setPassword(userService.encodePassword("123456"));
user.setSex("1");
userService.save(user);
// 添加用户角色
userRole.setRoleId(role.getRoleId());
userRole.setUserId(user.getUserId());
userRoleService.save(userRole);
}
}
if(roleService.count(new LambdaQueryWrapper<Role>().eq(Role::getRoleCode, "promoter")) == 0){
role.setRoleCode("promoter");
role.setRoleName("工单发起人");
role.setComments("问题及需求的发起人");
roleService.save(role);
if(userService.count(new LambdaQueryWrapper<User>().eq(User::getUsername, "promoter")) == 0){
user.setUsername("张飞");
user.setNickname("张飞");
user.setPassword(userService.encodePassword("123456"));
user.setSex("1");
userService.save(user);
// 添加用户角色
userRole.setRoleId(role.getRoleId());
userRole.setUserId(user.getUserId());
userRoleService.save(userRole);
}
}
}
}