StudentManagerServiceImpl.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. package com.xjrsoft.module.student.service.impl;
  2. import cn.dev33.satoken.secure.BCrypt;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.github.yulichang.base.MPJBaseServiceImpl;
  7. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  8. import com.xjrsoft.common.enums.RoleEnum;
  9. import com.xjrsoft.common.page.ConventPage;
  10. import com.xjrsoft.module.base.entity.BaseClass;
  11. import com.xjrsoft.module.base.mapper.BaseClassMapper;
  12. import com.xjrsoft.module.organization.entity.UserRoleRelation;
  13. import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
  14. import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
  15. import com.xjrsoft.module.student.entity.BaseStudent;
  16. import com.xjrsoft.module.student.entity.BaseStudentContact;
  17. import com.xjrsoft.module.student.entity.BaseStudentFamily;
  18. import com.xjrsoft.module.student.entity.BaseStudentFamilyMember;
  19. import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
  20. import com.xjrsoft.module.student.entity.BaseStudentSubsidize;
  21. import com.xjrsoft.module.student.entity.BaseStudentUser;
  22. import com.xjrsoft.module.student.mapper.BaseStudentContactMapper;
  23. import com.xjrsoft.module.student.mapper.BaseStudentFamilyMapper;
  24. import com.xjrsoft.module.student.mapper.BaseStudentFamilyMemberMapper;
  25. import com.xjrsoft.module.student.mapper.BaseStudentMapper;
  26. import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
  27. import com.xjrsoft.module.student.mapper.BaseStudentSubsidizeMapper;
  28. import com.xjrsoft.module.student.mapper.BaseStudentUserMapper;
  29. import com.xjrsoft.module.student.service.IStudentManagerService;
  30. import com.xjrsoft.module.student.vo.BaseStudentClassVo;
  31. import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
  32. import lombok.AllArgsConstructor;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import java.util.List;
  36. import java.util.Objects;
  37. import java.util.stream.Collectors;
  38. @Service
  39. @AllArgsConstructor
  40. public class StudentManagerServiceImpl extends MPJBaseServiceImpl<BaseStudentUserMapper, BaseStudentUser> implements IStudentManagerService {
  41. private final com.xjrsoft.module.student.mapper.BaseStudentUserMapper studentbaseManagerBaseStudentUserMapper;
  42. private final BaseStudentMapper studentbaseManagerBaseStudentMapper;
  43. private final BaseClassMapper baseClassMapper;
  44. private final BaseStudentContactMapper studentbaseManagerBaseStudentContactMapper;
  45. private final BaseStudentFamilyMapper studentbaseManagerBaseStudentFamilyMapper;
  46. private final BaseStudentFamilyMemberMapper studentbaseManagerBaseStudentFamilyMemberMapper;
  47. private final BaseStudentSchoolRollMapper studentbaseManagerBaseStudentSchoolRollMapper;
  48. private final BaseStudentSubsidizeMapper studentbaseManagerBaseStudentSubsidizeMapper;
  49. private final UserRoleRelationMapper userRoleRelationMapper;
  50. @Override
  51. @Transactional(rollbackFor = Exception.class)
  52. public Boolean add(BaseStudentUser baseStudentUser) {
  53. // 用户身份证后6位作为默认密码
  54. if (baseStudentUser.getCredentialNumber() != null && baseStudentUser.getCredentialNumber().length() > 6) {
  55. String str = baseStudentUser.getCredentialNumber();
  56. String lastSix = str.substring(str.length() - 6);
  57. baseStudentUser.setPassword(BCrypt.hashpw(lastSix, BCrypt.gensalt()));
  58. }
  59. studentbaseManagerBaseStudentUserMapper.insert(baseStudentUser);
  60. for (BaseStudent baseStudent : baseStudentUser.getBaseStudentList()) {
  61. baseStudent.setUserId(baseStudentUser.getId());
  62. studentbaseManagerBaseStudentMapper.insert(baseStudent);
  63. }
  64. for (BaseStudentContact baseStudentContact : baseStudentUser.getBaseStudentContactList()) {
  65. baseStudentContact.setUserId(baseStudentUser.getId());
  66. studentbaseManagerBaseStudentContactMapper.insert(baseStudentContact);
  67. }
  68. for (BaseStudentFamily BaseStudentFamily : baseStudentUser.getBaseStudentFamilyList()) {
  69. BaseStudentFamily.setUserId(baseStudentUser.getId());
  70. studentbaseManagerBaseStudentFamilyMapper.insert(BaseStudentFamily);
  71. }
  72. for (BaseStudentFamilyMember BaseStudentFamilyMember : baseStudentUser.getBaseStudentFamilyMemberList()) {
  73. BaseStudentFamilyMember.setUserId(baseStudentUser.getId());
  74. studentbaseManagerBaseStudentFamilyMemberMapper.insert(BaseStudentFamilyMember);
  75. }
  76. for (BaseStudentSchoolRoll baseStudentSchoolRoll : baseStudentUser.getBaseStudentSchoolRollList()) {
  77. baseStudentSchoolRoll.setUserId(baseStudentUser.getId());
  78. studentbaseManagerBaseStudentSchoolRollMapper.insert(baseStudentSchoolRoll);
  79. }
  80. for (BaseStudentSubsidize baseStudentSubsidize : baseStudentUser.getBaseStudentSubsidizeList()) {
  81. baseStudentSubsidize.setUserId(baseStudentUser.getId());
  82. studentbaseManagerBaseStudentSubsidizeMapper.insert(baseStudentSubsidize);
  83. }
  84. // 添加角色
  85. UserRoleRelation userRoleRelation = new UserRoleRelation();
  86. userRoleRelation.setUserId(baseStudentUser.getId());
  87. userRoleRelation.setRoleId(RoleEnum.STUDENT.getCode());
  88. userRoleRelationMapper.insert(userRoleRelation);
  89. return true;
  90. }
  91. @Override
  92. @Transactional(rollbackFor = Exception.class)
  93. public Boolean update(BaseStudentUser baseStudentUser) {
  94. studentbaseManagerBaseStudentUserMapper.updateById(baseStudentUser);
  95. //********************************* BaseStudent 增删改 开始 *******************************************/
  96. {
  97. // 查出所有子级的id
  98. List<BaseStudent> baseStudentList = studentbaseManagerBaseStudentMapper.selectList(Wrappers.lambdaQuery(BaseStudent.class).eq(BaseStudent::getUserId, baseStudentUser.getId()).select(BaseStudent::getId));
  99. List<Long> baseStudentIds = baseStudentList.stream().map(BaseStudent::getId).collect(Collectors.toList());
  100. //原有子表单 没有被删除的主键
  101. List<Long> baseStudentOldIds = baseStudentUser.getBaseStudentList().stream().map(BaseStudent::getId).filter(Objects::nonNull).collect(Collectors.toList());
  102. //找到需要删除的id
  103. List<Long> baseStudentRemoveIds = baseStudentIds.stream().filter(item -> !baseStudentOldIds.contains(item)).collect(Collectors.toList());
  104. for (BaseStudent baseStudent : baseStudentUser.getBaseStudentList()) {
  105. //如果不等于空则修改
  106. if (baseStudent.getId() != null) {
  107. studentbaseManagerBaseStudentMapper.updateById(baseStudent);
  108. }
  109. //如果等于空 则新增
  110. else {
  111. //已经不存在的id 删除
  112. baseStudent.setUserId(baseStudentUser.getId());
  113. studentbaseManagerBaseStudentMapper.insert(baseStudent);
  114. }
  115. }
  116. //已经不存在的id 删除
  117. if (baseStudentRemoveIds.size() > 0) {
  118. studentbaseManagerBaseStudentMapper.deleteBatchIds(baseStudentRemoveIds);
  119. }
  120. }
  121. //********************************* BaseStudent 增删改 结束 *******************************************/
  122. //********************************* BaseStudentContact 增删改 开始 *******************************************/
  123. {
  124. // 查出所有子级的id
  125. List<BaseStudentContact> baseStudentContactList = studentbaseManagerBaseStudentContactMapper.selectList(Wrappers.lambdaQuery(BaseStudentContact.class).eq(BaseStudentContact::getUserId, baseStudentUser.getId()).select(BaseStudentContact::getId));
  126. List<Long> baseStudentContactIds = baseStudentContactList.stream().map(BaseStudentContact::getId).collect(Collectors.toList());
  127. //原有子表单 没有被删除的主键
  128. List<Long> baseStudentContactOldIds = baseStudentUser.getBaseStudentContactList().stream().map(BaseStudentContact::getId).filter(Objects::nonNull).collect(Collectors.toList());
  129. //找到需要删除的id
  130. List<Long> baseStudentContactRemoveIds = baseStudentContactIds.stream().filter(item -> !baseStudentContactOldIds.contains(item)).collect(Collectors.toList());
  131. for (BaseStudentContact baseStudentContact : baseStudentUser.getBaseStudentContactList()) {
  132. //如果不等于空则修改
  133. if (baseStudentContact.getId() != null) {
  134. studentbaseManagerBaseStudentContactMapper.updateById(baseStudentContact);
  135. }
  136. //如果等于空 则新增
  137. else {
  138. //已经不存在的id 删除
  139. baseStudentContact.setUserId(baseStudentUser.getId());
  140. studentbaseManagerBaseStudentContactMapper.insert(baseStudentContact);
  141. }
  142. }
  143. //已经不存在的id 删除
  144. if (baseStudentContactRemoveIds.size() > 0) {
  145. studentbaseManagerBaseStudentContactMapper.deleteBatchIds(baseStudentContactRemoveIds);
  146. }
  147. }
  148. //********************************* BaseStudentContact 增删改 结束 *******************************************/
  149. //********************************* BaseStudentFamily 增删改 开始 *******************************************/
  150. {
  151. // 查出所有子级的id
  152. List<BaseStudentFamily> BaseStudentFamilyList = studentbaseManagerBaseStudentFamilyMapper.selectList(Wrappers.lambdaQuery(BaseStudentFamily.class).eq(BaseStudentFamily::getUserId, baseStudentUser.getId()).select(BaseStudentFamily::getId));
  153. List<Long> BaseStudentFamilyIds = BaseStudentFamilyList.stream().map(BaseStudentFamily::getId).collect(Collectors.toList());
  154. //原有子表单 没有被删除的主键
  155. List<Long> BaseStudentFamilyOldIds = baseStudentUser.getBaseStudentFamilyList().stream().map(BaseStudentFamily::getId).filter(Objects::nonNull).collect(Collectors.toList());
  156. //找到需要删除的id
  157. List<Long> BaseStudentFamilyRemoveIds = BaseStudentFamilyIds.stream().filter(item -> !BaseStudentFamilyOldIds.contains(item)).collect(Collectors.toList());
  158. for (BaseStudentFamily BaseStudentFamily : baseStudentUser.getBaseStudentFamilyList()) {
  159. //如果不等于空则修改
  160. if (BaseStudentFamily.getId() != null) {
  161. studentbaseManagerBaseStudentFamilyMapper.updateById(BaseStudentFamily);
  162. }
  163. //如果等于空 则新增
  164. else {
  165. //已经不存在的id 删除
  166. BaseStudentFamily.setUserId(baseStudentUser.getId());
  167. studentbaseManagerBaseStudentFamilyMapper.insert(BaseStudentFamily);
  168. }
  169. }
  170. //已经不存在的id 删除
  171. if (BaseStudentFamilyRemoveIds.size() > 0) {
  172. studentbaseManagerBaseStudentFamilyMapper.deleteBatchIds(BaseStudentFamilyRemoveIds);
  173. }
  174. }
  175. //********************************* BaseStudentFamily 增删改 结束 *******************************************/
  176. //********************************* BaseStudentFamilyMember 增删改 开始 *******************************************/
  177. {
  178. // 查出所有子级的id
  179. List<BaseStudentFamilyMember> BaseStudentFamilyMemberList = studentbaseManagerBaseStudentFamilyMemberMapper.selectList(Wrappers.lambdaQuery(BaseStudentFamilyMember.class).eq(BaseStudentFamilyMember::getUserId, baseStudentUser.getId()).select(BaseStudentFamilyMember::getId));
  180. List<Long> BaseStudentFamilyMemberIds = BaseStudentFamilyMemberList.stream().map(BaseStudentFamilyMember::getId).collect(Collectors.toList());
  181. //原有子表单 没有被删除的主键
  182. List<Long> BaseStudentFamilyMemberOldIds = baseStudentUser.getBaseStudentFamilyMemberList().stream().map(BaseStudentFamilyMember::getId).filter(Objects::nonNull).collect(Collectors.toList());
  183. //找到需要删除的id
  184. List<Long> BaseStudentFamilyMemberRemoveIds = BaseStudentFamilyMemberIds.stream().filter(item -> !BaseStudentFamilyMemberOldIds.contains(item)).collect(Collectors.toList());
  185. for (BaseStudentFamilyMember BaseStudentFamilyMember : baseStudentUser.getBaseStudentFamilyMemberList()) {
  186. //如果不等于空则修改
  187. if (BaseStudentFamilyMember.getId() != null) {
  188. studentbaseManagerBaseStudentFamilyMemberMapper.updateById(BaseStudentFamilyMember);
  189. }
  190. //如果等于空 则新增
  191. else {
  192. //已经不存在的id 删除
  193. BaseStudentFamilyMember.setUserId(baseStudentUser.getId());
  194. studentbaseManagerBaseStudentFamilyMemberMapper.insert(BaseStudentFamilyMember);
  195. }
  196. }
  197. //已经不存在的id 删除
  198. if (BaseStudentFamilyMemberRemoveIds.size() > 0) {
  199. studentbaseManagerBaseStudentFamilyMemberMapper.deleteBatchIds(BaseStudentFamilyMemberRemoveIds);
  200. }
  201. }
  202. //********************************* BaseStudentFamilyMember 增删改 结束 *******************************************/
  203. //********************************* StudentSchoolRoll 增删改 开始 *******************************************/
  204. {
  205. // 查出所有子级的id
  206. List<BaseStudentSchoolRoll> baseStudentSchoolRollList = studentbaseManagerBaseStudentSchoolRollMapper.selectList(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).eq(BaseStudentSchoolRoll::getUserId, baseStudentUser.getId()).select(BaseStudentSchoolRoll::getId));
  207. List<Long> baseStudentSchoolRollIds = baseStudentSchoolRollList.stream().map(BaseStudentSchoolRoll::getId).collect(Collectors.toList());
  208. //原有子表单 没有被删除的主键
  209. List<Long> baseStudentSchoolRollOldIds = baseStudentUser.getBaseStudentSchoolRollList().stream().map(BaseStudentSchoolRoll::getId).filter(Objects::nonNull).collect(Collectors.toList());
  210. //找到需要删除的id
  211. List<Long> baseStudentSchoolRollRemoveIds = baseStudentSchoolRollIds.stream().filter(item -> !baseStudentSchoolRollOldIds.contains(item)).collect(Collectors.toList());
  212. for (BaseStudentSchoolRoll baseStudentSchoolRoll : baseStudentUser.getBaseStudentSchoolRollList()) {
  213. //如果不等于空则修改
  214. if (baseStudentSchoolRoll.getId() != null) {
  215. studentbaseManagerBaseStudentSchoolRollMapper.updateById(baseStudentSchoolRoll);
  216. }
  217. //如果等于空 则新增
  218. else {
  219. //已经不存在的id 删除
  220. baseStudentSchoolRoll.setUserId(baseStudentUser.getId());
  221. studentbaseManagerBaseStudentSchoolRollMapper.insert(baseStudentSchoolRoll);
  222. }
  223. }
  224. //已经不存在的id 删除
  225. if (baseStudentSchoolRollRemoveIds.size() > 0) {
  226. studentbaseManagerBaseStudentSchoolRollMapper.deleteBatchIds(baseStudentSchoolRollRemoveIds);
  227. }
  228. }
  229. //********************************* StudentSchoolRoll 增删改 结束 *******************************************/
  230. //********************************* BaseStudentSubsidize 增删改 开始 *******************************************/
  231. {
  232. // 查出所有子级的id
  233. List<BaseStudentSubsidize> baseStudentSubsidizeList = studentbaseManagerBaseStudentSubsidizeMapper.selectList(Wrappers.lambdaQuery(BaseStudentSubsidize.class).eq(BaseStudentSubsidize::getUserId, baseStudentUser.getId()).select(BaseStudentSubsidize::getId));
  234. List<Long> baseStudentSubsidizeIds = baseStudentSubsidizeList.stream().map(BaseStudentSubsidize::getId).collect(Collectors.toList());
  235. //原有子表单 没有被删除的主键
  236. List<Long> baseStudentSubsidizeOldIds = baseStudentUser.getBaseStudentSubsidizeList().stream().map(BaseStudentSubsidize::getId).filter(Objects::nonNull).collect(Collectors.toList());
  237. //找到需要删除的id
  238. List<Long> baseStudentSubsidizeRemoveIds = baseStudentSubsidizeIds.stream().filter(item -> !baseStudentSubsidizeOldIds.contains(item)).collect(Collectors.toList());
  239. for (BaseStudentSubsidize BaseStudentEducation : baseStudentUser.getBaseStudentSubsidizeList()) {
  240. //如果不等于空则修改
  241. if (BaseStudentEducation.getId() != null) {
  242. studentbaseManagerBaseStudentSubsidizeMapper.updateById(BaseStudentEducation);
  243. }
  244. //如果等于空 则新增
  245. else {
  246. //已经不存在的id 删除
  247. BaseStudentEducation.setUserId(baseStudentUser.getId());
  248. studentbaseManagerBaseStudentSubsidizeMapper.insert(BaseStudentEducation);
  249. }
  250. }
  251. //已经不存在的id 删除
  252. if (baseStudentSubsidizeRemoveIds.size() > 0) {
  253. studentbaseManagerBaseStudentSubsidizeMapper.deleteBatchIds(baseStudentSubsidizeRemoveIds);
  254. }
  255. }
  256. //********************************* BaseStudentEducation 增删改 结束 *******************************************/
  257. return true;
  258. }
  259. @Override
  260. @Transactional(rollbackFor = Exception.class)
  261. public Boolean delete(List<Long> ids) {
  262. studentbaseManagerBaseStudentUserMapper.deleteBatchIds(ids);
  263. studentbaseManagerBaseStudentMapper.delete(Wrappers.lambdaQuery(BaseStudent.class).in(BaseStudent::getUserId, ids));
  264. studentbaseManagerBaseStudentContactMapper.delete(Wrappers.lambdaQuery(BaseStudentContact.class).in(BaseStudentContact::getUserId, ids));
  265. studentbaseManagerBaseStudentFamilyMapper.delete(Wrappers.lambdaQuery(BaseStudentFamily.class).in(BaseStudentFamily::getUserId, ids));
  266. studentbaseManagerBaseStudentFamilyMemberMapper.delete(Wrappers.lambdaQuery(BaseStudentFamilyMember.class).in(BaseStudentFamilyMember::getUserId, ids));
  267. studentbaseManagerBaseStudentSchoolRollMapper.delete(Wrappers.lambdaQuery(BaseStudentSchoolRoll.class).in(BaseStudentSchoolRoll::getUserId, ids));
  268. studentbaseManagerBaseStudentSubsidizeMapper.delete(Wrappers.lambdaQuery(BaseStudentSubsidize.class).in(BaseStudentSubsidize::getUserId, ids));
  269. return true;
  270. }
  271. @Override
  272. public BaseStudentClassVo getStudentClass(Long userId) {
  273. MPJLambdaWrapper<BaseClass> queryWrapper = new MPJLambdaWrapper<>();
  274. queryWrapper
  275. .disableSubLogicDel()
  276. .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseStudent::getId)
  277. .eq(BaseStudentSchoolRoll::getUserId, userId)
  278. .selectAsClass(BaseClass.class, BaseStudentClassVo.class);
  279. BaseClass baseClass = baseClassMapper.selectOne(queryWrapper);
  280. return BeanUtil.toBean(baseClass, BaseStudentClassVo.class);
  281. }
  282. }