Browse Source

1.提交弘珍医药专属代码,课程复制看课链接

jzp 3 days ago
parent
commit
a629d6cd8f

+ 72 - 0
fs-company/src/main/java/com/fs/company/controller/course/FsCourseLinkController.java

@@ -7,15 +7,23 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.domain.FsCourseLink;
 import com.fs.course.param.FsCourseLinkCreateParam;
+import com.fs.course.param.FsCourseLinkRoomNewParam;
 import com.fs.course.service.IFsCourseLinkService;
+import com.fs.course.service.IFsUserCourseVideoService;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.security.SecurityUtils;
+import com.fs.qw.service.IQwUserService;
+import com.fs.qw.vo.QwUserVO;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -31,6 +39,17 @@ public class FsCourseLinkController extends BaseController
     @Autowired
     private IFsCourseLinkService fsCourseLinkService;
 
+    @Autowired
+    private IFsUserCourseVideoService fsUserCourseVideoService;
+
+    @Autowired
+    private IQwUserService qwUserService;
+
+    @Autowired
+    private CompanyUserMapper companyUserMapper;
+
+
+
     /**
      * 查询短链列表
      */
@@ -110,4 +129,57 @@ public class FsCourseLinkController extends BaseController
         return fsCourseLinkService.createLinkUrl(param);
     }
 
+    /**
+     * 根据销售id去查询已经绑定的企微
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('course:courseLink:queryQwIds')")
+    @GetMapping("/queryQwIds")
+    public R selectQwUserIdByCompanyUserId()
+    {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        CompanyUser companyUser = companyUserMapper.selectCompanyUserById(loginUser.getUser().getUserId());
+        String qwUserId = companyUser.getQwUserId();
+        if(qwUserId == null || qwUserId.isEmpty()){
+            return R.error("请先绑定企微");
+        }
+        Long[] array = Arrays.stream(qwUserId.split(","))
+                .map(String::trim) // 去除空白
+                .filter(str -> !str.isEmpty()) // 过滤空字符串
+                .map(str -> {
+                    try {
+                        return Long.parseLong(str);
+                    } catch (NumberFormatException e) {
+                        return null; // 非数字设为null
+                    }
+                })
+                .filter(num -> num != null) // 过滤null(非数字值)
+                .toArray(Long[]::new);
+        List<QwUserVO> qwUserVOS = qwUserService.selectQwUserVOByIds(array);
+        return R.ok().put("list",qwUserVOS);
+    }
+
+    /**
+     * 创建课程看课链接
+     * @param param
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('course:courseLink:createRoomLink')")
+    @PostMapping("/createRoomLink")
+    @ApiOperation("创建群发链接")
+    public R createRoomLink(@RequestBody FsCourseLinkRoomNewParam param) {
+
+        if (param.getCourseId()==null){
+            return R.error("课程id不能为空");
+        }
+        if (param.getVideoId()==null){
+            return R.error("视频id不能为空");
+        }
+        if (param.getQwUserId()==null){
+            return R.error("销售企微不能为空");
+        }
+
+        return fsUserCourseVideoService.createRoomMiniLinkByCourse(param);
+    }
+
 }

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

@@ -0,0 +1,21 @@
+package com.fs.course.param;
+
+import lombok.Data;
+
+/**
+ * 这个是弘珍的功能,创建课程群发链接
+ */
+@Data
+public class FsCourseLinkRoomNewParam {
+
+    private Long videoId;
+
+    private Long qwUserId;
+
+    private String corpId;
+
+    private Long courseId;
+
+    private String title;//视频标题
+
+}

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

@@ -241,4 +241,6 @@ public interface IFsUserCourseVideoService extends IService<FsUserCourseVideo> {
      * @return
      */
     R getVideoInfoByVid();
+
+    R createRoomMiniLinkByCourse(FsCourseLinkRoomNewParam param);
 }

+ 73 - 18
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -42,6 +42,7 @@ import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
 import com.fs.course.param.newfs.FsUserCourseVideoLinkParam;
 import com.fs.course.param.newfs.FsUserCourseVideoUParam;
 import com.fs.course.param.newfs.UserCourseVideoPageParam;
+import com.fs.course.service.IFsCourseLinkService;
 import com.fs.course.service.IFsUserCompanyBindService;
 import com.fs.course.service.IFsUserCompanyUserService;
 import com.fs.course.service.IFsUserCourseVideoService;
@@ -259,6 +260,9 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
     @Autowired
     private RedisTemplate redisTemplate;
 
