Pārlūkot izejas kodu

feat(course): 新增课程营期和视频三级联动查询功能- 新增根据课程ID和营期名称模糊查询营期列表接口
- 新增根据营期ID查询视频列表接口- 修改视频列表查询逻辑,支持按营期筛选- 完善相关mapper和服务层实现- 添加接口文档注释和参数说明

xw 2 nedēļas atpakaļ
vecāks
revīzija
c34e58088b

+ 18 - 2
fs-company/src/main/java/com/fs/company/controller/course/FsCourseRedPacketLogController.java

@@ -221,19 +221,35 @@ public class FsCourseRedPacketLogController extends BaseController
         return fsCourseRedPacketLogService.retryCourseRedPacketLog(logIds);
     }
 
+    /**
+     * 查询课程列表(三级联动第一级)
+     */
     @GetMapping("/courseList")
     public R courseList()
     {
-
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         List<OptionsVO> optionsVOS = fsUserCourseMapper.selectFsUserCourseByCompany(loginUser.getCompany().getCompanyId());
         return R.ok().put("list", optionsVOS);
     }
 
+    /**
+     * 根据课程ID和营期名称模糊查询营期列表(三级联动第二级)
+     */
+    @GetMapping("/period")
+    public R getPeriodListLikeName(String periodName, Long courseId)
+    {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        List<OptionsVO> list = fsCourseRedPacketLogService.getPeriodListLikeName(periodName, courseId, loginUser.getCompany().getCompanyId());
+        return R.ok().put("data", list);
+    }
+
+    /**
+     * 根据营期ID查询视频列表(三级联动第三级)
+     */
     @GetMapping(value = "/videoList/{id}")
     public R videoList(@PathVariable("id") Long id)
     {
-        List<OptionsVO> optionsVOS = fsUserCourseVideoMapper.selectFsUserCourseVodeAllList(id);
+        List<OptionsVO> optionsVOS = fsUserCourseVideoMapper.selectVideoListByPeriodId(id);
         return R.ok().put("list", optionsVOS);
     }
 }

+ 27 - 0
fs-service/src/main/java/com/fs/course/mapper/FsCourseRedPacketLogMapper.java

@@ -13,6 +13,7 @@ import com.fs.course.param.FsCourseRedPacketLogParam;
 import com.fs.course.param.FsUserCourseOrderParam;
 import com.fs.course.vo.FsCourseRedPacketLogListPVO;
 import com.fs.course.vo.FsUserCourseOrderListPVO;
+import com.fs.his.vo.OptionsVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -178,4 +179,30 @@ public interface FsCourseRedPacketLogMapper
     List<CourseRedPacketStatisticsDTO> statistics(CourseRedPacketStatisticsParam param);
 
     List<FsCourseRedPacketLog> selectFsCourseRedPacketLogListBySending(@Param("maps") Map<String, Object> map);
+
+    /**
+     * 根据课程ID和营期名称模糊查询营期列表
+     *
+     * @param periodName 营期名称
+     * @param courseId 课程ID
+     * @param companyId 企业ID
+     * @return 营期列表
+     */
+    @Select({"<script> ",
+            "SELECT DISTINCT p.period_id AS dictValue, p.period_name AS dictLabel ",
+            "FROM fs_user_course_period p ",
+            "INNER JOIN fs_user_course_period_days pd ON pd.period_id = p.period_id AND pd.del_flag = 0 ",
+            "WHERE p.del_flag = 0 ",
+            "<if test='courseId != null'> ",
+            "AND pd.course_id = #{courseId} ",
+            "</if> ",
+            "<if test='companyId != null'> ",
+            "AND FIND_IN_SET(#{companyId}, p.company_id) > 0 ",
+            "</if> ",
+            "<if test='periodName != null and periodName != \"\"'> ",
+            "AND p.period_name LIKE CONCAT('%', #{periodName}, '%') ",
+            "</if> ",
+            "ORDER BY p.period_id DESC ",
+            "</script>"})
+    List<OptionsVO> getPeriodListLikeName(@Param("periodName") String periodName, @Param("courseId") Long courseId, @Param("companyId") Long companyId);
 }

+ 12 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseVideoMapper.java

