yangdamao 1 rok pred
rodič
commit
2f06115d27
16 zmenil súbory, kde vykonal 442 pridanie a 3 odobranie
  1. 1 0
      zhongzheng-admin-saas/src/main/resources/application.yml
  2. 19 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  3. 2 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  4. 1 0
      zhongzheng-admin/src/main/resources/application.yml
  5. 1 0
      zhongzheng-api/src/main/resources/application.yml
  6. 2 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java
  7. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java
  8. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java
  9. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  10. 97 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  11. 79 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentNewVo.java
  12. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  13. 58 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  14. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordPhotoMapper.java
  15. 137 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  16. 17 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordPhotoMapper.xml

+ 1 - 0
zhongzheng-admin-saas/src/main/resources/application.yml

@@ -307,6 +307,7 @@ aliyun:
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
     orderServiceEndRemind : SMS_465555251  #学生购买未学习
+    classEndRemind : SMS_465955572
 
 distributionOldPay:
       host: http://test.jqbao.net/System/BussinessApi/AddRedPackData

+ 19 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -266,6 +266,17 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询学时学员记录列表(新)
+     */
+    @ApiOperation("查询学员学时列表(新)")
+    @GetMapping("/listUserPeriod/new")
+    public TableDataInfo<ClassPeriodStudentNewVo> listUserPeriodNew(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodStudentNewVo> list = iClassGradeUserService.listUserPeriodNew(bo);
+        return getDataTable(list);
+    }
+
     /**
      * 查询学时学员记录列表
      */
@@ -316,6 +327,14 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
     }
 
+    @ApiOperation("查询学员视频学习记录列表")
+    @GetMapping("/listUserVideoRecord/new")
+    public TableDataInfo<ClassPeriodStudentVo> listUserVideoRecordNew(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodStudentVo> list = iClassGradeUserService.listUserVideoRecordNew(bo);
+        return getDataTable(list);
+    }
+
     /**
      * 查询学时学员记录列表
      */

+ 2 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -96,10 +96,11 @@ public class ScheduleController extends BaseController {
         return AjaxResult.success();
     }
 
-    @ApiOperation("二建服务到期提醒")
+    @ApiOperation("二建服务和班级到期提醒")
     @GetMapping("/sendServiceEnd")
     public AjaxResult sendServiceEnd() {
         iScheduleService.sendServiceEnd();
+        iScheduleService.sendClassTenAndFifteenEnd();
         return AjaxResult.success();
     }
 

+ 1 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -307,3 +307,4 @@ aliyun:
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
     orderServiceEndRemind : SMS_465555251  #学生购买未学习
+    classEndRemind : SMS_465955572

+ 1 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -305,3 +305,4 @@ aliyun:
     todayExamNotRecordTeachWarn: SMS_257702971  #学员打卡教务提醒(每日一练)
     noFinishExamNoteCode: SMS_262460267  #未做完试卷通知
     orderServiceEndRemind : SMS_465555251  #学生购买未学习
+    classEndRemind : SMS_465955572

+ 2 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -161,8 +161,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/grade/grade/listPeriod").anonymous()
                 .antMatchers("/course/business/queryFullId").anonymous()
                 .antMatchers("/grade/grade/listUserPeriod").anonymous()
+                .antMatchers("/grade/grade/listUserPeriod/new").anonymous()
                 .antMatchers("/grade/grade/listPeriodAudit").anonymous()
                 .antMatchers("/grade/grade/listUserVideoRecord").anonymous()
+                .antMatchers("/grade/grade/listUserVideoRecord/new").anonymous()
                 .antMatchers("/swagger-ui.html").anonymous()
                 .antMatchers("/swagger-resources/**").anonymous()
                 .antMatchers("/webjars/**").anonymous()

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeUserQueryBo.java

@@ -315,4 +315,10 @@ public class ClassGradeUserQueryBo extends BaseEntity {
 	@ApiModelProperty("录单订单编号")
 	private String inputOrderSn;
 
+	private List<Long> tenantIds;
+
+	private List<Long> educationTypeIds;
+
+	private List<Long> projectIds;
+
 }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java

@@ -43,6 +43,9 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     List<ClassPeriodStudentVo> listUserVideoRecord(ClassGradeUserQueryBo bo);
 
+    @InterceptorIgnore(tenantLine = "true")
+    List<ClassPeriodStudentVo> listUserVideoRecordNew(ClassGradeUserQueryBo bo);
+
     List<ClassPeriodStudentVo> listUserPeriodExport(ClassGradeUserQueryBo bo);
 
     List<ClassPeriodUserVo> listPeriod(ClassGradeUserQueryBo bo);
