yfh 1 неделя назад
Родитель
Сommit
05a5b87277

+ 18 - 0
fs-qwhook/src/main/java/com/fs/app/controller/ApisFsUserCourseVideoController.java

@@ -1,9 +1,11 @@
 package com.fs.app.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.enums.BusinessType;
 import com.fs.course.domain.FsUserCourse;
 import com.fs.course.param.FsCourseLinkCreateParam;
 import com.fs.course.param.FsCourseLinkMiniParam;
@@ -175,5 +177,21 @@ public class ApisFsUserCourseVideoController extends BaseController {
 
         return fsUserCourseVideoService.createRoomMiniLink(param);
     }
+    /**
+     * 创建 注册链接
+     */
+
+    @RepeatSubmit
+    @PostMapping("/createZcMiniLink")
+    @Log(title = "createZcMiniLink", businessType = BusinessType.INSERT)
+    public R createZcMiniLink(@RequestBody  FsCourseLinkMiniParam param) {
+        if (StringUtil.strIsNullOrEmpty(param.getCorpId())){
+            return R.error("企业id不能为空");
+        }
 
+        if (StringUtil.strIsNullOrEmpty(param.getQwUserId())){
+            return R.error("用户id不能为空");
+        }
+        return fsUserCourseVideoService.createZcMiniLink(param);
+    }
 }

+ 18 - 0
fs-qwhook/src/main/java/com/fs/app/controller/FsUserCourseVideoController.java

@@ -1,9 +1,11 @@
 package com.fs.app.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
+import com.fs.common.enums.BusinessType;
 import com.fs.course.domain.FsUserCourse;
 import com.fs.course.param.FsCourseLinkCreateParam;
 import com.fs.course.param.FsCourseLinkMiniParam;
@@ -181,5 +183,21 @@ public class FsUserCourseVideoController {
 
         return fsUserCourseVideoService.createRoomMiniLink(param);
     }
+    /**
+     * 创建 注册链接
+     */
 
+    @RepeatSubmit
+    @PostMapping("/createZcMiniLink")
+    @Log(title = "createZcMiniLink", businessType = BusinessType.INSERT)
+    public R createZcMiniLink(@RequestBody  FsCourseLinkMiniParam param) {
+        if (StringUtil.strIsNullOrEmpty(param.getCorpId())){
+            return R.error("企业id不能为空");
+        }
+
+        if (StringUtil.strIsNullOrEmpty(param.getQwUserId())){
+            return R.error("用户id不能为空");
+        }
+        return fsUserCourseVideoService.createZcMiniLink(param);
+    }
 }

+ 11 - 4
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseVideoMapper.java

@@ -3,10 +3,7 @@ package com.fs.course.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.course.domain.FsVideoResource;
-import com.fs.course.param.CourseVideoUpdates;
-import com.fs.course.param.FsCourseListBySidebarParam;
-import com.fs.course.param.FsUserCourseVideoListUParam;
-import com.fs.course.param.FsUserCourseVideoParam;
+import com.fs.course.param.*;
 import com.fs.course.param.newfs.UserCourseVideoPageParam;
 import com.fs.course.vo.*;
 import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
@@ -282,4 +279,14 @@ public interface FsUserCourseVideoMapper extends BaseMapper<FsUserCourseVideo> {
 
     @Select("select * from fs_video_resource where hsy_vid is not null")
     List<FsVideoResource> selectVideoByVid();
+
+    /**
+     * 下架
+     */
+    int batchDown(String[] videoIds);
+
+    /**
+     * 批量修改视频封面
+     */
+    int batchEditCover(BatchEditCoverParam param);
 }

+ 21 - 0
fs-service/src/main/java/com/fs/course/param/BatchEditCoverParam.java

@@ -0,0 +1,21 @@
+package com.fs.course.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Data
+public class BatchEditCoverParam {
+    /**
+     * 封面图
+     */
+    @NotBlank(message = "封面图不能为空")
+    private String thumbnail;
+    /**
+     * 视频小节
+     */
+    @NotEmpty(message = "小节ID不能为空")
+    private List<Long> videoIds;
+}

+ 4 - 0
fs-service/src/main/java/com/fs/course/param/FsCourseLinkMiniParam.java

@@ -25,5 +25,9 @@ public class FsCourseLinkMiniParam {
     * 客户的小程序id
     */
     private Long fsUserId;
+    /**
+     * 群id
+     */
+    private String chatId;
 
 }

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

@@ -245,4 +245,16 @@ public interface IFsUserCourseVideoService extends IService<FsUserCourseVideo> {
     R createRoomMiniLinkByCourse(FsCourseLinkRoomNewParam param);
 
     void updateMediaPublishStatus(String vid);
+
+    /**
+     * 视频下架
+     */
+    int batchDown(String[] videoIds);
+
+    /**
+     * 批量修改视频封面
+     */
+    int batchEditCover(BatchEditCoverParam param);
+
+    R createZcMiniLink(FsCourseLinkMiniParam param);
 }

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

