Преглед изворни кода

分享课程复制链接内容写入redis

zyy пре 1 месец
родитељ
комит
17898af5b7

+ 19 - 2
fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -5,8 +5,8 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.StringUtils;
@@ -30,6 +30,7 @@ import com.fs.course.service.IFsUserCourseService;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.utils.ConfigUtil;
 import com.fs.his.utils.HttpUtil;
+import com.fs.his.utils.RedisCacheUtil;
 import com.fs.qw.domain.QwGroupChat;
 import com.fs.qw.domain.QwGroupChatUser;
 import com.fs.qw.domain.QwUser;
@@ -49,6 +50,7 @@ import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.mp.api.WxMpService;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -71,6 +73,7 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 import static com.fs.course.utils.LinkUtil.generateRandomStringWithLock;
 import static com.fs.sop.service.impl.SopUserLogsInfoServiceImpl.convertStringToDate;
@@ -124,11 +127,15 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
 
     @Autowired
     private SysConfigMapper sysConfigMapper;
+    @Autowired
+    private RedisCache redisCache;
 
     private static String TOKEN_VALID_CODE = "40001";
 
     private volatile Integer version = 0;
 
+    private static final String WX_URL_REDIS_PREFIX = "wx:link:";
+
 
     /**
      * 查询短链
@@ -772,6 +779,14 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
     public String getGotoWxAppLink(String linkStr,String appId) {
         log.info("appid:{}", appId);
         log.info("linkStr:{}", linkStr);
+        String key = "course=";
+        String linkStrJson = linkStr.substring(linkStr.indexOf(key) + key.length());
+        JSONObject json = JSON.parseObject(linkStrJson);
+        String wxAppLinkKey = String.format("%s%s%s%s%s%s%s",WX_URL_REDIS_PREFIX,json.get("companyId"),json.get("companyUserId"),json.get("projectId"),json.get("courseId"),json.get("videoId"),appId);
+        String linkCache = redisCache.getCacheObject(wxAppLinkKey);
+        if (StringUtils.isNotBlank(linkCache)) {
+            return linkCache;
+        }
         CloseableHttpClient client = null;
         try {
             client = HttpClients.createDefault();
@@ -823,7 +838,9 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                 }
 
                 if(null != jsonObject && !jsonObject.isEmpty() && jsonObject.containsKey("url_link")){
-                    return jsonObject.getString("url_link");
+                    String urlLink = jsonObject.getString("url_link");
+                    redisCache.setCacheObject(wxAppLinkKey, urlLink,6, TimeUnit.HOURS);
+                    return urlLink;
                 }
             } else {
                 return "页面链接错误,获取失败";