Răsfoiți Sursa

迁移项目到 F:/shop/java-rewrite,工具脚本改用相对根目录

- 新增 tools/_root.py:按脚本位置推断项目根目录,项目再搬家无需改脚本
- 30 个 tools 脚本由写死绝对路径改为 from _root import ROOT + ROOT / "子路径"
- 同步更新联调说明、第 2 批进度文档、商品列表对比报告中的示例路径
- AuthDiag.java 的两处测试缓存路径改为新目录
- .gitignore 补充 __pycache__/、*.pyc、runtime/、yoshop-java/runtime/
- 移除误提交的 pyc 与运行时缓存文件
tanlie 4 ore în urmă
părinte
comite
385e16ff42

+ 4 - 0
.gitignore

@@ -1,2 +1,6 @@
 .idea/
 yoshop-java/target/
+__pycache__/
+*.pyc
+runtime/
+yoshop-java/runtime/

+ 0 - 4
runtime/cache/05/89a8de756a5b581d6bbba24072fb32.php

@@ -1,4 +0,0 @@
-<?php
-//002099999999
- exit();?>
-a:3:{s:4:"user";a:9:{s:13:"store_user_id";i:10001;s:9:"user_name";s:5:"admin";s:8:"password";s:58:"$2y$10$57o000000000000000000000000000000000000000000000000";s:9:"real_name";s:15:"系统管理员";s:8:"is_super";i:1;s:9:"is_delete";i:0;s:4:"sort";i:100;s:8:"store_id";i:10001;s:11:"create_time";i:1614556800;}s:8:"store_id";i:10001;s:8:"is_login";b:1;}

+ 0 - 4
runtime/cache/29/92cfdeb1c979d203a5071f172937bc.php

@@ -1,4 +0,0 @@
-<?php
-//001792824153
- exit();?>
-a:3:{s:4:"user";a:10:{s:13:"store_user_id";i:10001;s:9:"user_name";s:5:"admin";s:8:"password";s:60:"$2y$10$57osP7pkTo5bc8WKoID8keMIZLrP0K6mKOO.f3eJcaSFRtrzLtD9e";s:9:"real_name";s:15:"系统管理员";s:8:"is_super";i:1;s:9:"is_delete";i:0;s:4:"sort";i:100;s:8:"store_id";i:10001;s:11:"create_time";i:1614556800;s:11:"update_time";i:1614556800;}s:8:"store_id";i:10001;s:8:"is_login";b:1;}

+ 2 - 2
tools/AuthDiag.java

