Просмотр исходного кода

增加:
训练营开始推送定时任务-每天早上8点
修改:
机构推广规则。现在改为允许哪些分部可以看

hgw 2 лет назад
Родитель
Сommit
51803cedde

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
+import com.ym.mec.biz.dal.vo.BaseVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -41,5 +42,7 @@ public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleAr
     Integer queryUserTrainingPlayTime(@Param("param") Map<String, Object> param);
 
     List<Integer> queryUserGroup(@Param("campId") Integer campId);
+
+    List<BaseVo> queryStartTrainInfo(@Param("date") String date);
 }
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImLiveBroadcastRoomDto.java

@@ -64,6 +64,9 @@ public class ImLiveBroadcastRoomDto implements Serializable {
         @ApiModelProperty(value = "是否允许连麦 0允许 1不允许")
         private Integer whether_mic = 0;
 
+        @ApiModelProperty(value = "是否展示购物车 0展示 1不展示")
+        private Integer whether_view_shop_cart = 0;
+
         public Integer getWhether_like() {
             return whether_like;
         }
@@ -95,6 +98,14 @@ public class ImLiveBroadcastRoomDto implements Serializable {
         public void setWhether_mic(Integer whether_mic) {
             this.whether_mic = whether_mic;
         }
+
+        public Integer getWhether_view_shop_cart() {
+            return whether_view_shop_cart;
+        }
+
+        public void setWhether_view_shop_cart(Integer whether_view_shop_cart) {
+            this.whether_view_shop_cart = whether_view_shop_cart;
+        }
     }
 
     public Integer getId() {

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -228,6 +228,10 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     //直播推送
     JIGUANG_LIVE_RESERVATION("IM_LIVE_RESERVATION","直播开播预约提醒-极光推送"),
+
+    //小小训练营-训练营开始训练推送
+    JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN("JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN","训练营开始训练推送-极光推送"),
+
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/BaseVo.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.vo;
+
+import java.io.Serializable;
+
+public class BaseVo implements Serializable {
+
+    private Integer id;
+
+    private String name;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserTrainingDetailVo.java

@@ -4,6 +4,9 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Objects;
 
 @ApiModel(value = "训练营详情")
 public class TempCampUserTrainingDetailVo implements Serializable {
@@ -64,7 +67,16 @@ public class TempCampUserTrainingDetailVo implements Serializable {
         return playTime;
     }
 
+    /**
+     * 传入秒钟换算成分钟
+     */
     public void setPlayTime(Integer playTime) {
+        if (Objects.nonNull(playTime)) {
+            if (playTime >= 60) {
+                BigDecimal divide = BigDecimal.valueOf(playTime).divide(BigDecimal.valueOf(60), 0, RoundingMode.DOWN);
+                playTime = divide.intValue();
+            }
+        }
         this.playTime = playTime;
     }
 }

+ 0 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeVo.java

@@ -1,7 +0,0 @@
-package com.ym.mec.biz.dal.vo;
-
-import java.io.Serializable;
-
-public class TempUserTrainingTimeVo implements Serializable {
-
-}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TempLittleArtistTrainingCampService.java

@@ -111,6 +111,12 @@ public interface TempLittleArtistTrainingCampService extends IService<TempLittle
     void studentGrouping(Date now);
 
     /**
+     * 每天早上8点执行-提醒当天开启训练营并已分群的用户开始训练
+     * <p>您已加入小小艺术家训练营{群组标题},及时查看群聊消息完成老师布置的任务哦
+     */
+    void pushStartTrain();
+
+    /**
      * 云教练训练是否达标
      */
     TempCampUserTrainingPlayTimeVo queryUserTrainingPlayTime();

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -321,7 +321,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         String popularizeOrgan = sysConfigDao.findConfigValue("live_popularize_organ");
         if (StringUtils.isNotBlank(popularizeOrgan)) {
             List<String> organList = WrapperUtil.toList(popularizeOrgan);
-            if (Objects.nonNull(user.getOrganId()) && organList.contains(user.getOrganId().toString())) {
+            if (Objects.nonNull(user.getOrganId()) && !organList.contains(user.getOrganId().toString())) {
                 return null;
             }
         }

+ 35 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -9,23 +9,16 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao;
 import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
-import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp;
-import com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCampUserRelation;
-import com.ym.mec.biz.dal.vo.TempCampUserTrainingDetailVo;
-import com.ym.mec.biz.dal.vo.TempCampUserTrainingPlayTimeVo;
-import com.ym.mec.biz.dal.vo.TempCampUserVo;
-import com.ym.mec.biz.dal.vo.TempUserTrainingTimeDetailVo;
-import com.ym.mec.biz.service.ImGroupService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.TempLittleArtistTrainingCampService;
-import com.ym.mec.biz.service.TempLittleArtistTrainingCampUserRelationService;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.vo.*;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.collections.CollectionUtils;
@@ -67,6 +60,8 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     private ImGroupService imGroupService;
     @Autowired
     private SysConfigService sysConfigService;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @Override
     public TempLittleArtistTrainingCampDao getDao() {
@@ -469,6 +464,34 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     }
 
     /**
+     * 每天早上8点执行-查询当天开启训练营并已分群的用户
+     * <p>您已加入小小艺术家训练营{群组标题},及时查看群聊消息完成老师布置的任务哦
+     */
+    @Override
+    public void pushStartTrain() {
+        //查询学员id  对应的训练营名称
+        List<BaseVo> baseVos = baseMapper.queryStartTrainInfo(LocalDate.now().toString());
+        if(CollectionUtils.isEmpty(baseVos)){
+            return;
+        }
+        Map<String, List<BaseVo>> pushUserList = WrapperUtil.groupList(baseVos, BaseVo::getName);
+        pushUserList.forEach((imGroupName, list) -> {
+            Map<Integer, String> push= new HashMap<>();
+            for (BaseVo obj : list) {
+                push.put(obj.getId(), obj.getId().toString());
+            }
+            try {
+                //训练营开始训练推送
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG,
+                        MessageTypeEnum.JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN, push,
+                        null, 0, null, "STUDENT", imGroupName);
+            } catch (Exception e) {
+                log.error("推送消息失败", e);
+            }
+        });
+    }
+
+    /**
      * 云教练训练是否达标
      */
     @Override

+ 13 - 1
mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml

@@ -127,7 +127,7 @@
         <where>
             a.activity_id_ = #{param.campId} and a.state_ = #{param.state}
             <if test="param.imGroupId != null">
-                AND e.im_group_id_ = #{param.imGroupId}
+                AND e.id_ = #{param.imGroupId}
             </if>
             <if test="param.search != null ">
                 AND (
@@ -198,4 +198,16 @@
         order by a.sortDate desc, b.subject_id_list_
     </select>
 
+    <select id="queryStartTrainInfo" parameterType="string" resultType="com.ym.mec.biz.dal.vo.BaseVo">
+        select
+            b.user_id_ as id,
+            c.name_ as `name`
+        from temp_little_artist_training_camp as a
+                 left join temp_little_artist_training_camp_user_relation as b on a.id_ = b.activity_id_
+                 left join im_group as c on b.im_group_id_ = c.id_
+        where a.train_start_date_ = #{date}
+          and a.state_ = 'ING'
+          and b.im_group_id_ is not null
+    </select>
+
 </mapper>

+ 175 - 162
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -5,228 +5,232 @@ import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
-@FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
+@FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = {FeignConfiguration.class}, fallback = TaskRemoteServiceFallback.class)
 public interface TaskRemoteService {
 
-	@GetMapping(value = "task/pushWaitSendMessageTask")
-	// 每天9点推送前一天22点之后的推送消息
-	public void pushWaitSendMessageTask();
+    @GetMapping(value = "task/pushWaitSendMessageTask")
+    // 每天9点推送前一天22点之后的推送消息
+    public void pushWaitSendMessageTask();
 
-	@GetMapping(value = "task/pushTeacherExceptionAttendanceTask")
-	// 教师异常考勤推送
-	public void pushTeacherExceptionAttendanceTask();
+    @GetMapping(value = "task/pushTeacherExceptionAttendanceTask")
+    // 教师异常考勤推送
+    public void pushTeacherExceptionAttendanceTask();
 
-	@GetMapping(value = "task/updateMusicGroupStudentFeeStatus")
-	// 更新学员缴费状态(新)
-	public void updateMusicGroupStudentFeeStatus();
+    @GetMapping(value = "task/updateMusicGroupStudentFeeStatus")
+    // 更新学员缴费状态(新)
+    public void updateMusicGroupStudentFeeStatus();
 
-	@GetMapping(value = "task/refreshPaymentFeeStatus")
-	// 刷新付费状态
-	public void refreshPaymentFeeStatus();
+    @GetMapping(value = "task/refreshPaymentFeeStatus")
+    // 刷新付费状态
+    public void refreshPaymentFeeStatus();
 
-	@GetMapping(value = "task/refreshUserMusicGroupPaymentStatusTask")
-	// 刷新学员乐团付费状态
-	public void refreshUserMusicGroupPaymentStatusTask();
+    @GetMapping(value = "task/refreshUserMusicGroupPaymentStatusTask")
+    // 刷新学员乐团付费状态
+    public void refreshUserMusicGroupPaymentStatusTask();
 
-	@GetMapping(value = "task/vipGroupAwardedMonthlyRewards")
-	// vip课月度奖励
-	public void vipGroupAwardedMonthlyRewards();
+    @GetMapping(value = "task/vipGroupAwardedMonthlyRewards")
+    // vip课月度奖励
+    public void vipGroupAwardedMonthlyRewards();
 
-	@GetMapping(value = "task/updateCourseScheduleToOverStatus")
-	// 更新课程状态至已结束
-	void updateCourseScheduleToOverStatus();
+    @GetMapping(value = "task/updateCourseScheduleToOverStatus")
+        // 更新课程状态至已结束
+    void updateCourseScheduleToOverStatus();
 
-	@GetMapping("task/pushNoSignOutMessage")
-	// 推送未签退消息提醒
-	public void pushNoSignOutMessage();
+    @GetMapping("task/pushNoSignOutMessage")
+    // 推送未签退消息提醒
+    public void pushNoSignOutMessage();
 
-	@GetMapping("task/vipGroupTeacherSalarySettlement")
-	// vip课课酬结算
-	public void vipGroupTeacherSalarySettlement();
+    @GetMapping("task/vipGroupTeacherSalarySettlement")
+    // vip课课酬结算
+    public void vipGroupTeacherSalarySettlement();
 
-	@GetMapping("task/practiceTeacherSalarySettlement")
-	// 陪练课课酬结算
-	public void practiceTeacherSalarySettlement();
+    @GetMapping("task/practiceTeacherSalarySettlement")
+    // 陪练课课酬结算
+    public void practiceTeacherSalarySettlement();
 
-	@GetMapping("task/musicGroupTeacherSalarySettlement")
-	void MusicGroupTeacherSalarySettlement();
+    @GetMapping("task/musicGroupTeacherSalarySettlement")
+    void MusicGroupTeacherSalarySettlement();
 
-	@GetMapping("task/studentCoursesScheduleRemind")
-	// 学生有课提醒
-	public void studentCoursesScheduleRemind();
+    @GetMapping("task/studentCoursesScheduleRemind")
+    // 学生有课提醒
+    public void studentCoursesScheduleRemind();
 
-	@GetMapping("task/studentSignInRemind")
-	// 学生上课提醒
-	public void studentSignInRemind();
+    @GetMapping("task/studentSignInRemind")
+    // 学生上课提醒
+    public void studentSignInRemind();
 
-	@GetMapping("task/studentHomeworkRemind")
-	// 学生作业提醒
-	public void studentHomeworkRemind();
+    @GetMapping("task/studentHomeworkRemind")
+    // 学生作业提醒
+    public void studentHomeworkRemind();
 
-	@GetMapping("task/teacherCoursesScheduleRemind")
-	// 老师有课提醒
-	public void teacherCoursesScheduleRemind();
+    @GetMapping("task/teacherCoursesScheduleRemind")
+    // 老师有课提醒
+    public void teacherCoursesScheduleRemind();
 
-	@GetMapping("task/teacherSignInRemind")
-	// 老师上课提醒
-	public void teacherSignInRemind();
+    @GetMapping("task/teacherSignInRemind")
+    // 老师上课提醒
+    public void teacherSignInRemind();
 
-	@GetMapping("task/homeworkNoReplyRemind")
-	// 老师未回复作业提醒
-	public void homeworkNoReplyRemind();
+    @GetMapping("task/homeworkNoReplyRemind")
+    // 老师未回复作业提醒
+    public void homeworkNoReplyRemind();
 
-	@GetMapping("task/queryOrderStatus")
-	// 订单状态查询
-	public void queryOrderStatus();
+    @GetMapping("task/queryOrderStatus")
+    // 订单状态查询
+    public void queryOrderStatus();
 
-	@GetMapping("task/updateVipGroupToFinishedStatus")
-	// 更新VIP课程状态至已结束
-	public void updateVipGroupToFinishedStatus();
+    @GetMapping("task/updateVipGroupToFinishedStatus")
+    // 更新VIP课程状态至已结束
+    public void updateVipGroupToFinishedStatus();
 
-	@GetMapping("task/stopVipGroupWithNoCreate")
-	// 取消达到报名时间未达到报名人数的vip课
-	public void stopVipGroupWithNoCreate();
+    @GetMapping("task/stopVipGroupWithNoCreate")
+    // 取消达到报名时间未达到报名人数的vip课
+    public void stopVipGroupWithNoCreate();
 
-	@GetMapping("task/teacherCourseStatistic")
-	// 老师课酬统计
-	public void teacherCourseStatistic();
+    @GetMapping("task/teacherCourseStatistic")
+    // 老师课酬统计
+    public void teacherCourseStatistic();
 
-	//更新历史陪练课至已结束
-	@GetMapping("task/updateHistoryPracticeGroupStatus")
-	public void updateHistoryPracticeGroupStatus();
+    //更新历史陪练课至已结束
+    @GetMapping("task/updateHistoryPracticeGroupStatus")
+    public void updateHistoryPracticeGroupStatus();
 
-	//练习报告定时推送
-	@GetMapping("task/pushStudyReport")
-	void pushStudyReport();
+    //练习报告定时推送
+    @GetMapping("task/pushStudyReport")
+    void pushStudyReport();
 
-	//新增待填写月报定时推送(推送老师)
-	@GetMapping("task/pushNeedPostReport")
-	void pushNeedPostReport();
+    //新增待填写月报定时推送(推送老师)
+    @GetMapping("task/pushNeedPostReport")
+    void pushNeedPostReport();
 
-	//预生成待提交月报
-	@GetMapping("task/createEvaluate")
-	void createEvaluate();
+    //预生成待提交月报
+    @GetMapping("task/createEvaluate")
+    void createEvaluate();
 
-	//新增待填写评论定时推送(推送老师)
-	@GetMapping("task/pushNeedReview2Teacher")
-	void pushNeedReview2Teacher();
+    //新增待填写评论定时推送(推送老师)
+    @GetMapping("task/pushNeedReview2Teacher")
+    void pushNeedReview2Teacher();
 
-	//对外无学生课程组提醒
-	@GetMapping("task/noStudentsCourseGroupRemind")
-	void noStudentsCourseGroupRemind();
+    //对外无学生课程组提醒
+    @GetMapping("task/noStudentsCourseGroupRemind")
+    void noStudentsCourseGroupRemind();
 
-	@GetMapping("task/finishCourseGroup")
-	void finishCourseGroup();
+    @GetMapping("task/finishCourseGroup")
+    void finishCourseGroup();
 
-	@GetMapping("task/exercisesSituationStatistics")
-	void exercisesSituationStatistics();
+    @GetMapping("task/exercisesSituationStatistics")
+    void exercisesSituationStatistics();
 
-	//更新学生运营指标
-	@GetMapping("task/updateStudentOperatingTag")
-	void updateStudentOperatingTag();
+    //更新学生运营指标
+    @GetMapping("task/updateStudentOperatingTag")
+    void updateStudentOperatingTag();
 
-	// 更新乐团缴费日历的状态
-	@GetMapping("task/updateMusicGroupPaymentCalenderStatus")
-	void updateMusicGroupPaymentCalenderStatus();
+    // 更新乐团缴费日历的状态
+    @GetMapping("task/updateMusicGroupPaymentCalenderStatus")
+    void updateMusicGroupPaymentCalenderStatus();
 
-	//老师本周应布置课外训练
-	@GetMapping("task/studentServeRemind")
-	void studentServeRemind();
+    //老师本周应布置课外训练
+    @GetMapping("task/studentServeRemind")
+    void studentServeRemind();
 
-	//经营报表
-	@GetMapping("task/operatingReport")
-	void operatingReport();
+    //经营报表
+    @GetMapping("task/operatingReport")
+    void operatingReport();
 
-	//商品库存预警
-	@GetMapping("task/repertoryWarn")
+    //商品库存预警
+    @GetMapping("task/repertoryWarn")
     void goodsRepertoryFBIWarnTask();
 
-	//自动确认收货
-	@GetMapping("task/autoAffirmReceiveTask")
+    //自动确认收货
+    @GetMapping("task/autoAffirmReceiveTask")
     void autoAffirmReceiveTask();
 
-	//首页数据统计
-	@GetMapping("task/countIndexBaseData")
-	void countIndexBaseData();
+    //首页数据统计
+    @GetMapping("task/countIndexBaseData")
+    void countIndexBaseData();
 
-	//巡查日程提醒
-	@GetMapping("task/inspectionPlan")
-	void inspectionPlan();
+    //巡查日程提醒
+    @GetMapping("task/inspectionPlan")
+    void inspectionPlan();
 
-	/**
-	 * 关闭学员服务指标
-	 */
-	@GetMapping("task/closeStudentServiceTag")
+    /**
+     * 关闭学员服务指标
+     */
+    @GetMapping("task/closeStudentServiceTag")
     void closeStudentServiceTag();
 
-	//乐保到期提醒
-	@GetMapping("task/maintenanceNotice")
-	void maintenanceNotice();
+    //乐保到期提醒
+    @GetMapping("task/maintenanceNotice")
+    void maintenanceNotice();
 
-	/**
-	 * 更新学生年级
-	 */
-	@GetMapping("task/updateGrade")
-	void updateGrade();
+    /**
+     * 更新学生年级
+     */
+    @GetMapping("task/updateGrade")
+    void updateGrade();
 
-	//乐保历史数据处理
-	@GetMapping("task/maintenanceOldDateAdd")
-	void maintenanceOldDateAdd();
+    //乐保历史数据处理
+    @GetMapping("task/maintenanceOldDateAdd")
+    void maintenanceOldDateAdd();
 
-	//更新学员指导老师和声部信息
-	@GetMapping("task/updateStudentTeacherAndSubject")
-	void updateStudentTeacherAndSubject();
+    //更新学员指导老师和声部信息
+    @GetMapping("task/updateStudentTeacherAndSubject")
+    void updateStudentTeacherAndSubject();
 
-	//推送查看今日收入提醒
-	@GetMapping("task/todayIncomeRemind")
-	void todayIncomeRemind();
+    //推送查看今日收入提醒
+    @GetMapping("task/todayIncomeRemind")
+    void todayIncomeRemind();
 
-	//大雅基本工资标记
-	@GetMapping("task/salaryMarkNew")
-	void salaryMarkNew();
+    //大雅基本工资标记
+    @GetMapping("task/salaryMarkNew")
+    void salaryMarkNew();
 
-	//同步即时通讯聊天记录
-	@GetMapping("task/syncImHistoryMessageTask")
+    //同步即时通讯聊天记录
+    @GetMapping("task/syncImHistoryMessageTask")
     void syncImHistoryMessageTask();
 
-	//历史异常数据记录
-	@GetMapping("task/indexErrDataRecordTask")
-	void indexErrDataRecord();
+    //历史异常数据记录
+    @GetMapping("task/indexErrDataRecordTask")
+    void indexErrDataRecord();
 
-	//每天凌晨3点清理所有的乐团预排课
-	@GetMapping("task/autoCleanPreCourseTask")
-	void autoCleanPreCourseTask();
+    //每天凌晨3点清理所有的乐团预排课
+    @GetMapping("task/autoCleanPreCourseTask")
+    void autoCleanPreCourseTask();
 
-	//每天10点推送排课、续费、退团提醒
-	@GetMapping("task/musicSchoolTermPush")
+    //每天10点推送排课、续费、退团提醒
+    @GetMapping("task/musicSchoolTermPush")
     void musicSchoolTermPush();
 
-	//会员结束后第三天自动退团
-	@GetMapping("task/memberEndAutoQuitMusic")
+    //会员结束后第三天自动退团
+    @GetMapping("task/memberEndAutoQuitMusic")
     void memberEndAutoQuitMusic();
 
-	//会员到期后清空会员信息
-	@GetMapping("task/cleanStudentMember")
+    //会员到期后清空会员信息
+    @GetMapping("task/cleanStudentMember")
     void cleanStudentMember();
 
-	/** 清理学员云教练连续使用天数 */
-	@GetMapping("task/cleanStudentCloudStudySequenceDays")
-	void cleanStudentCloudStudySequenceDays();
+    /**
+     * 清理学员云教练连续使用天数
+     */
+    @GetMapping("task/cleanStudentCloudStudySequenceDays")
+    void cleanStudentCloudStudySequenceDays();
 
-	/** 本周学员训练提醒 */
-	@GetMapping("task/curWeekStudentTrainRemind")
-	void curWeekStudentTrainRemind();
+    /**
+     * 本周学员训练提醒
+     */
+    @GetMapping("task/curWeekStudentTrainRemind")
+    void curWeekStudentTrainRemind();
 
-	/**
-	 * 标记进行中乐团在读学员+VIP、网管有课学员(除弦乐声部、去重)
-	 */
-	@GetMapping("task/remarkCountFlag")
+    /**
+     * 标记进行中乐团在读学员+VIP、网管有课学员(除弦乐声部、去重)
+     */
+    @GetMapping("task/remarkCountFlag")
     void remarkCountFlag();
 
     /**
      * 定时校验-机构订单状态
      */
-	@GetMapping("task/checkTenantOrder")
+    @GetMapping("task/checkTenantOrder")
     void checkTenantOrder();
 
     /**
@@ -235,13 +239,17 @@ public interface TaskRemoteService {
     @GetMapping("task/checkTenantState")
     void checkTenantState();
 
-	/** 兑换码分配数量底告警 */
-	@GetMapping("task/redemptionCodeWarn")
-	void redemptionCodeWarn();
+    /**
+     * 兑换码分配数量底告警
+     */
+    @GetMapping("task/redemptionCodeWarn")
+    void redemptionCodeWarn();
 
-	/** 查询老师协议签订状态 */
-	@GetMapping("task/queryTeacherContractSignStatus")
-	void queryTeacherContractSignStatus();
+    /**
+     * 查询老师协议签订状态
+     */
+    @GetMapping("task/queryTeacherContractSignStatus")
+    void queryTeacherContractSignStatus();
 
     /**
      * 每分钟-查询是否有直播间需要创建
@@ -264,4 +272,9 @@ public interface TaskRemoteService {
     @GetMapping("task/checkCampState")
     void checkCampState();
 
+    /**
+     * 每天早上8点执行-提醒当天开启训练营并已分群的用户开始训练
+     */
+    @GetMapping("task/pushStartTrain")
+    void pushStartTrain();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -314,4 +314,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
     public void checkCampState(){
         logger.error("校验营地状态失败");
     }
+
+    @Override
+    public void pushStartTrain(){
+        logger.error("开始训练通知推送失败");
+    }
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/PushStartTrainTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PushStartTrainTask  extends BaseTask {
+
+    @Autowired
+    private TaskRemoteService taskRemoteService;
+
+    @Override
+    public void execute() throws TaskException {
+        taskRemoteService.pushStartTrain();
+    }
+}

+ 6 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -597,4 +597,10 @@ public class TaskController extends BaseController {
         tempLittleArtistTrainingCampService.checkCampState();
     }
 
+    @ApiOperation("每天早上8点执行-提醒当天开启训练营并已分群的用户开始训练")
+    @GetMapping(value = "/pushStartTrain")
+    public void  pushStartTrain(){
+        tempLittleArtistTrainingCampService.pushStartTrain();
+    }
+
 }