Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

zx 1 mese fa
parent
commit
50c00be0cb
16 ha cambiato i file con 124 aggiunte e 40 eliminazioni
  1. 22 0
      fs-admin/src/main/java/com/fs/course/controller/FsUserCourseTrainingCampController.java
  2. 1 1
      fs-service-system/src/main/java/com/fs/company/domain/CompanyUser.java
  3. 20 0
      fs-service-system/src/main/java/com/fs/course/dto/FsUserCourseTrainingCampUpdateDTO.java
  4. 2 0
      fs-service-system/src/main/java/com/fs/course/mapper/FsUserCoursePeriodDaysMapper.java
  5. 5 2
      fs-service-system/src/main/java/com/fs/course/param/newfs/UserCourseVideoPageParam.java
  6. 1 1
      fs-service-system/src/main/java/com/fs/course/service/IFsCourseQuestionBankService.java
  7. 7 2
      fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java
  8. 30 12
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseTrainingCampServiceImpl.java
  9. 1 0
      fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java
  10. 10 4
      fs-service-system/src/main/java/com/fs/course/vo/newfs/FsUserCourseListVO.java
  11. 15 11
      fs-service-system/src/main/resources/mapper/course/FsUserCourseMapper.xml
  12. 1 1
      fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml
  13. 6 3
      fs-service-system/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml
  14. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CourseController.java
  15. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CourseH5Controller.java
  16. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CourseWxH5Controller.java

+ 22 - 0
fs-admin/src/main/java/com/fs/course/controller/FsUserCourseTrainingCampController.java

@@ -4,7 +4,9 @@ import com.fs.common.annotation.Log;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.SortUtils;
+import com.fs.course.domain.FsUserCourseTrainingCamp;
 import com.fs.course.dto.FsUserCourseTrainingCampDTO;
+import com.fs.course.dto.FsUserCourseTrainingCampUpdateDTO;
 import com.fs.course.service.IFsUserCourseTrainingCampService;
 import com.fs.course.vo.FsUserCourseTrainingCampVO;
 import com.github.pagehelper.PageHelper;
@@ -18,6 +20,7 @@ import javax.validation.Valid;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/course/trainingCamp")
@@ -58,6 +61,25 @@ public class FsUserCourseTrainingCampController {
         return AjaxResult.success();
     }
 
+    /**
+     * 修改训练营
+     * @param params    参数
+     * @return  AjaxResult
+     */
+    @PreAuthorize("@ss.hasPermi('course:trainingCamp:edit')")
+    @Log(title = "训练营", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@Valid @RequestBody FsUserCourseTrainingCampUpdateDTO params) {
+        FsUserCourseTrainingCamp trainingCamp = fsUserCourseTrainingCampService.getById(params.getTrainingCampId());
+        if (Objects.isNull(trainingCamp)) {
+            return AjaxResult.error("训练营不存在");
+        }
+
+        trainingCamp.setTrainingCampName(params.getTrainingCampName());
+        fsUserCourseTrainingCampService.updateById(trainingCamp);
+        return AjaxResult.success();
+    }
+
     /**
      * 删除训练营
      * @param ids    参数

+ 1 - 1
fs-service-system/src/main/java/com/fs/company/domain/CompanyUser.java

@@ -130,7 +130,7 @@ public class CompanyUser extends BaseEntity
     /** 是否审核 */
     private Integer isAudit;
 
