Browse Source

submit:去除切换课程改为商品维度

yangdamao 2 năm trước cách đây
mục cha
commit
1d8df5ca25

+ 12 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -97,6 +97,18 @@ public class CourseController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 获取商品重修目录结构
+     */
+    @ApiOperation("获取商品重修目录结构")
+    @GetMapping("/goods/rebuild/menu")
+    public AjaxResult<List<CourseUserMenuVo>> getGoodsRebuildMenuList(CourseMenuQueryBo bo) {
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        List<CourseUserMenuVo> list = iCourseMenuService.getGoodsRebuildMenuList(bo);
+        return AjaxResult.success(list);
+    }
+
 
     @ApiOperation("查询模块与章关系列表")
     @GetMapping("/chapterList")

+ 10 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/goods/GoodsController.java

@@ -29,10 +29,7 @@ import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
-import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
-import com.zhongzheng.modules.goods.vo.GoodsExamTimeVo;
-import com.zhongzheng.modules.goods.vo.GoodsSpecTemplateVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.bo.UserPeriodQueryBo;
 import com.zhongzheng.modules.grade.service.IUserPeriodService;
 import com.zhongzheng.modules.order.domain.OrderGoods;
@@ -311,4 +308,13 @@ public class GoodsController extends BaseController {
         return toAjax(iOrderGoodsService.checkGoodsStatus(bo) ? 1 : 0);
     }
 
+    /**
+     * 获取商品所有节列表
+     */
+    @ApiOperation("获取商品所有节列表")
+    @GetMapping("/section/list/{goodsId}")
+    public AjaxResult<List<GoodsSectionListVo>>  getGoodsSectionList(@PathVariable("goodsId") Long goodsId) {
+        return AjaxResult.success(iOrderGoodsService.getGoodsSectionList(goodsId));
+    }
+
 }

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

@@ -76,4 +76,7 @@ public class CourseMenuQueryBo extends BaseEntity {
 
 	@ApiModelProperty("订单商品ID")
 	private Long orderGoodsId;
+
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMenuMapper.java

@@ -31,4 +31,6 @@ public interface CourseMenuMapper extends BaseMapper<CourseMenu> {
     Long getStudyDuration(@Param("sectionId") Long id,@Param("gradeId") Long gradeId,@Param("userId")Long userId,@Param("courseId")Long courseId);
 
     Integer auditCheck(@Param("sectionId") Long id,@Param("gradeId") Long gradeId,@Param("userId")Long userId,@Param("courseId")Long courseId);
+
+    List<CourseUserMenuVo> getGoodsMenuList(CourseMenuQueryBo bo);
 }

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseMenuService.java

@@ -55,4 +55,13 @@ public interface ICourseMenuService extends IService<CourseMenu> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 	List<CourseUserMenuVo> menuList(CourseMenuQueryBo bo);
+
+	/**
+	 * 查询课程目录结构列表
+	 * @author change
+	 * @date 2022/12/20 13:57
+	 * @param bo
+	 * @return java.util.List<com.zhongzheng.modules.course.vo.CourseUserMenuVo>
+	 */
+	List<CourseUserMenuVo> getGoodsRebuildMenuList(CourseMenuQueryBo bo);
 }

+ 47 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseMenuServiceImpl.java

@@ -265,4 +265,51 @@ public class CourseMenuServiceImpl extends ServiceImpl<CourseMenuMapper, CourseM
         }
         return courseMenuVos;
     }
