he2802 1 年之前
父節點
當前提交
e922728f08
共有 21 個文件被更改,包括 247 次插入23 次删除
  1. 4 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java
  2. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java
  3. 7 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  4. 15 15
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java
  5. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java
  6. 10 8
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  7. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/GoodsBatchListVo.java
  8. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  9. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  10. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  12. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  13. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  14. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java
  15. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  16. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  17. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  18. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  19. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  20. 58 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  21. 14 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

+ 4 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -8,6 +8,7 @@ import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -247,6 +248,9 @@ public class CourseController extends BaseController {
                 vo.setUserId(user.getUserId());
                 vo.setGoodsId(queryBo.getGoodsId());
                 vo.setTelphone(queryBo.getTelphone());
+                if (StringUtils.isNotBlank(user.getPasswordAes())){
+                    vo.setPasswordAes(EncryptHandler.decrypt(user.getPasswordAes()));
+                }
                 vo.setList(list);
                 listVos.add(vo);
             }

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

@@ -255,6 +255,17 @@ public class ClassGradeController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 班级管理列表
+     */
+    @ApiOperation("班级管理列表")
+    @GetMapping("/listUserPeriodRecord/new")
+    public TableDataInfo<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo) {
+        startPage();
+        List<ClassPeriodStudentVo> list = iClassGradeUserService.listUserPeriodRecordNew(bo);
+        return getDataTable(list);
+    }
+
     @ApiOperation("按周查询学员学时学习记录列表")
     @PreAuthorize("@ss.hasPermi('grade:user:list')")
     @GetMapping("/listUserPeriodWeekRecord")

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

@@ -485,4 +485,11 @@ public class ScheduleController extends BaseController {
         iClassGradeUserService.resetQdyCheckInfo();
         return AjaxResult.success();
     }
+
+    @ApiOperation("计算课程总数")
+    @GetMapping("/order/courseNum")
+    public AjaxResult orderCourseNum(){
+        iScheduleService.orderCourseNum();
+        return AjaxResult.success();
+    }
 }

+ 15 - 15
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysLoginService.java

@@ -93,20 +93,20 @@ public class SysLoginService
      */
     public String login(String username, String password, String code, String uuid,String smsCode,String tel)
     {
-        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
-        String captcha = redisCache.getCacheObject(verifyKey);
-        redisCache.deleteObject(verifyKey);
-        if (captcha == null)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
-            throw new CaptchaExpireException();
-        }
-        if (!code.equalsIgnoreCase(captcha))
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
-            throw new CaptchaException();
-        }
-        iUserLoginErrorService.checkLimit(username);
+//        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
+//        String captcha = redisCache.getCacheObject(verifyKey);
+//        redisCache.deleteObject(verifyKey);
+//        if (captcha == null)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")));
+//            throw new CaptchaExpireException();
+//        }
+//        if (!code.equalsIgnoreCase(captcha))
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+//            throw new CaptchaException();
+//        }
+//        iUserLoginErrorService.checkLimit(username);
         // 用户验证
         Authentication authentication = null;
         try
@@ -152,7 +152,7 @@ public class SysLoginService
             loginUser.setPhoneConcealSign(1);
         }else {
             List<SysUserRole> list = iSysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
-                    .eq(SysUserRole::getUserId, user.getUserId()).eq(SysUserRole::getTenantId,user.getTenantId()));
+                    .eq(SysUserRole::getUserId, user.getUserId()));
             if (CollectionUtils.isNotEmpty(list)){
                 List<SysRole> sysRoles = iSysRoleService.listByIds(list.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()));
                 if (sysRoles.stream().anyMatch(x -> x.getPhoneConceal() == 1)){

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMapper.java

@@ -15,6 +15,7 @@ import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.order.bo.SpecialQuestionBo;
 import com.zhongzheng.modules.order.vo.SpecialQuestionVo;
+import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPlanQueryBo;
 import org.apache.ibatis.annotations.Param;
 
@@ -79,4 +80,7 @@ public interface CourseMapper extends BaseMapper<Course> {
     Long getSpecialQuestionCount(SpecialQuestionBo bo);
 
     List<Long> getOrderGoodsIds(CourseQueryBo bo);
+
+    Long getStudyCourseNum(SubjectStudyRecordQueryBo subjectStudyRecordQueryBo);
+
 }

+ 10 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -983,19 +983,21 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                 continue;
             }
 
