tanzh 3 жил өмнө
parent
commit
e825f7d86a
22 өөрчлөгдсөн 352 нэмэгдсэн , 13 устгасан
  1. 33 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  2. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java
  3. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java
  4. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java
  5. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java
  6. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeVo.java
  7. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/mapper/InformUserMapper.java
  8. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/IInformUserService.java
  9. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/impl/InformUserServiceImpl.java
  10. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockApplyMapper.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockApplyService.java
  12. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java
  13. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  14. 208 12
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  15. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMockSubscribeMapper.java
  16. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserMockSubscribeService.java
  17. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java
  18. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserMockSubscribeVo.java
  19. 18 1
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  20. 3 0
      zhongzheng-system/src/main/resources/mapper/modules/inform/InformUserMapper.xml
  21. 12 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml
  22. 19 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMockSubscribeMapper.xml

+ 33 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -189,6 +189,39 @@ public class ScheduleController extends BaseController {
         return AjaxResult.success();
         return AjaxResult.success();
     }
     }
 
 
+    /**
+     * 模考预约提醒
+     * @return
+     */
+    @ApiOperation("模考预约提醒")
+    @GetMapping("/sendMockSubscribe")
+    public AjaxResult sendMockSubscribe(UserQueryBo bo) {
+        iScheduleService.sendMockSubscribe(bo);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 模考开始提醒
+     * @return
+     */
+    @ApiOperation("模考开始前60分钟提醒")
+    @GetMapping("/mockTimeSend")
+    public AjaxResult mockTimeSend(UserQueryBo bo) {
+        iScheduleService.mockTimeSend(bo);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 模考直播提醒
+     * @return
+     */
+    @ApiOperation("模考开始前60分钟提醒")
+    @GetMapping("/mockLiveSend")
+    public AjaxResult mockLiveSend(UserQueryBo bo) {
+        iScheduleService.mockLiveSend(bo);
+        return AjaxResult.success();
+    }
+
    /* @ApiOperation("测试")
    /* @ApiOperation("测试")
     @GetMapping("/syncToReplay")
     @GetMapping("/syncToReplay")
     public AjaxResult syncToReplay(UserQueryBo bo) throws Exception {
     public AjaxResult syncToReplay(UserQueryBo bo) throws Exception {

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java

@@ -55,4 +55,5 @@ public interface ClassGradeMapper extends BaseMapper<ClassGrade> {
 
 
     List<ClassGradeGoodsVo> listGoodsBatch(ClassGradeQueryBo bo);
     List<ClassGradeGoodsVo> listGoodsBatch(ClassGradeQueryBo bo);
 
 
+    List<ClassGradeVo> listGradeSubjects();
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java

@@ -81,4 +81,6 @@ public interface IClassGradeService extends IService<ClassGrade> {
 	boolean OpenQdyAccount(OpenQdyAccountBo bo);
 	boolean OpenQdyAccount(OpenQdyAccountBo bo);
 
 
     boolean sendCode();
     boolean sendCode();
+
+    List<ClassGradeVo> listGradeSubjects();
 }
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -706,6 +706,11 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         return true;
         return true;
     }
     }
 
 
+    @Override
+    public List<ClassGradeVo> listGradeSubjects() {
+        return baseMapper.listGradeSubjects();
+    }
+
     /**
     /**
      * 实体类转化成视图对象
      * 实体类转化成视图对象
      *
      *

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeStudentVo.java

@@ -192,4 +192,13 @@ public class ClassGradeStudentVo {
 	@Excel(name = "失败原因")
 	@Excel(name = "失败原因")
 	@ApiModelProperty("失败原因")
 	@ApiModelProperty("失败原因")
 	private String reason;
 	private String reason;
+
+	/** 业务层次名 */
+	@Excel(name = "业务层次名")
+	@ApiModelProperty("业务层次名")
+	private String businessName;
+	/** 项目名 */
+	@Excel(name = "项目名")
+	@ApiModelProperty("项目名")
+	private String projectName;
 }
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeVo.java

@@ -182,4 +182,7 @@ public class ClassGradeVo {
 	private Integer periodPlushNum;
 	private Integer periodPlushNum;
 	@ApiModelProperty("科目名称拼接")
 	@ApiModelProperty("科目名称拼接")
 	private String subjectNames;
 	private String subjectNames;
+
+	@ApiModelProperty("科目ID,拼接")
+	private String subjectIds;
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/mapper/InformUserMapper.java

@@ -5,6 +5,7 @@ import com.zhongzheng.modules.inform.bo.InformUserQueryBo;
 import com.zhongzheng.modules.inform.domain.InformUser;
 import com.zhongzheng.modules.inform.domain.InformUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.inform.vo.InformUserVo;
 import com.zhongzheng.modules.inform.vo.InformUserVo;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -23,4 +24,5 @@ public interface InformUserMapper extends BaseMapper<InformUser> {
 
 
     Long selectGradeId(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
     Long selectGradeId(@Param("goodsId") Long goodsId,@Param("userId") Long userId);
 
 
+    List<MockApplyVo> listMockApply();
 }
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/IInformUserService.java

@@ -7,6 +7,7 @@ import com.zhongzheng.modules.inform.bo.InformUserQueryBo;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.bo.InformUserEditBo;
 import com.zhongzheng.modules.inform.bo.InformUserEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
 
 
 import java.util.Collection;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
@@ -60,4 +61,6 @@ public interface IInformUserService extends IService<InformUser> {
 	Boolean updateAllRead(InformUserEditBo bo);
 	Boolean updateAllRead(InformUserEditBo bo);
 
 
 	Boolean removeAll(InformUserEditBo bo);
 	Boolean removeAll(InformUserEditBo bo);
+
+	List<MockApplyVo> listMockApply();
 }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/inform/service/impl/InformUserServiceImpl.java

@@ -20,6 +20,7 @@ import com.zhongzheng.modules.inform.service.IInformCourseService;
 import com.zhongzheng.modules.inform.service.IInformExamService;
 import com.zhongzheng.modules.inform.service.IInformExamService;
 import com.zhongzheng.modules.inform.service.IInformService;
 import com.zhongzheng.modules.inform.service.IInformService;
 import com.zhongzheng.modules.inform.vo.InformVo;
 import com.zhongzheng.modules.inform.vo.InformVo;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -258,4 +259,9 @@ public class InformUserServiceImpl extends ServiceImpl<InformUserMapper, InformU
         this.update(null, objectLambdaUpdateWrapper);
         this.update(null, objectLambdaUpdateWrapper);
         return true;
         return true;
     }
     }
+
+    @Override
+    public List<MockApplyVo> listMockApply() {
+        return baseMapper.listMockApply();
+    }
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/mapper/MockApplyMapper.java

@@ -25,4 +25,6 @@ public interface MockApplyMapper extends BaseMapper<MockApply> {
     List<MockApplyVo> listApplyBusiness(MockApplyQueryBo bo);
     List<MockApplyVo> listApplyBusiness(MockApplyQueryBo bo);
 
 
     List<MockApplyVo> listMockLive(MockApplyQueryBo bo);
     List<MockApplyVo> listMockLive(MockApplyQueryBo bo);
+
+    List<MockApplyVo> listSubjects();
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/IMockApplyService.java

@@ -62,4 +62,6 @@ public interface IMockApplyService extends IService<MockApply> {
 	List<MockApplyVo> listApplyBusiness(MockApplyQueryBo bo);
 	List<MockApplyVo> listApplyBusiness(MockApplyQueryBo bo);
 
 
     List<MockApplyVo> listMockLive(MockApplyQueryBo bo);
     List<MockApplyVo> listMockLive(MockApplyQueryBo bo);
+
+    List<MockApplyVo> listSubjects();
 }
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java

@@ -514,4 +514,9 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
         resultList.addAll(overList);
         resultList.addAll(overList);
         return resultList;
         return resultList;
     }
     }