+
+    @Override
+    public List<CourseUserMenuVo> getGoodsRebuildMenuList(CourseMenuQueryBo bo) {
+        List<CourseUserMenuVo> courseMenuVos = baseMapper.getGoodsMenuList(bo);
+        if (bo.getUserId() != null) {
+            for (CourseUserMenuVo courseMenuVo : courseMenuVos) {
+                //为节的时候查询重修情况,和是否已学习
+                if (courseMenuVo.getType().equals(3)) {
+                    Integer rebuild = baseMapper.rebuildCheck(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    if (rebuild > 0) {
+                        courseMenuVo.setRebuild(1);
+                    }
+                    Integer audit = baseMapper.auditCheck(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    if (audit > 0) {
+                        courseMenuVo.setAudit(1L);
+                    }
+                    Integer learning = baseMapper.learningCheck(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    if (learning > 0) {
+                        courseMenuVo.setLearning(1L);
+                    }
+                    Long studyDuration = baseMapper.getStudyDuration(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    courseMenuVo.setStudyDuration(studyDuration);
+                }
+                //为章的时候查询重修情况
+                if (courseMenuVo.getType().equals(2)){
+                    Integer rebuild = baseMapper.rebuildChapterCheck(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    if (rebuild > 0) {
+                        courseMenuVo.setRebuild(1);
+                    }
+                }
+                //为模块的时候查询重修情况
+                if (courseMenuVo.getType().equals(1)){
+                    Integer rebuild = baseMapper.rebuildModuleCheck(courseMenuVo.getMenuId(), courseMenuVo.getGradeId(), bo.getUserId(),courseMenuVo.getCourseId());
+                    if (rebuild > 0) {
+                        courseMenuVo.setRebuild(1);
+                    }
+                }
+            }
+        }
+        if (bo.getRebuild() != null && bo.getRebuild() == 1) {
+            List<CourseUserMenuVo> courseMenuVoss = courseMenuVos.stream().filter(s ->
+                    s.getRebuild() != null && s.getRebuild().equals(1)
+            ).collect(Collectors.toList());
+            return courseMenuVoss;
+        }
+        return courseMenuVos;
+    }
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseUserMenuVo.java

@@ -93,4 +93,7 @@ public class CourseUserMenuVo {
 	@ApiModelProperty("观察时长(秒)")
 	private Long studyDuration;
 
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+
 }

+ 38 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsSectionListVo.java

@@ -0,0 +1,38 @@
+package com.zhongzheng.modules.goods.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年12月20日 10:14
+ */
+@Data
+public class GoodsSectionListVo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("课程id")
+    private Long courseId;
+
+    /** 节ID */
+    @ApiModelProperty("节ID")
+    private Long sectionId;
+
+    @ApiModelProperty("节ID")
+    private String sectionName;
+
+    /** 章ID */
+    @ApiModelProperty("章ID")
+    private Long chapterId;
+
+    /** 模塊ID */
+    @ApiModelProperty("模塊ID")
+    private Long moduleId;
+
+
+}

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

@@ -3,11 +3,13 @@ package com.zhongzheng.modules.order.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.vo.CourseLiveVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.order.bo.OrderGoodsQueryBo;
 import com.zhongzheng.modules.order.bo.OrderQueryBo;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
 
 import java.util.List;
 
@@ -55,4 +57,6 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
     List<OrderGoodsVo> getBuyNotStudyList(OrderQueryBo bo);
 
     List<OrderGoodsVo> getLongNotStudyList(OrderQueryBo bo);
+
+    List<GoodsSectionListVo> getGoodsSectionList(@Param("goodsId") Long goodsId);
 }

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

@@ -6,6 +6,7 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.course.vo.CourseLiveVo;
 import com.zhongzheng.modules.goods.bo.CheckGoodsStatusBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
@@ -107,4 +108,6 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     List<OrderGoodsVo> listUserVideoLive(GoodsQueryBo bo);
 
     Boolean checkGoodsStatus(CheckGoodsStatusBo bo);
+
+    List<GoodsSectionListVo> getGoodsSectionList(Long goodsId);
 }

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

@@ -35,6 +35,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.domain.ClassGradeGoods;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
@@ -640,6 +641,11 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return true;
     }
 
+    @Override
+    public List<GoodsSectionListVo> getGoodsSectionList(Long goodsId) {
+        return baseMapper.getGoodsSectionList(goodsId);
+    }
+
     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"));

+ 59 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMenuMapper.xml

@@ -55,6 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="recordingUrl" column="recording_url"/>
         <result property="liveUrl" column="live_url"/>
         <result property="teacherName" column="teacher_name"/>
+        <result property="goodsId" column="goods_id"/>
     </resultMap>
 
     <select id="getList" parameterType="com.zhongzheng.modules.course.bo.CourseMenuQueryBo"  resultMap="CourseMenuResultVo">
@@ -193,6 +194,64 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ORDER BY m.sort
     </select>
 
+    <select id="getGoodsMenuList" parameterType="com.zhongzheng.modules.course.bo.CourseMenuQueryBo"  resultMap="CourseUserMenuVo">
+        SELECT
+            gc.goods_id,
+            m.*,
+            #{gradeId} as grade_id,
+            CASE
+
+                WHEN m.type = 1 THEN
+                    cm.module_name
+                WHEN m.type = 2 THEN
+                    cc.`name`
+                WHEN m.type = 3 THEN
+                    cs.`name`
+                END menu_name,
+            CASE
+
+                WHEN m.type = 1 THEN
+                    0
+                WHEN m.type = 2 THEN
+                    0
+                WHEN m.type = 3 THEN
+                    cs.duration_time
+                END duration_time,
+            cs.section_type,
+            cs.live_start_time,
+            cs.live_end_time,
+            cs.live_url,
+            CASE
+                WHEN m.type = 1 THEN
+                    ''
+                WHEN m.type = 2 THEN
+                    ''
+                WHEN m.type = 3 THEN
+                    cs.recording_url
+                END recording_url,
+            CASE
+                WHEN m.type = 1 THEN
+                    ''
+                WHEN m.type = 2 THEN
+                    ''
+                WHEN m.type = 3 THEN
+                        (SELECT teacher_name from teacher where teacher_id = cs.teacher_id)
+                END teacher_name
+
+        FROM
+            goods_course gc
+                LEFT JOIN  course_menu m ON gc.course_id = m.course_id
+                LEFT JOIN course_module cm ON m.menu_id = cm.module_id
+                AND m.type = 1 and cm.status=1
+                LEFT JOIN course_chapter cc ON m.menu_id = cc.chapter_id
+                AND m.type = 2 and cc.status=1
+                LEFT JOIN course_section cs ON m.menu_id = cs.section_id
+                AND m.type = 3 and cs.status=1
+        WHERE
+            gc.goods_id = #{goodsId}
+        ORDER BY m.sort
+    </select>
+
     <select id="rebuildCheck" parameterType="map"  resultType="Integer">
         SELECT
             COUNT(up.id)

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

@@ -681,4 +681,80 @@
         AND #{endTime} >= r.last_time
         GROUP BY  o.user_id
     </select>
+    <select id="getGoodsSectionList" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.goods.vo.GoodsSectionListVo">
+    SELECT
+        *
+    FROM
+        (
+            SELECT
+                gc.goods_id,
+                gc.sort AS gcSort,
+                cm.sort AS cmSort,
+                cmd.sort AS cmdSort,
+                ccs.sort AS ccsSort,
+                cs.sort AS csSort,
+                cm.course_id,
+                cmd.module_id,
+                ccs.chapter_id,
+                cs.section_id,
+                cs.`name` as sectionName
+            FROM
+                goods_course gc
+                    LEFT JOIN course_menu cm ON gc.course_id = cm.course_id
+                    LEFT JOIN course_module_chapter cmd ON cm.menu_id = cmd.module_id
+                    LEFT JOIN course_chapter_section ccs ON cmd.chapter_id = ccs.chapter_id
+                    LEFT JOIN course_section cs ON ccs.section_id = cs.section_id
+            WHERE
+                gc.goods_id = #{goodsId}
+              AND cm.type = 1
+              AND cm.`status` = 1 UNION ALL
+            SELECT
+                gc.goods_id,
+                gc.sort AS gcSort,
+                cm.sort AS cmSort,
+                NULL AS cmdSort,
+                ccs.sort AS ccsSort,
+                cs.sort AS csSort,
+                cm.course_id,
+                0 AS module_id,
+                ccs.chapter_id,
+                cs.section_id,
+                cs.`name` as sectionName
+            FROM
+                goods_course gc
+                    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
+                gc.goods_id = #{goodsId}
+              AND cm.type = 2
+              AND cm.`status` = 1 UNION ALL
+            SELECT
+                gc.goods_id,
+                gc.sort AS gcSort,
+                cm.sort AS cmSort,
+                NULL AS cmdSort,
+                NULL AS ccsSort,
+                cs.sort AS csSort,
+                cm.course_id,
+                0 AS module_id,
+                0 AS chapter_id,
+                cs.section_id,
+                cs.`name` as sectionName
+            FROM
+                goods_course gc
+                    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
+                gc.goods_id = #{goodsId}
+              AND cm.type = 3
+              AND cm.`status` = 1
+        ) a
+    ORDER BY
+        a.gcSort,
+        cmSort,
+        cmdSort,
+        ccsSort,
+        csSort
+    </select>
 </mapper>

+ 24 - 24
zhongzheng-system/src/main/resources/mapper/modules/user/UserNoteMapper.xml

@@ -47,18 +47,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="goodsId != null and goodsId !='' ">
             AND un.goods_id=#{goodsId}
         </if>
-        <if test="moduleId != null and moduleId !='' ">
-            AND un.module_id=#{moduleId}
-        </if>
-        <if test="courseId != null and courseId !='' ">
-            AND un.course_id =#{courseId}
-        </if>
-        <if test="sectionId != null and sectionId !='' ">
-            AND un.section_id =#{sectionId}
-        </if>
-        <if test="chapterId != null and chapterId !='' ">
-            AND un.chapter_id =#{chapterId}
-        </if>
+<!--        <if test="moduleId != null and moduleId !='' ">-->
+<!--            AND un.module_id=#{moduleId}-->
+<!--        </if>-->
+<!--        <if test="courseId != null and courseId !='' ">-->
+<!--            AND un.course_id =#{courseId}-->
+<!--        </if>-->
+<!--        <if test="sectionId != null and sectionId !='' ">-->
+<!--            AND un.section_id =#{sectionId}-->
+<!--        </if>-->
+<!--        <if test="chapterId != null and chapterId !='' ">-->
+<!--            AND un.chapter_id =#{chapterId}-->
+<!--        </if>-->
         <if test="gradeId != null and gradeId !='' ">
             AND un.grade_id =#{gradeId}
         </if>
@@ -80,18 +80,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="goodsId != null and goodsId !='' ">
             AND un.goods_id=#{goodsId}
         </if>
-        <if test="moduleId != null and moduleId !='' ">
-            AND un.module_id=#{moduleId}
-        </if>
-        <if test="courseId != null and courseId !='' ">
-            AND un.course_id =#{courseId}
-        </if>
-        <if test="sectionId != null and sectionId !='' ">
-            AND un.section_id =#{sectionId}
-        </if>
-        <if test="chapterId != null and chapterId !='' ">
-            AND un.chapter_id =#{chapterId}
-        </if>
+<!--        <if test="moduleId != null and moduleId !='' ">-->
+<!--            AND un.module_id=#{moduleId}-->
+<!--        </if>-->
+<!--        <if test="courseId != null and courseId !='' ">-->
+<!--            AND un.course_id =#{courseId}-->
+<!--        </if>-->
+<!--        <if test="sectionId != null and sectionId !='' ">-->
+<!--            AND un.section_id =#{sectionId}-->
+<!--        </if>-->
+<!--        <if test="chapterId != null and chapterId !='' ">-->
+<!--            AND un.chapter_id =#{chapterId}-->
+<!--        </if>-->
         <if test="gradeId != null and gradeId !='' ">
             AND un.grade_id =#{gradeId}
         </if>