StudentServiceImpl.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.keao.edu.user.service.impl;
  2. import com.keao.edu.auth.api.entity.SysUser;
  3. import com.keao.edu.common.dal.BaseDAO;
  4. import com.keao.edu.common.exception.BizException;
  5. import com.keao.edu.common.page.PageInfo;
  6. import com.keao.edu.common.page.QueryInfo;
  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.api.entity.Student;
  12. import com.keao.edu.user.dao.EmployeeDao;
  13. import com.keao.edu.user.dao.StudentDao;
  14. import com.keao.edu.user.dao.StudentExamResultDao;
  15. import com.keao.edu.user.dao.SysUserDao;
  16. import com.keao.edu.user.dto.StudentExamPaymentDto;
  17. import com.keao.edu.user.entity.Employee;
  18. import com.keao.edu.user.page.StudentApplyQueryInfo;
  19. import com.keao.edu.user.service.StudentService;
  20. import com.keao.edu.util.collection.MapUtil;
  21. import org.apache.commons.lang3.StringUtils;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.util.ArrayList;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.stream.Collectors;
  30. /**
  31. * @Author Joburgess
  32. * @Date 2020.06.18
  33. */
  34. @Service
  35. public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implements StudentService {
  36. @Autowired
  37. private StudentDao studentDao;
  38. @Autowired
  39. private SysUserDao sysUserDao;
  40. @Autowired
  41. private EmployeeDao employeeDao;
  42. @Autowired
  43. private StudentExamResultDao studentExamResultDao;
  44. @Autowired
  45. private ImFeignService imFeignService;
  46. @Override
  47. public BaseDAO<Integer, Student> getDAO() {
  48. return studentDao;
  49. }
  50. @Override
  51. @Transactional(rollbackFor = Exception.class)
  52. public void addStudent(Student student) {
  53. SysUser sysUser = student.getSysUser();
  54. if (sysUser == null || StringUtils.isEmpty(sysUser.getPhone())) {
  55. throw new BizException("参数校验失败");
  56. }
  57. SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
  58. if (user != null && user.getId() != null) {
  59. Employee employee = employeeDao.get(user.getId());
  60. if(employee != null && employee.getDelFlag() == false && employee.getEmployeeType().equals("ORGAN")){
  61. throw new BizException("手机号被占用");
  62. }
  63. Student stu = studentDao.get(user.getId());
  64. if (stu == null) {
  65. student.setUserId(user.getId());
  66. // student.setTenantId(user.getTenantId());
  67. studentDao.insert(student);
  68. sysUser.setId(user.getId());
  69. sysUser.setUserType(user.getUserType() + ",STUDENT");
  70. sysUserDao.update(sysUser);
  71. } else {
  72. throw new BizException("用户已存在");
  73. }
  74. return;
  75. }
  76. sysUser.setUserType("STUDENT");
  77. sysUserDao.insert(sysUser);
  78. ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(), null));
  79. sysUser.setImToken(imResult.getToken());
  80. sysUserDao.update(sysUser);
  81. student.setUserId(sysUser.getId());
  82. studentDao.insert(student);
  83. }
  84. @Override
  85. public void updateStudent(Student student) {
  86. Integer userId = student.getUserId();
  87. SysUser sysUser = student.getSysUser();
  88. if (userId == null || StringUtils.isEmpty(sysUser.getPhone())) {
  89. throw new BizException("参数校验失败");
  90. }
  91. SysUser sysUser1 = sysUserDao.queryByPhone(sysUser.getPhone());
  92. if (sysUser1 != null && !userId.equals(sysUser1.getId())) {
  93. throw new BizException("手机号已被占用");
  94. }
  95. sysUserDao.update(sysUser);
  96. studentDao.update(student);
  97. }
  98. @Override
  99. public PageInfo<Student> queryStudentPage(QueryInfo queryInfo) {
  100. PageInfo<Student> studentPageInfo = queryPage(queryInfo);
  101. List<Student> rows = studentPageInfo.getRows();
  102. if (rows != null && rows.size() > 0) {
  103. List<Integer> studentIds = rows.stream().map(e -> e.getUserId()).collect(Collectors.toList());
  104. //获取考试次数
  105. Map<Integer, Integer> examNumMap = MapUtil.convertMybatisMap(studentExamResultDao.countExamNum(studentIds, queryInfo.getTenantId()),Integer.class,Integer.class);
  106. rows.forEach(e -> {
  107. e.setExamNum(examNumMap.get(e.getUserId()));
  108. });
  109. }
  110. return studentPageInfo;
  111. }
  112. @Override
  113. public PageInfo<StudentExamPaymentDto> queryApplyList(StudentApplyQueryInfo queryInfo) {
  114. PageInfo<StudentExamPaymentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
  115. Map<String, Object> params = new HashMap<>();
  116. MapUtil.populateMap(params, queryInfo);
  117. List<StudentExamPaymentDto> dataList = null;
  118. int count = studentDao.countApplyList(params);
  119. if (count > 0) {
  120. pageInfo.setTotal(count);
  121. params.put("offset", pageInfo.getOffset());
  122. dataList = studentDao.queryApplyList(params);
  123. List<Long> basicIds = dataList.stream().map(e -> e.getExamRegistration().getExaminationBasicId()).collect(Collectors.toList());
  124. Map<Integer, String> basicNameMap = this.getMap("examination_basic", "id_", "name_", basicIds, Integer.class, String.class);
  125. Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", basicIds, Integer.class, String.class);
  126. Map<Integer, String> subjectNameMap = this.getMap("subject", "id_", "name_", basicIds, Integer.class, String.class);
  127. dataList.forEach(e -> {
  128. e.setExamBaseName(basicNameMap.get(e.getExamRegistration().getExaminationBasicId()));
  129. e.setOrganName(organNameMap.get(e.getExamRegistration().getOrganId()));
  130. e.setOrganName(subjectNameMap.get(e.getExamRegistration().getSubjectId()));
  131. });
  132. }
  133. if (count == 0) {
  134. dataList = new ArrayList<>();
  135. }
  136. pageInfo.setRows(dataList);
  137. return pageInfo;
  138. }
  139. @Override
  140. public Student getStudent(Integer userId) {
  141. return studentDao.getStudent(userId);
  142. }
  143. @Override
  144. @Transactional
  145. public Student updateInfo(Student student) {
  146. student.setId(student.getUserId());
  147. if (sysUserDao.update(student) <= 0 || studentDao.update(student) <= 0) {
  148. throw new BizException("学生信息更新失败,请重试");
  149. }
  150. return student;
  151. }
  152. }