From 553cec133847d9a879bcbd12d5d469d4360cede7 Mon Sep 17 00:00:00 2001 From: fanxb Date: Thu, 31 Mar 2022 13:31:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A6=96=E9=A1=B5=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E4=B8=BA=E6=AF=8F=E6=97=A5=E4=B8=80=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/NumberConstant.java | 4 ++ .../common/constant/RedisConstant.java | 2 + .../common/entity/vo/GlobalConfigVo.java | 20 ++++++ .../bookmark/common/filter/LoginFilter.java | 2 +- .../common/schedule/BingImgSchedule.java | 28 ++++++++ .../common/service/ConfigService.java | 11 +++- .../service/impl/ConfigServiceImpl.java | 64 +++++++++++++++++-- .../web/src/main/resources/application.yml | 4 ++ bookmark_front/src/views/home/index.vue | 11 ++-- 9 files changed, 134 insertions(+), 12 deletions(-) create mode 100644 bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/vo/GlobalConfigVo.java create mode 100644 bookMarkService/common/src/main/java/com/fanxb/bookmark/common/schedule/BingImgSchedule.java diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java index 644ff15..1544a0b 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/NumberConstant.java @@ -13,4 +13,8 @@ public class NumberConstant { * 2^10 */ public static final int K_SIZE = 1024; + /** + * 一天的秒数 + */ + public static final int S_DAY = 24 * 60 * 60; } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java index f680b16..e43f7e0 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java @@ -35,4 +35,6 @@ public class RedisConstant { public static String getUserFailCountKey(String username) { return "bookmark_user_fail_count_" + username; } + + public static final String BING_IMG = "bing_img"; } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/vo/GlobalConfigVo.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/vo/GlobalConfigVo.java new file mode 100644 index 0000000..30a52bd --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/vo/GlobalConfigVo.java @@ -0,0 +1,20 @@ +package com.fanxb.bookmark.common.entity.vo; + +import lombok.Data; + +/** + * 全局公共配置 + * + * @author fanxb + */ +@Data +public class GlobalConfigVo { + /** + * 是否存在网络代理(外网访问) + */ + private boolean proxyExist; + /** + * bing每日一图地址 + */ + private String bingImgSrc; +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/filter/LoginFilter.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/filter/LoginFilter.java index 2e576f1..e5dfc16 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/filter/LoginFilter.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/filter/LoginFilter.java @@ -142,7 +142,7 @@ public class LoginFilter implements Filter { UserContextHolder.set(context); return true; } catch (Exception e) { - log.error("jwt解密失败:{},原因:{}", jwt, e.getMessage()); + log.info("jwt解密失败:{},原因:{}", jwt, e.getMessage()); return false; } } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/schedule/BingImgSchedule.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/schedule/BingImgSchedule.java new file mode 100644 index 0000000..fbd7f1f --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/schedule/BingImgSchedule.java @@ -0,0 +1,28 @@ +package com.fanxb.bookmark.common.schedule; + +import com.fanxb.bookmark.common.service.ConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * @author fanxb + */ +@Component +public class BingImgSchedule { + private final ConfigService configService; + + @Autowired + public BingImgSchedule(ConfigService configService) { + this.configService = configService; + } + + @PostConstruct + @Scheduled(cron = "* 0 0/1 * * *") + public void cache() { + configService.getCacheBingImg(); + } + +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/ConfigService.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/ConfigService.java index f49851a..b0c9283 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/ConfigService.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/ConfigService.java @@ -1,6 +1,6 @@ package com.fanxb.bookmark.common.service; -import java.util.Map; +import com.fanxb.bookmark.common.entity.vo.GlobalConfigVo; /** * 全局配置相关 @@ -17,5 +17,12 @@ public interface ConfigService { * @author fanxb * @date 2021/9/15 下午9:58 */ - Map getGlobalConfig(); + GlobalConfigVo getGlobalConfig(); + + /** + * 缓存bing每日一图到redis + * + * @author fanxb + */ + String getCacheBingImg(); } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/impl/ConfigServiceImpl.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/impl/ConfigServiceImpl.java index 6535c5b..26c0866 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/impl/ConfigServiceImpl.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/service/impl/ConfigServiceImpl.java @@ -1,23 +1,77 @@ package com.fanxb.bookmark.common.service.impl; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.fanxb.bookmark.common.constant.NumberConstant; +import com.fanxb.bookmark.common.constant.RedisConstant; +import com.fanxb.bookmark.common.entity.vo.GlobalConfigVo; import com.fanxb.bookmark.common.service.ConfigService; import com.fanxb.bookmark.common.util.HttpUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * @author fanxb * @date 2021-09-15-下午9:59 */ @Service +@Slf4j public class ConfigServiceImpl implements ConfigService { - @Override - public Map getGlobalConfig() { - Map res = new HashMap<>(1); - res.put("proxyExist", HttpUtil.getProxyExist()); - return res; + + private final StringRedisTemplate stringRedisTemplate; + + @Autowired + public ConfigServiceImpl(StringRedisTemplate stringRedisTemplate) { + this.stringRedisTemplate = stringRedisTemplate; } + + @Value("${bing.host}") + private String bingHost; + @Value("${bing.onePic}") + private String bingUrl; + + @Override + public GlobalConfigVo getGlobalConfig() { + GlobalConfigVo vo = new GlobalConfigVo(); + vo.setProxyExist(HttpUtil.getProxyExist()); + vo.setBingImgSrc(getCacheBingImg()); + return vo; + } + + @Override + public String getCacheBingImg() { + String str = stringRedisTemplate.opsForValue().get(RedisConstant.BING_IMG); + if (str != null) { + return str; + } + str = getBingImg(); + if (str != null) { + stringRedisTemplate.opsForValue().set(RedisConstant.BING_IMG, str, 2, TimeUnit.HOURS); + } + return str; + } + + private String getBingImg() { + try { + JSONObject bingObj = HttpUtil.getObj(bingHost + bingUrl, null, false); + String path = bingObj.getJSONArray("images").getJSONObject(0).getString("url"); + return bingHost + path; + } catch (Exception e) { + log.error("获取bing每日一图错误:{}", e.getLocalizedMessage(), e); + } + return null; + } + + } diff --git a/bookMarkService/web/src/main/resources/application.yml b/bookMarkService/web/src/main/resources/application.yml index dfec06d..c96e935 100644 --- a/bookMarkService/web/src/main/resources/application.yml +++ b/bookMarkService/web/src/main/resources/application.yml @@ -91,6 +91,10 @@ proxy: # url icon服务提供地址 urlIconAddress: http://localhost:11001 +bing: + host: https://cn.bing.com + onePic: /HPImageArchive.aspx?format=js&idx=0&n=1 + # 管理员用户id(因为目前尚未设计分角色权限系统,须指定管理员用户id) manageUserId: -1 diff --git a/bookmark_front/src/views/home/index.vue b/bookmark_front/src/views/home/index.vue index 7083807..e2f55c3 100644 --- a/bookmark_front/src/views/home/index.vue +++ b/bookmark_front/src/views/home/index.vue @@ -1,5 +1,5 @@