TeacherServiceImpl.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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.page.PageInfo;
  7. import com.keao.edu.common.service.impl.BaseServiceImpl;
  8. import com.keao.edu.im.api.client.ImFeignService;
  9. import com.keao.edu.im.api.entity.ImResult;
  10. import com.keao.edu.im.api.entity.ImUserModel;
  11. import com.keao.edu.user.dao.EmployeeDao;
  12. import com.keao.edu.user.dao.SysUserDao;
  13. import com.keao.edu.user.dao.TeacherDao;
  14. import com.keao.edu.user.entity.Employee;
  15. import com.keao.edu.user.entity.Teacher;
  16. import com.keao.edu.user.page.TeacherQueryInfo;
  17. import com.keao.edu.user.service.TeacherService;
  18. import com.keao.edu.util.collection.MapUtil;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. @Service
  26. public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implements TeacherService {
  27. @Autowired
  28. private TeacherDao teacherDao;
  29. @Autowired
  30. private SysUserDao sysUserDao;
  31. @Autowired
  32. private EmployeeDao employeeDao;
  33. @Autowired
  34. private ImFeignService imFeignService;
  35. @Autowired
  36. private SysUserFeignService sysUserFeignService;
  37. @Override
  38. public BaseDAO<Integer, Teacher> getDAO() {
  39. return teacherDao;
  40. }
  41. @Override
  42. @Transactional(rollbackFor = Exception.class)
  43. public int add(Teacher teacher) {
  44. SysUser sysUser = teacher.getSysUser();
  45. SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
  46. Date date = new Date();
  47. if(user != null && user.getId() != null){
  48. Employee employee = employeeDao.get(user.getId());
  49. if(employee != null && employee.getDelFlag() == false && employee.getEmployeeType().equals("ORGAN")){
  50. throw new BizException("手机号被占用");
  51. }
  52. Integer id = user.getId();
  53. sysUser.setId(id);
  54. Teacher teacher1 = teacherDao.get(id);
  55. if(teacher1 == null || teacher1.getUserId() == null){
  56. teacher.setUserId(id);
  57. teacherDao.insert(teacher);
  58. if(StringUtils.isEmpty(user.getUserType())){
  59. sysUser.setUserType("TEACHER");
  60. }else {
  61. sysUser.setUserType(user.getUserType() + ",TEACHER");
  62. }
  63. sysUser.setUpdateTime(date);
  64. sysUserDao.update(sysUser);
  65. }else if (teacher1.getDelFlag() == 1){
  66. teacher.setUserId(id);
  67. if(StringUtils.isEmpty(user.getUserType())){
  68. sysUser.setUserType("TEACHER");
  69. }else {
  70. sysUser.setUserType(user.getUserType() + ",TEACHER");
  71. }
  72. sysUserDao.update(sysUser);
  73. teacher.setDelFlag(0);
  74. teacherDao.update(teacher);
  75. }else {
  76. throw new BizException("用户已存在");
  77. }
  78. return id;
  79. }
  80. sysUser.setUserType("TEACHER");
  81. sysUserDao.insert(sysUser);
  82. Integer userId = sysUser.getId();
  83. teacher.setUserId(userId);
  84. teacherDao.insert(teacher);
  85. ImResult imResult = imFeignService.register(new ImUserModel(userId.toString(), sysUser.getRealName(), sysUser.getAvatar()));
  86. if(imResult != null){
  87. sysUser.setImToken(imResult.getToken());
  88. sysUserDao.update(sysUser);
  89. }
  90. return userId;
  91. }
  92. @Override
  93. @Transactional(rollbackFor = Exception.class)
  94. public void updateTeacher(Teacher teacher) {
  95. SysUser sysUser = teacher.getSysUser();
  96. sysUser.setId(teacher.getUserId());
  97. if(null == teacherDao.get(sysUser.getId())){
  98. throw new BizException("教师信息不存在");
  99. }
  100. if(StringUtils.isNotEmpty(sysUser.getPhone())){
  101. SysUser queryUserByMobile = sysUserDao.queryByPhone(sysUser.getPhone());
  102. if(queryUserByMobile != null && !sysUser.getId().equals(queryUserByMobile.getId())){
  103. throw new BizException("手机号已存在");
  104. }
  105. }
  106. Date date = new Date();
  107. teacher.setUpdateTime(date);
  108. teacherDao.update(teacher);
  109. sysUserDao.update(sysUser);
  110. imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
  111. }
  112. @Override
  113. public PageInfo<Teacher> queryTeacherPage(TeacherQueryInfo queryInfo) {
  114. PageInfo<Teacher> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
  115. Map<String, Object> params = new HashMap<>();
  116. MapUtil.populateMap(params, queryInfo);
  117. List<Teacher> dataList = null;
  118. int count = this.findCount(params);
  119. if (count > 0) {
  120. pageInfo.setTotal(count);
  121. params.put("offset", pageInfo.getOffset());
  122. dataList = this.getDAO().queryPage(params);
  123. Set<Integer> teacherIds = dataList.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
  124. Map<Integer,String> subjectNames = MapUtil.convertMybatisMap(teacherDao.queryTeacherSubjectNames(teacherIds),Integer.class,String.class);
  125. dataList.forEach(e->{
  126. e.setSubjectName(subjectNames.get(e.getUserId()));
  127. });
  128. }
  129. if (count == 0) {
  130. dataList = new ArrayList<>();
  131. }
  132. pageInfo.setRows(dataList);
  133. return pageInfo;
  134. }
  135. @Override
  136. @Transactional(rollbackFor = Exception.class)
  137. public void del(Integer id) {
  138. SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
  139. Teacher teacher = teacherDao.get(id);
  140. if(queryUserInfo.getId().equals(teacher.getUserId())){
  141. throw new BizException("删除失败:不支持此操作");
  142. }
  143. String userType = teacher.getSysUser().getUserType();
  144. if(userType.contains(",TEACHER")){
  145. userType = userType.replace(",TEACHER","");
  146. }else if(userType.contains("TEACHER,")){
  147. userType = userType.replace("TEACHER,","");
  148. }else {
  149. userType = "";
  150. }
  151. sysUserDao.updateUserType(teacher.getUserId(),userType);
  152. teacherDao.delete(id);
  153. }
  154. }