From 3a385151032f0e3b41bfc8bdbf324899f141b830 Mon Sep 17 00:00:00 2001 From: xiaozzzi <42293085+xiaozzzi@users.noreply.github.com> Date: Tue, 12 Dec 2023 21:39:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E7=AB=AF=E4=B8=8E=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E9=9B=86=E6=88=90=EF=BC=8C=E5=8D=9A=E5=AE=A2=E7=AB=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=A4=96=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blossom-backend/.gitignore | 9 +- blossom-backend/backend/pom.xml | 13 +-- .../backend/base/user/UserController.java | 6 +- .../blossom/backend/config/WebConfigurer.java | 56 ++++++----- .../main/resources/config/application-dev.yml | 11 ++- .../resources/config/application-prod.yml | 1 + .../resources/config/application-test.yml | 83 ++++++++++++++++ .../src/main/resources/static/blog/README.md | 7 ++ .../main/resources/static/editor/README.md | 1 + .../common/base/config/WebMvcConfig.java | 11 --- blossom-editor/src/renderer/index.html | 2 +- blossom-editor/src/renderer/src/env.d.ts | 4 +- .../src/views/home/ArticleSubjects.vue | 5 +- .../src/renderer/src/views/note/NoteIndex.vue | 11 ++- .../src/views/picture/PictureBatchDel.vue | 2 +- blossom-web/.env | 1 - blossom-web/.env.development | 1 - blossom-web/env.d.ts | 1 - blossom-web/env/.env.spring | 1 + blossom-web/env/env.d.ts | 20 ++++ blossom-web/global.d.ts | 32 +++++++ blossom-web/index.html | 1 + blossom-web/package.json | 2 + blossom-web/pom.xml | 73 -------------- .../blossom_logo.png => public/blog-logo.png} | Bin blossom-web/public/config.js | 51 ++++++++++ blossom-web/src/api/request.ts | 9 +- blossom-web/src/assets/constants/blossom.ts | 54 +---------- .../assets/imgs/linklogo/guardcat_logo.jpg | Bin 22377 -> 0 bytes .../src/assets/imgs/linklogo/luban.png | Bin 14496 -> 0 bytes .../src/assets/imgs/logo/blossom_logo.png | Bin 11898 -> 0 bytes blossom-web/src/components/NotFound.vue | 40 ++++---- blossom-web/src/scripts/env.ts | 90 ++++++++++++++++++ blossom-web/src/views/Index.vue | 9 +- blossom-web/src/views/article/DocTitle.vue | 4 +- blossom-web/src/views/index/Home.vue | 15 +-- blossom-web/src/views/index/HomeUserInfo.vue | 13 +-- blossom-web/src/views/index/IndexHeader.vue | 18 ++-- blossom-web/src/views/index/Login.vue | 8 +- blossom-web/tsconfig.json | 5 +- blossom-web/vite.config.ts | 39 ++++---- 41 files changed, 437 insertions(+), 272 deletions(-) create mode 100644 blossom-backend/backend/src/main/resources/config/application-test.yml create mode 100644 blossom-backend/backend/src/main/resources/static/blog/README.md create mode 100644 blossom-backend/backend/src/main/resources/static/editor/README.md delete mode 100644 blossom-web/.env delete mode 100644 blossom-web/.env.development delete mode 100644 blossom-web/env.d.ts create mode 100644 blossom-web/env/.env.spring create mode 100644 blossom-web/env/env.d.ts create mode 100644 blossom-web/global.d.ts delete mode 100644 blossom-web/pom.xml rename blossom-web/{src/assets/imgs/linklogo/blossom_logo.png => public/blog-logo.png} (100%) create mode 100644 blossom-web/public/config.js delete mode 100644 blossom-web/src/assets/imgs/linklogo/guardcat_logo.jpg delete mode 100644 blossom-web/src/assets/imgs/linklogo/luban.png delete mode 100644 blossom-web/src/assets/imgs/logo/blossom_logo.png create mode 100644 blossom-web/src/scripts/env.ts diff --git a/blossom-backend/.gitignore b/blossom-backend/.gitignore index faacf08..dadece4 100644 --- a/blossom-backend/.gitignore +++ b/blossom-backend/.gitignore @@ -1,9 +1,16 @@ HELP.md target/ !.mvn/wrapper/maven-wrapper.jar -!**/src/main/** +#!**/src/main/** !**/src/test/** +### static ### +/backend/src/main/resources/static/blog/** +!/backend/src/main/resources/static/blog/README.md + +/backend/src/main/resources/static/editor/** +!/backend/src/main/resources/static/editor/README.md + ### STS ### .apt_generated .classpath diff --git a/blossom-backend/backend/pom.xml b/blossom-backend/backend/pom.xml index 3a49657..762c4b0 100644 --- a/blossom-backend/backend/pom.xml +++ b/blossom-backend/backend/pom.xml @@ -14,14 +14,10 @@ 4.3.0 2.6.7-BL-SNAPSHOT + 0.4.20 - - com.blossom - blossom-web - 1.10.0-SNAPSHOT - com.blossom @@ -72,14 +68,9 @@ net.coobird thumbnailator - 0.4.20 + ${thumbnailator.version} - - - - - diff --git a/blossom-backend/backend/src/main/java/com/blossom/backend/base/user/UserController.java b/blossom-backend/backend/src/main/java/com/blossom/backend/base/user/UserController.java index 280c476..84b3afa 100644 --- a/blossom-backend/backend/src/main/java/com/blossom/backend/base/user/UserController.java +++ b/blossom-backend/backend/src/main/java/com/blossom/backend/base/user/UserController.java @@ -1,5 +1,6 @@ package com.blossom.backend.base.user; +import cn.hutool.core.util.ObjUtil; import com.blossom.backend.base.param.ParamEnum; import com.blossom.backend.base.param.ParamService; import com.blossom.backend.base.sys.SysService; @@ -10,6 +11,7 @@ import com.blossom.backend.server.article.stat.ArticleStatService; import com.blossom.backend.base.auth.AuthContext; import com.blossom.backend.base.auth.annotation.AuthIgnore; import com.blossom.common.base.exception.XzException400; +import com.blossom.common.base.exception.XzException404; import com.blossom.common.base.pojo.R; import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -54,7 +56,9 @@ public class UserController { if (userId == null) { return R.ok(new BlossomUserRes()); } - BlossomUserRes user = userService.selectById(userId).to(BlossomUserRes.class); + UserEntity u = userService.selectById(userId); + XzException404.throwBy(ObjUtil.isNull(u), "用户不存在"); + BlossomUserRes user = u.to(BlossomUserRes.class); ArticleStatRes stat = articleService.statCount(null, null, userId); user.setArticleWords(stat.getArticleWords()); user.setArticleCount(stat.getArticleCount()); diff --git a/blossom-backend/backend/src/main/java/com/blossom/backend/config/WebConfigurer.java b/blossom-backend/backend/src/main/java/com/blossom/backend/config/WebConfigurer.java index 99514bc..62ba367 100644 --- a/blossom-backend/backend/src/main/java/com/blossom/backend/config/WebConfigurer.java +++ b/blossom-backend/backend/src/main/java/com/blossom/backend/config/WebConfigurer.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; +import org.springframework.http.CacheControl; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; @@ -16,6 +17,7 @@ import org.springframework.web.servlet.config.annotation.*; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; /** @@ -79,25 +81,8 @@ public class WebConfigurer implements WebMvcConfigurer { } @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(userTypeInterceptor()) - .addPathPatterns("/**") - .excludePathPatterns( - "/blog/**", - "/assets/**" - ); - - } - - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addViewController("/blog/").setViewName("/blog/index.html"); - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/blog/**").addResourceLocations("classpath:/META-INF/resources/webjars/blossom-web/"); - registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/META-INF/resources/webjars/blossom-web/assets/"); + public void configureAsyncSupport(AsyncSupportConfigurer configurer) { + configurer.setTaskExecutor(executor); } @Bean @@ -105,9 +90,36 @@ public class WebConfigurer implements WebMvcConfigurer { return new UserTypeInterceptor(); } - @Override - public void configureAsyncSupport(AsyncSupportConfigurer configurer) { - configurer.setTaskExecutor(executor); + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(userTypeInterceptor()) + .addPathPatterns("/**") + .excludePathPatterns( + "/blog/**", + "/editor/**" + ); + + } + + /** + * 页面映射 + */ + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/blog/").setViewName("/blog/index.html"); + registry.addViewController("/editor/").setViewName("/editor/index.html"); + } + + /*** + * 静态文件处理 + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/editor/**") + .addResourceLocations("classpath:/static/editor/") + .setCacheControl(CacheControl.maxAge(48, TimeUnit.HOURS).cachePublic()); + registry.addResourceHandler("/blog/**") + .addResourceLocations("classpath:/static/blog/") + .setCacheControl(CacheControl.maxAge(48, TimeUnit.HOURS).cachePublic()); } } diff --git a/blossom-backend/backend/src/main/resources/config/application-dev.yml b/blossom-backend/backend/src/main/resources/config/application-dev.yml index 38e0148..7bb013f 100644 --- a/blossom-backend/backend/src/main/resources/config/application-dev.yml +++ b/blossom-backend/backend/src/main/resources/config/application-dev.yml @@ -1,3 +1,7 @@ +#server: +# servlet: +# context-path: /dev + spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver @@ -74,9 +78,6 @@ project: os-type: blossom blos: # 请以 /pic 结尾, 如果你在 nginx 中配置有代理, 注意别忘了添加你的代理路径 - domain: "http://localhost:9999/pic/" + domain: "http://localhost:9999/dev/pic/" # 请以 / 开头, / 结尾, 简短的路径在文章中有更好的显示效果, 过长一定程度会使文章内容混乱 - default-path: "/home/bl/img/" -server: - servlet: - context-path: /dev \ No newline at end of file + default-path: "/home/bl/img/" \ No newline at end of file diff --git a/blossom-backend/backend/src/main/resources/config/application-prod.yml b/blossom-backend/backend/src/main/resources/config/application-prod.yml index 3791754..a503e1b 100644 --- a/blossom-backend/backend/src/main/resources/config/application-prod.yml +++ b/blossom-backend/backend/src/main/resources/config/application-prod.yml @@ -50,6 +50,7 @@ project: white-list: # 白名单 - /sentinel/** - /blog/** + - /editor/** - /assets/** # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ Cache/Redis ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ cache: # 缓存 diff --git a/blossom-backend/backend/src/main/resources/config/application-test.yml b/blossom-backend/backend/src/main/resources/config/application-test.yml new file mode 100644 index 0000000..ffd85bb --- /dev/null +++ b/blossom-backend/backend/src/main/resources/config/application-test.yml @@ -0,0 +1,83 @@ +server: + port: 9997 + +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/blossom-all?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&allowMultiQueries=true&useSSL=false&&serverTimezone=GMT%2B8 + username: root + password: jasmine888 + hikari: + max-lifetime: 120000 + +logging: + level: + com.blossom: info + com.blossom.expand.tracker: info + com.blossom.backend.base.auth: info + org.springframework.boot.web.embedded.tomcat.TomcatWebServer: warn + com.baomidou.dynamic.datasource.DynamicRoutingDataSource: warn + com.zaxxer.hikari.HikariDataSource: warn + org.apache.coyote.http11.Http11NioProtocol: warn + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ project ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +project: + base: + version: @project.version@ + ex: + # 异常打印格式 all/project + stack-trace: project + # format/line + format: format + # 动态日志级别配置 + log: + duration: 600000 # 动态日志级别 6 分钟后失效 + restore-duration: 30000 # 30 秒判断一次是否失效 + db: + slow-interval: 200 # 慢SQL + # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ Auth ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + auth: # 授权 + enabled: true # 开启授权 + # 请求日志: com.blossom.backend.base.auth.enums.LogTypeEnum + log-type: simple + # 授权 token 的方式, 注意, 如果使用 redis, 需要引入 redis 包, 否则会提示错误 + # com.blossom.backend.base.auth.enums.AuthTypeEnum + type: caffeine + default-password: 123456 # 默认密码 + password-encoder: bcrypt # 加密方式 + clients: # 客户端 + - client-id: blossom + grant-type: 'password' + duration: 21600 # 客户端授权时间 6 小时 + multi-place-login: true # 客户端是否允许多地登录 + white-list: # 白名单 + - /sentinel/** + - /blog/** + - /editor/** + - /assets/** + # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ Cache/Redis ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + cache: # 缓存 + names-config: # 缓存键超时时间配置 + - name: test_cache1 + seconds: 10 + # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ Tracker ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + # 一个简易的链路追踪功能, 会在日志中输出 traceId + tracker: + collector: + enabled: false # 关闭收集器 + max-cache: 5000 + rate: 100 + repository: + type: disk1 # 关闭存储 + disk: + use-pid: true + log-dir: /logs/tracker + # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ IAAS ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + iaas: + os-type: blossom + blos: + # 请以 /pic 结尾, 如果你在 nginx 中配置有代理, 注意别忘了添加你的代理路径 + # 注意:在下方示例中, /bl 即为 nginx 反向代理路径, 如果你的访问路径中不包含反向代理或路径不同, 请酌情删除或修改 + domain: "https://www.wangyunf.com/blall/pic/" + # 请以 / 开头, / 结尾, 简短的路径在文章中有更好的显示效果, 过长一定程度会使文章内容混乱 + default-path: "/home/blall/img/" diff --git a/blossom-backend/backend/src/main/resources/static/blog/README.md b/blossom-backend/backend/src/main/resources/static/blog/README.md new file mode 100644 index 0000000..55603ba --- /dev/null +++ b/blossom-backend/backend/src/main/resources/static/blog/README.md @@ -0,0 +1,7 @@ +博客静态文件放置位置,若在 blossom-web 项目中打包,需使用: + +```bash +npm run build:spring +``` + +会自动将打包产物打包至该位置。 \ No newline at end of file diff --git a/blossom-backend/backend/src/main/resources/static/editor/README.md b/blossom-backend/backend/src/main/resources/static/editor/README.md new file mode 100644 index 0000000..679d701 --- /dev/null +++ b/blossom-backend/backend/src/main/resources/static/editor/README.md @@ -0,0 +1 @@ +客户端静态文件放置位置。 \ No newline at end of file diff --git a/blossom-backend/common/common-base/src/main/java/com/blossom/common/base/config/WebMvcConfig.java b/blossom-backend/common/common-base/src/main/java/com/blossom/common/base/config/WebMvcConfig.java index 3a0405f..953d1d8 100644 --- a/blossom-backend/common/common-base/src/main/java/com/blossom/common/base/config/WebMvcConfig.java +++ b/blossom-backend/common/common-base/src/main/java/com/blossom/common/base/config/WebMvcConfig.java @@ -28,17 +28,6 @@ public class WebMvcConfig implements WebMvcConfigurer { */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/editor/**") - .addResourceLocations("classpath:/static/editor/") - .setCacheControl(CacheControl.maxAge(48, TimeUnit.HOURS).cachePublic()); - - /* - 博客因无法获取域名, 暂不支持集成 - registry.addResourceHandler("/blog/**") - .addResourceLocations("classpath:/static/blog/") - .setCacheControl(CacheControl.maxAge(4, TimeUnit.MINUTES).cachePublic()); - */ - registry.addResourceHandler("/favicon.ico") .addResourceLocations("classpath:/static/favicon.png") .setCacheControl(CacheControl.maxAge(10, TimeUnit.SECONDS).cachePublic()); diff --git a/blossom-editor/src/renderer/index.html b/blossom-editor/src/renderer/index.html index 7ddb3b9..d4aea10 100644 --- a/blossom-editor/src/renderer/index.html +++ b/blossom-editor/src/renderer/index.html @@ -389,7 +389,7 @@
加载中... -
Blossom | v1.9.0
+
Blossom | v1.10.0
diff --git a/blossom-editor/src/renderer/src/env.d.ts b/blossom-editor/src/renderer/src/env.d.ts index 404215b..6409505 100644 --- a/blossom-editor/src/renderer/src/env.d.ts +++ b/blossom-editor/src/renderer/src/env.d.ts @@ -2,9 +2,9 @@ interface ImportMetaEnv { /** - * 使用环境 + * 基础URL */ - readonly RENDERER_VITE_MODE: string + readonly VITE_BLOSSOM_BASE_URI: string } interface ImportMeta { diff --git a/blossom-editor/src/renderer/src/views/home/ArticleSubjects.vue b/blossom-editor/src/renderer/src/views/home/ArticleSubjects.vue index 68c393e..c18006d 100644 --- a/blossom-editor/src/renderer/src/views/home/ArticleSubjects.vue +++ b/blossom-editor/src/renderer/src/views/home/ArticleSubjects.vue @@ -160,9 +160,10 @@ $width-item: 210px; .subject-icon, .menu-icon-img { - @include box(55px, 55px); - @include absolute('', 2px, 8px, ''); + @include box(50px, 50px); + @include absolute('', 5px, 8px, ''); @include themeFilter(drop-shadow(0 0 3px rgb(62, 62, 62)), drop-shadow(0 0 3px #000000)); + border-radius: 4px; } .infos { diff --git a/blossom-editor/src/renderer/src/views/note/NoteIndex.vue b/blossom-editor/src/renderer/src/views/note/NoteIndex.vue index 260677e..4506162 100644 --- a/blossom-editor/src/renderer/src/views/note/NoteIndex.vue +++ b/blossom-editor/src/renderer/src/views/note/NoteIndex.vue @@ -21,7 +21,8 @@
-
+
无便签
+
@@ -53,11 +54,12 @@ import { nextTick, onMounted, ref } from 'vue' import { CopyDocument } from '@element-plus/icons-vue' import { noteAllApi, noteUpdApi, noteDelApi, noteTopApi } from '@renderer/api/note' -import NoteEditor from '@renderer/views/note/NoteEditor.vue' import { TempTextareaKey } from '@renderer/views/article/scripts/article' import { Local } from '@renderer/assets/utils/storage' import { ElMessage } from 'element-plus' import { writeText } from '@renderer/assets/utils/electron' +import { isEmpty } from 'lodash' +import NoteEditor from '@renderer/views/note/NoteEditor.vue' onMounted(() => { getNoteList() @@ -140,6 +142,11 @@ const notes = ref([]) overflow: auto; overflow-y: overlay; + .placeholder { + @include font(14px, 300); + color: var(--bl-text-color-light); + } + .note { position: relative; @include box(250px, 354px); diff --git a/blossom-editor/src/renderer/src/views/picture/PictureBatchDel.vue b/blossom-editor/src/renderer/src/views/picture/PictureBatchDel.vue index c43fc33..5a2c2c6 100644 --- a/blossom-editor/src/renderer/src/views/picture/PictureBatchDel.vue +++ b/blossom-editor/src/renderer/src/views/picture/PictureBatchDel.vue @@ -18,7 +18,7 @@