@@ -8,7 +8,7 @@ import java.nio.file.Path;
 
 public class AuthDiag {
     public static void main(String[] args) throws Exception {
-        Path p = Path.of("C:/Users/Administrator/WorkBuddy/2026-10-17-12-27-10/java-rewrite/test-runtime/cache/a9/3029ed2d7a32cb7772b841e3c3a68a.php");
+        Path p = Path.of("F:/shop/java-rewrite/test-runtime/cache/a9/3029ed2d7a32cb7772b841e3c3a68a.php");
         byte[] content = Files.readAllBytes(p);
         System.out.println("file len = " + content.length);
         System.out.println("head32   = " + new String(content, 0, 32, java.nio.charset.StandardCharsets.UTF_8).replace("\n", "\\n"));
@@ -24,7 +24,7 @@ public class AuthDiag {
         ThinkFileCacheTokenStore store = new ThinkFileCacheTokenStore();
         Field f = ThinkFileCacheTokenStore.class.getDeclaredField("cachePath");
         f.setAccessible(true);
-        f.set(store, "C:/Users/Administrator/WorkBuddy/2026-10-17-12-27-10/java-rewrite/test-runtime/cache");
+        f.set(store, "F:/shop/java-rewrite/test-runtime/cache");
         LoginInfo info = store.getLoginInfo("testtoken123");
         System.out.println("token resolve: " + (info == null ? "null" : "storeId=" + info.getStoreId() + " login=" + info.isLogin() + " userId=" + info.getStoreUserId()));
     }

+ 8 - 0
tools/_root.py

@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+"""统一的项目根目录(tools 的上一级)。
+
+所有工具脚本都从这里取路径,项目整体移动目录时无需改任何脚本。
+"""
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parents[1]

+ 2 - 1
tools/backup_order_tables.py

@@ -5,8 +5,9 @@ import os
 import re
 
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 pwd = re.findall(r"password:\s*(.+)", open(YML, encoding="utf-8").read())[0].strip().strip('"')
 
 conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd,

+ 2 - 1
tools/backup_tables.py

@@ -5,8 +5,9 @@ import os
 import re
 
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 pwd = re.findall(r"password:\s*(.+)", text)[0].strip().strip('"')
 

+ 2 - 1
tools/check_isdelete.py

@@ -2,8 +2,9 @@
 """统计各表 is_delete 取值分布"""
 import re
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 pwd = re.findall(r"password:\s*(.+)", open(YML, encoding="utf-8").read())[0].strip().strip("\"'")
 
 conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd, database="shop")

+ 2 - 1
tools/check_progress.py

@@ -3,8 +3,9 @@
 import csv
 import re
 from pathlib import Path
+from _root import ROOT
 
-ROOT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite")
+ROOT = Path(str(ROOT))
 CTRL = ROOT / "yoshop-java/src/main/java/cn/yoshop/store/controller"
 
 # 收集 Java 已实现路由

+ 2 - 1
tools/compare_batch.py

@@ -7,8 +7,9 @@ import sys
 import json
 import requests
 from pathlib import Path
+from _root import ROOT
 
-GOLDEN = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\golden")
+GOLDEN = Path(str(ROOT / "golden"))
 BASE = "http://localhost:18080"
 TOKEN = "testsession123"
 

+ 2 - 1
tools/compare_batch3.py

@@ -6,8 +6,9 @@
 import json
 import requests
 from pathlib import Path
+from _root import ROOT
 
-GOLDEN = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\golden")
+GOLDEN = Path(str(ROOT / "golden"))
 BASE = "http://127.0.0.1:18080"
 TOKEN = "testsession123"
 

+ 2 - 1
tools/compare_detail.py

@@ -2,8 +2,9 @@
 """商品详情双跑对比:PHP 线上响应 vs Java 本地响应,递归逐字段 diff"""
 import json
 import sys
+from _root import ROOT
 
-GOLDEN = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\golden\store_goods_detail.json"
+GOLDEN = str(ROOT / "golden/store_goods_detail.json")
 
 
 def load_java(path):

+ 2 - 1
tools/compare_goods.py

@@ -5,8 +5,9 @@ import re
 import sys
 from pathlib import Path
 import requests
+from _root import ROOT
 
-ROOT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite")
+ROOT = Path(str(ROOT))
 
 src = Path(r"F:\import goods\upload_goods.py").read_text(encoding="utf-8")
 token = re.search(r'TOKEN\s*=\s*"([^"]+)"', src).group(1)

+ 2 - 1
tools/dump_goods_row.py

@@ -2,8 +2,9 @@
 """查询商品行与 sku 的数据库原始值,确认 PHP 侧的类型转换"""
 import re
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 pwds = re.findall(r'password:\s*"?([^"\n]+)"?', text)
 pwd = pwds[0].strip()

+ 2 - 1
tools/dump_home_schema.py

@@ -3,8 +3,9 @@
 import re
 import pymysql
 from pathlib import Path
+from _root import ROOT
 
-yml = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
+yml = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
 pwd = re.findall(r"password:\s*(.+)", yml.read_text(encoding="utf-8"))[0].strip().strip('"\'')
 conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd, database="shop")
 cur = conn.cursor()

+ 2 - 1
tools/dump_login_schema.py

@@ -3,8 +3,9 @@
 import re
 import pymysql
 from pathlib import Path
+from _root import ROOT
 
-yml = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
+yml = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
 text = yml.read_text(encoding="utf-8")
 pwds = re.findall(r"password:\s*(.+)", text)
 pwd = pwds[0].strip().strip('"\'')

+ 2 - 1
tools/dump_schema.py

@@ -2,8 +2,9 @@
 """读取 application.yml 的连接信息,导出三张商品相关表结构"""
 import re
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 pwd = re.findall(r"password:\s*(.+)", text)[0].strip().strip("\"'")
 

+ 2 - 1
tools/dump_settings.py

@@ -2,8 +2,9 @@
 """导出 yoshop_store_setting 内容"""
 import re
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 pwd = re.findall(r"password:\s*(.+)", open(YML, encoding="utf-8").read())[0].strip().strip("\"'")
 
 conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd, database="shop")

+ 2 - 1
tools/dump_tables.py

@@ -3,8 +3,9 @@
 import re
 import sys
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 pwd = re.findall(r"password:\s*(.+)", text)[0].strip().strip("\"'")
 

+ 2 - 1
tools/extract_api.py

@@ -3,7 +3,7 @@
 import os, re, csv
 
 ROOT = r"F:\shop\shop\app"
