he2802 2 yıl önce
ebeveyn
işleme
d9a2a4df04

+ 14 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/inform/InformUserController.java

@@ -61,6 +61,20 @@ public class InformUserController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询通知绑定学员列表
+     */
+    @ApiOperation("学员通知消息数量")
+    @GetMapping("/count")
+    public AjaxResult<Integer> getInformUserCount(InformUserQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        startPage();
+        bo.setStatus(1);
+        Integer count = iInformUserService.getInformUserCount(bo);
+        return AjaxResult.success(count);
+    }
+
 
     /**
      * 获取通知绑定学员详细信息

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseQueryBo.java

@@ -136,4 +136,7 @@ public class CourseQueryBo extends BaseEntity {
 	/** 真实姓名 */
 	@ApiModelProperty("真实姓名")
 	private String realname;
+
+	@ApiModelProperty("查询标识:1 PC学习列表")
+		private Integer querySign;
 }

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

@@ -41,6 +41,7 @@ import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.service.IQuestionMerchantService;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
+import com.zhongzheng.modules.goods.vo.GoodsSectionNumVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
@@ -522,10 +523,15 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             subjectStudyRecordQueryBo.setUserId(bo.getUserId());
             subjectStudyRecordQueryBo.setGradeId(goodsUserVo.getGradeId());
             subjectStudyRecordQueryBo.setOrderGoodsId(goodsUserVo.getOrderGoodsId());
-            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(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();
+//            List<SubjectStudyRecordVo> subjectStudyRecordVos = iUserStudyRecordService.listSubject(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();
+//            }
+            GoodsSectionNumVo vo = iUserStudyRecordService.getGoodsSectionNum(subjectStudyRecordQueryBo);
+            if (ObjectUtils.isNotNull(vo)){
+                secLong = vo.getSectionNum();
+                studyLong = vo.getRecordNum();
             }
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setStuAllNum(studyLong);
@@ -623,7 +629,6 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             }
 
             //预约考试是否可以购买题库(该商品没有关联题库且预约考试的时间提前8天)
-
             UserSubscribe userSubscribeTwo = iUserSubscribeService.getOne(new LambdaQueryWrapper<UserSubscribe>()
             .eq(UserSubscribe::getOrderGoodsId,goodsUserVo.getOrderGoodsId())
             .eq(UserSubscribe::getSubscribeStatus,1)

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

@@ -69,8 +69,10 @@ import com.zhongzheng.modules.system.service.ISysGoodsCopyRecordService;
 import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPhoneBo;
+import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
 import com.zhongzheng.modules.user.domain.School;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.service.ISchoolService;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsSectionNumVo.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.goods.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年08月31日 16:19
+ */
+@Data
+public class GoodsSectionNumVo implements Serializable {
+
+    private Long sectionNum;
+
+    private Long recordNum;
+}

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

@@ -66,4 +66,6 @@ public interface IInformUserService extends IService<InformUser> {
 	List<MockApplyVo> listMockApply();
 
 	InformUserVo selectLastUnStudyMsg(Long userId);
+
+	Integer getInformUserCount(InformUserQueryBo bo);
 }

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

@@ -270,4 +270,18 @@ public class InformUserServiceImpl extends ServiceImpl<InformUserMapper, InformU
         Long time = cal.getTimeInMillis() / 1000;
         return this.baseMapper.selectLastUnStudyMsg(time,userId);
     }
