zyp 2 settimane fa
parent
commit
aa38e788fc

+ 3 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyUserMapper.java

@@ -264,4 +264,7 @@ public interface CompanyUserMapper
 
     List<CompanyUser> getAllUserListLimit(@Param("companyId") Long companyId,
                                           @Param("keywords") String keywords);
+
+    @Select("select domain from company_user where user_id = #{userId}")
+    String selectDomainByUserId(Long userId);
 }

+ 25 - 29
fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -5,6 +5,9 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.domain.FsCourseDomainName;
 import com.fs.course.domain.FsCourseLink;
@@ -12,14 +15,12 @@ import com.fs.course.domain.FsCourseRealLink;
 import com.fs.course.domain.FsUserCourseVideo;
 import com.fs.course.mapper.FsCourseDomainNameMapper;
 import com.fs.course.mapper.FsCourseLinkMapper;
-import com.fs.course.mapper.FsCourseSopAppLinkMapper;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
 import com.fs.course.param.FsCourseLinkCreateParam;
 import com.fs.course.service.IFsCourseDomainNameService;
 import com.fs.course.service.IFsCourseLinkService;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwUserMapper;
-import com.fs.qw.vo.QwSopCourseFinishTempSetting;
 import com.fs.system.service.ISysConfigService;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
@@ -51,10 +52,6 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 {
     @Autowired
     private FsCourseLinkMapper fsCourseLinkMapper;
-
-    @Autowired
-    private  FsCourseSopAppLinkMapper fsCourseSopAppLinkMapper;
-
     @Autowired
     private ISysConfigService configService;
 
@@ -64,6 +61,8 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
     private QwUserMapper qwUserMapper;
     @Autowired
     private FsUserCourseVideoMapper courseVideoMapper;
+    @Autowired
+    private CompanyUserMapper companyUserMapper;
 
 
     /**
@@ -141,7 +140,6 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 
     private static final String realLink = "/courseh5/pages/course/learning?course=";
     private static final String miniappRealLink = "/pages_course/video?course=";
-    private static final String appRealLink = "/pages/courseAnswer/index?link=";
 
 
     /**
@@ -179,19 +177,6 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
         Date updateTime = Date.from(expireDateTime.atZone(ZoneId.systemDefault()).toInstant());
         link.setUpdateTime(updateTime);
 
-//        Date now = new Date();
-//        // 获取明天的日期
-//        Date tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);
-//        // 设置时间为0点
-//        Date tomorrowMidnight = new Date(tomorrow.getYear(), tomorrow.getMonth(), tomorrow.getDate());
-
-//        LocalDateTime now = LocalDateTime.now();
-//        // 增加十天,并设置时间为午夜
-//        LocalDateTime tenDaysLater = now.plusDays(10).withHour(0).withMinute(0).withSecond(0).withNano(0);
-//
-//        // 转换为 Date 类型
-//        Date tenDaysMidnight = Date.from(tenDaysLater.atZone(ZoneId.systemDefault()).toInstant());
-
         // 设置过期时间
         link.setUpdateTime(updateTime);
 
@@ -202,8 +187,8 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
             String course = JSON.toJSONString(courseMap);
             link.setRealLink(realLink+course);
             if (fsCourseLinkMapper.updateFsCourseLink(link)>0){
-                FsCourseDomainName fsCourseDomainName = fsCourseDomainNameMapper.selectFsCourseDomainNameByRandom();
-                String sortLink = "https://"+fsCourseDomainName.getDomainName() + "/s/" + link.getLink();
+                String domainName = getDomainName(param.getCompanyUserId(), config);
+                String sortLink = domainName + "/s/" + link.getLink();
                 return R.ok("短链生成").put("url",sortLink);
             }
         }
@@ -245,8 +230,8 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
         calendar.add(Calendar.DAY_OF_MONTH, expireDays);
         link.setUpdateTime(calendar.getTime());
         if (fsCourseLinkMapper.insertFsCourseLink(link)>0){
-            FsCourseDomainName fsCourseDomainName = fsCourseDomainNameMapper.selectFsCourseDomainNameByRandom();
-            String sortLink = "https://"+fsCourseDomainName.getDomainName() + "/s/" + link.getLink();
+            String domainName = getDomainName(param.getCompanyUserId(), config);
+            String sortLink = domainName + "/s/" + link.getLink();
             return R.ok("短链生成").put("url",sortLink);
         }
         return R.error("短链生成失败!");
@@ -254,7 +239,6 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 
     @Override
     public String createLinkUrlWcmini(FsCourseLinkCreateParam param) {
-
         String json = configService.selectConfigByKey("course.config");
         CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
 
@@ -278,6 +262,7 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
         return link.getRealLink();
     }
 
+
     public FsCourseLink createFsCourseLink(String corpId, Date sendTime,Long courseId,Long videoId, String qwUserId,
                                            Long companyUserId, Long companyId,Long externalId,Integer type){
         // 手动创建 FsCourseLink 对象,避免使用 BeanUtils.copyProperties
@@ -297,6 +282,14 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
         return link;
     }
 
+    private String getDomainName(Long companyUserId,CourseConfig config){
+        String domainName = companyUserMapper.selectDomainByUserId(companyUserId);
+        if (StringUtils.isEmpty(domainName)){
+            domainName = config.getRealLinkDomainName();
+        }
+        return domainName;
+    }
+
     private Date createUpdateTime(Integer expiresDays, Date sendTime, CourseConfig config){
 
         Integer expireDays = (expiresDays == null || expiresDays == 0)
@@ -335,7 +328,6 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 
             // 从数据库中查找短链对应的真实链接
             FsCourseLink courseLink = fsCourseLinkMapper.selectFsCourseLinkByLink(sLink);
-
             if (courseLink != null) {
                 // 获取当前时间
                 Date currentTime = new Date();
@@ -354,9 +346,13 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                         return R.error("真实链接不存在").put("realLink", sLink);
                     }
                     log.info("链接仍然有效: {}", sLink);
-                    String json = configService.selectConfigByKey("course.config");
-                    CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-                    String realLink = config.getRealLinkDomainName()+courseLink.getRealLink();
+                    String domainName = companyUserMapper.selectDomainByUserId(courseLink.getCompanyUserId());
+                    if (StringUtils.isEmpty(domainName)){
+                        String json = configService.selectConfigByKey("course.config");
+                        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+                        domainName = config.getRealLinkDomainName();
+                    }
+                    String realLink = domainName+courseLink.getRealLink();
                     return R.ok().put("realLink",realLink );
                 }
             } else {

+ 26 - 15
fs-service-system/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.mapper.CompanyUserMapper;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.domain.FsCourseDomainName;
 import com.fs.course.domain.FsCourseLink;
@@ -110,6 +111,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
     @Autowired
     private QwExternalContactMapper qwExternalContactMapper;
 
+    @Autowired
+    private CompanyUserMapper companyUserMapper;
+
     @Override
     public void save(SopUserLogsInfo sopUserLogsInfo) {
         sopUserLogsInfoMapper.insertSopUserLogsInfo(sopUserLogsInfo);
@@ -381,6 +385,13 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
             return R.error().put("msg","课程默认配置为空,请联系管理员");
         }
 
+        //域名
+        String domainName = companyUserMapper.selectDomainByUserId(Long.parseLong(companyUserId));
+        if (StringUtils.isEmpty(domainName)){
+            domainName = config.getRealLinkDomainName();
+        }
+        String finalDomainName = domainName;
+
 //        if (StringUtils.isEmpty(config.getMiniprogramPage())){
 //            return R.error().put("msg","课程默认配置小程序路径为空,请联系管理员");
 //        }
@@ -436,7 +447,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                             addWatchLogIfNeeded(param.getSopId(), param.getVideoId(), param.getCourseId(),item.getFsUserId(), qwUserId, companyUserId, companyId, item.getExternalId(),param.getStartTime(),createTime );
 
                             String sortLink = generateShortLink(st, param.getCorpId(), createTime, param.getCourseId(), param.getVideoId(),
-                                    qwUserId, companyUserId, companyId, item.getExternalId(),config);
+                                    qwUserId, companyUserId, companyId,finalDomainName, item.getExternalId(),config);
 
                             if (StringUtils.isNotEmpty(sortLink)) {
                                 if ("3".equals(st.getContentType())) {
@@ -586,7 +597,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
     private String generateShortLink(QwSopCourseFinishTempSetting.Setting setting, String corpId, Date sendTime,
                                      Integer courseId, Integer videoId, String qwUserId,
-                                     String companyUserId, String companyId, Long externalId,CourseConfig config) {
+                                     String companyUserId, String companyId,String domainName, Long externalId,CourseConfig config) {
 
         // 手动创建 FsCourseLink 对象,避免使用 BeanUtils.copyProperties
 //        FsCourseLink link = new FsCourseLink();
@@ -626,7 +637,7 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
         link.setUpdateTime(updateTime);
 
-        String sortLink = createLink(link);
+        String sortLink = createLink(link,domainName);
 
         //存短链-
         fsCourseLinkMapper.insertFsCourseLink(link);
@@ -701,19 +712,19 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
 
 
 
-    private String createLink(FsCourseLink link){
+    private String createLink(FsCourseLink link,String domain){
 
-        List<FsCourseDomainName> cachedDomainNames = fsCourseDomainNameMapper.selectAllDomainNames();
-        if (cachedDomainNames == null || cachedDomainNames.isEmpty()) {
-            log.error("一键生成短链-域名出错-No domain names available for short link generation.");
-            return "";
-        }
-
-        int randomIndex = ThreadLocalRandom.current().nextInt(cachedDomainNames.size());
-
-        // 从缓存中随机选择一个域名
-        FsCourseDomainName fsCourseDomainName = cachedDomainNames.get(randomIndex);
-        String sortLink = "https://" + fsCourseDomainName.getDomainName() + "/s/" + link.getLink();
+//        List<FsCourseDomainName> cachedDomainNames = fsCourseDomainNameMapper.selectAllDomainNames();
+//        if (cachedDomainNames == null || cachedDomainNames.isEmpty()) {
+//            log.error("一键生成短链-域名出错-No domain names available for short link generation.");
+//            return "";
+//        }
+//
+//        int randomIndex = ThreadLocalRandom.current().nextInt(cachedDomainNames.size());
+//
+//        // 从缓存中随机选择一个域名
+//        FsCourseDomainName fsCourseDomainName = cachedDomainNames.get(randomIndex);
+        String sortLink = domain + "/s/" + link.getLink();
 
         return sortLink;
     }