-OUT = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite"
+OUT = str(ROOT)
 MODULES = ["admin", "api", "store", "timer"]
 MAGIC = re.compile(r"^__")
 
@@ -93,6 +93,7 @@ with open(md_path, "w", encoding="utf-8") as f:
 
 print(f"接口总数: {len(rows)}")
 from collections import Counter
+from _root import ROOT
 print(Counter(r["module"] for r in rows))
 print("CSV:", csv_path)
 print("MD :", md_path)

+ 3 - 2
tools/gen_entities.py

@@ -12,9 +12,10 @@ import re
 import sys
 import pymysql
 from pathlib import Path
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
-ROOT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\java\cn\yoshop")
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
+ROOT = Path(str(ROOT / "yoshop-java/src/main/java/cn/yoshop"))
 
 pwd = re.findall(r"password:\s*(.+)", open(YML, encoding="utf-8").read())[0].strip().strip("\"'")
 

+ 2 - 1
tools/grab_auth_golden.py

@@ -2,8 +2,9 @@
 """抓取登录链路相关接口的线上黄金样本"""
 import re, json, requests
 from pathlib import Path
+from _root import ROOT
 
-GOLDEN = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\golden")
+GOLDEN = Path(str(ROOT / "golden"))
 GOLDEN.mkdir(exist_ok=True)
 
 src = Path(r"F:\import goods\upload_goods.py").read_text(encoding="utf-8")

+ 2 - 1
tools/grab_golden_batch.py

@@ -16,8 +16,9 @@ import sys
 import json
 import requests
 from pathlib import Path
+from _root import ROOT
 
-GOLDEN = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\golden")
+GOLDEN = Path(str(ROOT / "golden"))
 GOLDEN.mkdir(exist_ok=True)
 
 BASE = "https://shop.qinys.cn/index.php?s="

+ 2 - 1
tools/list_tables.py

@@ -2,8 +2,9 @@
 """列出库内所有表"""
 import re
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 pwd = re.findall(r"password:\s*(.+)", text)[0].strip().strip("\"'")
 

+ 2 - 1
tools/patch_entities.py

@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 """给自动生成的实体补充关联字段与 PHP 获取器等值实现(在类尾插入)。"""
 from pathlib import Path
+from _root import ROOT
 