+    @Autowired
+    private IFsCourseLinkService linkService;
+
 
     /**
      * 查询课堂视频
@@ -977,26 +981,46 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
                 return R.error(567, "群聊通用链接").put("qwExternalId", contact.getId());
             }
         }
-        if ("今正科技".equals(cloudHostProper.getCompanyName())) {
-            QwExternalContact UnionEXt = qwExternalContactMapper.selectQwExternalByUnionID(user.getUnionId());
-            if (UnionEXt != null) {
-                log.info("匹配到的第一个企微用户:" + UnionEXt.getUserId());
-                log.info("企微id:" + UnionEXt.getId());
-                log.info("用户:" + param.getVideoId());
-                log.info("企微用户:" + param.getQwUserId());
-                param.setQwExternalId(UnionEXt.getId());
-                FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(UnionEXt.getId(), param.getVideoId(), param.getQwUserId());
-                if (log == null) {
-                    param.setUserId(user.getUserId());
-                    createWatchLog(param);
-                } else {
-                    if (log.getUserId() == null || log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())) {
-                        log.setUserId(param.getUserId());
+
+        boolean bool1 = "今正科技".equals(cloudHostProper.getCompanyName());
+        boolean bool2 = "弘珍医药".equals(cloudHostProper.getCompanyName());
+        if (bool1 || bool2) {
+            //一个都找不到
+            List<QwExternalContact> qwExternalContactList = qwExternalContactMapper.selectQwExternalByUnionID(user.getUnionId());
+
+            if (qwExternalContactList != null && !qwExternalContactList.isEmpty()) {
+                QwExternalContact UnionEXt = qwExternalContactList.get(0);
+                for (QwExternalContact qwExternalContact : qwExternalContactList) {
+                    if (qwExternalContact.getFsUserId() == null || qwExternalContact.getFsUserId() != 0L) {
+                        qwExternalContact.setFsUserId(user.getUserId());
+                        qwExternalContactMapper.updateQwExternalContact(qwExternalContact);
                     }
-                    log.setUpdateTime(new Date());
-                    courseWatchLogMapper.updateFsCourseWatchLog(log);
+                    try {
+                        if (qwExternalContact.getQwUserId().equals(Long.parseLong(param.getQwUserId()))) {
+                            UnionEXt = qwExternalContact;
+                        }
+                    } catch (Exception e) {
+                        log.error("群聊链接匹配销售失败");
+                    }
+
+                    log.info("匹配到的第一个企微用户:" + UnionEXt.getUserId());
+                    log.info("企微id:" + UnionEXt.getId());
+                    log.info("用户:" + param.getVideoId());
+                    log.info("企微用户:" + param.getQwUserId());
+                    param.setQwExternalId(UnionEXt.getId());
+                    FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(UnionEXt.getId(), param.getVideoId(), param.getQwUserId());
+                    if (log == null) {
+                        param.setUserId(user.getUserId());
+                        createWatchLog(param);
+                    } else {
+                        if (log.getUserId() == null || log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())) {
+                            log.setUserId(param.getUserId());
+                        }
+                        log.setUpdateTime(new Date());
+                        courseWatchLogMapper.updateFsCourseWatchLog(log);
+                    }
+                    return R.error(567, "群聊通用链接").put("qwExternalId", UnionEXt.getId());
                 }
-                return R.error(567, "群聊通用链接").put("qwExternalId", UnionEXt.getId());
             }
         }
 
@@ -4205,6 +4229,37 @@ public class FsUserCourseVideoServiceImpl extends ServiceImpl<FsUserCourseVideoM
         return R.ok();
     }
 
+    @Override
+    public R createRoomMiniLinkByCourse(FsCourseLinkRoomNewParam param) {
+
+        QwUser qwUser = qwUserMapper.selectQwUserById(param.getQwUserId());
+
+        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", "企业不存在,请联系管理员");
+        }
+        if (qwCompany.getMiniAppId() == null) {
+            return R.error().put("msg", "当前企业未绑定小程序,请联系管理员");
+        }
+
+        //生成小程序链接
+        String linkByMiniApp = createLinkByMiniApp(new Date(), param.getCourseId(), param.getVideoId(), qwUser, null, 2, null, 1);
+
+        if(StringUtils.isNotEmpty(linkByMiniApp)){
+            linkByMiniApp = linkByMiniApp.replaceAll(".html", "");
+        }
+        String link = linkService.getGotoWxAppLink(linkByMiniApp, qwCompany.getMiniAppId());
+
+        System.out.println("生成课程通链: " + link + " :" + param);
+
+        return R.ok().put("link", link);
+    }
+
     private final ExecutorService uploadExecutor = new ThreadPoolExecutor(
             8,  // core
             16, // max

+ 3 - 2
fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactMapper.java

@@ -551,8 +551,9 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
 
 
     List<QwExternalContact> getGroupChatUserByChatIdAndUserName(@Param("userId")String userId,@Param("userName")String userName,@Param("corpId") String corpId,@Param("chatId") String chatId);
-    @Select("select * from qw_external_contact where unionid = #{unionID} order by create_time asc limit 1 ")
-    QwExternalContact selectQwExternalByUnionID(String unionId);
+
+    @Select("select * from qw_external_contact where unionid = #{unionID} order by create_time asc  ")
+    List<QwExternalContact> selectQwExternalByUnionID(String unionId);
 
     @Select("<script> " +
             "WITH contact_analysis AS (\n" +