EmployeeServiceImpl.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.keao.edu.user.service.impl;
  2. import com.keao.edu.auth.api.client.SysUserFeignService;
  3. import com.keao.edu.auth.api.entity.SysUser;
  4. import com.keao.edu.common.dal.BaseDAO;
  5. import com.keao.edu.common.exception.BizException;
  6. import com.keao.edu.common.service.impl.BaseServiceImpl;
  7. import com.keao.edu.im.api.client.ImFeignService;
  8. import com.keao.edu.im.api.entity.ImResult;
  9. import com.keao.edu.im.api.entity.ImUserModel;
  10. import com.keao.edu.user.dao.EmployeeDao;
  11. import com.keao.edu.user.dao.OrganizationDao;
  12. import com.keao.edu.user.dao.SysUserDao;
  13. import com.keao.edu.user.entity.Employee;
  14. import com.keao.edu.user.entity.Organization;
  15. import com.keao.edu.user.service.EmployeeService;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.util.List;
  22. import java.util.Set;
  23. import java.util.stream.Collectors;
  24. @Service
  25. public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> implements EmployeeService {
  26. @Autowired
  27. private EmployeeDao employeeDao;
  28. @Autowired
  29. private OrganizationDao organizationDao;
  30. @Autowired
  31. private ImFeignService imFeignService;
  32. @Autowired
  33. private SysUserDao sysUserDao;
  34. @Autowired
  35. private SysUserFeignService sysUserFeignService;
  36. @Override
  37. public BaseDAO<Integer, Employee> getDAO() {
  38. return employeeDao;
  39. }
  40. @Override
  41. @Transactional(rollbackFor = Exception.class)
  42. public void add(Employee employee) {
  43. SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
  44. Integer organId = employeeDao.get(queryUserInfo.getId()).getOrganId();
  45. // String tenantId = queryUserInfo.getTenantId();
  46. employee.setOrganId(organId);
  47. SysUser sysUser = employee.getSysUser();
  48. // employee.setTenantId(tenantId);
  49. SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
  50. if(user != null && user.getId() != null){
  51. // if(!user.getTenantId().equals(tenantId)){
  52. // throw new BizException("手机号已被占用");
  53. // }
  54. if(StringUtils.isNotEmpty(user.getUserType()) && user.getUserType().contains("SYSTEM")){
  55. throw new BizException("手机号已被占用");
  56. }
  57. Employee employee1 = employeeDao.get(user.getId());
  58. if(employee1 == null){
  59. if(StringUtils.isEmpty(user.getPassword())){
  60. sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
  61. }
  62. employee.setUserId(user.getId());
  63. employee.setEmployeeType("EMPLOYEE");
  64. employeeDao.insert(employee);
  65. //新增用户角色
  66. sysUserDao.batchAddEmployeeRole(user.getId(),sysUser.getRoles());
  67. if(!user.getUserType().contains("SYSTEM")){
  68. user.setUserType(user.getUserType() + ",SYSTEM");
  69. }
  70. sysUserDao.update(user);
  71. }else if(employee1.getDelFlag()){
  72. SysUser sysUser1 = employee1.getSysUser();
  73. if(StringUtils.isEmpty(sysUser1.getUserType())){
  74. sysUser.setUserType("SYSTEM");
  75. }else {
  76. sysUser.setUserType(sysUser1.getUserType() + ",SYSTEM");
  77. }
  78. if(sysUser.getRoles() != null){
  79. sysUserDao.batchAddEmployeeRole(sysUser1.getId(),sysUser.getRoles());
  80. }
  81. sysUser.setId(sysUser1.getId());
  82. sysUserDao.update(sysUser);
  83. employee.setUserId(sysUser1.getId());
  84. employee.setDelFlag(false);
  85. employee.setEmployeeType("EMPLOYEE");
  86. employeeDao.update(employee);
  87. }else{
  88. throw new BizException("用户已存在");
  89. }
  90. return;
  91. }
  92. // sysUser.setTenantId(tenantId);
  93. sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
  94. sysUser.setUserType("SYSTEM");
  95. sysUserDao.insert(sysUser);
  96. employee.setUserId(sysUser.getId());
  97. employee.setEmployeeType("EMPLOYEE");
  98. employeeDao.insert(employee);
  99. //新增用户角色
  100. sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
  101. ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(),null));
  102. sysUser.setImToken(imResult.getToken());
  103. sysUserDao.update(sysUser);
  104. }
  105. @Override
  106. @Transactional(rollbackFor = Exception.class)
  107. public void updateEmployee(Employee employee) {
  108. SysUser sysUser = employee.getSysUser();
  109. sysUser.setId(employee.getUserId());
  110. if(null == employeeDao.get(sysUser.getId())){
  111. throw new BizException("员工信息不存在");
  112. }
  113. employee.setUserId(sysUser.getId());
  114. if(StringUtils.isNotEmpty(sysUser.getPhone())){
  115. SysUser queryByPhone = sysUserDao.queryByPhone(sysUser.getPhone());
  116. if(queryByPhone != null && !sysUser.getId().equals(queryByPhone.getId())){
  117. throw new BizException("手机号已存在");
  118. }
  119. }
  120. employee.setEmployeeType("EMPLOYEE");
  121. employeeDao.update(employee);
  122. Organization organization = organizationDao.findByUserId(employee.getUserId());
  123. if(organization != null){
  124. List<Organization> childOrgans = organizationDao.getChildOrgans(organization.getParentOrganIdTag());
  125. Set<Integer> userIds = childOrgans.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
  126. userIds.add(sysUser.getId());
  127. sysUserDao.batchDelEmployeeRole(userIds);
  128. if(sysUser.getRoles() != null){
  129. sysUserDao.batchAddEmployeeRoles(userIds,sysUser.getRoles());
  130. }
  131. }else {
  132. sysUserDao.delEmployeeRole(sysUser.getId());
  133. sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
  134. }
  135. sysUserDao.update(sysUser);
  136. imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
  137. }
  138. @Override
  139. @Transactional(rollbackFor = Exception.class)
  140. public void del(Integer id) {
  141. SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
  142. Employee employee = employeeDao.get(id);
  143. if(queryUserInfo.getId().equals(employee.getUserId())){
  144. throw new BizException("删除失败:不支持此操作");
  145. }
  146. SysUser sysUser = employee.getSysUser();
  147. String userType = sysUser.getUserType();
  148. if(userType.contains(",SYSTEM")){
  149. userType = userType.replace(",SYSTEM","");
  150. }else if(userType.contains("SYSTEM,")){
  151. userType = userType.replace("SYSTEM,","");
  152. }else {
  153. userType = "";
  154. }
  155. sysUserDao.updateUserType(sysUser.getId(),userType);
  156. sysUserDao.delEmployeeRole(employee.getUserId());
  157. employeeDao.delete(id);
  158. }
  159. @Override
  160. public Employee getEmployee(Integer id) {
  161. Employee employee = employeeDao.get(id);
  162. SysUser sysUser = employee.getSysUser();
  163. Integer roleIds = sysUserDao.queryRoleIds(sysUser.getId());
  164. sysUser.setRoles(roleIds);
  165. return employee;
  166. }
  167. }