@@ -126,7 +126,7 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
     private String signProjectName;
     @Value("${isNewWxMerchant}")
     private Boolean isNewWxMerchant;
-
+    private static final String registeredRealLink = "/pages_course/register.html?link=";
     @Autowired
     private OpenIMService openIMService;
     @Autowired
@@ -4452,5 +4452,84 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
             }
         }
     }
+
+    /**
+     * 视频下架
+     */
+    @Override
+    public int batchDown(String[] videoIds) {
+        return baseMapper.batchDown(videoIds);
+    }
+
+    /**
+     * 批量修改视频封面
+     */
+    @Override
+    public int batchEditCover(BatchEditCoverParam param) {
+        return baseMapper.batchEditCover(param);
+    }
+
+
+    @Override
+    public R createZcMiniLink(FsCourseLinkMiniParam param) {
+
+        QwUser qwUser = qwExternalContactService.getQwUserByRedis(param.getCorpId().trim(), param.getQwUserId().trim());
+
+        if (qwUser==null||qwUser.getCompanyId()==null||qwUser.getCompanyUserId()==null){
+            return R.error("员工未绑定 客服公司 或 客服 请先绑定");
+        }
+
+        QwCompany qwCompany = iQwCompanyService.getQwCompanyByRedis(param.getCorpId());
+
+        if (qwCompany == null ) {
+            return  R.error().put("msg","企业不存在,请联系管理员");
+        }
+        FsCourseLink link = createFsCourseLink(param.getCorpId(), new Date(), qwUser.getId(),
+                String.valueOf(qwUser.getCompanyUserId()), String.valueOf(qwUser.getCompanyId()), param.getExternalUserId(), 3, param.getChatId());
+        FsCourseRealLink courseMap = new FsCourseRealLink();
+        BeanUtils.copyProperties(link, courseMap);
+
+        String realLinkFull = registeredRealLink + JSON.toJSONString(courseMap);
+        link.setRealLink(realLinkFull);
+
+        link.setUpdateTime(new Date());
+        //存短链-
+        fsCourseLinkMapper.insertFsCourseLink(link);
+
+        //生成注册链接
+//        String linkByMiniApp = createLinkByMiniApp(new Date(), param.getCourseId(), param.getVideoId(), qwUser, param.getExternalUserId(),2,null,1);
+        JSONObject news = new JSONObject(true);
+        news.put("miniprogramAppid", qwCompany.getMiniAppId());
+        news.put("miniprogramTitle", "点击注册");
+        news.put("miniprogramPage", link.getRealLink());
+        news.put("miniprogramPicUrl", "https://cos.his.cdwjyyh.com/fs/20251008/15512254ec6747949f45071f0338df79.png");
+
+        return R.ok().put("data",news);
+    }
+
+    public FsCourseLink createFsCourseLink(String corpId, Date sendTime,  Long qwUserId,
+                                           String companyUserId, String companyId, Long externalId, Integer type,String chatId) {
+        // 手动创建 FsCourseLink 对象,避免使用 BeanUtils.copyProperties
+        FsCourseLink link = new FsCourseLink();
+        link.setCompanyId(Long.parseLong(companyId));
+        link.setQwUserId(qwUserId);
+        link.setCompanyUserId(Long.parseLong(companyUserId));
+        link.setCorpId(corpId);
+        link.setChatId(chatId);
+        link.setQwExternalId(externalId);
+        link.setLinkType(type); //小程序
+        link.setUNo(UUID.randomUUID().toString());
+        String randomString = generateRandomStringWithLock();
+        if (StringUtil.strIsNullOrEmpty(randomString)) {
+            link.setLink(UUID.randomUUID().toString().replace("-", ""));
+        } else {
+            link.setLink(randomString);
+        }
+
+        link.setCreateTime(sendTime);
+
+        return link;
+    }
+
 }
 

+ 14 - 0
fs-service/src/main/resources/mapper/course/FsUserCourseVideoMapper.xml

@@ -503,4 +503,18 @@
            and video.is_del = 0  and video.course_id= #{courseId}
             limit 1
     </select>
+
+    <update id="batchDown" parameterType="String">
+        update fs_user_course_video set is_on_put = 1 where video_id in
+        <foreach item="videoId" collection="array" open="(" separator="," close=")">
+            #{videoId}
+        </foreach>
+    </update>
+
+    <update id="batchEditCover" parameterType="com.fs.course.param.BatchEditCoverParam">
+        update fs_user_course_video set thumbnail = #{thumbnail} where video_id in
+        <foreach item="videoId" collection="videoIds" open="(" separator="," close=")">
+            #{videoId}
+        </foreach>
+    </update>
 </mapper>