+
+    @Override
+    public List<MockApplyVo> listSubjects() {
+        return baseMapper.listSubjects();
+    }
 }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java

@@ -52,4 +52,10 @@ public interface IScheduleService extends IService<PolyvVideo> {
     void liveToReplay(UserQueryBo bo) throws Exception;
     void liveToReplay(UserQueryBo bo) throws Exception;
 
 
     void syncToReplay(UserQueryBo bo) throws Exception;
     void syncToReplay(UserQueryBo bo) throws Exception;
+
+    void sendMockSubscribe(UserQueryBo bo);
+
+    void mockTimeSend(UserQueryBo bo);
+
+    void mockLiveSend(UserQueryBo bo);
 }
 }

+ 208 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -31,10 +31,8 @@ import com.zhongzheng.modules.course.bo.CourseModuleChapterQueryBo;
 import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.CourseSection;
-import com.zhongzheng.modules.course.service.ICourseChapterSectionService;
-import com.zhongzheng.modules.course.service.ICourseMenuService;
-import com.zhongzheng.modules.course.service.ICourseModuleChapterService;
-import com.zhongzheng.modules.course.service.ICourseSectionService;
+import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
 import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
 import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
 import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
@@ -58,15 +56,9 @@ import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsCourseVo;
 import com.zhongzheng.modules.goods.vo.GoodsCourseVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
