BaseClassDynamicsServiceImpl.java 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package com.xjrsoft.module.base.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.github.yulichang.base.MPJBaseServiceImpl;
  8. import com.github.yulichang.wrapper.MPJLambdaWrapper;
  9. import com.xjrsoft.common.utils.LocalDateTimeUtil;
  10. import com.xjrsoft.common.utils.VoToColumnUtil;
  11. import com.xjrsoft.config.CommonPropertiesConfig;
  12. import com.xjrsoft.module.base.dto.AddBaseClassDynamicsDto;
  13. import com.xjrsoft.module.base.entity.BaseClass;
  14. import com.xjrsoft.module.base.entity.BaseClassDynamics;
  15. import com.xjrsoft.module.base.entity.BaseClassDynamicsRelation;
  16. import com.xjrsoft.module.base.mapper.BaseClassDynamicsMapper;
  17. import com.xjrsoft.module.base.mapper.BaseClassDynamicsRelationMapper;
  18. import com.xjrsoft.module.base.service.IBaseClassDynamicsService;
  19. import com.xjrsoft.module.base.service.IBaseClassService;
  20. import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
  21. import com.xjrsoft.module.organization.entity.User;
  22. import com.xjrsoft.module.organization.entity.UserStudent;
  23. import com.xjrsoft.module.organization.service.IUserService;
  24. import com.xjrsoft.module.organization.service.IWeChatService;
  25. import com.xjrsoft.module.student.dto.BaseStudentUserPageDto;
  26. import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
  27. import com.xjrsoft.module.student.service.IBaseStudentService;
  28. import com.xjrsoft.module.student.vo.BaseStudentUserPageVo;
  29. import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
  30. import lombok.AllArgsConstructor;
  31. import me.zhyd.oauth.log.Log;
  32. import org.camunda.bpm.engine.history.HistoricProcessInstance;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import java.time.LocalDateTime;
  36. import java.util.ArrayList;
  37. import java.util.Date;
  38. import java.util.List;
  39. /**
  40. * @title: 班级动态表
  41. * @Author dzx
  42. * @Date: 2024-09-04
  43. * @Version 1.0
  44. */
  45. @Service
  46. @AllArgsConstructor
  47. public class BaseClassDynamicsServiceImpl extends MPJBaseServiceImpl<BaseClassDynamicsMapper, BaseClassDynamics> implements IBaseClassDynamicsService {
  48. private final IBaseStudentService studentService;
  49. private final IUserService userService;
  50. private final BaseClassDynamicsRelationMapper dynamicsRelationMapper;
  51. private final CommonPropertiesConfig commonPropertiesConfig;
  52. private final IWeChatService weChatService;
  53. private final IBaseClassService classService;
  54. @Override
  55. @Transactional
  56. public Boolean add(AddBaseClassDynamicsDto dto) {
  57. LocalDateTime now = LocalDateTime.now();
  58. BaseClassDynamics baseClassDynamics = BeanUtil.toBean(dto, BaseClassDynamics.class);
  59. baseClassDynamics.setCreateDate(new Date());
  60. this.save(baseClassDynamics);
  61. BaseClass aClass = classService.getById(dto.getClassId());
  62. List<Long> classIds = new ArrayList<>();
  63. classIds.add(dto.getClassId());
  64. if(baseClassDynamics.getRoleType().contains("3")){
  65. List<BaseStudentUserPageVo> studentList = studentService.getStudentList(new BaseStudentUserPageDto() {{
  66. setClassIds(classIds);
  67. }});
  68. for (BaseStudentUserPageVo studentUserPageVo : studentList) {
  69. BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
  70. setBaseClassDynamicsId(baseClassDynamics.getId());
  71. setUserId(Long.parseLong(studentUserPageVo.getId()));
  72. setReadMark(0);
  73. }};
  74. dynamicsRelationMapper.insert(dynamicsRelation);
  75. try {
  76. WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
  77. weChatSendMessageDto.setUserId(studentUserPageVo.getOpenId());
  78. weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
  79. weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
  80. weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
  81. JSONObject data = new JSONObject();
  82. JSONObject data1 = new JSONObject();
  83. data1.put("value", baseClassDynamics.getTitle());
  84. data.put("thing23", data1);
  85. JSONObject data2 = new JSONObject();
  86. data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
  87. data.put("thing29", data2);
  88. JSONObject data3 = new JSONObject();
  89. data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
  90. data.put("time17", data3);
  91. weChatSendMessageDto.setContent(data);
  92. weChatService.sendTemplateMessage(weChatSendMessageDto);
  93. }catch (Exception e){
  94. Log.error(e.getMessage());
  95. }
  96. }
  97. }
  98. if(baseClassDynamics.getRoleType().contains("4")){
  99. List<User> list = userService.list(
  100. new MPJLambdaWrapper<User>()
  101. .select(User::getId)
  102. .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
  103. .innerJoin(UserStudent.class, UserStudent::getUserId, User::getId)
  104. .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, UserStudent::getStudentId)
  105. .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, UserStudent::getId)
  106. .eq(BaseStudentSchoolRoll::getClassId, dto.getClassId())
  107. .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
  108. .isNotNull(User::getOpenId)
  109. );
  110. for (User user : list) {
  111. BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
  112. setBaseClassDynamicsId(baseClassDynamics.getId());
  113. setUserId(user.getId());
  114. setReadMark(0);
  115. }};
  116. dynamicsRelationMapper.insert(dynamicsRelation);
  117. try {
  118. WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
  119. weChatSendMessageDto.setUserId(user.getOpenId());
  120. weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
  121. weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
  122. weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
  123. JSONObject data = new JSONObject();
  124. JSONObject data1 = new JSONObject();
  125. data1.put("value", baseClassDynamics.getTitle());
  126. data.put("thing23", data1);
  127. JSONObject data2 = new JSONObject();
  128. data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
  129. data.put("thing29", data2);
  130. JSONObject data3 = new JSONObject();
  131. data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
  132. data.put("time17", data3);
  133. weChatSendMessageDto.setContent(data);
  134. weChatService.sendTemplateMessage(weChatSendMessageDto);
  135. }catch (Exception e){
  136. Log.error(e.getMessage());
  137. }
  138. }
  139. }
  140. return true;
  141. }
  142. @Override
  143. @Transactional
  144. public Boolean read(Long baseClassDynamicsId) {
  145. List<BaseClassDynamicsRelation> list = dynamicsRelationMapper.selectList(
  146. new QueryWrapper<BaseClassDynamicsRelation>().lambda()
  147. .eq(BaseClassDynamicsRelation::getBaseClassDynamicsId, baseClassDynamicsId)
  148. .eq(BaseClassDynamicsRelation::getUserId, StpUtil.getLoginIdAsLong())
  149. );
  150. for (BaseClassDynamicsRelation dynamicsRelation : list) {
  151. dynamicsRelation.setReadMark(1);
  152. dynamicsRelation.setReadDate(LocalDateTime.now());
  153. dynamicsRelationMapper.updateById(dynamicsRelation);
  154. }
  155. return true;
  156. }
  157. }