BaseClassDynamicsServiceImpl.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. List<BaseStudentUserPageVo> studentList = studentService.getStudentList(new BaseStudentUserPageDto() {{
  65. setClassIds(classIds);
  66. }});
  67. for (BaseStudentUserPageVo studentUserPageVo : studentList) {
  68. BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
  69. setBaseClassDynamicsId(baseClassDynamics.getId());
  70. setUserId(Long.parseLong(studentUserPageVo.getId()));
  71. setReadMark(0);
  72. }};
  73. dynamicsRelationMapper.insert(dynamicsRelation);
  74. try {
  75. WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
  76. weChatSendMessageDto.setUserId(studentUserPageVo.getOpenId());
  77. weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
  78. weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
  79. weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
  80. JSONObject data = new JSONObject();
  81. JSONObject data1 = new JSONObject();
  82. data1.put("value", baseClassDynamics.getTitle());
  83. data.put("thing23", data1);
  84. JSONObject data2 = new JSONObject();
  85. data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
  86. data.put("thing29", data2);
  87. JSONObject data3 = new JSONObject();
  88. data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
  89. data.put("time17", data3);
  90. weChatSendMessageDto.setContent(data);
  91. weChatService.sendTemplateMessage(weChatSendMessageDto);
  92. }catch (Exception e){
  93. Log.error(e.getMessage());
  94. }
  95. }
  96. List<User> list = userService.list(
  97. new MPJLambdaWrapper<User>()
  98. .select(User::getId)
  99. .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
  100. .innerJoin(UserStudent.class, UserStudent::getUserId, User::getId)
  101. .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, UserStudent::getStudentId)
  102. .innerJoin(WorkflowFormRelation.class, WorkflowFormRelation::getFormKeyValue, UserStudent::getId)
  103. .eq(BaseStudentSchoolRoll::getClassId, dto.getClassId())
  104. .eq(WorkflowFormRelation::getCurrentState, HistoricProcessInstance.STATE_COMPLETED)
  105. .isNotNull(User::getOpenId)
  106. );
  107. for (User user : list) {
  108. BaseClassDynamicsRelation dynamicsRelation = new BaseClassDynamicsRelation() {{
  109. setBaseClassDynamicsId(baseClassDynamics.getId());
  110. setUserId(user.getId());
  111. setReadMark(0);
  112. }};
  113. dynamicsRelationMapper.insert(dynamicsRelation);
  114. try {
  115. WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
  116. weChatSendMessageDto.setUserId(user.getOpenId());
  117. weChatSendMessageDto.setTemplateId("qmpXORPM1Cocqn503Qa4On6BJhR92UZ00eod2-6IcGo");
  118. weChatSendMessageDto.setUrl(StrUtil.format("{}pages/student/trends/detail?id={}", commonPropertiesConfig.getDomainApp(), baseClassDynamics.getId()));
  119. weChatSendMessageDto.setMsgId(dynamicsRelation.getId().toString());
  120. JSONObject data = new JSONObject();
  121. JSONObject data1 = new JSONObject();
  122. data1.put("value", baseClassDynamics.getTitle());
  123. data.put("thing23", data1);
  124. JSONObject data2 = new JSONObject();
  125. data2.put("value", (aClass.getName() == null) ? "重庆铜梁职业教育中心" : aClass.getName());
  126. data.put("thing29", data2);
  127. JSONObject data3 = new JSONObject();
  128. data3.put("value", LocalDateTimeUtil.format(now, "yyyy-MM-dd HH:mm:ss"));
  129. data.put("time17", data3);
  130. weChatSendMessageDto.setContent(data);
  131. weChatService.sendTemplateMessage(weChatSendMessageDto);
  132. }catch (Exception e){
  133. Log.error(e.getMessage());
  134. }
  135. }
  136. return true;
  137. }
  138. @Override
  139. @Transactional
  140. public Boolean read(Long baseClassDynamicsId) {
  141. List<BaseClassDynamicsRelation> list = dynamicsRelationMapper.selectList(
  142. new QueryWrapper<BaseClassDynamicsRelation>().lambda()
  143. .eq(BaseClassDynamicsRelation::getBaseClassDynamicsId, baseClassDynamicsId)
  144. .eq(BaseClassDynamicsRelation::getUserId, StpUtil.getLoginIdAsLong())
  145. );
  146. for (BaseClassDynamicsRelation dynamicsRelation : list) {
  147. dynamicsRelation.setReadMark(1);
  148. dynamicsRelation.setReadDate(LocalDateTime.now());
  149. dynamicsRelationMapper.updateById(dynamicsRelation);
  150. }
  151. return true;
  152. }
  153. }