-import com.zhongzheng.modules.grade.domain.ClassGradeUser;
-import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
-import com.zhongzheng.modules.grade.domain.UserPeriod;
-import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
+import com.zhongzheng.modules.grade.domain.*;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.service.*;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
-import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
-import com.zhongzheng.modules.grade.vo.ClassPeriodSectionVo;
-import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
+import com.zhongzheng.modules.grade.vo.*;
 import com.zhongzheng.modules.inform.bo.InformQueryBo;
 import com.zhongzheng.modules.inform.bo.InformQueryBo;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.domain.Inform;
 import com.zhongzheng.modules.inform.domain.Inform;
@@ -76,6 +68,13 @@ import com.zhongzheng.modules.inform.service.IInformService;
 import com.zhongzheng.modules.inform.service.IInformUserService;
 import com.zhongzheng.modules.inform.service.IInformUserService;
 import com.zhongzheng.modules.inform.vo.InformRemindVo;
 import com.zhongzheng.modules.inform.vo.InformRemindVo;
 import com.zhongzheng.modules.inform.vo.InformVo;
 import com.zhongzheng.modules.inform.vo.InformVo;
+import com.zhongzheng.modules.mock.domain.MockApply;
+import com.zhongzheng.modules.mock.domain.MockMajorSubject;
+import com.zhongzheng.modules.mock.domain.MockMajorSubjectTime;
+import com.zhongzheng.modules.mock.service.IMockApplyService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectService;
+import com.zhongzheng.modules.mock.service.IMockMajorSubjectTimeService;
+import com.zhongzheng.modules.mock.vo.MockApplyVo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
 import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
@@ -231,6 +230,24 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Autowired
     @Autowired
     private OrderGoodsMapper orderGoodsMapper;
     private OrderGoodsMapper orderGoodsMapper;
 
 
+    @Autowired
+    private IClassGradeService iClassGradeService;
+
+    @Autowired
+    private IMockApplyService iMockApplyService;
+
+    @Autowired
+    private IUserMockSubscribeService iUserMockSubscribeService;
+
+    @Autowired
+    private IMockMajorSubjectTimeService iMockMajorSubjectTimeService;
+
+    @Autowired
+    private IMockMajorSubjectService iMockMajorSubjectService;
+
+    @Autowired
+    private ICourseSubjectService iCourseSubjectService;
+
     @Value("${aliyun.sms.OpenTheGoodsCode}")
     @Value("${aliyun.sms.OpenTheGoodsCode}")
     private String OpenTheGoodsCode;
     private String OpenTheGoodsCode;
 
 
@@ -1307,4 +1324,183 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
             }
             }
         }
         }
     }
     }