@@ -159,6 +159,18 @@ public interface FsUserCourseVideoMapper
     @Select("select video_id dict_value, title dict_label  from fs_user_course_video where course_id=#{id} and is_del = 0 order by course_sort")
     List<OptionsVO> selectFsUserCourseVodeAllList(Long id);
 
+    /**
+     * 根据营期ID查询视频列表(三级联动第三级)
+     * @param periodId 营期ID
+     * @return 视频选项列表
+     */
+    @Select("SELECT DISTINCT v.video_id AS dictValue, v.title AS dictLabel " +
+            "FROM fs_user_course_video v " +
+            "INNER JOIN fs_user_course_period_days pd ON pd.video_id = v.video_id " +
+            "WHERE pd.period_id = #{periodId} AND pd.del_flag = 0 AND v.is_del = 0 " +
+            "ORDER BY v.course_sort")
+    List<OptionsVO> selectVideoListByPeriodId(@Param("periodId") Long periodId);
+
     @Select({"<script> " +
             "select v.*,p.red_packet_money company_red_packet_money from fs_user_course_video v " +
             "LEFT JOIN fs_user_course_video_red_package p on p.video_id= v.video_id and p.company_id =#{maps.companyId} and p.data_type = 1 " +

+ 11 - 0
fs-service/src/main/java/com/fs/course/service/IFsCourseRedPacketLogService.java

@@ -7,6 +7,7 @@ import com.fs.common.core.domain.R;
 import com.fs.course.domain.FsCourseRedPacketLog;
 import com.fs.course.param.FsCourseRedPacketLogParam;
 import com.fs.course.vo.FsCourseRedPacketLogListPVO;
+import com.fs.his.vo.OptionsVO;
 
 /**
  * 短链课程看课记录Service接口
@@ -87,4 +88,14 @@ public interface IFsCourseRedPacketLogService
     void sendRedPacketBf();
 
     void queryRedPacketResult(String startTime, String endTime);
+
+    /**
+     * 根据课程ID和营期名称模糊查询营期列表
+     *
+     * @param periodName 营期名称
+     * @param courseId 课程ID
+     * @param companyId 企业ID
+     * @return 营期列表
+     */
+    List<OptionsVO> getPeriodListLikeName(String periodName, Long courseId, Long companyId);
 }

+ 18 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseRedPacketLogServiceImpl.java

@@ -20,13 +20,16 @@ import com.fs.company.mapper.CompanyMoneyLogsMapper;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.config.RedPacketConfig;
 import com.fs.course.domain.FsCourseWatchLog;
+import com.fs.course.mapper.FsCourseRedPacketLogMapper;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
+import com.fs.course.mapper.FsUserCoursePeriodMapper;
 import com.fs.course.param.FsCourseRedPacketLogParam;
 import com.fs.course.vo.FsCourseRedPacketLogListPVO;
 import com.fs.his.domain.FsUser;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.param.WxSendRedPacketParam;
 import com.fs.his.service.IFsStorePaymentService;
+import com.fs.his.vo.OptionsVO;
 import com.fs.system.service.ISysConfigService;
 import com.github.binarywang.wxpay.bean.transfer.TransferBillsGetResult;
 import com.github.binarywang.wxpay.bean.transfer.TransferBillsResult;
@@ -62,6 +65,8 @@ public class FsCourseRedPacketLogServiceImpl implements IFsCourseRedPacketLogSer
 
     @Autowired
     private ISysConfigService configService;
+    @Autowired
+    private FsUserCoursePeriodMapper fsUserCoursePeriodMapper;
     /**
      * 查询短链课程看课记录
      *
@@ -462,4 +467,17 @@ public class FsCourseRedPacketLogServiceImpl implements IFsCourseRedPacketLogSer
                 company.getCompanyId(), moneyLog.getMoney());
     }
 
+    /**
+     * 根据课程ID和营期名称模糊查询营期列表
+     *
+     * @param periodName 营期名称
+     * @param courseId 课程ID
+     * @param companyId 企业ID
+     * @return 营期列表
+     */
+    @Override
+    public List<OptionsVO> getPeriodListLikeName(String periodName, Long courseId, Long companyId) {
+        return fsCourseRedPacketLogMapper.getPeriodListLikeName(periodName, courseId, companyId);
+    }
+
 }