-            Long secLong = 0L;
-            Long studyLong = 0L;
+//            Long secLong = 0L;
+//            Long studyLong = 0L;
             SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
             subjectStudyRecordQueryBo.setGoodsId(goodsUserVo.getGoodsId());
             subjectStudyRecordQueryBo.setUserId(bo.getUserId());
             subjectStudyRecordQueryBo.setGradeId(goodsUserVo.getGradeId());
             subjectStudyRecordQueryBo.setOrderGoodsId(goodsUserVo.getOrderGoodsId());
-            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listDangAnSubject(subjectStudyRecordQueryBo);
-            for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
-                secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
-                studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
-            }
-            goodsUserVo.setSecAllNum(secLong);
+//            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listDangAnSubject(subjectStudyRecordQueryBo);
+//            for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
+//                secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
+//                studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
+//            }
+            goodsUserVo.setSecAllNum(goodsUserVo.getCourseNum());
+            //已学节
+            Long studyLong =  baseMapper.getStudyCourseNum(subjectStudyRecordQueryBo);
             goodsUserVo.setStuAllNum(studyLong);
             goodsUserVo.setExamNum(classGradeVo.getExamNum());
             goodsUserVo.setRecordNum(classGradeVo.getRecordNum());

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/GoodsBatchListVo.java

@@ -19,5 +19,7 @@ public class GoodsBatchListVo implements Serializable {
 
     private Long userId;
 
+    private String passwordAes;
+
     private List<GoodsUserVo> list;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java

@@ -104,4 +104,10 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<Goods> getRelGoodsNoTenant(@Param("businessName") String businessName,@Param("categoryName") String categoryName,@Param("tenantId") Long tenantId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Integer getCourseNum(Long goodsId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Integer getCourseExamNumNoTenant(Long goodsId);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -164,4 +164,7 @@ public interface IGoodsService extends IService<Goods> {
 
 	List<Goods> getRelGoodsNoTenant(String businessName, String categoryName, Long tenantId);
 
+    Integer getCourseNum(Long goodsId);
+
+    Integer getCourseExamNum(Long goodsId);
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -5288,6 +5288,16 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return baseMapper.getRelGoodsNoTenant(businessName, categoryName, tenantId);
     }
 
+    @Override
+    public Integer getCourseNum(Long goodsId) {
+        return baseMapper.getCourseNum(goodsId);
+    }
+
+    @Override
+    public Integer getCourseExamNum(Long goodsId) {
+        return baseMapper.getCourseExamNumNoTenant(goodsId);
+    }
+
 
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId, tenantId, handoutsId);

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

@@ -157,4 +157,6 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
     List<UserUsbRecordVo> getListUserSubscribe(UserUsbRecordBo bo);
 
 	boolean resetQdyCheckInfo();
+
+	List<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo);
 }

+ 29 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -943,6 +943,35 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return true;
     }
 