+
+    @Override
+    public void sendMockSubscribe(UserQueryBo bo) {
+        List<ClassGradeVo> classGradeVos = iClassGradeService.listGradeSubjects();
+        List<MockApplyVo> mockApplyVos = iMockApplyService.listSubjects();
+        List<Long> gradeIds = new ArrayList<>();
+        classGradeVos.forEach(classGradeVo -> {
+           String[] subjectId = classGradeVo.getSubjectIds().split(",");
+           List<String> subjectIds = Arrays.asList(subjectId);
+           for (MockApplyVo mockApplyVo : mockApplyVos) {
+               if (subjectIds.contains(mockApplyVo.getSubjectId())) {
+                   gradeIds.add(classGradeVo.getGradeId());
+               }
+           }
+        });
+        List<ClassGradeStudentVo> classGradeStudentVos = new ArrayList<>();
+        if (gradeIds != null && gradeIds.size() > 0) {
+            gradeIds.forEach(gradeId -> {
+                ClassGradeUserQueryBo bo1 = new ClassGradeUserQueryBo();
+                bo1.setGradeId(gradeId);
+                classGradeStudentVos.addAll(iClassGradeService.listGrade(bo1));
+            });
+        }
+
+
+        for (ClassGradeStudentVo classGradeStudentVo : classGradeStudentVos) {
+            InformRemindVo informRemindVo = informRemindService.queryById(25L);
+            if (informRemindVo.getWayStatus().equals(1)) {
+                InformUserAddBo informUserAddBo = new InformUserAddBo();
+                informUserAddBo.setUserId(classGradeStudentVo.getUserId());
+                informUserAddBo.setSendStatus(1);
+                informUserAddBo.setSendTime(DateUtils.getNowTime());
+                informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                informUserAddBo.setRemindId(25L);
+                informUserAddBo.setSystemStatus(1);
+                informUserAddBo.setRemind("模考预约提醒");
+                informUserAddBo.setText("尊敬的用户:【" + classGradeStudentVo.getBusinessName() + classGradeStudentVo.getProjectName() + "】建考前模拟考试将开始报名参加模拟考试。请登录【祥粤云小程序】或【web.xyyxt.net】进行报名。");
+                iInformUserService.insertByAddBo(informUserAddBo);
+            }
+            if (informRemindVo.getNoteStatus().equals(1)) {
+                InformUserAddBo informUserAddBo = new InformUserAddBo();
+                informUserAddBo.setUserId(classGradeStudentVo.getUserId());
+                informUserAddBo.setSendTime(DateUtils.getNowTime());
+                informUserAddBo.setSendStatus(1);
+                informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                informUserAddBo.setRemindId(25L);
+                informUserAddBo.setSystemStatus(3);
+                informUserAddBo.setRemind("模考预约提醒");
+                informUserAddBo.setText("尊敬的用户:【" + classGradeStudentVo.getBusinessName() + classGradeStudentVo.getProjectName() + "】建考前模拟考试将开始报名参加模拟考试。请登录【祥粤云小程序】或【web.xyyxt.net】进行报名。");
+                UserVo userVo = iUserService.queryById(classGradeStudentVo.getUserId());
+                Map<String, Object> param = new HashMap<>();
+                if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), bookingReminder))) {
+                    iInformUserService.insertByAddBo(informUserAddBo);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void mockTimeSend(UserQueryBo bo) {
+        //提醒考试
+        LambdaQueryWrapper<UserMockSubscribe> lqw = Wrappers.lambdaQuery();
+        lqw.eq(UserMockSubscribe::getMockRemind,1);
+        List<UserMockSubscribe> userMockSubscribeList = iUserMockSubscribeService.list(lqw);
+        userMockSubscribeList.removeIf(userMockSubscribe -> {
+            try {
+                return System.currentTimeMillis()/1000 + 3600 <= formatTime(userMockSubscribe.getApplySiteExamTime(), userMockSubscribe.getApplySiteStartTime());
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+            return true;
+        });
+        InformRemindVo informRemindVo = informRemindService.queryById(26L);
+        if (userMockSubscribeList != null && userMockSubscribeList.size() > 0) {
+            for (UserMockSubscribe subscribeVo : userMockSubscribeList) {
+                String res;
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                Long timeId = subscribeVo.getApplySiteExamTime() * 1000;
+                Date date = new Date(timeId);
+                res = simpleDateFormat.format(date);
+                String startTime = subscribeVo.getApplySiteStartTime();
+                String endTime = subscribeVo.getApplySiteEndTime();
+                LambdaQueryWrapper<MockMajorSubjectTime> lqw2 = Wrappers.lambdaQuery();
+                lqw2.eq(MockMajorSubjectTime::getId, subscribeVo.getEachExamId());
+                MockMajorSubjectTime mockMajorSubjectTime = iMockMajorSubjectTimeService.getOne(lqw2);
+                LambdaQueryWrapper<MockMajorSubject> lqw3 = Wrappers.lambdaQuery();
+                lqw3.eq(MockMajorSubject::getMockMajorSubjectId, mockMajorSubjectTime.getMockMajorSubjectId());
+                MockMajorSubject mockMajorSubject = iMockMajorSubjectService.getOne(lqw3);
+                LambdaQueryWrapper<CourseSubject> lqw4 = Wrappers.lambdaQuery();
+                lqw4.eq(CourseSubject::getId, mockMajorSubject.getSubjectId());
+                CourseSubject courseSubject = iCourseSubjectService.getOne(lqw4);
+                LambdaQueryWrapper<MockApply> lqw5 = Wrappers.lambdaQuery();
+                lqw5.eq(MockApply::getApplyId, subscribeVo.getApplyId());
+                MockApply mockApply = iMockApplyService.getOne(lqw5);
+                if (informRemindVo.getWayStatus().equals(1)) {
+                    InformUserAddBo informUserAddBo = new InformUserAddBo();
+                    informUserAddBo.setUserId(subscribeVo.getUserId());
+                    informUserAddBo.setSendStatus(1);
+                    informUserAddBo.setSendTime(DateUtils.getNowTime());
+                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                    informUserAddBo.setRemindId(26L);
+                    informUserAddBo.setSystemStatus(1);
+                    informUserAddBo.setRemind("模考提醒");
+                    informUserAddBo.setText("祥粤云学堂提醒:您学习【" + courseSubject.getSubjectName() + "】科目中的【" + mockApply.getApplyName() + "模考】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行考试。");
+                    iInformUserService.insertByAddBo(informUserAddBo);
+                }
+                if (informRemindVo.getNoteStatus().equals(1)) {
+                    InformUserAddBo informUserAddBo = new InformUserAddBo();
+                    informUserAddBo.setUserId(subscribeVo.getUserId());
+                    informUserAddBo.setSendTime(DateUtils.getNowTime());
+                    informUserAddBo.setSendStatus(1);
+                    informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                    informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                    informUserAddBo.setRemindId(3L);
+                    informUserAddBo.setSystemStatus(3);
+                    informUserAddBo.setRemind("模考提醒");
+                    informUserAddBo.setText("祥粤云学堂提醒:您学习【" + courseSubject.getSubjectName() + "】科目中的【" + mockApply.getApplyName() + "模考】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行考试。");
+                    UserVo userVo = iUserService.queryById(subscribeVo.getUserId());
+                    Map<String, Object> param = new HashMap<>();
+                    param.put("time", res + "(" + startTime + "-" + endTime + ")");
+                    if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), examinationRemind))) {
+                        iInformUserService.insertByAddBo(informUserAddBo);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void mockLiveSend(UserQueryBo bo) {
+        List<UserMockSubscribeVo> userMockSubscribeVoList = iUserMockSubscribeService.listLiveSubscribe();
+        userMockSubscribeVoList.removeIf(userMockSubscribeVo -> System.currentTimeMillis()/1000 + 3600 <= userMockSubscribeVo.getLiveStartTime());
+        for (UserMockSubscribeVo userMockSubscribeVo : userMockSubscribeVoList) {
+            InformRemindVo informRemindVo = informRemindService.queryById(27L);
+            if (informRemindVo.getWayStatus().equals(1)) {
+                InformUserAddBo informUserAddBo = new InformUserAddBo();
+                informUserAddBo.setUserId(userMockSubscribeVo.getUserId());
+                informUserAddBo.setSendStatus(1);
+                informUserAddBo.setSendTime(DateUtils.getNowTime());
+                informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                informUserAddBo.setRemindId(27L);
+                informUserAddBo.setSystemStatus(1);
+                informUserAddBo.setRemind("直播开课提醒");
+                informUserAddBo.setText("祥粤云学堂提醒:您学习【" + userMockSubscribeVo.getSubjectName() + "】科目中的【" + userMockSubscribeVo.getPrefixName() + "直播】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行观看。");
+                iInformUserService.insertByAddBo(informUserAddBo);
+            }
+            if (informRemindVo.getNoteStatus().equals(1)) {
+                InformUserAddBo informUserAddBo = new InformUserAddBo();
+                informUserAddBo.setUserId(userMockSubscribeVo.getUserId());
+                informUserAddBo.setSendTime(DateUtils.getNowTime());
+                informUserAddBo.setSendStatus(1);
+                informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                informUserAddBo.setRemindId(13L);
+                informUserAddBo.setSystemStatus(3);
+                informUserAddBo.setRemind("考试预约提醒");
+                informUserAddBo.setText("祥粤云学堂提醒:您学习【" + userMockSubscribeVo.getSubjectName() + "】科目中的【" + userMockSubscribeVo.getPrefixName() + "直播】已将于60分钟后开始直播,请及时在【祥粤云小程序】或【web.xyyxt.net】进行观看。");
+                UserVo userVo = iUserService.queryById(userMockSubscribeVo.getUserId());
+                Map<String, Object> param = new HashMap<>();
+                if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), bookingReminder))) {
+                    iInformUserService.insertByAddBo(informUserAddBo);
+                }
+            }
+        }
+    }
+
+    private Long formatTime(Long startTime, String addTime) throws ParseException{
+        Long times = startTime*1000;//时间戳
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        String dateString = formatter.format(times);
+        String dateForma =null;
+        dateForma = dateString+" "+addTime.replace("-", ":");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        return sdf.parse(dateForma).getTime() / 1000;
+    }
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserMockSubscribeMapper.java

