Bladeren bron

新增待评论推送

周箭河 5 jaren geleden
bovenliggende
commit
8148376723
1 gewijzigde bestanden met toevoegingen van 65 en 46 verwijderingen
  1. 65 46
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

+ 65 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseReviewServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.redis.service.RedisCache;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
@@ -93,6 +94,9 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
     @Autowired
     private SysConfigDao sysConfigDao;
 
+    @Autowired
+    private RedisCache redisCache;
+
     @Override
     public BaseDAO<Integer, CourseScheduleReview> getDAO() {
         return courseScheduleReviewDao;
@@ -162,59 +166,74 @@ public class CourseReviewServiceImpl extends BaseServiceImpl<Integer, CourseSche
         if (courseSchedule == null) {
             throw new BizException("课程不存在");
         }
-        PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
 
-        courseScheduleReview.setClassGroupId(courseSchedule.getClassGroupId());
-        courseScheduleReview.setEducationalTeacherId(practiceGroup.getEducationalTeacherId());
-        courseScheduleReview.setStudentId(practiceGroup.getStudentId());
-        courseScheduleReview.setCreateTime(date);
-        courseScheduleReview.setUpdateTime(date);
-        long num = courseScheduleReviewDao.insert(courseScheduleReview);
-        if (num <= 0) {
-            throw new BizException("评论提交失败,请重试");
+        String lockKey = "course_review" + courseSchedule.getId();
+        if (!redisCache.getLocked(lockKey, 1, 10)) {
+            throw new BizException("评论提交中,请稍等");
         }
+        PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(courseSchedule.getMusicGroupId()));
+
+        try {
+            CourseScheduleReview hasReview = courseScheduleReviewDao.findByCourseScheduleAndStudent(courseScheduleId.longValue(), practiceGroup.getStudentId());
+            if(hasReview != null){
+                throw new BizException("评论已提交,请勿重复提交");
+            }
+            courseScheduleReview.setClassGroupId(courseSchedule.getClassGroupId());
+            courseScheduleReview.setEducationalTeacherId(practiceGroup.getEducationalTeacherId());
+            courseScheduleReview.setStudentId(practiceGroup.getStudentId());
+            courseScheduleReview.setCreateTime(date);
+            courseScheduleReview.setUpdateTime(date);
+            long num = courseScheduleReviewDao.insert(courseScheduleReview);
+            if (num <= 0) {
+                throw new BizException("评论提交失败,请重试");
+            }
 
-        CourseHomework existHomework = courseHomeworkDao.findByCourseSchedule(courseScheduleId.longValue());
-
-        if(StringUtils.isNotBlank(courseScheduleReview.getHomeWork())&&Objects.isNull(existHomework)){
-            //新增课堂作业
-            CourseHomework courseHomework=new CourseHomework();
-            courseHomework.setContent(courseScheduleReview.getHomeWork());
-            courseHomework.setCourseScheduleId(courseSchedule.getId());
-            courseHomework.setMusicGroupId(courseSchedule.getMusicGroupId());
-            courseHomework.setGroupType(courseSchedule.getGroupType());
-            courseHomework.setClassGroupId(courseSchedule.getClassGroupId());
-            courseHomework.setExpiryDate(DateUtil.addDays(date,7));
-            List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseSchedule.getId());
-
-            courseHomework.setExpectNum(CollectionUtils.isEmpty(courseScheduleStudentPayments)?0:courseScheduleStudentPayments.size());
-            courseHomeworkService.insert(courseHomework);
-
-            if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
-                List<StudentCourseHomework> studentCourseHomeworks=new ArrayList<>();
-                Map<Integer, String> userMap = new HashMap<>();
-                for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
-                    StudentCourseHomework studentCourseHomework=new StudentCourseHomework();
-                    studentCourseHomework.setCourseHomeworkId(courseHomework.getId());
-                    studentCourseHomework.setUserId(courseScheduleStudentPayment.getUserId());
-                    studentCourseHomework.setCourseScheduleId(courseSchedule.getId());
-                    studentCourseHomework.setCreateTime(date);
-                    studentCourseHomework.setUpdateTime(date);
-                    studentCourseHomework.setStatus(YesOrNoEnum.NO);
-                    studentCourseHomework.setIsView(YesOrNoEnum.NO);
-                    studentCourseHomework.setIsReplied(YesOrNoEnum.NO);
-                    studentCourseHomeworks.add(studentCourseHomework);
-                    userMap.put(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getUserId().toString());
+            CourseHomework existHomework = courseHomeworkDao.findByCourseSchedule(courseScheduleId.longValue());
+
+            if(StringUtils.isNotBlank(courseScheduleReview.getHomeWork())&&Objects.isNull(existHomework)){
+                //新增课堂作业
+                CourseHomework courseHomework=new CourseHomework();
+                courseHomework.setContent(courseScheduleReview.getHomeWork());
+                courseHomework.setCourseScheduleId(courseSchedule.getId());
+                courseHomework.setMusicGroupId(courseSchedule.getMusicGroupId());
+                courseHomework.setGroupType(courseSchedule.getGroupType());
+                courseHomework.setClassGroupId(courseSchedule.getClassGroupId());
+                courseHomework.setExpiryDate(DateUtil.addDays(date,7));
+                List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseSchedule(courseSchedule.getId());
+
+                courseHomework.setExpectNum(CollectionUtils.isEmpty(courseScheduleStudentPayments)?0:courseScheduleStudentPayments.size());
+                courseHomeworkService.insert(courseHomework);
+
+                if(!CollectionUtils.isEmpty(courseScheduleStudentPayments)){
+                    List<StudentCourseHomework> studentCourseHomeworks=new ArrayList<>();
+                    Map<Integer, String> userMap = new HashMap<>();
+                    for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
+                        StudentCourseHomework studentCourseHomework=new StudentCourseHomework();
+                        studentCourseHomework.setCourseHomeworkId(courseHomework.getId());
+                        studentCourseHomework.setUserId(courseScheduleStudentPayment.getUserId());
+                        studentCourseHomework.setCourseScheduleId(courseSchedule.getId());
+                        studentCourseHomework.setCreateTime(date);
+                        studentCourseHomework.setUpdateTime(date);
+                        studentCourseHomework.setStatus(YesOrNoEnum.NO);
+                        studentCourseHomework.setIsView(YesOrNoEnum.NO);
+                        studentCourseHomework.setIsReplied(YesOrNoEnum.NO);
+                        studentCourseHomeworks.add(studentCourseHomework);
+                        userMap.put(courseScheduleStudentPayment.getUserId(), courseScheduleStudentPayment.getUserId().toString());
+                    }
+                    studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
+                    Teacher teacher = teacherDao.get(courseScheduleReview.getTeacherId());
+                    String dateStr=DateUtil.dateToString(DateUtil.addDays(date,1), "MM月dd日");
+                    String notifyUrl="3?courseScheduleID="+courseSchedule.getId()+"&studentCourseHomeworkId="+courseHomework.getId();
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_REMIND,
+                            userMap, null, 0, notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
                 }
-                studentCourseHomeworkDao.batchInsertStudentCourseHomeworkRecord(studentCourseHomeworks);
-                Teacher teacher = teacherDao.get(courseScheduleReview.getTeacherId());
-                String dateStr=DateUtil.dateToString(DateUtil.addDays(date,1), "MM月dd日");
-                String notifyUrl="3?courseScheduleID="+courseSchedule.getId()+"&studentCourseHomeworkId="+courseHomework.getId();
-                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_REMIND,
-                        userMap, null, 0, notifyUrl, "STUDENT", teacher.getRealName(), courseSchedule.getName(), dateStr);
             }
+
+        }finally {
+            redisCache.releaseLocked(lockKey, 1);
         }
 
+
         return courseScheduleReview;
     }