diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d2326b5..63c653b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,354 +5,32 @@
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -369,6 +47,9 @@
+
+
+
{
"customColor": "",
"associatedIndex": 0
@@ -378,46 +59,61 @@
- {
+ "keyToString": {
+ "Maven.erp_client_sb [clean].executor": "Run",
+ "Maven.erp_client_sb [install].executor": "Run",
+ "Maven.erp_client_sb [verify].executor": "Run",
+ "Maven.ruoyi [clean].executor": "Run",
+ "Maven.ruoyi [install].executor": "Run",
+ "ModuleVcsDetector.initialDetectionPerformed": "true",
+ "RequestMappingsPanelOrder0": "0",
+ "RequestMappingsPanelOrder1": "1",
+ "RequestMappingsPanelWidth0": "75",
+ "RequestMappingsPanelWidth1": "75",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "Spring Boot.ErpClientSbApplication.executor": "Debug",
+ "Spring Boot.RuoYiApplication.executor": "Debug",
+ "Spring Boot.未命名.executor": "Debug",
+ "git-widget-placeholder": "master",
+ "last_opened_file_path": "C:/Users/ZiJIe/Desktop/wox/RuoYi-Vue/electron-vue-template/public",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "npm.build.executor": "Run",
+ "npm.build:win.executor": "Run",
+ "npm.run.executor": "Run",
+ "settings.editor.selected.configurable": "com.intellij.platform.ide.impl.presentationAssistant.PresentationAssistantConfigurable",
+ "ts.external.directory.path": "C:\\Users\\ZiJIe\\Desktop\\wox\\RuoYi-Vue\\electron-vue-template\\node_modules\\typescript\\lib",
+ "vue.rearranger.settings.migration": "true"
}
-}]]>
+}
+
+
+
+
+
-
+
@@ -429,24 +125,67 @@
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
@@ -465,6 +204,18 @@
1758509443816
+
+
+
+
+
+
+
+
+
+
+
+
@@ -586,7 +337,111 @@
1758683139068
-
+
+
+ 1758683285305
+
+
+
+ 1758683285305
+
+
+
+ 1758683484212
+
+
+
+ 1758683484212
+
+
+
+ 1758787441900
+
+
+
+ 1758787441900
+
+
+
+ 1758787531138
+
+
+
+ 1758787531138
+
+
+
+ 1758787581342
+
+
+
+ 1758787581342
+
+
+
+ 1758787954763
+
+
+
+ 1758787954763
+
+
+
+ 1758788061529
+
+
+
+ 1758788061529
+
+
+
+ 1758795230077
+
+
+
+ 1758795230077
+
+
+
+ 1758875248722
+
+
+
+ 1758875248722
+
+
+
+ 1758877545022
+
+
+
+ 1758877545022
+
+
+
+ 1758953146637
+
+
+
+ 1758953146637
+
+
+
+ 1758966134103
+
+
+
+ 1758966134103
+
+
+
+ 1759129266815
+
+
+
+ 1759129266815
+
+
@@ -607,15 +462,4 @@
-
-
-
-
- file://$PROJECT_DIR$/electron-vue-template/src/renderer/components/common/AccountManager.vue
- 34
-
-
-
-
-
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BanmaOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BanmaOrderController.java
deleted file mode 100644
index d10be12..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BanmaOrderController.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.ruoyi.web.controller.tool;
-import java.util.List;
-import java.util.Map;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.system.domain.BanmaAccount;
-import com.ruoyi.system.service.IBanmaAccountService;
-
-/**
- * 斑马账号管理(数据库版,极简接口):
- * - 仅负责账号与 Token 的存取
- * - 不参与登录/刷新与数据采集,客户端自行处理
- */
-@RestController
-@RequestMapping("/tool/banma")
-@Anonymous
-public class BanmaOrderController extends BaseController {
-
- @Autowired
- private IBanmaAccountService accountService;
-
- /**
- * 查询账号列表(
- */
- @GetMapping("/accounts")
- public R> listAccounts() {
- List list = accountService.listSimple();
- return R.ok(list);
- }
-
- /**
- * 新增或编辑账号(含设为默认)
- */
- @PostMapping("/accounts")
- public R> saveAccount(@RequestBody BanmaAccount body) {
- // 先验证Token
- String token = ((com.ruoyi.system.service.impl.BanmaAccountServiceImpl) accountService)
- .validateAndGetToken(body.getUsername(), body.getPassword());
- if (token == null) {
- return R.fail("账号或密码错误,无法获取Token");
- }
- // 验证成功后保存账号
- Long id = accountService.saveOrUpdate(body);
- // 刷新Token到数据库
- accountService.refreshToken(id);
- return R.ok(Map.of("id", id));
- }
-
- /**
- * 删除账号
- */
- @DeleteMapping("/accounts/{id}")
- public R> remove(@PathVariable Long id) {
- accountService.remove(id);
- return R.ok();
- }
-
- /** 手动刷新单个账号 Token */
- @PostMapping("/accounts/{id}/refresh-token")
- public R> refreshOne(@PathVariable Long id) {
- accountService.refreshToken(id);
- return R.ok();
- }
-
- /** 手动刷新全部启用账号 Token */
- @PostMapping("/refresh-all")
- public R> refreshAll() {
- accountService.refreshAllTokens();
- return R.ok();
- }
-
-}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/FigureTransmissionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/FigureTransmissionController.java
deleted file mode 100644
index 1eb2ca4..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/FigureTransmissionController.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.web.util.Alibaba1688CookieUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.*;
-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 javax.annotation.PreDestroy;
-import javax.xml.bind.DatatypeConverter;
-import java.security.MessageDigest;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.stream.Collectors;
-
-/**
- * 1688图像搜索API
- */
-@RestController
-@RequestMapping("/figre")
-@Anonymous
-public class FigureTransmissionController extends BaseController {
- private static final Logger log = LoggerFactory.getLogger(FigureTransmissionController.class);
- private static final String APP_KEY = "12574478";
- private static final int MAX_BATCH_SIZE = 30;
- private static final int REQUEST_TIMEOUT = 30;
- @Autowired
- private RestTemplate restTemplate;
- private final ExecutorService executorService = Executors.newFixedThreadPool(10);
-
- @PreDestroy
- public void shutdown() {
- executorService.shutdown();
- }
-
- public static class BatchImageUrlRequest {
- private List imageUrls;
-
- public List getImageUrls() {
- return imageUrls;
- }
-
- public void setImageUrls(List imageUrls) {
- this.imageUrls = imageUrls;
- }
- }
-
-
- @PostMapping("/batchUpload1688Images")
- public AjaxResult batchUpload1688Images(@RequestBody BatchImageUrlRequest request) {
- List batchUrls = request.getImageUrls().stream().limit(MAX_BATCH_SIZE).collect(Collectors.toList());
- List>> futures = batchUrls.stream().map(imageUrl -> CompletableFuture.supplyAsync(() -> {
- Map result = new HashMap<>();
- result.put("imageUrl", imageUrl);
- try {
- ResponseEntity response = restTemplate.getForEntity(imageUrl, byte[].class);
- String base64Image = Base64.getEncoder().encodeToString(response.getBody());
- AjaxResult uploadResult = uploadImageBase64(base64Image);
- String responseBody = (String) uploadResult.get("data");
- ObjectMapper objectMapper = new ObjectMapper();
- Map apiResponse = objectMapper.readValue(responseBody, Map.class);
- Map data = (Map) apiResponse.get("data");
- String imageId = (String) data.get("imageId");
- result.put("success", true);
- result.put("imageId", imageId);
- result.put("searchUrl", "https://s.1688.com/youyuan/index.html?tab=imageSearch&imageType=spider&imageId=" + imageId);
-
-
- } catch (Exception e) {
- result.put("success", false);
- result.put("error", "处理图片失败: " + e.getMessage());
- }
- return result;
- }, executorService)).collect(Collectors.toList());
- List