@@ -24,4 +24,6 @@ public interface UserMockSubscribeMapper extends BaseMapper<UserMockSubscribe> {
     List<UserMockSubscribeVo> listSubscribe(UserMockSubscribeQueryBo bo);
     List<UserMockSubscribeVo> listSubscribe(UserMockSubscribeQueryBo bo);
 
 
     List<UserMockSubscribeVo> listBySubject(UserMockSubscribeQueryBo bo);
     List<UserMockSubscribeVo> listBySubject(UserMockSubscribeQueryBo bo);
+
+    List<UserMockSubscribeVo> listLiveSubscribe();
 }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserMockSubscribeService.java

@@ -57,4 +57,6 @@ public interface IUserMockSubscribeService extends IService<UserMockSubscribe> {
     Integer getConsoleMockSubscribeNum(ConsoleQueryBo bo);
     Integer getConsoleMockSubscribeNum(ConsoleQueryBo bo);
 
 
     List<UserMockSubscribeVo> listSubscribe(UserMockSubscribeQueryBo bo);
     List<UserMockSubscribeVo> listSubscribe(UserMockSubscribeQueryBo bo);
+
+    List<UserMockSubscribeVo> listLiveSubscribe();
 }
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java

@@ -316,4 +316,9 @@ public class UserMockSubscribeServiceImpl extends ServiceImpl<UserMockSubscribeM
         }
         }
         return userMockSubscribeVos;
         return userMockSubscribeVos;
     }
     }