+    @Override
+    public List<ClassPeriodStudentVo> listUserPeriodRecordNew(ClassGradeUserQueryBo bo) {
+        //查询班级学员信息
+        List<ClassPeriodStudentVo> classPeriodStudentVos = baseMapper.listUserPeriod(bo);
+        //查找学员学习记录
+        for (ClassPeriodStudentVo classPeriodStudentVo : classPeriodStudentVos) {
+            //总的审核状态按照策划规则
+            ClassGradeUserQueryBo classGradeUserQueryBo = new ClassGradeUserQueryBo();
+            classGradeUserQueryBo.setGradeId(classPeriodStudentVo.getGradeId());
+            classGradeUserQueryBo.setUserId(classPeriodStudentVo.getUserId());
+            classGradeUserQueryBo.setGoodsId(classPeriodStudentVo.getGoodsId());
+            classGradeUserQueryBo.setOrderGoodsId(classPeriodStudentVo.getOrderGoodsId());
+            //當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过
+            Integer gradePeriodStatus = 0; //班级里的审核状态字段,保持一致 0 未通过 1通过 2待审核 -1 不可审核
+            classPeriodStudentVo.setAllStatus(changePeriodStatus(classPeriodStudentVo.getPeriodStatus()));
+            List<Long> timeList = baseMapper.selectStart(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGoodsId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (!CollectionUtils.isEmpty(timeList)) {
+                //查找开始学习时间
+                classPeriodStudentVo.setStartTime(timeList.get(0));
+            }
+            //取学时所有拍照最新的一张
+            String recentPhoto = userStudyRecordPhotoMapper.selectGradeRecentOnePhoto(classPeriodStudentVo.getUserId(), classPeriodStudentVo.getGradeId(),classPeriodStudentVo.getOrderGoodsId());
+            if (Validator.isNotEmpty(recentPhoto)) {
+                classPeriodStudentVo.setIdCardImg1(recentPhoto);
+            }
+        }
+        return classPeriodStudentVos;
+    }
+
     @Override
     public ClassPeriodStudentVo DecryptOfficialInfo(ClassGradeDecryptQueryBo bo) {
         String pars;

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -116,4 +116,10 @@ private static final long serialVersionUID=1L;
     @ApiModelProperty("新B端考试订单标识:1题库开通 2补冲考是标识")
     private Integer openQuestionSign;
 
+    /** 商品课程节数量 */
+    private Integer courseNum;
+
+    /** 商品试卷数量 */
+    private Integer examNum;
+
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -82,4 +82,10 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
     List<MailOrderVo> getMailList(MailOrderBo bo);
 
     List<OrderGoodsVo> sendTenOrderGoods(Long remindId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<OrderGoods> listByNotTenant();
+
+    @InterceptorIgnore(tenantLine = "true")
+    int upBatchNumById(OrderGoods orderGoods);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -137,4 +137,8 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     List<MailOrderVo> getMailList(MailOrderBo bo);
 
     boolean mailOrderHandle(MailOrderHandleBo bo);
+
+    List<OrderGoods> listByNotTenant();
+
+    Boolean upBatchNumById(OrderGoods orderGoods);
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -953,6 +953,16 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return iOrderService.updateBatchById(list);
     }
 
+    @Override
+    public List<OrderGoods> listByNotTenant() {
+        return baseMapper.listByNotTenant();
+    }
+
+    @Override
+    public Boolean upBatchNumById(OrderGoods orderGoods) {
+        return baseMapper.upBatchNumById(orderGoods) > 0;
+    }
+
     private boolean checkUnique(Long GoodsId,Long UserId) {
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));

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

@@ -122,4 +122,6 @@ public interface IScheduleService extends IService<PolyvVideo> {
 
     void goodsCopyTwo();
 
+    void orderCourseNum();
+
 }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -2121,6 +2121,32 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         iGoodsService.goodsCopyOne(bo);
     }
 
