瀏覽代碼

add:老师未评价/布置作业消息发送

liujunchi 3 年之前
父節點
當前提交
8026aa06e8

+ 27 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.api.feign;
+
+import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
+import com.yonge.cooleshow.api.feign.fallback.MallAdminFeignServiceFallback;
+import com.yonge.cooleshow.common.constant.AppConstant;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.feign.config.FeignConfiguration;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@FeignClient(name = AppConstant.APPLICATION_ADMIN_SERVER, configuration = FeignConfiguration.class,
+             fallback = AdminFeignServiceFallback.class)
+public interface AdminFeignService {
+
+
+    /**
+     * 公告发布轮询
+     */
+    @GetMapping("/admin/teacherSend")
+    HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework();
+}

+ 2 - 2
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/CmsFeignService.java → cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/CmsFeignService.java

@@ -1,7 +1,7 @@
-package com.yonge.cooleshow.task.feign;
+package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.task.feign.fallback.CmsFeignServiceFallback;
+import com.yonge.cooleshow.api.feign.fallback.CmsFeignServiceFallback;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;

+ 17 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.api.feign.fallback;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+public class AdminFeignServiceFallback implements AdminFeignService {
+    @Override
+    public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+        return null;
+    }
+}

+ 2 - 2
cooleshow-task/src/main/java/com/yonge/cooleshow/task/feign/fallback/CmsFeignServiceFallback.java → cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/CmsFeignServiceFallback.java

@@ -1,7 +1,7 @@
-package com.yonge.cooleshow.task.feign.fallback;
+package com.yonge.cooleshow.api.feign.fallback;
 
+import com.yonge.cooleshow.api.feign.CmsFeignService;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.task.feign.CmsFeignService;
 
 /**
  * Description

+ 1 - 1
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/NoticeReleaseTask.java

@@ -2,7 +2,7 @@ package com.yonge.cooleshow.task.jobs;
 
 import com.yonge.cooleshow.task.core.BaseTask;
 import com.yonge.cooleshow.task.core.TaskException;
-import com.yonge.cooleshow.task.feign.CmsFeignService;
+import com.yonge.cooleshow.api.feign.CmsFeignService;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**

+ 25 - 0
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherSendTask.java

@@ -0,0 +1,25 @@
+package com.yonge.cooleshow.task.jobs;
+
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.api.feign.MallPortalFeignService;
+import com.yonge.cooleshow.task.core.BaseTask;
+import com.yonge.cooleshow.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 订单轮询
+ * @Author: liweifan
+ * @Data: 2022/4/13 17:36
+ */
+@Service
+public class TeacherSendTask extends BaseTask {
+
+    @Autowired
+    private AdminFeignService adminFeignService;
+
+    @Override
+    public void execute() throws TaskException {
+        Object o = adminFeignService.sendTodayNotRepliedAndNotDecorateHomework();
+    }
+}

+ 31 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/client/AdminFeignClient.java

@@ -0,0 +1,31 @@
+package com.yonge.cooleshow.admin.client;
+
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import springfox.documentation.annotations.ApiIgnore;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@ApiIgnore
+@RestController
+@RequestMapping("/feign-client/admin")
+public class AdminFeignClient {
+
+    @Autowired
+    private CourseScheduleService courseScheduleService;
+
+
+    @PostMapping(value = "/teacherSend")
+    public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+        courseScheduleService.sendTodayNotRepliedAndNotDecorateHomework();
+        return HttpResponseResult.succeed();
+    }
+}

+ 12 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseHomeworkController.java

@@ -4,6 +4,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkAdminSearch;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseHomeworkService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseHomeworkVo;
@@ -26,6 +27,8 @@ public class CourseHomeworkController extends BaseController {
     @Autowired
     private CourseHomeworkService courseHomeworkService;
 
+	@Autowired
+	private CourseScheduleService courseScheduleService;
 
 	@ApiOperation(value = "课后作业-列表", httpMethod = "POST", consumes = "application/json", produces = "application/json")
 	@PostMapping(value = "/list", consumes = "application/json", produces = "application/json")
@@ -43,4 +46,13 @@ public class CourseHomeworkController extends BaseController {
 															 @PathVariable("courseId") Long courseId) {
 		return succeed(courseHomeworkService.getCourseHomeworkDetailByCourseId(courseId));
 	}
+
+
+
+	@PostMapping(value = "/teacherSend")
+	@ApiOperation(value = "发送老师未评价和未布置作业消息")
+	public HttpResponseResult<Object> sendTodayNotRepliedAndNotDecorateHomework() {
+		courseScheduleService.sendTodayNotRepliedAndNotDecorateHomework();
+		return HttpResponseResult.succeed();
+	}
 }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -168,5 +168,9 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //根据订单号查询开课时间
     List<String> selectStartTime(String orderNo);