+
+    @Override
+    public List<UserMockSubscribeVo> listLiveSubscribe() {
+        return baseMapper.listLiveSubscribe();
+    }
 }
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserMockSubscribeVo.java

@@ -211,4 +211,8 @@ public class UserMockSubscribeVo {
 	@Excel(name = "预约直播 0不预约 1预约")
 	@Excel(name = "预约直播 0不预约 1预约")
 	@ApiModelProperty("预约直播 0不预约 1预约")
 	@ApiModelProperty("预约直播 0不预约 1预约")
 	private Integer liveSubscribe;
 	private Integer liveSubscribe;
+	/** 前缀名称 */
+	@Excel(name = "前缀名称")
+	@ApiModelProperty("前缀名称")
+	private String prefixName;
 }
 }

+ 18 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -55,6 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="periodPlushNum" column="period_plush_num"/>
         <result property="periodPlushNum" column="period_plush_num"/>
         <result property="periodPlushNum" column="period_plush_num"/>
         <result property="periodPlushNum" column="period_plush_num"/>
         <result property="subjectNames" column="subject_names"/>
         <result property="subjectNames" column="subject_names"/>
+        <result property="subjectIds" column="subject_ids"/>
     </resultMap>
     </resultMap>
 
 
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeUserListVo" id="ClassGradeUserListVo">
     <resultMap type="com.zhongzheng.modules.grade.vo.ClassGradeUserListVo" id="ClassGradeUserListVo">
@@ -163,6 +164,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="orderSn" column="order_sn"/>
         <result property="orderSn" column="order_sn"/>
         <result property="categoryName" column="category_name"/>
         <result property="categoryName" column="category_name"/>
         <result property="reason" column="reason"/>
         <result property="reason" column="reason"/>
+        <result property="projectName" column="project_name"/>
+        <result property="businessName" column="business_name"/>
     </resultMap>
     </resultMap>
 
 
 
 
@@ -394,7 +397,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         m.category_name,
         m.category_name,
         g.major_id,
         g.major_id,
         u.province,
         u.province,
