From 2f00fde3be116b0fac0ef06fd98f4f02529563a8 Mon Sep 17 00:00:00 2001 From: zhangzijienbplus <17738440858@163.com> Date: Thu, 6 Nov 2025 14:39:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(electron):=E4=BC=98=E5=8C=96=E5=95=86?= =?UTF-8?q?=E6=A0=87=E7=AD=9B=E6=9F=A5=E9=9D=A2=E6=9D=BF=E4=B8=8E=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将多个 v-if 条件渲染改为 v-show,提升组件切换性能 - 优化商标任务完成状态判断逻辑,确保准确显示采集完成图标- 调整任务统计数据显示条件,支持零数据展示- 更新 API 配置地址,切换至本地开发环境地址 - 降低 Spring Boot 线程池与数据库连接池配置,适应小规模并发- 禁用 devtools 热部署与 Swagger 接口文档,优化生产环境性能 - 配置 RestTemplate 使用 HttpClient 连接池,增强 HTTP 请求稳定性 - 改进静态资源拷贝脚本,确保 icon 与 image 文件夹正确复制 - 更新 electron-builder 配置,优化资源打包路径与应用图标 - 修改 HTTP 路由规则,明确区分客户端与管理端接口路径- 注册文件协议拦截器,解决生产环境下 icon/image 资源加载问题 - 调整商标 API 接口路径,指向 erp_client_sb服务 -重构 MarkController 控制器,专注 Token 管理功能 - 优化线程池参数,适配低并发业务场景- 强化商标筛查流程控制,完善任务取消与异常处理机制 - 新增方舟精选任务管理接口,实现 Excel 下载与数据解析功能 --- electron-vue-template/electron-builder.json | 18 +- .../renderer => }/public/icon/acquisition.png | Bin .../{src/renderer => }/public/icon/anjldk.png | Bin .../{src/renderer => }/public/icon/asin.png | Bin .../{src/renderer => }/public/icon/cancel.png | Bin .../{src/renderer => }/public/icon/done.png | Bin .../{src/renderer => }/public/icon/done1.png | Bin .../{src/renderer => }/public/icon/error.png | Bin .../{src/renderer => }/public/icon/icon1.png | Bin .../renderer => }/public/icon/inProgress.png | Bin .../public/icon/networkErrors.png | Bin .../{src/renderer => }/public/icon/plsb.png | Bin .../{src/renderer => }/public/icon/wait.png | Bin .../{src/renderer => }/public/icon/wlymx.png | Bin .../{src/renderer => }/public/image/img.png | Bin .../{src/renderer => }/public/image/img_1.png | Bin .../{src/renderer => }/public/image/user.png | Bin electron-vue-template/scripts/copy-assets.js | 20 +- electron-vue-template/src/main/main.ts | 38 ++- electron-vue-template/src/main/tray.ts | 6 +- .../src/renderer/api/http.ts | 9 +- .../src/renderer/api/mark.ts | 10 +- .../components/amazon/AmazonDashboard.vue | 14 +- .../components/amazon/TrademarkCheckPanel.vue | 40 +-- .../src/renderer/public/icon/amazon.png | Bin 1413 -> 0 bytes .../src/renderer/public/icon/icon.png | Bin 4666 -> 0 bytes .../src/renderer/public/icon/image.png | Bin 18018 -> 0 bytes .../src/renderer/public/icon/img.png | Bin 14928 -> 0 bytes .../src/renderer/public/icon/rakuten.png | Bin 804 -> 0 bytes .../src/renderer/public/icon/zebra.png | Bin 3294 -> 0 bytes .../src/renderer/public/image/111.png | Bin 41251 -> 0 bytes ...d_052605f0-4be3-44db-9691-35ee5ff6201g.jpg | Bin 57600 -> 0 bytes .../renderer/public/image/splash_screen.png | Bin 43799 -> 0 bytes .../src/renderer/public/splash.html | 33 --- electron-vue-template/vite.config.js | 2 +- .../erp/controller/TrademarkController.java | 125 ++++++++- .../erp/service/IFangzhouApiService.java | 48 ++++ .../service/impl/FangzhouApiServiceImpl.java | 198 ++++++++++++++ .../src/main/resources/application.yml | 4 +- ruoyi-admin/pom.xml | 6 + .../framework/config/BeanRestConfig.java | 24 +- .../web/controller/tool/MarkController.java | 258 +++++------------- .../src/main/resources/application-druid.yml | 18 +- .../src/main/resources/application.yml | 20 +- .../framework/config/ThreadPoolConfig.java | 13 +- 45 files changed, 593 insertions(+), 311 deletions(-) rename electron-vue-template/{src/renderer => }/public/icon/acquisition.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/anjldk.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/asin.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/cancel.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/done.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/done1.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/error.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/icon1.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/inProgress.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/networkErrors.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/plsb.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/wait.png (100%) rename electron-vue-template/{src/renderer => }/public/icon/wlymx.png (100%) rename electron-vue-template/{src/renderer => }/public/image/img.png (100%) rename electron-vue-template/{src/renderer => }/public/image/img_1.png (100%) rename electron-vue-template/{src/renderer => }/public/image/user.png (100%) delete mode 100644 electron-vue-template/src/renderer/public/icon/amazon.png delete mode 100644 electron-vue-template/src/renderer/public/icon/icon.png delete mode 100644 electron-vue-template/src/renderer/public/icon/image.png delete mode 100644 electron-vue-template/src/renderer/public/icon/img.png delete mode 100644 electron-vue-template/src/renderer/public/icon/rakuten.png delete mode 100644 electron-vue-template/src/renderer/public/icon/zebra.png delete mode 100644 electron-vue-template/src/renderer/public/image/111.png delete mode 100644 electron-vue-template/src/renderer/public/image/img_v3_02qd_052605f0-4be3-44db-9691-35ee5ff6201g.jpg delete mode 100644 electron-vue-template/src/renderer/public/image/splash_screen.png delete mode 100644 electron-vue-template/src/renderer/public/splash.html create mode 100644 erp_client_sb/src/main/java/com/tashow/erp/service/IFangzhouApiService.java create mode 100644 erp_client_sb/src/main/java/com/tashow/erp/service/impl/FangzhouApiServiceImpl.java diff --git a/electron-vue-template/electron-builder.json b/electron-vue-template/electron-builder.json index 5c02c99..7faa152 100644 --- a/electron-vue-template/electron-builder.json +++ b/electron-vue-template/electron-builder.json @@ -7,12 +7,11 @@ "compression": "maximum", "asarUnpack": [ "public/jre/**/*", - "public/icon/icon.png", - "public/icon/image.png", - "public/icon/img.png", + "public/icon/**/*", "public/image/**/*", "public/splash.html", - "public/config/**/*" + "public/config/**/*", + "renderer/**/*" ], "directories": { "output": "dist" @@ -26,7 +25,7 @@ }, "win": { "target": "dir", - "icon": "public/icon/icon.png" + "icon": "public/icon/icon1.png" }, "files": [ "package.json", @@ -40,19 +39,12 @@ "to": "renderer", "filter": ["**/*"] }, - { - "from": "src/main/static", - "to": "static", - "filter": ["**/*"] - }, { "from": "public", "to": "public", "filter": [ "jre/**/*", - "icon/icon.png", - "icon/image.png", - "icon/img.png", + "icon/**/*", "image/**/*", "splash.html", "config/**/*", diff --git a/electron-vue-template/src/renderer/public/icon/acquisition.png b/electron-vue-template/public/icon/acquisition.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/acquisition.png rename to electron-vue-template/public/icon/acquisition.png diff --git a/electron-vue-template/src/renderer/public/icon/anjldk.png b/electron-vue-template/public/icon/anjldk.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/anjldk.png rename to electron-vue-template/public/icon/anjldk.png diff --git a/electron-vue-template/src/renderer/public/icon/asin.png b/electron-vue-template/public/icon/asin.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/asin.png rename to electron-vue-template/public/icon/asin.png diff --git a/electron-vue-template/src/renderer/public/icon/cancel.png b/electron-vue-template/public/icon/cancel.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/cancel.png rename to electron-vue-template/public/icon/cancel.png diff --git a/electron-vue-template/src/renderer/public/icon/done.png b/electron-vue-template/public/icon/done.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/done.png rename to electron-vue-template/public/icon/done.png diff --git a/electron-vue-template/src/renderer/public/icon/done1.png b/electron-vue-template/public/icon/done1.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/done1.png rename to electron-vue-template/public/icon/done1.png diff --git a/electron-vue-template/src/renderer/public/icon/error.png b/electron-vue-template/public/icon/error.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/error.png rename to electron-vue-template/public/icon/error.png diff --git a/electron-vue-template/src/renderer/public/icon/icon1.png b/electron-vue-template/public/icon/icon1.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/icon1.png rename to electron-vue-template/public/icon/icon1.png diff --git a/electron-vue-template/src/renderer/public/icon/inProgress.png b/electron-vue-template/public/icon/inProgress.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/inProgress.png rename to electron-vue-template/public/icon/inProgress.png diff --git a/electron-vue-template/src/renderer/public/icon/networkErrors.png b/electron-vue-template/public/icon/networkErrors.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/networkErrors.png rename to electron-vue-template/public/icon/networkErrors.png diff --git a/electron-vue-template/src/renderer/public/icon/plsb.png b/electron-vue-template/public/icon/plsb.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/plsb.png rename to electron-vue-template/public/icon/plsb.png diff --git a/electron-vue-template/src/renderer/public/icon/wait.png b/electron-vue-template/public/icon/wait.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/wait.png rename to electron-vue-template/public/icon/wait.png diff --git a/electron-vue-template/src/renderer/public/icon/wlymx.png b/electron-vue-template/public/icon/wlymx.png similarity index 100% rename from electron-vue-template/src/renderer/public/icon/wlymx.png rename to electron-vue-template/public/icon/wlymx.png diff --git a/electron-vue-template/src/renderer/public/image/img.png b/electron-vue-template/public/image/img.png similarity index 100% rename from electron-vue-template/src/renderer/public/image/img.png rename to electron-vue-template/public/image/img.png diff --git a/electron-vue-template/src/renderer/public/image/img_1.png b/electron-vue-template/public/image/img_1.png similarity index 100% rename from electron-vue-template/src/renderer/public/image/img_1.png rename to electron-vue-template/public/image/img_1.png diff --git a/electron-vue-template/src/renderer/public/image/user.png b/electron-vue-template/public/image/user.png similarity index 100% rename from electron-vue-template/src/renderer/public/image/user.png rename to electron-vue-template/public/image/user.png diff --git a/electron-vue-template/scripts/copy-assets.js b/electron-vue-template/scripts/copy-assets.js index 7d8c898..bd5d848 100644 --- a/electron-vue-template/scripts/copy-assets.js +++ b/electron-vue-template/scripts/copy-assets.js @@ -2,7 +2,25 @@ const Path = require('path'); const FileSystem = require('fs-extra'); async function copyAssets() { - console.log('Static assets are now handled by Vite from src/renderer/public'); + console.log('Copying static assets from public directory...'); + + const publicDir = Path.join(__dirname, '..', 'public'); + const buildRendererDir = Path.join(__dirname, '..', 'build', 'renderer'); + + // 确保 build/renderer 下的 icon 和 image 目录存在且是最新的 + // 这样打包后 renderer/icon 和 renderer/image 会包含所有图标 + await FileSystem.copy( + Path.join(publicDir, 'icon'), + Path.join(buildRendererDir, 'icon'), + { overwrite: true } + ); + await FileSystem.copy( + Path.join(publicDir, 'image'), + Path.join(buildRendererDir, 'image'), + { overwrite: true } + ); + + console.log('Static assets copied to build/renderer successfully!'); } module.exports = copyAssets; \ No newline at end of file diff --git a/electron-vue-template/src/main/main.ts b/electron-vue-template/src/main/main.ts index 7580bc3..c0e49d9 100644 --- a/electron-vue-template/src/main/main.ts +++ b/electron-vue-template/src/main/main.ts @@ -1,6 +1,6 @@ -import {app, BrowserWindow, ipcMain, Menu, screen, dialog} from 'electron'; -import {existsSync, createWriteStream, promises as fs, mkdirSync, copyFileSync, readdirSync, writeFileSync} from 'fs'; -import {join, dirname, basename} from 'path'; +import {app, BrowserWindow, ipcMain, Menu, screen, dialog, protocol} from 'electron'; +import {existsSync, createWriteStream, promises as fs, mkdirSync, copyFileSync, readdirSync, writeFileSync, readFileSync} from 'fs'; +import {join, dirname, basename, extname} from 'path'; import {spawn, ChildProcess} from 'child_process'; import * as https from 'https'; import * as http from 'http'; @@ -74,7 +74,7 @@ function getJarFilePath(): string { } const getSplashPath = () => getResourcePath('../../public/splash.html', 'public/splash.html'); -const getIconPath = () => getResourcePath('../../public/icon/icon.png', 'public/icon/icon.png', '../renderer/icon/icon.png'); +const getIconPath = () => getResourcePath('../../public/icon/icon1.png', 'public/icon/icon1.png', '../renderer/icon/icon1.png'); const getLogbackConfigPath = () => getResourcePath('../../public/config/logback.xml', 'public/config/logback.xml'); function getDataDirectoryPath(): string { @@ -211,7 +211,7 @@ function startSpringBoot() { } } - startSpringBoot(); + // startSpringBoot(); function stopSpringBoot() { if (!springProcess) return; try { @@ -305,6 +305,28 @@ if (!gotTheLock) { } app.whenReady().then(() => { + // 注册文件协议拦截器,将 /icon/ 和 /image/ 请求重定向到 public 目录 + if (!isDev) { + protocol.interceptFileProtocol('file', (request, callback) => { + let url = request.url.substring(8); // 移除 'file:///' + + // 检查是否是 icon 或 image 资源请求 + if (url.includes('/icon/') || url.includes('/image/')) { + const match = url.match(/\/(icon|image)\/([^?#]+)/); + if (match) { + const [, type, filename] = match; + const publicPath = join(process.resourcesPath, 'app.asar.unpacked', 'public', type, filename); + if (existsSync(publicPath)) { + callback({ path: publicPath }); + return; + } + } + } + + callback({ path: url }); + }); + } + // 应用开机自启动配置 const config = loadConfig(); const shouldMinimize = config.launchMinimized || false; @@ -348,9 +370,9 @@ app.whenReady().then(() => { } } //666 - // setTimeout(() => { - // openAppIfNotOpened(); - // }, 100); + setTimeout(() => { + openAppIfNotOpened(); + }, 100); app.on('activate', () => { if (mainWindow && !mainWindow.isDestroyed()) { diff --git a/electron-vue-template/src/main/tray.ts b/electron-vue-template/src/main/tray.ts index effc853..cfd1ddc 100644 --- a/electron-vue-template/src/main/tray.ts +++ b/electron-vue-template/src/main/tray.ts @@ -7,11 +7,11 @@ let tray: Tray | null = null function getIconPath(): string { const isDev = process.env.NODE_ENV === 'development' if (isDev) { - return join(__dirname, '../../public/icon/icon.png') + return join(__dirname, '../../public/icon/icon1.png') } - const bundledPath = join(process.resourcesPath, 'app.asar.unpacked', 'public/icon/icon.png') + const bundledPath = join(process.resourcesPath, 'app.asar.unpacked', 'public/icon/icon1.png') if (existsSync(bundledPath)) return bundledPath - return join(__dirname, '../renderer/icon/icon.png') + return join(__dirname, '../renderer/icon/icon1.png') } export function createTray(mainWindow: BrowserWindow | null) { diff --git a/electron-vue-template/src/renderer/api/http.ts b/electron-vue-template/src/renderer/api/http.ts index 7ad0c1d..ea133c8 100644 --- a/electron-vue-template/src/renderer/api/http.ts +++ b/electron-vue-template/src/renderer/api/http.ts @@ -1,13 +1,14 @@ export type HttpMethod = 'GET' | 'POST' | 'DELETE'; export const CONFIG = { CLIENT_BASE: 'http://localhost:8081', - RUOYI_BASE: 'http://8.138.23.49:8085', - //RUOYI_BASE: 'http://192.168.1.89:8085', - SSE_URL: 'http://8.138.23.49:8085/monitor/account/events' + //RUOYI_BASE: 'http://8.138.23.49:8085', + RUOYI_BASE: 'http://192.168.1.89:8085', + SSE_URL: 'http://192.168.1.89:8085/monitor/account/events' } as const; function resolveBase(path: string): string { - if (path.startsWith('/monitor/') || path.startsWith('/system/') || path.startsWith('/tool/banma') || path.startsWith('/tool/genmai') || path.startsWith('/tool/mark')) { + // 路由到 ruoyi-admin (8085):仅系统管理和监控相关 + if (path.startsWith('/monitor/') || path.startsWith('/system/') || path.startsWith('/tool/banma') || path.startsWith('/tool/genmai')) { return CONFIG.RUOYI_BASE; } return CONFIG.CLIENT_BASE; diff --git a/electron-vue-template/src/renderer/api/mark.ts b/electron-vue-template/src/renderer/api/mark.ts index 2288175..97f5ab7 100644 --- a/electron-vue-template/src/renderer/api/mark.ts +++ b/electron-vue-template/src/renderer/api/mark.ts @@ -1,16 +1,16 @@ import { http } from './http' export const markApi = { - // 新建任务 + // 新建任务(调用 erp_client_sb) newTask(file: File) { const formData = new FormData() formData.append('file', file) - return http.upload<{ code: number, data: any, msg: string }>('/tool/mark/newTask', formData) + return http.upload<{ code: number, data: any, msg: string }>('/api/trademark/newTask', formData) }, - // 获取任务列表及筛选数据(返回完整行数据和表头) + // 获取任务列表及筛选数据(调用 erp_client_sb) getTask() { - return http.get<{ + return http.post<{ code: number, data: { original: any, @@ -18,7 +18,7 @@ export const markApi = { headers: string[] // 表头 }, msg: string - }>('/tool/mark/task') + }>('/api/trademark/task') }, // 品牌商标筛查 diff --git a/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue b/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue index 5d43909..8816957 100644 --- a/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue +++ b/electron-vue-template/src/renderer/components/amazon/AmazonDashboard.vue @@ -150,7 +150,7 @@ function handleExportData() {
- 采集完成 + 采集完成 筛查失败 已取消 采集中 @@ -340,15 +340,15 @@ function handleExportData() {
查询数量 - {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 100 ? trademarkPanelRef.taskProgress.product.total : '-' }} + {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 0 ? trademarkPanelRef.taskProgress.product.total : '-' }}
未注册/TM标 - {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 100 ? (trademarkPanelRef?.taskProgress?.product?.completed || 0) : '-' }} + {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 0 && (trademarkPanelRef?.taskProgress?.product?.current || 0) >= trademarkPanelRef.taskProgress.product.total ? (trademarkPanelRef?.taskProgress?.product?.completed || 0) : '-' }}
已过滤 - {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 100 ? ((trademarkPanelRef?.taskProgress?.product?.total || 0) - (trademarkPanelRef?.taskProgress?.product?.completed || 0)) : '-' }} + {{ (trademarkPanelRef?.taskProgress?.product?.total || 0) > 0 && (trademarkPanelRef?.taskProgress?.product?.current || 0) >= trademarkPanelRef.taskProgress.product.total ? ((trademarkPanelRef?.taskProgress?.product?.total || 0) - (trademarkPanelRef?.taskProgress?.product?.completed || 0)) : '-' }}
diff --git a/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue b/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue index a22c034..f78fd6c 100644 --- a/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue +++ b/electron-vue-template/src/renderer/components/amazon/TrademarkCheckPanel.vue @@ -332,7 +332,6 @@ async function startTrademarkQuery() { try { productResult = await pollTask() - if (!trademarkLoading.value) return if (!productResult || (productResult.code !== 200 && productResult.code !== 0)) { throw new Error('获取任务超时或失败,请重试') @@ -360,6 +359,7 @@ async function startTrademarkQuery() { if (filteredAsins.length === 0) { showMessage('第三方筛查结果为空', 'warning') + queryStatus.value = 'done' return } @@ -396,8 +396,6 @@ async function startTrademarkQuery() { // 品牌商标筛查 if (needBrandCheck) { - if (!trademarkLoading.value) return - // 如果没有执行产品筛查,需要先从Excel提取品牌列表和完整数据 if (!needProductCheck) { const extractResult = await markApi.extractBrands(trademarkFile.value) @@ -415,9 +413,7 @@ async function startTrademarkQuery() { trademarkHeaders.value = extractResult.data.headers || [] } - if (brandList.length === 0) { - showMessage('没有品牌需要筛查', 'warning') - } else { + if (brandList.length > 0) { const brandData = taskProgress.value.brand brandData.total = brandList.length brandData.current = 1 // 立即显示初始进度 @@ -439,8 +435,6 @@ async function startTrademarkQuery() { const brandResult = await markApi.brandCheck(brandList, brandTaskId.value) if (brandProgressTimer) clearInterval(brandProgressTimer) - if (!trademarkLoading.value) return - if (brandResult.code === 200 || brandResult.code === 0) { // 完成,显示100% brandData.total = brandResult.data.checked || brandResult.data.total || brandData.total @@ -489,18 +483,17 @@ async function startTrademarkQuery() { } } - if (trademarkLoading.value) { - queryStatus.value = 'done' - emit('updateData', trademarkData.value) - - let summaryMsg = '筛查完成' - if (needProductCheck) summaryMsg += `,产品:${taskProgress.value.product.completed}/${taskProgress.value.product.total}` - if (needBrandCheck && brandList.length > 0) summaryMsg += `,品牌:${taskProgress.value.brand.completed}/${taskProgress.value.brand.total}` - showMessage(summaryMsg, 'success') - - // 保存会话 - await saveSession() - } + // 只要流程正常完成,就设置为done状态(不再依赖trademarkLoading) + queryStatus.value = 'done' + emit('updateData', trademarkData.value) + + let summaryMsg = '筛查完成' + if (needProductCheck) summaryMsg += `,产品:${taskProgress.value.product.completed}/${taskProgress.value.product.total}` + if (needBrandCheck && brandList.length > 0) summaryMsg += `,品牌:${taskProgress.value.brand.completed}/${taskProgress.value.brand.total}` + showMessage(summaryMsg, 'success') + + // 保存会话 + await saveSession() } catch (error: any) { const hasProductData = taskProgress.value.product.total > 0 @@ -536,6 +529,13 @@ async function startTrademarkQuery() { clearInterval(brandProgressTimer) brandProgressTimer = null } + + // 兜底:如果有数据且状态还是进行中,强制设置为完成(最优先处理) + if (trademarkData.value.length > 0 && queryStatus.value === 'inProgress') { + queryStatus.value = 'done' + emit('updateData', trademarkData.value) + } + trademarkLoading.value = false currentStep.value = 0 totalSteps.value = 0 diff --git a/electron-vue-template/src/renderer/public/icon/amazon.png b/electron-vue-template/src/renderer/public/icon/amazon.png deleted file mode 100644 index b5100c243901c6d3731c19f2d0681f18994d5ed7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1413 zcmV;01$z34P)N5z{|?NYdF&3*tN?Z}VgKRzV}*^l>mG8?5U9iaX27*VC=s6e^9U)6Js}IpUB2! z7uaDW*^um-OnKU+DMMg~c#OPbDzJ54C_$DXyf9^tdW;Ujd4(IV8nQ!l2o`6XJmYH; z9YCO2&nbu70RnOd;WaXff>Kt{uwAULyB8VN8;Z;2)|I zEkwe-BQH0UDc~p4rgEe32K978!2OOmL<>2GTUfc^D!yy^E9oH|!r|DraKm+iDiDZ} z0&%BrERP+-jc7CYx|TbHv4g_vd*=N|_XJ#GU5Ft$&bvg}@$-MExs^MRU31MMa`nVLBzyYcwxR zCj{a=lOdisK?SNKNwYZHtSItyWrBQq@x{Dn(O+N(=)>=d^K!-jtA!Pa>p^4?fqWW2fgAT7j}PW?Ap{br9|xe$y1=(6ij4oueiA?k4M3l*Rce;MK9&tv6I;7<}ENCkp zJ{I8yg-*1Cih2ec&T-v6(m1X=!d8Wc^r&Nij=*!F41T#LwX9=MI@k6*YbrNTsbf4y z{tLFNOW^nOcz#{Z3;bAz>-r48?}MeL>=Ufnxu!mlH%{rIC3@*ZEPR+yoeH0+&!h5r zO9HVtbTH?UGb->^@~qn%p{PInJT0X@+05==CI2txucg_%_M9n>z*oJ8OH#g%j-uYv zG(%AsD)QQdyelCOnHf94^1|KHU2o+cMfHvf>CL}lG@&Dps$8(^kcVX?pfqncd(aFD zt&}|J#Jm+$$dIncISD7QODJ5;Ur(3w-^N|8B*=hd?3d0O;g&qAL-|P!DSUoXK2nrA z{=mcJX})E-=t1N?OL}ZvQ6v!tCMOkYBk$t;bWC1#9Pf#P4Se?^&p*X?n#WD^d^8g$ zKfttK>Fvo&SnrdjO88dIYb&CnlrjB1X-kgM-twI;VuDA7{KDLj7d=d#=b>b7{h9tG z!BeZ-{Mw2+|McdQ#wsR8thWKjQC4VCe&~yMSQ6!T+kWE7OdNda^tzz zPW#HdRMnuKzLkDV{;lU5fZ79ikjR3lHPaHlXt(4crJPAo!P6N*_JjmFt3K7Yahttq zxsiz;V_ngC7r2Xyg=NZxZl>!;(9)D3+R+C*Z>hubCImcduJq>EX=UVgg~pjt7P1%I( T2d@je00000NkvXXu0mjf6B46L diff --git a/electron-vue-template/src/renderer/public/icon/icon.png b/electron-vue-template/src/renderer/public/icon/icon.png deleted file mode 100644 index f94b10ce2817d46bbfaa37a1822fb4365a19ad29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4666 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 diff --git a/electron-vue-template/src/renderer/public/icon/image.png b/electron-vue-template/src/renderer/public/icon/image.png deleted file mode 100644 index 91794a40ce219634bb78b7e4ddd5630f44844edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18018 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 {kxSSb4bJ!DwmexL8jqsTWSRa7c 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 diff --git a/electron-vue-template/src/renderer/public/icon/img.png b/electron-vue-template/src/renderer/public/icon/img.png deleted file mode 100644 index 82c4bc40095a934047dfdcda3b81401984704b8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14928 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 wu9^9|R&*fEw7)ze zJ09ufK#^2J5z_+oY&AXU90UrF+ZsxogFt~&%d|frE##|MzVi11ou^zP{;^rn`UPQ< z3Pfr9U3t88*n}Sx5esyQ;S4;AVA#^7Nw$v|{iEOM@&$3_g?Of&wFmXJ7hQHmEQgDl zA8{RTm}Bo&BW!Sf?c_5$Pi z0R>V=&wcLlHG?%EA5tRPIz<1Y>3&37R^ zX_ou=OX%@5h+{43M-~#rllqZ``Jj{fk(Ke61|$4PViMm>EjGrF9_gN`eq^m!9py(; z<`zu}G}ezWVfxivyJJFrw7>{V_Jc;|M>k{qNUGg2d>Qvugom4gABEOPjK74hPtBzV i9301S9LI5-H^?*G4~u_X(doMY0000cK diff --git a/electron-vue-template/src/renderer/public/icon/zebra.png b/electron-vue-template/src/renderer/public/icon/zebra.png deleted file mode 100644 index 53f0cd44819582d128258ad37b010acc577bd98b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3294 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 diff --git a/electron-vue-template/src/renderer/public/image/111.png b/electron-vue-template/src/renderer/public/image/111.png deleted file mode 100644 index aabd8cd0e9a4fb5a1cf484036ca4039262cee5f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41251 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 E2XIstd;kCd diff --git a/electron-vue-template/src/renderer/public/splash.html b/electron-vue-template/src/renderer/public/splash.html deleted file mode 100644 index 92c6270..0000000 --- a/electron-vue-template/src/renderer/public/splash.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - 正在启动... - - - - - - - -
-
-
- - - - diff --git a/electron-vue-template/vite.config.js b/electron-vue-template/vite.config.js index a36dda3..810cd8c 100644 --- a/electron-vue-template/vite.config.js +++ b/electron-vue-template/vite.config.js @@ -6,7 +6,7 @@ const { defineConfig } = require('vite'); */ const config = defineConfig({ root: Path.join(__dirname, 'src', 'renderer'), - publicDir: Path.join(__dirname, 'src', 'renderer', 'public'), + publicDir: Path.join(__dirname, 'public'), server: { port: 8083, }, diff --git a/erp_client_sb/src/main/java/com/tashow/erp/controller/TrademarkController.java b/erp_client_sb/src/main/java/com/tashow/erp/controller/TrademarkController.java index 51761e6..6777fde 100644 --- a/erp_client_sb/src/main/java/com/tashow/erp/controller/TrademarkController.java +++ b/erp_client_sb/src/main/java/com/tashow/erp/controller/TrademarkController.java @@ -1,12 +1,18 @@ package com.tashow.erp.controller; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.tashow.erp.entity.TrademarkSessionEntity; import com.tashow.erp.repository.TrademarkSessionRepository; import com.tashow.erp.service.BrandTrademarkCacheService; +import com.tashow.erp.service.IFangzhouApiService; import com.tashow.erp.utils.ExcelParseUtil; import com.tashow.erp.utils.JsonData; import com.tashow.erp.utils.LoggerUtil; import com.tashow.erp.utils.TrademarkCheckUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -33,6 +39,9 @@ public class TrademarkController { @Autowired private TrademarkSessionRepository sessionRepository; + @Autowired + private IFangzhouApiService fangzhouApi; + // 进度追踪 private final Map progressMap = new java.util.concurrent.ConcurrentHashMap<>(); @@ -66,12 +75,11 @@ public class TrademarkController { .collect(Collectors.toList()); logger.info("全局缓存命中: {}/{},需查询: {}", cached.size(), list.size(), toQuery.size()); - // 3. 查询未命中的品牌 Map queried = new HashMap<>(); if (!toQuery.isEmpty()) { for (int i = 0; i < toQuery.size(); i++) { - // 检查任务是否被取消 + // 检查任务是否被取消值 if (taskId != null && cancelMap.getOrDefault(taskId, false)) { logger.info("任务 {} 已被取消,停止查询", taskId); break; @@ -405,4 +413,117 @@ public class TrademarkController { return JsonData.buildError("恢复失败: " + e.getMessage()); } } + + // ==================== 方舟精选任务管理接口 ==================== + + /** + * 获取方舟精选任务列表 + * 从第三方 API 下载 Excel 并解析过滤数据 + */ + @PostMapping("/task") + public JsonData getTask() { + try { + // 1. 获取 Token 并轮询等待下载链接 + String token = fangzhouApi.getToken(); + JsonNode dNode = fangzhouApi.pollTask(token, 6, 5000); + String downloadUrl = dNode.get("download_url").asText(); + + if (downloadUrl == null || downloadUrl.isEmpty()) { + return JsonData.buildError("下载链接生成超时"); + } + + // 2. 下载并解析 Excel + String tempFilePath = System.getProperty("java.io.tmpdir") + "/trademark_" + System.currentTimeMillis() + ".xlsx"; + HttpUtil.downloadFile(downloadUrl, FileUtil.file(tempFilePath)); + + List> filteredData = new ArrayList<>(); + List excelHeaders = new ArrayList<>(); + ExcelReader reader = null; + + try { + reader = ExcelUtil.getReader(FileUtil.file(tempFilePath)); + List> rows = reader.read(); + + if (rows.isEmpty()) { + throw new RuntimeException("Excel文件为空"); + } + + // 读取表头 + List headerRow = rows.get(0); + for (Object cell : headerRow) { + excelHeaders.add(cell != null ? cell.toString().trim() : ""); + } + + // 找到商标类型列的索引 + int trademarkTypeIndex = -1; + for (int i = 0; i < excelHeaders.size(); i++) { + if ("商标类型".equals(excelHeaders.get(i))) { + trademarkTypeIndex = i; + break; + } + } + + if (trademarkTypeIndex < 0) { + throw new RuntimeException("未找到'商标类型'列"); + } + + // 过滤TM和未注册数据 + for (int i = 1; i < rows.size(); i++) { + List row = rows.get(i); + if (row.size() > trademarkTypeIndex) { + String trademarkType = row.get(trademarkTypeIndex).toString().trim(); + if ("TM".equals(trademarkType) || "未注册".equals(trademarkType)) { + Map item = new HashMap<>(); + for (int j = 0; j < excelHeaders.size() && j < row.size(); j++) { + item.put(excelHeaders.get(j), row.get(j)); + } + filteredData.add(item); + } + } + } + } finally { + if (reader != null) { + reader.close(); + } + FileUtil.del(tempFilePath); + } + + // 6. 返回结果 + Map combinedResult = new HashMap<>(); + combinedResult.put("original", dNode); + combinedResult.put("filtered", filteredData); + combinedResult.put("headers", excelHeaders); + + logger.info("任务获取成功,过滤出 {} 条数据", filteredData.size()); + return JsonData.buildSuccess(combinedResult); + + } catch (Exception e) { + logger.error("获取任务失败", e); + return JsonData.buildError("获取任务失败: " + e.getMessage()); + } + } + + /** + * 创建新任务 + * 上传文件到方舟精选 + */ + @PostMapping("/newTask") + public JsonData newTask(@RequestParam("file") MultipartFile file) { + try { + // 1. 获取 Token 并上传文件 + String token = fangzhouApi.getToken(); + JsonNode jsonNode = fangzhouApi.uploadFile(file, token); + + // 2. 返回结果 + if (jsonNode.get("S").asInt() == 1) { + logger.info("任务创建成功: {}", file.getOriginalFilename()); + return JsonData.buildSuccess(jsonNode.toString()); + } + + return JsonData.buildError(jsonNode.get("M").asText()); + } catch (Exception e) { + logger.error("创建任务失败", e); + return JsonData.buildError("创建任务失败: " + e.getMessage()); + } + } } diff --git a/erp_client_sb/src/main/java/com/tashow/erp/service/IFangzhouApiService.java b/erp_client_sb/src/main/java/com/tashow/erp/service/IFangzhouApiService.java new file mode 100644 index 0000000..248369f --- /dev/null +++ b/erp_client_sb/src/main/java/com/tashow/erp/service/IFangzhouApiService.java @@ -0,0 +1,48 @@ +package com.tashow.erp.service; + +import com.fasterxml.jackson.databind.JsonNode; +import org.springframework.web.multipart.MultipartFile; + +/** + * 方舟精选 API 服务接口 + */ +public interface IFangzhouApiService { + + /** + * 从服务器获取 Token + */ + String getToken(); + + /** + * 刷新 Token + */ + String refreshToken(); + + /** + * 调用方舟精选 API(表单提交,自动处理 Token 过期) + * @param command 命令 + * @param data 数据 + * @param token Token + * @return 响应结果 + */ + JsonNode callApi(String command, String data, String token); + + /** + * 上传文件到方舟精选(自动处理 Token 过期) + * @param file 文件 + * @param token Token + * @return 响应结果 + */ + JsonNode uploadFile(MultipartFile file, String token); + + /** + * 轮询获取任务(等待下载链接生成) + * @param token Token + * @param maxRetries 最大重试次数 + * @param intervalMs 重试间隔(毫秒) + * @return 任务节点 + * @throws InterruptedException 中断异常 + */ + JsonNode pollTask(String token, int maxRetries, long intervalMs) throws InterruptedException; +} + diff --git a/erp_client_sb/src/main/java/com/tashow/erp/service/impl/FangzhouApiServiceImpl.java b/erp_client_sb/src/main/java/com/tashow/erp/service/impl/FangzhouApiServiceImpl.java new file mode 100644 index 0000000..0bfebaa --- /dev/null +++ b/erp_client_sb/src/main/java/com/tashow/erp/service/impl/FangzhouApiServiceImpl.java @@ -0,0 +1,198 @@ +package com.tashow.erp.service.impl; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.tashow.erp.service.IFangzhouApiService; +import com.tashow.erp.utils.ApiForwarder; +import com.tashow.erp.utils.LoggerUtil; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.Map; + +/** + * 方舟精选 API 服务实现 + */ +@Service +public class FangzhouApiServiceImpl implements IFangzhouApiService { + private static final Logger logger = LoggerUtil.getLogger(FangzhouApiServiceImpl.class); + private static final String API_SECRET = "e10adc3949ba59abbe56e057f20f883e"; + private static final String FANGZHOU_API_URL = "https://api.fangzhoujingxuan.com/Task"; + private static final int TOKEN_EXPIRED_CODE = -1006; + + @Autowired + private RestTemplate restTemplate; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private ApiForwarder apiForwarder; + + @Override + public String getToken() { + try { + logger.info("从服务器获取 Token"); + ResponseEntity response = apiForwarder.get("/tool/mark/token", null); + + @SuppressWarnings("unchecked") + Map body = (Map) response.getBody(); + + if (body != null && (Integer) body.get("code") == 200) { + return body.get("data").toString(); + } + throw new RuntimeException("获取 Token 失败"); + } catch (Exception e) { + logger.error("获取 Token 失败", e); + throw new RuntimeException("获取 Token 失败: " + e.getMessage()); + } + } + + @Override + public String refreshToken() { + try { + logger.info("刷新 Token"); + ResponseEntity response = apiForwarder.post("/tool/mark/refreshToken", null, null); + + @SuppressWarnings("unchecked") + Map body = (Map) response.getBody(); + + if (body != null && (Integer) body.get("code") == 200) { + return body.get("data").toString(); + } + throw new RuntimeException("刷新 Token 失败"); + } catch (Exception e) { + logger.error("刷新 Token 失败", e); + throw new RuntimeException("刷新 Token 失败: " + e.getMessage()); + } + } + + @Override + public JsonNode callApi(String command, String data, String token) { + try { + long ts = System.currentTimeMillis(); + + MultiValueMap formData = new LinkedMultiValueMap<>(); + formData.add("c", command); + formData.add("d", data); + formData.add("t", token); + formData.add("s", md5(ts + data + API_SECRET)); + formData.add("ts", String.valueOf(ts)); + formData.add("website", "1"); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + HttpEntity> requestEntity = new HttpEntity<>(formData, headers); + + String result = restTemplate.postForObject(FANGZHOU_API_URL, requestEntity, String.class); + JsonNode json = objectMapper.readTree(result); + + // 处理 Token 过期,自动刷新重试 + if (json.get("S").asInt() == TOKEN_EXPIRED_CODE) { + logger.info("Token 过期,刷新后重试"); + String newToken = refreshToken(); + formData.set("t", newToken); + formData.set("s", md5(ts + data + API_SECRET)); + requestEntity = new HttpEntity<>(formData, headers); + result = restTemplate.postForObject(FANGZHOU_API_URL, requestEntity, String.class); + json = objectMapper.readTree(result); + } + + return json; + } catch (Exception e) { + logger.error("调用方舟精选 API 失败", e); + throw new RuntimeException("调用 API 失败: " + e.getMessage()); + } + } + + @Override + public JsonNode uploadFile(MultipartFile file, String token) { + try { + String data = String.format("{\"name\":\"%s\",\"type\":1}", file.getOriginalFilename()); + long ts = System.currentTimeMillis(); + + MultiValueMap formData = new LinkedMultiValueMap<>(); + formData.add("c", "Create"); + formData.add("t", token); + formData.add("ts", ts); + formData.add("d", data); + formData.add("s", md5(ts + data + API_SECRET)); + formData.add("website", "1"); + formData.add("files", file.getResource()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.MULTIPART_FORM_DATA); + HttpEntity> requestEntity = new HttpEntity<>(formData, headers); + + String result = restTemplate.postForObject(FANGZHOU_API_URL, requestEntity, String.class); + JsonNode json = objectMapper.readTree(result); + + // 处理 Token 过期 + if (json.get("S").asInt() == TOKEN_EXPIRED_CODE) { + logger.info("Token 过期,刷新后重试"); + String newToken = refreshToken(); + formData.set("t", newToken); + formData.set("s", md5(ts + data + API_SECRET)); + requestEntity = new HttpEntity<>(formData, headers); + result = restTemplate.postForObject(FANGZHOU_API_URL, requestEntity, String.class); + json = objectMapper.readTree(result); + } + + return json; + } catch (Exception e) { + logger.error("上传文件失败", e); + throw new RuntimeException("上传文件失败: " + e.getMessage()); + } + } + + @Override + public JsonNode pollTask(String token, int maxRetries, long intervalMs) throws InterruptedException { + String data = "{\"name\":\"\",\"page_size\":20,\"current_page\":1}"; + + for (int i = 0; i < maxRetries; i++) { + JsonNode json = callApi("TaskPageList", data, token); + JsonNode dNode = json.get("D").get("items").get(0); + String downloadUrl = dNode.get("download_url").asText(); + + if (downloadUrl != null && !downloadUrl.isEmpty()) { + return dNode; + } + + if (i < maxRetries - 1) { + logger.info("下载链接未生成,等待 {}ms 后重试 ({}/{})", intervalMs, i + 1, maxRetries); + Thread.sleep(intervalMs); + } + } + + throw new RuntimeException("等待下载链接超时"); + } + + /** + * MD5 加密 + */ + private String md5(String input) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] digest = md.digest(input.getBytes(StandardCharsets.UTF_8)); + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } catch (Exception e) { + throw new RuntimeException("MD5加密失败", e); + } + } +} + diff --git a/erp_client_sb/src/main/resources/application.yml b/erp_client_sb/src/main/resources/application.yml index 9360247..e5a1566 100644 --- a/erp_client_sb/src/main/resources/application.yml +++ b/erp_client_sb/src/main/resources/application.yml @@ -47,8 +47,8 @@ server: api: server: # 主服务器API配置 - base-url: "http://8.138.23.49:8085" - #base-url: "http://192.168.1.89:8085" + #base-url: "http://8.138.23.49:8085" + base-url: "http://192.168.1.89:8085" paths: monitor: "/monitor/client/api" login: "/monitor/account/login" diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 055eb63..d2bdc9f 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -113,6 +113,12 @@ compile + + org.apache.httpcomponents + httpclient + 4.5.14 + + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/framework/config/BeanRestConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/BeanRestConfig.java index 7bd04e9..b413a24 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/framework/config/BeanRestConfig.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/framework/config/BeanRestConfig.java @@ -1,11 +1,15 @@ package com.ruoyi.framework.config; +import org.apache.http.client.HttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; /** - * 程序注解配置 + * RestTemplate 配置 + * 添加连接池和超时设置,防止连接泄漏 * * @author ruoyi */ @@ -13,10 +17,24 @@ import org.springframework.web.client.RestTemplate; public class BeanRestConfig { /** - * 创建RestTemplate Bean + * 创建 RestTemplate Bean(带连接池) + * 适用于小规模并发场景(10人以内) */ @Bean public RestTemplate restTemplate() { - return new RestTemplate(); + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); + factory.setConnectTimeout(10000); // 连接超时 10秒 + factory.setReadTimeout(30000); // 读取超时 30秒 + factory.setConnectionRequestTimeout(5000); // 从连接池获取连接超时 5秒 + + // 连接池配置(降低资源占用) + HttpClient httpClient = HttpClientBuilder.create() + .setMaxConnTotal(20) // 最大连接数 20(降低内存) + .setMaxConnPerRoute(10) // 每个路由最大 10 连接 + .build(); + + factory.setHttpClient(httpClient); + + return new RestTemplate(factory); } } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MarkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MarkController.java index c1f1841..ec9422f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MarkController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/MarkController.java @@ -1,217 +1,107 @@ package com.ruoyi.web.controller.tool; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.system.service.IMarkService; -import cn.hutool.core.io.FileUtil; -import cn.hutool.http.HttpUtil; -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.multipart.MultipartFile; -import java.util.*; + +import java.util.Map; + +/** + * 方舟商标 Token 管理控制器 + * 职责:仅负责 Token 的获取、刷新和管理 + * 重型任务(Excel 下载、解析、商标检查)已转移到 erp_client_sb + */ @RequestMapping("/tool/mark") @RestController @Anonymous public class MarkController { - private static final String API_SECRET = "e10adc3949ba59abbe56e057f20f883e"; - private static final String ERP_CLIENT_BASE_URL = "http://127.0.0.1:8081"; - private final RestTemplate restTemplate = new RestTemplate(); - private final ObjectMapper objectMapper = new ObjectMapper(); - @Autowired - private RedisCache redisCache; + @Autowired private IMarkService markService; + + @Autowired + private RedisCache redisCache; + /** - * 获取任务列表 + * 获取 Token + * 如果 Redis 中不存在 Token,自动注册新账号 + * + * @return Token 字符串 */ - @GetMapping("/task") - public AjaxResult Task() { + @GetMapping("/token") + public AjaxResult getToken() { try { + // 先尝试从 Redis 获取现有 Token String token = redisCache.getCacheMapValue(CacheConstants.MARK_ACCOUNT_KEY, "token"); - String d = "{\"name\":\"\",\"page_size\":20,\"current_page\":1}"; - long ts = System.currentTimeMillis(); - MultiValueMap formData = new LinkedMultiValueMap<>(); - formData.add("c", "TaskPageList"); - formData.add("d", d); - formData.add("t", token); - formData.add("s", markService.md5(ts + d + API_SECRET)); - formData.add("ts", String.valueOf(ts)); - formData.add("website", "1"); - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - HttpEntity> requestEntity = new HttpEntity<>(formData, headers); - String result = restTemplate.postForObject("https://api.fangzhoujingxuan.com/Task", requestEntity, String.class); - JsonNode json = objectMapper.readTree(result); - if(json.get("S").asInt()==-1006){ - token= markService.login(); - formData.add("t", token); - requestEntity = new HttpEntity<>(formData, headers); - result = restTemplate.postForObject("https://api.fangzhoujingxuan.com/Task", requestEntity, String.class); - json= objectMapper.readTree(result); + + if (token != null && !token.isEmpty()) { + return AjaxResult.success("获取成功", token); } - JsonNode dNode = json.get("D").get("items").get(0); - // 获取下载链接并处理Excel数据 - String downloadUrl = dNode.get("download_url").asText(); - for (int i = 0; i < 6 && downloadUrl.isEmpty(); i++) { - Thread.sleep(5000); - long reTs = System.currentTimeMillis(); - MultiValueMap reFormData = new LinkedMultiValueMap<>(); - reFormData.add("c", "TaskPageList"); - reFormData.add("d", d); - reFormData.add("t", token); - reFormData.add("s", markService.md5(reTs + d + API_SECRET)); - reFormData.add("ts", String.valueOf(reTs)); - reFormData.add("website", "1"); - HttpEntity> reRequestEntity = new HttpEntity<>(reFormData, headers); - String reResult = restTemplate.postForObject("https://api.fangzhoujingxuan.com/Task", reRequestEntity, String.class); - JsonNode reJson = objectMapper.readTree(reResult); - dNode = reJson.get("D").get("items").get(0); - downloadUrl = reJson.get("D").get("items").get(0).get("download_url").asText(); - } - String tempFilePath = System.getProperty("java.io.tmpdir") + "/trademark_" + System.currentTimeMillis() + ".xlsx"; - HttpUtil.downloadFile(downloadUrl, FileUtil.file(tempFilePath)); - List> filteredData = new ArrayList<>(); - List excelHeaders = new ArrayList<>(); - ExcelReader reader = null; - try { - reader = ExcelUtil.getReader(FileUtil.file(tempFilePath)); - List> rows = reader.read(); - - if (rows.isEmpty()) { - throw new RuntimeException("Excel文件为空"); - } - - // 读取表头 - List headerRow = rows.get(0); - for (Object cell : headerRow) { - excelHeaders.add(cell != null ? cell.toString().trim() : ""); - } - - // 找到商标类型列的索引 - int trademarkTypeIndex = -1; - for (int i = 0; i < excelHeaders.size(); i++) { - if ("商标类型".equals(excelHeaders.get(i))) { - trademarkTypeIndex = i; - break; - } - } - - if (trademarkTypeIndex < 0) { - throw new RuntimeException("未找到'商标类型'列"); - } - - // 过滤TM和未注册数据,保留所有列 - for (int i = 1; i < rows.size(); i++) { - List row = rows.get(i); - if (row.size() > trademarkTypeIndex) { - String trademarkType = row.get(trademarkTypeIndex).toString().trim(); - if ("TM".equals(trademarkType) || "未注册".equals(trademarkType)) { - Map item = new HashMap<>(); - // 保存所有列的数据 - for (int j = 0; j < excelHeaders.size() && j < row.size(); j++) { - item.put(excelHeaders.get(j), row.get(j)); - } - filteredData.add(item); - } - } - } - } finally { - if (reader != null) { - reader.close(); - } - FileUtil.del(tempFilePath); - } - Map combinedResult = new HashMap<>(); - combinedResult.put("original", dNode); - combinedResult.put("filtered", filteredData); - combinedResult.put("headers", excelHeaders); - - return AjaxResult.success(combinedResult); + + // Token 不存在,自动注册新账号 + token = markService.reg(); + return AjaxResult.success("注册成功", token); + } catch (Exception e) { - throw new RuntimeException(e); - } - } - - // 新建任务 - @PostMapping("newTask") - public AjaxResult newTask(@RequestParam("file") MultipartFile file) { - try { - String token = redisCache.getCacheMapValue(CacheConstants.MARK_ACCOUNT_KEY, "token"); - if (token == null) token = markService.reg(); - String data =String.format("{\"name\":\"%s\",\"type\":1}", file.getOriginalFilename()) ; - MultiValueMap formData = new LinkedMultiValueMap<>(); - formData.add("c", "Create"); - formData.add("t", token); - formData.add("ts",System.currentTimeMillis()); - formData.add("d", data); - formData.add("s", markService.md5(System.currentTimeMillis() + data + API_SECRET)); - formData.add("website", "1"); - formData.add("files", file.getResource()); - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - HttpEntity> requestEntity = new HttpEntity<>(formData, headers); - String result = restTemplate.postForObject("https://api.fangzhoujingxuan.com/Task", requestEntity, String.class); - JsonNode jsonNode = objectMapper.readTree(result); - if(jsonNode.get("S").asInt()==-1006){ - token= markService.login(); - formData.add("t", token); - requestEntity = new HttpEntity<>(formData, headers); - result = restTemplate.postForObject("https://api.fangzhoujingxuan.com/Task", requestEntity, String.class); - jsonNode= objectMapper.readTree(result); - } - return jsonNode.get("S").asInt()==1?AjaxResult.success(result): AjaxResult.error( jsonNode.get("S").asText()); - } catch (Exception e) { - throw new RuntimeException(e); + return AjaxResult.error("获取 Token 失败: " + e.getMessage()); } } /** - * 品牌商标筛查(调用 erp_client_sb 服务) - * @param brands 品牌列表(JSON数组) - * @return 筛查结果 + * 刷新 Token + * 使用已保存的账号密码重新登录,更新 Token + * + * @return 新的 Token */ - @PostMapping("brandCheck") - public AjaxResult brandCheck(@RequestBody List brands) { + @PostMapping("/refreshToken") + public AjaxResult refreshToken() { try { - if (brands == null || brands.isEmpty()) { - return AjaxResult.error("品牌列表不能为空"); + // 检查是否有账号信息 + Map accountData = redisCache.getCacheMap(CacheConstants.MARK_ACCOUNT_KEY); + + if (accountData == null || accountData.isEmpty()) { + // 没有账号信息,需要先注册 + String token = markService.reg(); + return AjaxResult.success("账号不存在,已自动注册", token); } - - // 调用 erp_client_sb 的商标检查接口 - String url = ERP_CLIENT_BASE_URL + "/api/trademark/brandCheck"; - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); + // 使用现有账号重新登录 + String token = markService.login(); + return AjaxResult.success("Token 刷新成功", token); - HttpEntity> requestEntity = new HttpEntity<>(brands, headers); - - // 调用远程服务 - String result = restTemplate.postForObject(url, requestEntity, String.class); - JsonNode jsonNode = objectMapper.readTree(result); - - // 判断返回状态 (erp_client_sb 的 JsonData: code=0 成功, code=-1 失败) - if (jsonNode.get("code").asInt() == 0) { - // 转换数据格式以适配前端 - JsonNode data = jsonNode.get("data"); - return AjaxResult.success(objectMapper.convertValue(data, Map.class)); - } else { - String msg = jsonNode.has("msg") ? jsonNode.get("msg").asText() : "品牌筛查失败"; - return AjaxResult.error(msg); - } } catch (Exception e) { - e.printStackTrace(); - return AjaxResult.error("品牌筛查失败: " + e.getMessage()); + return AjaxResult.error("刷新 Token 失败: " + e.getMessage()); + } + } + + /** + * 获取账号信息(用于调试) + * + * @return 账号信息(不含密码) + */ + @GetMapping("/accountInfo") + public AjaxResult getAccountInfo() { + try { + Map accountData = redisCache.getCacheMap(CacheConstants.MARK_ACCOUNT_KEY); + + if (accountData == null || accountData.isEmpty()) { + return AjaxResult.error("未找到账号信息"); + } + + // 不返回密码,仅返回账号和 Token 状态 + String account = accountData.get("account"); + String token = accountData.get("token"); + boolean hasToken = token != null && !token.isEmpty(); + + return AjaxResult.success() + .put("account", account) + .put("hasToken", hasToken); + + } catch (Exception e) { + return AjaxResult.error("获取账号信息失败: " + e.getMessage()); } } } diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 52f7557..b60a1da 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -20,17 +20,17 @@ spring: username: password: # 初始连接数(增加预热连接) - initialSize: 8 + initialSize: 2 # 最小连接池数量 - minIdle: 10 + minIdle: 2 # 最大连接池数量 - maxActive: 25 - # 配置获取连接等待超时的时间(5秒) - maxWait: 5000 - # 配置连接超时时间(5秒) - connectTimeout: 5000 - # 配置网络超时时间(5秒) - socketTimeout: 5000 + maxActive: 10 + # 配置获取连接等待超时的时间(10秒) + maxWait: 10000 + # 配置连接超时时间(10秒) + connectTimeout: 10000 + # 配置网络超时时间(10秒) + socketTimeout: 10000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒(30秒检测一次) timeBetweenEvictionRunsMillis: 30000 # 配置一个连接在池中最小生存的时间,单位是毫秒 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 79aec47..11367d6 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -35,17 +35,17 @@ server: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 - accept-count: 1000 + accept-count: 50 threads: # tomcat最大线程数,默认为200 - max: 800 + max: 30 # Tomcat启动初始化的线程数,默认值10 - min-spare: 100 + min-spare: 5 # 日志配置 logging: level: - com.ruoyi: debug + com.ruoyi: info org.springframework: warn # 用户配置 @@ -82,7 +82,7 @@ spring: devtools: restart: # 热部署开关 - enabled: true + enabled: false # redis 配置 redis: # 地址 @@ -99,13 +99,13 @@ spring: lettuce: pool: # 连接池中的最小空闲连接(保持预热连接,避免临时建连) - min-idle: 5 + min-idle: 1 # 连接池中的最大空闲连接 - max-idle: 20 + max-idle: 5 # 连接池的最大数据库连接数 - max-active: 50 + max-active: 10 # 连接池最大阻塞等待时间 - max-wait: 10s + max-wait: 15s # 关闭超时时间 shutdown-timeout: 100ms # token配置 @@ -135,7 +135,7 @@ pagehelper: # Swagger配置 swagger: # 是否开启swagger - enabled: true + enabled: false # 请求前缀 pathMapping: /dev-api diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java index 7840141..39f2ebc 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java @@ -11,20 +11,21 @@ import java.util.concurrent.ThreadPoolExecutor; /** * 线程池配置 + * 优化为小规模并发场景(10人以内使用) * * @author ruoyi **/ @Configuration public class ThreadPoolConfig { - // 核心线程池大小 - private int corePoolSize = 50; + // 核心线程池大小(优化:50 → 10) + private int corePoolSize = 10; - // 最大可创建的线程数 - private int maxPoolSize = 200; + // 最大可创建的线程数(优化:200 → 20) + private int maxPoolSize = 20; - // 队列最大长度 - private int queueCapacity = 1000; + // 队列最大长度(优化:1000 → 100) + private int queueCapacity = 100; // 线程池维护线程所允许的空闲时间 private int keepAliveSeconds = 300;