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 @@