@@ -77,6 +80,8 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     List<ClassGradeUserGoodsVo> sendTenClassGradeUser();
 
+    List<ClassGradeUserGoodsVo> sendTenAndFifteenClassGradeUser();
+
     List<ClassGradeUserGoodsVo> checkTenClassGradeUser(@Param("userId") Long userId,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
 
     List<ClassGradeUserGoodsVo> sendFiveClassGradeUser();
@@ -130,4 +135,12 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     OrderGoods getOrderGoods(@Param("userId") Long userId, @Param("goodsId")Long goodsId);
 
+    @InterceptorIgnore(tenantLine = "true")
+    List<ClassPeriodStudentNewVo> listUserPeriodNew(ClassGradeUserQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Long getEduIdByTenant(@Param("tenantId") Long tenantId,@Param("eduName") String eduName);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Long getProIdByTenant(@Param("tenantId") Long tenantId,@Param("proName") String proName,@Param("eduId") Long eduId);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -164,4 +164,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 	boolean resetQdyCheckInfo();
 
 	List<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo);
+
+    List<ClassPeriodStudentNewVo> listUserPeriodNew(ClassGradeUserQueryBo bo);
+
+    List<ClassPeriodStudentVo> listUserVideoRecordNew(ClassGradeUserQueryBo bo);
 }

+ 97 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -67,8 +67,10 @@ import com.zhongzheng.modules.order.service.IOrderInputService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
+import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysConfigService;
 import com.zhongzheng.modules.system.service.ISysOldOrgService;
+import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.system.service.ISysUserService;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
@@ -130,6 +132,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private ISysUserService iSysUserService;
 
+    @Autowired
+    private ISysTenantService iSysTenantService;
+
     @Autowired
     private IOrderService iOrderService;
 
@@ -979,6 +984,97 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return classPeriodStudentVos;
     }
 
