Bladeren bron

修改课程组状态的定时任务

hgw 3 jaren geleden
bovenliggende
commit
a62d8e728b

+ 7 - 4
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/TeacherFeignService.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.task.feign;
 
 import com.yonge.cooleshow.common.config.FeignConfiguration;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.task.feign.fallback.TeacherFeignServiceFallback;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -17,9 +18,11 @@ public interface TeacherFeignService {
     @GetMapping(value = "/task/queryTeacherTotal")
     Object queryTeacherTotal();
 
-    /***
-     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+    /**
+     * <p>定时将符合开售日期的未开售的直播课课程组修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态-每隔10分钟执行一次
      */
-    @GetMapping(value = "/task/openCourseGroup")
-    Object openCourseGroup();
+    @GetMapping(value = "/task/opsCourseGroup")
+    HttpResponseResult<Object> opsCourseGroup();
+
 }

+ 2 - 1
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/fallback/TeacherFeignServiceFallback.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.task.feign.fallback;
 
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.task.feign.TeacherFeignService;
 import org.springframework.stereotype.Component;
 
@@ -12,7 +13,7 @@ public class TeacherFeignServiceFallback implements TeacherFeignService {
     }
 
     @Override
-    public Object openCourseGroup() {
+    public HttpResponseResult<Object> opsCourseGroup() {
         return null;
     }
 }

+ 2 - 2
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/OpenCourseGroupTask.java → cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/OpsCourseGroupTask.java

@@ -11,12 +11,12 @@ import org.springframework.stereotype.Service;
  * @Data: 2022/4/25 10:30
  */
 @Service
-public class OpenCourseGroupTask extends BaseTask {
+public class OpsCourseGroupTask extends BaseTask {
     @Autowired
     private TeacherFeignService teacherFeignService;
 
     @Override
     public void execute() throws TaskException {
-        Object o = teacherFeignService.openCourseGroup();
+        teacherFeignService.opsCourseGroup();
     }
 }

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -16,9 +16,7 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import org.redisson.api.RMap;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -133,9 +131,10 @@ public interface CourseGroupService extends IService<CourseGroup> {
     void buyLiveCourseCancel(UserOrderDetailVo orderParam);
 
     /**
-     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合开售日期的未开售的直播课课程组修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态-每隔10分钟执行一次
      */
-    void openCourseGroup();
+    void opsCourseGroup();
 
 }
 

+ 43 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -663,17 +663,22 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     }
 
     /**
-     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合开售日期的未开售的直播课课程组修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态-每隔10分钟执行一次
      */
-    public void openCourseGroup() {
-        LocalDate toDay = LocalDate.now();
-        LocalDateTime startDay = LocalDateTime.of(toDay, LocalTime.MIN);
-        LocalDateTime endDay = LocalDateTime.of(toDay, LocalTime.MAX);
+    public void opsCourseGroup() {
+        openCourseGroup();
+        closeCourseGroup();
+    }
 
+    /**
+     * 定时将符合开售日期的未开售的直播课课程组修改为报名中状态
+     */
+    private void openCourseGroup() {
         //查询今天未开售的课程组
         List<CourseGroup> courseGroupList = this.list(Wrappers.<CourseGroup>lambdaQuery()
-                .ge(CourseGroup::getSalesStartDate, startDay)
-                .lt(CourseGroup::getSalesStartDate, endDay)
+                .eq(CourseGroup::getType, CourseScheduleEnum.LIVE.getCode())
+                .eq(CourseGroup::getSalesStartDate, LocalDate.now())
                 .eq(CourseGroup::getStatus, CourseGroupEnum.NOT_SALE.getCode()));
         if (CollectionUtils.isEmpty(courseGroupList)) {
             return;
@@ -681,7 +686,37 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         //修改为报名中状态
         courseGroupList.forEach(courseGroup -> {
             courseGroup.setStatus(CourseGroupEnum.APPLY.getCode());
-            this.updateById(courseGroup);
+            try {
+                this.updateById(courseGroup);
+            } catch (Exception ignored) {
+            }
+        });
+    }
+
+    /**
+     * 定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态
+     */
+    private void closeCourseGroup() {
+        //查询昨天要结束售卖的课程组
+        List<CourseGroup> courseGroupList = this.list(Wrappers.<CourseGroup>lambdaQuery()
+                .eq(CourseGroup::getType, CourseScheduleEnum.LIVE.getCode())
+                .eq(CourseGroup::getSalesEndDate, LocalDate.now().plusDays(-1))
+                .eq(CourseGroup::getStatus, CourseGroupEnum.APPLY.getCode()));
+        if (CollectionUtils.isEmpty(courseGroupList)) {
+            return;
+        }
+        courseGroupList.forEach(courseGroup -> {
+            if (courseGroup.getPreStudentNum() >= courseGroup.getMixStudentNum()) {
+                //人数达标则修改课程组为进行中状态
+                courseGroup.setStatus(CourseGroupEnum.ING.getCode());
+            } else {
+                //人数未达标则修改课程组为取消状态
+                courseGroup.setStatus(CourseGroupEnum.CANCEL.getCode());
+            }
+            try {
+                this.updateById(courseGroup);
+            } catch (Exception ignored) {
+            }
         });
     }
 

+ 6 - 7
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/task/TaskController.java

@@ -2,9 +2,7 @@ package com.yonge.cooleshow.teacher.task;
 
 import com.yonge.cooleshow.biz.dal.entity.TeacherTotal;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TeacherTotalService;
-import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,12 +35,13 @@ public class TaskController extends BaseController {
         return succeed(teacherTotalService.queryTeacherTotal());
     }
 
-    /***
-     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+    /**
+     * <p>定时将符合开售日期的未开售的直播课课程组修改为报名中状态-每隔10分钟执行一次
+     * <p>定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态-每隔10分钟执行一次
      */
-    @GetMapping("/openCourseGroup")
-    public HttpResponseResult openCourseGroup(){
-        courseGroupService.openCourseGroup();
+    @GetMapping("/opsCourseGroup")
+    public HttpResponseResult<Object> opsCourseGroup(){
+        courseGroupService.opsCourseGroup();
         return HttpResponseResult.succeed();
     }