-    /** 会员是否黑名单,1-是;0-否(用于销售分享成为会员的操作) */
+    /** 会员是否默认黑名单,1-是;0-否(用于销售分享成为会员的操作) */
     private Integer fsUserIsDefaultBlack;
 
     public Integer getIsAudit() {

+ 20 - 0
fs-service-system/src/main/java/com/fs/course/dto/FsUserCourseTrainingCampUpdateDTO.java

@@ -0,0 +1,20 @@
+package com.fs.course.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class FsUserCourseTrainingCampUpdateDTO {
+    /**
+     * 主键ID
+     */
+    @NotNull(message = "ID不能为空")
+    private Long trainingCampId;
+    /**
+     * 训练营名称
+     */
+    @NotBlank(message = "训练营名称不能为空")
+    private String trainingCampName;
+}

+ 2 - 0
fs-service-system/src/main/java/com/fs/course/mapper/FsUserCoursePeriodDaysMapper.java

@@ -3,6 +3,8 @@ package com.fs.course.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.course.domain.FsUserCoursePeriodDays;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * 营期课程Mapper接口

+ 5 - 2
fs-service-system/src/main/java/com/fs/course/param/newfs/UserCourseVideoPageParam.java

@@ -20,8 +20,11 @@ public class UserCourseVideoPageParam implements Serializable {
     @ApiModelProperty(value = "模糊搜索,通过视频名称来匹配")
     private String keyword;
 
-    @ApiModelProperty(value = "课程id")
-    private Long courseId;
+//    @ApiModelProperty(value = "课程id")
+//    private Long courseId;
+
+    @ApiModelProperty(value = "营期id")
+    private Long periodId;
 
     @ApiModelProperty(value = "公司id")
     private Long companyId;

+ 1 - 1
fs-service-system/src/main/java/com/fs/course/service/IFsCourseQuestionBankService.java

@@ -65,7 +65,7 @@ public interface IFsCourseQuestionBankService
     /**
      * 企微客户答题
      */
-    R courseAnswer(FsCourseQuestionAnswerUParam param);
+    R courseAnswer(FsCourseQuestionAnswerUParam param, Boolean isH5User);
 
 
     /**

+ 7 - 2
fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseQuestionBankServiceImpl.java

@@ -125,7 +125,7 @@ public class FsCourseQuestionBankServiceImpl implements IFsCourseQuestionBankSer
 
     @Override
     @Transactional
-    public R courseAnswer(FsCourseQuestionAnswerUParam param) {
+    public R courseAnswer(FsCourseQuestionAnswerUParam param, Boolean isH5User) {
         FsUser user = fsUserMapper.selectFsUserByUserId(param.getUserId());
         if (StringUtils.isEmpty(user.getMpOpenId())){
             return R.error("未识别到领取信息");
@@ -152,7 +152,12 @@ public class FsCourseQuestionBankServiceImpl implements IFsCourseQuestionBankSer
             errorCount = courseAnswerLogsMapper.selectErrorCountByCourseVideo(param.getVideoId(), param.getUserId(),null);
 
         }else {
-            FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideo(param.getUserId(),param.getVideoId(),param.getQwUserId(),param.getQwExternalId());
+            FsCourseWatchLog log;
+            if(isH5User){
+               log = courseWatchLogMapper.getWatchLogByFsUser(param.getVideoId(), param.getUserId());
+            } else {
+                log = courseWatchLogMapper.getWatchCourseVideo(param.getUserId(), param.getVideoId(), param.getQwUserId(), param.getQwExternalId());
+            }
             if (log==null){
                 return R.error("无记录");
             }

+ 30 - 12
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseTrainingCampServiceImpl.java

@@ -1,13 +1,19 @@
 package com.fs.course.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fs.common.BeanCopyUtils;
 import com.fs.common.exception.ServiceException;
+import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.bean.BeanUtils;
 import com.fs.course.domain.FsUserCoursePeriod;
+import com.fs.course.domain.FsUserCoursePeriodDays;
 import com.fs.course.dto.FsUserCourseTrainingCampDTO;
+import com.fs.course.mapper.FsUserCoursePeriodDaysMapper;
 import com.fs.course.mapper.FsUserCoursePeriodMapper;
+import com.fs.course.service.IFsUserCoursePeriodDaysService;
 import com.fs.course.vo.FsUserCourseTrainingCampVO;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -16,9 +22,9 @@ import com.fs.course.domain.FsUserCourseTrainingCamp;
 import com.fs.course.service.IFsUserCourseTrainingCampService;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 会员训练营Service业务层处理
@@ -32,6 +38,7 @@ public class FsUserCourseTrainingCampServiceImpl extends ServiceImpl<FsUserCours
 {
 
     private final FsUserCoursePeriodMapper fsUserCoursePeriodMapper;
+    private final IFsUserCoursePeriodDaysService fsUserCoursePeriodDaysService;
 
     /**
      * 查询训练营列表
@@ -88,15 +95,26 @@ public class FsUserCourseTrainingCampServiceImpl extends ServiceImpl<FsUserCours
         trainingCamp.setCreateTime(LocalDateTime.now());
         baseMapper.insert(trainingCamp);
 
-        // 复制营期
-        List<FsUserCoursePeriod> fsUserCoursePeriods = fsUserCoursePeriodMapper.selectFsUserCoursePeriodListByTrainingCampId(id);
-        if (!fsUserCoursePeriods.isEmpty()) {
-            fsUserCoursePeriods.stream().map(p -> {
-                FsUserCoursePeriod copy = new FsUserCoursePeriod();
-                BeanUtils.copyProperties(p, copy, "periodId");
-                copy.setTrainingCampId(trainingCamp.getTrainingCampId());
-                return copy;
-            }).forEach(fsUserCoursePeriodMapper::insertFsUserCoursePeriod);
-        }
+        // 复制营期-课程
+        fsUserCoursePeriodMapper.selectFsUserCoursePeriodListByTrainingCampId(id).forEach(p -> {
+            // 复制营期
+            FsUserCoursePeriod copy = new FsUserCoursePeriod();
+            BeanUtils.copyProperties(p, copy, "periodId");
+            copy.setTrainingCampId(trainingCamp.getTrainingCampId());
+            fsUserCoursePeriodMapper.insertFsUserCoursePeriod(copy);
+
+            // 复制课程
+            Wrapper<FsUserCoursePeriodDays> queryWrapper = Wrappers.<FsUserCoursePeriodDays>lambdaQuery().eq(FsUserCoursePeriodDays::getPeriodId, p.getPeriodId());
+            List<FsUserCoursePeriodDays> collect = fsUserCoursePeriodDaysService.list(queryWrapper).stream().map(d -> {
+                FsUserCoursePeriodDays copyD = new FsUserCoursePeriodDays();
+                BeanUtils.copyProperties(d, copyD, "id");
+                copyD.setPeriodId(copy.getPeriodId());
+                copyD.setCreateTime(new Date());
+                return copyD;
+            }).collect(Collectors.toList());
+            if (!collect.isEmpty()) {
+                fsUserCoursePeriodDaysService.saveBatch(collect);
+            }
+        });
     }
 }

+ 1 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -526,6 +526,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         try {
             FsCourseTrafficLog trafficLog = new FsCourseTrafficLog();
             trafficLog.setQwExternalContactId(param.getQwExternalId());
+            trafficLog.setUserId(param.getUserId());
             trafficLog.setCreateTime(new Date());
 //            trafficLog.setTime(new Date());
             BeanUtils.copyProperties(param, trafficLog);

+ 10 - 4
fs-service-system/src/main/java/com/fs/course/vo/newfs/FsUserCourseListVO.java

@@ -9,10 +9,16 @@ import lombok.Data;
 @Data
 public class FsUserCourseListVO {
 
-    @ApiModelProperty(value = "课程id")
-    private Long courseId;
+//    @ApiModelProperty(value = "课程id")
+//    private Long courseId;
+//
+//    @ApiModelProperty(value = "课程名称")
+//    private String courseName;
 
-    @ApiModelProperty(value = "课程名称")
-    private String courseName;
+    @ApiModelProperty(value = "营期id")
+    private Long periodId;
+
+    @ApiModelProperty(value = "营期名称")
+    private String periodName;
 
 }

+ 15 - 11
fs-service-system/src/main/resources/mapper/course/FsUserCourseMapper.xml

@@ -231,23 +231,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <select id="getFsUserCourseList" resultType="FsUserCourseListVO">
-        SELECT
-            c.*,
-            cc.cate_name,
-            ucc.cate_name AS sub_cate_name
+        SELECT DISTINCT
+        fcp.period_id,
+        fcp.period_name,
+        c.*,
+        cc.cate_name,
+        ucc.cate_name AS sub_cate_name
         FROM
-            fs_user_course c
-                LEFT JOIN fs_user_course_category cc ON c.cate_id = cc.cate_id
-                LEFT JOIN fs_user_course_category ucc ON ucc.cate_id = c.sub_cate_id
+        fs_user_course_period fcp
+        LEFT JOIN fs_user_course_period_days fcpd ON fcpd.period_id = fcp.period_id
+        LEFT JOIN fs_user_course c ON c.course_id = fcpd.course_id
+        LEFT JOIN fs_user_course_category cc ON c.cate_id = cc.cate_id
+        LEFT JOIN fs_user_course_category ucc ON ucc.cate_id = c.sub_cate_id
         WHERE
-            c.is_del = 0
-            AND FIND_IN_SET(#{companyId}, c.company_ids)
+        c.is_del = 0
+        AND FIND_IN_SET(#{companyId}, fcp.company_id)
         <if test="keyword != null and keyword !='' ">
-            AND c.course_name LIKE concat('%',#{keyword},'%'
+            AND fcp.period_name LIKE concat('%',#{keyword},'%'
             )
         </if>
         ORDER BY
-            c.course_id
+        fcp.period_id
     </select>
 
     <!-- 查询用户参与记录 -->

+ 1 - 1
fs-service-system/src/main/resources/mapper/course/FsUserCoursePeriodMapper.xml

@@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where period_id = #{periodId}
     </select>
 
-    <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod">
+    <insert id="insertFsUserCoursePeriod" parameterType="FsUserCoursePeriod" useGeneratedKeys="true" keyProperty="periodId">
         insert into fs_user_course_period
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="periodId != null">period_id,</if>

+ 6 - 3
fs-service-system/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -166,7 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsUserCourseVideoPageList" resultType="FsUserCourseVideoPageListVO">
         SELECT
-            video.video_id,
+        DISTINCT video.video_id,
             video.title,
             video.description,
             video.video_url,
@@ -178,10 +178,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             video.course_sort,
         course.course_name
         FROM `fs_user_course_video` video
+        left join fs_user_course_period_days fcpd on fcpd.video_id = video.video_id
+        left join fs_user_course_period fcp on fcp.period_id = fcpd.period_id
         LEFT JOIN fs_user_course course ON video.course_id = course.course_id
         where course.is_del = 0
-        <if test="courseId != null and courseId !='' ">
-            AND video.course_id = #{courseId}
+        AND FIND_IN_SET(#{companyId}, fcp.company_id)
+        <if test="periodId != null and periodId !='' ">
+            AND fcpd.period_id = #{periodId}
         </if>
         <if test="keyword != null and keyword !='' ">
             AND video.title LIKE concat('%',#{keyword},'%')

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseController.java

@@ -411,7 +411,7 @@ public class CourseController extends  AppBaseController{
             logger.info("zyp \n【未识别到时长】:{}",param.getUserId());
         }
         param.setUserId(Long.parseLong(getUserId()));
-        return questionBankService.courseAnswer(param);
+        return questionBankService.courseAnswer(param, false);
     }
 
 

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseH5Controller.java

@@ -146,7 +146,7 @@ public class CourseH5Controller extends  AppBaseController{
         if (param.getDuration()==null){
             logger.info("zyp \n【未识别到时长】:{}",param.getUserId());
         }
-        return questionBankService.courseAnswer(param);
+        return questionBankService.courseAnswer(param, false);
     }
 
     @ApiOperation("发放奖励")

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseWxH5Controller.java

@@ -111,7 +111,7 @@ public class CourseWxH5Controller extends AppBaseController {
         if (param.getDuration()==null){
             logger.info("zyp \n【未识别到时长】:{}",param.getUserId());
         }
-        return questionBankService.courseAnswer(param);
+        return questionBankService.courseAnswer(param, true);
     }
 
     @ApiOperation("发放奖励")