|
|
@@ -0,0 +1,53 @@
|
|
|
+package com.cyksj.service.mini.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.cyksj.config.YhMiniConfig;
|
|
|
+import com.cyksj.model.wechat.MiniURLLink;
|
|
|
+import com.cyksj.redis.RedisService;
|
|
|
+import com.cyksj.service.mini.MiniService;
|
|
|
+import com.cyksj.service.wechat.WeChatService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+/*
|
|
|
+ *项目名: netflix
|
|
|
+ *文件名: MiniServiceImpl
|
|
|
+ *创建者: JavaZou
|
|
|
+ *创建时间:2023/5/11 18:07
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+public class MiniServiceImpl implements MiniService {
|
|
|
+ private final WeChatService weChatService;
|
|
|
+
|
|
|
+ private final YhMiniConfig yhMiniConfig;
|
|
|
+
|
|
|
+ private final RedisService redisService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getMiniURLLink(String path, String query) throws Exception {
|
|
|
+ StringBuilder CACHE_KEY = new StringBuilder();
|
|
|
+ String key = RedisService.key.MINI_LINK_URL_CACHE.getName();
|
|
|
+ CACHE_KEY.append(key);
|
|
|
+ if (StrUtil.isNotBlank(path)) {
|
|
|
+ CACHE_KEY.append(path);
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(query)) {
|
|
|
+ CACHE_KEY.append(query);
|
|
|
+ }
|
|
|
+ String appId = yhMiniConfig.getAppId();
|
|
|
+ CACHE_KEY.append(appId);
|
|
|
+ String linkUrl = (String) redisService.get(CACHE_KEY.toString());
|
|
|
+ if (StrUtil.isBlank(linkUrl)) {
|
|
|
+ MiniURLLink miniURLLink = new MiniURLLink();
|
|
|
+ miniURLLink.setPath(path);
|
|
|
+ miniURLLink.setQuery(query);
|
|
|
+ String accessToken = weChatService.getAccessToken(appId);
|
|
|
+ linkUrl = weChatService.getMiniURLLink(accessToken, miniURLLink);
|
|
|
+ redisService.set(CACHE_KEY.toString(), linkUrl, RedisService.key.MINI_LINK_URL_CACHE.getTimeout());
|
|
|
+ }
|
|
|
+ return linkUrl;
|
|
|
+ }
|
|
|
+}
|