+
+
+    List<TodayNotRepliedAndNotDecorateHomeworkVo> selectTodayNotRepliedAndNotDecorateHomework();
+
 }
 

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -220,5 +220,12 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      * @return 老师本周收到的评价
      */
     Integer getWeekStudentRepliedCourseSchedule(Long userId);
+
+    /**
+     * 发送"当日陪练课未评价/布置作业
+     * (每晚9点30,已评价/已布置不发)"
+     *
+     */
+    void sendTodayNotRepliedAndNotDecorateHomework();
 }
 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -1036,6 +1036,28 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         return baseMapper.selectWeekStudentRepliedCourseSchedule(userId);
     }
 
+    @Override
+    public void sendTodayNotRepliedAndNotDecorateHomework() {
+        List<TodayNotRepliedAndNotDecorateHomeworkVo> list = baseMapper.selectTodayNotRepliedAndNotDecorateHomework();
+        for (TodayNotRepliedAndNotDecorateHomeworkVo info : list) {
+            if (info.getRepliedNum() == 0 && info.getDecorateNum() == 0) {
+                continue;
+            }
+            try {
+                Map<Long, String> teacherReceivers = new HashMap<>();
+                teacherReceivers.put(info.getTeacherId(), info.getPhone());
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.NOT_EVALUATE_STUDENT_PRACTICE,
+                                                   teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),
+                                                   info.getRepliedNum(),info.getDecorateNum());
+            } catch (Exception e) {
+                log.warn("老师当日陪练课未评价/布置作业消息发送失败,{}",e.getMessage());
+            }
+
+        }
+
+
+    }
+
     /**
      * @Description: 购买陪练课消息推送
      * @Author: cy

+ 53 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TodayNotRepliedAndNotDecorateHomeworkVo.java

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-06
+ */
+@ApiModel("查询当日未评价和未布置作业信息")
+public class TodayNotRepliedAndNotDecorateHomeworkVo {
+
+    private Long teacherId;
+
+    private String phone;
+
+    private Integer repliedNum;
+
+    private Integer decorateNum;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Integer getRepliedNum() {
+        return repliedNum;
+    }
+
+    public void setRepliedNum(Integer repliedNum) {
+        this.repliedNum = repliedNum;
+    }
+
+    public Integer getDecorateNum() {
+        return decorateNum;
+    }
+
+    public void setDecorateNum(Integer decorateNum) {
+        this.decorateNum = decorateNum;
+    }
+}

+ 16 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -600,4 +600,20 @@
         LEFT JOIN course_schedule s ON p.course_id_=s.id_
         WHERE p.order_no_=#{orderNo}
     </select>
+
+    <select id="selectTodayNotRepliedAndNotDecorateHomework"
+            resultType="com.yonge.cooleshow.biz.dal.vo.TodayNotRepliedAndNotDecorateHomeworkVo">
+
+        select sum(if(ch.id_ is null,1,0)) as decorateNum,
+            sum(if(csr.teacher_replied_ is null,1,0)) as repliedNum,
+            su.id_ as teacherId,
+            su.phone_ as phone
+        from course_schedule cs
+        left join course_schedule_replied csr on cs.id_ = csr.course_schedule_id_
+        left join course_homework ch on cs.id_ = ch.course_schedule_id_
+        left join sys_user su on cs.teacher_id_ = su.id_
+        where cs.status_ = 'COMPLETE' and date_format(cs.class_date_,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
+        and cs.type_ = 'PRACTICE'
+        group by  su.id_,su.phone_
+    </select>
 </mapper>