+    @Override
+    public List<ClassPeriodStudentNewVo> listUserPeriodNew(ClassGradeUserQueryBo bo) {
+        //查询机构
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        SysTenant sysTenant = iSysTenantService.getById(tenantId);
+        if (ObjectUtils.isNotNull(sysTenant) && sysTenant.getSevenClass() == 1){
+            //七大员继教共享祥粤
+            List<SysTenant> sysTenants = iSysTenantService.list(new LambdaQueryWrapper<SysTenant>()
+                    .eq(SysTenant::getSevenClass, 1)
+                    .eq(SysTenant::getStatus, 1));
+            if (!CollectionUtils.isEmpty(sysTenants)){
+                List<Long> tenantIds = new ArrayList<>();
+                List<Long> educationTypeIds = new ArrayList<>();
+                List<Long> projectIds = new ArrayList<>();
+                for (SysTenant tenant : sysTenants) {
+                    tenantIds.add(tenant.getTenantId());
+                    Long eduId = baseMapper.getEduIdByTenant(tenant.getTenantId(),"继续教育");
+                    if (ObjectUtils.isNotNull(eduId)){
+                        educationTypeIds.add(eduId);
+                        Long proId = baseMapper.getProIdByTenant(tenant.getTenantId(),"继续教育",eduId);
+                        if (ObjectUtils.isNotNull(proId)){
+                            projectIds.add(proId);
+                        }
+                    }
+                }
+                bo.setTenantIds(tenantIds);
+                bo.setEducationTypeIds(educationTypeIds);
+                bo.setProjectIds(projectIds);
+            }
+        }
+        //查询班级学员信息
+        List<ClassPeriodStudentNewVo> classPeriodStudentVos = baseMapper.listUserPeriodNew(bo);
+        //查找学员学习记录
+        for (ClassPeriodStudentNewVo classPeriodStudentVo : classPeriodStudentVos) {
+            classPeriodStudentVo.setIdCard(EncryptHandler.decrypt(classPeriodStudentVo.getIdCard()));
+            classPeriodStudentVo.setTelPhone(EncryptHandler.decrypt(classPeriodStudentVo.getTelPhone()));
+            List<Long> timeList = baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (!CollectionUtils.isEmpty(timeList)) {
+                //查找开始学习时间
+                classPeriodStudentVo.setStartTime(timeList.get(0));
+            }else{
+                classPeriodStudentVo.setStartTime(baseMapper.selectStartNoPhoto(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId())
+                );
+            }
+        }
+        return classPeriodStudentVos;
+    }
+
+    @Override
+    public List<ClassPeriodStudentVo> listUserVideoRecordNew(ClassGradeUserQueryBo bo) {
+        //查询机构
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        SysTenant sysTenant = iSysTenantService.getById(tenantId);
+        if (ObjectUtils.isNotNull(sysTenant) && sysTenant.getSevenClass() == 1){
+            //七大员继教共享祥粤
+            List<SysTenant> sysTenants = iSysTenantService.list(new LambdaQueryWrapper<SysTenant>()
+                    .eq(SysTenant::getSevenClass, 1)
+                    .eq(SysTenant::getStatus, 1));
+            if (!CollectionUtils.isEmpty(sysTenants)){
+                List<Long> tenantIds = new ArrayList<>();
+                List<Long> educationTypeIds = new ArrayList<>();
+                List<Long> projectIds = new ArrayList<>();
+                for (SysTenant tenant : sysTenants) {
+                    tenantIds.add(tenant.getTenantId());
+                    Long eduId = baseMapper.getEduIdByTenant(tenant.getTenantId(),"继续教育");
+                    if (ObjectUtils.isNotNull(eduId)){
+                        educationTypeIds.add(eduId);
+                        Long proId = baseMapper.getProIdByTenant(tenant.getTenantId(),"继续教育",eduId);
+                        if (ObjectUtils.isNotNull(proId)){
+                            projectIds.add(proId);
+                        }
+                    }
+                }
+                bo.setTenantIds(tenantIds);
+                bo.setEducationTypeIds(educationTypeIds);
+                bo.setProjectIds(projectIds);
+            }
+        }
+        //查询班级学员信息
+        List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserVideoRecordNew(bo);
+        //查找学员学习记录
+        for (ClassPeriodStudentVo classPeriodStudentVo : classPeriodStudentVos) {
+            //取学时所有拍照最新的一张
+            String recentPhoto = userStudyRecordPhotoMapper.selectGradeRecentOnePhotoNew(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (Validator.isNotEmpty(recentPhoto)) {
+                classPeriodStudentVo.setIdCardImg1(recentPhoto);
+            }
+        }
+        return classPeriodStudentVos;
+    }
+
     @Override
     public ClassPeriodStudentVo DecryptOfficialInfo(ClassGradeDecryptQueryBo bo) {
         String pars;
@@ -3646,7 +3742,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
 
     @Override
     public List<ClassGradeUserGoodsVo> checkTenClassGradeUser(ClassGradeUserQueryBo bo) {
-        Long startTime = 11*24*3600L;
+        Long startTime = 16*24*3600L;
         Long endTime = 1*24*3600L;
         List<ClassGradeUserGoodsVo> list = baseMapper.checkTenClassGradeUser(bo.getUserId(),startTime,endTime);
         List<ClassGradeUserGoodsVo> list1 = new ArrayList<>();

+ 79 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentNewVo.java

@@ -0,0 +1,79 @@
+package com.zhongzheng.modules.grade.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 学员记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("学员学时视图对象")
+public class ClassPeriodStudentNewVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 学员ID */
+	@ApiModelProperty("学员ID")
+	private Long userId;
+
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+
+	/** 班级id */
+	@ApiModelProperty("班级id")
+	private Long gradeId;
+
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+
+	/** 1 进入 0移除 */
+	@ApiModelProperty("1 进入 0移除")
+	private Integer status;
+
+	/** 学员编码 */
+	@ApiModelProperty("学员姓名")
+	private String realName;
+
+	/** 学员编码 */
+	@ApiModelProperty("学员身份证")
+	private String idCard;
+
+	/** 学员编码 */
+	@ApiModelProperty("学员电话")
+	private String telPhone;
+
+	/** 学习有效期开始 */
+	@ApiModelProperty("学习开始")
+	private Long startTime;
+	/** 学习有效期结束 */
+	@ApiModelProperty("学习结束")
+	private Long endTime;
+
+	@ApiModelProperty("审核状态  1通过 3不通过 2待审")
+	private Integer profileStatus;
+
+	@ApiModelProperty("班级名称")
+	private String className;
+
+	@ApiModelProperty("商品名称")
+	private String goodsName;
+
+	@ApiModelProperty("学习年份")
+	private String sevenYear;
+
+	@ApiModelProperty("业务名称")
+	private String fullName;
+
+	private String tenantId;
+
+}

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

@@ -22,6 +22,8 @@ public interface IScheduleService extends IService<PolyvVideo> {
 
     void sendServiceEnd();
 
+    void sendClassTenAndFifteenEnd();
+
     void timeSend(UserQueryBo bo);
 
     void closeTimeOutOrder();

+ 58 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -66,6 +66,7 @@ import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeQueryBo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.domain.*;
+import com.zhongzheng.modules.grade.mapper.ClassGradeUserMapper;
 import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeVo;
@@ -352,7 +353,8 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     private ISysTaskService iSysTaskService;
     @Autowired
     private OssService ossService;
-
+    @Autowired
+    private ClassGradeUserMapper classGradeUserMapper;
 
     @Value("${aliyun.sms.OpenTheGoodsCode}")
     private String OpenTheGoodsCode;
@@ -402,6 +404,9 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Value("${aliyun.sms.orderServiceEndRemind}")
     private String orderServiceEndRemind;
 
+    @Value("${aliyun.sms.classEndRemind}")
+    private String classEndRemind;
+
     @Autowired
     private RedisCache redisCache;
 
@@ -639,6 +644,58 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
 
     }
 
+    @Override
+    public void sendClassTenAndFifteenEnd() {
+        InformRemindVo informRemindVo = informRemindService.queryByName("二建继教班级有效期倒计时15,10天");
+        if(Validator.isNotEmpty(informRemindVo)){
+            List<ClassGradeUserGoodsVo> list = classGradeUserMapper.sendTenAndFifteenClassGradeUser();
+            for (ClassGradeUserGoodsVo goodsVo : list) {
+                GoodsVo goods = iGoodsService.queryById(goodsVo.getGoodsId());
+                if (!CollectionUtils.isEmpty(informRemindVo.getInformRemindBusiness()) && !CollectionUtils.isEmpty(informRemindVo.getInformRemindBusiness().stream().filter(informRemindBusinessVo -> informRemindBusinessVo.getBusinessId().equals(goods.getBusinessId())).collect(Collectors.toList()))) {
+                    UserVo userVo = iUserService.queryById(goodsVo.getUserId());
+                    int day = DateUtils.dayBetween(DateUtils.getNowTime(),goodsVo.getClassEndTime())-1;
+                    if (informRemindVo.getWayStatus().equals(1)) {
+                        InformUserAddBo informUserAddBo = new InformUserAddBo();
+                        informUserAddBo.setUserId(goodsVo.getUserId());
+                        informUserAddBo.setSendStatus(1);
+                        informUserAddBo.setSendTime(DateUtils.getNowTime());
+                        informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                        informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                        informUserAddBo.setRemindId(informRemindVo.getId());
+                        informUserAddBo.setSystemStatus(1);
+                        informUserAddBo.setGradeId(goodsVo.getGradeId());
+                        informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
+                        informUserAddBo.setRemind("二建继教班级有效期还剩"+day+"天提醒");
+                        informUserAddBo.setGoodsId(goodsVo.getGoodsId());
+                        informUserAddBo.setText("尊敬的用户:您购买的课程二建继教班级有效期还剩"+day+"天,请在"+DateUtils.timestampToDateFormat(goodsVo.getClassEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习及考试,到期未完成学时将清零,需重新学习。");
+                        iInformUserService.insertByAddBo(informUserAddBo);
+                    }
+                    if (informRemindVo.getNoteStatus().equals(1)) {
+                        InformUserAddBo informUserAddBo = new InformUserAddBo();
+                        informUserAddBo.setUserId(goodsVo.getUserId());
+                        informUserAddBo.setSendStatus(1);
+                        informUserAddBo.setSendTime(DateUtils.getNowTime());
+                        informUserAddBo.setCreateTime(DateUtils.getNowTime());
+                        informUserAddBo.setUpdateTime(DateUtils.getNowTime());
+                        informUserAddBo.setRemindId(informRemindVo.getId());
+                        informUserAddBo.setSystemStatus(3);
+                        informUserAddBo.setOrderGoodsId(goodsVo.getOrderGoodsId());
+                        informUserAddBo.setGradeId(goodsVo.getGradeId());
+                        informUserAddBo.setRemind("二建继教班级有效期还剩"+day+"天提醒");
+                        informUserAddBo.setGoodsId(goodsVo.getGoodsId());
+                        informUserAddBo.setText("尊敬的用户:您购买的课程二建继班级有效期还剩"+day+"天,请在"+DateUtils.timestampToDateFormat(goodsVo.getClassEndTime(),DateUtils.YYYY__MM__DD)+"前完成学习及考试,到期未完成学时将清零,需重新学习。");
+                        Map<String, Object> param = new HashMap<>();
+                        param.put("date", DateUtils.timestampToDateFormat(goodsVo.getClassEndTime(),DateUtils.YYYY__MM__DD));
+                        param.put("day", day);
+                        if (Validator.isNotEmpty(IAliSmsService.sendInformSms(userVo.getTelphone(), JSON.toJSONString(param), classEndRemind))) {
+                            iInformUserService.insertByAddBo(informUserAddBo);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     private void sendClassEnd() {
         List<ClassGradeUserGoodsVo> classTwentyGradeUserVos = iClassGradeUserService.sendTwentyClassGradeUser();
         List<ClassGradeUserGoodsVo> classTenGradeUserVos = iClassGradeUserService.sendTenClassGradeUser();

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordPhotoMapper.java

@@ -18,6 +18,9 @@ public interface UserStudyRecordPhotoMapper extends BaseMapper<UserStudyRecordPh
 
     String selectGradeRecentOnePhoto(@Param("userId") Long userId,@Param("gradeId") Long gradeId,@Param("orderGoodsId") Long orderGoodsId);
 
+    @InterceptorIgnore(tenantLine = "true")
+    String selectGradeRecentOnePhotoNew(@Param("userId") Long userId,@Param("gradeId") Long gradeId,@Param("orderGoodsId") Long orderGoodsId);
+
     List<String> selectGradePhotoWeek(@Param("userId") Long userId,@Param("gradeId") Long gradeId,@Param("searchWeekStartTime") Long searchWeekStartTime,@Param("searchWeekEndTime") Long searchWeekEndTime,@Param("orderGoodsId") Long orderGoodsId);
 
     @InterceptorIgnore(tenantLine = "true")

+ 137 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -422,6 +422,55 @@
         order by up.create_time desc
     </select>
 
+    <select id="listUserVideoRecordNew" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
+            resultMap="ClassPeriodStudentVo">
+        SELECT
+        up.* ,cg.class_name,cs.duration_time,u.id_card,u.realname,u.one_inch_photos,u.company_name,cs.`name` as section_name,ups.record_start_time,ups.record_end_time,ups.update_time as on_line_time
+        FROM
+        user_period up
+        LEFT JOIN user_period_status ups ON up.id = ups.period_id
+        LEFT JOIN class_grade cg on up.grade_id = cg.grade_id
+        LEFT JOIN  goods g ON up.goods_id = g.goods_id
+        LEFT JOIN course_section cs ON up.section_id = cs.section_id
+        LEFT JOIN `user` u ON up.user_id = u.user_id
+        WHERE
+        up.grade_id > 0  and up.type = 1
+        <if test="businessId != null and businessId != ''">
+            AND g.business_id = #{businessId}
+        </if>
+        <if test="projectIds != null and projectIds.size()!=0 ">
+            AND g.project_id in
+            <foreach collection="projectIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="educationTypeIds != null and educationTypeIds.size()!=0 ">
+            AND g.education_type_id in
+            <foreach collection="educationTypeIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="realname != null and realname != ''">
+            AND u.realname like concat('%', #{realname}, '%')
+        </if>
+        <if test="telphone != null and telphone != ''">
+            AND u.telphone = #{telphone`,typeHandler=com.zhongzheng.common.type.EncryptHandler`}
+        </if>
+        <if test="idCard != null and idCard != ''">
+            AND u.id_card = #{idCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
+        </if>
+        <if test="companyName != null and companyName != ''">
+            AND u.company_name like concat('%', #{companyName}, '%')
+        </if>
+        <if test="tenantIds != null and tenantIds.size()!=0 ">
+            AND up.tenant_id in
+            <foreach collection="tenantIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        order by up.create_time desc
+    </select>
+
 
     <select id="listUserPeriod" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
             resultMap="ClassPeriodStudentVo">
@@ -576,6 +625,75 @@
         </if>
     </select>
 
+
+    <select id="listUserPeriodNew" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
+            resultType="com.zhongzheng.modules.grade.vo.ClassPeriodStudentNewVo">
+        SELECT
+        u.user_id,
+        u.realname,
+        og.goods_id,
+        u.id_card,
+        cgu.grade_id,
+        u.telphone,
+        up.`status` as profile_status,
+        g.goods_name,
+        cg.class_name,
+        cgu.order_goods_id,
+        (SELECT og.seven_year FROM order_goods og  where og.order_goods_id = cgu.order_goods_id ) as seven_year,
+        cgu.period_wait_time as end_time,
+        cgu.tenant_id,
+        CONCAT(cet.education_name,cpt.project_name,cb.business_name) AS fullName
+        FROM
+        class_grade_user cgu
+        LEFT JOIN class_grade cg ON cgu.grade_id = cg.grade_id
+        LEFT JOIN order_goods og ON cgu.order_goods_id = og.order_goods_id
+        LEFT JOIN `user` u ON u.user_id = cgu.user_id
+        LEFT JOIN user_profile up on u.user_id =up.user_id and up.goods_id = og.goods_id and cgu.order_goods_id = up.order_goods_id and up.type_status=1 and up.current_status = 1
+        LEFT JOIN goods g on og.goods_id = g.goods_id
+        LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN course_business cb ON g.business_id = cb.id
+        where 1=1
+        and cgu.`status` =1
+        and cb.`period_check_sign` = 1
+        <if test="projectIds != null and projectIds.size()!=0 ">
+            AND g.project_id in
+            <foreach collection="projectIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="educationTypeIds != null and educationTypeIds.size()!=0 ">
+            AND g.education_type_id in
+            <foreach collection="educationTypeIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <if test="periodStatus != null ">
+            and cgu.period_status = #{periodStatus}
+        </if>
+        <if test="searchKey != null and searchKey != '' ">
+            and u.realname like concat('%', #{searchKey}, '%')
+        </if>
+        <if test="idCard != null and idCard !='' ">
+            AND u.id_card = #{idCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
+        </if>
+        <if test="tenantIds != null and tenantIds.size()!=0 ">
+            AND cgu.tenant_id in
+            <foreach collection="tenantIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        order by cgu.update_time desc
+    </select>
+
+    <select id="getEduIdByTenant" parameterType="map" resultType="java.lang.Long">
+        SELECT id FROM course_education_type WHERE tenant_id = #{tenantId} AND education_name = #{eduName} AND `status` = 1 LIMIT 1
+    </select>
+
+    <select id="getProIdByTenant" parameterType="map" resultType="java.lang.Long">
+        SELECT id FROM course_project_type WHERE tenant_id = #{tenantId} AND project_name = #{proName}  AND education_id = #{eduId} AND `status` = 1 LIMIT 1
+    </select>
+
     <select id="exportUserPeriod" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo"
             resultMap="ClassPeriodStudentVo">
         SELECT
@@ -1678,6 +1796,25 @@
         AND unix_timestamp(now()) BETWEEN cg.class_end_time-864000 and cg.class_end_time-777600
     </select>
 
+    <select id="sendTenAndFifteenClassGradeUser"  resultMap="ClassGradeUserGoodsVoResult">
+
+        SELECT
+            cgu.user_id,
+            cgu.order_goods_id,
+            cg.class_start_time,
+            cg.class_end_time,
+            og.goods_id,
+            cg.grade_id
+        FROM
+            class_grade_user cgu
+                LEFT JOIN class_grade cg on  cgu.grade_id = cg.grade_id
+                LEFT JOIN order_goods og ON cgu.order_goods_id = og.order_goods_id
+        where 1=1
+          and cgu.status = 1
+          AND (unix_timestamp(now()) BETWEEN cg.class_end_time-950400 and cg.class_end_time-864000 or
+               unix_timestamp(now()) BETWEEN cg.class_end_time-1382400 and cg.class_end_time-1296000)
+    </select>
+
     <select id="checkTenClassGradeUser" parameterType="map" resultMap="ClassGradeUserGoodsVoResult">
 
         SELECT

+ 17 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordPhotoMapper.xml

@@ -68,6 +68,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             LIMIT 1
     </select>
 
+    <select id="selectGradeRecentOnePhotoNew" parameterType="map" resultType="string">
+        SELECT
+            rp.photo
+        FROM
+            user_period up
+                LEFT JOIN user_period_status ups ON up.id = ups.period_id
+                LEFT JOIN user_study_record_photo rp ON ups.id = rp.period_id
+        WHERE
+            up.grade_id = #{gradeId}
+          AND up.user_id = #{userId}
+          AND (up.order_goods_id = #{orderGoodsId} or up.order_goods_id is null)
+          AND rp.photo IS NOT NULL
+        ORDER BY
+            rp.id DESC
+            LIMIT 1
+    </select>
+
     <select id="listByPhoto" parameterType="java.lang.String" resultType="com.zhongzheng.modules.user.domain.UserStudyRecordPhoto">
         SELECT * FROM `user_study_record_photo` WHERE photo = #{imageUrl}
     </select>