-ENT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\java\cn\yoshop\common\entity")
+ENT = Path(str(ROOT / "yoshop-java/src/main/java/cn/yoshop/common/entity"))
 
 PATCHES = {
     "UserGrade.java": """

+ 2 - 1
tools/patch_yml.py

@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 """对 application.yml 做增量修改(不读取/输出密码)"""
 import re
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 t = open(YML, encoding="utf-8").read()
 
 # 1. jackson 增加 snake_case 全局策略

+ 2 - 1
tools/q.py

@@ -4,8 +4,9 @@ import re
 import sys
 
 import pymysql
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 pwd = re.findall(r"password:\s*(.+)", open(YML, encoding="utf-8").read())[0].strip().strip("\"'")
 conn = pymysql.connect(host="192.168.1.177", port=3306, user="root", password=pwd, database="shop", autocommit=True)
 cur = conn.cursor()

+ 2 - 1
tools/seed_market_golden.py

@@ -5,8 +5,9 @@ import re
 from pathlib import Path
 
 import pymysql
+from _root import ROOT
 
-YML = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
+YML = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
 text = YML.read_text(encoding="utf-8")
 pwd = re.findall(r"password:\s*(.+)", text)[0].strip().strip('"').strip("'")
 

+ 2 - 1
tools/seed_session.py

@@ -5,11 +5,12 @@ PHP serialize 字符串长度按 UTF-8 字节计,这里用通用序列化函
 """
 import hashlib
 import os
+from _root import ROOT
 
 # 默认写 Java 侧缓存目录;设置 YOSHOP_CACHE 可额外写入其它目录(如本地 PHP 站点的 runtime/cache)
 CACHE = os.environ.get(
     "YOSHOP_CACHE",
-    r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\runtime\cache")
+    str(ROOT / "runtime/cache"))
 
 
 def php_serialize(v):

+ 4 - 2
tools/test_final_writes.py

@@ -19,12 +19,14 @@ import openpyxl
 import pymysql
 import requests
 
+from _root import ROOT
+
 PHP_BASE = "http://127.0.0.1:8899/index.php?s="
 JAVA_BASE = "http://127.0.0.1:18080"
 TOKEN = "testsession123"
 STORE_ID = 10001
-YML = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
-JAVA_EXPORT_DIR = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\runtime\downloads")
+YML = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
+JAVA_EXPORT_DIR = Path(str(ROOT / "yoshop-java/runtime/downloads"))
 PHP_EXPORT_DIR = Path(r"F:\shop\shop\public\downloads")
 
 SESSION = requests.Session()

+ 2 - 1
tools/test_goods_writes.py

@@ -14,6 +14,7 @@ import pymysql
 from pathlib import Path
 
 from compare_live import diff
+from _root import ROOT
 
 JAVA_BASE = "http://127.0.0.1:18080"
 PHP_BASE = "https://shop.qinys.cn/index.php?s="
@@ -23,7 +24,7 @@ STORE_ID = 10001
 SESSION = requests.Session()
 SESSION.trust_env = False
 
-YML = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
+YML = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
 
 passed = failed = 0
 

+ 2 - 1
tools/test_market_writes.py

@@ -10,11 +10,12 @@ from pathlib import Path
 
 import pymysql
 import requests
+from _root import ROOT
 
 JAVA = "http://127.0.0.1:18080"
 TOKEN = "testsession123"
 STORE_ID = 10001
-ROOT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite")
+ROOT = Path(str(ROOT))
 YML = ROOT / "yoshop-java" / "src" / "main" / "resources" / "application.yml"
 
 SESSION = requests.Session()

+ 2 - 1
tools/test_order_writes.py

@@ -14,11 +14,12 @@ from pathlib import Path
 
 import pymysql
 import requests
+from _root import ROOT
 
 JAVA_BASE = "http://127.0.0.1:18080"
 TOKEN = "testsession123"
 STORE_ID = 10001
-YML = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml")
+YML = Path(str(ROOT / "yoshop-java/src/main/resources/application.yml"))
 
 SESSION = requests.Session()
 SESSION.trust_env = False

+ 2 - 1
tools/test_setting_writes.py

@@ -12,11 +12,12 @@ from pathlib import Path
 
 import pymysql
 import requests
+from _root import ROOT
 
 JAVA = "http://127.0.0.1:18080"
 TOKEN = "testsession123"
 STORE_ID = 10001
-ROOT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite")
+ROOT = Path(str(ROOT))
 YML = ROOT / "yoshop-java" / "src" / "main" / "resources" / "application.yml"
 
 SESSION = requests.Session()

+ 2 - 1
tools/verify_yml.py

@@ -4,8 +4,9 @@ import re
 import socket
 import pymysql
 import urllib.parse
+from _root import ROOT
 
-YML = r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\resources\application.yml"
+YML = str(ROOT / "yoshop-java/src/main/resources/application.yml")
 text = open(YML, encoding="utf-8").read()
 
 def get(pattern, default=""):

+ 1 - 1
双跑对比报告-商品列表.md

@@ -37,7 +37,7 @@
 
 ```bash
 # 启动 Java 版(本机 8080 被占,用 18080)
-cd C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java
+cd F:\shop\java-rewrite\yoshop-java
 mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=18080
 
 # 逐字段对比

+ 3 - 3
接口实现进度-第2批.md

@@ -88,15 +88,15 @@
 
 ```bash
 # 后端
-cd C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java
-mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=18080 --yoshop.auth.mode=file --yoshop.auth.runtime-cache-path=C:/Users/Administrator/WorkBuddy/2026-10-17-12-27-10/java-rewrite/runtime/cache"
+cd F:\shop\java-rewrite\yoshop-java
+mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=18080 --yoshop.auth.mode=file --yoshop.auth.runtime-cache-path=F:/shop/java-rewrite/runtime/cache"
 
 # 前端
 cd F:\shop\yoshop2.0-store
 NODE_OPTIONS=--openssl-legacy-provider ./node_modules/.bin/vue-cli-service serve   # 8120
 
 # 回归对比(需本地 Java 服务 + golden 样本)
-cd C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\tools
+cd F:\shop\java-rewrite\tools
 python compare_batch.py
 ```
 

+ 2 - 2
联调说明.md

@@ -5,8 +5,8 @@
 **后端(Java)** —— 端口 18080(8080 被本机占用)
 
 ```bash
-cd C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java
-mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=18080 --yoshop.auth.mode=file --yoshop.auth.runtime-cache-path=C:/Users/Administrator/WorkBuddy/2026-10-17-12-27-10/java-rewrite/runtime/cache"
+cd F:\shop\java-rewrite\yoshop-java
+mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=18080 --yoshop.auth.mode=file --yoshop.auth.runtime-cache-path=F:/shop/java-rewrite/runtime/cache"
 ```
 
 - `yoshop.auth.mode=file`:开启真实登录校验(读 ThinkPHP File 缓存)