SysSystemServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. package com.jzg.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.convert.Convert;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.jzg.commons.entity.dto.SysSystemAddParam;
  8. import com.jzg.commons.entity.dto.SysSystemEditParam;
  9. import com.jzg.commons.entity.dto.SysSystemParam;
  10. import com.jzg.commons.entity.enums.YesNoEnum;
  11. import com.jzg.commons.entity.po.*;
  12. import com.jzg.commons.entity.vo.SysSystemPermsVo;
  13. import com.jzg.commons.entity.vo.SysSystemVo;
  14. import com.jzg.commons.entity.vo.UpAndDownVo;
  15. import com.jzg.commons.util.StringUtils;
  16. import com.jzg.mapper.*;
  17. import com.jzg.service.SysSystemService;
  18. import com.jzg.commons.util.MinioUtils;
  19. import org.springframework.beans.BeanUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.beans.factory.annotation.Value;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.stream.Collectors;
  28. /**
  29. * 租户管理表 服务层处理 sys_system
  30. *
  31. * @author dongxin
  32. */
  33. @Service
  34. public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem>
  35. implements SysSystemService {
  36. @Autowired
  37. private SysRolePermsMapper sysRolePermsMapper;
  38. @Autowired
  39. private SysUploadFilesMapper sysUploadFilesMapper;
  40. @Autowired
  41. private SysUserMapper sysUserMapper;
  42. @Autowired
  43. private SysRoleMapper sysRoleMapper;
  44. @Autowired
  45. private SysUserRoleMapper sysUserRoleMapper;
  46. @Autowired
  47. private SysDeptMapper sysDeptMapper;
  48. @Autowired
  49. private SysConfigMapper sysConfigMapper;
  50. @Autowired
  51. private SysUserJzgInfoMapper sysUserJzgInfoMapper;
  52. @Autowired
  53. private SysUserPlateInfoMapper sysUserPlateInfoMapper;
  54. @Autowired
  55. private MinioUtils minioUtils;
  56. @Value("${minio.bucket-name}")
  57. private String bucketName;
  58. @Override
  59. public boolean updatePerms(SysSystemPermsVo sysSystemPermsVo) {
  60. String permsStr = sysSystemPermsVo.getPermsStr();
  61. List<SysConfig> configs = sysConfigMapper.selectList(new LambdaQueryWrapper<SysConfig>()
  62. .eq(SysConfig::getType, 1).eq(SysConfig::getSystemCode,sysSystemPermsVo.getSystemCode()));
  63. SysConfig config;
  64. if(CollUtil.isEmpty(configs)){
  65. config = new SysConfig();
  66. config.setSysConfig(permsStr);
  67. config.setType(1);
  68. config.setSystemCode(sysSystemPermsVo.getSystemCode());
  69. sysConfigMapper.insert(config);
  70. }else{
  71. config = configs.get(0);
  72. config.setSysConfig(permsStr);
  73. sysConfigMapper.updateById(config);
  74. }
  75. // 获取租户管理员角色id
  76. LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
  77. queryWrapper.eq(SysRole::getSystemCode, sysSystemPermsVo.getSystemCode())
  78. .like(SysRole::getName,"管理员");
  79. List<SysRole> roles = sysRoleMapper.selectList(queryWrapper);
  80. LambdaQueryWrapper<SysRolePerms> wrapper = new LambdaQueryWrapper<>();
  81. wrapper.eq(SysRolePerms::getRoleId,roles.get(0).getId());
  82. sysRolePermsMapper.delete(wrapper);
  83. List<SysRolePerms> perms = new ArrayList<>();
  84. sysSystemPermsVo.getPerms().forEach(per->{
  85. SysRolePerms sysSystemPerms = new SysRolePerms();
  86. sysSystemPerms.setRoleId(roles.get(0).getId());
  87. sysSystemPerms.setPermsId(per.getPermsId());
  88. sysSystemPerms.setPerms(per.getPerms());
  89. perms.add(sysSystemPerms);
  90. });
  91. return !sysRolePermsMapper.insert(perms).isEmpty();
  92. }
  93. @Override
  94. public List<SysRolePerms> getSystemPerms(String systemCode) {
  95. LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
  96. queryWrapper.eq(SysRole::getSystemCode, systemCode)
  97. .like(SysRole::getName,"管理员");
  98. List<SysRole> roles = sysRoleMapper.selectList(queryWrapper);
  99. List<SysRolePerms> sysSystemPerms = sysRolePermsMapper.selectList(new LambdaQueryWrapper<SysRolePerms>()
  100. .eq(SysRolePerms::getRoleId, roles.get(0).getId()));
  101. return sysSystemPerms;
  102. }
  103. @Override
  104. public boolean updateConfig(SysConfig config) {
  105. List<SysConfig> configs = sysConfigMapper.selectList(new LambdaQueryWrapper<SysConfig>()
  106. .eq(SysConfig::getType, 0));
  107. if(CollUtil.isEmpty(configs)){
  108. config.setType(0);
  109. sysConfigMapper.insert(config);
  110. }else{
  111. config.setId(configs.get(0).getId());
  112. sysConfigMapper.updateById(config);
  113. }
  114. return true;
  115. }
  116. @Override
  117. public SysConfig getSystemConfig() {
  118. List<SysConfig> configs = sysConfigMapper.selectList(new LambdaQueryWrapper<SysConfig>()
  119. .eq(SysConfig::getType, 0));
  120. return configs.get(0);
  121. }
  122. /**
  123. * 根据SystemCode 查询 System对象
  124. * @param systemCode
  125. * @return
  126. */
  127. @Override
  128. public SysSystem getBySystemCode(String systemCode ) {
  129. return this.getOne(new LambdaQueryWrapper<SysSystem>()
  130. .eq(SysSystem::getSysCode, systemCode)
  131. .eq(SysSystem::getAvailable, YesNoEnum.YES.getCode())
  132. .eq(SysSystem::getIsDelete, YesNoEnum.NO.getCode()));
  133. }
  134. /**
  135. * 根据systemCode 判断是否存在数据
  136. * @param systemCode
  137. * @return
  138. */
  139. @Override
  140. public boolean isExistsCode(String systemCode ,String id) {
  141. long count = this.count(new LambdaQueryWrapper<SysSystem>()
  142. .eq(SysSystem::getSysCode, systemCode)
  143. .ne(StringUtils.isNotNull(id),SysSystem::getId, id)
  144. );
  145. return count > 0;
  146. }
  147. @Override
  148. public boolean isExistsName(String systemName, String id) {
  149. long count = this.count(new LambdaQueryWrapper<SysSystem>()
  150. .eq(SysSystem::getSysCode, systemName)
  151. .ne(StringUtils.isNotNull(id),SysSystem::getId, id)
  152. );
  153. return count > 0;
  154. }
  155. @Override
  156. public Page<SysSystemVo> queryPage(Page page, SysSystemParam param) {
  157. Page<SysSystemVo> sysPage = baseMapper.queryPage(page, param);
  158. List<SysSystemVo> sysSystemList = sysPage.getRecords();
  159. if(CollUtil.isNotEmpty(sysSystemList)){
  160. // 查询所有机构
  161. List<SysDept> deptList = sysDeptMapper.selectList(new LambdaQueryWrapper<>());
  162. Map<String,List<SysDept>> deptMap = deptList.stream()
  163. .collect(Collectors.groupingBy(SysDept::getSystemCode));
  164. sysSystemList.forEach(sysSystem->{
  165. SysUploadFiles files = sysUploadFilesMapper.selectById(sysSystem.getSysIcon());
  166. if(StringUtils.isNotNull(files)){
  167. sysSystem.setSysIconUrl(minioUtils.getPresignedObjectUrl(bucketName,files.getFileName()));
  168. }
  169. if(deptMap.containsKey(sysSystem.getSysCode())){
  170. int count = deptMap.get(sysSystem.getSysCode()).size();
  171. sysSystem.setDeptCount(count);
  172. }
  173. });
  174. }
  175. return sysPage;
  176. }
  177. @Override
  178. public SysSystemVo queryById(String sysId) {
  179. SysSystem system = this.getById(sysId);
  180. SysSystemVo vo = new SysSystemVo();
  181. BeanUtils.copyProperties(system,vo);
  182. if(StringUtils.isNotEmpty(vo.getSysIcon())){
  183. SysUploadFiles files = sysUploadFilesMapper.selectById(system.getSysIcon());
  184. if(StringUtils.isNotNull(files)){
  185. vo.setSysIconUrl(minioUtils.getPresignedObjectUrl(bucketName,files.getFileName()));
  186. }
  187. }
  188. SysUser user = sysUserMapper.selectById(system.getUserId());
  189. vo.setUserName(user.getUsername());
  190. vo.setUserAccount(user.getMobile());
  191. return vo;
  192. }
  193. @Override
  194. @Transactional(rollbackFor = Exception.class)
  195. public void sysAdd(SysSystemAddParam param) {
  196. SysSystem sysSystem = new SysSystem();
  197. BeanUtils.copyProperties(param, sysSystem);
  198. sysSystem.setIsTenant(1);
  199. sysSystem.setAvailable(1);
  200. sysSystem.setParentId("1");
  201. this.save(sysSystem);
  202. /** 初始化租户管理员信息 */
  203. List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  204. .eq(SysUser::getMobile, param.getUserAccount())
  205. );
  206. String userId = null;
  207. if(CollUtil.isNotEmpty(userList)){
  208. userId = userList.get(0).getId();
  209. }else{
  210. // 新增管理员用户
  211. SysUser user = new SysUser(param);
  212. sysUserMapper.insert(user);
  213. userId = user.getId();
  214. }
  215. // 新增用户机构关联信息
  216. SysUserPlateInfo info = new SysUserPlateInfo();
  217. info.setUserId(userId);
  218. info.setSystemCode(sysSystem.getSysCode());
  219. info.setIsEnable(1);
  220. sysUserPlateInfoMapper.insert(info);
  221. // 查询该租户是否有管理员角色
  222. LambdaQueryWrapper<SysRole> queryWrapper = new LambdaQueryWrapper<>();
  223. queryWrapper.eq(SysRole::getSystemCode, sysSystem.getSysCode())
  224. .like(SysRole::getName,"管理员");
  225. List<SysRole> roles = sysRoleMapper.selectList(queryWrapper);
  226. SysRole role;
  227. // 新增管理员角色
  228. if(CollUtil.isNotEmpty(roles)){
  229. role = roles.get(0);
  230. }else{
  231. role = new SysRole(sysSystem.getSysCode());
  232. sysRoleMapper.insert(role);
  233. }
  234. // 关联用户角色
  235. SysUserRole userRole = new SysUserRole();
  236. userRole.setUserId(userId);
  237. userRole.setRoleId(role.getId());
  238. sysUserRoleMapper.insert(userRole);
  239. // 租户绑定管理员信息
  240. sysSystem.setUserId(userId);
  241. this.updateById(sysSystem);
  242. }
  243. @Override
  244. @Transactional(rollbackFor = Exception.class)
  245. public void sysEdit(SysSystemEditParam param) {
  246. SysSystem sysSystem = new SysSystem();
  247. BeanUtils.copyProperties(param, sysSystem);
  248. updateById(sysSystem);
  249. SysSystem system = getById(sysSystem.getId());
  250. // 修改管理员信息
  251. List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  252. .eq(SysUser::getMobile, param.getUserAccount())
  253. );
  254. SysUser sysUser;
  255. if(CollUtil.isNotEmpty(userList)){
  256. sysUser = userList.get(0);
  257. sysUser.setUsername(param.getUserName());
  258. sysUserMapper.updateById(sysUser);
  259. }else{
  260. // 新增管理员用户
  261. sysUser = new SysUser(param);
  262. sysUserMapper.insert(sysUser);
  263. // 新增用户机构关联信息
  264. SysUserPlateInfo info = new SysUserPlateInfo();
  265. info.setUserId(sysUser.getId());
  266. info.setSystemCode(sysSystem.getSysCode());
  267. info.setIsEnable(1);
  268. sysUserPlateInfoMapper.insert(info);
  269. }
  270. }
  271. @Override
  272. @Transactional(rollbackFor = Exception.class)
  273. public void upAndDown(UpAndDownVo upAndDownVo) {
  274. if(YesNoEnum.YES.equals(upAndDownVo.getOpType())) {
  275. upAndDownVo.getIds().forEach(id->{
  276. reDeploy(Convert.toStr(id));
  277. });
  278. } else {
  279. upAndDownVo.getIds().forEach(id->{
  280. unDeploy(Convert.toStr(id));
  281. });
  282. }
  283. }
  284. @Override
  285. public void unDeploy(String id) {
  286. SysSystem sysSystem = new SysSystem();
  287. sysSystem.setId(id);
  288. sysSystem.setAvailable(YesNoEnum.NO.getCode());
  289. baseMapper.updateById(sysSystem);
  290. }
  291. @Override
  292. public void reDeploy(String id) {
  293. SysSystem sysSystem = new SysSystem();
  294. sysSystem.setId(id);
  295. sysSystem.setAvailable(YesNoEnum.YES.getCode());
  296. baseMapper.updateById(sysSystem);
  297. }
  298. @Override
  299. @Transactional(rollbackFor = Exception.class)
  300. public boolean sysDelete(SysSystemVo sysSystemVo) {
  301. if(baseMapper.deleteById(sysSystemVo.getId()) > 0){
  302. return true;
  303. }
  304. return false;
  305. }
  306. @Override
  307. public String sysDeleteValid(List<String> ids) {
  308. List<SysSystem> systemList = baseMapper.selectBatchIds(ids);
  309. String errorStr = null;
  310. if(CollUtil.isNotEmpty(systemList)){
  311. for (SysSystem sysSystem : systemList) {
  312. List<String> deptIdList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  313. .select(SysDept::getId)
  314. .eq(SysDept::getSystemCode, sysSystem.getSysCode())).stream()
  315. .map(SysDept::getId).collect(Collectors.toList());
  316. if (CollUtil.isNotEmpty(deptIdList)) {
  317. errorStr = "租户["+sysSystem.getSysName()+"]还有部分子机构,请将这些子机构删除后,再进行删除!";
  318. return errorStr;
  319. }
  320. Long count = sysUserPlateInfoMapper.selectCount(new LambdaQueryWrapper<SysUserPlateInfo>()
  321. .eq(SysUserPlateInfo::getSystemCode, sysSystem.getSysCode())
  322. .eq(SysUserPlateInfo::getIsEnable, 1)
  323. .eq(SysUserPlateInfo::getIsDelete, 0));
  324. if(count > 0){
  325. errorStr = "租户["+sysSystem.getSysName()+"]还有部分员工,请将这些员工变更机构或者删除后,再进行删除!";
  326. return errorStr;
  327. }
  328. }
  329. }
  330. return errorStr;
  331. }
  332. @Override
  333. public boolean deleteByIds(List<String> ids) {
  334. return baseMapper.deleteByIds(ids) > 0;
  335. }
  336. }