diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9de06df --- /dev/null +++ b/.gitignore @@ -0,0 +1,106 @@ +# ==================== +# 构建输出 +# ==================== +client/dist/ +server/target/ + +# ==================== +# 依赖 +# ==================== +client/node_modules/ +client/.pnpm-store/ +server/.mvn/ +server/mvnw +server/mvnw.cmd + +# ==================== +# 编辑器 +# ==================== +.idea/ +*.iws +*.iml +*.ipr +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +client/.vscode/* +!client/.vscode/extensions.json + +# ==================== +# 环境变量 +# ==================== +client/.env.local +client/.env.*.local +server/src/main/resources/application-local.yml +server/src/main/resources/application-dev.yml +server/src/main/resources/application-prod.yml + +# ==================== +# 日志 +# ==================== +server/*.log +server/logs/ + +# ==================== +# 测试覆盖 +# ==================== +client/coverage/ + +# ==================== +# MinIO 本地存储 +# ==================== +minio-data/ +minio-storage/ + +# ==================== +# Docker +# ==================== +.docker/ +docker-compose.override.yml + +# ==================== +# 设计文件(仅开发参考) +# ==================== +design/ + +# ==================== +# MinIO 本地存储(如果使用本地MinIO) +# ==================== +minio-data/ +minio-storage/ + +# ==================== +# Docker +# ==================== +.docker/ +docker-compose.override.yml + +# ==================== +# 通用 +# ==================== +# 操作系统文件 +.DS_Store +Thumbs.db + +# 临时文件 +*.tmp +*.temp +*.swp +*.swo +*~ + +# 备份文件 +*.bak +*.backup + +# 压缩包 +*.zip +*.tar.gz +*.rar + +# 数据库文件 +*.db +*.sqlite +*.sqlite3 diff --git a/client/.env.production b/client/.env.production index 2bc6a1f..a5d4058 100644 --- a/client/.env.production +++ b/client/.env.production @@ -1,3 +1,3 @@ VITE_SITE_CODE=cg VITE_API_BASE_URL=/api -VITE_MINIO_PUBLIC_URL=http://localhost:9000/chuanggao-images +VITE_MINIO_PUBLIC_URL=http://117.72.159.31:9000/chuanggao-images diff --git a/client/src/components/layout/AppFooter.vue b/client/src/components/layout/AppFooter.vue index 01ccda6..c5b0095 100644 --- a/client/src/components/layout/AppFooter.vue +++ b/client/src/components/layout/AppFooter.vue @@ -172,3 +172,4 @@ const socialLinks = [ } + diff --git a/server/src/main/java/com/chuanggao/chuanggao/config/WebConfig.java b/server/src/main/java/com/chuanggao/chuanggao/config/WebConfig.java new file mode 100644 index 0000000..0f07ea4 --- /dev/null +++ b/server/src/main/java/com/chuanggao/chuanggao/config/WebConfig.java @@ -0,0 +1,43 @@ +package com.chuanggao.chuanggao.config; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.StringHttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.filter.CharacterEncodingFilter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Bean + public FilterRegistrationBean characterEncodingFilter() { + FilterRegistrationBean filter = new FilterRegistrationBean<>(); + CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter(); + encodingFilter.setEncoding("UTF-8"); + encodingFilter.setForceEncoding(true); + filter.setFilter(encodingFilter); + filter.addUrlPatterns("/*"); + filter.setOrder(1); + return filter; + } + + @Override + public void extendMessageConverters(List> converters) { + // 将 StringHttpMessageConverter 放到首位,用于处理 String 类型返回值 + converters.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + + // 让 Jackson JSON 响应也带上 charset=utf-8 + // 默认 MappingJackson2HttpMessageConverter 的 Content-Type 是 application/json 不带 charset + for (HttpMessageConverter converter : converters) { + if (converter instanceof MappingJackson2HttpMessageConverter jacksonConverter) { + jacksonConverter.setDefaultCharset(StandardCharsets.UTF_8); + } + } + } +}