+
+    @Override
+    public Integer getInformUserCount(InformUserQueryBo bo) {
+        LambdaQueryWrapper<InformUser> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getUserId() != null, InformUser::getUserId, bo.getUserId());
+        lqw.eq(bo.getSendTime() != null, InformUser::getSendTime, bo.getSendTime());
+        lqw.eq(bo.getSendStatus() != null, InformUser::getSendStatus, bo.getSendStatus());
+        lqw.eq(bo.getReceiptStatus() != null, InformUser::getReceiptStatus, bo.getReceiptStatus());
+        lqw.eq(bo.getStatus() != null, InformUser::getStatus, bo.getStatus());
+        lqw.eq( InformUser::getSendStatus, 1);
+        lqw.in( bo.getSystemStatusList() != null,InformUser::getSystemStatus, bo.getSystemStatusList());
+        lqw.orderByDesc(InformUser::getSendTime);
+        return this.count(lqw);
+    }
 }

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

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.course.bo.CourseSectionDetailBo;
 import com.zhongzheng.modules.course.bo.CourseSectionDetailVo;
 import com.zhongzheng.modules.course.bo.CourseStatementBo;
 import com.zhongzheng.modules.course.bo.CourseStatementVo;
+import com.zhongzheng.modules.goods.vo.GoodsSectionNumVo;
 import com.zhongzheng.modules.grade.domain.UserPeriod;
 import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
 import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
@@ -114,4 +115,6 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
     UserStudyRecord getSevenStudyRecord(@Param("orderGoodsId") Long orderGoodsId,@Param("gradeId") Long gradeId);
 
     UserPeriod selectSevenUserPeriod(UserStudyRecord bo);
+
+    GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo queryBo);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -3,6 +3,7 @@ package com.zhongzheng.modules.user.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.course.bo.*;
+import com.zhongzheng.modules.goods.vo.GoodsSectionNumVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
 import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
@@ -144,4 +145,7 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
     UserStudyRecord getStudyRecord(Long userId, Long gradeId, String asc);
 
 	Integer syncSevenPublicClass(Long orderGoodsId,Long userId);
+
+	GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo subjectStudyRecordQueryBo);
+
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -28,6 +28,7 @@ import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsCourse;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsSectionNumVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.bo.UserPeriodEditBo;
@@ -1361,6 +1362,15 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         return 2;
     }
 