-        cgu.reason
+        cgu.reason,
+        cb.business_name,
+        cpt.project_name
         FROM
         FROM
         class_grade_user cgu
         class_grade_user cgu
         LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
         LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
@@ -402,6 +407,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN order_goods og on cgu.order_goods_id = og.order_goods_id
         LEFT JOIN order_goods og on cgu.order_goods_id = og.order_goods_id
         LEFT JOIN goods g on og.goods_id = g.goods_id
         LEFT JOIN goods g on og.goods_id = g.goods_id
         LEFT JOIN major m ON g.major_id = m.id
         LEFT JOIN major m ON g.major_id = m.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN
         where 1=1
         where 1=1
         and cgu.`status` =1
         and cgu.`status` =1
         <if test="gradeId != null and gradeId !='' ">
         <if test="gradeId != null and gradeId !='' ">
@@ -798,4 +806,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </foreach>
             </foreach>
         </if>
         </if>
     </select>
     </select>
+    <select id="listGradeSubjects" resultMap="ClassGradeVoResult">
+        SELECT
+            cg.*,
+            g.subject_ids
+        FROM
+            class_grade cg
+        LEFT JOIN class_grade_goods cgg ON cg.grade_id = cgg.grade_id
+        LEFT JOIN goods g ON cgg.goods_id = g.goods_id
+    </select>
 </mapper>
 </mapper>

+ 3 - 0
zhongzheng-system/src/main/resources/mapper/modules/inform/InformUserMapper.xml

@@ -148,4 +148,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ORDER BY cgu.create_time desc
         ORDER BY cgu.create_time desc
             LIMIT 1
             LIMIT 1
     </select>
     </select>
+    <select id="listMockApply" resultType="com.zhongzheng.modules.mock.vo.MockApplyVo">
+        
+    </select>
 </mapper>
 </mapper>

+ 12 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml

@@ -206,6 +206,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND ma.apply_name = #{applyName}
             AND ma.apply_name = #{applyName}
         </if>
         </if>
     </select>
     </select>
+    <select id="listSubjects" resultMap="MockApplyVoResult">
+        SELECT
+            ma.*,
+            mms.subject_id
+        FROM
+            mock_apply ma
+                LEFT JOIN mock_major mm ON ma.apply_id = mm.apply_id
+                LEFT JOIN mock_major_subject mms ON mm.mock_major_id = mms.mock_major_id
+        WHERE
+            unix_timestamp(now()) &lt; ma.apply_end_time
+            AND unix_timestamp(now()) &gt; ma.apply_start_time
+    </select>
 
 
 
 
 </mapper>
 </mapper>

+ 19 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMockSubscribeMapper.xml

@@ -60,6 +60,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="firstHandTime" column="first_hand_time"/>
         <result property="firstHandTime" column="first_hand_time"/>
         <result property="mockRemind" column="mock_remind"/>
         <result property="mockRemind" column="mock_remind"/>
         <result property="liveSubscribe" column="live_subscribe"/>
         <result property="liveSubscribe" column="live_subscribe"/>
+        <result property="liveStartTime" column="live_start_time"/>
+        <result property="liveEndTime" column="live_end_time"/>
+        <result property="prefixName" column="prefix_name"/>
     </resultMap>
     </resultMap>
     <select id="getInfo" parameterType="java.lang.Long" resultMap="UserMockSubscribeVoResult">
     <select id="getInfo" parameterType="java.lang.Long" resultMap="UserMockSubscribeVoResult">
         SELECT 	ums.*,
         SELECT 	ums.*,
@@ -180,6 +183,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             and ma.applyName = #{applyName}
             and ma.applyName = #{applyName}
         </if>
         </if>
     </select>
     </select>
+    <select id="listLiveSubscribe" resultMap="UserMockSubscribeVoResult">
+        SELECT
+            ums.*,
+            cs.live_start_time,
+            cs.live_end_time,
+            cs.prefix_name,
+            css.subject_name
+        FROM
+            user_mock_subscribe ums
+        LEFT JOIN mock_major_subject mms ON ums.mock_major_subject_id = mms.mock_major_subject_id
+        LEFT JOIN course_section cs ON mms.section_id = cs.section_id
+        LEFT JOIN course_subject css ON mms.subject_id = css.id
+        WHERE
+            ums.live_subscribe = 1
+          and cs.live_start_time is not null
+    </select>
 
 
 
 
 </mapper>
 </mapper>