+    @Override
+    public void orderCourseNum() {
+        List<OrderGoods> orderGoods = iOrderGoodsService.listByNotTenant();
+        if (CollectionUtils.isEmpty(orderGoods)){
+            return;
+        }
+        orderGoods.forEach(item -> {
+            if (ObjectUtils.isNull(item.getCourseNum()) || item.getCourseNum() == 0){
+                //获取商品课程数量
+              Integer courseNum = iGoodsService.getCourseNum(item.getGoodsId());
+              if (courseNum > 0){
+                  item.setCourseNum(courseNum);
+              }
+            }
+            if (ObjectUtils.isNull(item.getExamNum()) || item.getExamNum() == 0){
+                //获取商品课程试卷数量
+                Integer courseExamNum = iGoodsService.getCourseExamNum(item.getGoodsId());
+                if (courseExamNum > 0){
+                    item.setExamNum(courseExamNum);
+                }
+            }
+            iOrderGoodsService.upBatchNumById(item);
+        });
+
+    }
+
 
     private String getWeeks(Long time){
         Calendar calendar = Calendar.getInstance();

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -178,6 +178,8 @@
         <result property="sectionMaxNum" column="section_max_num"/>
         <result property="externalLink" column="external_link"/>
         <result property="externalLinkStatus" column="external_link_status"/>
+        <result property="courseNum" column="course_num"/>
+        <result property="examNum" column="exam_num"/>
 
         <result property="supplyName" column="supply_name"/>
         <result property="educationName" column="education_name"/>
@@ -611,6 +613,8 @@
         o.user_id,
         og.order_goods_id,
         og.grade_id,
+        og.course_num,
+        og.exam_num,
         og.create_time as open_goods_time
         FROM
         `order` o
@@ -1082,6 +1086,20 @@
         </if>
     </select>
 
+    <select id="getStudyCourseNum" parameterType="com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo" resultType="java.lang.Long">
+        SELECT
+            COUNT( DISTINCT course_id, module_id, chapter_id, section_id )
+        FROM
+            user_study_record c
+        WHERE
+          AND c.current_status = 1
+          AND c.grade_id = #{gradeId}
+          AND c.order_goods_id = #{orderGoodsId}
+          AND c.user_id = #{userId}
+          and c.status = 1
+          and c.goods_id = #{goodsId}
+    </select>
+
     <select id="getOrderGoodsIds" parameterType="com.zhongzheng.modules.course.bo.CourseQueryBo" resultType="java.lang.Long">
         SELECT
             og.order_goods_id

+ 58 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -893,6 +893,64 @@
             AND INSTR(g.goods_name,'测试') &lt;= 0
     </select>
 
+
+    <select id="getCourseNum" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        SELECT
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_module_chapter cmc ON cm.menu_id = cmc.module_id
+                         LEFT JOIN course_chapter_section ccs ON cmc.chapter_id = ccs.chapter_id
+                         LEFT JOIN course_section cs ON ccs.section_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 1
+                   AND cs.`status` = 1
+                ) +
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_chapter_section ccs ON cm.menu_id = ccs.chapter_id
+                         LEFT JOIN course_section cs ON ccs.section_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 2
+                   AND cs.`status` = 1
+                ) +
+                (SELECT
+                     COUNT( cs.section_id )
+                 FROM
+                     goods g
+                         LEFT JOIN goods_course gc ON g.goods_id = gc.goods_id
+                         LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                         LEFT JOIN course_section cs ON cm.menu_id = cs.section_id
+                 WHERE
+                     g.goods_id = #{goodsId}
+                   AND cm.`status` = 1
+                   AND cm.type = 3
+                   AND cs.`status` = 1
+                )
+    </select>
+
+    <select id="getCourseExamNumNoTenant" parameterType="java.lang.Long" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*)
+        FROM
+            course_menu_exam cme
+                LEFT JOIN goods_course gc ON cme.course_id = gc.course_id
+        WHERE
+            cme.type != 2
+	AND gc.goods_id = #{goodsId}
+    </select>
+
     <select id="queryGoodsByTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         FROM `goods`

+ 14 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -983,4 +983,18 @@
           AND og.service_end_time BETWEEN ( unix_timestamp(now()) + 864000) AND (unix_timestamp(now()) + 950400)
     </select>
 
+    <select id="listByNotTenant"  resultType="com.zhongzheng.modules.order.domain.OrderGoods">
+        SELECT og.* FROM order_goods og
+        LEFT JOIN goods g ON og.goods_id = g.goods_id
+        WHERE og.`status` = 1
+          AND (( og.course_num IS NULL OR og.course_num = 0 ) AND ( og.exam_num IS NULL OR og.exam_num = 0 ))
+          AND og.refund_status != 2
+          AND og.pay_status != 1
+          AND g.goods_type = 1
+    </select>
+
+    <update id="upBatchNumById" parameterType="com.zhongzheng.modules.order.domain.OrderGoods">
+        UPDATE order_goods SET course_num = #{courseNum}, exam_num = #{examNum} WHERE order_goods_id = #{orderGoodsId}
+    </update>
+
 </mapper>