+    @Override
+    public GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo queryBo) {
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        if (StringUtils.isNotBlank(tenantId)){
+            queryBo.setTenantId(Long.valueOf(tenantId));
+        }
+        return baseMapper.getGoodsSectionNum(queryBo);
+    }
+
 
     /**
      * 获取最后一次看完的节

+ 5 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -537,14 +537,18 @@
         (SELECT cet.project_name FROM  course_project_type cet where cet.id = g.project_id) as project_name,
         (SELECT cet.business_name FROM  course_business cet  where cet.id = g.business_id) as business_name,
         (SELECT COUNT(1) FROM goods_course gc where gc.goods_id = g.goods_id) as course_num,
-        (case WHEN (SELECT COUNT(1) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where up.goods_id = g.goods_id AND ups.period_status =1 and ups.`status` =0) >0 then 0 ELSE 1 end) as rebuild_status,
+        <if test="querySign == null or querySign == 0">
+            (case WHEN (SELECT COUNT(1) FROM user_period up LEFT JOIN user_period_status ups on up.id = ups.period_id where up.goods_id = g.goods_id AND ups.period_status =1 and ups.`status` =0) >0 then 0 ELSE 1 end) as rebuild_status,
+        </if>
         (case WHEN (SELECT COUNT(1) FROM exam_apply_goods eag LEFT JOIN exam_apply ea on eag.apply_id = ea.apply_id LEFT JOIN exam_apply_user eau on eau.apply_id = ea.apply_id where   eag.goods_id = g.goods_id and ea.`status` = 1 and unix_timestamp(now()) BETWEEN ea.apply_start_time and ea.apply_end_time) >0 then 1 ELSE 0 end) as apply_status,
         (case WHEN (SELECT COUNT(1) FROM exam_before_goods ebg LEFT JOIN exam_before eb on ebg.before_id = eb.before_id where ebg.goods_id = g.goods_id and eb.`status` = 1 and unix_timestamp(now()) BETWEEN eb.before_start_time and eb.before_end_time) >0 then 1 ELSE 0 end) as before_status,
         (SELECT ea.apply_name FROM exam_apply_goods eag LEFT JOIN exam_apply ea on eag.apply_id = ea.apply_id where eag.goods_id = g.goods_id and ea.`status` = 1 and unix_timestamp(now()) BETWEEN ea.apply_start_time and ea.apply_end_time limit 1) as apply_name,
         (SELECT eb.before_name FROM exam_before_goods ebg LEFT JOIN exam_before eb on ebg.before_id = eb.before_id where ebg.goods_id = g.goods_id and eb.`status` = 1 and unix_timestamp(now()) BETWEEN eb.before_start_time and eb.before_end_time) as before_name,
         (SELECT `status` from user_profile where user_id = o.user_id and goods_id = g.goods_id and current_status = 1 and type_status = 1 and order_goods_id = og.order_goods_id limit 1 ) as profile_status,
         (case WHEN(SELECT COUNT(1) from profile_tp where `status`=1 and FIND_IN_SET(g.goods_id,goods_ids) ) >0 then 1 ELSE 0 end) as profile_tp_status,
+        <if test="querySign == null or querySign == 0">
         (SELECT GROUP_CONCAT(subject_name)  from course_subject where FIND_IN_SET(id,g.subject_ids)) subject_names,
+        </if>
         (SELECT count(*) from user_study_record usr where usr.user_id = o.user_id and usr.order_goods_id = og.order_goods_id) as study_status
         <if test="userId != null and userId != ''">
         ,

+ 4 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -482,7 +482,10 @@
             and  cg.class_name like concat('%', #{className}, '%')
         </if>
         <if test="searchKey != null and searchKey != '' ">
-            and (u.realname like concat('%', #{searchKey}, '%')  or g.goods_name like concat('%', #{searchKey}, '%') or cg.class_name like concat('%', #{searchKey}, '%'))
+            and (u.realname like concat('%', #{searchKey}, '%')
+                or u.id_card like concat('%', #{searchKey,typeHandler=com.zhongzheng.common.type.EncryptHandler}, '%')
+                or g.goods_name like concat('%', #{searchKey}, '%')
+                or cg.class_name like concat('%', #{searchKey}, '%'))
         </if>
         <if test="idCard != null and idCard !='' ">
             AND u.id_card = #{idCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}

+ 45 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -1846,4 +1846,49 @@
         </if>
         AND up.user_id = #{userId}
     </select>
+
+    <select id="getGoodsSectionNum" parameterType="com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo" resultType="com.zhongzheng.modules.goods.vo.GoodsSectionNumVo">
+        SELECT
+            SUM(
+                    CASE
+                        WHEN cm.type = 1 THEN
+                            (SELECT
+                                 COUNT( DISTINCT ccs.section_id )
+                             FROM
+                                 course_module_chapter cmc
+                                     LEFT JOIN course_chapter_section ccs ON cmc.chapter_id = ccs.chapter_id
+                             WHERE
+                                 cmc.module_id = cm.menu_id
+                            <if test="tenantId != null and tenantId !=''">
+                                AND cmc.tenant_id =#{tenantId}
+                            </if>
+                                )
+                        WHEN cm.type = 2 THEN
+                            (SELECT
+                                 COUNT( DISTINCT ccs.section_id )
+                             FROM
+                                 course_chapter_section ccs
+                             WHERE
+                                 ccs.chapter_id = cm.menu_id
+                            <if test="tenantId != null and tenantId !=''">
+                                AND ccs.tenant_id =#{tenantId}
+                            </if>
+                             )
+                        WHEN cm.type = 3 THEN
+                            1
+                        ELSE 0
+                        END
+                ) AS section_num ,
+            (select COUNT(DISTINCT course_id,module_id,chapter_id,section_id)
+                                        FROM user_study_record c where 1=1
+                                        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 = gc.goods_id) as record_num
+        FROM
+            course_menu cm
+                LEFT JOIN goods_course gc ON cm.course_id = gc.course_id
+        WHERE
+            gc.goods_id = #{goodsId} AND cm.`status` = 1
+    </select>
 </mapper>