拆分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,648 @@
package com.gxwebsoft.common.system.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.common.core.utils.CommonUtil;
import com.gxwebsoft.common.core.utils.DomainUtil;
import com.gxwebsoft.common.core.utils.RedisUtil;
import com.gxwebsoft.common.system.entity.*;
import com.gxwebsoft.common.system.mapper.TenantMapper;
import com.gxwebsoft.common.system.service.*;
import com.gxwebsoft.common.system.param.TenantParam;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.PageResult;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 租户Service实现
*
* @author 科技小王子
* @since 2023-07-17 17:49:53
*/
@Service
public class TenantServiceImpl extends ServiceImpl<TenantMapper, Tenant> implements TenantService {
@Resource
private CompanyService companyService;
@Resource
private MenuService menuService;
@Resource
private RoleService roleService;
@Resource
private UserRoleService userRoleService;
@Resource
private DictService dictService;
@Resource
private DictDataService dictDataService;
@Resource
private EmailRecordService emailRecordService;
@Resource
private UserService userService;
@Resource
private RedisUtil redisUtil;
@Override
public PageResult<Tenant> pageRel(TenantParam param) {
PageParam<Tenant, TenantParam> page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
List<Tenant> list = baseMapper.selectPageRel(page, param);
// if (param.getSceneType() != null && param.getSceneType().equals("plug")) {
// final Set<Integer> collectIds = list.stream().map(Tenant::getTenantId).collect(Collectors.toSet());
// System.out.println("collectIds = " + collectIds);
// final List<Company> companyList = companyService.list(new LambdaUpdateWrapper<Company>().in(Company::getTenantId, collectIds));
// System.out.println("companyList = " + companyList);
// final Map<Integer, List<Company>> collect = companyList.stream().collect(Collectors.groupingBy(Company::getTenantId));
// list.forEach(d -> {
// final List<Company> companies = collect.get(d.getTenantId());
// if (!CollectionUtils.isEmpty(companies)) {
// final Company c1 = companies.get(0);
// final Company c2 = new Company();
// c2.setCompanyName(c1.getCompanyName());
// c2.setShortName(c1.getShortName());
// c2.setPhone(DesensitizedUtil.mobilePhone(c1.getPhone()));
// d.setCompany(c2);
// }
// });
// }
return new PageResult<>(list, page.getTotal());
}
@Override
public List<Tenant> listRel(TenantParam param) {
List<Tenant> list = baseMapper.selectListRel(param);
// 排序
PageParam<Tenant, TenantParam> page = new PageParam<>();
//page.setDefaultOrder("create_time desc");
return page.sortRecords(list);
}
@Override
public Tenant getByIdRel(Integer tenantId) {
TenantParam param = new TenantParam();
return param.getOne(baseMapper.selectListRel(param));
}
@Override
public Company initialization(Company company) {
// 添加默认字典
Dict dict = new Dict();
dict.setDictName("性别");
dict.setDictCode("sex");
dict.setTenantId(company.getTid());
dictService.save(dict);
DictData dictData = new DictData();
dictData.setDictId(dict.getDictId());
dictData.setDictDataName("男");
dictData.setDictDataCode("1");
dictData.setSortNumber(100);
dictData.setTenantId(company.getTid());
dictDataService.save(dictData);
dictData.setDictDataName("女");
dictData.setDictDataCode("2");
dictData.setTenantId(company.getTid());
dictDataService.save(dictData);
dict.setDictName("机构类型");
dict.setDictCode("organizationType");
dict.setTenantId(company.getTid());
dictService.save(dict);
dictData.setDictId(dict.getDictId());
dictData.setDictDataName("公司");
dictData.setDictDataCode("1");
dictData.setTenantId(company.getTid());
dictDataService.save(dictData);
dictData.setDictId(dict.getDictId());
dictData.setDictDataName("部门");
dictData.setDictDataCode("2");
dictData.setTenantId(company.getTid());
dictDataService.save(dictData);
// 添加超级管理员
User admin = new User();
admin.setUsername("admin");
admin.setNickname("超级管理员");
admin.setPhone(company.getPhone());
admin.setEmail(company.getEmail());
admin.setIsAdmin(true);
admin.setRealName(company.getBusinessEntity());
admin.setCompanyName(company.getShortName());
admin.setPassword(userService.encodePassword(company.getPassword()));
admin.setTenantId(company.getTid());
boolean result = userService.save(admin);
Integer superAdminUserId = admin.getUserId();
// 企业资源配置
company.setTenantId(company.getTid());
company.setShortName(company.getShortName());
company.setPhone(company.getPhone());
company.setMembers(20);
company.setServerUrl("https://server.gxwebsoft.com");
company.setModulesUrl("https://modules.gxwebsoft.com");
company.setSocketUrl("wss://server.gxwebsoft.com");
company.setAdminUrl(DomainUtil.getAdminUrl(company.getTid().toString()));
company.setWebsiteUrl(DomainUtil.getSiteUrl(company.getTid().toString()));
// company.setH5Code("https://".concat("websoft.top"));
// company.setAndroidUrl("http://".concat(company.getTid().toString()).concat(".android.wsdns.cn"));
// company.setIosUrl("http://".concat(company.getTid().toString()).concat(".ios.wsdns.cn"));
company.setVersion(10);
company.setIndustryParent("");
company.setIndustryChild("");
company.setDepartments(10);
company.setDepartments(10);
company.setStorageMax(524288000L);
company.setAuthoritative(true);
company.setUsers(2);
company.setClicks(1L);
company.setLikes(0L);
company.setTid(company.getTid());
company.setCompanyType("企业");
company.setEmail(company.getEmail());
company.setUserId(admin.getUserId());
company.setExpirationTime(DateUtil.nextMonth());
companyService.save(company);
// 创建角色
if (result) {
Role role = new Role();
role.setRoleName("超级管理员");
role.setRoleCode("superAdmin");
role.setComments("超级管理员");
role.setTenantId(company.getTid());
roleService.save(role);
// 保存超级管理员角色ID
Integer superAdminRoleId = role.getRoleId();
role.setRoleName("注册用户");
role.setRoleCode("user");
role.setComments("普通注册用户");
roleService.save(role);
// role.setRoleName("游客");
// role.setRoleCode("guest");
// role.setComments("用于未登录时的浏览权限");
// roleService.save(role);
role.setRoleName("商户管理员");
role.setRoleCode("merchant");
role.setComments("商户管理员/店长角色");
roleService.save(role);
role.setRoleName("商户账号");
role.setRoleCode("merchantClerk");
role.setRoleName("管理人员/店员");
Integer guestRoleId = role.getRoleId();
// 添加游客账号
// User www = new User();
// www.setTenantId(company.getTid());
// www.setUsername("www");
// www.setNickname("游客");
// www.setPassword(userService.encodePassword(CommonUtil.randomUUID16()));
// userService.save(www);
// 添加超管用户角色
UserRole userRole = new UserRole();
userRole.setUserId(superAdminUserId);
userRole.setRoleId(superAdminRoleId);
userRole.setTenantId(company.getTid());
boolean resultUserRole = userRoleService.save(userRole);
// 添加游客用户角色
// userRole.setUserId(www.getUserId());
// userRole.setRoleId(guestRoleId);
// boolean resultUserRole = userRoleService.save(userRole);
// 添加系统菜单
if (resultUserRole) {
Menu menu = new Menu();
menu.setMenuType(0);
menu.setParentId(0);
menu.setHide(1);
menu.setTitle("扩展插件");
menu.setPath("/system/plug");
menu.setComponent("/system/plug");
menu.setIcon("AppstoreAddOutlined");
menu.setAuthority("sys:plug:list");
menu.setSortNumber(0);
menu.setTenantId(company.getTid());
menuService.save(menu);
// 10.系统管理
menu.setTitle("系统管理");
menu.setParentId(0);
menu.setPath("/system");
menu.setIcon("setting-outlined");
menu.setSortNumber(999);
menu.setHide(1);
menu.setTenantId(company.getTid());
menuService.save(menu);
Integer parentId = menu.getMenuId();
menu.setParentId(menu.getMenuId());
menu.setTitle("企业信息");
menu.setPath("/system/profile");
menu.setComponent("/system/profile");
menu.setIcon("AuditOutlined");
menu.setAuthority("sys:company:profile");
menu.setSortNumber(1);
menu.setHide(0);
menuService.save(menu);
menu.setTitle("用户管理");
menu.setPath("/system/user");
menu.setComponent("/system/user");
menu.setIcon("team-outlined");
menu.setSortNumber(4);
menuService.save(menu);
Integer userParentId = menu.getMenuId();
menu.setParentId(userParentId);
menu.setMenuType(1);
menu.setTitle("查询");
menu.setIcon("");
menu.setAuthority("sys:user:list");
menuService.save(menu);
menu.setParentId(userParentId);
menu.setTitle("添加");
menu.setAuthority("sys:user:save");
menuService.save(menu);
menu.setParentId(userParentId);
menu.setTitle("修改");
menu.setAuthority("sys:user:update");
menuService.save(menu);
menu.setParentId(userParentId);
menu.setTitle("删除");
menu.setAuthority("sys:user:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("部门管理");
menu.setPath("/system/organization");
menu.setComponent("/system/organization");
menu.setIcon("bank-outlined");
menu.setAuthority("");
menu.setSortNumber(2);
menuService.save(menu);
Integer orgParentId = menu.getMenuId();
menu.setParentId(orgParentId);
menu.setMenuType(1);
menu.setPath("");
menu.setComponent("");
menu.setIcon("");
menu.setTitle("查询");
menu.setAuthority("sys:org:list");
menuService.save(menu);
menu.setParentId(orgParentId);
menu.setTitle("添加");
menu.setAuthority("sys:org:save");
menuService.save(menu);
menu.setParentId(orgParentId);
menu.setTitle("修改");
menu.setAuthority("sys:org:update");
menuService.save(menu);
menu.setParentId(orgParentId);
menu.setTitle("删除");
menu.setAuthority("sys:org:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("角色管理");
menu.setPath("/system/role");
menu.setComponent("/system/role");
menu.setIcon("idcard-outlined");
menu.setAuthority("");
menu.setSortNumber(5);
menuService.save(menu);
Integer roleParentId = menu.getMenuId();
menu.setParentId(roleParentId);
menu.setMenuType(1);
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menu.setTitle("查询");
menu.setAuthority("sys:role:list");
menuService.save(menu);
menu.setParentId(roleParentId);
menu.setTitle("添加");
menu.setAuthority("sys:role:save");
menuService.save(menu);
menu.setParentId(roleParentId);
menu.setTitle("修改");
menu.setAuthority("sys:role:update");
menuService.save(menu);
menu.setParentId(roleParentId);
menu.setTitle("删除");
menu.setAuthority("sys:role:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("菜单管理");
menu.setPath("/system/menu");
menu.setComponent("/system/menu");
menu.setIcon("appstore-outlined");
menu.setAuthority("");
menu.setSortNumber(3);
menuService.save(menu);
Integer menuParentId = menu.getMenuId();
menu.setParentId(menuParentId);
menu.setMenuType(1);
menu.setTitle("查询");
menu.setAuthority("sys:menu:list");
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menuService.save(menu);
menu.setParentId(menuParentId);
menu.setTitle("添加");
menu.setAuthority("sys:menu:save");
menuService.save(menu);
menu.setParentId(menuParentId);
menu.setTitle("修改");
menu.setAuthority("sys:menu:update");
menuService.save(menu);
menu.setParentId(menuParentId);
menu.setTitle("删除");
menu.setAuthority("sys:menu:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("字典管理");
menu.setPath("/system/dict");
menu.setComponent("/system/dict");
menu.setIcon("profile-outlined");
menu.setAuthority("");
menu.setSortNumber(6);
menuService.save(menu);
Integer dictParentId = menu.getMenuId();
menu.setParentId(dictParentId);
menu.setMenuType(1);
menu.setTitle("查询");
menu.setAuthority("sys:dict:list");
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menuService.save(menu);
menu.setParentId(dictParentId);
menu.setTitle("添加");
menu.setAuthority("sys:dict:save");
menuService.save(menu);
menu.setParentId(dictParentId);
menu.setTitle("修改");
menu.setAuthority("sys:dict:update");
menuService.save(menu);
menu.setParentId(dictParentId);
menu.setTitle("删除");
menu.setAuthority("sys:dict:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("登录日志");
menu.setPath("/system/login-record");
menu.setComponent("/system/login-record");
menu.setIcon("calendar-outlined");
menu.setAuthority("sys:login-record:list");
menu.setSortNumber(7);
menuService.save(menu);
menu.setParentId(parentId);
menu.setTitle("模块管理");
menu.setPath("/system/modules");
menu.setComponent("/system/modules");
menu.setIcon("KeyOutlined");
menu.setAuthority("sys:modules:list");
menu.setSortNumber(7);
menuService.save(menu);
menu.setParentId(parentId);
menu.setTitle("秘钥管理");
menu.setPath("/system/access-key");
menu.setComponent("/system/access-key");
menu.setIcon("KeyOutlined");
menu.setAuthority("sys:accessKey:list");
menu.setSortNumber(8);
menuService.save(menu);
menu.setParentId(parentId);
menu.setTitle("文件管理");
menu.setPath("/system/file");
menu.setComponent("/system/file");
menu.setIcon("folder-outlined");
menu.setAuthority("");
menu.setSortNumber(6);
menuService.save(menu);
Integer fileParentId = menu.getMenuId();
menu.setParentId(fileParentId);
menu.setMenuType(1);
menu.setTitle("查看记录");
menu.setPath("");
menu.setComponent("");
menu.setIcon("");
menu.setAuthority("sys:file:list");
menuService.save(menu);
menu.setParentId(fileParentId);
menu.setTitle("上传文件");
menu.setAuthority("sys:file:upload");
menuService.save(menu);
menu.setParentId(fileParentId);
menu.setTitle("修改文件");
menu.setAuthority("sys:file:update");
menuService.save(menu);
menu.setParentId(fileParentId);
menu.setTitle("删除文件");
menu.setAuthority("sys:org:remove");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("扩展插件");
menu.setPath("/system/plug");
menu.setComponent("/system/plug");
menu.setIcon("AppstoreAddOutlined");
menu.setAuthority("sys:plug:list");
menu.setSortNumber(9);
menuService.save(menu);
Integer plugParentId = menu.getMenuId();
menu.setParentId(plugParentId);
menu.setMenuType(1);
menu.setTitle("查询");
menu.setAuthority("sys:dict:list");
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menuService.save(menu);
menu.setParentId(plugParentId);
menu.setTitle("发布插件");
menu.setAuthority("sys:plug:save");
menuService.save(menu);
menu.setParentId(plugParentId);
menu.setTitle("更新插件");
menu.setAuthority("sys:plug:update");
menuService.save(menu);
menu.setParentId(plugParentId);
menu.setTitle("删除插件");
menu.setAuthority("sys:plus:remove");
menuService.save(menu);
menu.setParentId(plugParentId);
menu.setTitle("安装插件");
menu.setAuthority("sys:plug:save");
menuService.save(menu);
menu.setMenuType(0);
menu.setParentId(parentId);
menu.setTitle("系统设置");
menu.setPath("/system/setting");
menu.setComponent("/system/setting");
menu.setIcon("setting-outlined");
menu.setAuthority("sys:setting:save");
menu.setSortNumber(10);
menuService.save(menu);
menu.setParentId(parentId);
menu.setTitle("用户信息");
menu.setPath("/system/user-info");
menu.setComponent("/system/user-info");
menu.setIcon("team-outlined");
menu.setAuthority("");
menu.setHide(1);
menu.setMenuType(0);
menu.setSortNumber(9);
menuService.save(menu);
Integer userInfoParentId = menu.getMenuId();
menu.setParentId(userInfoParentId);
menu.setMenuType(1);
menu.setTitle("修改个人密码");
menu.setAuthority("sys:auth:password");
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menuService.save(menu);
menu.setParentId(userInfoParentId);
menu.setTitle("修改个人资料");
menu.setAuthority("sys:auth:user");
menuService.save(menu);
// 1.控制台
// menu.setParentId(0);
// menu.setTitle("管理首页");
// menu.setPath("/dashboard");
// menu.setIcon("home-outlined");
// menu.setComponent("/dashboard/workplace");
// menu.setAuthority("");
// menu.setSortNumber(1);
// menu.setHide(0);
// menu.setMenuType(0);
// menuService.save(menu);
// 个人中心
menu.setParentId(0);
menu.setTitle("个人中心");
menu.setPath("/user-center");
menu.setIcon("UserOutlined");
menu.setComponent("");
menu.setAuthority("");
menu.setMenuType(0);
menu.setHide(1);
menu.setSortNumber(999);
menuService.save(menu);
Integer userCenterParentId = menu.getMenuId();
menu.setTitle("个人资料");
menu.setPath("/user/profile");
menu.setComponent("/user/profile");
menu.setIcon("IdcardOutlined");
menu.setParentId(userCenterParentId);
menu.setMenuType(0);
menu.setSortNumber(0);
menuService.save(menu);
Integer userProfileParentId = menu.getMenuId();
menu.setParentId(userProfileParentId);
menu.setMenuType(1);
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menu.setTitle("修改资料");
menu.setSortNumber(0);
menu.setAuthority("sys:auth:user");
menuService.save(menu);
menu.setTitle("修改密码");
menu.setAuthority("sys:auth:password");
menuService.save(menu);
menu.setTitle("上传头像");
menu.setAuthority("sys:file:upload");
menuService.save(menu);
menu.setTitle("预览头像");
menu.setAuthority("sys:file:list");
menuService.save(menu);
menu.setTitle("保存头像");
menu.setAuthority("sys:user:update");
menuService.save(menu);
menu.setTitle("我的消息");
menu.setPath("/user/notice");
menu.setComponent("/user/notice");
menu.setIcon("sound-outlined");
menu.setParentId(userCenterParentId);
menu.setMenuType(0);
menuService.save(menu);
Integer userNoticeParentId = menu.getMenuId();
menu.setParentId(userNoticeParentId);
menu.setTitle("列表");
menu.setAuthority("sys:notice:list");
menu.setSortNumber(0);
menu.setMenuType(1);
menu.setIcon("");
menu.setPath("");
menu.setComponent("");
menuService.save(menu);
menu.setTitle("添加");
menu.setAuthority("sys:notice:save");
menuService.save(menu);
menu.setTitle("编辑");
menu.setAuthority("sys:notice:update");
menuService.save(menu);
menu.setTitle("删除");
menu.setAuthority("sys:notice:remove");
menuService.save(menu);
menu.setParentId(userCenterParentId);
menu.setTitle("用户注册");
menu.setAuthority("sys:user:save");
menuService.save(menu);
menu.setTitle("字典查询");
menu.setAuthority("sys:dict:list");
boolean resultMenu = menuService.save(menu);
// 添加菜单ID到超级管理员所属角色ID
if (resultMenu) {
saveRedis(company);
}
}
}
// 发送邮件通知
String title = "恭喜!您的应用已创建成功";
String appUrl = "\r\n应用地址:" + DomainUtil.getSiteUrl(company.getTid().toString());
String appName = "\r\n应用名称:" + company.getShortName();
String adminUrl = "\r\n后台管理:" + DomainUtil.getAdminUrl(company.getTid().toString());
String account = "\r\n账号:admin";
String password = "\r\n密码:" + company.getPassword();
String content = title + appUrl + appName + adminUrl + account + password;
// 发送邮件通知
emailRecordService.sendEmail(title, content, company.getEmail());
return company;
}
// 缓存租户信息
private void saveRedis(Company tenant) {
String key = "tenant:" + tenant.getTenantId();
if (StrUtil.isEmpty(tenant.getTenantCode())) {
tenant.setTenantCode(CommonUtil.randomUUID16());
}
redisUtil.set(key, tenant);
}
@Override
public boolean destructionAll(Integer tenantId){
if (baseMapper.destructionAll(tenantId)) {
return true;
}
return false;
}
}