From eab377985d6f9efd7cc8cfa68107676cca6de8ad Mon Sep 17 00:00:00 2001
From: zhouqi
Date: Wed, 6 May 2026 16:19:21 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84dulizhan=E9=A1=B9?=
=?UTF-8?q?=E7=9B=AE=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
JoyHub_API接口文档.md | 20198 ++++++++++++++++
Log/run.log | 463 +
.../接口/SZPurchase/ContractManage.py | 0
.../接口/SZPurchase/PurchaseOrderManage.py | 75 -
.../接口/SZPurchase/PurchasePlanManage.py | 0
.../TestCase/接口/SZPurchase/__init__.py | 0
.../TestCase/接口/SZPurchase/index.py | 19 -
dulizhan/test_case/run_tests.py | 4 +-
zhyy/__init__.py | 0
.../BusinessKw/SZPurchase/ContractManage.py | 0
.../SZPurchase/PurchaseOrderManage.py | 97 -
.../SZPurchase/PurchasePlanManage.py | 0
.../library/BusinessKw/SZPurchase/__init__.py | 0
.../PurchaseOrderManage.cpython-38.pyc | Bin 3594 -> 0 bytes
.../__pycache__/__init__.cpython-38.pyc | Bin 145 -> 0 bytes
.../__pycache__/index.cpython-38.pyc | Bin 3546 -> 0 bytes
zhyy/library/BusinessKw/SZPurchase/index.py | 88 -
.../BusinessKw/SZPurchase/purchase.ini | 2 -
zhyy/library/BusinessKw/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 134 -> 0 bytes
zhyy/library/CommonFun/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 133 -> 0 bytes
.../__pycache__/asset_common.cpython-38.pyc | Bin 2304 -> 0 bytes
.../contract_pair_check.cpython-38.pyc | Bin 8950 -> 0 bytes
.../course_package_common.cpython-38.pyc | Bin 1323 -> 0 bytes
.../__pycache__/env_check.cpython-38.pyc | Bin 3283 -> 0 bytes
.../__pycache__/handle_aita.cpython-38.pyc | Bin 3934 -> 0 bytes
.../handle_harmonyos.cpython-38.pyc | Bin 3031 -> 0 bytes
.../__pycache__/handle_jenkins.cpython-38.pyc | Bin 6995 -> 0 bytes
.../__pycache__/handle_jira.cpython-38.pyc | Bin 12659 -> 0 bytes
.../__pycache__/handle_login.cpython-38.pyc | Bin 6564 -> 0 bytes
.../__pycache__/handle_tools.cpython-38.pyc | Bin 5784 -> 0 bytes
.../__pycache__/host_update.cpython-38.pyc | Bin 8310 -> 0 bytes
.../statistical_function.cpython-38.pyc | Bin 3439 -> 0 bytes
.../__pycache__/ubrd_now_time.cpython-38.pyc | Bin 2590 -> 0 bytes
.../__pycache__/user_common.cpython-38.pyc | Bin 11528 -> 0 bytes
.../__pycache__/user_message.cpython-38.pyc | Bin 1021 -> 0 bytes
zhyy/library/CommonFun/asset_common.py | 57 -
zhyy/library/CommonFun/contract_pair_check.py | 240 -
.../CommonFun/course_package_common.py | 31 -
zhyy/library/CommonFun/drawPicture.py | 31 -
zhyy/library/CommonFun/env_check.ini | 7 -
zhyy/library/CommonFun/env_check.py | 141 -
zhyy/library/CommonFun/handle_aita.py | 141 -
zhyy/library/CommonFun/handle_harmonyos.py | 105 -
zhyy/library/CommonFun/handle_jenkins.py | 257 -
zhyy/library/CommonFun/handle_jira.py | 331 -
zhyy/library/CommonFun/handle_kibana.py | 45 -
zhyy/library/CommonFun/handle_login.py | 204 -
zhyy/library/CommonFun/handle_mq.py | 19 -
zhyy/library/CommonFun/handle_picture.py | 56 -
zhyy/library/CommonFun/handle_tools.py | 211 -
zhyy/library/CommonFun/host_update.ini | 1 -
zhyy/library/CommonFun/host_update.py | 263 -
.../library/CommonFun/statistical_function.py | 142 -
zhyy/library/CommonFun/ubrd_now_time.py | 64 -
zhyy/library/CommonFun/user_common.py | 272 -
zhyy/library/CommonFun/user_message.py | 20 -
zhyy/library/Config/team_config.ini | 9 -
zhyy/library/Config/xingxingchongzhi.xlsx | Bin 9423 -> 0 bytes
zhyy/library/UpFile/classify.xlsx | Bin 12324 -> 0 bytes
zhyy/library/UpFile/draw_user.xlsx | Bin 10271 -> 0 bytes
zhyy/library/UpFile/tag.xlsx | Bin 10952 -> 0 bytes
zhyy/library/UpFile/uploadstar.xlsx | Bin 9641 -> 0 bytes
zhyy/library/ZZYYLogic/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 131 -> 0 bytes
zhyy/library/ZZYYLogic/purchase_logic.py | 37 -
zhyy/library/ZZYY_interface.py | 68 -
zhyy/library/__init__.py | 134 -
.../__pycache__/ZZYY_interface.cpython-38.pyc | Bin 3037 -> 0 bytes
.../__pycache__/__init__.cpython-38.pyc | Bin 3417 -> 0 bytes
zhyy/qa_helper/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 125 -> 0 bytes
zhyy/qa_helper/common/__init__.py | 1 -
.../__pycache__/__init__.cpython-38.pyc | Bin 132 -> 0 bytes
.../common/__pycache__/order.cpython-38.pyc | Bin 5361 -> 0 bytes
.../common/__pycache__/user.cpython-38.pyc | Bin 8429 -> 0 bytes
zhyy/qa_helper/common/course_package.py | 337 -
zhyy/qa_helper/common/order.py | 109 -
zhyy/qa_helper/common/user.py | 208 -
zhyy/test_case/JENKINS_SETUP.md | 190 -
zhyy/test_case/Jenkinsfile | 175 -
zhyy/test_case/README_JENKINS.md | 84 -
zhyy/test_case/README_RUN_TESTS.md | 96 -
.../test_case/Resource/AdapterKws/hh-qa.robot | 9 -
zhyy/test_case/TestCase/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 134 -> 0 bytes
.../test_sample.cpython-38-pytest-7.4.4.pyc | Bin 669 -> 0 bytes
.../接口/SZPurchase/ContractManage.py | 0
.../接口/SZPurchase/PurchaseOrderManage.py | 75 -
.../接口/SZPurchase/PurchasePlanManage.py | 0
.../TestCase/接口/SZPurchase/__init__.py | 0
.../ContractManage.cpython-38-pytest-7.4.4.pyc | Bin 161 -> 0 bytes
...chaseOrderManage.cpython-38-pytest-7.4.4.pyc | Bin 3674 -> 0 bytes
...rchasePlanManage.cpython-38-pytest-7.4.4.pyc | Bin 165 -> 0 bytes
.../__pycache__/__init__.cpython-38.pyc | Bin 155 -> 0 bytes
.../index.cpython-38-pytest-7.4.4.pyc | Bin 1249 -> 0 bytes
.../TestCase/接口/SZPurchase/index.py | 19 -
zhyy/test_case/TestCase/接口/__init__.py | 0
.../接口/__pycache__/__init__.cpython-38.pyc | Bin 144 -> 0 bytes
.../conftest.cpython-38-pytest-7.4.4.pyc | Bin 564 -> 0 bytes
zhyy/test_case/TestCase/接口/conftest.py | 14 -
zhyy/test_case/__init__.py | 0
.../__pycache__/__init__.cpython-38.pyc | Bin 125 -> 0 bytes
zhyy/test_case/jenkins_build.bat | 44 -
zhyy/test_case/jenkins_build.sh | 47 -
zhyy/test_case/reports/allure-report/app.js | 60 -
.../reports/allure-report/data/behaviors.csv | 4 -
.../reports/allure-report/data/categories.csv | 0
.../reports/allure-report/data/suites.csv | 6 -
.../reports/allure-report/favicon.ico | 1 -
.../allure-report/plugins/behaviors/index.js | 150 -
.../allure-report/plugins/packages/index.js | 88 -
.../plugins/screen-diff/index.js | 97 -
.../plugins/screen-diff/styles.css | 26 -
.../reports/allure-report/styles.css | 6 -
zhyy/test_case/run_all.bat | 7 -
zhyy/test_case/run_purchase.bat | 7 -
zhyy/test_case/run_tests.py | 230 -
119 files changed, 20663 insertions(+), 5259 deletions(-)
create mode 100644 JoyHub_API接口文档.md
delete mode 100644 dulizhan/test_case/TestCase/接口/SZPurchase/ContractManage.py
delete mode 100644 dulizhan/test_case/TestCase/接口/SZPurchase/PurchaseOrderManage.py
delete mode 100644 dulizhan/test_case/TestCase/接口/SZPurchase/PurchasePlanManage.py
delete mode 100644 dulizhan/test_case/TestCase/接口/SZPurchase/__init__.py
delete mode 100644 dulizhan/test_case/TestCase/接口/SZPurchase/index.py
delete mode 100644 zhyy/__init__.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/ContractManage.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/PurchaseOrderManage.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/PurchasePlanManage.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/__init__.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/__pycache__/PurchaseOrderManage.cpython-38.pyc
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/__pycache__/index.cpython-38.pyc
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/index.py
delete mode 100644 zhyy/library/BusinessKw/SZPurchase/purchase.ini
delete mode 100644 zhyy/library/BusinessKw/__init__.py
delete mode 100644 zhyy/library/BusinessKw/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__init__.py
delete mode 100644 zhyy/library/CommonFun/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/asset_common.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/contract_pair_check.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/course_package_common.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/env_check.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_aita.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_harmonyos.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_jenkins.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_jira.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_login.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/handle_tools.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/host_update.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/statistical_function.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/ubrd_now_time.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/user_common.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/__pycache__/user_message.cpython-38.pyc
delete mode 100644 zhyy/library/CommonFun/asset_common.py
delete mode 100644 zhyy/library/CommonFun/contract_pair_check.py
delete mode 100644 zhyy/library/CommonFun/course_package_common.py
delete mode 100644 zhyy/library/CommonFun/drawPicture.py
delete mode 100644 zhyy/library/CommonFun/env_check.ini
delete mode 100644 zhyy/library/CommonFun/env_check.py
delete mode 100644 zhyy/library/CommonFun/handle_aita.py
delete mode 100644 zhyy/library/CommonFun/handle_harmonyos.py
delete mode 100644 zhyy/library/CommonFun/handle_jenkins.py
delete mode 100644 zhyy/library/CommonFun/handle_jira.py
delete mode 100644 zhyy/library/CommonFun/handle_kibana.py
delete mode 100644 zhyy/library/CommonFun/handle_login.py
delete mode 100644 zhyy/library/CommonFun/handle_mq.py
delete mode 100644 zhyy/library/CommonFun/handle_picture.py
delete mode 100644 zhyy/library/CommonFun/handle_tools.py
delete mode 100644 zhyy/library/CommonFun/host_update.ini
delete mode 100644 zhyy/library/CommonFun/host_update.py
delete mode 100644 zhyy/library/CommonFun/statistical_function.py
delete mode 100644 zhyy/library/CommonFun/ubrd_now_time.py
delete mode 100644 zhyy/library/CommonFun/user_common.py
delete mode 100644 zhyy/library/CommonFun/user_message.py
delete mode 100644 zhyy/library/Config/team_config.ini
delete mode 100644 zhyy/library/Config/xingxingchongzhi.xlsx
delete mode 100644 zhyy/library/UpFile/classify.xlsx
delete mode 100644 zhyy/library/UpFile/draw_user.xlsx
delete mode 100644 zhyy/library/UpFile/tag.xlsx
delete mode 100644 zhyy/library/UpFile/uploadstar.xlsx
delete mode 100644 zhyy/library/ZZYYLogic/__init__.py
delete mode 100644 zhyy/library/ZZYYLogic/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/library/ZZYYLogic/purchase_logic.py
delete mode 100644 zhyy/library/ZZYY_interface.py
delete mode 100644 zhyy/library/__init__.py
delete mode 100644 zhyy/library/__pycache__/ZZYY_interface.cpython-38.pyc
delete mode 100644 zhyy/library/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/qa_helper/__init__.py
delete mode 100644 zhyy/qa_helper/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/qa_helper/common/__init__.py
delete mode 100644 zhyy/qa_helper/common/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/qa_helper/common/__pycache__/order.cpython-38.pyc
delete mode 100644 zhyy/qa_helper/common/__pycache__/user.cpython-38.pyc
delete mode 100644 zhyy/qa_helper/common/course_package.py
delete mode 100644 zhyy/qa_helper/common/order.py
delete mode 100644 zhyy/qa_helper/common/user.py
delete mode 100644 zhyy/test_case/JENKINS_SETUP.md
delete mode 100644 zhyy/test_case/Jenkinsfile
delete mode 100644 zhyy/test_case/README_JENKINS.md
delete mode 100644 zhyy/test_case/README_RUN_TESTS.md
delete mode 100644 zhyy/test_case/Resource/AdapterKws/hh-qa.robot
delete mode 100644 zhyy/test_case/TestCase/__init__.py
delete mode 100644 zhyy/test_case/TestCase/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/test_case/TestCase/__pycache__/test_sample.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/ContractManage.py
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/PurchaseOrderManage.py
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/PurchasePlanManage.py
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__init__.py
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__pycache__/ContractManage.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__pycache__/PurchaseOrderManage.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__pycache__/PurchasePlanManage.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/__pycache__/index.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/SZPurchase/index.py
delete mode 100644 zhyy/test_case/TestCase/接口/__init__.py
delete mode 100644 zhyy/test_case/TestCase/接口/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/__pycache__/conftest.cpython-38-pytest-7.4.4.pyc
delete mode 100644 zhyy/test_case/TestCase/接口/conftest.py
delete mode 100644 zhyy/test_case/__init__.py
delete mode 100644 zhyy/test_case/__pycache__/__init__.cpython-38.pyc
delete mode 100644 zhyy/test_case/jenkins_build.bat
delete mode 100644 zhyy/test_case/jenkins_build.sh
delete mode 100644 zhyy/test_case/reports/allure-report/app.js
delete mode 100644 zhyy/test_case/reports/allure-report/data/behaviors.csv
delete mode 100644 zhyy/test_case/reports/allure-report/data/categories.csv
delete mode 100644 zhyy/test_case/reports/allure-report/data/suites.csv
delete mode 100644 zhyy/test_case/reports/allure-report/favicon.ico
delete mode 100644 zhyy/test_case/reports/allure-report/plugins/behaviors/index.js
delete mode 100644 zhyy/test_case/reports/allure-report/plugins/packages/index.js
delete mode 100644 zhyy/test_case/reports/allure-report/plugins/screen-diff/index.js
delete mode 100644 zhyy/test_case/reports/allure-report/plugins/screen-diff/styles.css
delete mode 100644 zhyy/test_case/reports/allure-report/styles.css
delete mode 100644 zhyy/test_case/run_all.bat
delete mode 100644 zhyy/test_case/run_purchase.bat
delete mode 100644 zhyy/test_case/run_tests.py
diff --git a/JoyHub_API接口文档.md b/JoyHub_API接口文档.md
new file mode 100644
index 0000000..4a33d83
--- /dev/null
+++ b/JoyHub_API接口文档.md
@@ -0,0 +1,20198 @@
+# JoyHub API 接口文档
+
+- 文档来源:https://joyhub-website-manager-api-dev.best-envision.com/v3/api-docs/all
+- 标题:芋道快速开发平台
+- 描述:提供管理后台、用户 App 的所有功能
+- OpenAPI:3.1.0
+- 生成时间:2026-04-28 14:25:19
+- 接口数量:740
+- 分组数量:112
+
+## 接口总览
+
+| 分组 | 数量 |
+| --- | ---: |
+| C端 - APP版本 | 1 |
+| C端 - FAQ | 2 |
+| C端 - FAQ联系我们 | 1 |
+| C端 - blog信息 | 3 |
+| C端 - blog分类 | 1 |
+| C端 - news分类 | 1 |
+| C端 - news管理 | 3 |
+| C端 - 二维码访问统计 | 2 |
+| C端 - 产品 | 2 |
+| C端 - 产品分类 | 1 |
+| C端 - 产品结算 | 2 |
+| C端 - 协议 | 2 |
+| C端 - 合作联系 | 1 |
+| C端 - 售后 | 4 |
+| C端 - 售后政策 | 2 |
+| C端 - 售后政策-品牌 | 2 |
+| C端 - 国家信息 | 1 |
+| C端 - 埋点 | 1 |
+| C端 - 基础数据-说明(售后/运费说明,售后问题) | 2 |
+| C端 - 我的订单 | 11 |
+| C端 - 支付页产品推荐 | 1 |
+| C端 - 文件存储 | 3 |
+| C端 - 点赞记录 | 4 |
+| C端 - 用户 | 1 |
+| C端 - 积分结算 | 1 |
+| C端 - 购物车 | 7 |
+| c端 - Banner信息 | 2 |
+| default-controller | 77 |
+| pay-pal-payment-controller | 9 |
+| pay-pal-webhook-controller | 1 |
+| 用户 App - 地区 | 1 |
+| 用户 App - 字典数据 | 1 |
+| 用户 App - 租户 | 1 |
+| 管理后台 - API 访问日志 | 2 |
+| 管理后台 - API 错误日志 | 3 |
+| 管理后台 - Banner管理 | 9 |
+| 管理后台 - FAQ分类 | 8 |
+| 管理后台 - FAQ数据 | 10 |
+| 管理后台 - FAQ联系数据 | 9 |
+| 管理后台 - LX 亚马逊FBA货件详情 | 9 |
+| 管理后台 - LX 亚马逊店铺信息 | 9 |
+| 管理后台 - OAuth2 客户端 | 6 |
+| 管理后台 - OAuth2.0 令牌 | 3 |
+| 管理后台 - OAuth2.0 授权 | 5 |
+| 管理后台 - OAuth2.0 用户 | 2 |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | 9 |
+| 管理后台 - Redis 监控 | 1 |
+| 管理后台 - app版本号管理 | 9 |
+| 管理后台 - blog分类 | 9 |
+| 管理后台 - blog管理 | 10 |
+| 管理后台 - news分类 | 9 |
+| 管理后台 - news管理 | 10 |
+| 管理后台 - 二维码 | 9 |
+| 管理后台 - 产品 | 11 |
+| 管理后台 - 产品分类 | 7 |
+| 管理后台 - 产品属性 | 7 |
+| 管理后台 - 产品属性值 | 6 |
+| 管理后台 - 代码生成器 | 11 |
+| 管理后台 - 协议 | 9 |
+| 管理后台 - 参数配置 | 8 |
+| 管理后台 - 合作联系数据 | 9 |
+| 管理后台 - 售后 | 3 |
+| 管理后台 - 售后政策 | 9 |
+| 管理后台 - 售后政策-品牌 | 10 |
+| 管理后台 - 国家信息 | 11 |
+| 管理后台 - 地区 | 2 |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | 9 |
+| 管理后台 - 字典数据 | 9 |
+| 管理后台 - 字典类型 | 9 |
+| 管理后台 - 学生 | 37 |
+| 管理后台 - 定时任务 | 11 |
+| 管理后台 - 定时任务日志 | 3 |
+| 管理后台 - 岗位 | 9 |
+| 管理后台 - 我的站内信 | 7 |
+| 管理后台 - 折扣 | 13 |
+| 管理后台 - 折扣数据 | 2 |
+| 管理后台 - 操作日志 | 2 |
+| 管理后台 - 支付页产品推荐 | 6 |
+| 管理后台 - 数据源配置 | 6 |
+| 管理后台 - 文件存储 | 7 |
+| 管理后台 - 文件配置 | 8 |
+| 管理后台 - 权限 | 5 |
+| 管理后台 - 流量详情 | 2 |
+| 管理后台 - 用户 | 14 |
+| 管理后台 - 用户个人中心 | 3 |
+| 管理后台 - 登录日志 | 2 |
+| 管理后台 - 短信回调 | 4 |
+| 管理后台 - 短信日志 | 2 |
+| 管理后台 - 短信模板 | 8 |
+| 管理后台 - 短信渠道 | 8 |
+| 管理后台 - 示例分类 | 6 |
+| 管理后台 - 示例联系人 | 7 |
+| 管理后台 - 社交客户端 | 7 |
+| 管理后台 - 社交用户 | 5 |
+| 管理后台 - 租户 | 10 |
+| 管理后台 - 租户套餐 | 8 |
+| 管理后台 - 站内信模版 | 7 |
+| 管理后台 - 联系我们数据 | 9 |
+| 管理后台 - 菜单 | 8 |
+| 管理后台 - 角色 | 9 |
+| 管理后台 - 订单 | 6 |
+| 管理后台 - 认证 | 11 |
+| 管理后台 - 路由 | 9 |
+| 管理后台 - 运费模板信息 | 8 |
+| 管理后台 - 通知公告 | 7 |
+| 管理后台 - 邮件日志 | 2 |
+| 管理后台 - 邮件模版 | 9 |
+| 管理后台 - 邮箱账号 | 8 |
+| 管理后台 - 部门 | 8 |
+| 管理后台 - 链接 | 7 |
+| 管理后台 - 领星订单同步调试 | 3 |
+| 管理后台 - 验证码 | 2 |
+
+## 接口清单
+
+| 分组 | 方法 | 路径 | 名称 | operationId |
+| --- | --- | --- | --- | --- |
+| C端 - APP版本 | GET | `/web-api/jh/web/appversion/page` | 获取APP版本列表 | `WebAppversion_getAppversionPage` |
+| C端 - FAQ | GET | `/web-api/jh/faq/cate-list` | 获得FAQ分类树 | `WebFaq_getFaqCateTree` |
+| C端 - FAQ | GET | `/web-api/jh/faq/list` | 获得FAQ列表 | `WebFaq_getFaqList` |
+| C端 - FAQ联系我们 | POST | `/web-api/jh/faq-contact-us/create` | 提交FAQ联系信息 | `WebFaqContactUs_createFaqContactUs` |
+| C端 - blog信息 | GET | `/web-api/jh/blog/get-detail` | 获得blog详情 | `WebBlog_getBlog` |
+| C端 - blog信息 | GET | `/web-api/jh/blog/get-next` | 获得blog下一条 | `WebBlog_getBlogNext` |
+| C端 - blog信息 | GET | `/web-api/jh/blog/page` | 获得blog管理分页 | `WebBlog_getBlogPage` |
+| C端 - blog分类 | GET | `/web-api/jh/blog-cate/list` | 获得blog分类列表 | `WebBlogCate_getBlogCateList` |
+| C端 - news分类 | GET | `/web-api/jh/news-cate/list` | 获得news分类列表 | `WebNewsCate_getNewsCateList` |
+| C端 - news管理 | GET | `/web-api/jh/news/get-detail` | 获得news详情 | `WebNews_getBlog` |
+| C端 - news管理 | GET | `/web-api/jh/news/get-next` | 获得news下一条 | `WebNews_getBlogNext` |
+| C端 - news管理 | GET | `/web-api/jh/news/page` | 获得news管理分页 | `WebNews_getBlogPage` |
+| C端 - 二维码访问统计 | GET | `/web-api/jh/download-qrcode/get` | 获取二维码信息 | `WebDownloadQrcode_getByCode` |
+| C端 - 二维码访问统计 | POST | `/web-api/jh/download-qrcode/increment` | 增加二维码访问/点击次数 | `WebDownloadQrcode_incrementCount` |
+| C端 - 产品 | GET | `/web-api/jh/product/get` | 产品详情 | `WebProduct_getProduct` |
+| C端 - 产品 | GET | `/web-api/jh/product/page` | 获得产品分页 | `WebProduct_getProductPage` |
+| C端 - 产品分类 | GET | `/web-api/jh/product-cate/list` | 获得产品分类列表 | `WebProductCate_getProductCateList` |
+| C端 - 产品结算 | GET | `/web-api/jh/settlement/points/settlement` | 获取积分结算信息 | `WebSettlement_getProductPointsSettlement` |
+| C端 - 产品结算 | POST | `/web-api/jh/settlement/points/submit` | 纯积分结算提交订单 | `WebSettlement_submitProductPointsSettlement` |
+| C端 - 协议 | GET | `/web-api/jh/agreement/get` | 获得协议 | `WebAgreement_getAgreement` |
+| C端 - 协议 | GET | `/web-api/jh/agreement/page` | 获得协议分页 | `WebAgreement_getAgreementPage` |
+| C端 - 合作联系 | POST | `/web-api/jh/cooperation/create` | 提交合作联系信息 | `WebCooperation_createCooperation` |
+| C端 - 售后 | POST | `/web-api/jh/order-after-sale/create` | 提交售后 | `WebOrderAfterSale_createOrderAfterSale` |
+| C端 - 售后 | GET | `/web-api/jh/order-after-sale/get` | 售后详情 | `WebOrderAfterSale_getOrderAfterSale` |
+| C端 - 售后 | POST | `/web-api/jh/order-after-sale/sync-oa` | 同步oa售后数据 | `WebOrderAfterSale_syncOrderAfterSaleFromOA` |
+| C端 - 售后 | POST | `/web-api/jh/order-after-sale/update` | 提供给OA接收售后信息变化 | `WebOrderAfterSale_updateOrderAfterSale` |
+| C端 - 售后政策 | GET | `/web-api/jh/after-sales-policy/get` | 获得售后政策 | `WebAfterSalesPolicy_getAfterSalesPolicy` |
+| C端 - 售后政策 | GET | `/web-api/jh/after-sales-policy/page` | 获得售后政策分页 | `WebAfterSalesPolicy_getAfterSalesPolicyPage` |
+| C端 - 售后政策-品牌 | GET | `/web-api/jh/after-sales-brand/get` | 获得售后政策-品牌 | `WebAfterSalesBrand_getAfterSalesBrand` |
+| C端 - 售后政策-品牌 | GET | `/web-api/jh/after-sales-brand/page` | 获得售后政策-品牌分页 | `WebAfterSalesBrand_getAfterSalesBrandPage` |
+| C端 - 国家信息 | GET | `/web-api/jh/address-country/list` | 获取国家列表(启用状态) | `WebAddressCountry_getCountryList` |
+| C端 - 埋点 | POST | `/web-api/jh/event-tracking/create` | 创建埋点记录 | `WebEventTracking_createEventTracking` |
+| C端 - 基础数据-说明(售后/运费说明,售后问题) | GET | `/web-api/jh/article/get` | 获得基础数据-说明 | `WebArticle_getArticle` |
+| C端 - 基础数据-说明(售后/运费说明,售后问题) | GET | `/web-api/jh/article/page` | 获得基础数据-说明分页 | `WebArticle_getArticlePage` |
+| C端 - 我的订单 | PUT | `/web-api/jh/order/cancel` | 取消订单 | `ClientOrder_cancelOrder` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/capture` | 捕获订单 | `ClientOrder_captureOrder` |
+| C端 - 我的订单 | POST | `/web-api/jh/order/change-shipping-amount` | 重新计算运费和总价 | `ClientOrder_changeShippingAmount` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/count` | 查询各状态订单数量 | `ClientOrder_getOrderCount` |
+| C端 - 我的订单 | POST | `/web-api/jh/order/creat` | 创建订单 | `ClientOrder_creatOrder` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/export-excel` | 导出订单 Excel | `ClientOrder_exportOrderExcel` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/get` | 获得订单 | `ClientOrder_getOrder` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/order-item` | 支付成功页订单详情产品信息 | `ClientOrder_getOrderItemList` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/page` | 获得订单分页 | `ClientOrder_getOrderPage` |
+| C端 - 我的订单 | PUT | `/web-api/jh/order/set-remark` | 设置订单备注 | `ClientOrder_updateOrderRemark` |
+| C端 - 我的订单 | GET | `/web-api/jh/order/status` | 查询状态列表 | `ClientOrder_getStatus` |
+| C端 - 支付页产品推荐 | GET | `/web-api/jh/product-payment-recommend/page` | 获得支付页产品推荐分页 | `WebProductPaymentRecommend_getProductPaymentRecommendPage` |
+| C端 - 文件存储 | POST | `/web-api/infra/file/create` | 创建文件 | `AppFile_createFile` |
+| C端 - 文件存储 | GET | `/web-api/infra/file/presigned-url` | 获取文件预签名地址(上传) | `AppFile_getFilePresignedUrl` |
+| C端 - 文件存储 | POST | `/web-api/infra/file/upload` | 上传文件 | `AppFile_uploadFile` |
+| C端 - 点赞记录 | POST | `/web-api/jh/like-info/create` | 创建点赞记录 | `LikeInfo_createLikeInfo` |
+| C端 - 点赞记录 | POST | `/web-api/jh/like-info/delete` | 取消点赞 | `LikeInfo_deleteLikeInfo` |
+| C端 - 点赞记录 | GET | `/web-api/jh/like-info/get` | 获得点赞记录 | `LikeInfo_getLikeInfo` |
+| C端 - 点赞记录 | GET | `/web-api/jh/like-info/page` | 获得点赞记录分页 | `LikeInfo_getLikeInfoPage` |
+| C端 - 用户 | GET | `/web-api/jh/client/get/point` | 查询当前用户积分 | `WebClient_getPoint` |
+| C端 - 积分结算 | POST | `/web-api/jh/settle_points/estimated-calculation` | 积分商品检测计算积分价格 | `WebSettlePoints_estimatedCalculation` |
+| C端 - 购物车 | POST | `/web-api/jh/shopping-cart/calculate` | 购物车计算 | `WebShoppingCart_calculate` |
+| C端 - 购物车 | POST | `/web-api/jh/shopping-cart/calculate-shippingcost` | 单独计算运费 | `WebShoppingCart_calculateShippingcost` |
+| C端 - 购物车 | POST | `/web-api/jh/shopping-cart/check` | 检测购物车产品列表数据 | `WebShoppingCart_checkShoppingCart` |
+| C端 - 购物车 | POST | `/web-api/jh/shopping-cart/create` | 创建购物车 | `WebShoppingCart_createShoppingCart` |
+| C端 - 购物车 | DELETE | `/web-api/jh/shopping-cart/delete-list` | 刪除 | `WebShoppingCart_deleteBlog` |
+| C端 - 购物车 | GET | `/web-api/jh/shopping-cart/list` | 获得购物车列表 | `WebShoppingCart_getShoppingCart` |
+| C端 - 购物车 | POST | `/web-api/jh/shopping-cart/update` | 更新购物车产品数量 | `WebShoppingCart_updateShoppingCart` |
+| c端 - Banner信息 | GET | `/web-api/jh/banner/get` | 获得Banner管理 | `WebBanner_getBanner` |
+| c端 - Banner信息 | GET | `/web-api/jh/banner/page` | 获得Banner管理分页 | `WebBanner_getBannerPage` |
+| default-controller | DELETE | `/admin-api/ai/**` | | `Default_ai404_3` |
+| default-controller | GET | `/admin-api/ai/**` | | `Default_ai404` |
+| default-controller | HEAD | `/admin-api/ai/**` | | `Default_ai404_5` |
+| default-controller | OPTIONS | `/admin-api/ai/**` | | `Default_ai404_6` |
+| default-controller | PATCH | `/admin-api/ai/**` | | `Default_ai404_4` |
+| default-controller | POST | `/admin-api/ai/**` | | `Default_ai404_1` |
+| default-controller | PUT | `/admin-api/ai/**` | | `Default_ai404_2` |
+| default-controller | DELETE | `/admin-api/bpm/**` | | `Default_bpm404_3` |
+| default-controller | GET | `/admin-api/bpm/**` | | `Default_bpm404` |
+| default-controller | HEAD | `/admin-api/bpm/**` | | `Default_bpm404_5` |
+| default-controller | OPTIONS | `/admin-api/bpm/**` | | `Default_bpm404_6` |
+| default-controller | PATCH | `/admin-api/bpm/**` | | `Default_bpm404_4` |
+| default-controller | POST | `/admin-api/bpm/**` | | `Default_bpm404_1` |
+| default-controller | PUT | `/admin-api/bpm/**` | | `Default_bpm404_2` |
+| default-controller | DELETE | `/admin-api/crm/**` | | `Default_crm404_3` |
+| default-controller | GET | `/admin-api/crm/**` | | `Default_crm404` |
+| default-controller | HEAD | `/admin-api/crm/**` | | `Default_crm404_5` |
+| default-controller | OPTIONS | `/admin-api/crm/**` | | `Default_crm404_6` |
+| default-controller | PATCH | `/admin-api/crm/**` | | `Default_crm404_4` |
+| default-controller | POST | `/admin-api/crm/**` | | `Default_crm404_1` |
+| default-controller | PUT | `/admin-api/crm/**` | | `Default_crm404_2` |
+| default-controller | DELETE | `/admin-api/erp/**` | | `Default_erp404_3` |
+| default-controller | GET | `/admin-api/erp/**` | | `Default_erp404` |
+| default-controller | HEAD | `/admin-api/erp/**` | | `Default_erp404_5` |
+| default-controller | OPTIONS | `/admin-api/erp/**` | | `Default_erp404_6` |
+| default-controller | PATCH | `/admin-api/erp/**` | | `Default_erp404_4` |
+| default-controller | POST | `/admin-api/erp/**` | | `Default_erp404_1` |
+| default-controller | PUT | `/admin-api/erp/**` | | `Default_erp404_2` |
+| default-controller | DELETE | `/admin-api/iot/**` | | `Default_iot404_3` |
+| default-controller | GET | `/admin-api/iot/**` | | `Default_iot404` |
+| default-controller | HEAD | `/admin-api/iot/**` | | `Default_iot404_5` |
+| default-controller | OPTIONS | `/admin-api/iot/**` | | `Default_iot404_6` |
+| default-controller | PATCH | `/admin-api/iot/**` | | `Default_iot404_4` |
+| default-controller | POST | `/admin-api/iot/**` | | `Default_iot404_1` |
+| default-controller | PUT | `/admin-api/iot/**` | | `Default_iot404_2` |
+| default-controller | DELETE | `/admin-api/mp/**` | | `Default_mp404_3` |
+| default-controller | GET | `/admin-api/mp/**` | | `Default_mp404` |
+| default-controller | HEAD | `/admin-api/mp/**` | | `Default_mp404_5` |
+| default-controller | OPTIONS | `/admin-api/mp/**` | | `Default_mp404_6` |
+| default-controller | PATCH | `/admin-api/mp/**` | | `Default_mp404_4` |
+| default-controller | POST | `/admin-api/mp/**` | | `Default_mp404_1` |
+| default-controller | PUT | `/admin-api/mp/**` | | `Default_mp404_2` |
+| default-controller | DELETE | `/admin-api/pay/**` | | `Default_pay404_3` |
+| default-controller | GET | `/admin-api/pay/**` | | `Default_pay404` |
+| default-controller | HEAD | `/admin-api/pay/**` | | `Default_pay404_5` |
+| default-controller | OPTIONS | `/admin-api/pay/**` | | `Default_pay404_6` |
+| default-controller | PATCH | `/admin-api/pay/**` | | `Default_pay404_4` |
+| default-controller | POST | `/admin-api/pay/**` | | `Default_pay404_1` |
+| default-controller | PUT | `/admin-api/pay/**` | | `Default_pay404_2` |
+| default-controller | DELETE | `/admin-api/product/**` | | `Default_mall404_17` |
+| default-controller | GET | `/admin-api/product/**` | | `Default_mall404_14` |
+| default-controller | HEAD | `/admin-api/product/**` | | `Default_mall404_19` |
+| default-controller | OPTIONS | `/admin-api/product/**` | | `Default_mall404_20` |
+| default-controller | PATCH | `/admin-api/product/**` | | `Default_mall404_18` |
+| default-controller | POST | `/admin-api/product/**` | | `Default_mall404_15` |
+| default-controller | PUT | `/admin-api/product/**` | | `Default_mall404_16` |
+| default-controller | DELETE | `/admin-api/promotion/**` | | `Default_mall404_10` |
+| default-controller | GET | `/admin-api/promotion/**` | | `Default_mall404_7` |
+| default-controller | HEAD | `/admin-api/promotion/**` | | `Default_mall404_12` |
+| default-controller | OPTIONS | `/admin-api/promotion/**` | | `Default_mall404_13` |
+| default-controller | PATCH | `/admin-api/promotion/**` | | `Default_mall404_11` |
+| default-controller | POST | `/admin-api/promotion/**` | | `Default_mall404_8` |
+| default-controller | PUT | `/admin-api/promotion/**` | | `Default_mall404_9` |
+| default-controller | DELETE | `/admin-api/report/**` | | `Default_report404_3` |
+| default-controller | GET | `/admin-api/report/**` | | `Default_report404` |
+| default-controller | HEAD | `/admin-api/report/**` | | `Default_report404_5` |
+| default-controller | OPTIONS | `/admin-api/report/**` | | `Default_report404_6` |
+| default-controller | PATCH | `/admin-api/report/**` | | `Default_report404_4` |
+| default-controller | POST | `/admin-api/report/**` | | `Default_report404_1` |
+| default-controller | PUT | `/admin-api/report/**` | | `Default_report404_2` |
+| default-controller | DELETE | `/admin-api/trade/**` | | `Default_mall404_3` |
+| default-controller | GET | `/admin-api/trade/**` | | `Default_mall404` |
+| default-controller | HEAD | `/admin-api/trade/**` | | `Default_mall404_5` |
+| default-controller | OPTIONS | `/admin-api/trade/**` | | `Default_mall404_6` |
+| default-controller | PATCH | `/admin-api/trade/**` | | `Default_mall404_4` |
+| default-controller | POST | `/admin-api/trade/**` | | `Default_mall404_1` |
+| default-controller | PUT | `/admin-api/trade/**` | | `Default_mall404_2` |
+| pay-pal-payment-controller | GET | `/admin-api/paypal/cancel` | | `PayPalPayment_cancel` |
+| pay-pal-payment-controller | GET | `/admin-api/paypal/capture-order` | | `PayPalPayment_captureOrder` |
+| pay-pal-payment-controller | POST | `/admin-api/paypal/create-order` | | `PayPalPayment_createOrder` |
+| pay-pal-payment-controller | GET | `/admin-api/paypal/get-order` | | `PayPalPayment_getOrder` |
+| pay-pal-payment-controller | GET | `/admin-api/paypal/get-refund` | | `PayPalPayment_getRefund` |
+| pay-pal-payment-controller | POST | `/admin-api/paypal/refund-captured-payment` | | `PayPalPayment_refundCapturedPayment` |
+| pay-pal-payment-controller | POST | `/admin-api/paypal/search-transaction` | | `PayPalPayment_searchTransaction` |
+| pay-pal-payment-controller | GET | `/admin-api/paypal/success` | | `PayPalPayment_success` |
+| pay-pal-payment-controller | POST | `/admin-api/paypal/track-order` | | `PayPalPayment_trackOrder` |
+| pay-pal-webhook-controller | POST | `/admin-api/paypal/webhook/payment` | | `PayPalWebhook_receivePayPalWebhook` |
+| 用户 App - 地区 | GET | `/app-api/system/area/tree` | 获得地区树 | `AppArea_getAreaTree` |
+| 用户 App - 字典数据 | GET | `/app-api/system/dict-data/type` | 根据字典类型查询字典数据信息 | `AppDictData_getDictDataListByType` |
+| 用户 App - 租户 | GET | `/app-api/system/tenant/get-by-website` | 使用域名,获得租户信息 | `AppTenant_getTenantByWebsite` |
+| 管理后台 - API 访问日志 | GET | `/admin-api/infra/api-access-log/export-excel` | 导出API 访问日志 Excel | `ApiAccessLog_exportApiAccessLogExcel` |
+| 管理后台 - API 访问日志 | GET | `/admin-api/infra/api-access-log/page` | 获得API 访问日志分页 | `ApiAccessLog_getApiAccessLogPage` |
+| 管理后台 - API 错误日志 | GET | `/admin-api/infra/api-error-log/export-excel` | 导出 API 错误日志 Excel | `ApiErrorLog_exportApiErrorLogExcel` |
+| 管理后台 - API 错误日志 | GET | `/admin-api/infra/api-error-log/page` | 获得 API 错误日志分页 | `ApiErrorLog_getApiErrorLogPage` |
+| 管理后台 - API 错误日志 | PUT | `/admin-api/infra/api-error-log/update-status` | 更新 API 错误日志的状态 | `ApiErrorLog_updateApiErrorLogProcess` |
+| 管理后台 - Banner管理 | POST | `/admin-api/jh/banner/create` | 创建Banner管理 | `Banner_createBanner` |
+| 管理后台 - Banner管理 | DELETE | `/admin-api/jh/banner/delete` | 删除Banner管理 | `Banner_deleteBanner` |
+| 管理后台 - Banner管理 | DELETE | `/admin-api/jh/banner/delete-list` | 批量删除Banner管理 | `Banner_deleteBannerList` |
+| 管理后台 - Banner管理 | GET | `/admin-api/jh/banner/export-excel` | 导出Banner管理 Excel | `Banner_exportBannerExcel` |
+| 管理后台 - Banner管理 | GET | `/admin-api/jh/banner/get` | 获得Banner管理 | `Banner_getBanner` |
+| 管理后台 - Banner管理 | GET | `/admin-api/jh/banner/get-import-template` | 获得导入Banner管理模板 | `Banner_getImportTemplate` |
+| 管理后台 - Banner管理 | POST | `/admin-api/jh/banner/import-excel` | 导入Banner管理Excel | `Banner_importBannerExcel` |
+| 管理后台 - Banner管理 | GET | `/admin-api/jh/banner/page` | 获得Banner管理分页 | `Banner_getBannerPage` |
+| 管理后台 - Banner管理 | PUT | `/admin-api/jh/banner/update` | 更新Banner管理 | `Banner_updateBanner` |
+| 管理后台 - FAQ分类 | POST | `/admin-api/jh/faq-cate/create` | 创建FAQ分类 | `FaqCate_createFaqCate` |
+| 管理后台 - FAQ分类 | DELETE | `/admin-api/jh/faq-cate/delete` | 删除FAQ分类 | `FaqCate_deleteFaqCate` |
+| 管理后台 - FAQ分类 | GET | `/admin-api/jh/faq-cate/export-excel` | 导出FAQ分类 Excel | `FaqCate_exportFaqCateExcel` |
+| 管理后台 - FAQ分类 | GET | `/admin-api/jh/faq-cate/get` | 获得FAQ分类 | `FaqCate_getFaqCate` |
+| 管理后台 - FAQ分类 | GET | `/admin-api/jh/faq-cate/get-import-template` | 获得导入FAQ分类模板 | `FaqCate_getImportTemplate` |
+| 管理后台 - FAQ分类 | POST | `/admin-api/jh/faq-cate/import-excel` | 导入FAQ分类Excel | `FaqCate_importFaqCateExcel` |
+| 管理后台 - FAQ分类 | GET | `/admin-api/jh/faq-cate/list` | 获得FAQ分类列表 | `FaqCate_getFaqCateList` |
+| 管理后台 - FAQ分类 | PUT | `/admin-api/jh/faq-cate/update` | 更新FAQ分类 | `FaqCate_updateFaqCate` |
+| 管理后台 - FAQ数据 | GET | `/admin-api/jh/faq/cate-list` | 获得FAQ分类下拉列表 | `Faq_getFaqCateList` |
+| 管理后台 - FAQ数据 | POST | `/admin-api/jh/faq/create` | 创建FAQ数据 | `Faq_createFaq` |
+| 管理后台 - FAQ数据 | DELETE | `/admin-api/jh/faq/delete` | 删除FAQ数据 | `Faq_deleteFaq` |
+| 管理后台 - FAQ数据 | DELETE | `/admin-api/jh/faq/delete-list` | 批量删除FAQ数据 | `Faq_deleteFaqList` |
+| 管理后台 - FAQ数据 | GET | `/admin-api/jh/faq/export-excel` | 导出FAQ数据 Excel | `Faq_exportFaqExcel` |
+| 管理后台 - FAQ数据 | GET | `/admin-api/jh/faq/get` | 获得FAQ数据 | `Faq_getFaq` |
+| 管理后台 - FAQ数据 | GET | `/admin-api/jh/faq/get-import-template` | 获得导入FAQ数据模板 | `Faq_getImportTemplate` |
+| 管理后台 - FAQ数据 | POST | `/admin-api/jh/faq/import-excel` | 导入FAQ数据Excel | `Faq_importFaqExcel` |
+| 管理后台 - FAQ数据 | GET | `/admin-api/jh/faq/page` | 获得FAQ数据分页 | `Faq_getFaqPage` |
+| 管理后台 - FAQ数据 | PUT | `/admin-api/jh/faq/update` | 更新FAQ数据 | `Faq_updateFaq` |
+| 管理后台 - FAQ联系数据 | POST | `/admin-api/jh/faq-contact-us/create` | 创建FAQ联系数据 | `FaqContactUs_createFaqContactUs` |
+| 管理后台 - FAQ联系数据 | DELETE | `/admin-api/jh/faq-contact-us/delete` | 删除FAQ联系数据 | `FaqContactUs_deleteFaqContactUs` |
+| 管理后台 - FAQ联系数据 | DELETE | `/admin-api/jh/faq-contact-us/delete-list` | 批量删除FAQ联系数据 | `FaqContactUs_deleteFaqContactUsList` |
+| 管理后台 - FAQ联系数据 | GET | `/admin-api/jh/faq-contact-us/export-excel` | 导出FAQ联系数据 Excel | `FaqContactUs_exportFaqContactUsExcel` |
+| 管理后台 - FAQ联系数据 | GET | `/admin-api/jh/faq-contact-us/get` | 获得FAQ联系数据 | `FaqContactUs_getFaqContactUs` |
+| 管理后台 - FAQ联系数据 | GET | `/admin-api/jh/faq-contact-us/get-import-template` | 获得导入FAQ联系数据模板 | `FaqContactUs_getImportTemplate` |
+| 管理后台 - FAQ联系数据 | POST | `/admin-api/jh/faq-contact-us/import-excel` | 导入FAQ联系数据Excel | `FaqContactUs_importFaqContactUsExcel` |
+| 管理后台 - FAQ联系数据 | GET | `/admin-api/jh/faq-contact-us/page` | 获得FAQ联系数据分页 | `FaqContactUs_getFaqContactUsPage` |
+| 管理后台 - FAQ联系数据 | PUT | `/admin-api/jh/faq-contact-us/update` | 更新FAQ联系数据 | `FaqContactUs_updateFaqContactUs` |
+| 管理后台 - LX 亚马逊FBA货件详情 | POST | `/admin-api/lx/fba-inbound-shipment-detail/create` | 创建LX 亚马逊FBA货件详情 | `LxFbaInboundShipmentDetail_createFbaInboundShipmentDetail` |
+| 管理后台 - LX 亚马逊FBA货件详情 | DELETE | `/admin-api/lx/fba-inbound-shipment-detail/delete` | 删除LX 亚马逊FBA货件详情 | `LxFbaInboundShipmentDetail_deleteFbaInboundShipmentDetail` |
+| 管理后台 - LX 亚马逊FBA货件详情 | DELETE | `/admin-api/lx/fba-inbound-shipment-detail/delete-list` | 批量删除LX 亚马逊FBA货件详情 | `LxFbaInboundShipmentDetail_deleteFbaInboundShipmentDetailList` |
+| 管理后台 - LX 亚马逊FBA货件详情 | GET | `/admin-api/lx/fba-inbound-shipment-detail/export-excel` | 导出LX 亚马逊FBA货件详情 Excel | `LxFbaInboundShipmentDetail_exportFbaInboundShipmentDetailExcel` |
+| 管理后台 - LX 亚马逊FBA货件详情 | GET | `/admin-api/lx/fba-inbound-shipment-detail/get` | 获得LX 亚马逊FBA货件详情 | `LxFbaInboundShipmentDetail_getFbaInboundShipmentDetail` |
+| 管理后台 - LX 亚马逊FBA货件详情 | GET | `/admin-api/lx/fba-inbound-shipment-detail/get-import-template` | 获得导入LX 亚马逊FBA货件详情模板 | `LxFbaInboundShipmentDetail_getImportTemplate` |
+| 管理后台 - LX 亚马逊FBA货件详情 | POST | `/admin-api/lx/fba-inbound-shipment-detail/import-excel` | 导入LX 亚马逊FBA货件详情Excel | `LxFbaInboundShipmentDetail_importFbaInboundShipmentDetailExcel` |
+| 管理后台 - LX 亚马逊FBA货件详情 | GET | `/admin-api/lx/fba-inbound-shipment-detail/page` | 获得LX 亚马逊FBA货件详情分页 | `LxFbaInboundShipmentDetail_getFbaInboundShipmentDetailPage` |
+| 管理后台 - LX 亚马逊FBA货件详情 | PUT | `/admin-api/lx/fba-inbound-shipment-detail/update` | 更新LX 亚马逊FBA货件详情 | `LxFbaInboundShipmentDetail_updateFbaInboundShipmentDetail` |
+| 管理后台 - LX 亚马逊店铺信息 | POST | `/admin-api/lx/amazon-shop/create` | 创建LX 亚马逊店铺信息 | `LxAmazonShop_createAmazonShop` |
+| 管理后台 - LX 亚马逊店铺信息 | DELETE | `/admin-api/lx/amazon-shop/delete` | 删除LX 亚马逊店铺信息 | `LxAmazonShop_deleteAmazonShop` |
+| 管理后台 - LX 亚马逊店铺信息 | DELETE | `/admin-api/lx/amazon-shop/delete-list` | 批量删除LX 亚马逊店铺信息 | `LxAmazonShop_deleteAmazonShopList` |
+| 管理后台 - LX 亚马逊店铺信息 | GET | `/admin-api/lx/amazon-shop/export-excel` | 导出LX 亚马逊店铺信息 Excel | `LxAmazonShop_exportAmazonShopExcel` |
+| 管理后台 - LX 亚马逊店铺信息 | GET | `/admin-api/lx/amazon-shop/get` | 获得LX 亚马逊店铺信息 | `LxAmazonShop_getAmazonShop` |
+| 管理后台 - LX 亚马逊店铺信息 | GET | `/admin-api/lx/amazon-shop/get-import-template` | 获得导入LX 亚马逊店铺信息模板 | `LxAmazonShop_getImportTemplate` |
+| 管理后台 - LX 亚马逊店铺信息 | POST | `/admin-api/lx/amazon-shop/import-excel` | 导入LX 亚马逊店铺信息Excel | `LxAmazonShop_importAmazonShopExcel` |
+| 管理后台 - LX 亚马逊店铺信息 | GET | `/admin-api/lx/amazon-shop/page` | 获得LX 亚马逊店铺信息分页 | `LxAmazonShop_getAmazonShopPage` |
+| 管理后台 - LX 亚马逊店铺信息 | PUT | `/admin-api/lx/amazon-shop/update` | 更新LX 亚马逊店铺信息 | `LxAmazonShop_updateAmazonShop` |
+| 管理后台 - OAuth2 客户端 | POST | `/admin-api/system/oauth2-client/create` | 创建 OAuth2 客户端 | `OAuth2Client_createOAuth2Client` |
+| 管理后台 - OAuth2 客户端 | DELETE | `/admin-api/system/oauth2-client/delete` | 删除 OAuth2 客户端 | `OAuth2Client_deleteOAuth2Client` |
+| 管理后台 - OAuth2 客户端 | DELETE | `/admin-api/system/oauth2-client/delete-list` | 批量删除 OAuth2 客户端 | `OAuth2Client_deleteOAuth2ClientList` |
+| 管理后台 - OAuth2 客户端 | GET | `/admin-api/system/oauth2-client/get` | 获得 OAuth2 客户端 | `OAuth2Client_getOAuth2Client` |
+| 管理后台 - OAuth2 客户端 | GET | `/admin-api/system/oauth2-client/page` | 获得 OAuth2 客户端分页 | `OAuth2Client_getOAuth2ClientPage` |
+| 管理后台 - OAuth2 客户端 | PUT | `/admin-api/system/oauth2-client/update` | 更新 OAuth2 客户端 | `OAuth2Client_updateOAuth2Client` |
+| 管理后台 - OAuth2.0 令牌 | DELETE | `/admin-api/system/oauth2-token/delete` | 删除访问令牌 | `OAuth2Token_deleteAccessToken` |
+| 管理后台 - OAuth2.0 令牌 | DELETE | `/admin-api/system/oauth2-token/delete-list` | 批量删除访问令牌 | `OAuth2Token_deleteAccessTokenList` |
+| 管理后台 - OAuth2.0 令牌 | GET | `/admin-api/system/oauth2-token/page` | 获得访问令牌分页 | `OAuth2Token_getAccessTokenPage` |
+| 管理后台 - OAuth2.0 授权 | GET | `/admin-api/system/oauth2/authorize` | 获得授权信息 | `OAuth2Open_authorize` |
+| 管理后台 - OAuth2.0 授权 | POST | `/admin-api/system/oauth2/authorize` | 申请授权 | `OAuth2Open_approveOrDeny` |
+| 管理后台 - OAuth2.0 授权 | POST | `/admin-api/system/oauth2/check-token` | 校验访问令牌 | `OAuth2Open_checkToken` |
+| 管理后台 - OAuth2.0 授权 | DELETE | `/admin-api/system/oauth2/token` | 删除访问令牌 | `OAuth2Open_revokeToken` |
+| 管理后台 - OAuth2.0 授权 | POST | `/admin-api/system/oauth2/token` | 获得访问令牌 | `OAuth2Open_postAccessToken` |
+| 管理后台 - OAuth2.0 用户 | GET | `/admin-api/system/oauth2/user/get` | 获得用户基本信息 | `OAuth2User_getUserInfo` |
+| 管理后台 - OAuth2.0 用户 | PUT | `/admin-api/system/oauth2/user/update` | 更新用户基本信息 | `OAuth2User_updateUserInfo` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | POST | `/admin-api/paypal/webhook-idempotent/create` | 创建PayPal Webhook 幂等表(防重复处理) | `WebhookIdempotent_createWebhookIdempotent` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | DELETE | `/admin-api/paypal/webhook-idempotent/delete` | 删除PayPal Webhook 幂等表(防重复处理) | `WebhookIdempotent_deleteWebhookIdempotent` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | DELETE | `/admin-api/paypal/webhook-idempotent/delete-list` | 批量删除PayPal Webhook 幂等表(防重复处理) | `WebhookIdempotent_deleteWebhookIdempotentList` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | GET | `/admin-api/paypal/webhook-idempotent/export-excel` | 导出PayPal Webhook 幂等表(防重复处理) Excel | `WebhookIdempotent_exportWebhookIdempotentExcel` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | GET | `/admin-api/paypal/webhook-idempotent/get` | 获得PayPal Webhook 幂等表(防重复处理) | `WebhookIdempotent_getWebhookIdempotent` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | GET | `/admin-api/paypal/webhook-idempotent/get-import-template` | 获得导入PayPal Webhook 幂等表(防重复处理)模板 | `WebhookIdempotent_getImportTemplate` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | POST | `/admin-api/paypal/webhook-idempotent/import-excel` | 导入PayPal Webhook 幂等表(防重复处理)Excel | `WebhookIdempotent_importWebhookIdempotentExcel` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | GET | `/admin-api/paypal/webhook-idempotent/page` | 获得PayPal Webhook 幂等表(防重复处理)分页 | `WebhookIdempotent_getWebhookIdempotentPage` |
+| 管理后台 - PayPal Webhook 幂等表(防重复处理) | PUT | `/admin-api/paypal/webhook-idempotent/update` | 更新PayPal Webhook 幂等表(防重复处理) | `WebhookIdempotent_updateWebhookIdempotent` |
+| 管理后台 - Redis 监控 | GET | `/admin-api/infra/redis/get-monitor-info` | 获得 Redis 监控信息 | `Redis_getRedisMonitorInfo` |
+| 管理后台 - app版本号管理 | POST | `/admin-api/jh/appversion/create` | 创建app版本号管理 | `Appversion_createAppversion` |
+| 管理后台 - app版本号管理 | DELETE | `/admin-api/jh/appversion/delete` | 删除app版本号管理 | `Appversion_deleteAppversion` |
+| 管理后台 - app版本号管理 | DELETE | `/admin-api/jh/appversion/delete-list` | 批量删除app版本号管理 | `Appversion_deleteAppversionList` |
+| 管理后台 - app版本号管理 | GET | `/admin-api/jh/appversion/export-excel` | 导出app版本号管理 Excel | `Appversion_exportAppversionExcel` |
+| 管理后台 - app版本号管理 | GET | `/admin-api/jh/appversion/get` | 获得app版本号管理 | `Appversion_getAppversion` |
+| 管理后台 - app版本号管理 | GET | `/admin-api/jh/appversion/get-import-template` | 获得导入app版本号管理模板 | `Appversion_getImportTemplate` |
+| 管理后台 - app版本号管理 | POST | `/admin-api/jh/appversion/import-excel` | 导入app版本号管理Excel | `Appversion_importAppversionExcel` |
+| 管理后台 - app版本号管理 | GET | `/admin-api/jh/appversion/page` | 获得app版本号管理分页 | `Appversion_getAppversionPage` |
+| 管理后台 - app版本号管理 | PUT | `/admin-api/jh/appversion/update` | 更新app版本号管理 | `Appversion_updateAppversion` |
+| 管理后台 - blog分类 | POST | `/admin-api/jh/blog-cate/create` | 创建blog分类 | `BlogCate_createBlogCate` |
+| 管理后台 - blog分类 | DELETE | `/admin-api/jh/blog-cate/delete` | 删除blog分类 | `BlogCate_deleteBlogCate` |
+| 管理后台 - blog分类 | DELETE | `/admin-api/jh/blog-cate/delete-list` | 批量删除blog分类 | `BlogCate_deleteBlogCateList` |
+| 管理后台 - blog分类 | GET | `/admin-api/jh/blog-cate/export-excel` | 导出blog分类 Excel | `BlogCate_exportBlogCateExcel` |
+| 管理后台 - blog分类 | GET | `/admin-api/jh/blog-cate/get` | 获得blog分类 | `BlogCate_getBlogCate` |
+| 管理后台 - blog分类 | GET | `/admin-api/jh/blog-cate/get-import-template` | 获得导入blog分类模板 | `BlogCate_getImportTemplate` |
+| 管理后台 - blog分类 | POST | `/admin-api/jh/blog-cate/import-excel` | 导入blog分类Excel | `BlogCate_importBlogCateExcel` |
+| 管理后台 - blog分类 | GET | `/admin-api/jh/blog-cate/page` | 获得blog分类分页 | `BlogCate_getBlogCatePage` |
+| 管理后台 - blog分类 | PUT | `/admin-api/jh/blog-cate/update` | 更新blog分类 | `BlogCate_updateBlogCate` |
+| 管理后台 - blog管理 | GET | `/admin-api/jh/blog/blog-cate-relation/list-by-blog-id` | 获得blog分类列表 | `Blog_getBlogCateRelationListByBlogId` |
+| 管理后台 - blog管理 | POST | `/admin-api/jh/blog/create` | 创建blog管理 | `Blog_createBlog` |
+| 管理后台 - blog管理 | DELETE | `/admin-api/jh/blog/delete` | 删除blog管理 | `Blog_deleteBlog` |
+| 管理后台 - blog管理 | DELETE | `/admin-api/jh/blog/delete-list` | 批量删除blog管理 | `Blog_deleteBlogList` |
+| 管理后台 - blog管理 | GET | `/admin-api/jh/blog/export-excel` | 导出blog管理 Excel | `Blog_exportBlogExcel` |
+| 管理后台 - blog管理 | GET | `/admin-api/jh/blog/get` | 获得blog管理 | `Blog_getBlog` |
+| 管理后台 - blog管理 | GET | `/admin-api/jh/blog/get-import-template` | 获得导入blog管理模板 | `Blog_getImportTemplate` |
+| 管理后台 - blog管理 | POST | `/admin-api/jh/blog/import-excel` | 导入blog管理Excel | `Blog_importBlogExcel` |
+| 管理后台 - blog管理 | GET | `/admin-api/jh/blog/page` | 获得blog管理分页 | `Blog_getBlogPage` |
+| 管理后台 - blog管理 | PUT | `/admin-api/jh/blog/update` | 更新blog管理 | `Blog_updateBlog` |
+| 管理后台 - news分类 | POST | `/admin-api/jh/news-cate/create` | 创建news分类 | `NewsCate_createNewsCate` |
+| 管理后台 - news分类 | DELETE | `/admin-api/jh/news-cate/delete` | 删除news分类 | `NewsCate_deleteNewsCate` |
+| 管理后台 - news分类 | DELETE | `/admin-api/jh/news-cate/delete-list` | 批量删除news分类 | `NewsCate_deleteNewsCateList` |
+| 管理后台 - news分类 | GET | `/admin-api/jh/news-cate/export-excel` | 导出news分类 Excel | `NewsCate_exportNewsCateExcel` |
+| 管理后台 - news分类 | GET | `/admin-api/jh/news-cate/get` | 获得news分类 | `NewsCate_getNewsCate` |
+| 管理后台 - news分类 | GET | `/admin-api/jh/news-cate/get-import-template` | 获得导入news分类模板 | `NewsCate_getImportTemplate` |
+| 管理后台 - news分类 | POST | `/admin-api/jh/news-cate/import-excel` | 导入news分类Excel | `NewsCate_importNewsCateExcel` |
+| 管理后台 - news分类 | GET | `/admin-api/jh/news-cate/page` | 获得news分类分页 | `NewsCate_getNewsCatePage` |
+| 管理后台 - news分类 | PUT | `/admin-api/jh/news-cate/update` | 更新news分类 | `NewsCate_updateNewsCate` |
+| 管理后台 - news管理 | POST | `/admin-api/jh/news/create` | 创建news管理 | `News_createNews` |
+| 管理后台 - news管理 | DELETE | `/admin-api/jh/news/delete` | 删除news管理 | `News_deleteNews` |
+| 管理后台 - news管理 | DELETE | `/admin-api/jh/news/delete-list` | 批量删除news管理 | `News_deleteNewsList` |
+| 管理后台 - news管理 | GET | `/admin-api/jh/news/export-excel` | 导出news管理 Excel | `News_exportNewsExcel` |
+| 管理后台 - news管理 | GET | `/admin-api/jh/news/get` | 获得news管理 | `News_getNews` |
+| 管理后台 - news管理 | GET | `/admin-api/jh/news/get-import-template` | 获得导入news管理模板 | `News_getImportTemplate` |
+| 管理后台 - news管理 | POST | `/admin-api/jh/news/import-excel` | 导入news管理Excel | `News_importNewsExcel` |
+| 管理后台 - news管理 | GET | `/admin-api/jh/news/news-cate-relation/list-by-news-id` | 获得news分类关联列表 | `News_getNewsCateRelationListByNewsId` |
+| 管理后台 - news管理 | GET | `/admin-api/jh/news/page` | 获得news管理分页 | `News_getNewsPage` |
+| 管理后台 - news管理 | PUT | `/admin-api/jh/news/update` | 更新news管理 | `News_updateNews` |
+| 管理后台 - 二维码 | POST | `/admin-api/jh/download-qrcode/create` | 创建二维码 | `DownloadQrcode_createDownloadQrcode` |
+| 管理后台 - 二维码 | DELETE | `/admin-api/jh/download-qrcode/delete` | 删除二维码 | `DownloadQrcode_deleteDownloadQrcode` |
+| 管理后台 - 二维码 | DELETE | `/admin-api/jh/download-qrcode/delete-list` | 批量删除二维码 | `DownloadQrcode_deleteDownloadQrcodeList` |
+| 管理后台 - 二维码 | GET | `/admin-api/jh/download-qrcode/export-excel` | 导出二维码 Excel | `DownloadQrcode_exportDownloadQrcodeExcel` |
+| 管理后台 - 二维码 | GET | `/admin-api/jh/download-qrcode/get` | 获得二维码 | `DownloadQrcode_getDownloadQrcode` |
+| 管理后台 - 二维码 | GET | `/admin-api/jh/download-qrcode/get-import-template` | 获得导入二维码模板 | `DownloadQrcode_getImportTemplate` |
+| 管理后台 - 二维码 | POST | `/admin-api/jh/download-qrcode/import-excel` | 导入二维码Excel | `DownloadQrcode_importDownloadQrcodeExcel` |
+| 管理后台 - 二维码 | GET | `/admin-api/jh/download-qrcode/page` | 获得二维码分页(含统计) | `DownloadQrcode_getDownloadQrcodePage` |
+| 管理后台 - 二维码 | PUT | `/admin-api/jh/download-qrcode/update` | 更新二维码 | `DownloadQrcode_updateDownloadQrcode` |
+| 管理后台 - 产品 | PUT | `/admin-api/jh/product/change-status` | 批量上下架产品 | `Product_updateProductStatus` |
+| 管理后台 - 产品 | POST | `/admin-api/jh/product/create` | 创建产品 | `Product_createProduct` |
+| 管理后台 - 产品 | DELETE | `/admin-api/jh/product/delete` | 删除产品 | `Product_deleteProduct` |
+| 管理后台 - 产品 | DELETE | `/admin-api/jh/product/delete-list` | 批量删除产品 | `Product_deleteProductList` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/get` | 获得产品 | `Product_getProduct` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/page` | 获得产品分页 | `Product_getProductPage` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/product-attr/list-by-product-id` | 获得产品规格类型关联列表 | `Product_getProductAttrListByProductId` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/product-detail/list-by-product-id` | 获得产品详情列表 | `Product_getProductDetailListByProductId` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/product-sku/list-by-product-id` | 获得产品规格列表 | `Product_getProductSkuListByProductId` |
+| 管理后台 - 产品 | GET | `/admin-api/jh/product/product/sku-list` | 获得产品及规格列表-优惠券中使用 | `Product_getProductSkuList` |
+| 管理后台 - 产品 | PUT | `/admin-api/jh/product/update` | 更新产品 | `Product_updateProduct` |
+| 管理后台 - 产品分类 | PUT | `/admin-api/jh/product-cate/change-status` | 修改产品分类启用/停用状态 | `ProductCate_updateProductCateStatus` |
+| 管理后台 - 产品分类 | POST | `/admin-api/jh/product-cate/create` | 创建产品分类 | `ProductCate_createProductCate` |
+| 管理后台 - 产品分类 | DELETE | `/admin-api/jh/product-cate/delete` | 删除产品分类 | `ProductCate_deleteProductCate` |
+| 管理后台 - 产品分类 | DELETE | `/admin-api/jh/product-cate/delete-list` | 批量删除产品分类 | `ProductCate_deleteProductCateList` |
+| 管理后台 - 产品分类 | GET | `/admin-api/jh/product-cate/get` | 获得产品分类 | `ProductCate_getProductCate` |
+| 管理后台 - 产品分类 | GET | `/admin-api/jh/product-cate/page` | 获得产品分类分页 | `ProductCate_getProductCatePage` |
+| 管理后台 - 产品分类 | PUT | `/admin-api/jh/product-cate/update` | 更新产品分类 | `ProductCate_updateProductCate` |
+| 管理后台 - 产品属性 | PUT | `/admin-api/jh/product-attr-type/change-status` | 启用/停用产品属性状态 | `ProductAttrType_updateProductAttrTypeStatus` |
+| 管理后台 - 产品属性 | POST | `/admin-api/jh/product-attr-type/create` | 创建产品属性 | `ProductAttrType_createProductAttrType` |
+| 管理后台 - 产品属性 | DELETE | `/admin-api/jh/product-attr-type/delete` | 删除产品属性 | `ProductAttrType_deleteProductAttrType` |
+| 管理后台 - 产品属性 | DELETE | `/admin-api/jh/product-attr-type/delete-list` | 批量删除产品属性 | `ProductAttrType_deleteProductAttrTypeList` |
+| 管理后台 - 产品属性 | GET | `/admin-api/jh/product-attr-type/get` | 获得产品属性 | `ProductAttrType_getProductAttrType` |
+| 管理后台 - 产品属性 | GET | `/admin-api/jh/product-attr-type/page` | 获得产品属性分页 | `ProductAttrType_getProductAttrTypePage` |
+| 管理后台 - 产品属性 | PUT | `/admin-api/jh/product-attr-type/update` | 更新产品属性 | `ProductAttrType_updateProductAttrType` |
+| 管理后台 - 产品属性值 | POST | `/admin-api/jh/product-attr-data/create` | 创建产品属性值 | `ProductAttrData_createProductAttrData` |
+| 管理后台 - 产品属性值 | DELETE | `/admin-api/jh/product-attr-data/delete` | 删除产品属性值 | `ProductAttrData_deleteProductAttrData` |
+| 管理后台 - 产品属性值 | DELETE | `/admin-api/jh/product-attr-data/delete-list` | 批量删除产品属性值 | `ProductAttrData_deleteProductAttrDataList` |
+| 管理后台 - 产品属性值 | GET | `/admin-api/jh/product-attr-data/get` | 获得产品属性值 | `ProductAttrData_getProductAttrData` |
+| 管理后台 - 产品属性值 | GET | `/admin-api/jh/product-attr-data/page` | 获得产品属性值分页 | `ProductAttrData_getProductAttrDataPage` |
+| 管理后台 - 产品属性值 | PUT | `/admin-api/jh/product-attr-data/update` | 更新产品属性值 | `ProductAttrData_updateProductAttrData` |
+| 管理后台 - 代码生成器 | POST | `/admin-api/infra/codegen/create-list` | 基于数据库的表结构,创建代码生成器的表和字段定义 | `Codegen_createCodegenList` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/db/table/list` | 获得数据库自带的表定义列表 | `Codegen_getDatabaseTableList` |
+| 管理后台 - 代码生成器 | DELETE | `/admin-api/infra/codegen/delete` | 删除数据库的表和字段定义 | `Codegen_deleteCodegen` |
+| 管理后台 - 代码生成器 | DELETE | `/admin-api/infra/codegen/delete-list` | 批量删除数据库的表和字段定义 | `Codegen_deleteCodegenList` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/detail` | 获得表和字段的明细 | `Codegen_getCodegenDetail` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/download` | 下载生成代码 | `Codegen_downloadCodegen` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/preview` | 预览生成代码 | `Codegen_previewCodegen` |
+| 管理后台 - 代码生成器 | PUT | `/admin-api/infra/codegen/sync-from-db` | 基于数据库的表结构,同步数据库的表和字段定义 | `Codegen_syncCodegenFromDB` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/table/list` | 获得表定义列表 | `Codegen_getCodegenTableList` |
+| 管理后台 - 代码生成器 | GET | `/admin-api/infra/codegen/table/page` | 获得表定义分页 | `Codegen_getCodegenTablePage` |
+| 管理后台 - 代码生成器 | PUT | `/admin-api/infra/codegen/update` | 更新数据库的表和字段定义 | `Codegen_updateCodegen` |
+| 管理后台 - 协议 | POST | `/admin-api/jh/agreement/create` | 创建协议 | `Agreement_createAgreement` |
+| 管理后台 - 协议 | DELETE | `/admin-api/jh/agreement/delete` | 删除协议 | `Agreement_deleteAgreement` |
+| 管理后台 - 协议 | DELETE | `/admin-api/jh/agreement/delete-list` | 批量删除协议 | `Agreement_deleteAgreementList` |
+| 管理后台 - 协议 | GET | `/admin-api/jh/agreement/export-excel` | 导出协议 Excel | `Agreement_exportAgreementExcel` |
+| 管理后台 - 协议 | GET | `/admin-api/jh/agreement/get` | 获得协议 | `Agreement_getAgreement` |
+| 管理后台 - 协议 | GET | `/admin-api/jh/agreement/get-import-template` | 获得导入协议模板 | `Agreement_getImportTemplate` |
+| 管理后台 - 协议 | POST | `/admin-api/jh/agreement/import-excel` | 导入协议Excel | `Agreement_importAgreementExcel` |
+| 管理后台 - 协议 | GET | `/admin-api/jh/agreement/page` | 获得协议分页 | `Agreement_getAgreementPage` |
+| 管理后台 - 协议 | PUT | `/admin-api/jh/agreement/update` | 更新协议 | `Agreement_updateAgreement` |
+| 管理后台 - 参数配置 | POST | `/admin-api/infra/config/create` | 创建参数配置 | `Config_createConfig` |
+| 管理后台 - 参数配置 | DELETE | `/admin-api/infra/config/delete` | 删除参数配置 | `Config_deleteConfig` |
+| 管理后台 - 参数配置 | DELETE | `/admin-api/infra/config/delete-list` | 批量删除参数配置 | `Config_deleteConfigList` |
+| 管理后台 - 参数配置 | GET | `/admin-api/infra/config/export-excel` | 导出参数配置 | `Config_exportConfig` |
+| 管理后台 - 参数配置 | GET | `/admin-api/infra/config/get` | 获得参数配置 | `Config_getConfig` |
+| 管理后台 - 参数配置 | GET | `/admin-api/infra/config/get-value-by-key` | 根据参数键名查询参数值 | `Config_getConfigKey` |
+| 管理后台 - 参数配置 | GET | `/admin-api/infra/config/page` | 获取参数配置分页 | `Config_getConfigPage` |
+| 管理后台 - 参数配置 | PUT | `/admin-api/infra/config/update` | 修改参数配置 | `Config_updateConfig` |
+| 管理后台 - 合作联系数据 | POST | `/admin-api/jh/cooperation/create` | 创建合作联系数据 | `Cooperation_createCooperation` |
+| 管理后台 - 合作联系数据 | DELETE | `/admin-api/jh/cooperation/delete` | 删除合作联系数据 | `Cooperation_deleteCooperation` |
+| 管理后台 - 合作联系数据 | DELETE | `/admin-api/jh/cooperation/delete-list` | 批量删除合作联系数据 | `Cooperation_deleteCooperationList` |
+| 管理后台 - 合作联系数据 | GET | `/admin-api/jh/cooperation/export-excel` | 导出合作联系数据 Excel | `Cooperation_exportCooperationExcel` |
+| 管理后台 - 合作联系数据 | GET | `/admin-api/jh/cooperation/get` | 获得合作联系数据 | `Cooperation_getCooperation` |
+| 管理后台 - 合作联系数据 | GET | `/admin-api/jh/cooperation/get-import-template` | 获得导入合作联系数据模板 | `Cooperation_getImportTemplate` |
+| 管理后台 - 合作联系数据 | POST | `/admin-api/jh/cooperation/import-excel` | 导入合作联系数据Excel | `Cooperation_importCooperationExcel` |
+| 管理后台 - 合作联系数据 | GET | `/admin-api/jh/cooperation/page` | 获得合作联系数据分页 | `Cooperation_getCooperationPage` |
+| 管理后台 - 合作联系数据 | PUT | `/admin-api/jh/cooperation/update` | 更新合作联系数据 | `Cooperation_updateCooperation` |
+| 管理后台 - 售后 | GET | `/admin-api/jh/order-after-sale/export-excel` | 导出售后 Excel | `OrderAfterSale_exportOrderAfterSaleExcel` |
+| 管理后台 - 售后 | GET | `/admin-api/jh/order-after-sale/get` | 获得售后 | `OrderAfterSale_getOrderAfterSale` |
+| 管理后台 - 售后 | GET | `/admin-api/jh/order-after-sale/page` | 获得售后分页 | `OrderAfterSale_getOrderAfterSalePage` |
+| 管理后台 - 售后政策 | POST | `/admin-api/jh/after-sales-policy/create` | 创建售后政策 | `AfterSalesPolicy_createAfterSalesPolicy` |
+| 管理后台 - 售后政策 | DELETE | `/admin-api/jh/after-sales-policy/delete` | 删除售后政策 | `AfterSalesPolicy_deleteAfterSalesPolicy` |
+| 管理后台 - 售后政策 | DELETE | `/admin-api/jh/after-sales-policy/delete-list` | 批量删除售后政策 | `AfterSalesPolicy_deleteAfterSalesPolicyList` |
+| 管理后台 - 售后政策 | GET | `/admin-api/jh/after-sales-policy/export-excel` | 导出售后政策 Excel | `AfterSalesPolicy_exportAfterSalesPolicyExcel` |
+| 管理后台 - 售后政策 | GET | `/admin-api/jh/after-sales-policy/get` | 获得售后政策 | `AfterSalesPolicy_getAfterSalesPolicy` |
+| 管理后台 - 售后政策 | GET | `/admin-api/jh/after-sales-policy/get-import-template` | 获得导入售后政策模板 | `AfterSalesPolicy_getImportTemplate` |
+| 管理后台 - 售后政策 | POST | `/admin-api/jh/after-sales-policy/import-excel` | 导入售后政策Excel | `AfterSalesPolicy_importAfterSalesPolicyExcel` |
+| 管理后台 - 售后政策 | GET | `/admin-api/jh/after-sales-policy/page` | 获得售后政策分页 | `AfterSalesPolicy_getAfterSalesPolicyPage` |
+| 管理后台 - 售后政策 | PUT | `/admin-api/jh/after-sales-policy/update` | 更新售后政策 | `AfterSalesPolicy_updateAfterSalesPolicy` |
+| 管理后台 - 售后政策-品牌 | POST | `/admin-api/jh/after-sales-brand/create` | 创建售后政策-品牌 | `AfterSalesBrand_createAfterSalesBrand` |
+| 管理后台 - 售后政策-品牌 | DELETE | `/admin-api/jh/after-sales-brand/delete` | 删除售后政策-品牌 | `AfterSalesBrand_deleteAfterSalesBrand` |
+| 管理后台 - 售后政策-品牌 | DELETE | `/admin-api/jh/after-sales-brand/delete-list` | 批量删除售后政策-品牌 | `AfterSalesBrand_deleteAfterSalesBrandList` |
+| 管理后台 - 售后政策-品牌 | GET | `/admin-api/jh/after-sales-brand/export-excel` | 导出售后政策-品牌 Excel | `AfterSalesBrand_exportAfterSalesBrandExcel` |
+| 管理后台 - 售后政策-品牌 | GET | `/admin-api/jh/after-sales-brand/get` | 获得售后政策-品牌 | `AfterSalesBrand_getAfterSalesBrand` |
+| 管理后台 - 售后政策-品牌 | GET | `/admin-api/jh/after-sales-brand/get-import-template` | 获得导入售后政策-品牌模板 | `AfterSalesBrand_getImportTemplate` |
+| 管理后台 - 售后政策-品牌 | POST | `/admin-api/jh/after-sales-brand/import-excel` | 导入售后政策-品牌Excel | `AfterSalesBrand_importAfterSalesBrandExcel` |
+| 管理后台 - 售后政策-品牌 | GET | `/admin-api/jh/after-sales-brand/list-available` | 获得可用的品牌列表 | `AfterSalesBrand_getAvailableBrandList` |
+| 管理后台 - 售后政策-品牌 | GET | `/admin-api/jh/after-sales-brand/page` | 获得售后政策-品牌分页 | `AfterSalesBrand_getAfterSalesBrandPage` |
+| 管理后台 - 售后政策-品牌 | PUT | `/admin-api/jh/after-sales-brand/update` | 更新售后政策-品牌 | `AfterSalesBrand_updateAfterSalesBrand` |
+| 管理后台 - 国家信息 | POST | `/admin-api/jh/address-country/create` | 创建国家信息 | `AddressCountry_createAddressCountry` |
+| 管理后台 - 国家信息 | DELETE | `/admin-api/jh/address-country/delete` | 删除国家信息 | `AddressCountry_deleteAddressCountry` |
+| 管理后台 - 国家信息 | DELETE | `/admin-api/jh/address-country/delete-list` | 批量删除国家信息 | `AddressCountry_deleteAddressCountryList` |
+| 管理后台 - 国家信息 | GET | `/admin-api/jh/address-country/export-excel` | 导出国家信息 Excel | `AddressCountry_exportAddressCountryExcel` |
+| 管理后台 - 国家信息 | GET | `/admin-api/jh/address-country/get` | 获得国家信息 | `AddressCountry_getAddressCountry` |
+| 管理后台 - 国家信息 | GET | `/admin-api/jh/address-country/get-import-template` | 获得导入国家信息模板 | `AddressCountry_getImportTemplate` |
+| 管理后台 - 国家信息 | POST | `/admin-api/jh/address-country/import-excel` | 导入国家信息Excel | `AddressCountry_importAddressCountryExcel` |
+| 管理后台 - 国家信息 | GET | `/admin-api/jh/address-country/options-for-shipping` | 获得运费规则国家下拉选项(弃用) | `AddressCountry_getOptionsForShipping` |
+| 管理后台 - 国家信息 | GET | `/admin-api/jh/address-country/page` | 获得国家信息分页 | `AddressCountry_getAddressCountryPage` |
+| 管理后台 - 国家信息 | PUT | `/admin-api/jh/address-country/update` | 更新国家信息 | `AddressCountry_updateAddressCountry` |
+| 管理后台 - 国家信息 | PUT | `/admin-api/jh/address-country/update-status-list` | 批量更新国家信息状态 | `AddressCountry_updateAddressCountryStatusList` |
+| 管理后台 - 地区 | GET | `/admin-api/system/area/get-by-ip` | 获得 IP 对应的地区名 | `Area_getAreaByIp` |
+| 管理后台 - 地区 | GET | `/admin-api/system/area/tree` | 获得地区树 | `Area_getAreaTree` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | POST | `/admin-api/jh/article/create` | 创建基础数据-说明 | `Article_createArticle` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | DELETE | `/admin-api/jh/article/delete` | 删除基础数据-说明 | `Article_deleteArticle` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | DELETE | `/admin-api/jh/article/delete-list` | 批量删除基础数据-说明 | `Article_deleteArticleList` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | GET | `/admin-api/jh/article/export-excel` | 导出基础数据-说明 Excel | `Article_exportArticleExcel` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | GET | `/admin-api/jh/article/get` | 获得基础数据-说明 | `Article_getArticle` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | GET | `/admin-api/jh/article/get-import-template` | 获得导入基础数据-说明模板 | `Article_getImportTemplate` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | POST | `/admin-api/jh/article/import-excel` | 导入基础数据-说明Excel | `Article_importArticleExcel` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | GET | `/admin-api/jh/article/page` | 获得基础数据-说明分页 | `Article_getArticlePage` |
+| 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等) | PUT | `/admin-api/jh/article/update` | 更新基础数据-说明 | `Article_updateArticle` |
+| 管理后台 - 字典数据 | POST | `/admin-api/system/dict-data/create` | 新增字典数据 | `DictData_createDictData` |
+| 管理后台 - 字典数据 | DELETE | `/admin-api/system/dict-data/delete` | 删除字典数据 | `DictData_deleteDictData` |
+| 管理后台 - 字典数据 | DELETE | `/admin-api/system/dict-data/delete-list` | 批量删除字典数据 | `DictData_deleteDictDataList` |
+| 管理后台 - 字典数据 | GET | `/admin-api/system/dict-data/export-excel` | 导出字典数据 | `DictData_export` |
+| 管理后台 - 字典数据 | GET | `/admin-api/system/dict-data/get` | /查询字典数据详细 | `DictData_getDictData` |
+| 管理后台 - 字典数据 | GET | `/admin-api/system/dict-data/list-all-simple` | 获得全部字典数据列表 | `DictData_getSimpleDictDataList` |
+| 管理后台 - 字典数据 | GET | `/admin-api/system/dict-data/page` | 获得字典类型的分页 | `DictData_getDictTypePage` |
+| 管理后台 - 字典数据 | GET | `/admin-api/system/dict-data/simple-list` | 获得全部字典数据列表 | `DictData_getSimpleDictDataList_1` |
+| 管理后台 - 字典数据 | PUT | `/admin-api/system/dict-data/update` | 修改字典数据 | `DictData_updateDictData` |
+| 管理后台 - 字典类型 | POST | `/admin-api/system/dict-type/create` | 创建字典类型 | `DictType_createDictType` |
+| 管理后台 - 字典类型 | DELETE | `/admin-api/system/dict-type/delete` | 删除字典类型 | `DictType_deleteDictType` |
+| 管理后台 - 字典类型 | DELETE | `/admin-api/system/dict-type/delete-list` | 批量删除字典类型 | `DictType_deleteDictTypeList` |
+| 管理后台 - 字典类型 | GET | `/admin-api/system/dict-type/export-excel` | 导出数据类型 | `DictType_export` |
+| 管理后台 - 字典类型 | GET | `/admin-api/system/dict-type/get` | /查询字典类型详细 | `DictType_getDictType` |
+| 管理后台 - 字典类型 | GET | `/admin-api/system/dict-type/list-all-simple` | 获得全部字典类型列表 | `DictType_getSimpleDictTypeList` |
+| 管理后台 - 字典类型 | GET | `/admin-api/system/dict-type/page` | 获得字典类型的分页列表 | `DictType_pageDictTypes` |
+| 管理后台 - 字典类型 | GET | `/admin-api/system/dict-type/simple-list` | 获得全部字典类型列表 | `DictType_getSimpleDictTypeList_1` |
+| 管理后台 - 字典类型 | PUT | `/admin-api/system/dict-type/update` | 修改字典类型 | `DictType_updateDictType` |
+| 管理后台 - 学生 | POST | `/admin-api/infra/demo03-student-erp/create` | 创建学生 | `Demo03StudentErp_createDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/delete` | 删除学生 | `Demo03StudentErp_deleteDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/delete-list` | 批量删除学生 | `Demo03StudentErp_deleteDemo03StudentList` |
+| 管理后台 - 学生 | POST | `/admin-api/infra/demo03-student-erp/demo03-course/create` | 创建学生课程 | `Demo03StudentErp_createDemo03Course` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/demo03-course/delete` | 删除学生课程 | `Demo03StudentErp_deleteDemo03Course` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/demo03-course/delete-list` | 批量删除学生课程 | `Demo03StudentErp_deleteDemo03CourseList` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/demo03-course/get` | 获得学生课程 | `Demo03StudentErp_getDemo03Course` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/demo03-course/page` | 获得学生课程分页 | `Demo03StudentErp_getDemo03CoursePage` |
+| 管理后台 - 学生 | PUT | `/admin-api/infra/demo03-student-erp/demo03-course/update` | 更新学生课程 | `Demo03StudentErp_updateDemo03Course` |
+| 管理后台 - 学生 | POST | `/admin-api/infra/demo03-student-erp/demo03-grade/create` | 创建学生班级 | `Demo03StudentErp_createDemo03Grade` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/demo03-grade/delete` | 删除学生班级 | `Demo03StudentErp_deleteDemo03Grade` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-erp/demo03-grade/delete-list` | 批量删除学生班级 | `Demo03StudentErp_deleteDemo03GradeList` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/demo03-grade/get` | 获得学生班级 | `Demo03StudentErp_getDemo03Grade` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/demo03-grade/page` | 获得学生班级分页 | `Demo03StudentErp_getDemo03GradePage` |
+| 管理后台 - 学生 | PUT | `/admin-api/infra/demo03-student-erp/demo03-grade/update` | 更新学生班级 | `Demo03StudentErp_updateDemo03Grade` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/export-excel` | 导出学生 Excel | `Demo03StudentErp_exportDemo03StudentExcel` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/get` | 获得学生 | `Demo03StudentErp_getDemo03Student` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-erp/page` | 获得学生分页 | `Demo03StudentErp_getDemo03StudentPage` |
+| 管理后台 - 学生 | PUT | `/admin-api/infra/demo03-student-erp/update` | 更新学生 | `Demo03StudentErp_updateDemo03Student` |
+| 管理后台 - 学生 | POST | `/admin-api/infra/demo03-student-inner/create` | 创建学生 | `Demo03StudentInner_createDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-inner/delete` | 删除学生 | `Demo03StudentInner_deleteDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-inner/delete-list` | 批量删除学生 | `Demo03StudentInner_deleteDemo03StudentList` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-inner/demo03-course/list-by-student-id` | 获得学生课程列表 | `Demo03StudentInner_getDemo03CourseListByStudentId` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-inner/demo03-grade/get-by-student-id` | 获得学生班级 | `Demo03StudentInner_getDemo03GradeByStudentId` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-inner/export-excel` | 导出学生 Excel | `Demo03StudentInner_exportDemo03StudentExcel` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-inner/get` | 获得学生 | `Demo03StudentInner_getDemo03Student` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-inner/page` | 获得学生分页 | `Demo03StudentInner_getDemo03StudentPage` |
+| 管理后台 - 学生 | PUT | `/admin-api/infra/demo03-student-inner/update` | 更新学生 | `Demo03StudentInner_updateDemo03Student` |
+| 管理后台 - 学生 | POST | `/admin-api/infra/demo03-student-normal/create` | 创建学生 | `Demo03StudentNormal_createDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-normal/delete` | 删除学生 | `Demo03StudentNormal_deleteDemo03Student` |
+| 管理后台 - 学生 | DELETE | `/admin-api/infra/demo03-student-normal/delete-list` | 批量删除学生 | `Demo03StudentNormal_deleteDemo03StudentList` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-normal/demo03-course/list-by-student-id` | 获得学生课程列表 | `Demo03StudentNormal_getDemo03CourseListByStudentId` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-normal/demo03-grade/get-by-student-id` | 获得学生班级 | `Demo03StudentNormal_getDemo03GradeByStudentId` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-normal/export-excel` | 导出学生 Excel | `Demo03StudentNormal_exportDemo03StudentExcel` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-normal/get` | 获得学生 | `Demo03StudentNormal_getDemo03Student` |
+| 管理后台 - 学生 | GET | `/admin-api/infra/demo03-student-normal/page` | 获得学生分页 | `Demo03StudentNormal_getDemo03StudentPage` |
+| 管理后台 - 学生 | PUT | `/admin-api/infra/demo03-student-normal/update` | 更新学生 | `Demo03StudentNormal_updateDemo03Student` |
+| 管理后台 - 定时任务 | POST | `/admin-api/infra/job/create` | 创建定时任务 | `Job_createJob` |
+| 管理后台 - 定时任务 | DELETE | `/admin-api/infra/job/delete` | 删除定时任务 | `Job_deleteJob` |
+| 管理后台 - 定时任务 | DELETE | `/admin-api/infra/job/delete-list` | 批量删除定时任务 | `Job_deleteJobList` |
+| 管理后台 - 定时任务 | GET | `/admin-api/infra/job/export-excel` | 导出定时任务 Excel | `Job_exportJobExcel` |
+| 管理后台 - 定时任务 | GET | `/admin-api/infra/job/get` | 获得定时任务 | `Job_getJob` |
+| 管理后台 - 定时任务 | GET | `/admin-api/infra/job/get_next_times` | 获得定时任务的下 n 次执行时间 | `Job_getJobNextTimes` |
+| 管理后台 - 定时任务 | GET | `/admin-api/infra/job/page` | 获得定时任务分页 | `Job_getJobPage` |
+| 管理后台 - 定时任务 | POST | `/admin-api/infra/job/sync` | 同步定时任务 | `Job_syncJob` |
+| 管理后台 - 定时任务 | PUT | `/admin-api/infra/job/trigger` | 触发定时任务 | `Job_triggerJob` |
+| 管理后台 - 定时任务 | PUT | `/admin-api/infra/job/update` | 更新定时任务 | `Job_updateJob` |
+| 管理后台 - 定时任务 | PUT | `/admin-api/infra/job/update-status` | 更新定时任务的状态 | `Job_updateJobStatus` |
+| 管理后台 - 定时任务日志 | GET | `/admin-api/infra/job-log/export-excel` | 导出定时任务日志 Excel | `JobLog_exportJobLogExcel` |
+| 管理后台 - 定时任务日志 | GET | `/admin-api/infra/job-log/get` | 获得定时任务日志 | `JobLog_getJobLog` |
+| 管理后台 - 定时任务日志 | GET | `/admin-api/infra/job-log/page` | 获得定时任务日志分页 | `JobLog_getJobLogPage` |
+| 管理后台 - 岗位 | POST | `/admin-api/system/post/create` | 创建岗位 | `Post_createPost` |
+| 管理后台 - 岗位 | DELETE | `/admin-api/system/post/delete` | 删除岗位 | `Post_deletePost` |
+| 管理后台 - 岗位 | DELETE | `/admin-api/system/post/delete-list` | 批量删除岗位 | `Post_deletePostList` |
+| 管理后台 - 岗位 | GET | `/admin-api/system/post/export-excel` | 岗位管理 | `Post_export` |
+| 管理后台 - 岗位 | GET | `/admin-api/system/post/get` | 获得岗位信息 | `Post_getPost` |
+| 管理后台 - 岗位 | GET | `/admin-api/system/post/list-all-simple` | 获取岗位全列表 | `Post_getSimplePostList` |
+| 管理后台 - 岗位 | GET | `/admin-api/system/post/page` | 获得岗位分页列表 | `Post_getPostPage` |
+| 管理后台 - 岗位 | GET | `/admin-api/system/post/simple-list` | 获取岗位全列表 | `Post_getSimplePostList_1` |
+| 管理后台 - 岗位 | PUT | `/admin-api/system/post/update` | 修改岗位 | `Post_updatePost` |
+| 管理后台 - 我的站内信 | GET | `/admin-api/system/notify-message/get` | 获得站内信 | `NotifyMessage_getNotifyMessage` |
+| 管理后台 - 我的站内信 | GET | `/admin-api/system/notify-message/get-unread-count` | 获得当前用户的未读站内信数量 | `NotifyMessage_getUnreadNotifyMessageCount` |
+| 管理后台 - 我的站内信 | GET | `/admin-api/system/notify-message/get-unread-list` | 获取当前用户的最新站内信列表,默认 10 条 | `NotifyMessage_getUnreadNotifyMessageList` |
+| 管理后台 - 我的站内信 | GET | `/admin-api/system/notify-message/my-page` | 获得我的站内信分页 | `NotifyMessage_getMyMyNotifyMessagePage` |
+| 管理后台 - 我的站内信 | GET | `/admin-api/system/notify-message/page` | 获得站内信分页 | `NotifyMessage_getNotifyMessagePage` |
+| 管理后台 - 我的站内信 | PUT | `/admin-api/system/notify-message/update-all-read` | 标记所有站内信为已读 | `NotifyMessage_updateAllNotifyMessageRead` |
+| 管理后台 - 我的站内信 | PUT | `/admin-api/system/notify-message/update-read` | 标记站内信为已读 | `NotifyMessage_updateNotifyMessageRead` |
+| 管理后台 - 折扣 | PUT | `/admin-api/jh/discount/change-status` | 启用/停用 | `Discount_updateDiscountStatus` |
+| 管理后台 - 折扣 | POST | `/admin-api/jh/discount/create` | 创建折扣 | `Discount_createDiscount` |
+| 管理后台 - 折扣 | DELETE | `/admin-api/jh/discount/delete` | 删除折扣 | `Discount_deleteDiscount` |
+| 管理后台 - 折扣 | DELETE | `/admin-api/jh/discount/delete-list` | 批量删除折扣 | `Discount_deleteDiscountList` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-customer-cate/list-by-discount-id` | 获得折扣特定客户分类列表 | `Discount_getDiscountCustomerCateListByDiscountId` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-customer/get_cate` | 获得APP客户分类 | `Discount_getDiscountCustomerCateList` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-customer/get_customer` | 查询APP客户 | `Discount_getDiscountCustomerList` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-customer/list-by-discount-id` | 获得折扣特定客户列表 | `Discount_getDiscountCustomerListByDiscountId` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-product-cate/list-by-discount-id` | 获得折扣产品分类列表 | `Discount_getDiscountProductCateListByDiscountId` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/discount-product/list-by-discount-id` | 获得折扣产品列表 | `Discount_getDiscountProductListByDiscountId` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/get` | 获得折扣 | `Discount_getDiscount` |
+| 管理后台 - 折扣 | GET | `/admin-api/jh/discount/page` | 获得折扣分页 | `Discount_getDiscountPage` |
+| 管理后台 - 折扣 | PUT | `/admin-api/jh/discount/update` | 更新折扣 | `Discount_updateDiscount` |
+| 管理后台 - 折扣数据 | GET | `/admin-api/jh/discount-usage-record/export-excel` | 导出折扣数据 Excel | `DiscountUsageRecord_exportDiscountUsageRecordExcel` |
+| 管理后台 - 折扣数据 | GET | `/admin-api/jh/discount-usage-record/get-data` | 获取统计数据 | `DiscountUsageRecord_getDiscountUsageRecordStatisticPage` |
+| 管理后台 - 操作日志 | GET | `/admin-api/system/operate-log/export-excel` | 导出操作日志 | `OperateLog_exportOperateLog` |
+| 管理后台 - 操作日志 | GET | `/admin-api/system/operate-log/page` | 查看操作日志分页列表 | `OperateLog_pageOperateLog` |
+| 管理后台 - 支付页产品推荐 | PUT | `/admin-api/jh/product-payment-recommend/change-rank-num` | 修改排序号 | `ProductPaymentRecommend_updateProductPaymentRecommend` |
+| 管理后台 - 支付页产品推荐 | PUT | `/admin-api/jh/product-payment-recommend/change-status` | 修改推荐状态 | `ProductPaymentRecommend_getProductPaymentRecommend` |
+| 管理后台 - 支付页产品推荐 | POST | `/admin-api/jh/product-payment-recommend/create` | 创建支付页产品推荐 | `ProductPaymentRecommend_createProductPaymentRecommend` |
+| 管理后台 - 支付页产品推荐 | DELETE | `/admin-api/jh/product-payment-recommend/delete` | 删除支付页产品推荐 | `ProductPaymentRecommend_deleteProductPaymentRecommend` |
+| 管理后台 - 支付页产品推荐 | DELETE | `/admin-api/jh/product-payment-recommend/delete-list` | 批量删除支付页产品推荐 | `ProductPaymentRecommend_deleteProductPaymentRecommendList` |
+| 管理后台 - 支付页产品推荐 | GET | `/admin-api/jh/product-payment-recommend/page` | 获得支付页产品推荐分页 | `ProductPaymentRecommend_getProductPaymentRecommendPage` |
+| 管理后台 - 数据源配置 | POST | `/admin-api/infra/data-source-config/create` | 创建数据源配置 | `DataSourceConfig_createDataSourceConfig` |
+| 管理后台 - 数据源配置 | DELETE | `/admin-api/infra/data-source-config/delete` | 删除数据源配置 | `DataSourceConfig_deleteDataSourceConfig` |
+| 管理后台 - 数据源配置 | DELETE | `/admin-api/infra/data-source-config/delete-list` | 批量删除数据源配置 | `DataSourceConfig_deleteDataSourceConfigList` |
+| 管理后台 - 数据源配置 | GET | `/admin-api/infra/data-source-config/get` | 获得数据源配置 | `DataSourceConfig_getDataSourceConfig` |
+| 管理后台 - 数据源配置 | GET | `/admin-api/infra/data-source-config/list` | 获得数据源配置列表 | `DataSourceConfig_getDataSourceConfigList` |
+| 管理后台 - 数据源配置 | PUT | `/admin-api/infra/data-source-config/update` | 更新数据源配置 | `DataSourceConfig_updateDataSourceConfig` |
+| 管理后台 - 文件存储 | POST | `/admin-api/infra/file/create` | 创建文件 | `File_createFile` |
+| 管理后台 - 文件存储 | DELETE | `/admin-api/infra/file/delete` | 删除文件 | `File_deleteFile` |
+| 管理后台 - 文件存储 | DELETE | `/admin-api/infra/file/delete-list` | 批量删除文件 | `File_deleteFileList` |
+| 管理后台 - 文件存储 | GET | `/admin-api/infra/file/page` | 获得文件分页 | `File_getFilePage` |
+| 管理后台 - 文件存储 | GET | `/admin-api/infra/file/presigned-url` | 获取文件预签名地址(上传) | `File_getFilePresignedUrl` |
+| 管理后台 - 文件存储 | POST | `/admin-api/infra/file/upload` | 上传文件 | `File_uploadFile` |
+| 管理后台 - 文件存储 | GET | `/admin-api/infra/file/{configId}/get/**` | 下载文件 | `File_getFileContent` |
+| 管理后台 - 文件配置 | POST | `/admin-api/infra/file-config/create` | 创建文件配置 | `FileConfig_createFileConfig` |
+| 管理后台 - 文件配置 | DELETE | `/admin-api/infra/file-config/delete` | 删除文件配置 | `FileConfig_deleteFileConfig` |
+| 管理后台 - 文件配置 | DELETE | `/admin-api/infra/file-config/delete-list` | 批量删除文件配置 | `FileConfig_deleteFileConfigList` |
+| 管理后台 - 文件配置 | GET | `/admin-api/infra/file-config/get` | 获得文件配置 | `FileConfig_getFileConfig` |
+| 管理后台 - 文件配置 | GET | `/admin-api/infra/file-config/page` | 获得文件配置分页 | `FileConfig_getFileConfigPage` |
+| 管理后台 - 文件配置 | GET | `/admin-api/infra/file-config/test` | 测试文件配置是否正确 | `FileConfig_testFileConfig` |
+| 管理后台 - 文件配置 | PUT | `/admin-api/infra/file-config/update` | 更新文件配置 | `FileConfig_updateFileConfig` |
+| 管理后台 - 文件配置 | PUT | `/admin-api/infra/file-config/update-master` | 更新文件配置为 Master | `FileConfig_updateFileConfigMaster` |
+| 管理后台 - 权限 | POST | `/admin-api/system/permission/assign-role-data-scope` | 赋予角色数据权限 | `Permission_assignRoleDataScope` |
+| 管理后台 - 权限 | POST | `/admin-api/system/permission/assign-role-menu` | 赋予角色菜单 | `Permission_assignRoleMenu` |
+| 管理后台 - 权限 | POST | `/admin-api/system/permission/assign-user-role` | 赋予用户角色 | `Permission_assignUserRole` |
+| 管理后台 - 权限 | GET | `/admin-api/system/permission/list-role-menus` | 获得角色拥有的菜单编号 | `Permission_getRoleMenuList` |
+| 管理后台 - 权限 | GET | `/admin-api/system/permission/list-user-roles` | 获得管理员拥有的角色编号列表 | `Permission_listAdminRoles` |
+| 管理后台 - 流量详情 | GET | `/admin-api/jh/landing-page-tracker-detail/export-excel` | 导出流量详情 Excel | `LandingPageTrackerDetail_exportLandingPageTrackerDetailExcel` |
+| 管理后台 - 流量详情 | GET | `/admin-api/jh/landing-page-tracker-detail/page` | 获得流量详情分页 | `LandingPageTrackerDetail_getLandingPageTrackerDetailPage` |
+| 管理后台 - 用户 | POST | `/admin-api/system/user/create` | 新增用户 | `User_createUser` |
+| 管理后台 - 用户 | DELETE | `/admin-api/system/user/delete` | 删除用户 | `User_deleteUser` |
+| 管理后台 - 用户 | DELETE | `/admin-api/system/user/delete-list` | 批量删除用户 | `User_deleteUserList` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/export-excel` | 导出用户 | `User_exportUserList` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/get` | 获得用户详情 | `User_getUser` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/get-import-template` | 获得导入用户模板 | `User_importTemplate` |
+| 管理后台 - 用户 | POST | `/admin-api/system/user/import` | 导入用户 | `User_importExcel` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/list-all-simple` | 获取用户精简信息列表 | `User_getSimpleUserList` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/page` | 获得用户分页列表 | `User_getUserPage` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/reset-fingerprint` | 重置指纹 | `User_resetFingerprint` |
+| 管理后台 - 用户 | GET | `/admin-api/system/user/simple-list` | 获取用户精简信息列表 | `User_getSimpleUserList_1` |
+| 管理后台 - 用户 | PUT | `/admin-api/system/user/update` | 修改用户 | `User_updateUser` |
+| 管理后台 - 用户 | PUT | `/admin-api/system/user/update-password` | 重置用户密码 | `User_updateUserPassword` |
+| 管理后台 - 用户 | PUT | `/admin-api/system/user/update-status` | 修改用户状态 | `User_updateUserStatus` |
+| 管理后台 - 用户个人中心 | GET | `/admin-api/system/user/profile/get` | 获得登录用户信息 | `UserProfile_getUserProfile` |
+| 管理后台 - 用户个人中心 | PUT | `/admin-api/system/user/profile/update` | 修改用户个人信息 | `UserProfile_updateUserProfile` |
+| 管理后台 - 用户个人中心 | PUT | `/admin-api/system/user/profile/update-password` | 修改用户个人密码 | `UserProfile_updateUserProfilePassword` |
+| 管理后台 - 登录日志 | GET | `/admin-api/system/login-log/export-excel` | 导出登录日志 Excel | `LoginLog_exportLoginLog` |
+| 管理后台 - 登录日志 | GET | `/admin-api/system/login-log/page` | 获得登录日志分页列表 | `LoginLog_getLoginLogPage` |
+| 管理后台 - 短信回调 | POST | `/admin-api/system/sms/callback/aliyun` | 阿里云短信的回调 | `SmsCallback_receiveAliyunSmsStatus` |
+| 管理后台 - 短信回调 | POST | `/admin-api/system/sms/callback/huawei` | 华为云短信的回调 | `SmsCallback_receiveHuaweiSmsStatus` |
+| 管理后台 - 短信回调 | POST | `/admin-api/system/sms/callback/qiniu` | 七牛云短信的回调 | `SmsCallback_receiveQiniuSmsStatus` |
+| 管理后台 - 短信回调 | POST | `/admin-api/system/sms/callback/tencent` | 腾讯云短信的回调 | `SmsCallback_receiveTencentSmsStatus` |
+| 管理后台 - 短信日志 | GET | `/admin-api/system/sms-log/export-excel` | 导出短信日志 Excel | `SmsLog_exportSmsLogExcel` |
+| 管理后台 - 短信日志 | GET | `/admin-api/system/sms-log/page` | 获得短信日志分页 | `SmsLog_getSmsLogPage` |
+| 管理后台 - 短信模板 | POST | `/admin-api/system/sms-template/create` | 创建短信模板 | `SmsTemplate_createSmsTemplate` |
+| 管理后台 - 短信模板 | DELETE | `/admin-api/system/sms-template/delete` | 删除短信模板 | `SmsTemplate_deleteSmsTemplate` |
+| 管理后台 - 短信模板 | DELETE | `/admin-api/system/sms-template/delete-list` | 批量删除短信模板 | `SmsTemplate_deleteSmsTemplateList` |
+| 管理后台 - 短信模板 | GET | `/admin-api/system/sms-template/export-excel` | 导出短信模板 Excel | `SmsTemplate_exportSmsTemplateExcel` |
+| 管理后台 - 短信模板 | GET | `/admin-api/system/sms-template/get` | 获得短信模板 | `SmsTemplate_getSmsTemplate` |
+| 管理后台 - 短信模板 | GET | `/admin-api/system/sms-template/page` | 获得短信模板分页 | `SmsTemplate_getSmsTemplatePage` |
+| 管理后台 - 短信模板 | POST | `/admin-api/system/sms-template/send-sms` | 发送短信 | `SmsTemplate_sendSms` |
+| 管理后台 - 短信模板 | PUT | `/admin-api/system/sms-template/update` | 更新短信模板 | `SmsTemplate_updateSmsTemplate` |
+| 管理后台 - 短信渠道 | POST | `/admin-api/system/sms-channel/create` | 创建短信渠道 | `SmsChannel_createSmsChannel` |
+| 管理后台 - 短信渠道 | DELETE | `/admin-api/system/sms-channel/delete` | 删除短信渠道 | `SmsChannel_deleteSmsChannel` |
+| 管理后台 - 短信渠道 | DELETE | `/admin-api/system/sms-channel/delete-list` | 批量删除短信渠道 | `SmsChannel_deleteSmsChannelList` |
+| 管理后台 - 短信渠道 | GET | `/admin-api/system/sms-channel/get` | 获得短信渠道 | `SmsChannel_getSmsChannel` |
+| 管理后台 - 短信渠道 | GET | `/admin-api/system/sms-channel/list-all-simple` | 获得短信渠道精简列表 | `SmsChannel_getSimpleSmsChannelList_1` |
+| 管理后台 - 短信渠道 | GET | `/admin-api/system/sms-channel/page` | 获得短信渠道分页 | `SmsChannel_getSmsChannelPage` |
+| 管理后台 - 短信渠道 | GET | `/admin-api/system/sms-channel/simple-list` | 获得短信渠道精简列表 | `SmsChannel_getSimpleSmsChannelList` |
+| 管理后台 - 短信渠道 | PUT | `/admin-api/system/sms-channel/update` | 更新短信渠道 | `SmsChannel_updateSmsChannel` |
+| 管理后台 - 示例分类 | POST | `/admin-api/infra/demo02-category/create` | 创建示例分类 | `Demo02Category_createDemo02Category` |
+| 管理后台 - 示例分类 | DELETE | `/admin-api/infra/demo02-category/delete` | 删除示例分类 | `Demo02Category_deleteDemo02Category` |
+| 管理后台 - 示例分类 | GET | `/admin-api/infra/demo02-category/export-excel` | 导出示例分类 Excel | `Demo02Category_exportDemo02CategoryExcel` |
+| 管理后台 - 示例分类 | GET | `/admin-api/infra/demo02-category/get` | 获得示例分类 | `Demo02Category_getDemo02Category` |
+| 管理后台 - 示例分类 | GET | `/admin-api/infra/demo02-category/list` | 获得示例分类列表 | `Demo02Category_getDemo02CategoryList` |
+| 管理后台 - 示例分类 | PUT | `/admin-api/infra/demo02-category/update` | 更新示例分类 | `Demo02Category_updateDemo02Category` |
+| 管理后台 - 示例联系人 | POST | `/admin-api/infra/demo01-contact/create` | 创建示例联系人 | `Demo01Contact_createDemo01Contact` |
+| 管理后台 - 示例联系人 | DELETE | `/admin-api/infra/demo01-contact/delete` | 删除示例联系人 | `Demo01Contact_deleteDemo01Contact` |
+| 管理后台 - 示例联系人 | DELETE | `/admin-api/infra/demo01-contact/delete-list` | 批量删除示例联系人 | `Demo01Contact_deleteDemo0iContactList` |
+| 管理后台 - 示例联系人 | GET | `/admin-api/infra/demo01-contact/export-excel` | 导出示例联系人 Excel | `Demo01Contact_exportDemo01ContactExcel` |
+| 管理后台 - 示例联系人 | GET | `/admin-api/infra/demo01-contact/get` | 获得示例联系人 | `Demo01Contact_getDemo01Contact` |
+| 管理后台 - 示例联系人 | GET | `/admin-api/infra/demo01-contact/page` | 获得示例联系人分页 | `Demo01Contact_getDemo01ContactPage` |
+| 管理后台 - 示例联系人 | PUT | `/admin-api/infra/demo01-contact/update` | 更新示例联系人 | `Demo01Contact_updateDemo01Contact` |
+| 管理后台 - 社交客户端 | POST | `/admin-api/system/social-client/create` | 创建社交客户端 | `SocialClient_createSocialClient` |
+| 管理后台 - 社交客户端 | DELETE | `/admin-api/system/social-client/delete` | 删除社交客户端 | `SocialClient_deleteSocialClient` |
+| 管理后台 - 社交客户端 | DELETE | `/admin-api/system/social-client/delete-list` | 批量删除社交客户端 | `SocialClient_deleteSocialClientList` |
+| 管理后台 - 社交客户端 | GET | `/admin-api/system/social-client/get` | 获得社交客户端 | `SocialClient_getSocialClient` |
+| 管理后台 - 社交客户端 | GET | `/admin-api/system/social-client/page` | 获得社交客户端分页 | `SocialClient_getSocialClientPage` |
+| 管理后台 - 社交客户端 | POST | `/admin-api/system/social-client/send-subscribe-message` | 发送订阅消息 | `SocialClient_sendSubscribeMessage` |
+| 管理后台 - 社交客户端 | PUT | `/admin-api/system/social-client/update` | 更新社交客户端 | `SocialClient_updateSocialClient` |
+| 管理后台 - 社交用户 | POST | `/admin-api/system/social-user/bind` | 社交绑定,使用 code 授权码 | `SocialUser_socialBind` |
+| 管理后台 - 社交用户 | GET | `/admin-api/system/social-user/get` | 获得社交用户 | `SocialUser_getSocialUser` |
+| 管理后台 - 社交用户 | GET | `/admin-api/system/social-user/get-bind-list` | 获得绑定社交用户列表 | `SocialUser_getBindSocialUserList` |
+| 管理后台 - 社交用户 | GET | `/admin-api/system/social-user/page` | 获得社交用户分页 | `SocialUser_getSocialUserPage` |
+| 管理后台 - 社交用户 | DELETE | `/admin-api/system/social-user/unbind` | 取消社交绑定 | `SocialUser_socialUnbind` |
+| 管理后台 - 租户 | POST | `/admin-api/system/tenant/create` | 创建租户 | `Tenant_createTenant` |
+| 管理后台 - 租户 | DELETE | `/admin-api/system/tenant/delete` | 删除租户 | `Tenant_deleteTenant` |
+| 管理后台 - 租户 | DELETE | `/admin-api/system/tenant/delete-list` | 批量删除租户 | `Tenant_deleteTenantList` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/export-excel` | 导出租户 Excel | `Tenant_exportTenantExcel` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/get` | 获得租户 | `Tenant_getTenant` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/get-by-website` | 使用域名,获得租户信息 | `Tenant_getTenantByWebsite` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/get-id-by-name` | 使用租户名,获得租户编号 | `Tenant_getTenantIdByName` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/page` | 获得租户分页 | `Tenant_getTenantPage` |
+| 管理后台 - 租户 | GET | `/admin-api/system/tenant/simple-list` | 获取租户精简信息列表 | `Tenant_getTenantSimpleList` |
+| 管理后台 - 租户 | PUT | `/admin-api/system/tenant/update` | 更新租户 | `Tenant_updateTenant` |
+| 管理后台 - 租户套餐 | POST | `/admin-api/system/tenant-package/create` | 创建租户套餐 | `TenantPackage_createTenantPackage` |
+| 管理后台 - 租户套餐 | DELETE | `/admin-api/system/tenant-package/delete` | 删除租户套餐 | `TenantPackage_deleteTenantPackage` |
+| 管理后台 - 租户套餐 | DELETE | `/admin-api/system/tenant-package/delete-list` | 批量删除租户套餐 | `TenantPackage_deleteTenantPackageList` |
+| 管理后台 - 租户套餐 | GET | `/admin-api/system/tenant-package/get` | 获得租户套餐 | `TenantPackage_getTenantPackage` |
+| 管理后台 - 租户套餐 | GET | `/admin-api/system/tenant-package/get-simple-list` | 获取租户套餐精简信息列表 | `TenantPackage_getTenantPackageList` |
+| 管理后台 - 租户套餐 | GET | `/admin-api/system/tenant-package/page` | 获得租户套餐分页 | `TenantPackage_getTenantPackagePage` |
+| 管理后台 - 租户套餐 | GET | `/admin-api/system/tenant-package/simple-list` | 获取租户套餐精简信息列表 | `TenantPackage_getTenantPackageList_1` |
+| 管理后台 - 租户套餐 | PUT | `/admin-api/system/tenant-package/update` | 更新租户套餐 | `TenantPackage_updateTenantPackage` |
+| 管理后台 - 站内信模版 | POST | `/admin-api/system/notify-template/create` | 创建站内信模版 | `NotifyTemplate_createNotifyTemplate` |
+| 管理后台 - 站内信模版 | DELETE | `/admin-api/system/notify-template/delete` | 删除站内信模版 | `NotifyTemplate_deleteNotifyTemplate` |
+| 管理后台 - 站内信模版 | DELETE | `/admin-api/system/notify-template/delete-list` | 批量删除站内信模版 | `NotifyTemplate_deleteNotifyTemplateList` |
+| 管理后台 - 站内信模版 | GET | `/admin-api/system/notify-template/get` | 获得站内信模版 | `NotifyTemplate_getNotifyTemplate` |
+| 管理后台 - 站内信模版 | GET | `/admin-api/system/notify-template/page` | 获得站内信模版分页 | `NotifyTemplate_getNotifyTemplatePage` |
+| 管理后台 - 站内信模版 | POST | `/admin-api/system/notify-template/send-notify` | 发送站内信 | `NotifyTemplate_sendNotify` |
+| 管理后台 - 站内信模版 | PUT | `/admin-api/system/notify-template/update` | 更新站内信模版 | `NotifyTemplate_updateNotifyTemplate` |
+| 管理后台 - 联系我们数据 | POST | `/admin-api/jh/contact-us/create` | 创建联系我们数据 | `ContactUs_createContactUs` |
+| 管理后台 - 联系我们数据 | DELETE | `/admin-api/jh/contact-us/delete` | 删除联系我们数据 | `ContactUs_deleteContactUs` |
+| 管理后台 - 联系我们数据 | DELETE | `/admin-api/jh/contact-us/delete-list` | 批量删除联系我们数据 | `ContactUs_deleteContactUsList` |
+| 管理后台 - 联系我们数据 | GET | `/admin-api/jh/contact-us/export-excel` | 导出联系我们数据 Excel | `ContactUs_exportContactUsExcel` |
+| 管理后台 - 联系我们数据 | GET | `/admin-api/jh/contact-us/get` | 获得联系我们数据 | `ContactUs_getContactUs` |
+| 管理后台 - 联系我们数据 | GET | `/admin-api/jh/contact-us/get-import-template` | 获得导入联系我们数据模板 | `ContactUs_getImportTemplate` |
+| 管理后台 - 联系我们数据 | POST | `/admin-api/jh/contact-us/import-excel` | 导入联系我们数据Excel | `ContactUs_importContactUsExcel` |
+| 管理后台 - 联系我们数据 | GET | `/admin-api/jh/contact-us/page` | 获得联系我们数据分页 | `ContactUs_getContactUsPage` |
+| 管理后台 - 联系我们数据 | PUT | `/admin-api/jh/contact-us/update` | 更新联系我们数据 | `ContactUs_updateContactUs` |
+| 管理后台 - 菜单 | POST | `/admin-api/system/menu/create` | 创建菜单 | `Menu_createMenu` |
+| 管理后台 - 菜单 | DELETE | `/admin-api/system/menu/delete` | 删除菜单 | `Menu_deleteMenu` |
+| 管理后台 - 菜单 | DELETE | `/admin-api/system/menu/delete-list` | 批量删除菜单 | `Menu_deleteMenuList` |
+| 管理后台 - 菜单 | GET | `/admin-api/system/menu/get` | 获取菜单信息 | `Menu_getMenu` |
+| 管理后台 - 菜单 | GET | `/admin-api/system/menu/list` | 获取菜单列表 | `Menu_getMenuList` |
+| 管理后台 - 菜单 | GET | `/admin-api/system/menu/list-all-simple` | 获取菜单精简信息列表 | `Menu_getSimpleMenuList` |
+| 管理后台 - 菜单 | GET | `/admin-api/system/menu/simple-list` | 获取菜单精简信息列表 | `Menu_getSimpleMenuList_1` |
+| 管理后台 - 菜单 | PUT | `/admin-api/system/menu/update` | 修改菜单 | `Menu_updateMenu` |
+| 管理后台 - 角色 | POST | `/admin-api/system/role/create` | 创建角色 | `Role_createRole` |
+| 管理后台 - 角色 | DELETE | `/admin-api/system/role/delete` | 删除角色 | `Role_deleteRole` |
+| 管理后台 - 角色 | DELETE | `/admin-api/system/role/delete-list` | 批量删除角色 | `Role_deleteRoleList` |
+| 管理后台 - 角色 | GET | `/admin-api/system/role/export-excel` | 导出角色 Excel | `Role_export` |
+| 管理后台 - 角色 | GET | `/admin-api/system/role/get` | 获得角色信息 | `Role_getRole` |
+| 管理后台 - 角色 | GET | `/admin-api/system/role/list-all-simple` | 获取角色精简信息列表 | `Role_getSimpleRoleList` |
+| 管理后台 - 角色 | GET | `/admin-api/system/role/page` | 获得角色分页 | `Role_getRolePage` |
+| 管理后台 - 角色 | GET | `/admin-api/system/role/simple-list` | 获取角色精简信息列表 | `Role_getSimpleRoleList_1` |
+| 管理后台 - 角色 | PUT | `/admin-api/system/role/update` | 修改角色 | `Role_updateRole` |
+| 管理后台 - 订单 | PUT | `/admin-api/jh/order/cancel` | 取消订单 | `Order_cancelOrder` |
+| 管理后台 - 订单 | GET | `/admin-api/jh/order/count` | 查询各状态订单数量 | `Order_getOrderCount` |
+| 管理后台 - 订单 | GET | `/admin-api/jh/order/export-excel` | 导出订单 Excel | `Order_exportOrderExcel` |
+| 管理后台 - 订单 | GET | `/admin-api/jh/order/get` | 获得订单 | `Order_getOrder` |
+| 管理后台 - 订单 | GET | `/admin-api/jh/order/page` | 获得订单分页 | `Order_getOrderPage` |
+| 管理后台 - 订单 | PUT | `/admin-api/jh/order/set-remark` | 设置订单备注 | `Order_updateOrderRemark` |
+| 管理后台 - 认证 | GET | `/admin-api/system/auth/get-permission-info` | 获取登录用户的权限信息 | `Auth_getPermissionInfo` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/login` | 使用账号密码登录 | `Auth_login` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/login-dev` | 使用账号密码登录 | `Auth_loginDev` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/logout` | 登出系统 | `Auth_logout` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/refresh-token` | 刷新令牌 | `Auth_refreshToken` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/register` | 注册用户 | `Auth_register` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/reset-password` | 重置密码 | `Auth_resetPassword` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/send-sms-code` | 发送手机验证码 | `Auth_sendLoginSmsCode` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/sms-login` | 使用短信验证码登录 | `Auth_smsLogin` |
+| 管理后台 - 认证 | GET | `/admin-api/system/auth/social-auth-redirect` | 社交授权的跳转 | `Auth_socialLogin` |
+| 管理后台 - 认证 | POST | `/admin-api/system/auth/social-login` | 社交快捷登录,使用 code 授权码 | `Auth_socialQuickLogin` |
+| 管理后台 - 路由 | POST | `/admin-api/jh/route/create` | 创建路由 | `Route_createRoute` |
+| 管理后台 - 路由 | DELETE | `/admin-api/jh/route/delete` | 删除路由 | `Route_deleteRoute` |
+| 管理后台 - 路由 | DELETE | `/admin-api/jh/route/delete-list` | 批量删除路由 | `Route_deleteRouteList` |
+| 管理后台 - 路由 | GET | `/admin-api/jh/route/export-excel` | 导出路由 Excel | `Route_exportRouteExcel` |
+| 管理后台 - 路由 | GET | `/admin-api/jh/route/get` | 获得路由 | `Route_getRoute` |
+| 管理后台 - 路由 | GET | `/admin-api/jh/route/get-import-template` | 获得导入路由模板 | `Route_getImportTemplate` |
+| 管理后台 - 路由 | POST | `/admin-api/jh/route/import-excel` | 导入路由Excel | `Route_importRouteExcel` |
+| 管理后台 - 路由 | GET | `/admin-api/jh/route/page` | 获得路由分页 | `Route_getRoutePage` |
+| 管理后台 - 路由 | PUT | `/admin-api/jh/route/update` | 更新路由 | `Route_updateRoute` |
+| 管理后台 - 运费模板信息 | POST | `/admin-api/jh/shipping-template/create` | 创建运费模板信息 | `ShippingTemplate_createShippingTemplate` |
+| 管理后台 - 运费模板信息 | DELETE | `/admin-api/jh/shipping-template/delete` | 删除运费模板信息 | `ShippingTemplate_deleteShippingTemplate` |
+| 管理后台 - 运费模板信息 | DELETE | `/admin-api/jh/shipping-template/delete-list` | 批量删除运费模板信息 | `ShippingTemplate_deleteShippingTemplateList` |
+| 管理后台 - 运费模板信息 | GET | `/admin-api/jh/shipping-template/get-detail` | ***获得运费模板详情(含规则与子表) | `ShippingTemplate_getShippingTemplateDetail` |
+| 管理后台 - 运费模板信息 | GET | `/admin-api/jh/shipping-template/page` | ***获得运费模板信息分页 | `ShippingTemplate_getShippingTemplatePage` |
+| 管理后台 - 运费模板信息 | POST | `/admin-api/jh/shipping-template/save-with-children` | 保存运费模板信息(含规则与子表) | `ShippingTemplate_saveShippingTemplateWithChildren` |
+| 管理后台 - 运费模板信息 | GET | `/admin-api/jh/shipping-template/shipping-rule/list-by-shipping-template-id` | 获得运费规则列表 | `ShippingTemplate_getShippingRuleListByShippingTemplateId` |
+| 管理后台 - 运费模板信息 | PUT | `/admin-api/jh/shipping-template/update` | 更新运费模板信息 | `ShippingTemplate_updateShippingTemplate` |
+| 管理后台 - 通知公告 | POST | `/admin-api/system/notice/create` | 创建通知公告 | `Notice_createNotice` |
+| 管理后台 - 通知公告 | DELETE | `/admin-api/system/notice/delete` | 删除通知公告 | `Notice_deleteNotice` |
+| 管理后台 - 通知公告 | DELETE | `/admin-api/system/notice/delete-list` | 批量删除通知公告 | `Notice_deleteNoticeList` |
+| 管理后台 - 通知公告 | GET | `/admin-api/system/notice/get` | 获得通知公告 | `Notice_getNotice` |
+| 管理后台 - 通知公告 | GET | `/admin-api/system/notice/page` | 获取通知公告列表 | `Notice_getNoticePage` |
+| 管理后台 - 通知公告 | POST | `/admin-api/system/notice/push` | 推送通知公告 | `Notice_push` |
+| 管理后台 - 通知公告 | PUT | `/admin-api/system/notice/update` | 修改通知公告 | `Notice_updateNotice` |
+| 管理后台 - 邮件日志 | GET | `/admin-api/system/mail-log/get` | 获得邮箱日志 | `MailLog_getMailTemplate` |
+| 管理后台 - 邮件日志 | GET | `/admin-api/system/mail-log/page` | 获得邮箱日志分页 | `MailLog_getMailLogPage` |
+| 管理后台 - 邮件模版 | POST | `/admin-api/system/mail-template/create` | 创建邮件模版 | `MailTemplate_createMailTemplate` |
+| 管理后台 - 邮件模版 | DELETE | `/admin-api/system/mail-template/delete` | 删除邮件模版 | `MailTemplate_deleteMailTemplate` |
+| 管理后台 - 邮件模版 | DELETE | `/admin-api/system/mail-template/delete-list` | 批量删除邮件模版 | `MailTemplate_deleteMailTemplateList` |
+| 管理后台 - 邮件模版 | GET | `/admin-api/system/mail-template/get` | 获得邮件模版 | `MailTemplate_getMailTemplate` |
+| 管理后台 - 邮件模版 | GET | `/admin-api/system/mail-template/list-all-simple` | 获得邮件模版精简列表 | `MailTemplate_getSimpleTemplateList` |
+| 管理后台 - 邮件模版 | GET | `/admin-api/system/mail-template/page` | 获得邮件模版分页 | `MailTemplate_getMailTemplatePage` |
+| 管理后台 - 邮件模版 | POST | `/admin-api/system/mail-template/send-mail` | 发送邮件 | `MailTemplate_sendMail` |
+| 管理后台 - 邮件模版 | GET | `/admin-api/system/mail-template/simple-list` | 获得邮件模版精简列表 | `MailTemplate_getSimpleTemplateList_1` |
+| 管理后台 - 邮件模版 | PUT | `/admin-api/system/mail-template/update` | 修改邮件模版 | `MailTemplate_updateMailTemplate` |
+| 管理后台 - 邮箱账号 | POST | `/admin-api/system/mail-account/create` | 创建邮箱账号 | `MailAccount_createMailAccount` |
+| 管理后台 - 邮箱账号 | DELETE | `/admin-api/system/mail-account/delete` | 删除邮箱账号 | `MailAccount_deleteMailAccount` |
+| 管理后台 - 邮箱账号 | DELETE | `/admin-api/system/mail-account/delete-list` | 批量删除邮箱账号 | `MailAccount_deleteMailAccountList` |
+| 管理后台 - 邮箱账号 | GET | `/admin-api/system/mail-account/get` | 获得邮箱账号 | `MailAccount_getMailAccount` |
+| 管理后台 - 邮箱账号 | GET | `/admin-api/system/mail-account/list-all-simple` | 获得邮箱账号精简列表 | `MailAccount_getSimpleMailAccountList` |
+| 管理后台 - 邮箱账号 | GET | `/admin-api/system/mail-account/page` | 获得邮箱账号分页 | `MailAccount_getMailAccountPage` |
+| 管理后台 - 邮箱账号 | GET | `/admin-api/system/mail-account/simple-list` | 获得邮箱账号精简列表 | `MailAccount_getSimpleMailAccountList_1` |
+| 管理后台 - 邮箱账号 | PUT | `/admin-api/system/mail-account/update` | 修改邮箱账号 | `MailAccount_updateMailAccount` |
+| 管理后台 - 部门 | POST | `/admin-api/system/dept/create` | 创建部门 | `Dept_createDept` |
+| 管理后台 - 部门 | DELETE | `/admin-api/system/dept/delete` | 删除部门 | `Dept_deleteDept` |
+| 管理后台 - 部门 | DELETE | `/admin-api/system/dept/delete-list` | 批量删除部门 | `Dept_deleteDeptList` |
+| 管理后台 - 部门 | GET | `/admin-api/system/dept/get` | 获得部门信息 | `Dept_getDept` |
+| 管理后台 - 部门 | GET | `/admin-api/system/dept/list` | 获取部门列表 | `Dept_getDeptList` |
+| 管理后台 - 部门 | GET | `/admin-api/system/dept/list-all-simple` | 获取部门精简信息列表 | `Dept_getSimpleDeptList` |
+| 管理后台 - 部门 | GET | `/admin-api/system/dept/simple-list` | 获取部门精简信息列表 | `Dept_getSimpleDeptList_1` |
+| 管理后台 - 部门 | PUT | `/admin-api/system/dept/update` | 更新部门 | `Dept_updateDept` |
+| 管理后台 - 链接 | POST | `/admin-api/jh/landing-page-tracker/create` | 创建链接 | `LandingPageTracker_createLandingPageTracker` |
+| 管理后台 - 链接 | DELETE | `/admin-api/jh/landing-page-tracker/delete` | 删除链接 | `LandingPageTracker_deleteLandingPageTracker` |
+| 管理后台 - 链接 | DELETE | `/admin-api/jh/landing-page-tracker/delete-list` | 批量删除链接 | `LandingPageTracker_deleteLandingPageTrackerList` |
+| 管理后台 - 链接 | GET | `/admin-api/jh/landing-page-tracker/export-detail-excel` | 导出引流统计明细 Excel | `LandingPageTracker_exportLandingPageTrackerDetailExcel` |
+| 管理后台 - 链接 | GET | `/admin-api/jh/landing-page-tracker/export-excel` | 导出引流统计列表 Excel | `LandingPageTracker_exportLandingPageTrackerExcel` |
+| 管理后台 - 链接 | GET | `/admin-api/jh/landing-page-tracker/get` | 获得链接 | `LandingPageTracker_getLandingPageTracker` |
+| 管理后台 - 链接 | GET | `/admin-api/jh/landing-page-tracker/page` | 获得链接分页 | `LandingPageTracker_getLandingPageTrackerPage` |
+| 管理后台 - 领星订单同步调试 | GET | `/admin-api/admin-api/jh/lingxing-sync/execute` | 手动触发领星订单同步 | `LingXingOrderSync_execute` |
+| 管理后台 - 领星订单同步调试 | GET | `/admin-api/admin-api/jh/lingxing-sync/execute/autocompilte` | 手动触发自动完成订单同步 | `LingXingOrderSync_executeAuto` |
+| 管理后台 - 领星订单同步调试 | GET | `/admin-api/admin-api/jh/lingxing-sync/execute/paypal-retry` | 手动触发PayPal物流推送补偿任务 | `LingXingOrderSync_executePayPalRetry` |
+| 管理后台 - 验证码 | POST | `/admin-api/system/captcha/check` | 校验验证码 | `Captcha_check` |
+| 管理后台 - 验证码 | POST | `/admin-api/system/captcha/get` | 获得验证码 | `Captcha_get` |
+
+## 接口详情
+
+## C端 - APP版本
+
+### 1. 获取APP版本列表
+
+- 分组:C端 - APP版本
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/web/appversion/page`
+- operationId:`WebAppversion_getAppversionPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| storeName | query | 否 | string | 应用商店 | 王五 |
+| version | query | 否 | string | 版本号 | |
+| downloadUrl | query | 否 | string | 商城下载地址 | https://www.iocoder.cn |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAppversionRespVO` |
+
+## C端 - FAQ
+
+### 1. 获得FAQ分类树
+
+- 分组:C端 - FAQ
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/faq/cate-list`
+- operationId:`WebFaq_getFaqCateTree`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| lang | query | 是 | string | 语言 | en |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListFaqCateSimpleRespVO` |
+
+### 2. 获得FAQ列表
+
+- 分组:C端 - FAQ
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/faq/list`
+- operationId:`WebFaq_getFaqList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| faqCateId | query | 否 | integer | 分类ID | 29870 |
+| isHot | query | 否 | integer | 是否热门(0否,1是) | 1 |
+| lang | query | 否 | string | 语言 | en |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListFaqRespVO` |
+
+## C端 - FAQ联系我们
+
+### 1. 提交FAQ联系信息
+
+- 分组:C端 - FAQ联系我们
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/faq-contact-us/create`
+- operationId:`WebFaqContactUs_createFaqContactUs`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqContactUsCreateReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| name | 姓名 | 是 | string | Tom |
+| email | 邮箱 | 是 | string | tom@example.com |
+| toyOrderNumber | 玩具订单号 | 是 | string | TOY123456 |
+| questionType | 问题类型 | 是 | string | order |
+| questionDetail | 问题详情 | 否 | string | Where is my order? |
+| files | 图片或视频 | 否 | array[JhFileDO] | |
+| lang | 语言 | 否 | string | en |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+## C端 - blog信息
+
+### 1. 获得blog详情
+
+- 分组:C端 - blog信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/blog/get-detail`
+- operationId:`WebBlog_getBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogRespVO` |
+
+### 2. 获得blog下一条
+
+- 分组:C端 - blog信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/blog/get-next`
+- operationId:`WebBlog_getBlogNext`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 主键 | 25673 |
+| cateId | query | 否 | integer | blog分类 ID 列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogRespVO` |
+
+### 3. 获得blog管理分页
+
+- 分组:C端 - blog信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/blog/page`
+- operationId:`WebBlog_getBlogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 1 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultBlogRespVO` |
+
+## C端 - blog分类
+
+### 1. 获得blog分类列表
+
+- 分组:C端 - blog分类
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/blog-cate/list`
+- operationId:`WebBlogCate_getBlogCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListBlogCateRespVO` |
+
+## C端 - news分类
+
+### 1. 获得news分类列表
+
+- 分组:C端 - news分类
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/news-cate/list`
+- operationId:`WebNewsCate_getNewsCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListNewsCateRespVO` |
+
+## C端 - news管理
+
+### 1. 获得news详情
+
+- 分组:C端 - news管理
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/news/get-detail`
+- operationId:`WebNews_getBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsRespVO` |
+
+### 2. 获得news下一条
+
+- 分组:C端 - news管理
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/news/get-next`
+- operationId:`WebNews_getBlogNext`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 主键 | 25673 |
+| cateId | query | 否 | integer | blog分类 ID 列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsRespVO` |
+
+### 3. 获得news管理分页
+
+- 分组:C端 - news管理
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/news/page`
+- operationId:`WebNews_getBlogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 2 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultNewsRespVO` |
+
+## C端 - 二维码访问统计
+
+### 1. 获取二维码信息
+
+- 分组:C端 - 二维码访问统计
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/download-qrcode/get`
+- operationId:`WebDownloadQrcode_getByCode`
+- 描述:根据code获取二维码的基础信息
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| code | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebDownloadQrcodeRespVO` |
+
+### 2. 增加二维码访问/点击次数
+
+- 分组:C端 - 二维码访问统计
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/download-qrcode/increment`
+- operationId:`WebDownloadQrcode_incrementCount`
+- 描述:根据code增加对应类型的计数,用于埋点
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`WebDownloadQrcodeIncrementReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| code | 二维码编码 | 是 | string | ABC123 |
+| visitCount | 是否增加访问次数 | 否 | boolean | |
+| clickCount | 是否增加总点击次数 | 否 | boolean | |
+| iosClickCount | 是否增加IOS点击次数 | 否 | boolean | |
+| googleClickCount | 是否增加谷歌点击次数 | 否 | boolean | |
+| apkClickCount | 是否增加APK点击次数 | 否 | boolean | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## C端 - 产品
+
+### 1. 产品详情
+
+- 分组:C端 - 产品
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/product/get`
+- operationId:`WebProduct_getProduct`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| route | query | 是 | string | 产品跳转路由 | |
+| countryCode | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebProductRespVO` |
+
+### 2. 获得产品分页
+
+- 分组:C端 - 产品
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/product/page`
+- operationId:`WebProduct_getProductPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productCateId | query | 是 | integer | 产品分类ID | |
+| countryCode | query | 是 | string | 国家编码 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultWebProductPageRespVO` |
+
+## C端 - 产品分类
+
+### 1. 获得产品分类列表
+
+- 分组:C端 - 产品分类
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/product-cate/list`
+- operationId:`WebProductCate_getProductCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateType | query | 是 | integer | 类型(普通产品=1,积分产品=2) | 2 |
+| status | query | 否 | integer | 状态(1启用,2停用) | 2 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListWebProductCateRespVO` |
+
+## C端 - 产品结算
+
+### 1. 获取积分结算信息
+
+- 分组:C端 - 产品结算
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/settlement/points/settlement`
+- operationId:`WebSettlement_getProductPointsSettlement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productSkuId | query | 否 | string | 商品 SKU ID | |
+| num | query | 否 | integer | 商品数量 | |
+| countryCode | query | 否 | string | 国家编码 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebProductPointsSettlementRespVO` |
+
+### 2. 纯积分结算提交订单
+
+- 分组:C端 - 产品结算
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/settlement/points/submit`
+- operationId:`WebSettlement_submitProductPointsSettlement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`WebProductPointsSettlementSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| productSkuId | 商品 SKU ID | 否 | string | |
+| num | 商品数量 | 否 | integer | |
+| countryCode | 国家编码 | 否 | string | |
+| recipientName | 收件人姓名 | 是 | string | |
+| recipientPhone | 收件人手机 | 是 | string | |
+| provinceState | 省/州 | 否 | string | |
+| city | 市 | 是 | string | |
+| district | 区/县 | 否 | string | |
+| postalCode | 邮编 | 是 | string | |
+| houseNumber | 门牌号 | 否 | string | |
+| address1 | 地址1 | 是 | string | |
+| address2 | 地址2 | 否 | string | |
+| userRemark | 用户备注 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+## C端 - 协议
+
+### 1. 获得协议
+
+- 分组:C端 - 协议
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/agreement/get`
+- operationId:`WebAgreement_getAgreement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAgreementRespVO` |
+
+### 2. 获得协议分页
+
+- 分组:C端 - 协议
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/agreement/page`
+- operationId:`WebAgreement_getAgreementPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| terminal | query | 是 | string | 终端(1web 2app) | |
+| type | query | 是 | integer | 类型(1隐私协议 2用户协议) | 2 |
+| lang | query | 是 | string | 语言 (en 英语 de 德语 ja 日语) | en |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAgreementRespVO` |
+
+## C端 - 合作联系
+
+### 1. 提交合作联系信息
+
+- 分组:C端 - 合作联系
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/cooperation/create`
+- operationId:`WebCooperation_createCooperation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CooperationCreateReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| name | 姓名 | 是 | string | Tom |
+| email | 邮箱 | 是 | string | tom@example.com |
+| address | 公司名称或地址 | 是 | string | Berlin |
+| cooperationType | 合作类型 | 是 | string | business |
+| cooperationDetail | 合作详情 | 否 | string | I want to cooperate with you |
+| lang | 语言 | 否 | string | en |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+## C端 - 售后
+
+### 1. 提交售后
+
+- 分组:C端 - 售后
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/order-after-sale/create`
+- operationId:`WebOrderAfterSale_createOrderAfterSale`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`WebOrderAfterSaleSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| orderId | 订单ID | 是 | integer | |
+| orderItemId | 订单商品ID | 是 | array[integer] | |
+| evidence | 凭证图片或视频 | 是 | array[Evidence] | |
+| email | 申请人邮箱 | 是 | string | |
+| phone | 电话号码 | 否 | string | |
+| productIssues | 产品问题 | 是 | string | |
+| deviceId | 设备ID | 是 | string | |
+| tenantId | | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 售后详情
+
+- 分组:C端 - 售后
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order-after-sale/get`
+- operationId:`WebOrderAfterSale_getOrderAfterSale`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebOrderAfterRespVO` |
+
+### 3. 同步oa售后数据
+
+- 分组:C端 - 售后
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/order-after-sale/sync-oa`
+- operationId:`WebOrderAfterSale_syncOrderAfterSaleFromOA`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OAOrderAfterRespVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| list | 申请人账号 | 否 | array[OAOrderAfterInfo] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 提供给OA接收售后信息变化
+
+- 分组:C端 - 售后
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/order-after-sale/update`
+- operationId:`WebOrderAfterSale_updateOrderAfterSale`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`array[WebOAOrderAfterReqVO]`
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## C端 - 售后政策
+
+### 1. 获得售后政策
+
+- 分组:C端 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/after-sales-policy/get`
+- operationId:`WebAfterSalesPolicy_getAfterSalesPolicy`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesPolicyRespVO` |
+
+### 2. 获得售后政策分页
+
+- 分组:C端 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/after-sales-policy/page`
+- operationId:`WebAfterSalesPolicy_getAfterSalesPolicyPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandId | query | 否 | integer | 品牌ID | 9150 |
+| title | query | 否 | string | 标题 | |
+| content | query | 否 | string | 内容 | |
+| lang | query | 否 | string | 语言 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAfterSalesPolicyRespVO` |
+
+## C端 - 售后政策-品牌
+
+### 1. 获得售后政策-品牌
+
+- 分组:C端 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/after-sales-brand/get`
+- operationId:`WebAfterSalesBrand_getAfterSalesBrand`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesBrandRespVO` |
+
+### 2. 获得售后政策-品牌分页
+
+- 分组:C端 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/after-sales-brand/page`
+- operationId:`WebAfterSalesBrand_getAfterSalesBrandPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandName | query | 否 | string | 品牌名称 | Apple |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAfterSalesBrandRespVO` |
+
+## C端 - 国家信息
+
+### 1. 获取国家列表(启用状态)
+
+- 分组:C端 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/address-country/list`
+- operationId:`WebAddressCountry_getCountryList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListWebAddressCountryListRespVO` |
+
+## C端 - 埋点
+
+### 1. 创建埋点记录
+
+- 分组:C端 - 埋点
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/event-tracking/create`
+- operationId:`WebEventTracking_createEventTracking`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`EventTrackingSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 自增主键,全局唯一标识 | 否 | integer | 15213 |
+| eventName | 事件名称(如 login/click_order) | 是 | string | login |
+| customerId | 登录用户唯一 ID | 否 | string | 6548 |
+| ip | 客户端 IP 地址(支持 IPv4/IPv6) | 否 | string | |
+| anonymousId | 匿名用户唯一标识(未登录用户) | 否 | string | 22457 |
+| sessionId | 会话标识(追踪单次会话行为) | 否 | string | 10867 |
+| pageUrl | 完整访问 URL(含参数) | 否 | string | https://www.iocoder.cn |
+| pagePath | 不含参数的页面路径 | 否 | string | |
+| pageType | 页面分类(如商品详情页) | 否 | string | 1 |
+| referrer | 上一跳网址(用户进入当前页的前一页) | 否 | string | |
+| sourceChannel | 来源分类(如抖音/快手) | 否 | string | |
+| country | 国家代码(如 CN/US) | 否 | string | |
+| deviceType | 设备类型(限定为 mobile/desktop/tablet) | 否 | string | 2 |
+| deviceId | 设备唯一 ID(如 IMEI/IDFA) | 否 | string | 949 |
+| browser | 浏览器名称(如 Chrome/Safari) | 否 | string | |
+| os | 操作系统(如 iOS/Android) | 否 | string | |
+| locale | 访问语言(如 zh-CN/en-US) | 否 | string | |
+| utmSource | UTM 来源(如广告投放渠道) | 否 | string | |
+| utmAccount | UTM 账号来源 | 否 | string | 5452 |
+| utmMedium | UTM 渠道/推广类型(如 email/social) | 否 | string | |
+| utmCampaign | UTM 活动标识(如 618 大促) | 否 | string | |
+| utmContent | UTM 内容标识(如广告创意) | 否 | string | |
+| campaignId | 内部活动 ID | 否 | string | 28818 |
+| screenWidth | 屏幕宽度 | 否 | integer | 1920 |
+| pageTitle | 页面标题 | 否 | string | Home Page |
+| isEffective | 是否有效 | 否 | boolean | True |
+| stayDuration | 停留时长(毫秒) | 否 | integer | 5000 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+## C端 - 基础数据-说明(售后/运费说明,售后问题)
+
+### 1. 获得基础数据-说明
+
+- 分组:C端 - 基础数据-说明(售后/运费说明,售后问题)
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/article/get`
+- operationId:`WebArticle_getArticle`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultArticleRespVO` |
+
+### 2. 获得基础数据-说明分页
+
+- 分组:C端 - 基础数据-说明(售后/运费说明,售后问题)
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/article/page`
+- operationId:`WebArticle_getArticlePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| articleType | query | 是 | string | 说明类型(数据字典配置) | about_us |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultArticleRespVO` |
+
+## C端 - 我的订单
+
+### 1. 取消订单
+
+- 分组:C端 - 我的订单
+- 请求方式:`PUT`
+- 接口路径:`/web-api/jh/order/cancel`
+- operationId:`ClientOrder_cancelOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OrderCancelReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | ID | 是 | integer | 1316 |
+| cancelRemark | 取消订单备注 | 是 | string | 随便 |
+| userId | 用户id | 否 | integer | |
+| itemDOList | | 否 | array[OrderItemDO] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 捕获订单
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/capture`
+- operationId:`ClientOrder_captureOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| paypalOrderId | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCaptureRespVO` |
+
+### 3. 重新计算运费和总价
+
+- 分组:C端 - 我的订单
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/order/change-shipping-amount`
+- operationId:`ClientOrder_changeShippingAmount`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ShippingAmountReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| paypalOrderId | 支付订单号 | 是 | string | |
+| address | 地址 | 是 | AddressExtra | |
+| userId | | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultShippingAmountRespVO` |
+
+### 4. 查询各状态订单数量
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/count`
+- operationId:`ClientOrder_getOrderCount`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOrderCountRespVO` |
+
+### 5. 创建订单
+
+- 分组:C端 - 我的订单
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/order/creat`
+- operationId:`ClientOrder_creatOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OrderCreatReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| customerId | 用户id | 否 | integer | |
+| userEmail | 用户邮箱 | 否 | string | |
+| orderType | 订单类型 | 是 | integer | |
+| isAnon | 是否匿名 | 是 | integer | |
+| orderNo | 订单号 | 否 | string | |
+| source | 订单来源:cart.购物车、product.单个产品 | 是 | string | |
+| status | 订单状态: 订单生成=created, 待发货=pending, 已发货待揽收=waiting_for_pickup, 部分发货=partial_shipped, 已发货=shipped, 售后中=after_sales, 交易完成=completed, 交易关闭=closed | 是 | string | |
+| couponCode | 优惠券码 | 否 | string | |
+| couponName | 优惠券名称 | 否 | string | |
+| discountId | 折扣id | 否 | integer | |
+| couponDiscountRate | 优惠券折扣率 | 否 | number | |
+| totalAmount | 订单总金额 | 是 | number | |
+| discountAmount | 优惠金额 | 是 | number | |
+| usePoints | 使用积分 | 是 | integer | |
+| shippingAmount | 运费 | 是 | number | |
+| actualAmount | 实际支付金额 | 是 | number | |
+| paymentTime | 支付时间 | 否 | string | |
+| deliverTime | 发货时间 | 否 | string | |
+| applyAftersaleTime | 申请售后时间 | 否 | string | |
+| returnTime | 申请退款时间 | 否 | string | |
+| completeTime | 完成时间(退款完成时间、订单完成时间) | 否 | string | |
+| userRemark | 用户备注 | 否 | string | |
+| sellerRemark | 商家备注 | 否 | string | |
+| cancelRemark | 取消订单备注 | 否 | string | |
+| paypalOrderId | paypal-订单ID | 否 | string | |
+| paypalSelfUrl | paypal-self链接 | 否 | string | |
+| paypalApproveUrl | paypal-approve链接 | 否 | string | |
+| paypalUpdateUrl | paypal-update链接 | 否 | string | |
+| paypalCaptureUrl | paypal-capture链接 | 否 | string | |
+| paypalStatus | paypal-状态 | 否 | string | |
+| lingxingGlobalOrderNo | 领星多平台订单编码 | 否 | string | |
+| lingxingOrderMessage | 领星平台订单提示 | 否 | string | |
+| deviceId | 设备ID | 是 | string | |
+| deptId | 部门ID | 否 | integer | |
+| userId | 用户id | 否 | integer | |
+| currencyCode | 币种编码 | 是 | string | |
+| paypalCaptureId | paypal捕获id | 否 | string | |
+| orderShipping | 订单运输信息 | 否 | OrderShippingDO | |
+| items | 订单商品 | 是 | array[OrderCreatItemReqVO] | 随便 |
+| joyHubToken | joyHubToken | 否 | string | |
+| countryCode | 国家代码 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOrderDO` |
+
+### 6. 导出订单 Excel
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/export-excel`
+- operationId:`ClientOrder_exportOrderExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| isAnon | query | 否 | integer | 订单类型 | (游客支付=1,登录支付=2) |
+| orderNo | query | 否 | string | 订单号 | |
+| statusList | query | 否 | array[string] | 订单状态 | 2 |
+| productName | query | 否 | string | 商品名称 | |
+| userId | query | 否 | integer | 用户id | |
+| ids | query | 否 | array[integer] | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 获得订单
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/get`
+- operationId:`ClientOrder_getOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOrderRespVO` |
+
+### 8. 支付成功页订单详情产品信息
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/order-item`
+- operationId:`ClientOrder_getOrderItemList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| orderId | query | 是 | integer | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListOrderItemRespVO` |
+
+### 9. 获得订单分页
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/page`
+- operationId:`ClientOrder_getOrderPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| isAnon | query | 否 | integer | 订单类型 | (游客支付=1,登录支付=2) |
+| orderNo | query | 否 | string | 订单号 | |
+| statusList | query | 否 | array[string] | 订单状态 | 2 |
+| productName | query | 否 | string | 商品名称 | |
+| userId | query | 否 | integer | 用户id | |
+| ids | query | 否 | array[integer] | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultOrderRespVO` |
+
+### 10. 设置订单备注
+
+- 分组:C端 - 我的订单
+- 请求方式:`PUT`
+- 接口路径:`/web-api/jh/order/set-remark`
+- operationId:`ClientOrder_updateOrderRemark`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OrderSetRemarkReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | ID | 是 | integer | 1316 |
+| sellerRemark | 商家备注 | 是 | string | |
+| userId | 用户id | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 11. 查询状态列表
+
+- 分组:C端 - 我的订单
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/order/status`
+- operationId:`ClientOrder_getStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListOrderStatusRespVO` |
+
+## C端 - 支付页产品推荐
+
+### 1. 获得支付页产品推荐分页
+
+- 分组:C端 - 支付页产品推荐
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/product-payment-recommend/page`
+- operationId:`WebProductPaymentRecommend_getProductPaymentRecommendPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultWebProductPaymentRecommendRespVO` |
+
+## C端 - 文件存储
+
+### 1. 创建文件
+
+- 分组:C端 - 文件存储
+- 请求方式:`POST`
+- 接口路径:`/web-api/infra/file/create`
+- operationId:`AppFile_createFile`
+- 描述:模式二:前端上传文件:配合 presigned-url 接口,记录上传了上传的文件
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FileCreateReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| configId | 文件配置编号 | 是 | integer | 11 |
+| path | 文件路径 | 是 | string | yudao.jpg |
+| name | 原文件名 | 是 | string | yudao.jpg |
+| url | 文件 URL | 是 | string | https://www.iocoder.cn/yudao.jpg |
+| type | 文件 MIME 类型 | 否 | string | application/octet-stream |
+| size | 文件大小 | 是 | integer | 2048 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 获取文件预签名地址(上传)
+
+- 分组:C端 - 文件存储
+- 请求方式:`GET`
+- 接口路径:`/web-api/infra/file/presigned-url`
+- operationId:`AppFile_getFilePresignedUrl`
+- 描述:模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 是 | string | 文件名称 | |
+| directory | query | 否 | string | 文件目录 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFilePresignedUrlRespVO` |
+
+### 3. 上传文件
+
+- 分组:C端 - 文件存储
+- 请求方式:`POST`
+- 接口路径:`/web-api/infra/file/upload`
+- operationId:`AppFile_uploadFile`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| directory | query | 否 | string | 文件目录 | XXX/YYY |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultString` |
+
+## C端 - 点赞记录
+
+### 1. 创建点赞记录
+
+- 分组:C端 - 点赞记录
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/like-info/create`
+- operationId:`LikeInfo_createLikeInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LikeInfoSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 26674 |
+| type | 点赞数据类型1-new,2-blog | 是 | integer | 2 |
+| dataId | 被点赞的数据id | 是 | integer | 13077 |
+| deviceId | 点赞设备ID | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 取消点赞
+
+- 分组:C端 - 点赞记录
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/like-info/delete`
+- operationId:`LikeInfo_deleteLikeInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LikeInfoSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 26674 |
+| type | 点赞数据类型1-new,2-blog | 是 | integer | 2 |
+| dataId | 被点赞的数据id | 是 | integer | 13077 |
+| deviceId | 点赞设备ID | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 获得点赞记录
+
+- 分组:C端 - 点赞记录
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/like-info/get`
+- operationId:`LikeInfo_getLikeInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLikeInfoRespVO` |
+
+### 4. 获得点赞记录分页
+
+- 分组:C端 - 点赞记录
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/like-info/page`
+- operationId:`LikeInfo_getLikeInfoPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| type | query | 否 | integer | 点赞数据类型new,blog | 2 |
+| typeText | query | 否 | string | 点赞数据类型new,blog | |
+| dataId | query | 否 | integer | 被点赞的数据id | 16557 |
+| dataCode | query | 否 | string | 被点赞的数据编码 | |
+| deviceId | query | 否 | string | 点赞设备ID | 1035 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 30926 |
+| userId | query | 否 | integer | 权限用户ID | 9582 |
+| custId | query | 否 | integer | 点赞app用户id | 20240 |
+| nickName | query | 否 | string | 点赞app用户名称 | 李四 |
+| email | query | 否 | string | 点赞app用户邮箱 | |
+| headImg | query | 否 | string | 点赞头像图片 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultLikeInfoRespVO` |
+
+## C端 - 用户
+
+### 1. 查询当前用户积分
+
+- 分组:C端 - 用户
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/client/get/point`
+- operationId:`WebClient_getPoint`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultUserPoint` |
+
+## C端 - 积分结算
+
+### 1. 积分商品检测计算积分价格
+
+- 分组:C端 - 积分结算
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/settle_points/estimated-calculation`
+- operationId:`WebSettlePoints_estimatedCalculation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productSkuId | query | 否 | string | 商品 SKU ID | |
+| num | query | 否 | integer | 商品数量 | |
+| countryCode | query | 否 | string | 国家编码 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebProductPointsSettlementRespVO` |
+
+## C端 - 购物车
+
+### 1. 购物车计算
+
+- 分组:C端 - 购物车
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/shopping-cart/calculate`
+- operationId:`WebShoppingCart_calculate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CalculateParam`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| couponCode | 优惠券码 | 否 | string | |
+| countryCode | 国家编码-不为空时表示所有商品国家编码一致 | 否 | string | |
+| isAnon | 是否匿名(前端页面不需要传) | 否 | integer | |
+| joyhubToken | C端token(前端不需要传) | 否 | string | |
+| productItems | 商品详情(登录用户前端页面不需要传) | 否 | array[CalculateItemParam] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCalculateResult` |
+
+### 2. 单独计算运费
+
+- 分组:C端 - 购物车
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/shopping-cart/calculate-shippingcost`
+- operationId:`WebShoppingCart_calculateShippingcost`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CalculateShippingcostReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| productList | 产品list | 是 | array[ShoppingCartItemSaveReqVo] | |
+| currencyCode | 国家 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCalculateShippingcostRespVO` |
+
+### 3. 检测购物车产品列表数据
+
+- 分组:C端 - 购物车
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/shopping-cart/check`
+- operationId:`WebShoppingCart_checkShoppingCart`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ShoppingCartSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| deviceId | 设备ID | 否 | string | |
+| products | 商品信息列表 | 否 | array[ShoppingCartItemSaveReqVo] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCheckResult` |
+
+### 4. 创建购物车
+
+- 分组:C端 - 购物车
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/shopping-cart/create`
+- operationId:`WebShoppingCart_createShoppingCart`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ShoppingCartSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| deviceId | 设备ID | 否 | string | |
+| products | 商品信息列表 | 否 | array[ShoppingCartItemSaveReqVo] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 刪除
+
+- 分组:C端 - 购物车
+- 请求方式:`DELETE`
+- 接口路径:`/web-api/jh/shopping-cart/delete-list`
+- operationId:`WebShoppingCart_deleteBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | integer | ids | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 6. 获得购物车列表
+
+- 分组:C端 - 购物车
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/shopping-cart/list`
+- operationId:`WebShoppingCart_getShoppingCart`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListShoppingCartRespVO` |
+
+### 7. 更新购物车产品数量
+
+- 分组:C端 - 购物车
+- 请求方式:`POST`
+- 接口路径:`/web-api/jh/shopping-cart/update`
+- operationId:`WebShoppingCart_updateShoppingCart`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ShoppingCartItemSaveReqVo`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 购物车详情id | 否 | integer | |
+| productSkuId | 商品skuid | 是 | string | 3644 |
+| num | 购买数量 | 是 | integer | |
+| countryCode | 国家编码 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## c端 - Banner信息
+
+### 1. 获得Banner管理
+
+- 分组:c端 - Banner信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/banner/get`
+- operationId:`WebBanner_getBanner`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBannerRespVO` |
+
+### 2. 获得Banner管理分页
+
+- 分组:c端 - Banner信息
+- 请求方式:`GET`
+- 接口路径:`/web-api/jh/banner/page`
+- operationId:`WebBanner_getBannerPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| position | query | 否 | string | 位置,不传则获取所有位置 | HOME_TOP |
+| title | query | 否 | string | 标题(模糊查询) | joy |
+| subTitle | query | 否 | string | 副标题(模糊查询) | hub |
+| platform | query | 是 | integer | 适用平台(1PC 2手机) | 1 |
+| lang | query | 是 | string | 语言(en 英语 de 德语 ja 日语) | en |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultBannerRespVO` |
+
+## default-controller
+
+### 1. Default_ai404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. Default_ai404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. Default_ai404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. Default_ai404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. Default_ai404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 6. Default_ai404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 7. Default_ai404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/ai/**`
+- operationId:`Default_ai404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 8. Default_bpm404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 9. Default_bpm404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 10. Default_bpm404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 11. Default_bpm404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 12. Default_bpm404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 13. Default_bpm404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 14. Default_bpm404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/bpm/**`
+- operationId:`Default_bpm404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 15. Default_crm404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 16. Default_crm404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 17. Default_crm404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 18. Default_crm404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 19. Default_crm404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 20. Default_crm404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 21. Default_crm404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/crm/**`
+- operationId:`Default_crm404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 22. Default_erp404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 23. Default_erp404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 24. Default_erp404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 25. Default_erp404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 26. Default_erp404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 27. Default_erp404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 28. Default_erp404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/erp/**`
+- operationId:`Default_erp404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 29. Default_iot404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 30. Default_iot404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 31. Default_iot404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 32. Default_iot404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 33. Default_iot404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 34. Default_iot404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 35. Default_iot404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/iot/**`
+- operationId:`Default_iot404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 36. Default_mp404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 37. Default_mp404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 38. Default_mp404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 39. Default_mp404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 40. Default_mp404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 41. Default_mp404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 42. Default_mp404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/mp/**`
+- operationId:`Default_mp404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 43. Default_pay404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 44. Default_pay404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 45. Default_pay404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 46. Default_pay404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 47. Default_pay404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 48. Default_pay404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 49. Default_pay404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/pay/**`
+- operationId:`Default_pay404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 50. Default_mall404_17
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_17`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 51. Default_mall404_14
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_14`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 52. Default_mall404_19
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_19`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 53. Default_mall404_20
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_20`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 54. Default_mall404_18
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_18`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 55. Default_mall404_15
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_15`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 56. Default_mall404_16
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/product/**`
+- operationId:`Default_mall404_16`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 57. Default_mall404_10
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_10`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 58. Default_mall404_7
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_7`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 59. Default_mall404_12
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_12`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 60. Default_mall404_13
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_13`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 61. Default_mall404_11
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_11`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 62. Default_mall404_8
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_8`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 63. Default_mall404_9
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/promotion/**`
+- operationId:`Default_mall404_9`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 64. Default_report404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 65. Default_report404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 66. Default_report404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 67. Default_report404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 68. Default_report404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 69. Default_report404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 70. Default_report404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/report/**`
+- operationId:`Default_report404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 71. Default_mall404_3
+
+- 分组:default-controller
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_3`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 72. Default_mall404
+
+- 分组:default-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 73. Default_mall404_5
+
+- 分组:default-controller
+- 请求方式:`HEAD`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_5`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 74. Default_mall404_6
+
+- 分组:default-controller
+- 请求方式:`OPTIONS`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_6`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 75. Default_mall404_4
+
+- 分组:default-controller
+- 请求方式:`PATCH`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_4`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 76. Default_mall404_1
+
+- 分组:default-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_1`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 77. Default_mall404_2
+
+- 分组:default-controller
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/trade/**`
+- operationId:`Default_mall404_2`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## pay-pal-payment-controller
+
+### 1. PayPalPayment_cancel
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/cancel`
+- operationId:`PayPalPayment_cancel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `string` |
+
+### 2. PayPalPayment_captureOrder
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/capture-order`
+- operationId:`PayPalPayment_captureOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| orderId | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 3. PayPalPayment_createOrder
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/create-order`
+- operationId:`PayPalPayment_createOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`PaymentRequest`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| amount | | 否 | number | |
+| currency | | 否 | string | |
+| description | | 否 | string | |
+| outTradeNo | | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 4. PayPalPayment_getOrder
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/get-order`
+- operationId:`PayPalPayment_getOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| orderId | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 5. PayPalPayment_getRefund
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/get-refund`
+- operationId:`PayPalPayment_getRefund`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| refundId | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 6. PayPalPayment_refundCapturedPayment
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/refund-captured-payment`
+- operationId:`PayPalPayment_refundCapturedPayment`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`RefundCapturedPaymentRequest`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| captureId | | 否 | string | |
+| currencyCode | | 否 | string | |
+| value | | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 7. PayPalPayment_searchTransaction
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/search-transaction`
+- operationId:`PayPalPayment_searchTransaction`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`SearchTransactionRequest`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| startDate | | 否 | string | |
+| endDate | | 否 | string | |
+| fields | | 否 | string | |
+| pageSize | | 否 | integer | |
+| page | | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+### 8. PayPalPayment_success
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/success`
+- operationId:`PayPalPayment_success`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| token | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `string` |
+
+### 9. PayPalPayment_trackOrder
+
+- 分组:pay-pal-payment-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/track-order`
+- operationId:`PayPalPayment_trackOrder`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`TrackRequest`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| orderId | | 否 | string | |
+| captureId | | 否 | string | |
+| trackingNumber | | 否 | string | |
+| carrier | | 否 | string | |
+| carrierNameOther | | 否 | string | |
+| notifyPayer | | 否 | boolean | |
+| items | | 否 | array[OrderTrackerItem] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `object` |
+
+## pay-pal-webhook-controller
+
+### 1. PayPalWebhook_receivePayPalWebhook
+
+- 分组:pay-pal-webhook-controller
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/webhook/payment`
+- operationId:`PayPalWebhook_receivePayPalWebhook`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| PAYPAL-TRANSMISSION-ID | header | 是 | string | | |
+| PAYPAL-TRANSMISSION-TIME | header | 是 | string | | |
+| PAYPAL-TRANSMISSION-SIG | header | 是 | string | | |
+| PAYPAL-CERT-URL | header | 是 | string | | |
+| PAYPAL-AUTH-ALGO | header | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`string`
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `string` |
+
+## 用户 App - 地区
+
+### 1. 获得地区树
+
+- 分组:用户 App - 地区
+- 请求方式:`GET`
+- 接口路径:`/app-api/system/area/tree`
+- operationId:`AppArea_getAreaTree`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListAppAreaNodeRespVO` |
+
+## 用户 App - 字典数据
+
+### 1. 根据字典类型查询字典数据信息
+
+- 分组:用户 App - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/app-api/system/dict-data/type`
+- operationId:`AppDictData_getDictDataListByType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| type | query | 是 | string | 字典类型 | common_status |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListAppDictDataRespVO` |
+
+## 用户 App - 租户
+
+### 1. 使用域名,获得租户信息
+
+- 分组:用户 App - 租户
+- 请求方式:`GET`
+- 接口路径:`/app-api/system/tenant/get-by-website`
+- operationId:`AppTenant_getTenantByWebsite`
+- 描述:根据用户的域名,获得租户信息
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| website | query | 是 | string | 域名 | www.iocoder.cn |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAppTenantRespVO` |
+
+## 管理后台 - API 访问日志
+
+### 1. 导出API 访问日志 Excel
+
+- 分组:管理后台 - API 访问日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/api-access-log/export-excel`
+- operationId:`ApiAccessLog_exportApiAccessLogExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 否 | integer | 用户编号 | 666 |
+| userType | query | 否 | integer | 用户类型 | 2 |
+| applicationName | query | 否 | string | 应用名 | dashboard |
+| requestUrl | query | 否 | string | 请求地址,模糊匹配 | /xxx/yyy |
+| beginTime | query | 否 | array[string] | 开始时间 | [2022-07-01 00:00:00, 2022-07-01 23:59:59] |
+| duration | query | 否 | integer | 执行时长,大于等于,单位:毫秒 | 100 |
+| resultCode | query | 否 | integer | 结果码 | 0 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 2. 获得API 访问日志分页
+
+- 分组:管理后台 - API 访问日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/api-access-log/page`
+- operationId:`ApiAccessLog_getApiAccessLogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 否 | integer | 用户编号 | 666 |
+| userType | query | 否 | integer | 用户类型 | 2 |
+| applicationName | query | 否 | string | 应用名 | dashboard |
+| requestUrl | query | 否 | string | 请求地址,模糊匹配 | /xxx/yyy |
+| beginTime | query | 否 | array[string] | 开始时间 | [2022-07-01 00:00:00, 2022-07-01 23:59:59] |
+| duration | query | 否 | integer | 执行时长,大于等于,单位:毫秒 | 100 |
+| resultCode | query | 否 | integer | 结果码 | 0 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultApiAccessLogRespVO` |
+
+## 管理后台 - API 错误日志
+
+### 1. 导出 API 错误日志 Excel
+
+- 分组:管理后台 - API 错误日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/api-error-log/export-excel`
+- operationId:`ApiErrorLog_exportApiErrorLogExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 否 | integer | 用户编号 | 666 |
+| userType | query | 否 | integer | 用户类型 | 1 |
+| applicationName | query | 否 | string | 应用名 | dashboard |
+| requestUrl | query | 否 | string | 请求地址 | /xx/yy |
+| exceptionTime | query | 否 | array[string] | 异常发生时间 | |
+| processStatus | query | 否 | integer | 处理状态 | 0 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 2. 获得 API 错误日志分页
+
+- 分组:管理后台 - API 错误日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/api-error-log/page`
+- operationId:`ApiErrorLog_getApiErrorLogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 否 | integer | 用户编号 | 666 |
+| userType | query | 否 | integer | 用户类型 | 1 |
+| applicationName | query | 否 | string | 应用名 | dashboard |
+| requestUrl | query | 否 | string | 请求地址 | /xx/yy |
+| exceptionTime | query | 否 | array[string] | 异常发生时间 | |
+| processStatus | query | 否 | integer | 处理状态 | 0 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultApiErrorLogRespVO` |
+
+### 3. 更新 API 错误日志的状态
+
+- 分组:管理后台 - API 错误日志
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/api-error-log/update-status`
+- operationId:`ApiErrorLog_updateApiErrorLogProcess`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| processStatus | query | 是 | integer | 处理状态 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - Banner管理
+
+### 1. 创建Banner管理
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/banner/create`
+- operationId:`Banner_createBanner`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BannerSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 13589 |
+| position | 位置 | 是 | string | |
+| title | 标题 | 否 | string | |
+| subTitle | 副标题 | 否 | string | |
+| image | 图片 | 是 | BannerImageDO | {'url': 'https://www.toendi.com/static/image/cd94c191561c4a37a04c78fca2913851.webp', 'name': 'Toendi Joyhub vibrator heater Black Friday promotion for warm and pleasurable experiences', 'mime_type': 'image/webp'} |
+| link | 链接 | 否 | string | |
+| platform | 适用平台(1PC 2手机) | 是 | integer | |
+| lang | 语言(en 英语 de 德语 ja 日语) | 是 | string | |
+| rankNum | 排序号 | 是 | integer | |
+| type | 类型 | 是 | string | |
+| status | 状态 | 是 | integer | 2 |
+| intervalTime | 轮播时间(秒) | 是 | integer | |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除Banner管理
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/banner/delete`
+- operationId:`Banner_deleteBanner`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除Banner管理
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/banner/delete-list`
+- operationId:`Banner_deleteBannerList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出Banner管理 Excel
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/banner/export-excel`
+- operationId:`Banner_exportBannerExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| position | query | 否 | string | 位置 | |
+| title | query | 否 | string | 标题 | |
+| subTitle | query | 否 | string | 副标题 | |
+| platform | query | 否 | integer | 适用平台(1PC 2手机) | |
+| lang | query | 否 | string | 语言(en 英语 de 德语 ja 日语) | |
+| type | query | 否 | string | 类型 | |
+| status | query | 否 | integer | 状态 | 2 |
+| intervalTime | query | 否 | integer | 轮播时间(秒) | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得Banner管理
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/banner/get`
+- operationId:`Banner_getBanner`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBannerRespVO` |
+
+### 6. 获得导入Banner管理模板
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/banner/get-import-template`
+- operationId:`Banner_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入Banner管理Excel
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/banner/import-excel`
+- operationId:`Banner_importBannerExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBannerImportRespVO` |
+
+### 8. 获得Banner管理分页
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/banner/page`
+- operationId:`Banner_getBannerPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| position | query | 否 | string | 位置 | |
+| title | query | 否 | string | 标题 | |
+| subTitle | query | 否 | string | 副标题 | |
+| platform | query | 否 | integer | 适用平台(1PC 2手机) | |
+| lang | query | 否 | string | 语言(en 英语 de 德语 ja 日语) | |
+| type | query | 否 | string | 类型 | |
+| status | query | 否 | integer | 状态 | 2 |
+| intervalTime | query | 否 | integer | 轮播时间(秒) | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultBannerRespVO` |
+
+### 9. 更新Banner管理
+
+- 分组:管理后台 - Banner管理
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/banner/update`
+- operationId:`Banner_updateBanner`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BannerSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 13589 |
+| position | 位置 | 是 | string | |
+| title | 标题 | 否 | string | |
+| subTitle | 副标题 | 否 | string | |
+| image | 图片 | 是 | BannerImageDO | {'url': 'https://www.toendi.com/static/image/cd94c191561c4a37a04c78fca2913851.webp', 'name': 'Toendi Joyhub vibrator heater Black Friday promotion for warm and pleasurable experiences', 'mime_type': 'image/webp'} |
+| link | 链接 | 否 | string | |
+| platform | 适用平台(1PC 2手机) | 是 | integer | |
+| lang | 语言(en 英语 de 德语 ja 日语) | 是 | string | |
+| rankNum | 排序号 | 是 | integer | |
+| type | 类型 | 是 | string | |
+| status | 状态 | 是 | integer | 2 |
+| intervalTime | 轮播时间(秒) | 是 | integer | |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - FAQ分类
+
+### 1. 创建FAQ分类
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq-cate/create`
+- operationId:`FaqCate_createFaqCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 9867 |
+| pid | 父分类ID | 是 | integer | 12768 |
+| title | 分类 | 是 | string | |
+| status | 状态 (1正常 2停用) | 否 | integer | 1 |
+| rankNum | 排序号 | 是 | integer | |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除FAQ分类
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/faq-cate/delete`
+- operationId:`FaqCate_deleteFaqCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 导出FAQ分类 Excel
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-cate/export-excel`
+- operationId:`FaqCate_exportFaqCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| pid | query | 否 | integer | 父分类ID | 12768 |
+| title | query | 否 | string | 分类 | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 1 |
+| rankNum | query | 否 | integer | 排序号 | |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 6711 |
+| userId | query | 否 | integer | 权限用户ID | 4173 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 4. 获得FAQ分类
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-cate/get`
+- operationId:`FaqCate_getFaqCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqCateRespVO` |
+
+### 5. 获得导入FAQ分类模板
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-cate/get-import-template`
+- operationId:`FaqCate_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 6. 导入FAQ分类Excel
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq-cate/import-excel`
+- operationId:`FaqCate_importFaqCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqCateImportRespVO` |
+
+### 7. 获得FAQ分类列表
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-cate/list`
+- operationId:`FaqCate_getFaqCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| pid | query | 否 | integer | 父分类ID | 12768 |
+| title | query | 否 | string | 分类 | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 1 |
+| rankNum | query | 否 | integer | 排序号 | |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 6711 |
+| userId | query | 否 | integer | 权限用户ID | 4173 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListFaqCateRespVO` |
+
+### 8. 更新FAQ分类
+
+- 分组:管理后台 - FAQ分类
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/faq-cate/update`
+- operationId:`FaqCate_updateFaqCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 9867 |
+| pid | 父分类ID | 是 | integer | 12768 |
+| title | 分类 | 是 | string | |
+| status | 状态 (1正常 2停用) | 否 | integer | 1 |
+| rankNum | 排序号 | 是 | integer | |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - FAQ数据
+
+### 1. 获得FAQ分类下拉列表
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq/cate-list`
+- operationId:`Faq_getFaqCateList`
+- 描述:仅返回正常的叶子分类
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListFaqCateSimpleRespVO` |
+
+### 2. 创建FAQ数据
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq/create`
+- operationId:`Faq_createFaq`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 6362 |
+| faqCateId | 分类ID | 是 | integer | 29870 |
+| question | 常见问题 | 是 | string | |
+| answer | 回答 | 是 | string | |
+| isHot | 是否热门(0否,1是) | 是 | integer | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+| rankNum | 排序号 | 是 | integer | |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 删除FAQ数据
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/faq/delete`
+- operationId:`Faq_deleteFaq`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除FAQ数据
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/faq/delete-list`
+- operationId:`Faq_deleteFaqList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 导出FAQ数据 Excel
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq/export-excel`
+- operationId:`Faq_exportFaqExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| faqCateId | query | 否 | integer | 分类ID | 29870 |
+| question | query | 否 | string | 常见问题 | |
+| answer | query | 否 | string | 回答 | |
+| isHot | query | 否 | integer | 是否热门(0否,1是) | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| rankNum | query | 否 | integer | 排序号 | |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 29922 |
+| userId | query | 否 | integer | 权限用户ID | 11637 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 6. 获得FAQ数据
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq/get`
+- operationId:`Faq_getFaq`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqRespVO` |
+
+### 7. 获得导入FAQ数据模板
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq/get-import-template`
+- operationId:`Faq_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 8. 导入FAQ数据Excel
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq/import-excel`
+- operationId:`Faq_importFaqExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqImportRespVO` |
+
+### 9. 获得FAQ数据分页
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq/page`
+- operationId:`Faq_getFaqPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| faqCateId | query | 否 | integer | 分类ID | 29870 |
+| question | query | 否 | string | 常见问题 | |
+| answer | query | 否 | string | 回答 | |
+| isHot | query | 否 | integer | 是否热门(0否,1是) | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| rankNum | query | 否 | integer | 排序号 | |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 29922 |
+| userId | query | 否 | integer | 权限用户ID | 11637 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultFaqRespVO` |
+
+### 10. 更新FAQ数据
+
+- 分组:管理后台 - FAQ数据
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/faq/update`
+- operationId:`Faq_updateFaq`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 6362 |
+| faqCateId | 分类ID | 是 | integer | 29870 |
+| question | 常见问题 | 是 | string | |
+| answer | 回答 | 是 | string | |
+| isHot | 是否热门(0否,1是) | 是 | integer | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+| rankNum | 排序号 | 是 | integer | |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - FAQ联系数据
+
+### 1. 创建FAQ联系数据
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq-contact-us/create`
+- operationId:`FaqContactUs_createFaqContactUs`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqContactUsSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 24733 |
+| name | 姓名 | 是 | string | 芋艿 |
+| email | 邮箱 | 是 | string | |
+| toyOrderNumber | 玩具订单号 | 是 | string | |
+| questionType | 问题类型 | 是 | string | 1 |
+| questionDetail | 详情 | 否 | string | |
+| files | 图片或视频 | 否 | array[JhFileDO] | |
+| lang | 语言 | 是 | string | |
+| ip | IP地址 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除FAQ联系数据
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/faq-contact-us/delete`
+- operationId:`FaqContactUs_deleteFaqContactUs`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除FAQ联系数据
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/faq-contact-us/delete-list`
+- operationId:`FaqContactUs_deleteFaqContactUsList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出FAQ联系数据 Excel
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-contact-us/export-excel`
+- operationId:`FaqContactUs_exportFaqContactUsExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 姓名 | 芋艿 |
+| email | query | 否 | string | 邮箱 | |
+| toyOrderNumber | query | 否 | string | 玩具订单号 | |
+| ids | query | 否 | array[integer] | ids | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得FAQ联系数据
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-contact-us/get`
+- operationId:`FaqContactUs_getFaqContactUs`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqContactUsRespVO` |
+
+### 6. 获得导入FAQ联系数据模板
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-contact-us/get-import-template`
+- operationId:`FaqContactUs_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入FAQ联系数据Excel
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/faq-contact-us/import-excel`
+- operationId:`FaqContactUs_importFaqContactUsExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultFaqContactUsImportRespVO` |
+
+### 8. 获得FAQ联系数据分页
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/faq-contact-us/page`
+- operationId:`FaqContactUs_getFaqContactUsPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 姓名 | 芋艿 |
+| email | query | 否 | string | 邮箱 | |
+| toyOrderNumber | query | 否 | string | 玩具订单号 | |
+| ids | query | 否 | array[integer] | ids | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultFaqContactUsRespVO` |
+
+### 9. 更新FAQ联系数据
+
+- 分组:管理后台 - FAQ联系数据
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/faq-contact-us/update`
+- operationId:`FaqContactUs_updateFaqContactUs`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`FaqContactUsSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 24733 |
+| name | 姓名 | 是 | string | 芋艿 |
+| email | 邮箱 | 是 | string | |
+| toyOrderNumber | 玩具订单号 | 是 | string | |
+| questionType | 问题类型 | 是 | string | 1 |
+| questionDetail | 详情 | 否 | string | |
+| files | 图片或视频 | 否 | array[JhFileDO] | |
+| lang | 语言 | 是 | string | |
+| ip | IP地址 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - LX 亚马逊FBA货件详情
+
+### 1. 创建LX 亚马逊FBA货件详情
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`POST`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/create`
+- operationId:`LxFbaInboundShipmentDetail_createFbaInboundShipmentDetail`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LxFbaInboundShipmentDetailSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 唯一ID | 是 | integer | 5515 |
+| inboundPlanId | STA任务编号 | 否 | string | 10387 |
+| alphaCode | 承运方式 | 否 | string | |
+| amazonReferenceId | 关联号 | 否 | string | 28173 |
+| endDate | 送达时段-结束时间 | 否 | string | |
+| inboundRegion | 入库区域 | 否 | string | |
+| itemCount | 商品总数 | 否 | integer | 2784 |
+| itemList | 商品信息列表 | 否 | | |
+| pickUpId | 提货单号 | 否 | string | 19381 |
+| sendAddress | 发货地址 | 否 | | |
+| shippingTime | 发货日期 | 否 | string | |
+| shipmentConfirmationId | 货件单号 | 否 | string | 31329 |
+| shipmentName | 货件名称 | 否 | string | 王五 |
+| shippingAddress | 收货地址 | 否 | | |
+| shippingMode | 货件类型 | 否 | string | |
+| shippingSolution | 承运人 | 否 | string | |
+| sid | 店铺ID | 否 | integer | 14347 |
+| startDate | 送达时段-开始时间 | 否 | string | |
+| status | 货件状态 | 否 | string | 1 |
+| trackingNumberList | 追踪编号列表 | 否 | | |
+| warehouseId | 物流中心编码 | 否 | string | 16629 |
+| erpSyncStatus | 同步状态 (本地字段) | 否 | integer | 1 |
+| userId | 权限用户ID | 是 | integer | 17868 |
+| deptId | 权限部门ID | 是 | integer | 31940 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除LX 亚马逊FBA货件详情
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/delete`
+- operationId:`LxFbaInboundShipmentDetail_deleteFbaInboundShipmentDetail`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除LX 亚马逊FBA货件详情
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/delete-list`
+- operationId:`LxFbaInboundShipmentDetail_deleteFbaInboundShipmentDetailList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出LX 亚马逊FBA货件详情 Excel
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/export-excel`
+- operationId:`LxFbaInboundShipmentDetail_exportFbaInboundShipmentDetailExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| inboundPlanId | query | 否 | string | STA任务编号 | 10387 |
+| alphaCode | query | 否 | string | 承运方式 | |
+| amazonReferenceId | query | 否 | string | 关联号 | 28173 |
+| endDate | query | 否 | array[string] | 送达时段-结束时间 | |
+| inboundRegion | query | 否 | string | 入库区域 | |
+| itemCount | query | 否 | integer | 商品总数 | 2784 |
+| itemList | query | 否 | object | 商品信息列表 | |
+| pickUpId | query | 否 | string | 提货单号 | 19381 |
+| sendAddress | query | 否 | object | 发货地址 | |
+| shippingTime | query | 否 | array[string] | 发货日期 | |
+| shipmentConfirmationId | query | 否 | string | 货件单号 | 31329 |
+| shipmentName | query | 否 | string | 货件名称 | 王五 |
+| shippingAddress | query | 否 | object | 收货地址 | |
+| shippingMode | query | 否 | string | 货件类型 | |
+| shippingSolution | query | 否 | string | 承运人 | |
+| sid | query | 否 | integer | 店铺ID | 14347 |
+| startDate | query | 否 | array[string] | 送达时段-开始时间 | |
+| status | query | 否 | string | 货件状态 | 1 |
+| trackingNumberList | query | 否 | object | 追踪编号列表 | |
+| warehouseId | query | 否 | string | 物流中心编码 | 16629 |
+| erpSyncStatus | query | 否 | integer | 同步状态 (本地字段) | 1 |
+| createTime | query | 否 | array[string] | 系统创建时间 | |
+| userId | query | 否 | integer | 权限用户ID | 17868 |
+| deptId | query | 否 | integer | 权限部门ID | 31940 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得LX 亚马逊FBA货件详情
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/get`
+- operationId:`LxFbaInboundShipmentDetail_getFbaInboundShipmentDetail`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLxFbaInboundShipmentDetailRespVO` |
+
+### 6. 获得导入LX 亚马逊FBA货件详情模板
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/get-import-template`
+- operationId:`LxFbaInboundShipmentDetail_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入LX 亚马逊FBA货件详情Excel
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`POST`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/import-excel`
+- operationId:`LxFbaInboundShipmentDetail_importFbaInboundShipmentDetailExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLxFbaInboundShipmentDetailImportRespVO` |
+
+### 8. 获得LX 亚马逊FBA货件详情分页
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/page`
+- operationId:`LxFbaInboundShipmentDetail_getFbaInboundShipmentDetailPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| inboundPlanId | query | 否 | string | STA任务编号 | 10387 |
+| alphaCode | query | 否 | string | 承运方式 | |
+| amazonReferenceId | query | 否 | string | 关联号 | 28173 |
+| endDate | query | 否 | array[string] | 送达时段-结束时间 | |
+| inboundRegion | query | 否 | string | 入库区域 | |
+| itemCount | query | 否 | integer | 商品总数 | 2784 |
+| itemList | query | 否 | object | 商品信息列表 | |
+| pickUpId | query | 否 | string | 提货单号 | 19381 |
+| sendAddress | query | 否 | object | 发货地址 | |
+| shippingTime | query | 否 | array[string] | 发货日期 | |
+| shipmentConfirmationId | query | 否 | string | 货件单号 | 31329 |
+| shipmentName | query | 否 | string | 货件名称 | 王五 |
+| shippingAddress | query | 否 | object | 收货地址 | |
+| shippingMode | query | 否 | string | 货件类型 | |
+| shippingSolution | query | 否 | string | 承运人 | |
+| sid | query | 否 | integer | 店铺ID | 14347 |
+| startDate | query | 否 | array[string] | 送达时段-开始时间 | |
+| status | query | 否 | string | 货件状态 | 1 |
+| trackingNumberList | query | 否 | object | 追踪编号列表 | |
+| warehouseId | query | 否 | string | 物流中心编码 | 16629 |
+| erpSyncStatus | query | 否 | integer | 同步状态 (本地字段) | 1 |
+| createTime | query | 否 | array[string] | 系统创建时间 | |
+| userId | query | 否 | integer | 权限用户ID | 17868 |
+| deptId | query | 否 | integer | 权限部门ID | 31940 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultLxFbaInboundShipmentDetailRespVO` |
+
+### 9. 更新LX 亚马逊FBA货件详情
+
+- 分组:管理后台 - LX 亚马逊FBA货件详情
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/lx/fba-inbound-shipment-detail/update`
+- operationId:`LxFbaInboundShipmentDetail_updateFbaInboundShipmentDetail`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LxFbaInboundShipmentDetailSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 唯一ID | 是 | integer | 5515 |
+| inboundPlanId | STA任务编号 | 否 | string | 10387 |
+| alphaCode | 承运方式 | 否 | string | |
+| amazonReferenceId | 关联号 | 否 | string | 28173 |
+| endDate | 送达时段-结束时间 | 否 | string | |
+| inboundRegion | 入库区域 | 否 | string | |
+| itemCount | 商品总数 | 否 | integer | 2784 |
+| itemList | 商品信息列表 | 否 | | |
+| pickUpId | 提货单号 | 否 | string | 19381 |
+| sendAddress | 发货地址 | 否 | | |
+| shippingTime | 发货日期 | 否 | string | |
+| shipmentConfirmationId | 货件单号 | 否 | string | 31329 |
+| shipmentName | 货件名称 | 否 | string | 王五 |
+| shippingAddress | 收货地址 | 否 | | |
+| shippingMode | 货件类型 | 否 | string | |
+| shippingSolution | 承运人 | 否 | string | |
+| sid | 店铺ID | 否 | integer | 14347 |
+| startDate | 送达时段-开始时间 | 否 | string | |
+| status | 货件状态 | 否 | string | 1 |
+| trackingNumberList | 追踪编号列表 | 否 | | |
+| warehouseId | 物流中心编码 | 否 | string | 16629 |
+| erpSyncStatus | 同步状态 (本地字段) | 否 | integer | 1 |
+| userId | 权限用户ID | 是 | integer | 17868 |
+| deptId | 权限部门ID | 是 | integer | 31940 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - LX 亚马逊店铺信息
+
+### 1. 创建LX 亚马逊店铺信息
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`POST`
+- 接口路径:`/admin-api/lx/amazon-shop/create`
+- operationId:`LxAmazonShop_createAmazonShop`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LxAmazonShopSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 25866 |
+| sid | 店铺ID(领星唯一标识) | 是 | integer | 23553 |
+| mid | 站点ID | 否 | integer | 16304 |
+| sellerAccountId | 店铺账号ID | 否 | integer | 18795 |
+| hasAdsSetting | 是否授权广告:0否, 1是 | 否 | integer | |
+| status | 店铺状态:0停用, 1正常, 2授权异常, 3欠费 | 否 | integer | 1 |
+| erpSyncStatus | 同步状态:0未同步, 1已同步, 2异常 | 否 | integer | 2 |
+| name | 店铺名 | 否 | string | 王五 |
+| sellerId | 亚马逊店铺ID(Seller ID) | 否 | string | 5978 |
+| accountName | 店铺账户名称 | 否 | string | 王五 |
+| region | 站点简称 | 否 | string | |
+| country | 国家名称 | 否 | string | |
+| marketplaceId | 亚马逊市场ID | 否 | string | 21231 |
+| userId | 权限用户ID | 是 | integer | 5873 |
+| deptId | 权限部门ID | 是 | integer | 13529 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除LX 亚马逊店铺信息
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/lx/amazon-shop/delete`
+- operationId:`LxAmazonShop_deleteAmazonShop`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除LX 亚马逊店铺信息
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/lx/amazon-shop/delete-list`
+- operationId:`LxAmazonShop_deleteAmazonShopList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出LX 亚马逊店铺信息 Excel
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/amazon-shop/export-excel`
+- operationId:`LxAmazonShop_exportAmazonShopExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| sid | query | 否 | integer | 店铺ID(领星唯一标识) | 23553 |
+| mid | query | 否 | integer | 站点ID | 16304 |
+| sellerAccountId | query | 否 | integer | 店铺账号ID | 18795 |
+| hasAdsSetting | query | 否 | integer | 是否授权广告:0否, 1是 | |
+| status | query | 否 | integer | 店铺状态:0停用, 1正常, 2授权异常, 3欠费 | 1 |
+| erpSyncStatus | query | 否 | integer | 同步状态:0未同步, 1已同步, 2异常 | 2 |
+| name | query | 否 | string | 店铺名 | 王五 |
+| sellerId | query | 否 | string | 亚马逊店铺ID(Seller ID) | 5978 |
+| accountName | query | 否 | string | 店铺账户名称 | 王五 |
+| region | query | 否 | string | 站点简称 | |
+| country | query | 否 | string | 国家名称 | |
+| marketplaceId | query | 否 | string | 亚马逊市场ID | 21231 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| userId | query | 否 | integer | 权限用户ID | 5873 |
+| deptId | query | 否 | integer | 权限部门ID | 13529 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得LX 亚马逊店铺信息
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/amazon-shop/get`
+- operationId:`LxAmazonShop_getAmazonShop`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLxAmazonShopRespVO` |
+
+### 6. 获得导入LX 亚马逊店铺信息模板
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/amazon-shop/get-import-template`
+- operationId:`LxAmazonShop_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入LX 亚马逊店铺信息Excel
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`POST`
+- 接口路径:`/admin-api/lx/amazon-shop/import-excel`
+- operationId:`LxAmazonShop_importAmazonShopExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLxAmazonShopImportRespVO` |
+
+### 8. 获得LX 亚马逊店铺信息分页
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/lx/amazon-shop/page`
+- operationId:`LxAmazonShop_getAmazonShopPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| sid | query | 否 | integer | 店铺ID(领星唯一标识) | 23553 |
+| mid | query | 否 | integer | 站点ID | 16304 |
+| sellerAccountId | query | 否 | integer | 店铺账号ID | 18795 |
+| hasAdsSetting | query | 否 | integer | 是否授权广告:0否, 1是 | |
+| status | query | 否 | integer | 店铺状态:0停用, 1正常, 2授权异常, 3欠费 | 1 |
+| erpSyncStatus | query | 否 | integer | 同步状态:0未同步, 1已同步, 2异常 | 2 |
+| name | query | 否 | string | 店铺名 | 王五 |
+| sellerId | query | 否 | string | 亚马逊店铺ID(Seller ID) | 5978 |
+| accountName | query | 否 | string | 店铺账户名称 | 王五 |
+| region | query | 否 | string | 站点简称 | |
+| country | query | 否 | string | 国家名称 | |
+| marketplaceId | query | 否 | string | 亚马逊市场ID | 21231 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| userId | query | 否 | integer | 权限用户ID | 5873 |
+| deptId | query | 否 | integer | 权限部门ID | 13529 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultLxAmazonShopRespVO` |
+
+### 9. 更新LX 亚马逊店铺信息
+
+- 分组:管理后台 - LX 亚马逊店铺信息
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/lx/amazon-shop/update`
+- operationId:`LxAmazonShop_updateAmazonShop`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`LxAmazonShopSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 25866 |
+| sid | 店铺ID(领星唯一标识) | 是 | integer | 23553 |
+| mid | 站点ID | 否 | integer | 16304 |
+| sellerAccountId | 店铺账号ID | 否 | integer | 18795 |
+| hasAdsSetting | 是否授权广告:0否, 1是 | 否 | integer | |
+| status | 店铺状态:0停用, 1正常, 2授权异常, 3欠费 | 否 | integer | 1 |
+| erpSyncStatus | 同步状态:0未同步, 1已同步, 2异常 | 否 | integer | 2 |
+| name | 店铺名 | 否 | string | 王五 |
+| sellerId | 亚马逊店铺ID(Seller ID) | 否 | string | 5978 |
+| accountName | 店铺账户名称 | 否 | string | 王五 |
+| region | 站点简称 | 否 | string | |
+| country | 国家名称 | 否 | string | |
+| marketplaceId | 亚马逊市场ID | 否 | string | 21231 |
+| userId | 权限用户ID | 是 | integer | 5873 |
+| deptId | 权限部门ID | 是 | integer | 13529 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - OAuth2 客户端
+
+### 1. 创建 OAuth2 客户端
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/oauth2-client/create`
+- operationId:`OAuth2Client_createOAuth2Client`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OAuth2ClientSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 否 | integer | 1024 |
+| clientId | 客户端编号 | 是 | string | tudou |
+| secret | 客户端密钥 | 是 | string | fan |
+| name | 应用名 | 是 | string | 土豆 |
+| logo | 应用图标 | 是 | string | https://www.iocoder.cn/xx.png |
+| description | 应用描述 | 否 | string | 我是一个应用 |
+| status | 状态,参见 CommonStatusEnum 枚举 | 是 | integer | 1 |
+| accessTokenValiditySeconds | 访问令牌的有效期 | 是 | integer | 8640 |
+| refreshTokenValiditySeconds | 刷新令牌的有效期 | 是 | integer | 8640000 |
+| redirectUris | 可重定向的 URI 地址 | 是 | array[string] | https://www.iocoder.cn |
+| authorizedGrantTypes | 授权类型,参见 OAuth2GrantTypeEnum 枚举 | 是 | array[string] | password |
+| scopes | 授权范围 | 否 | array[string] | user_info |
+| autoApproveScopes | 自动通过的授权范围 | 否 | array[string] | user_info |
+| authorities | 权限 | 否 | array[string] | system:user:query |
+| resourceIds | 资源 | 否 | array[string] | 1024 |
+| additionalInformation | 附加信息 | 否 | string | {yunai: true} |
+| additionalInformationJson | | 否 | boolean | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除 OAuth2 客户端
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/oauth2-client/delete`
+- operationId:`OAuth2Client_deleteOAuth2Client`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除 OAuth2 客户端
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/oauth2-client/delete-list`
+- operationId:`OAuth2Client_deleteOAuth2ClientList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 获得 OAuth2 客户端
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/oauth2-client/get`
+- operationId:`OAuth2Client_getOAuth2Client`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOAuth2ClientRespVO` |
+
+### 5. 获得 OAuth2 客户端分页
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/oauth2-client/page`
+- operationId:`OAuth2Client_getOAuth2ClientPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 应用名,模糊匹配 | 土豆 |
+| status | query | 否 | integer | 状态,参见 CommonStatusEnum 枚举 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultOAuth2ClientRespVO` |
+
+### 6. 更新 OAuth2 客户端
+
+- 分组:管理后台 - OAuth2 客户端
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/oauth2-client/update`
+- operationId:`OAuth2Client_updateOAuth2Client`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OAuth2ClientSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 否 | integer | 1024 |
+| clientId | 客户端编号 | 是 | string | tudou |
+| secret | 客户端密钥 | 是 | string | fan |
+| name | 应用名 | 是 | string | 土豆 |
+| logo | 应用图标 | 是 | string | https://www.iocoder.cn/xx.png |
+| description | 应用描述 | 否 | string | 我是一个应用 |
+| status | 状态,参见 CommonStatusEnum 枚举 | 是 | integer | 1 |
+| accessTokenValiditySeconds | 访问令牌的有效期 | 是 | integer | 8640 |
+| refreshTokenValiditySeconds | 刷新令牌的有效期 | 是 | integer | 8640000 |
+| redirectUris | 可重定向的 URI 地址 | 是 | array[string] | https://www.iocoder.cn |
+| authorizedGrantTypes | 授权类型,参见 OAuth2GrantTypeEnum 枚举 | 是 | array[string] | password |
+| scopes | 授权范围 | 否 | array[string] | user_info |
+| autoApproveScopes | 自动通过的授权范围 | 否 | array[string] | user_info |
+| authorities | 权限 | 否 | array[string] | system:user:query |
+| resourceIds | 资源 | 否 | array[string] | 1024 |
+| additionalInformation | 附加信息 | 否 | string | {yunai: true} |
+| additionalInformationJson | | 否 | boolean | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - OAuth2.0 令牌
+
+### 1. 删除访问令牌
+
+- 分组:管理后台 - OAuth2.0 令牌
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/oauth2-token/delete`
+- operationId:`OAuth2Token_deleteAccessToken`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| accessToken | query | 是 | string | 访问令牌 | tudou |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 批量删除访问令牌
+
+- 分组:管理后台 - OAuth2.0 令牌
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/oauth2-token/delete-list`
+- operationId:`OAuth2Token_deleteAccessTokenList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| accessTokens | query | 是 | array[string] | 访问令牌数组 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 获得访问令牌分页
+
+- 分组:管理后台 - OAuth2.0 令牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/oauth2-token/page`
+- operationId:`OAuth2Token_getAccessTokenPage`
+- 描述:只返回有效期内的
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 是 | integer | 用户编号 | 666 |
+| userType | query | 是 | integer | 用户类型,参见 UserTypeEnum 枚举 | 2 |
+| clientId | query | 是 | string | 客户端编号 | 2 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultOAuth2AccessTokenRespVO` |
+
+## 管理后台 - OAuth2.0 授权
+
+### 1. 获得授权信息
+
+- 分组:管理后台 - OAuth2.0 授权
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/oauth2/authorize`
+- operationId:`OAuth2Open_authorize`
+- 描述:适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【获取】调用
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| clientId | query | 是 | string | 客户端编号 | tudou |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOAuth2OpenAuthorizeInfoRespVO` |
+
+### 2. 申请授权
+
+- 分组:管理后台 - OAuth2.0 授权
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/oauth2/authorize`
+- operationId:`OAuth2Open_approveOrDeny`
+- 描述:适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【提交】调用
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| response_type | query | 是 | string | 响应类型 | code |
+| client_id | query | 是 | string | 客户端编号 | tudou |
+| scope | query | 否 | string | 授权范围 | userinfo.read |
+| redirect_uri | query | 是 | string | 重定向 URI | https://www.iocoder.cn |
+| auto_approve | query | 是 | boolean | 用户是否接受 | True |
+| state | query | 否 | string | | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultString` |
+
+### 3. 校验访问令牌
+
+- 分组:管理后台 - OAuth2.0 授权
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/oauth2/check-token`
+- operationId:`OAuth2Open_checkToken`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| token | query | 是 | string | 访问令牌 | biu |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOAuth2OpenCheckTokenRespVO` |
+
+### 4. 删除访问令牌
+
+- 分组:管理后台 - OAuth2.0 授权
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/oauth2/token`
+- operationId:`OAuth2Open_revokeToken`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| token | query | 是 | string | 访问令牌 | biu |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 获得访问令牌
+
+- 分组:管理后台 - OAuth2.0 授权
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/oauth2/token`
+- operationId:`OAuth2Open_postAccessToken`
+- 描述:适合 code 授权码模式,或者 implicit 简化模式;在 sso.vue 单点登录界面被【获取】调用
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| grant_type | query | 是 | string | 授权类型 | code |
+| code | query | 否 | string | 授权范围 | userinfo.read |
+| redirect_uri | query | 否 | string | 重定向 URI | https://www.iocoder.cn |
+| state | query | 否 | string | 状态 | 1 |
+| username | query | 否 | string | | tudou |
+| password | query | 否 | string | | cai |
+| scope | query | 否 | string | | user_info |
+| refresh_token | query | 否 | string | | 123424233 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOAuth2OpenAccessTokenRespVO` |
+
+## 管理后台 - OAuth2.0 用户
+
+### 1. 获得用户基本信息
+
+- 分组:管理后台 - OAuth2.0 用户
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/oauth2/user/get`
+- operationId:`OAuth2User_getUserInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOAuth2UserInfoRespVO` |
+
+### 2. 更新用户基本信息
+
+- 分组:管理后台 - OAuth2.0 用户
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/oauth2/user/update`
+- operationId:`OAuth2User_updateUserInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`OAuth2UserUpdateReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| nickname | 用户昵称 | 是 | string | 芋艿 |
+| email | 用户邮箱 | 否 | string | yudao@iocoder.cn |
+| mobile | 手机号码 | 否 | string | 15601691300 |
+| sex | 用户性别,参见 SexEnum 枚举类 | 否 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - PayPal Webhook 幂等表(防重复处理)
+
+### 1. 创建PayPal Webhook 幂等表(防重复处理)
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/create`
+- operationId:`WebhookIdempotent_createWebhookIdempotent`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`WebhookIdempotentSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | ID | 是 | integer | 13577 |
+| webhookEventId | PayPal Webhook 事件ID(WH-xxx) | 是 | string | 28160 |
+| eventVersion | 事件版本 | 是 | string | |
+| createTime | PayPal 事件创建时间(UTC) | 是 | string | |
+| resourceType | 资源类型(如capture) | 是 | string | 1 |
+| resourceVersion | 资源版本 | 是 | string | |
+| eventType | 事件类型(如PAYMENT.CAPTURE.COMPLETED) | 是 | string | 2 |
+| summary | 事件摘要描述 | 是 | string | |
+| resource | 核心交易数据(JSON格式) | 否 | | |
+| links | Webhook 相关链接(JSON格式) | 否 | | |
+| resourceId | PayPal 扣款ID/资源ID | 否 | string | 30853 |
+| invoiceId | 商户订单号(对应jh_order.order_no) | 否 | string | 28059 |
+| status | 处理状态:1-已接收 2-处理成功 3-处理失败 | 是 | integer | 2 |
+| createAt | 记录创建时间 | 是 | string | |
+| updateAt | 记录更新时间 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除PayPal Webhook 幂等表(防重复处理)
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/delete`
+- operationId:`WebhookIdempotent_deleteWebhookIdempotent`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除PayPal Webhook 幂等表(防重复处理)
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/delete-list`
+- operationId:`WebhookIdempotent_deleteWebhookIdempotentList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出PayPal Webhook 幂等表(防重复处理) Excel
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/export-excel`
+- operationId:`WebhookIdempotent_exportWebhookIdempotentExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| webhookEventId | query | 否 | string | PayPal Webhook 事件ID(WH-xxx) | 28160 |
+| eventVersion | query | 否 | string | 事件版本 | |
+| createTime | query | 否 | array[string] | PayPal 事件创建时间(UTC) | |
+| resourceType | query | 否 | string | 资源类型(如capture) | 1 |
+| resourceVersion | query | 否 | string | 资源版本 | |
+| eventType | query | 否 | string | 事件类型(如PAYMENT.CAPTURE.COMPLETED) | 2 |
+| summary | query | 否 | string | 事件摘要描述 | |
+| resource | query | 否 | object | 核心交易数据(JSON格式) | |
+| links | query | 否 | object | Webhook 相关链接(JSON格式) | |
+| resourceId | query | 否 | string | PayPal 扣款ID/资源ID | 30853 |
+| invoiceId | query | 否 | string | 商户订单号(对应jh_order.order_no) | 28059 |
+| status | query | 否 | integer | 处理状态:1-已接收 2-处理成功 3-处理失败 | 2 |
+| createAt | query | 否 | string | 记录创建时间 | |
+| updateAt | query | 否 | string | 记录更新时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得PayPal Webhook 幂等表(防重复处理)
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/get`
+- operationId:`WebhookIdempotent_getWebhookIdempotent`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebhookIdempotentRespVO` |
+
+### 6. 获得导入PayPal Webhook 幂等表(防重复处理)模板
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/get-import-template`
+- operationId:`WebhookIdempotent_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入PayPal Webhook 幂等表(防重复处理)Excel
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`POST`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/import-excel`
+- operationId:`WebhookIdempotent_importWebhookIdempotentExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultWebhookIdempotentImportRespVO` |
+
+### 8. 获得PayPal Webhook 幂等表(防重复处理)分页
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/page`
+- operationId:`WebhookIdempotent_getWebhookIdempotentPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| webhookEventId | query | 否 | string | PayPal Webhook 事件ID(WH-xxx) | 28160 |
+| eventVersion | query | 否 | string | 事件版本 | |
+| createTime | query | 否 | array[string] | PayPal 事件创建时间(UTC) | |
+| resourceType | query | 否 | string | 资源类型(如capture) | 1 |
+| resourceVersion | query | 否 | string | 资源版本 | |
+| eventType | query | 否 | string | 事件类型(如PAYMENT.CAPTURE.COMPLETED) | 2 |
+| summary | query | 否 | string | 事件摘要描述 | |
+| resource | query | 否 | object | 核心交易数据(JSON格式) | |
+| links | query | 否 | object | Webhook 相关链接(JSON格式) | |
+| resourceId | query | 否 | string | PayPal 扣款ID/资源ID | 30853 |
+| invoiceId | query | 否 | string | 商户订单号(对应jh_order.order_no) | 28059 |
+| status | query | 否 | integer | 处理状态:1-已接收 2-处理成功 3-处理失败 | 2 |
+| createAt | query | 否 | string | 记录创建时间 | |
+| updateAt | query | 否 | string | 记录更新时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultWebhookIdempotentRespVO` |
+
+### 9. 更新PayPal Webhook 幂等表(防重复处理)
+
+- 分组:管理后台 - PayPal Webhook 幂等表(防重复处理)
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/paypal/webhook-idempotent/update`
+- operationId:`WebhookIdempotent_updateWebhookIdempotent`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`WebhookIdempotentSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | ID | 是 | integer | 13577 |
+| webhookEventId | PayPal Webhook 事件ID(WH-xxx) | 是 | string | 28160 |
+| eventVersion | 事件版本 | 是 | string | |
+| createTime | PayPal 事件创建时间(UTC) | 是 | string | |
+| resourceType | 资源类型(如capture) | 是 | string | 1 |
+| resourceVersion | 资源版本 | 是 | string | |
+| eventType | 事件类型(如PAYMENT.CAPTURE.COMPLETED) | 是 | string | 2 |
+| summary | 事件摘要描述 | 是 | string | |
+| resource | 核心交易数据(JSON格式) | 否 | | |
+| links | Webhook 相关链接(JSON格式) | 否 | | |
+| resourceId | PayPal 扣款ID/资源ID | 否 | string | 30853 |
+| invoiceId | 商户订单号(对应jh_order.order_no) | 否 | string | 28059 |
+| status | 处理状态:1-已接收 2-处理成功 3-处理失败 | 是 | integer | 2 |
+| createAt | 记录创建时间 | 是 | string | |
+| updateAt | 记录更新时间 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - Redis 监控
+
+### 1. 获得 Redis 监控信息
+
+- 分组:管理后台 - Redis 监控
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/redis/get-monitor-info`
+- operationId:`Redis_getRedisMonitorInfo`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultRedisMonitorRespVO` |
+
+## 管理后台 - app版本号管理
+
+### 1. 创建app版本号管理
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/appversion/create`
+- operationId:`Appversion_createAppversion`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AppversionSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 9413 |
+| storeName | 应用商店 | 是 | string | 王五 |
+| version | 版本号 | 是 | string | |
+| downloadUrl | 商城下载地址 | 是 | string | https://www.iocoder.cn |
+| isOn | 是否上架(1是,2否) | 是 | integer | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除app版本号管理
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/appversion/delete`
+- operationId:`Appversion_deleteAppversion`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除app版本号管理
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/appversion/delete-list`
+- operationId:`Appversion_deleteAppversionList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出app版本号管理 Excel
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/appversion/export-excel`
+- operationId:`Appversion_exportAppversionExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| storeName | query | 否 | string | 应用商店 | 王五 |
+| version | query | 否 | string | 版本号 | |
+| downloadUrl | query | 否 | string | 商城下载地址 | https://www.iocoder.cn |
+| isOn | query | 否 | integer | 是否上架(1是,2否) | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 26004 |
+| userId | query | 否 | integer | 权限用户ID | 14739 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得app版本号管理
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/appversion/get`
+- operationId:`Appversion_getAppversion`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAppversionRespVO` |
+
+### 6. 获得导入app版本号管理模板
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/appversion/get-import-template`
+- operationId:`Appversion_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入app版本号管理Excel
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/appversion/import-excel`
+- operationId:`Appversion_importAppversionExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAppversionImportRespVO` |
+
+### 8. 获得app版本号管理分页
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/appversion/page`
+- operationId:`Appversion_getAppversionPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| storeName | query | 否 | string | 应用商店 | 王五 |
+| version | query | 否 | string | 版本号 | |
+| downloadUrl | query | 否 | string | 商城下载地址 | https://www.iocoder.cn |
+| isOn | query | 否 | integer | 是否上架(1是,2否) | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 26004 |
+| userId | query | 否 | integer | 权限用户ID | 14739 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAppversionRespVO` |
+
+### 9. 更新app版本号管理
+
+- 分组:管理后台 - app版本号管理
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/appversion/update`
+- operationId:`Appversion_updateAppversion`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AppversionSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 9413 |
+| storeName | 应用商店 | 是 | string | 王五 |
+| version | 版本号 | 是 | string | |
+| downloadUrl | 商城下载地址 | 是 | string | https://www.iocoder.cn |
+| isOn | 是否上架(1是,2否) | 是 | integer | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - blog分类
+
+### 1. 创建blog分类
+
+- 分组:管理后台 - blog分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/blog-cate/create`
+- operationId:`BlogCate_createBlogCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BlogCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25736 |
+| name | 分类名称 | 是 | string | 李四 |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| rankNum | 排序 | 否 | integer | |
+| route | 路由 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除blog分类
+
+- 分组:管理后台 - blog分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/blog-cate/delete`
+- operationId:`BlogCate_deleteBlogCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除blog分类
+
+- 分组:管理后台 - blog分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/blog-cate/delete-list`
+- operationId:`BlogCate_deleteBlogCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出blog分类 Excel
+
+- 分组:管理后台 - blog分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog-cate/export-excel`
+- operationId:`BlogCate_exportBlogCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 分类名称 | 李四 |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得blog分类
+
+- 分组:管理后台 - blog分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog-cate/get`
+- operationId:`BlogCate_getBlogCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogCateRespVO` |
+
+### 6. 获得导入blog分类模板
+
+- 分组:管理后台 - blog分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog-cate/get-import-template`
+- operationId:`BlogCate_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入blog分类Excel
+
+- 分组:管理后台 - blog分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/blog-cate/import-excel`
+- operationId:`BlogCate_importBlogCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogCateImportRespVO` |
+
+### 8. 获得blog分类分页
+
+- 分组:管理后台 - blog分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog-cate/page`
+- operationId:`BlogCate_getBlogCatePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 分类名称 | 李四 |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultBlogCateRespVO` |
+
+### 9. 更新blog分类
+
+- 分组:管理后台 - blog分类
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/blog-cate/update`
+- operationId:`BlogCate_updateBlogCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BlogCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25736 |
+| name | 分类名称 | 是 | string | 李四 |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| rankNum | 排序 | 否 | integer | |
+| route | 路由 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - blog管理
+
+### 1. 获得blog分类列表
+
+- 分组:管理后台 - blog管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog/blog-cate-relation/list-by-blog-id`
+- operationId:`Blog_getBlogCateRelationListByBlogId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| blogId | query | 是 | integer | 博客ID | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListBlogCateRelationDO` |
+
+### 2. 创建blog管理
+
+- 分组:管理后台 - blog管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/blog/create`
+- operationId:`Blog_createBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BlogSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25673 |
+| code | 编号 | 否 | string | |
+| title | 标题 | 是 | string | |
+| coverImage | 缩略图 | 是 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| content | 页面内容 | 是 | string | |
+| rankNum | 排序 | 否 | integer | |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你猜 |
+| likesNum | 点赞数 | 否 | integer | 0 |
+| cateIds | blog分类 ID 列表 | 否 | array[integer] | |
+| route | 路由 | 否 | string | |
+| publishTime | 发布时间 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 删除blog管理
+
+- 分组:管理后台 - blog管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/blog/delete`
+- operationId:`Blog_deleteBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除blog管理
+
+- 分组:管理后台 - blog管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/blog/delete-list`
+- operationId:`Blog_deleteBlogList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 导出blog管理 Excel
+
+- 分组:管理后台 - blog管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog/export-excel`
+- operationId:`Blog_exportBlogExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 1 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 6. 获得blog管理
+
+- 分组:管理后台 - blog管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog/get`
+- operationId:`Blog_getBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogRespVO` |
+
+### 7. 获得导入blog管理模板
+
+- 分组:管理后台 - blog管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog/get-import-template`
+- operationId:`Blog_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 8. 导入blog管理Excel
+
+- 分组:管理后台 - blog管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/blog/import-excel`
+- operationId:`Blog_importBlogExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBlogImportRespVO` |
+
+### 9. 获得blog管理分页
+
+- 分组:管理后台 - blog管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/blog/page`
+- operationId:`Blog_getBlogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 1 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultBlogRespVO` |
+
+### 10. 更新blog管理
+
+- 分组:管理后台 - blog管理
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/blog/update`
+- operationId:`Blog_updateBlog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`BlogSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25673 |
+| code | 编号 | 否 | string | |
+| title | 标题 | 是 | string | |
+| coverImage | 缩略图 | 是 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| content | 页面内容 | 是 | string | |
+| rankNum | 排序 | 否 | integer | |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你猜 |
+| likesNum | 点赞数 | 否 | integer | 0 |
+| cateIds | blog分类 ID 列表 | 否 | array[integer] | |
+| route | 路由 | 否 | string | |
+| publishTime | 发布时间 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - news分类
+
+### 1. 创建news分类
+
+- 分组:管理后台 - news分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/news-cate/create`
+- operationId:`NewsCate_createNewsCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`NewsCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 2718 |
+| name | 分类名称 | 是 | string | 李四 |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| rankNum | 排序 | 否 | integer | |
+| route | 路由 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除news分类
+
+- 分组:管理后台 - news分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/news-cate/delete`
+- operationId:`NewsCate_deleteNewsCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除news分类
+
+- 分组:管理后台 - news分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/news-cate/delete-list`
+- operationId:`NewsCate_deleteNewsCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出news分类 Excel
+
+- 分组:管理后台 - news分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news-cate/export-excel`
+- operationId:`NewsCate_exportNewsCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 分类名称 | 李四 |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得news分类
+
+- 分组:管理后台 - news分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news-cate/get`
+- operationId:`NewsCate_getNewsCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsCateRespVO` |
+
+### 6. 获得导入news分类模板
+
+- 分组:管理后台 - news分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news-cate/get-import-template`
+- operationId:`NewsCate_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入news分类Excel
+
+- 分组:管理后台 - news分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/news-cate/import-excel`
+- operationId:`NewsCate_importNewsCateExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsCateImportRespVO` |
+
+### 8. 获得news分类分页
+
+- 分组:管理后台 - news分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news-cate/page`
+- operationId:`NewsCate_getNewsCatePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 分类名称 | 李四 |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultNewsCateRespVO` |
+
+### 9. 更新news分类
+
+- 分组:管理后台 - news分类
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/news-cate/update`
+- operationId:`NewsCate_updateNewsCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`NewsCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 2718 |
+| name | 分类名称 | 是 | string | 李四 |
+| coverImage | 缩略图 | 否 | ProductImageDO | |
+| status | 状态 | 否 | integer | 1 |
+| rankNum | 排序 | 否 | integer | |
+| route | 路由 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - news管理
+
+### 1. 创建news管理
+
+- 分组:管理后台 - news管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/news/create`
+- operationId:`News_createNews`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`NewsSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 2771 |
+| code | 编号 | 否 | string | |
+| title | 标题 | 是 | string | |
+| coverImage | 缩略图 | 是 | ProductImageDO | |
+| status | 状态 | 否 | integer | 2 |
+| content | PC页面内容 | 是 | string | |
+| rankNum | 排序 | 否 | integer | |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你猜 |
+| likesNum | 点赞数 | 否 | integer | 0 |
+| cateIds | news分类 ID 列表 | 否 | array[integer] | |
+| route | 路由 | 否 | string | |
+| publishTime | 发布时间 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除news管理
+
+- 分组:管理后台 - news管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/news/delete`
+- operationId:`News_deleteNews`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除news管理
+
+- 分组:管理后台 - news管理
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/news/delete-list`
+- operationId:`News_deleteNewsList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出news管理 Excel
+
+- 分组:管理后台 - news管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news/export-excel`
+- operationId:`News_exportNewsExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 2 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得news管理
+
+- 分组:管理后台 - news管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news/get`
+- operationId:`News_getNews`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsRespVO` |
+
+### 6. 获得导入news管理模板
+
+- 分组:管理后台 - news管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news/get-import-template`
+- operationId:`News_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入news管理Excel
+
+- 分组:管理后台 - news管理
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/news/import-excel`
+- operationId:`News_importNewsExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNewsImportRespVO` |
+
+### 8. 获得news分类关联列表
+
+- 分组:管理后台 - news管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news/news-cate-relation/list-by-news-id`
+- operationId:`News_getNewsCateRelationListByNewsId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| newsId | query | 是 | integer | 新闻ID | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListNewsCateRelationDO` |
+
+### 9. 获得news管理分页
+
+- 分组:管理后台 - news管理
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/news/page`
+- operationId:`News_getNewsPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateId | query | 否 | integer | 分类id | |
+| code | query | 否 | string | 编号 | |
+| title | query | 否 | string | 标题 | |
+| status | query | 否 | integer | 状态 | 2 |
+| id | query | 否 | integer | 编号 | 1 |
+| creator | query | 否 | integer | 创建者ID | |
+| newTime | query | 否 | string | | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultNewsRespVO` |
+
+### 10. 更新news管理
+
+- 分组:管理后台 - news管理
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/news/update`
+- operationId:`News_updateNews`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`NewsSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 2771 |
+| code | 编号 | 否 | string | |
+| title | 标题 | 是 | string | |
+| coverImage | 缩略图 | 是 | ProductImageDO | |
+| status | 状态 | 否 | integer | 2 |
+| content | PC页面内容 | 是 | string | |
+| rankNum | 排序 | 否 | integer | |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你猜 |
+| likesNum | 点赞数 | 否 | integer | 0 |
+| cateIds | news分类 ID 列表 | 否 | array[integer] | |
+| route | 路由 | 否 | string | |
+| publishTime | 发布时间 | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 二维码
+
+### 1. 创建二维码
+
+- 分组:管理后台 - 二维码
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/download-qrcode/create`
+- operationId:`DownloadQrcode_createDownloadQrcode`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DownloadQrcodeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 28763 |
+| title | 标题 | 是 | string | |
+| status | 状态 | 是 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除二维码
+
+- 分组:管理后台 - 二维码
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/download-qrcode/delete`
+- operationId:`DownloadQrcode_deleteDownloadQrcode`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除二维码
+
+- 分组:管理后台 - 二维码
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/download-qrcode/delete-list`
+- operationId:`DownloadQrcode_deleteDownloadQrcodeList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出二维码 Excel
+
+- 分组:管理后台 - 二维码
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/download-qrcode/export-excel`
+- operationId:`DownloadQrcode_exportDownloadQrcodeExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| title | query | 否 | string | 标题 | |
+| creator | query | 否 | string | 创建者 | |
+| updater | query | 否 | string | 更新者 | |
+| visitCountOper1 | query | 否 | string | 访问次数操作符1 | |
+| visitCountOper2 | query | 否 | string | 访问次数操作符2 | |
+| visitCount1 | query | 否 | integer | 访问次数起始值 | |
+| visitCount2 | query | 否 | integer | 访问次数到达值 | |
+| clickCountOper1 | query | 否 | string | 总点击次数操作符1 | |
+| clickCountOper2 | query | 否 | string | 总点击次数操作符2 | |
+| clickCount1 | query | 否 | integer | 总点击次数起始值 | |
+| clickCount2 | query | 否 | integer | 总点击次数到达值 | |
+| iosClickCountOper1 | query | 否 | string | IOS点击次数操作符1 | |
+| iosClickCountOper2 | query | 否 | string | IOS点击次数操作符2 | |
+| iosClickCount1 | query | 否 | integer | IOS点击次数起始值 | |
+| iosClickCount2 | query | 否 | integer | IOS点击次数到达值 | |
+| googleClickCountOper1 | query | 否 | string | 谷歌点击次数操作符1 | |
+| googleClickCountOper2 | query | 否 | string | 谷歌点击次数操作符2 | |
+| googleClickCount1 | query | 否 | integer | 谷歌点击次数起始值 | |
+| googleClickCount2 | query | 否 | integer | 谷歌点击次数到达值 | |
+| apkClickCountOper1 | query | 否 | string | APK点击次数操作符1 | |
+| apkClickCountOper2 | query | 否 | string | APK点击次数操作符2 | |
+| apkClickCount1 | query | 否 | integer | APK点击次数起始值 | |
+| apkClickCount2 | query | 否 | integer | APK点击次数到达值 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得二维码
+
+- 分组:管理后台 - 二维码
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/download-qrcode/get`
+- operationId:`DownloadQrcode_getDownloadQrcode`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDownloadQrcodeRespVO` |
+
+### 6. 获得导入二维码模板
+
+- 分组:管理后台 - 二维码
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/download-qrcode/get-import-template`
+- operationId:`DownloadQrcode_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入二维码Excel
+
+- 分组:管理后台 - 二维码
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/download-qrcode/import-excel`
+- operationId:`DownloadQrcode_importDownloadQrcodeExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDownloadQrcodeImportRespVO` |
+
+### 8. 获得二维码分页(含统计)
+
+- 分组:管理后台 - 二维码
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/download-qrcode/page`
+- operationId:`DownloadQrcode_getDownloadQrcodePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| title | query | 否 | string | 标题 | |
+| creator | query | 否 | string | 创建者 | |
+| updater | query | 否 | string | 更新者 | |
+| visitCountOper1 | query | 否 | string | 访问次数操作符1 | |
+| visitCountOper2 | query | 否 | string | 访问次数操作符2 | |
+| visitCount1 | query | 否 | integer | 访问次数起始值 | |
+| visitCount2 | query | 否 | integer | 访问次数到达值 | |
+| clickCountOper1 | query | 否 | string | 总点击次数操作符1 | |
+| clickCountOper2 | query | 否 | string | 总点击次数操作符2 | |
+| clickCount1 | query | 否 | integer | 总点击次数起始值 | |
+| clickCount2 | query | 否 | integer | 总点击次数到达值 | |
+| iosClickCountOper1 | query | 否 | string | IOS点击次数操作符1 | |
+| iosClickCountOper2 | query | 否 | string | IOS点击次数操作符2 | |
+| iosClickCount1 | query | 否 | integer | IOS点击次数起始值 | |
+| iosClickCount2 | query | 否 | integer | IOS点击次数到达值 | |
+| googleClickCountOper1 | query | 否 | string | 谷歌点击次数操作符1 | |
+| googleClickCountOper2 | query | 否 | string | 谷歌点击次数操作符2 | |
+| googleClickCount1 | query | 否 | integer | 谷歌点击次数起始值 | |
+| googleClickCount2 | query | 否 | integer | 谷歌点击次数到达值 | |
+| apkClickCountOper1 | query | 否 | string | APK点击次数操作符1 | |
+| apkClickCountOper2 | query | 否 | string | APK点击次数操作符2 | |
+| apkClickCount1 | query | 否 | integer | APK点击次数起始值 | |
+| apkClickCount2 | query | 否 | integer | APK点击次数到达值 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDownloadQrcodePageRespVO` |
+
+### 9. 更新二维码
+
+- 分组:管理后台 - 二维码
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/download-qrcode/update`
+- operationId:`DownloadQrcode_updateDownloadQrcode`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DownloadQrcodeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 28763 |
+| title | 标题 | 是 | string | |
+| status | 状态 | 是 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 产品
+
+### 1. 批量上下架产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product/change-status`
+- operationId:`Product_updateProductStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductChangeStatusReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| ids | 产品ID | 是 | array[integer] | 17510 |
+| status | 状态 | 是 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 创建产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/product/create`
+- operationId:`Product_createProduct`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 17510 |
+| productType | 产品类型(普通产品=1,积分产品=2) | 否 | integer | 2 |
+| productName | 产品名称 | 是 | string | 王五 |
+| productCateId | 产品分类 | 是 | integer | 17525 |
+| shippingTemplateId | 运费模板ID | 是 | integer | 6786 |
+| route | 跳转路由 | 是 | string | |
+| intro | 产品简介 | 是 | string | 你说的对 |
+| rankNum | 序号 | 否 | integer | |
+| status | 状态(1上架,2下架) | 是 | integer | 1 |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你说的对 |
+| singleUserExchangeLimit | 单用户兑换次数限制 | 否 | integer | |
+| singleProductExchangeLimit | 单次兑换数量限制 | 否 | integer | |
+| productAttrs | 产品规格类型关联列表 | 是 | array[ProductAttrReqVO] | |
+| productSkus | 产品规格列表 | 是 | array[ProductSkuSaveReqVO] | |
+| productDetails | 产品详情列表 | 否 | array[ProductDetailSaveReqVO] | |
+| brandId | 品牌id | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 删除产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product/delete`
+- operationId:`Product_deleteProduct`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product/delete-list`
+- operationId:`Product_deleteProductList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 获得产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/get`
+- operationId:`Product_getProduct`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultProductRespVO` |
+
+### 6. 获得产品分页
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/page`
+- operationId:`Product_getProductPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| code | query | 否 | string | 产品编码 | |
+| productType | query | 否 | integer | 产品类型(普通产品=1,积分产品=2) | 2 |
+| productName | query | 否 | string | 产品名称 | 王五 |
+| productCateIdList | query | 否 | array[integer] | 产品分类ID列表(查询多个产品分类) | 17525 |
+| productCateId | query | 否 | integer | 产品分类ID(查询单个产品分类) | |
+| status | query | 否 | integer | 状态 | 1 |
+| ids | query | 否 | array[integer] | 产品ID列表 | |
+| shippingTemplateIds | query | 否 | array[integer] | 运费模板 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultProductPageRespVO` |
+
+### 7. 获得产品规格类型关联列表
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/product-attr/list-by-product-id`
+- operationId:`Product_getProductAttrListByProductId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productId | query | 是 | integer | 产品ID | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListProductAttrDO` |
+
+### 8. 获得产品详情列表
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/product-detail/list-by-product-id`
+- operationId:`Product_getProductDetailListByProductId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productId | query | 是 | integer | 产品ID | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListProductDetailDO` |
+
+### 9. 获得产品规格列表
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/product-sku/list-by-product-id`
+- operationId:`Product_getProductSkuListByProductId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productId | query | 是 | integer | 产品ID | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListProductSkuDO` |
+
+### 10. 获得产品及规格列表-优惠券中使用
+
+- 分组:管理后台 - 产品
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product/product/sku-list`
+- operationId:`Product_getProductSkuList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| code | query | 否 | string | 产品编码 | |
+| productName | query | 否 | string | 产品名称 | |
+| skuNo | query | 否 | string | 产品SKU | |
+| productType | query | 否 | integer | 产品类型(普通产品=1,积分产品=2) | 2 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultProductSkuRespVO` |
+
+### 11. 更新产品
+
+- 分组:管理后台 - 产品
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product/update`
+- operationId:`Product_updateProduct`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 17510 |
+| productType | 产品类型(普通产品=1,积分产品=2) | 否 | integer | 2 |
+| productName | 产品名称 | 是 | string | 王五 |
+| productCateId | 产品分类 | 是 | integer | 17525 |
+| shippingTemplateId | 运费模板ID | 是 | integer | 6786 |
+| route | 跳转路由 | 是 | string | |
+| intro | 产品简介 | 是 | string | 你说的对 |
+| rankNum | 序号 | 否 | integer | |
+| status | 状态(1上架,2下架) | 是 | integer | 1 |
+| seoTitle | SEO标题 | 否 | string | |
+| seoKeyword | SEO关键词 | 否 | string | |
+| seoDescription | SEO描述 | 否 | string | 你说的对 |
+| singleUserExchangeLimit | 单用户兑换次数限制 | 否 | integer | |
+| singleProductExchangeLimit | 单次兑换数量限制 | 否 | integer | |
+| productAttrs | 产品规格类型关联列表 | 是 | array[ProductAttrReqVO] | |
+| productSkus | 产品规格列表 | 是 | array[ProductSkuSaveReqVO] | |
+| productDetails | 产品详情列表 | 否 | array[ProductDetailSaveReqVO] | |
+| brandId | 品牌id | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 产品分类
+
+### 1. 修改产品分类启用/停用状态
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product-cate/change-status`
+- operationId:`ProductCate_updateProductCateStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductCateUpdateStatusReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 17391 |
+| status | 状态(1启用,2停用) | 是 | integer | 2 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 创建产品分类
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/product-cate/create`
+- operationId:`ProductCate_createProductCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 17391 |
+| cateType | 类型(普通产品=1,积分产品=2) | 否 | integer | 2 |
+| cateName | 产品分类名称 | 是 | string | 赵六 |
+| status | 状态 | 是 | integer | 2 |
+| rankNum | 排序 | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 删除产品分类
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-cate/delete`
+- operationId:`ProductCate_deleteProductCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除产品分类
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-cate/delete-list`
+- operationId:`ProductCate_deleteProductCateList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 获得产品分类
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-cate/get`
+- operationId:`ProductCate_getProductCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultProductCateSingleRespVO` |
+
+### 6. 获得产品分类分页
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-cate/page`
+- operationId:`ProductCate_getProductCatePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| cateType | query | 否 | integer | 类型 | 2 |
+| cateName | query | 否 | string | 产品分类名称 | 赵六 |
+| status | query | 否 | integer | 状态 | 2 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultProductCateRespVO` |
+
+### 7. 更新产品分类
+
+- 分组:管理后台 - 产品分类
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product-cate/update`
+- operationId:`ProductCate_updateProductCate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductCateSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 17391 |
+| cateType | 类型(普通产品=1,积分产品=2) | 否 | integer | 2 |
+| cateName | 产品分类名称 | 是 | string | 赵六 |
+| status | 状态 | 是 | integer | 2 |
+| rankNum | 排序 | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 产品属性
+
+### 1. 启用/停用产品属性状态
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product-attr-type/change-status`
+- operationId:`ProductAttrType_updateProductAttrTypeStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductAttrTypeChangeStatusReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 5850 |
+| status | 状态 | 是 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 创建产品属性
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/product-attr-type/create`
+- operationId:`ProductAttrType_createProductAttrType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductAttrTypeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 5850 |
+| type | 属性类型:1-颜色属性(有色卡),2-普通属性 | 是 | integer | 2 |
+| name | 属性名称 | 是 | string | 王五 |
+| status | 状态 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 你说的对 |
+| rankNum | 排序号 | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 删除产品属性
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-attr-type/delete`
+- operationId:`ProductAttrType_deleteProductAttrType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除产品属性
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-attr-type/delete-list`
+- operationId:`ProductAttrType_deleteProductAttrTypeList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 获得产品属性
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-attr-type/get`
+- operationId:`ProductAttrType_getProductAttrType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultProductAttrTypeRespVO` |
+
+### 6. 获得产品属性分页
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-attr-type/page`
+- operationId:`ProductAttrType_getProductAttrTypePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| type | query | 否 | integer | 属性类型 | 2 |
+| name | query | 否 | string | 属性名称 | 王五 |
+| status | query | 否 | integer | 状态 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultProductAttrTypeRespVO` |
+
+### 7. 更新产品属性
+
+- 分组:管理后台 - 产品属性
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product-attr-type/update`
+- operationId:`ProductAttrType_updateProductAttrType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductAttrTypeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 5850 |
+| type | 属性类型:1-颜色属性(有色卡),2-普通属性 | 是 | integer | 2 |
+| name | 属性名称 | 是 | string | 王五 |
+| status | 状态 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 你说的对 |
+| rankNum | 排序号 | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 产品属性值
+
+### 1. 创建产品属性值
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/product-attr-data/create`
+- operationId:`ProductAttrData_createProductAttrData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductAttrDataSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 26147 |
+| productAttrTypeId | 关联产品属性表的主键ID | 是 | integer | 28627 |
+| attrValue | 属性值名称 | 是 | string | |
+| color | 色卡 | 否 | array[string] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除产品属性值
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-attr-data/delete`
+- operationId:`ProductAttrData_deleteProductAttrData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除产品属性值
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/product-attr-data/delete-list`
+- operationId:`ProductAttrData_deleteProductAttrDataList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 获得产品属性值
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-attr-data/get`
+- operationId:`ProductAttrData_getProductAttrData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultProductAttrDataRespVO` |
+
+### 5. 获得产品属性值分页
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/product-attr-data/page`
+- operationId:`ProductAttrData_getProductAttrDataPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| productAttrTypeId | query | 否 | integer | 关联产品属性表的主键ID | 28627 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultProductAttrDataRespVO` |
+
+### 6. 更新产品属性值
+
+- 分组:管理后台 - 产品属性值
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/product-attr-data/update`
+- operationId:`ProductAttrData_updateProductAttrData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ProductAttrDataSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键ID | 是 | integer | 26147 |
+| productAttrTypeId | 关联产品属性表的主键ID | 是 | integer | 28627 |
+| attrValue | 属性值名称 | 是 | string | |
+| color | 色卡 | 否 | array[string] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 代码生成器
+
+### 1. 基于数据库的表结构,创建代码生成器的表和字段定义
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/codegen/create-list`
+- operationId:`Codegen_createCodegenList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CodegenCreateListReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| dataSourceConfigId | 数据源配置的编号 | 是 | integer | 1 |
+| tableNames | 表名数组 | 是 | array[string] | [1, 2, 3] |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListLong` |
+
+### 2. 获得数据库自带的表定义列表
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/db/table/list`
+- operationId:`Codegen_getDatabaseTableList`
+- 描述:会过滤掉已经导入 Codegen 的表
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| dataSourceConfigId | query | 是 | integer | 数据源配置的编号 | 1 |
+| name | query | 否 | string | 表名,模糊匹配 | yudao |
+| comment | query | 否 | string | 描述,模糊匹配 | 芋道 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDatabaseTableRespVO` |
+
+### 3. 删除数据库的表和字段定义
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/codegen/delete`
+- operationId:`Codegen_deleteCodegen`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableId | query | 是 | integer | 表编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 批量删除数据库的表和字段定义
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/codegen/delete-list`
+- operationId:`Codegen_deleteCodegenList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableIds | query | 是 | array[integer] | 表编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 5. 获得表和字段的明细
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/detail`
+- operationId:`Codegen_getCodegenDetail`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableId | query | 是 | integer | 表编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCodegenDetailRespVO` |
+
+### 6. 下载生成代码
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/download`
+- operationId:`Codegen_downloadCodegen`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableId | query | 是 | integer | 表编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 预览生成代码
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/preview`
+- operationId:`Codegen_previewCodegen`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableId | query | 是 | integer | 表编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListCodegenPreviewRespVO` |
+
+### 8. 基于数据库的表结构,同步数据库的表和字段定义
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/codegen/sync-from-db`
+- operationId:`Codegen_syncCodegenFromDB`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableId | query | 是 | integer | 表编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 9. 获得表定义列表
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/table/list`
+- operationId:`Codegen_getCodegenTableList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| dataSourceConfigId | query | 是 | integer | 数据源配置的编号 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListCodegenTableRespVO` |
+
+### 10. 获得表定义分页
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/codegen/table/page`
+- operationId:`Codegen_getCodegenTablePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tableName | query | 否 | string | 表名称,模糊匹配 | yudao |
+| tableComment | query | 否 | string | 表描述,模糊匹配 | 芋道 |
+| className | query | 否 | string | 实体,模糊匹配 | Yudao |
+| createTime | query | 否 | array[string] | 创建时间 | [2022-07-01 00:00:00,2022-07-01 23:59:59] |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultCodegenTableRespVO` |
+
+### 11. 更新数据库的表和字段定义
+
+- 分组:管理后台 - 代码生成器
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/codegen/update`
+- operationId:`Codegen_updateCodegen`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CodegenUpdateReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| table | | 是 | CodegenTableSaveReqVO | |
+| columns | | 是 | array[CodegenColumnSaveReqVO] | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 协议
+
+### 1. 创建协议
+
+- 分组:管理后台 - 协议
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/agreement/create`
+- operationId:`Agreement_createAgreement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AgreementSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 11878 |
+| terminal | 终端(1web 2app) | 是 | string | |
+| type | 类型(1隐私协议 2用户协议) | 是 | integer | 2 |
+| title | 标题 | 是 | string | |
+| content | 内容 | 是 | string | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+| rankNum | 排序号 | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除协议
+
+- 分组:管理后台 - 协议
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/agreement/delete`
+- operationId:`Agreement_deleteAgreement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除协议
+
+- 分组:管理后台 - 协议
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/agreement/delete-list`
+- operationId:`Agreement_deleteAgreementList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出协议 Excel
+
+- 分组:管理后台 - 协议
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/agreement/export-excel`
+- operationId:`Agreement_exportAgreementExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| terminal | query | 否 | string | 终端(1web 2app) | |
+| type | query | 否 | integer | 类型(1隐私协议 2用户协议) | 2 |
+| title | query | 否 | string | 标题 | |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| rankNum | query | 否 | integer | 排序号 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 3044 |
+| userId | query | 否 | integer | 权限用户ID | 25518 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得协议
+
+- 分组:管理后台 - 协议
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/agreement/get`
+- operationId:`Agreement_getAgreement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAgreementRespVO` |
+
+### 6. 获得导入协议模板
+
+- 分组:管理后台 - 协议
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/agreement/get-import-template`
+- operationId:`Agreement_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入协议Excel
+
+- 分组:管理后台 - 协议
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/agreement/import-excel`
+- operationId:`Agreement_importAgreementExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAgreementImportRespVO` |
+
+### 8. 获得协议分页
+
+- 分组:管理后台 - 协议
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/agreement/page`
+- operationId:`Agreement_getAgreementPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| terminal | query | 否 | string | 终端(1web 2app) | |
+| type | query | 否 | integer | 类型(1隐私协议 2用户协议) | 2 |
+| title | query | 否 | string | 标题 | |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 (1正常 2停用) | 2 |
+| lang | query | 否 | string | 语言 (en 英语 de 德语 ja 日语) | |
+| rankNum | query | 否 | integer | 排序号 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 3044 |
+| userId | query | 否 | integer | 权限用户ID | 25518 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAgreementRespVO` |
+
+### 9. 更新协议
+
+- 分组:管理后台 - 协议
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/agreement/update`
+- operationId:`Agreement_updateAgreement`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AgreementSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 11878 |
+| terminal | 终端(1web 2app) | 是 | string | |
+| type | 类型(1隐私协议 2用户协议) | 是 | integer | 2 |
+| title | 标题 | 是 | string | |
+| content | 内容 | 是 | string | |
+| status | 状态 (1正常 2停用) | 否 | integer | 2 |
+| lang | 语言 (en 英语 de 德语 ja 日语) | 是 | string | |
+| rankNum | 排序号 | 是 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 参数配置
+
+### 1. 创建参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/config/create`
+- operationId:`Config_createConfig`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ConfigSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 参数配置序号 | 否 | integer | 1024 |
+| category | 参数分组 | 是 | string | biz |
+| name | 参数名称 | 是 | string | 数据库名 |
+| key | 参数键名 | 是 | string | yunai.db.username |
+| value | 参数键值 | 是 | string | 1024 |
+| visible | 是否可见 | 是 | boolean | True |
+| remark | 备注 | 否 | string | 备注一下很帅气! |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/config/delete`
+- operationId:`Config_deleteConfig`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/config/delete-list`
+- operationId:`Config_deleteConfigList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/config/export-excel`
+- operationId:`Config_exportConfig`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 数据源名称,模糊匹配 | 名称 |
+| key | query | 否 | string | 参数键名,模糊匹配 | yunai.db.username |
+| type | query | 否 | integer | 参数类型,参见 SysConfigTypeEnum 枚举 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | [2022-07-01 00:00:00,2022-07-01 23:59:59] |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/config/get`
+- operationId:`Config_getConfig`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultConfigRespVO` |
+
+### 6. 根据参数键名查询参数值
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/config/get-value-by-key`
+- operationId:`Config_getConfigKey`
+- 描述:不可见的配置,不允许返回给前端
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| key | query | 是 | string | 参数键 | yunai.biz.username |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultString` |
+
+### 7. 获取参数配置分页
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/config/page`
+- operationId:`Config_getConfigPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 数据源名称,模糊匹配 | 名称 |
+| key | query | 否 | string | 参数键名,模糊匹配 | yunai.db.username |
+| type | query | 否 | integer | 参数类型,参见 SysConfigTypeEnum 枚举 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | [2022-07-01 00:00:00,2022-07-01 23:59:59] |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultConfigRespVO` |
+
+### 8. 修改参数配置
+
+- 分组:管理后台 - 参数配置
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/config/update`
+- operationId:`Config_updateConfig`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ConfigSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 参数配置序号 | 否 | integer | 1024 |
+| category | 参数分组 | 是 | string | biz |
+| name | 参数名称 | 是 | string | 数据库名 |
+| key | 参数键名 | 是 | string | yunai.db.username |
+| value | 参数键值 | 是 | string | 1024 |
+| visible | 是否可见 | 是 | boolean | True |
+| remark | 备注 | 否 | string | 备注一下很帅气! |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 合作联系数据
+
+### 1. 创建合作联系数据
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/cooperation/create`
+- operationId:`Cooperation_createCooperation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CooperationSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 22204 |
+| name | 姓名 | 是 | string | 芋艿 |
+| email | 邮箱 | 是 | string | |
+| address | 公司名称或地址 | 是 | string | |
+| cooperationType | 合作类型 | 是 | string | 2 |
+| cooperationDetail | 合作详情 | 否 | string | |
+| lang | 语言 | 是 | string | |
+| ip | IP | 是 | string | |
+| requestStatus | APP接口同步状态 | 是 | integer | 1 |
+| requestResult | 请求结果 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除合作联系数据
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/cooperation/delete`
+- operationId:`Cooperation_deleteCooperation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除合作联系数据
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/cooperation/delete-list`
+- operationId:`Cooperation_deleteCooperationList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出合作联系数据 Excel
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/cooperation/export-excel`
+- operationId:`Cooperation_exportCooperationExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 姓名 | 芋艿 |
+| email | query | 否 | string | 邮箱 | |
+| address | query | 否 | string | 公司名称或地址 | |
+| cooperationType | query | 否 | string | 合作类型 | 2 |
+| createTime | query | 否 | array[string] | 提交时间 | |
+| requestStatus | query | 否 | integer | APP接口同步状态 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得合作联系数据
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/cooperation/get`
+- operationId:`Cooperation_getCooperation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCooperationRespVO` |
+
+### 6. 获得导入合作联系数据模板
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/cooperation/get-import-template`
+- operationId:`Cooperation_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入合作联系数据Excel
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/cooperation/import-excel`
+- operationId:`Cooperation_importCooperationExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultCooperationImportRespVO` |
+
+### 8. 获得合作联系数据分页
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/cooperation/page`
+- operationId:`Cooperation_getCooperationPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 姓名 | 芋艿 |
+| email | query | 否 | string | 邮箱 | |
+| address | query | 否 | string | 公司名称或地址 | |
+| cooperationType | query | 否 | string | 合作类型 | 2 |
+| createTime | query | 否 | array[string] | 提交时间 | |
+| requestStatus | query | 否 | integer | APP接口同步状态 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultCooperationRespVO` |
+
+### 9. 更新合作联系数据
+
+- 分组:管理后台 - 合作联系数据
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/cooperation/update`
+- operationId:`Cooperation_updateCooperation`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`CooperationSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 22204 |
+| name | 姓名 | 是 | string | 芋艿 |
+| email | 邮箱 | 是 | string | |
+| address | 公司名称或地址 | 是 | string | |
+| cooperationType | 合作类型 | 是 | string | 2 |
+| cooperationDetail | 合作详情 | 否 | string | |
+| lang | 语言 | 是 | string | |
+| ip | IP | 是 | string | |
+| requestStatus | APP接口同步状态 | 是 | integer | 1 |
+| requestResult | 请求结果 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 售后
+
+### 1. 导出售后 Excel
+
+- 分组:管理后台 - 售后
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/order-after-sale/export-excel`
+- operationId:`OrderAfterSale_exportOrderAfterSaleExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 否 | array[integer] | 集合ID | |
+| afterSaleMessageId | query | 否 | integer | 售后信息ID | 31115 |
+| afterSalesOrderNo | query | 否 | string | 售后单号 | |
+| oaReferenceNo | query | 否 | string | OA通讯编号 | |
+| serviceOrderNo | query | 否 | string | 咨询订单号 | |
+| country | query | 否 | string | 国家 | |
+| status | query | 否 | integer | 售后状态 | 1 |
+| afterSalesSolution | query | 否 | integer | 售后方案 | |
+| oaStatus | query | 否 | integer | oa售后状态 | 1 |
+| oaAfterSalesId | query | 否 | integer | oa售后Id | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 2. 获得售后
+
+- 分组:管理后台 - 售后
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/order-after-sale/get`
+- operationId:`OrderAfterSale_getOrderAfterSale`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | | |
+| orderId | query | 是 | | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultOrderAfterSaleRespVO` |
+
+### 3. 获得售后分页
+
+- 分组:管理后台 - 售后
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/order-after-sale/page`
+- operationId:`OrderAfterSale_getOrderAfterSalePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 否 | array[integer] | 集合ID | |
+| afterSaleMessageId | query | 否 | integer | 售后信息ID | 31115 |
+| afterSalesOrderNo | query | 否 | string | 售后单号 | |
+| oaReferenceNo | query | 否 | string | OA通讯编号 | |
+| serviceOrderNo | query | 否 | string | 咨询订单号 | |
+| country | query | 否 | string | 国家 | |
+| status | query | 否 | integer | 售后状态 | 1 |
+| afterSalesSolution | query | 否 | integer | 售后方案 | |
+| oaStatus | query | 否 | integer | oa售后状态 | 1 |
+| oaAfterSalesId | query | 否 | integer | oa售后Id | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultOrderAfterSaleDO` |
+
+## 管理后台 - 售后政策
+
+### 1. 创建售后政策
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/after-sales-policy/create`
+- operationId:`AfterSalesPolicy_createAfterSalesPolicy`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AfterSalesPolicySaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 14586 |
+| brandId | 品牌ID | 是 | integer | 9150 |
+| title | 标题 | 是 | string | |
+| content | 内容 | 是 | string | |
+| status | 状态 | 否 | integer | 2 |
+| lang | 语言 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除售后政策
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/after-sales-policy/delete`
+- operationId:`AfterSalesPolicy_deleteAfterSalesPolicy`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除售后政策
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/after-sales-policy/delete-list`
+- operationId:`AfterSalesPolicy_deleteAfterSalesPolicyList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出售后政策 Excel
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-policy/export-excel`
+- operationId:`AfterSalesPolicy_exportAfterSalesPolicyExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandId | query | 否 | integer | 品牌ID | 9150 |
+| title | query | 否 | string | 标题 | |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 | 2 |
+| lang | query | 否 | string | 语言 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 17093 |
+| userId | query | 否 | integer | 权限用户ID | 758 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得售后政策
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-policy/get`
+- operationId:`AfterSalesPolicy_getAfterSalesPolicy`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesPolicyRespVO` |
+
+### 6. 获得导入售后政策模板
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-policy/get-import-template`
+- operationId:`AfterSalesPolicy_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入售后政策Excel
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/after-sales-policy/import-excel`
+- operationId:`AfterSalesPolicy_importAfterSalesPolicyExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesPolicyImportRespVO` |
+
+### 8. 获得售后政策分页
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-policy/page`
+- operationId:`AfterSalesPolicy_getAfterSalesPolicyPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandId | query | 否 | integer | 品牌ID | 9150 |
+| title | query | 否 | string | 标题 | |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 | 2 |
+| lang | query | 否 | string | 语言 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 17093 |
+| userId | query | 否 | integer | 权限用户ID | 758 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAfterSalesPolicyRespVO` |
+
+### 9. 更新售后政策
+
+- 分组:管理后台 - 售后政策
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/after-sales-policy/update`
+- operationId:`AfterSalesPolicy_updateAfterSalesPolicy`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AfterSalesPolicySaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 14586 |
+| brandId | 品牌ID | 是 | integer | 9150 |
+| title | 标题 | 是 | string | |
+| content | 内容 | 是 | string | |
+| status | 状态 | 否 | integer | 2 |
+| lang | 语言 | 是 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 售后政策-品牌
+
+### 1. 创建售后政策-品牌
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/after-sales-brand/create`
+- operationId:`AfterSalesBrand_createAfterSalesBrand`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AfterSalesBrandSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25519 |
+| brandName | 品牌名称 | 是 | string | 赵六 |
+| status | 状态 | 否 | integer | 2 |
+| rankNum | 排序号 | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除售后政策-品牌
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/after-sales-brand/delete`
+- operationId:`AfterSalesBrand_deleteAfterSalesBrand`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除售后政策-品牌
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/after-sales-brand/delete-list`
+- operationId:`AfterSalesBrand_deleteAfterSalesBrandList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出售后政策-品牌 Excel
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-brand/export-excel`
+- operationId:`AfterSalesBrand_exportAfterSalesBrandExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandName | query | 否 | string | 品牌名称 | 赵六 |
+| status | query | 否 | integer | 状态 | 2 |
+| rankNum | query | 否 | integer | 排序号 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 17576 |
+| userId | query | 否 | integer | 权限用户ID | 13390 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得售后政策-品牌
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-brand/get`
+- operationId:`AfterSalesBrand_getAfterSalesBrand`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesBrandRespVO` |
+
+### 6. 获得导入售后政策-品牌模板
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-brand/get-import-template`
+- operationId:`AfterSalesBrand_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入售后政策-品牌Excel
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/after-sales-brand/import-excel`
+- operationId:`AfterSalesBrand_importAfterSalesBrandExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAfterSalesBrandImportRespVO` |
+
+### 8. 获得可用的品牌列表
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-brand/list-available`
+- operationId:`AfterSalesBrand_getAvailableBrandList`
+- 描述:获取所有状态为启用(status=1)的品牌列表,用于前端在新增售后政策时选择品牌。
+返回结果按排序号(rankNum)升序、ID降序排列。
+已软删除的品牌不会出现在列表中。
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListAfterSalesBrandRespVO` |
+
+### 9. 获得售后政策-品牌分页
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/after-sales-brand/page`
+- operationId:`AfterSalesBrand_getAfterSalesBrandPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| brandName | query | 否 | string | 品牌名称 | 赵六 |
+| status | query | 否 | integer | 状态 | 2 |
+| rankNum | query | 否 | integer | 排序号 | |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 17576 |
+| userId | query | 否 | integer | 权限用户ID | 13390 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAfterSalesBrandRespVO` |
+
+### 10. 更新售后政策-品牌
+
+- 分组:管理后台 - 售后政策-品牌
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/after-sales-brand/update`
+- operationId:`AfterSalesBrand_updateAfterSalesBrand`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AfterSalesBrandSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 25519 |
+| brandName | 品牌名称 | 是 | string | 赵六 |
+| status | 状态 | 否 | integer | 2 |
+| rankNum | 排序号 | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 国家信息
+
+### 1. 创建国家信息
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/address-country/create`
+- operationId:`AddressCountry_createAddressCountry`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AddressCountrySaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 4792 |
+| lingxingCountryCode | 领星国家代码 | 否 | string | |
+| paypalCountryCode | paypal国家代码 | 否 | string | |
+| nameEn | 英文名 | 否 | string | |
+| nameCn | 中文名 | 否 | string | |
+| status | 是否支持(1是 2否) | 是 | integer | 2 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除国家信息
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/address-country/delete`
+- operationId:`AddressCountry_deleteAddressCountry`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除国家信息
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/address-country/delete-list`
+- operationId:`AddressCountry_deleteAddressCountryList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出国家信息 Excel
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/address-country/export-excel`
+- operationId:`AddressCountry_exportAddressCountryExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| lingxingCountryCode | query | 否 | string | 领星国家代码 | |
+| paypalCountryCode | query | 否 | string | paypal国家代码 | |
+| nameEn | query | 否 | string | 英文名 | |
+| nameCn | query | 否 | string | 中文名 | |
+| status | query | 否 | integer | 是否支持(1是 2否) | 2 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 11472 |
+| userId | query | 否 | integer | 权限用户ID | 25927 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得国家信息
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/address-country/get`
+- operationId:`AddressCountry_getAddressCountry`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAddressCountryRespVO` |
+
+### 6. 获得导入国家信息模板
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/address-country/get-import-template`
+- operationId:`AddressCountry_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入国家信息Excel
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/address-country/import-excel`
+- operationId:`AddressCountry_importAddressCountryExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultAddressCountryImportRespVO` |
+
+### 8. 获得运费规则国家下拉选项(弃用)
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/address-country/options-for-shipping`
+- operationId:`AddressCountry_getOptionsForShipping`
+- 描述:获取所有状态为启用(status=1)的国家列表,用于前端在新增运费规则时选择国家。
+且排除在同一运费模板下已配置的国家。同时配置一个国家在一个模板的不同规则下会报错
+
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| shippingTemplateId | query | 是 | integer | | |
+| shippingRuleId | query | 否 | integer | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListAddressCountrySimpleRespVO` |
+
+### 9. 获得国家信息分页
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/address-country/page`
+- operationId:`AddressCountry_getAddressCountryPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| lingxingCountryCode | query | 否 | string | 领星国家代码 | |
+| paypalCountryCode | query | 否 | string | paypal国家代码 | |
+| nameEn | query | 否 | string | 英文名 | |
+| nameCn | query | 否 | string | 中文名 | |
+| status | query | 否 | integer | 是否支持(1是 2否) | 2 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 11472 |
+| userId | query | 否 | integer | 权限用户ID | 25927 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultAddressCountryRespVO` |
+
+### 10. 更新国家信息
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/address-country/update`
+- operationId:`AddressCountry_updateAddressCountry`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`AddressCountrySaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 4792 |
+| lingxingCountryCode | 领星国家代码 | 否 | string | |
+| paypalCountryCode | paypal国家代码 | 否 | string | |
+| nameEn | 英文名 | 否 | string | |
+| nameCn | 中文名 | 否 | string | |
+| status | 是否支持(1是 2否) | 是 | integer | 2 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 11. 批量更新国家信息状态
+
+- 分组:管理后台 - 国家信息
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/address-country/update-status-list`
+- operationId:`AddressCountry_updateAddressCountryStatusList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | | |
+| status | query | 是 | integer | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 地区
+
+### 1. 获得 IP 对应的地区名
+
+- 分组:管理后台 - 地区
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/area/get-by-ip`
+- operationId:`Area_getAreaByIp`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ip | query | 是 | string | IP | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultString` |
+
+### 2. 获得地区树
+
+- 分组:管理后台 - 地区
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/area/tree`
+- operationId:`Area_getAreaTree`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListAreaNodeRespVO` |
+
+## 管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+
+### 1. 创建基础数据-说明
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/article/create`
+- operationId:`Article_createArticle`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ArticleSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 29288 |
+| title | 标题 | 是 | string | |
+| articleType | 说明类型(数据字典配置) | 是 | string | 2 |
+| content | 内容 | 是 | string | |
+| status | 状态 | 否 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除基础数据-说明
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/article/delete`
+- operationId:`Article_deleteArticle`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除基础数据-说明
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/jh/article/delete-list`
+- operationId:`Article_deleteArticleList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出基础数据-说明 Excel
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/article/export-excel`
+- operationId:`Article_exportArticleExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| title | query | 否 | string | 标题 | |
+| articleType | query | 否 | string | 说明类型(数据字典配置) | 2 |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 30831 |
+| userId | query | 否 | integer | 权限用户ID | 10123 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得基础数据-说明
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/article/get`
+- operationId:`Article_getArticle`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultArticleRespVO` |
+
+### 6. 获得导入基础数据-说明模板
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/article/get-import-template`
+- operationId:`Article_getImportTemplate`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 7. 导入基础数据-说明Excel
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/article/import-excel`
+- operationId:`Article_importArticleExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| updateSupport | query | 是 | boolean | 是否支持更新 | True |
+| userId | query | 否 | integer | 创建人-为空则取当前人 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultArticleImportRespVO` |
+
+### 8. 获得基础数据-说明分页
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`GET`
+- 接口路径:`/admin-api/jh/article/page`
+- operationId:`Article_getArticlePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| title | query | 否 | string | 标题 | |
+| articleType | query | 否 | string | 说明类型(数据字典配置) | 2 |
+| content | query | 否 | string | 内容 | |
+| status | query | 否 | integer | 状态 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| deptId | query | 否 | integer | 权限部门ID | 30831 |
+| userId | query | 否 | integer | 权限用户ID | 10123 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultArticleRespVO` |
+
+### 9. 更新基础数据-说明
+
+- 分组:管理后台 - 基础数据-说明(售后说明,运费说明,售后问题等)
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/article/update`
+- operationId:`Article_updateArticle`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`ArticleSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 主键 | 是 | integer | 29288 |
+| title | 标题 | 是 | string | |
+| articleType | 说明类型(数据字典配置) | 是 | string | 2 |
+| content | 内容 | 是 | string | |
+| status | 状态 | 否 | integer | 1 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 字典数据
+
+### 1. 新增字典数据
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/dict-data/create`
+- operationId:`DictData_createDictData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DictDataSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 字典数据编号 | 否 | integer | 1024 |
+| sort | 显示顺序 | 是 | integer | 1024 |
+| label | 字典标签 | 是 | string | 芋道 |
+| value | 字典值 | 是 | string | iocoder |
+| dictType | 字典类型 | 是 | string | sys_common_sex |
+| status | 状态,见 CommonStatusEnum 枚举 | 是 | integer | 1 |
+| colorType | 颜色类型,default、primary、success、info、warning、danger | 否 | string | default |
+| cssClass | css 样式 | 否 | string | btn-visible |
+| remark | 备注 | 否 | string | 我是一个角色 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除字典数据
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/dict-data/delete`
+- operationId:`DictData_deleteDictData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除字典数据
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/dict-data/delete-list`
+- operationId:`DictData_deleteDictDataList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出字典数据
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-data/export-excel`
+- operationId:`DictData_export`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| label | query | 否 | string | 字典标签 | 芋道 |
+| dictType | query | 否 | string | 字典类型,模糊匹配 | sys_common_sex |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. /查询字典数据详细
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-data/get`
+- operationId:`DictData_getDictData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDictDataRespVO` |
+
+### 6. 获得全部字典数据列表
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-data/list-all-simple`
+- operationId:`DictData_getSimpleDictDataList`
+- 描述:一般用于管理后台缓存字典数据在本地
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDictDataSimpleRespVO` |
+
+### 7. 获得字典类型的分页
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-data/page`
+- operationId:`DictData_getDictTypePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| label | query | 否 | string | 字典标签 | 芋道 |
+| dictType | query | 否 | string | 字典类型,模糊匹配 | sys_common_sex |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDictDataRespVO` |
+
+### 8. 获得全部字典数据列表
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-data/simple-list`
+- operationId:`DictData_getSimpleDictDataList_1`
+- 描述:一般用于管理后台缓存字典数据在本地
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDictDataSimpleRespVO` |
+
+### 9. 修改字典数据
+
+- 分组:管理后台 - 字典数据
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/dict-data/update`
+- operationId:`DictData_updateDictData`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DictDataSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 字典数据编号 | 否 | integer | 1024 |
+| sort | 显示顺序 | 是 | integer | 1024 |
+| label | 字典标签 | 是 | string | 芋道 |
+| value | 字典值 | 是 | string | iocoder |
+| dictType | 字典类型 | 是 | string | sys_common_sex |
+| status | 状态,见 CommonStatusEnum 枚举 | 是 | integer | 1 |
+| colorType | 颜色类型,default、primary、success、info、warning、danger | 否 | string | default |
+| cssClass | css 样式 | 否 | string | btn-visible |
+| remark | 备注 | 否 | string | 我是一个角色 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 字典类型
+
+### 1. 创建字典类型
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/dict-type/create`
+- operationId:`DictType_createDictType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DictTypeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 字典类型编号 | 否 | integer | 1024 |
+| name | 字典名称 | 是 | string | 性别 |
+| type | 字典类型 | 是 | string | sys_common_sex |
+| status | 状态,参见 CommonStatusEnum 枚举类 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 快乐的备注 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除字典类型
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/dict-type/delete`
+- operationId:`DictType_deleteDictType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除字典类型
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/dict-type/delete-list`
+- operationId:`DictType_deleteDictTypeList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出数据类型
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-type/export-excel`
+- operationId:`DictType_export`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 字典类型名称,模糊匹配 | 芋道 |
+| type | query | 否 | string | 字典类型,模糊匹配 | sys_common_sex |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. /查询字典类型详细
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-type/get`
+- operationId:`DictType_getDictType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDictTypeRespVO` |
+
+### 6. 获得全部字典类型列表
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-type/list-all-simple`
+- operationId:`DictType_getSimpleDictTypeList`
+- 描述:包括开启 + 禁用的字典类型,主要用于前端的下拉选项
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDictTypeSimpleRespVO` |
+
+### 7. 获得字典类型的分页列表
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-type/page`
+- operationId:`DictType_pageDictTypes`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 字典类型名称,模糊匹配 | 芋道 |
+| type | query | 否 | string | 字典类型,模糊匹配 | sys_common_sex |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDictTypeRespVO` |
+
+### 8. 获得全部字典类型列表
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/dict-type/simple-list`
+- operationId:`DictType_getSimpleDictTypeList_1`
+- 描述:包括开启 + 禁用的字典类型,主要用于前端的下拉选项
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDictTypeSimpleRespVO` |
+
+### 9. 修改字典类型
+
+- 分组:管理后台 - 字典类型
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/dict-type/update`
+- operationId:`DictType_updateDictType`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DictTypeSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 字典类型编号 | 否 | integer | 1024 |
+| name | 字典名称 | 是 | string | 性别 |
+| type | 字典类型 | 是 | string | sys_common_sex |
+| status | 状态,参见 CommonStatusEnum 枚举类 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 快乐的备注 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 学生
+
+### 1. 创建学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/demo03-student-erp/create`
+- operationId:`Demo03StudentErp_createDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentErpSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/delete`
+- operationId:`Demo03StudentErp_deleteDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/delete-list`
+- operationId:`Demo03StudentErp_deleteDemo03StudentList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 创建学生课程
+
+- 分组:管理后台 - 学生
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/create`
+- operationId:`Demo03StudentErp_createDemo03Course`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03CourseDO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| createTime | | 否 | string | |
+| updateTime | | 否 | string | |
+| creator | | 否 | string | |
+| updater | | 否 | string | |
+| deleted | | 否 | boolean | |
+| id | | 否 | integer | |
+| studentId | | 否 | integer | |
+| name | | 否 | string | |
+| score | | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 5. 删除学生课程
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/delete`
+- operationId:`Demo03StudentErp_deleteDemo03Course`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 6. 批量删除学生课程
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/delete-list`
+- operationId:`Demo03StudentErp_deleteDemo03CourseList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 7. 获得学生课程
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/get`
+- operationId:`Demo03StudentErp_getDemo03Course`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03CourseDO` |
+
+### 8. 获得学生课程分页
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/page`
+- operationId:`Demo03StudentErp_getDemo03CoursePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDemo03CourseDO` |
+
+### 9. 更新学生课程
+
+- 分组:管理后台 - 学生
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-course/update`
+- operationId:`Demo03StudentErp_updateDemo03Course`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03CourseDO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| createTime | | 否 | string | |
+| updateTime | | 否 | string | |
+| creator | | 否 | string | |
+| updater | | 否 | string | |
+| deleted | | 否 | boolean | |
+| id | | 否 | integer | |
+| studentId | | 否 | integer | |
+| name | | 否 | string | |
+| score | | 否 | integer | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 10. 创建学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/create`
+- operationId:`Demo03StudentErp_createDemo03Grade`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03GradeDO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| createTime | | 否 | string | |
+| updateTime | | 否 | string | |
+| creator | | 否 | string | |
+| updater | | 否 | string | |
+| deleted | | 否 | boolean | |
+| id | | 否 | integer | |
+| studentId | | 否 | integer | |
+| name | | 否 | string | |
+| teacher | | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 11. 删除学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/delete`
+- operationId:`Demo03StudentErp_deleteDemo03Grade`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 12. 批量删除学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/delete-list`
+- operationId:`Demo03StudentErp_deleteDemo03GradeList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 13. 获得学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/get`
+- operationId:`Demo03StudentErp_getDemo03Grade`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03GradeDO` |
+
+### 14. 获得学生班级分页
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/page`
+- operationId:`Demo03StudentErp_getDemo03GradePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDemo03GradeDO` |
+
+### 15. 更新学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/demo03-student-erp/demo03-grade/update`
+- operationId:`Demo03StudentErp_updateDemo03Grade`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03GradeDO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| createTime | | 否 | string | |
+| updateTime | | 否 | string | |
+| creator | | 否 | string | |
+| updater | | 否 | string | |
+| deleted | | 否 | boolean | |
+| id | | 否 | integer | |
+| studentId | | 否 | integer | |
+| name | | 否 | string | |
+| teacher | | 否 | string | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 16. 导出学生 Excel
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/export-excel`
+- operationId:`Demo03StudentErp_exportDemo03StudentExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 17. 获得学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/get`
+- operationId:`Demo03StudentErp_getDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03StudentErpRespVO` |
+
+### 18. 获得学生分页
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-erp/page`
+- operationId:`Demo03StudentErp_getDemo03StudentPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDemo03StudentErpRespVO` |
+
+### 19. 更新学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/demo03-student-erp/update`
+- operationId:`Demo03StudentErp_updateDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentErpSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 20. 创建学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/demo03-student-inner/create`
+- operationId:`Demo03StudentInner_createDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentInnerSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+| demo03Courses | 学生课程列表 | 否 | array[Demo03CourseDO] | |
+| demo03Grade | 学生班级 | 否 | Demo03GradeDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 21. 删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-inner/delete`
+- operationId:`Demo03StudentInner_deleteDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 22. 批量删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-inner/delete-list`
+- operationId:`Demo03StudentInner_deleteDemo03StudentList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 23. 获得学生课程列表
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-inner/demo03-course/list-by-student-id`
+- operationId:`Demo03StudentInner_getDemo03CourseListByStudentId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDemo03CourseDO` |
+
+### 24. 获得学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-inner/demo03-grade/get-by-student-id`
+- operationId:`Demo03StudentInner_getDemo03GradeByStudentId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03GradeDO` |
+
+### 25. 导出学生 Excel
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-inner/export-excel`
+- operationId:`Demo03StudentInner_exportDemo03StudentExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 26. 获得学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-inner/get`
+- operationId:`Demo03StudentInner_getDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03StudentInnerRespVO` |
+
+### 27. 获得学生分页
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-inner/page`
+- operationId:`Demo03StudentInner_getDemo03StudentPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDemo03StudentInnerRespVO` |
+
+### 28. 更新学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/demo03-student-inner/update`
+- operationId:`Demo03StudentInner_updateDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentInnerSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+| demo03Courses | 学生课程列表 | 否 | array[Demo03CourseDO] | |
+| demo03Grade | 学生班级 | 否 | Demo03GradeDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 29. 创建学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/demo03-student-normal/create`
+- operationId:`Demo03StudentNormal_createDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentNormalSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+| demo03Courses | 学生课程列表 | 否 | array[Demo03CourseDO] | |
+| demo03Grade | 学生班级 | 否 | Demo03GradeDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 30. 删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-normal/delete`
+- operationId:`Demo03StudentNormal_deleteDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 31. 批量删除学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/demo03-student-normal/delete-list`
+- operationId:`Demo03StudentNormal_deleteDemo03StudentList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 32. 获得学生课程列表
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-normal/demo03-course/list-by-student-id`
+- operationId:`Demo03StudentNormal_getDemo03CourseListByStudentId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListDemo03CourseDO` |
+
+### 33. 获得学生班级
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-normal/demo03-grade/get-by-student-id`
+- operationId:`Demo03StudentNormal_getDemo03GradeByStudentId`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| studentId | query | 是 | integer | 学生编号 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03GradeDO` |
+
+### 34. 导出学生 Excel
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-normal/export-excel`
+- operationId:`Demo03StudentNormal_exportDemo03StudentExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 35. 获得学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-normal/get`
+- operationId:`Demo03StudentNormal_getDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultDemo03StudentNormalRespVO` |
+
+### 36. 获得学生分页
+
+- 分组:管理后台 - 学生
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/demo03-student-normal/page`
+- operationId:`Demo03StudentNormal_getDemo03StudentPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 名字 | 芋艿 |
+| sex | query | 否 | integer | 性别 | |
+| description | query | 否 | string | 简介 | 随便 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultDemo03StudentNormalRespVO` |
+
+### 37. 更新学生
+
+- 分组:管理后台 - 学生
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/demo03-student-normal/update`
+- operationId:`Demo03StudentNormal_updateDemo03Student`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`Demo03StudentNormalSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 编号 | 是 | integer | 8525 |
+| name | 名字 | 是 | string | 芋艿 |
+| sex | 性别 | 是 | integer | |
+| birthday | 出生日期 | 是 | string | |
+| description | 简介 | 是 | string | 随便 |
+| demo03Courses | 学生课程列表 | 否 | array[Demo03CourseDO] | |
+| demo03Grade | 学生班级 | 否 | Demo03GradeDO | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 定时任务
+
+### 1. 创建定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/job/create`
+- operationId:`Job_createJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`JobSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 任务编号 | 否 | integer | 1024 |
+| name | 任务名称 | 是 | string | 测试任务 |
+| handlerName | 处理器的名字 | 是 | string | sysUserSessionTimeoutJob |
+| handlerParam | 处理器的参数 | 否 | string | yudao |
+| cronExpression | CRON 表达式 | 是 | string | 0/10 * * * * ? * |
+| retryCount | 重试次数 | 是 | integer | 3 |
+| retryInterval | 重试间隔 | 是 | integer | 1000 |
+| monitorTimeout | 监控超时时间 | 否 | integer | 1000 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/job/delete`
+- operationId:`Job_deleteJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/infra/job/delete-list`
+- operationId:`Job_deleteJobList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 导出定时任务 Excel
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job/export-excel`
+- operationId:`Job_exportJobExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 任务名称,模糊匹配 | 测试任务 |
+| status | query | 否 | integer | 任务状态,参见 JobStatusEnum 枚举 | 1 |
+| handlerName | query | 否 | string | 处理器的名字,模糊匹配 | sysUserSessionTimeoutJob |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job/get`
+- operationId:`Job_getJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultJobRespVO` |
+
+### 6. 获得定时任务的下 n 次执行时间
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job/get_next_times`
+- operationId:`Job_getJobNextTimes`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| count | query | 否 | integer | 数量 | 5 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListLocalDateTime` |
+
+### 7. 获得定时任务分页
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job/page`
+- operationId:`Job_getJobPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| name | query | 否 | string | 任务名称,模糊匹配 | 测试任务 |
+| status | query | 否 | integer | 任务状态,参见 JobStatusEnum 枚举 | 1 |
+| handlerName | query | 否 | string | 处理器的名字,模糊匹配 | sysUserSessionTimeoutJob |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultJobRespVO` |
+
+### 8. 同步定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`POST`
+- 接口路径:`/admin-api/infra/job/sync`
+- operationId:`Job_syncJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 9. 触发定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/job/trigger`
+- operationId:`Job_triggerJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 10. 更新定时任务
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/job/update`
+- operationId:`Job_updateJob`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`JobSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 任务编号 | 否 | integer | 1024 |
+| name | 任务名称 | 是 | string | 测试任务 |
+| handlerName | 处理器的名字 | 是 | string | sysUserSessionTimeoutJob |
+| handlerParam | 处理器的参数 | 否 | string | yudao |
+| cronExpression | CRON 表达式 | 是 | string | 0/10 * * * * ? * |
+| retryCount | 重试次数 | 是 | integer | 3 |
+| retryInterval | 重试间隔 | 是 | integer | 1000 |
+| monitorTimeout | 监控超时时间 | 否 | integer | 1000 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 11. 更新定时任务的状态
+
+- 分组:管理后台 - 定时任务
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/infra/job/update-status`
+- operationId:`Job_updateJobStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| status | query | 是 | integer | 状态 | 1 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 定时任务日志
+
+### 1. 导出定时任务日志 Excel
+
+- 分组:管理后台 - 定时任务日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job-log/export-excel`
+- operationId:`JobLog_exportJobLogExcel`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| jobId | query | 否 | integer | 任务编号 | 10 |
+| handlerName | query | 否 | string | 处理器的名字,模糊匹配 | |
+| beginTime | query | 否 | string | 开始执行时间 | |
+| endTime | query | 否 | string | 结束执行时间 | |
+| status | query | 否 | integer | 任务状态,参见 JobLogStatusEnum 枚举 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 2. 获得定时任务日志
+
+- 分组:管理后台 - 定时任务日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job-log/get`
+- operationId:`JobLog_getJobLog`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultJobLogRespVO` |
+
+### 3. 获得定时任务日志分页
+
+- 分组:管理后台 - 定时任务日志
+- 请求方式:`GET`
+- 接口路径:`/admin-api/infra/job-log/page`
+- operationId:`JobLog_getJobLogPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| jobId | query | 否 | integer | 任务编号 | 10 |
+| handlerName | query | 否 | string | 处理器的名字,模糊匹配 | |
+| beginTime | query | 否 | string | 开始执行时间 | |
+| endTime | query | 否 | string | 结束执行时间 | |
+| status | query | 否 | integer | 任务状态,参见 JobLogStatusEnum 枚举 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultJobLogRespVO` |
+
+## 管理后台 - 岗位
+
+### 1. 创建岗位
+
+- 分组:管理后台 - 岗位
+- 请求方式:`POST`
+- 接口路径:`/admin-api/system/post/create`
+- operationId:`Post_createPost`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`PostSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 岗位编号 | 否 | integer | 1024 |
+| name | 岗位名称 | 是 | string | 小土豆 |
+| code | 岗位编码 | 是 | string | yudao |
+| sort | 显示顺序 | 是 | integer | 1024 |
+| status | 状态 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 快乐的备注 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 2. 删除岗位
+
+- 分组:管理后台 - 岗位
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/post/delete`
+- operationId:`Post_deletePost`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 3. 批量删除岗位
+
+- 分组:管理后台 - 岗位
+- 请求方式:`DELETE`
+- 接口路径:`/admin-api/system/post/delete-list`
+- operationId:`Post_deletePostList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 4. 岗位管理
+
+- 分组:管理后台 - 岗位
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/post/export-excel`
+- operationId:`Post_export`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| code | query | 否 | string | 岗位编码,模糊匹配 | yudao |
+| name | query | 否 | string | 岗位名称,模糊匹配 | 芋道 |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `` |
+
+### 5. 获得岗位信息
+
+- 分组:管理后台 - 岗位
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/post/get`
+- operationId:`Post_getPost`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 岗位编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPostRespVO` |
+
+### 6. 获取岗位全列表
+
+- 分组:管理后台 - 岗位
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/post/list-all-simple`
+- operationId:`Post_getSimplePostList`
+- 描述:只包含被开启的岗位,主要用于前端的下拉选项
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListPostSimpleRespVO` |
+
+### 7. 获得岗位分页列表
+
+- 分组:管理后台 - 岗位
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/post/page`
+- operationId:`Post_getPostPage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| code | query | 否 | string | 岗位编码,模糊匹配 | yudao |
+| name | query | 否 | string | 岗位名称,模糊匹配 | 芋道 |
+| status | query | 否 | integer | 展示状态,参见 CommonStatusEnum 枚举类 | 1 |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultPostRespVO` |
+
+### 8. 获取岗位全列表
+
+- 分组:管理后台 - 岗位
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/post/simple-list`
+- operationId:`Post_getSimplePostList_1`
+- 描述:只包含被开启的岗位,主要用于前端的下拉选项
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListPostSimpleRespVO` |
+
+### 9. 修改岗位
+
+- 分组:管理后台 - 岗位
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/post/update`
+- operationId:`Post_updatePost`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`PostSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 岗位编号 | 否 | integer | 1024 |
+| name | 岗位名称 | 是 | string | 小土豆 |
+| code | 岗位编码 | 是 | string | yudao |
+| sort | 显示顺序 | 是 | integer | 1024 |
+| status | 状态 | 是 | integer | 1 |
+| remark | 备注 | 否 | string | 快乐的备注 |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 我的站内信
+
+### 1. 获得站内信
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/notify-message/get`
+- operationId:`NotifyMessage_getNotifyMessage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | 编号 | 1024 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultNotifyMessageRespVO` |
+
+### 2. 获得当前用户的未读站内信数量
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/notify-message/get-unread-count`
+- operationId:`NotifyMessage_getUnreadNotifyMessageCount`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultLong` |
+
+### 3. 获取当前用户的最新站内信列表,默认 10 条
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/notify-message/get-unread-list`
+- operationId:`NotifyMessage_getUnreadNotifyMessageList`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| size | query | 否 | integer | 10 | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultListNotifyMessageRespVO` |
+
+### 4. 获得我的站内信分页
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/notify-message/my-page`
+- operationId:`NotifyMessage_getMyMyNotifyMessagePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| readStatus | query | 否 | boolean | 是否已读 | True |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultNotifyMessageRespVO` |
+
+### 5. 获得站内信分页
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`GET`
+- 接口路径:`/admin-api/system/notify-message/page`
+- operationId:`NotifyMessage_getNotifyMessagePage`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| userId | query | 否 | integer | 用户编号 | 25025 |
+| userType | query | 否 | integer | 用户类型 | 1 |
+| templateCode | query | 否 | string | 模板编码 | test_01 |
+| templateType | query | 否 | integer | 模版类型 | 2 |
+| createTime | query | 否 | array[string] | 创建时间 | |
+| pageNo | query | 是 | integer | 页码,从 1 开始 | 1 |
+| pageSize | query | 是 | integer | 每页条数,最大值为 999 | 10 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultPageResultNotifyMessageRespVO` |
+
+### 6. 标记所有站内信为已读
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/notify-message/update-all-read`
+- operationId:`NotifyMessage_updateAllNotifyMessageRead`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 7. 标记站内信为已读
+
+- 分组:管理后台 - 我的站内信
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/system/notify-message/update-read`
+- operationId:`NotifyMessage_updateNotifyMessageRead`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| ids | query | 是 | array[integer] | 编号列表 | 1024,2048 |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+## 管理后台 - 折扣
+
+### 1. 启用/停用
+
+- 分组:管理后台 - 折扣
+- 请求方式:`PUT`
+- 接口路径:`/admin-api/jh/discount/change-status`
+- operationId:`Discount_updateDiscountStatus`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| id | query | 是 | integer | ID | |
+| status | query | 是 | string | | |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 响应
+
+| 状态码 | 说明 | Schema |
+| --- | --- | --- |
+| 200 | OK | `CommonResultBoolean` |
+
+### 2. 创建折扣
+
+- 分组:管理后台 - 折扣
+- 请求方式:`POST`
+- 接口路径:`/admin-api/jh/discount/create`
+- operationId:`Discount_createDiscount`
+
+#### 请求参数
+
+| 名称 | 位置 | 必填 | 类型 | 说明 | 示例 |
+| --- | --- | --- | --- | --- | --- |
+| tenant-id | header | 否 | integer | 租户编号 | |
+| Authorization | header | 否 | string | 认证 Token | |
+
+#### 请求体
+
+- 必填:是
+- Content-Type:`application/json`
+- Schema:`DiscountSaveReqVO`
+
+| 字段 | 说明 | 必填 | 类型 | 示例 |
+| --- | --- | --- | --- | --- |
+| id | 折扣主键 | 是 | integer | 8592 |
+| discountCode | 折扣编码 | 否 | string | |
+| discountName | 折扣名称 | 是 | string | 芋艿 |
+| discountType | 折扣类型(product_discount-产品折扣、order_discount-订单折扣、buy_x_get_y-买X赠Y) | 是 | string | 1 |
+| discountEffectType | 折扣生效类型(discount_code-折扣码、auto_discount-自动折扣) | 是 | string | 1 |
+| discountCodeValue | 折扣码(折扣生效类型为"折扣码"时必填) | 否 | string | |
+| discountTitle | 折扣标题(折扣生效类型为"自动折扣"时必填) | 否 | string | |
+| status | 状态(active-有效、expired-已过期、disabled-已停用) | 否 | string | |
+| startTime | 开始时间 | 是 | string | |
+| endTime | 结束时间 | 否 | string | |
+| minRequirementType | 最低购买要求(none-无最低要求、min_purchase_amount-最低购买金额、min_product_quantity-最低购买产品数量) | 否 | string | 1 |
+| minPurchaseAmount | 最低购买金额(购买要求为"最低购买金额"时必填) | 否 | number | |
+| minProductQuantity | 最低购买产品数量(购买要求为"最低购买产品数量"时必填) | 否 | integer | |
+| customerEligibility | 客户资格适用范围(all_customer-所有客户、specific_cate-特定客户分类、specific_customer-特定客户) | 否 | string | |
+| totalIssuanceLimit | 总发放量(0这是正文内容

', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '204', 'updater': '挂辣辣的瓜', 'createTime': 1776068587089, 'updateTime': 1776069119841, 'deptId': 0, 'userId': 204}, {'id': 13, 'terminal': '1', 'type': 1, 'title': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。 林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。 长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。', 'content': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。
林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。
长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。
', 'status': 1, 'lang': 'pl', 'rankNum': 0, 'creator': '203', 'updater': '203', 'createTime': 1775787078899, 'updateTime': 1775787078899, 'deptId': 114, 'userId': 203}, {'id': 11, 'terminal': '1', 'type': 4, 'title': '用户协议', 'content': '不遵守的就猪八
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '203', 'updater': '哇啦啦的哇', 'createTime': 1774599611156, 'updateTime': 1775786859785, 'deptId': 114, 'userId': 203}, {'id': 9, 'terminal': '1', 'type': 1, 'title': '测试协议', 'content': '测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '145', 'updater': 'joyhub', 'createTime': 1774404487857, 'updateTime': 1774404497348, 'deptId': 1, 'userId': 145}, {'id': 5, 'terminal': '1', 'type': 2, 'title': '昆仑山,横亘西疆,绵延千里,被誉为万山之祖、中华龙脉。雪峰巍峨,冰川如玉,终年银装素裹,在苍穹下静静矗立。', 'content': '测试环境一哈
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '147', 'updater': '哇啦啦的哇', 'createTime': 1773107640496, 'updateTime': 1774598787925, 'deptId': 116, 'userId': 147}, {'id': 4, 'terminal': '1', 'type': 1, 'title': '用户测试协议1111', 'content': '飞机飞机艾佛啊
', 'status': 1, 'lang': 'de', 'rankNum': 0, 'creator': '147', 'updater': '147', 'createTime': 1773056002516, 'updateTime': 1773107141877, 'deptId': 116, 'userId': 147}, {'id': 6, 'terminal': '1', 'type': 1, 'title': '测试数据123', 'content': '124513515
', 'status': 1, 'lang': 'es', 'rankNum': 1, 'creator': '147', 'updater': '147', 'createTime': 1773110599081, 'updateTime': 1773220135616, 'deptId': 116, 'userId': 147}, {'id': 8, 'terminal': '1', 'type': 1, 'title': '测试多个隐私策略', 'content': '狗日饿啊缝纫机
', 'status': 1, 'lang': 'es', 'rankNum': 5, 'creator': '147', 'updater': '147', 'createTime': 1773111389179, 'updateTime': 1773220125716, 'deptId': 116, 'userId': 147}, {'id': 10, 'terminal': '1', 'type': 3, 'title': '鱼人语教学开始', 'content': 'Wralarrrrr!Wawalala!Wurrrrgl!Mmmurlok mmmrrglllm!Wrarararralalla!Wuuuu~Glub-glub… Murloc ok!', 'status': 1, 'lang': 'en', 'rankNum': 11, 'creator': '203', 'updater': '203', 'createTime': 1774598987819, 'updateTime': 1774598987819, 'deptId': 114, 'userId': 203}, {'id': 12, 'terminal': '1', 'type': 5, 'title': '社区指南测试版本', 'content': '多见于平台用户协议、违规提示中,是互联网产品的标准用语。
', 'status': 1, 'lang': 'en', 'rankNum': 123, 'creator': '203', 'updater': '203', 'createTime': 1774835556936, 'updateTime': 1774835556936, 'deptId': 114, 'userId': 203}]}}
+2026-05-06 15:16:18,342 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 2, title: 测试协议_1778051778, content: 这是测试协议内容_1778051778..., status: 1
+2026-05-06 15:16:18,344 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:18,493 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:排序号不能为空', 'data': None}
+2026-05-06 15:16:18,901 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 1, title: 详情测试协议_1778051778, content: 详情测试协议内容_1778051778..., status: 1
+2026-05-06 15:16:18,902 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:19,024 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:排序号不能为空', 'data': None}
+2026-05-06 15:16:19,056 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 2, title: 待更新协议_1778051779, content: 待更新协议内容_1778051779..., status: 1
+2026-05-06 15:16:19,057 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:19,203 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:排序号不能为空', 'data': None}
+2026-05-06 15:16:19,224 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 2, title: 待删除协议_1778051779, content: 待删除协议内容_1778051779..., status: 2
+2026-05-06 15:16:19,226 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:19,382 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:终端(1web 2app)不能为空', 'data': None}
+2026-05-06 15:16:19,396 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 1, title: 批量删除协议1_1778051779, content: 批量删除协议内容1_1778051779..., status: 2
+2026-05-06 15:16:19,397 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:19,523 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:终端(1web 2app)不能为空', 'data': None}
+2026-05-06 15:16:19,526 [tid:22052 pid:14556] AgreementManage.py[line:32] INFO 创建协议 - type: 2, title: 批量删除协议2_1778051779, content: 批量删除协议内容2_1778051779..., status: 2
+2026-05-06 15:16:19,527 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:16:19,658 [tid:22052 pid:14556] AgreementManage.py[line:43] INFO 创建协议响应: {'code': 400, 'msg': 'The request parameters are incorrect:语言 (en 英语 de 德语 ja 日语)不能为空', 'data': None}
+2026-05-06 15:16:19,675 [tid:22052 pid:14556] AgreementManage.py[line:82] INFO 导出协议Excel - 参数: {'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:16:19,676 [tid:22052 pid:14556] Dlizhan_interface.py[line:45] INFO =========== 导出协议 Excel ===========
+2026-05-06 15:16:19,832 [tid:22052 pid:14556] AgreementManage.py[line:85] INFO 导出协议Excel响应:
+2026-05-06 15:17:29,237 [tid:21980 pid:22676] UserManage.py[line:44] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:17:29,240 [tid:21980 pid:22676] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'C:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:17:29,241 [tid:21980 pid:22676] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:17:29,879 [tid:21980 pid:22676] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:17:30,063 [tid:21980 pid:22676] AgreementManage.py[line:116] INFO 获得协议分页列表 - 参数: {'page_no': 1, 'page_size': 10, 'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:17:30,065 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 获得协议分页 ===========
+2026-05-06 15:17:30,193 [tid:21980 pid:22676] AgreementManage.py[line:119] INFO 获得协议分页列表响应: {'code': 0, 'msg': '', 'data': {'total': 10, 'list': [{'id': 14, 'terminal': '1', 'type': 6, 'title': '透明度报告标题', 'content': '这是正文内容

', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '204', 'updater': '挂辣辣的瓜', 'createTime': 1776068587089, 'updateTime': 1776069119841, 'deptId': 0, 'userId': 204}, {'id': 13, 'terminal': '1', 'type': 1, 'title': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。 林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。 长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。', 'content': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。
林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。
长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。
', 'status': 1, 'lang': 'pl', 'rankNum': 0, 'creator': '203', 'updater': '203', 'createTime': 1775787078899, 'updateTime': 1775787078899, 'deptId': 114, 'userId': 203}, {'id': 11, 'terminal': '1', 'type': 4, 'title': '用户协议', 'content': '不遵守的就猪八
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '203', 'updater': '哇啦啦的哇', 'createTime': 1774599611156, 'updateTime': 1775786859785, 'deptId': 114, 'userId': 203}, {'id': 9, 'terminal': '1', 'type': 1, 'title': '测试协议', 'content': '测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '145', 'updater': 'joyhub', 'createTime': 1774404487857, 'updateTime': 1774404497348, 'deptId': 1, 'userId': 145}, {'id': 5, 'terminal': '1', 'type': 2, 'title': '昆仑山,横亘西疆,绵延千里,被誉为万山之祖、中华龙脉。雪峰巍峨,冰川如玉,终年银装素裹,在苍穹下静静矗立。', 'content': '测试环境一哈
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '147', 'updater': '哇啦啦的哇', 'createTime': 1773107640496, 'updateTime': 1774598787925, 'deptId': 116, 'userId': 147}, {'id': 4, 'terminal': '1', 'type': 1, 'title': '用户测试协议1111', 'content': '飞机飞机艾佛啊
', 'status': 1, 'lang': 'de', 'rankNum': 0, 'creator': '147', 'updater': '147', 'createTime': 1773056002516, 'updateTime': 1773107141877, 'deptId': 116, 'userId': 147}, {'id': 6, 'terminal': '1', 'type': 1, 'title': '测试数据123', 'content': '124513515
', 'status': 1, 'lang': 'es', 'rankNum': 1, 'creator': '147', 'updater': '147', 'createTime': 1773110599081, 'updateTime': 1773220135616, 'deptId': 116, 'userId': 147}, {'id': 8, 'terminal': '1', 'type': 1, 'title': '测试多个隐私策略', 'content': '狗日饿啊缝纫机
', 'status': 1, 'lang': 'es', 'rankNum': 5, 'creator': '147', 'updater': '147', 'createTime': 1773111389179, 'updateTime': 1773220125716, 'deptId': 116, 'userId': 147}, {'id': 10, 'terminal': '1', 'type': 3, 'title': '鱼人语教学开始', 'content': 'Wralarrrrr!Wawalala!Wurrrrgl!Mmmurlok mmmrrglllm!Wrarararralalla!Wuuuu~Glub-glub… Murloc ok!', 'status': 1, 'lang': 'en', 'rankNum': 11, 'creator': '203', 'updater': '203', 'createTime': 1774598987819, 'updateTime': 1774598987819, 'deptId': 114, 'userId': 203}, {'id': 12, 'terminal': '1', 'type': 5, 'title': '社区指南测试版本', 'content': '多见于平台用户协议、违规提示中,是互联网产品的标准用语。
', 'status': 1, 'lang': 'en', 'rankNum': 123, 'creator': '203', 'updater': '203', 'createTime': 1774835556936, 'updateTime': 1774835556936, 'deptId': 114, 'userId': 203}]}}
+2026-05-06 15:17:30,207 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 测试协议_1778051850, content: 这是测试协议内容_1778051850..., terminal: web, lang: en, rank_num: 1, status: 1
+2026-05-06 15:17:30,209 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:30,356 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:17:30,730 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 详情测试协议_1778051850, content: 详情测试协议内容_1778051850..., terminal: web, lang: en, rank_num: 1, status: 1
+2026-05-06 15:17:30,731 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:30,884 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:17:30,895 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 待更新协议_1778051850, content: 待更新协议内容_1778051850..., terminal: web, lang: en, rank_num: 1, status: 1
+2026-05-06 15:17:30,896 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:31,030 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:17:31,042 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 待删除协议_1778051851, content: 待删除协议内容_1778051851..., terminal: web, lang: en, rank_num: 1, status: 2
+2026-05-06 15:17:31,043 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:31,175 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 15}
+2026-05-06 15:17:31,180 [tid:21980 pid:22676] AgreementManage.py[line:60] INFO 删除协议 - agreement_id: 15
+2026-05-06 15:17:31,181 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 删除协议 ===========
+2026-05-06 15:17:31,321 [tid:21980 pid:22676] AgreementManage.py[line:63] INFO 删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:17:31,333 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 批量删除协议1_1778051851, content: 批量删除协议内容1_1778051851..., terminal: web, lang: en, rank_num: 1, status: 2
+2026-05-06 15:17:31,335 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:31,478 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 16}
+2026-05-06 15:17:31,480 [tid:21980 pid:22676] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 批量删除协议2_1778051851, content: 批量删除协议内容2_1778051851..., terminal: web, lang: en, rank_num: 1, status: 2
+2026-05-06 15:17:31,481 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:17:31,615 [tid:21980 pid:22676] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 17}
+2026-05-06 15:17:31,619 [tid:21980 pid:22676] AgreementManage.py[line:74] INFO 批量删除协议 - agreement_ids: [16, 17]
+2026-05-06 15:17:31,621 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 批量删除协议 ===========
+2026-05-06 15:17:31,754 [tid:21980 pid:22676] AgreementManage.py[line:77] INFO 批量删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:17:31,767 [tid:21980 pid:22676] AgreementManage.py[line:88] INFO 导出协议Excel - 参数: {'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:17:31,768 [tid:21980 pid:22676] Dlizhan_interface.py[line:45] INFO =========== 导出协议 Excel ===========
+2026-05-06 15:17:31,921 [tid:21980 pid:22676] AgreementManage.py[line:91] INFO 导出协议Excel响应:
+2026-05-06 15:19:09,224 [tid:17864 pid:13156] UserManage.py[line:44] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:19:09,228 [tid:17864 pid:13156] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'C:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:19:09,229 [tid:17864 pid:13156] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:19:09,895 [tid:17864 pid:13156] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:19:10,080 [tid:17864 pid:13156] AgreementManage.py[line:116] INFO 获得协议分页列表 - 参数: {'page_no': 1, 'page_size': 10, 'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:19:10,082 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 获得协议分页 ===========
+2026-05-06 15:19:10,233 [tid:17864 pid:13156] AgreementManage.py[line:119] INFO 获得协议分页列表响应: {'code': 0, 'msg': '', 'data': {'total': 10, 'list': [{'id': 14, 'terminal': '1', 'type': 6, 'title': '透明度报告标题', 'content': '这是正文内容

', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '204', 'updater': '挂辣辣的瓜', 'createTime': 1776068587089, 'updateTime': 1776069119841, 'deptId': 0, 'userId': 204}, {'id': 13, 'terminal': '1', 'type': 1, 'title': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。 林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。 长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。', 'content': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。
林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。
长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。
', 'status': 1, 'lang': 'pl', 'rankNum': 0, 'creator': '203', 'updater': '203', 'createTime': 1775787078899, 'updateTime': 1775787078899, 'deptId': 114, 'userId': 203}, {'id': 11, 'terminal': '1', 'type': 4, 'title': '用户协议', 'content': '不遵守的就猪八
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '203', 'updater': '哇啦啦的哇', 'createTime': 1774599611156, 'updateTime': 1775786859785, 'deptId': 114, 'userId': 203}, {'id': 9, 'terminal': '1', 'type': 1, 'title': '测试协议', 'content': '测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '145', 'updater': 'joyhub', 'createTime': 1774404487857, 'updateTime': 1774404497348, 'deptId': 1, 'userId': 145}, {'id': 5, 'terminal': '1', 'type': 2, 'title': '昆仑山,横亘西疆,绵延千里,被誉为万山之祖、中华龙脉。雪峰巍峨,冰川如玉,终年银装素裹,在苍穹下静静矗立。', 'content': '测试环境一哈
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '147', 'updater': '哇啦啦的哇', 'createTime': 1773107640496, 'updateTime': 1774598787925, 'deptId': 116, 'userId': 147}, {'id': 4, 'terminal': '1', 'type': 1, 'title': '用户测试协议1111', 'content': '飞机飞机艾佛啊
', 'status': 1, 'lang': 'de', 'rankNum': 0, 'creator': '147', 'updater': '147', 'createTime': 1773056002516, 'updateTime': 1773107141877, 'deptId': 116, 'userId': 147}, {'id': 6, 'terminal': '1', 'type': 1, 'title': '测试数据123', 'content': '124513515
', 'status': 1, 'lang': 'es', 'rankNum': 1, 'creator': '147', 'updater': '147', 'createTime': 1773110599081, 'updateTime': 1773220135616, 'deptId': 116, 'userId': 147}, {'id': 8, 'terminal': '1', 'type': 1, 'title': '测试多个隐私策略', 'content': '狗日饿啊缝纫机
', 'status': 1, 'lang': 'es', 'rankNum': 5, 'creator': '147', 'updater': '147', 'createTime': 1773111389179, 'updateTime': 1773220125716, 'deptId': 116, 'userId': 147}, {'id': 10, 'terminal': '1', 'type': 3, 'title': '鱼人语教学开始', 'content': 'Wralarrrrr!Wawalala!Wurrrrgl!Mmmurlok mmmrrglllm!Wrarararralalla!Wuuuu~Glub-glub… Murloc ok!', 'status': 1, 'lang': 'en', 'rankNum': 11, 'creator': '203', 'updater': '203', 'createTime': 1774598987819, 'updateTime': 1774598987819, 'deptId': 114, 'userId': 203}, {'id': 12, 'terminal': '1', 'type': 5, 'title': '社区指南测试版本', 'content': '多见于平台用户协议、违规提示中,是互联网产品的标准用语。
', 'status': 1, 'lang': 'en', 'rankNum': 123, 'creator': '203', 'updater': '203', 'createTime': 1774835556936, 'updateTime': 1774835556936, 'deptId': 114, 'userId': 203}]}}
+2026-05-06 15:19:10,248 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 测试协议_1778051950, content: 这是测试协议内容_1778051950..., terminal: web, lang: de, rank_num: 950, status: 2
+2026-05-06 15:19:10,249 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:10,380 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 18}
+2026-05-06 15:19:10,396 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 详情测试协议_1778051950, content: 详情测试协议内容_1778051950..., terminal: app, lang: ja, rank_num: 1950, status: 1
+2026-05-06 15:19:10,399 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:10,538 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 19}
+2026-05-06 15:19:10,540 [tid:17864 pid:13156] AgreementManage.py[line:102] INFO 获得协议详情 - agreement_id: 19
+2026-05-06 15:19:10,541 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 获得协议 ===========
+2026-05-06 15:19:10,674 [tid:17864 pid:13156] AgreementManage.py[line:105] INFO 获得协议详情响应: {'code': 0, 'msg': '', 'data': {'id': 19, 'terminal': 'app', 'type': 2, 'title': '详情测试协议_1778051950', 'content': '详情测试协议内容_1778051950', 'status': 1, 'lang': 'ja', 'rankNum': 1950, 'creator': '203', 'updater': '203', 'createTime': 1778051950467, 'updateTime': 1778051950467, 'deptId': 114, 'userId': 203}}
+2026-05-06 15:19:10,710 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待更新协议_1778051950, content: 待更新协议内容_1778051950..., terminal: app, lang: de, rank_num: 2950, status: 1
+2026-05-06 15:19:10,713 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:10,857 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:19:10,873 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待删除协议_1778051950, content: 待删除协议内容_1778051950..., terminal: web, lang: ja, rank_num: 4950, status: 2
+2026-05-06 15:19:10,875 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:11,059 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 20}
+2026-05-06 15:19:11,063 [tid:17864 pid:13156] AgreementManage.py[line:60] INFO 删除协议 - agreement_id: 20
+2026-05-06 15:19:11,065 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 删除协议 ===========
+2026-05-06 15:19:11,203 [tid:17864 pid:13156] AgreementManage.py[line:63] INFO 删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:19:11,208 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 批量删除协议1_1778051951, content: 批量删除协议内容1_1778051951..., terminal: app, lang: de, rank_num: 5951, status: 2
+2026-05-06 15:19:11,208 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:11,344 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 21}
+2026-05-06 15:19:11,348 [tid:17864 pid:13156] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 批量删除协议2_1778051951, content: 批量删除协议内容2_1778051951..., terminal: app, lang: ja, rank_num: 6951, status: 2
+2026-05-06 15:19:11,350 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:11,473 [tid:17864 pid:13156] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 22}
+2026-05-06 15:19:11,475 [tid:17864 pid:13156] AgreementManage.py[line:74] INFO 批量删除协议 - agreement_ids: [21, 22]
+2026-05-06 15:19:11,475 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 批量删除协议 ===========
+2026-05-06 15:19:11,599 [tid:17864 pid:13156] AgreementManage.py[line:77] INFO 批量删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:19:11,606 [tid:17864 pid:13156] AgreementManage.py[line:88] INFO 导出协议Excel - 参数: {'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:19:11,608 [tid:17864 pid:13156] Dlizhan_interface.py[line:45] INFO =========== 导出协议 Excel ===========
+2026-05-06 15:19:11,740 [tid:17864 pid:13156] AgreementManage.py[line:91] INFO 导出协议Excel响应:
+2026-05-06 15:19:51,206 [tid:18004 pid:2008] UserManage.py[line:44] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:19:51,212 [tid:18004 pid:2008] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'C:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:19:51,213 [tid:18004 pid:2008] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:19:52,211 [tid:18004 pid:2008] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:19:52,406 [tid:18004 pid:2008] AgreementManage.py[line:116] INFO 获得协议分页列表 - 参数: {'page_no': 1, 'page_size': 10, 'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:19:52,410 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 获得协议分页 ===========
+2026-05-06 15:19:52,560 [tid:18004 pid:2008] AgreementManage.py[line:119] INFO 获得协议分页列表响应: {'code': 0, 'msg': '', 'data': {'total': 12, 'list': [{'id': 14, 'terminal': '1', 'type': 6, 'title': '透明度报告标题', 'content': '这是正文内容

', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '204', 'updater': '挂辣辣的瓜', 'createTime': 1776068587089, 'updateTime': 1776069119841, 'deptId': 0, 'userId': 204}, {'id': 13, 'terminal': '1', 'type': 1, 'title': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。 林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。 长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。', 'content': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。
林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。
长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。
', 'status': 1, 'lang': 'pl', 'rankNum': 0, 'creator': '203', 'updater': '203', 'createTime': 1775787078899, 'updateTime': 1775787078899, 'deptId': 114, 'userId': 203}, {'id': 11, 'terminal': '1', 'type': 4, 'title': '用户协议', 'content': '不遵守的就猪八
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '203', 'updater': '哇啦啦的哇', 'createTime': 1774599611156, 'updateTime': 1775786859785, 'deptId': 114, 'userId': 203}, {'id': 9, 'terminal': '1', 'type': 1, 'title': '测试协议', 'content': '测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '145', 'updater': 'joyhub', 'createTime': 1774404487857, 'updateTime': 1774404497348, 'deptId': 1, 'userId': 145}, {'id': 5, 'terminal': '1', 'type': 2, 'title': '昆仑山,横亘西疆,绵延千里,被誉为万山之祖、中华龙脉。雪峰巍峨,冰川如玉,终年银装素裹,在苍穹下静静矗立。', 'content': '测试环境一哈
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '147', 'updater': '哇啦啦的哇', 'createTime': 1773107640496, 'updateTime': 1774598787925, 'deptId': 116, 'userId': 147}, {'id': 4, 'terminal': '1', 'type': 1, 'title': '用户测试协议1111', 'content': '飞机飞机艾佛啊
', 'status': 1, 'lang': 'de', 'rankNum': 0, 'creator': '147', 'updater': '147', 'createTime': 1773056002516, 'updateTime': 1773107141877, 'deptId': 116, 'userId': 147}, {'id': 6, 'terminal': '1', 'type': 1, 'title': '测试数据123', 'content': '124513515
', 'status': 1, 'lang': 'es', 'rankNum': 1, 'creator': '147', 'updater': '147', 'createTime': 1773110599081, 'updateTime': 1773220135616, 'deptId': 116, 'userId': 147}, {'id': 8, 'terminal': '1', 'type': 1, 'title': '测试多个隐私策略', 'content': '狗日饿啊缝纫机
', 'status': 1, 'lang': 'es', 'rankNum': 5, 'creator': '147', 'updater': '147', 'createTime': 1773111389179, 'updateTime': 1773220125716, 'deptId': 116, 'userId': 147}, {'id': 10, 'terminal': '1', 'type': 3, 'title': '鱼人语教学开始', 'content': 'Wralarrrrr!Wawalala!Wurrrrgl!Mmmurlok mmmrrglllm!Wrarararralalla!Wuuuu~Glub-glub… Murloc ok!', 'status': 1, 'lang': 'en', 'rankNum': 11, 'creator': '203', 'updater': '203', 'createTime': 1774598987819, 'updateTime': 1774598987819, 'deptId': 114, 'userId': 203}, {'id': 12, 'terminal': '1', 'type': 5, 'title': '社区指南测试版本', 'content': '多见于平台用户协议、违规提示中,是互联网产品的标准用语。
', 'status': 1, 'lang': 'en', 'rankNum': 123, 'creator': '203', 'updater': '203', 'createTime': 1774835556936, 'updateTime': 1774835556936, 'deptId': 114, 'userId': 203}]}}
+2026-05-06 15:19:52,570 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 测试协议_1778051992, content: 这是测试协议内容_1778051992..., terminal: web, lang: de, rank_num: 992, status: 2
+2026-05-06 15:19:52,571 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:52,717 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 23}
+2026-05-06 15:19:52,726 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 详情测试协议_1778051992, content: 详情测试协议内容_1778051992..., terminal: app, lang: ja, rank_num: 1992, status: 1
+2026-05-06 15:19:52,727 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:52,873 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:19:52,889 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待更新协议_1778051992, content: 待更新协议内容_1778051992..., terminal: app, lang: de, rank_num: 2992, status: 1
+2026-05-06 15:19:52,892 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:53,053 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:19:53,064 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待删除协议_1778051993, content: 待删除协议内容_1778051993..., terminal: web, lang: ja, rank_num: 4993, status: 2
+2026-05-06 15:19:53,065 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:53,225 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 24}
+2026-05-06 15:19:53,229 [tid:18004 pid:2008] AgreementManage.py[line:60] INFO 删除协议 - agreement_id: 24
+2026-05-06 15:19:53,230 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 删除协议 ===========
+2026-05-06 15:19:53,376 [tid:18004 pid:2008] AgreementManage.py[line:63] INFO 删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:19:53,385 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 批量删除协议1_1778051993, content: 批量删除协议内容1_1778051993..., terminal: app, lang: de, rank_num: 5993, status: 2
+2026-05-06 15:19:53,386 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:53,536 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 25}
+2026-05-06 15:19:53,539 [tid:18004 pid:2008] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 批量删除协议2_1778051993, content: 批量删除协议内容2_1778051993..., terminal: app, lang: ja, rank_num: 6993, status: 2
+2026-05-06 15:19:53,540 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:19:53,676 [tid:18004 pid:2008] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 26}
+2026-05-06 15:19:53,679 [tid:18004 pid:2008] AgreementManage.py[line:74] INFO 批量删除协议 - agreement_ids: [25, 26]
+2026-05-06 15:19:53,680 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 批量删除协议 ===========
+2026-05-06 15:19:53,822 [tid:18004 pid:2008] AgreementManage.py[line:77] INFO 批量删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:19:53,850 [tid:18004 pid:2008] AgreementManage.py[line:88] INFO 导出协议Excel - 参数: {'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:19:53,852 [tid:18004 pid:2008] Dlizhan_interface.py[line:45] INFO =========== 导出协议 Excel ===========
+2026-05-06 15:19:54,018 [tid:18004 pid:2008] AgreementManage.py[line:91] INFO 导出协议Excel响应:
+2026-05-06 15:49:56,500 [tid:32644 pid:18880] UserManage.py[line:44] INFO 尝试读取配置文件: c:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:49:56,509 [tid:32644 pid:18880] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'c:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:49:56,510 [tid:32644 pid:18880] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:49:56,565 [tid:32644 pid:18880] RoleManage.py[line:41] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\test_case\Resource\AdapterKws\hh-qa.robot
+2026-05-06 15:49:56,567 [tid:32644 pid:18880] RoleManage.py[line:48] INFO 匹配到变量 joyhub_login_token = #
+2026-05-06 15:49:56,567 [tid:32644 pid:18880] RoleManage.py[line:34] INFO 从配置文件读取JoyHub Token成功: #
+2026-05-06 15:51:08,800 [tid:8016 pid:3984] UserManage.py[line:44] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:51:08,803 [tid:8016 pid:3984] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'C:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:51:08,804 [tid:8016 pid:3984] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:51:09,508 [tid:8016 pid:3984] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:51:09,798 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 获得Banner管理分页 ===========
+2026-05-06 15:51:09,950 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:10,093 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:10,232 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 获得Banner管理详情 ===========
+2026-05-06 15:51:10,419 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:10,607 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 更新Banner管理 ===========
+2026-05-06 15:51:10,795 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:10,987 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 删除Banner管理 ===========
+2026-05-06 15:51:11,177 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:11,387 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:51:11,563 [tid:8016 pid:3984] Dlizhan_interface.py[line:45] INFO =========== 批量删除Banner管理 ===========
+2026-05-06 15:56:47,655 [tid:3856 pid:23924] UserManage.py[line:44] INFO 尝试读取配置文件: c:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:56:47,658 [tid:3856 pid:23924] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'c:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:56:47,658 [tid:3856 pid:23924] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:56:47,713 [tid:3856 pid:23924] RoleManage.py[line:41] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\test_case\Resource\AdapterKws\hh-qa.robot
+2026-05-06 15:56:47,713 [tid:3856 pid:23924] RoleManage.py[line:48] INFO 匹配到变量 joyhub_login_token = #
+2026-05-06 15:56:47,714 [tid:3856 pid:23924] RoleManage.py[line:34] INFO 从配置文件读取JoyHub Token成功: #
+2026-05-06 15:57:26,392 [tid:14496 pid:26092] UserManage.py[line:44] INFO 尝试读取配置文件: c:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\library\BusinessKw\JoyHub\../../../../test_case/Resource/AdapterKws/hh-qa.robot
+2026-05-06 15:57:26,395 [tid:14496 pid:26092] UserManage.py[line:57] ERROR 读取robot配置文件失败: [Errno 2] No such file or directory: 'c:\\Users\\a\\PyCharmMiscProject\\smart-management-auto-test\\dulizhan\\library\\BusinessKw\\JoyHub\\../../../../test_case/Resource/AdapterKws/hh-qa.robot'
+2026-05-06 15:57:26,395 [tid:14496 pid:26092] UserManage.py[line:37] WARNING 未从配置文件读取到JoyHub Token
+2026-05-06 15:57:26,432 [tid:14496 pid:26092] RoleManage.py[line:41] INFO 尝试读取配置文件: C:\Users\a\PyCharmMiscProject\smart-management-auto-test\dulizhan\test_case\Resource\AdapterKws\hh-qa.robot
+2026-05-06 15:57:26,433 [tid:14496 pid:26092] RoleManage.py[line:48] INFO 匹配到变量 joyhub_login_token = #
+2026-05-06 15:57:26,433 [tid:14496 pid:26092] RoleManage.py[line:34] INFO 从配置文件读取JoyHub Token成功: #
+2026-05-06 15:57:27,017 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:27,234 [tid:14496 pid:26092] AgreementManage.py[line:116] INFO 获得协议分页列表 - 参数: {'page_no': 1, 'page_size': 10, 'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:57:27,235 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得协议分页 ===========
+2026-05-06 15:57:27,366 [tid:14496 pid:26092] AgreementManage.py[line:119] INFO 获得协议分页列表响应: {'code': 0, 'msg': '', 'data': {'total': 13, 'list': [{'id': 14, 'terminal': '1', 'type': 6, 'title': '透明度报告标题', 'content': '这是正文内容

', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '204', 'updater': '挂辣辣的瓜', 'createTime': 1776068587089, 'updateTime': 1776069119841, 'deptId': 0, 'userId': 204}, {'id': 13, 'terminal': '1', 'type': 1, 'title': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。 林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。 长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。', 'content': '孤悬于远东寒海之间,库页岛如沉睡巨鲸,静卧在鄂霍次克海与鞑靼海峡的碧波里。千里山脉纵贯全境,东西双峰衔云而立,六千溪流蜿蜒成练,千座湖泊散落如星,浸染着寒地的清冽与辽阔。
林海是岛屿永恒的底色,苍劲的落叶松与冷杉铺展万顷浓绿,春日新芽破霜,秋日层林染金,连荒野草木都生得蓬勃伟岸。林间棕熊缓步,紫貂潜行,驯鹿踏过湿地苔原;海岸边灰鲸逐浪,海鸟翩飞,鲑鱼洄游奔赴星河,原生态的生灵百态,绘就北国最壮阔的自然长卷。
长风掠过雪原,林海低语潮汐,每一寸土地都藏着山海深情,每一缕风都载着岁月悠长。
', 'status': 1, 'lang': 'pl', 'rankNum': 0, 'creator': '203', 'updater': '203', 'createTime': 1775787078899, 'updateTime': 1775787078899, 'deptId': 114, 'userId': 203}, {'id': 11, 'terminal': '1', 'type': 4, 'title': '用户协议', 'content': '不遵守的就猪八
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '203', 'updater': '哇啦啦的哇', 'createTime': 1774599611156, 'updateTime': 1775786859785, 'deptId': 114, 'userId': 203}, {'id': 9, 'terminal': '1', 'type': 1, 'title': '测试协议', 'content': '测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议测试协议
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '145', 'updater': 'joyhub', 'createTime': 1774404487857, 'updateTime': 1774404497348, 'deptId': 1, 'userId': 145}, {'id': 5, 'terminal': '1', 'type': 2, 'title': '昆仑山,横亘西疆,绵延千里,被誉为万山之祖、中华龙脉。雪峰巍峨,冰川如玉,终年银装素裹,在苍穹下静静矗立。', 'content': '测试环境一哈
', 'status': 1, 'lang': 'en', 'rankNum': 0, 'creator': '147', 'updater': '哇啦啦的哇', 'createTime': 1773107640496, 'updateTime': 1774598787925, 'deptId': 116, 'userId': 147}, {'id': 4, 'terminal': '1', 'type': 1, 'title': '用户测试协议1111', 'content': '飞机飞机艾佛啊
', 'status': 1, 'lang': 'de', 'rankNum': 0, 'creator': '147', 'updater': '147', 'createTime': 1773056002516, 'updateTime': 1773107141877, 'deptId': 116, 'userId': 147}, {'id': 6, 'terminal': '1', 'type': 1, 'title': '测试数据123', 'content': '124513515
', 'status': 1, 'lang': 'es', 'rankNum': 1, 'creator': '147', 'updater': '147', 'createTime': 1773110599081, 'updateTime': 1773220135616, 'deptId': 116, 'userId': 147}, {'id': 8, 'terminal': '1', 'type': 1, 'title': '测试多个隐私策略', 'content': '狗日饿啊缝纫机
', 'status': 1, 'lang': 'es', 'rankNum': 5, 'creator': '147', 'updater': '147', 'createTime': 1773111389179, 'updateTime': 1773220125716, 'deptId': 116, 'userId': 147}, {'id': 10, 'terminal': '1', 'type': 3, 'title': '鱼人语教学开始', 'content': 'Wralarrrrr!Wawalala!Wurrrrgl!Mmmurlok mmmrrglllm!Wrarararralalla!Wuuuu~Glub-glub… Murloc ok!', 'status': 1, 'lang': 'en', 'rankNum': 11, 'creator': '203', 'updater': '203', 'createTime': 1774598987819, 'updateTime': 1774598987819, 'deptId': 114, 'userId': 203}, {'id': 12, 'terminal': '1', 'type': 5, 'title': '社区指南测试版本', 'content': '多见于平台用户协议、违规提示中,是互联网产品的标准用语。
', 'status': 1, 'lang': 'en', 'rankNum': 123, 'creator': '203', 'updater': '203', 'createTime': 1774835556936, 'updateTime': 1774835556936, 'deptId': 114, 'userId': 203}]}}
+2026-05-06 15:57:27,373 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 测试协议_1778054247, content: 这是测试协议内容_1778054247..., terminal: web, lang: de, rank_num: 247, status: 2
+2026-05-06 15:57:27,373 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:27,499 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 27}
+2026-05-06 15:57:27,509 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 详情测试协议_1778054247, content: 详情测试协议内容_1778054247..., terminal: app, lang: ja, rank_num: 1247, status: 1
+2026-05-06 15:57:27,510 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:27,643 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:57:27,652 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待更新协议_1778054247, content: 待更新协议内容_1778054247..., terminal: app, lang: de, rank_num: 2247, status: 1
+2026-05-06 15:57:27,652 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:27,777 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 120146, 'msg': 'An enabled agreement with the same language and type already exists', 'data': None}
+2026-05-06 15:57:27,785 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 待删除协议_1778054247, content: 待删除协议内容_1778054247..., terminal: web, lang: ja, rank_num: 4247, status: 2
+2026-05-06 15:57:27,785 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:27,934 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 28}
+2026-05-06 15:57:27,935 [tid:14496 pid:26092] AgreementManage.py[line:60] INFO 删除协议 - agreement_id: 28
+2026-05-06 15:57:27,935 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除协议 ===========
+2026-05-06 15:57:28,067 [tid:14496 pid:26092] AgreementManage.py[line:63] INFO 删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:57:28,076 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 2, title: 批量删除协议1_1778054248, content: 批量删除协议内容1_1778054248..., terminal: app, lang: de, rank_num: 5248, status: 2
+2026-05-06 15:57:28,077 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:28,220 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 29}
+2026-05-06 15:57:28,221 [tid:14496 pid:26092] AgreementManage.py[line:35] INFO 创建协议 - type: 1, title: 批量删除协议2_1778054248, content: 批量删除协议内容2_1778054248..., terminal: app, lang: ja, rank_num: 6248, status: 2
+2026-05-06 15:57:28,222 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建协议 ===========
+2026-05-06 15:57:28,345 [tid:14496 pid:26092] AgreementManage.py[line:49] INFO 创建协议响应: {'code': 0, 'msg': '', 'data': 30}
+2026-05-06 15:57:28,348 [tid:14496 pid:26092] AgreementManage.py[line:74] INFO 批量删除协议 - agreement_ids: [29, 30]
+2026-05-06 15:57:28,349 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除协议 ===========
+2026-05-06 15:57:28,489 [tid:14496 pid:26092] AgreementManage.py[line:77] INFO 批量删除协议响应: {'code': 0, 'msg': '', 'data': True}
+2026-05-06 15:57:28,501 [tid:14496 pid:26092] AgreementManage.py[line:88] INFO 导出协议Excel - 参数: {'type': '', 'title': '', 'content': '', 'status': ''}
+2026-05-06 15:57:28,502 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 导出协议 Excel ===========
+2026-05-06 15:57:28,650 [tid:14496 pid:26092] AgreementManage.py[line:91] INFO 导出协议Excel响应:
+2026-05-06 15:57:28,792 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:28,970 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得app版本号管理分页 ===========
+2026-05-06 15:57:29,117 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:29,260 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:29,399 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得app版本号管理 ===========
+2026-05-06 15:57:29,545 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:29,687 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 更新app版本号管理 ===========
+2026-05-06 15:57:29,830 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:29,975 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除app版本号管理 ===========
+2026-05-06 15:57:30,116 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:30,250 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建app版本号管理 ===========
+2026-05-06 15:57:30,417 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除app版本号管理 ===========
+2026-05-06 15:57:30,559 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得导入app版本号管理模板 ===========
+2026-05-06 15:57:30,715 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 导出app版本号管理 Excel ===========
+2026-05-06 15:57:30,988 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:31,178 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得Banner管理分页 ===========
+2026-05-06 15:57:31,330 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:31,475 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:31,613 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得Banner管理详情 ===========
+2026-05-06 15:57:31,760 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:31,910 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 更新Banner管理 ===========
+2026-05-06 15:57:32,045 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:32,181 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除Banner管理 ===========
+2026-05-06 15:57:32,333 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:32,461 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建Banner管理 ===========
+2026-05-06 15:57:32,619 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除Banner管理 ===========
+2026-05-06 15:57:32,865 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:33,034 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取部门列表 ===========
+2026-05-06 15:57:33,176 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建部门 ===========
+2026-05-06 15:57:33,322 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得部门信息 ===========
+2026-05-06 15:57:33,508 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 更新部门 ===========
+2026-05-06 15:57:33,671 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建部门 ===========
+2026-05-06 15:57:33,838 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除部门 ===========
+2026-05-06 15:57:34,021 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建部门 ===========
+2026-05-06 15:57:34,167 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建部门 ===========
+2026-05-06 15:57:34,303 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除部门 ===========
+2026-05-06 15:57:34,439 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取部门精简信息列表 ===========
+2026-05-06 15:57:34,569 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取部门精简信息列表 ===========
+2026-05-06 15:57:34,846 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:35,179 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得岗位分页列表 ===========
+2026-05-06 15:57:35,341 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建岗位 ===========
+2026-05-06 15:57:35,518 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得岗位信息 ===========
+2026-05-06 15:57:35,689 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建岗位 ===========
+2026-05-06 15:57:35,862 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改岗位 ===========
+2026-05-06 15:57:36,027 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建岗位 ===========
+2026-05-06 15:57:36,168 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除岗位 ===========
+2026-05-06 15:57:36,341 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建岗位 ===========
+2026-05-06 15:57:36,483 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建岗位 ===========
+2026-05-06 15:57:36,624 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除岗位 ===========
+2026-05-06 15:57:36,761 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取岗位全列表 ===========
+2026-05-06 15:57:36,917 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取岗位精简列表 ===========
+2026-05-06 15:57:37,259 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得角色分页 ===========
+2026-05-06 15:57:37,412 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:37,568 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:37,716 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得角色信息 ===========
+2026-05-06 15:57:37,891 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:38,026 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改角色 ===========
+2026-05-06 15:57:38,196 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:38,344 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除角色 ===========
+2026-05-06 15:57:38,489 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:38,624 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建角色 ===========
+2026-05-06 15:57:38,762 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除角色 ===========
+2026-05-06 15:57:38,910 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取角色精简信息列表 ===========
+2026-05-06 15:57:39,047 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取角色精简信息列表 ===========
+2026-05-06 15:57:39,291 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:39,586 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得运费模板分页 ===========
+2026-05-06 15:57:39,730 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建运费模板信息 ===========
+2026-05-06 15:57:39,864 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得运费模板详情 ===========
+2026-05-06 15:57:39,997 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 保存运费模板信息(含规则与子表) ===========
+2026-05-06 15:57:40,145 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建运费模板信息 ===========
+2026-05-06 15:57:40,268 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 更新运费模板信息 ===========
+2026-05-06 15:57:40,409 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建运费模板信息 ===========
+2026-05-06 15:57:40,528 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 更新运费模板信息 ===========
+2026-05-06 15:57:40,658 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除运费模板信息 ===========
+2026-05-06 15:57:40,801 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建运费模板信息 ===========
+2026-05-06 15:57:40,930 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建运费模板信息 ===========
+2026-05-06 15:57:41,069 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除运费模板信息 ===========
+2026-05-06 15:57:41,343 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:41,692 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得用户分页列表 ===========
+2026-05-06 15:57:41,855 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获取用户精简信息列表 ===========
+2026-05-06 15:57:42,002 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:42,154 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:42,297 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得用户详情 ===========
+2026-05-06 15:57:42,458 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:42,585 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户 ===========
+2026-05-06 15:57:42,735 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:42,899 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 重置用户密码 ===========
+2026-05-06 15:57:43,041 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:43,178 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户状态 ===========
+2026-05-06 15:57:43,338 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:43,470 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 删除用户 ===========
+2026-05-06 15:57:43,635 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:43,759 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 创建用户 ===========
+2026-05-06 15:57:43,891 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 批量删除用户 ===========
+2026-05-06 15:57:44,158 [tid:14496 pid:26092] Dlizhan_interface.py[line:71] INFO 清除用户 joytest 的指纹锁,影响行数: 1
+2026-05-06 15:57:44,292 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得登录用户信息 ===========
+2026-05-06 15:57:44,445 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 获得登录用户信息 ===========
+2026-05-06 15:57:44,584 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户个人信息 ===========
+2026-05-06 15:57:44,724 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户个人信息 ===========
+2026-05-06 15:57:44,874 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户个人密码 ===========
+2026-05-06 15:57:45,158 [tid:14496 pid:26092] Dlizhan_interface.py[line:45] INFO =========== 修改用户个人密码 ===========
diff --git a/dulizhan/test_case/TestCase/接口/SZPurchase/ContractManage.py b/dulizhan/test_case/TestCase/接口/SZPurchase/ContractManage.py
deleted file mode 100644
index e69de29..0000000
diff --git a/dulizhan/test_case/TestCase/接口/SZPurchase/PurchaseOrderManage.py b/dulizhan/test_case/TestCase/接口/SZPurchase/PurchaseOrderManage.py
deleted file mode 100644
index ebe8fb4..0000000
--- a/dulizhan/test_case/TestCase/接口/SZPurchase/PurchaseOrderManage.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import allure
-import logging
-
-from zhyy.library.BusinessKw.SZPurchase.PurchaseOrderManage import PurchaseOrder
-
-
-@allure.feature('深圳采购工作台采购订单页面')
-class Test_purchase_order(object):
- test_case = PurchaseOrder()
-
- def teardown_method(self):
- logging.info("-----------------------------End-------------------------------")
-
- @allure.story("验证采购工作台采购订单页面列表查询")
- def test_check_purchase_order_page(self):
- purchase_order_code = 'PO251209048' # 采购单号 必填
- supplier_company_ids = ['334'] # 供应商id 非必填
- payment_status = '0' # 付款状态 非必填
- status = '0' # 采购单状态 非必填
- page_no = 1 # 页码 必填
- page_size = 10 # 每页条数 必填
- response_data = self.test_case.kw_zhyy_get_purchase_page_post(
- note="采购工作台采购订单页面列表查询",
- user='purchase',
- order_sn=purchase_order_code,
- supplier_company_ids=supplier_company_ids,
- payment_status=payment_status,
- status=status,
- page_no=page_no,
- page_size=page_size
- )
-
- # 断言检查
- assert response_data is not None, "响应数据不能为空"
- assert 'code' in response_data, "响应数据中缺少code字段"
- assert response_data['code'] == 0, "接口调用失败,code: {}, msg: {}".format(
- response_data.get('code'), response_data.get('msg', '未知错误'))
- assert 'data' in response_data, "响应数据中缺少data字段"
- assert response_data['data'] is not None, "响应数据中的data字段不能为空"
-
- # 如果传入了采购单号,检查返回的数据中是否包含该采购单号
- if purchase_order_code:
- data = response_data.get('data', {})
- order_found = False
-
- # 检查返回的数据结构,可能包含列表或其他结构
- if isinstance(data, dict):
- # 如果data是字典,可能包含records、list、data等字段
- records = data.get('records') or data.get('list') or data.get('data') or []
- if isinstance(records, list) and len(records) > 0:
- # 检查列表中是否包含指定的采购单号
- for item in records:
- if isinstance(item, dict):
- order_sn = item.get('order_sn') or item.get('orderSn') or item.get('orderSn')
- if order_sn == purchase_order_code:
- order_found = True
- break
- elif isinstance(data, list):
- # 如果data本身就是列表
- for item in data:
- if isinstance(item, dict):
- order_sn = item.get('order_sn') or item.get('orderSn') or item.get('orderSn')
- if order_sn == purchase_order_code:
- order_found = True
- break
-
- if order_found:
- logging.info("✓ 断言通过:返回的数据中包含采购单号 {}".format(purchase_order_code))
- else:
- logging.warning("⚠ 警告:返回的数据中未找到采购单号: {},但接口调用成功".format(purchase_order_code))
-
- logging.info("✓ 所有断言检查通过")
- print("✓ 查询成功,响应数据: {}".format(response_data))
\ No newline at end of file
diff --git a/dulizhan/test_case/TestCase/接口/SZPurchase/PurchasePlanManage.py b/dulizhan/test_case/TestCase/接口/SZPurchase/PurchasePlanManage.py
deleted file mode 100644
index e69de29..0000000
diff --git a/dulizhan/test_case/TestCase/接口/SZPurchase/__init__.py b/dulizhan/test_case/TestCase/接口/SZPurchase/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/dulizhan/test_case/TestCase/接口/SZPurchase/index.py b/dulizhan/test_case/TestCase/接口/SZPurchase/index.py
deleted file mode 100644
index 4db87c8..0000000
--- a/dulizhan/test_case/TestCase/接口/SZPurchase/index.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import allure
-import logging
-
-from zhyy.library.BusinessKw.SZPurchase.index import PurchaseIndex
-
-
-@allure.feature('深圳采购工作台首页')
-class Test_purchase_index(object):
- # config = ReadConfig.ReadConfig() # 调用读取配置文件的方法类
- test_case = PurchaseIndex()
-
- def teardown_method(self):
- logging.info("-----------------------------End-------------------------------")
-
- @allure.story("验证采购工作台待办任务与在办任务功能")
- def test_check_todo(self):
- get_purchase_data = self.test_case.kw_zhyy_get_todo(note="采购工作台首页待办任务PO与在办任务PO", user='purchase')
diff --git a/dulizhan/test_case/run_tests.py b/dulizhan/test_case/run_tests.py
index d1e9a8d..9cd9de0 100644
--- a/dulizhan/test_case/run_tests.py
+++ b/dulizhan/test_case/run_tests.py
@@ -46,8 +46,8 @@ def run_pytest(args_list):
if is_jenkins and 'WORKSPACE' in env:
# Jenkins环境下使用绝对路径
global ALLURE_RESULTS_DIR, ALLURE_REPORT_DIR
- ALLURE_RESULTS_DIR = os.path.join(env['WORKSPACE'], 'zhyy', 'test_case', 'reports', 'allure-results')
- ALLURE_REPORT_DIR = os.path.join(env['WORKSPACE'], 'zhyy', 'test_case', 'reports', 'allure-report')
+ ALLURE_RESULTS_DIR = os.path.join(env['WORKSPACE'], 'dulizhan', 'test_case', 'reports', 'allure-results')
+ ALLURE_REPORT_DIR = os.path.join(env['WORKSPACE'], 'dulizhan', 'test_case', 'reports', 'allure-report')
ensure_dirs()
cmd = ['python', '-m', 'pytest'] + args_list
diff --git a/zhyy/__init__.py b/zhyy/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/zhyy/library/BusinessKw/SZPurchase/ContractManage.py b/zhyy/library/BusinessKw/SZPurchase/ContractManage.py
deleted file mode 100644
index e69de29..0000000
diff --git a/zhyy/library/BusinessKw/SZPurchase/PurchaseOrderManage.py b/zhyy/library/BusinessKw/SZPurchase/PurchaseOrderManage.py
deleted file mode 100644
index 868f3a7..0000000
--- a/zhyy/library/BusinessKw/SZPurchase/PurchaseOrderManage.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# -*- coding:utf-8 -*-
-"""
-Author: qiaoxinjiu
-Email: qiaoxinjiu@sparkedu.com
-Create Date: 2026/01/22 5:58 下午
-"""
-import logging
-import os
-import sys
-
-# 添加项目根目录到 Python 路径,以便导入 base_framework 模块
-current_file_path = os.path.abspath(__file__)
-project_root = os.path.abspath(os.path.join(os.path.dirname(current_file_path), '../../../../'))
-if project_root not in sys.path:
- sys.path.insert(0, project_root)
-
-from base_framework.public_tools import log
-from base_framework.public_tools.my_faker import MyFaker
-from base_framework.public_tools.runner import Runner
-from base_framework.public_tools.pgsqlhelper import PgSqlHelper
-from base_framework.public_tools import read_config
-from base_framework.public_tools import utils
-from base_framework.public_tools import mg_keyword
-from zhyy.library.ZZYY_interface import ZhyyInterface
-
-obj_get_log = log.get_logger()
-obj_my_faker = MyFaker()
-obj_runner = Runner()
-obj_pgsql_helper = PgSqlHelper()
-obj_get_way = utils.Tools()
-obj_mg_keyword = mg_keyword.ManageKeyWord()
-
-
-class PurchaseOrder(ZhyyInterface):
- def __init__(self):
- '''
- 这个是针对于读取配置文件的初始化函数,用于读取默认参数
- '''
- super().__init__()
- self.config_index_path = os.path.dirname(os.path.abspath(__file__))
- self.config_index_filePath = os.path.join(self.config_index_path, "purchase.ini")
- self.config_index_content = read_config.ReadConfig(filename=self.config_index_filePath)
-
- def kw_zhyy_get_purchase_page_post(self, note, user, **kwargs):
- """
- | 功能说明: | 返回采购工作台采购单列表数据 |
- | 输入参数: | note | 注释 |
- |user | 用户信息,传入 'purchase' 默认读取配置文件里面 'purchase' 对应的默认账号信息|
- |supplier_company_ids | 供应商id | 非必填
- |payment_status | 付款状态 | 非必填
- |status | 采购单状态 | 非必填
- |order_sn | 采购单号 | 非必填
- |page_no | 页码 | 必填
- |page_size | 每页条数 | 必填
- | 返回参数: | {"success":true,"message":"success","code":200,"data":
- {'todoTask':['PO260116003','PO260115010'],'inProcessTask':['PO260116003','PO260115010']}} | |
- | 作者信息: | 谯新久 | 修改时间 | 2022-8-20 |
- """
- logging.info("==========={0}===========".format(note))
- # 获取所有参数
- supplier_company_ids = kwargs.get("supplier_company_ids")
- payment_status = kwargs.get("payment_status")
- status = kwargs.get("status")
- order_sn = kwargs.get("order_sn")
- page_no = kwargs.get("page_no")
- page_size = kwargs.get("page_size")
-
- # 检查必填参数
- if not page_no or not page_size:
- raise Exception("页码和每页条数不能为空")
-
- # 组装参数字典,只包含非空字段,参数名使用 pageNo 和 pageSize
- request_params = {
- "pageNo": page_no,
- "pageSize": page_size
- }
-
- # 如果字段不为空,才添加到参数字典中
- if supplier_company_ids is not None and supplier_company_ids != "":
- request_params["supplier_company_ids"] = supplier_company_ids
- if payment_status is not None and payment_status != "":
- request_params["payment_status"] = payment_status
- if status is not None and status != "":
- request_params["status"] = status
- if order_sn is not None and order_sn != "":
- request_params["order_sn"] = order_sn
-
- # 使用 ** 方式解包字典传递参数
- get_todo_info = self.kw_in_zhyy_purchase_order_page_post(user=user, **request_params)
- print(get_todo_info if get_todo_info else "查询失败")
- return get_todo_info
-
-
-if __name__ == '__main__':
- test = PurchaseOrder()
- a = test.kw_zhyy_get_purchase_page_post(user='purchase', note="测试", page_no=1, page_size=10)
- print(a)
diff --git a/zhyy/library/BusinessKw/SZPurchase/PurchasePlanManage.py b/zhyy/library/BusinessKw/SZPurchase/PurchasePlanManage.py
deleted file mode 100644
index e69de29..0000000
diff --git a/zhyy/library/BusinessKw/SZPurchase/__init__.py b/zhyy/library/BusinessKw/SZPurchase/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/zhyy/library/BusinessKw/SZPurchase/__pycache__/PurchaseOrderManage.cpython-38.pyc b/zhyy/library/BusinessKw/SZPurchase/__pycache__/PurchaseOrderManage.cpython-38.pyc
deleted file mode 100644
index e0eafa84504e1665e82e766bea600975b2adec96..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3594
zcmb7H-E-T<5eGn!1R+u%w(Qz<;xM#hRWlMztFaCHd0jAhg=ejx
z2&@e$AtdC)au`J_yb^8kR3kAyhN2Z-4^;%{m641>IWZr_Kc#KCOXrbX5qLVXXvPZ(
zCBgWx*w;??^pU69|L}avVrk3@EetljPEkPR@kI$
z;yIKkZ?164*HO<5r))ueKwm)Xfxd_~l($09OK4*`3GK_@=k&OqIKk-&v}q=!q|i3K
zJ1_i#$0?Ko`|W6Z?iIa9@74SCb^7`_QQ3h8(2f}%<`WKbgZu{t-LEFA
zch3ZKr{o3<&F!Cxr_(z-e}g;;nf3%U(YH%)X?cW!jlAnw7UQ}OOdOmve}K$lQ-oP`
zHEUbr26YL0u3$Lj+9D2v|NP8wJgfgSyw-ymf&m$262D~P7!9g
zafXW%k`mHGx_E+9#92<{lrXGHm?RE(ID15M&^uU1I17O4Jd_W^ONVvd0^)KrT$!(M
zJm(6zP+4R&>;k+hyw9moCQCk-i|Twu08Px5b6p_EbYYHK#PtwNDta_>IoW#ZPkvRs
z``g;(#m2{{g2j8)`{(M54}$rNjgxcBj}~edXR8lxFMo0(ICU-f&6(ir#bEYP?ZU0E
z9-du3e`Ce?!R7kG7s32T(A61vDqd`TT-vYwTzsX30S-sJu{rjL$ILDI*Zf`;AUf@WzGr~nSb
zn&;ZXE^^#vziAxC8ZM1}*K-UDInKVLV+WOXZpYdTOY+-nkaV$x6A;@rcpV7{C(8Ur
zejPuxagBAly*}ACyr^v)UW$!<@H&47;sP>szAX5Fg$issKU5CsaI{Q|j0*u5W}FCI
zgmGcuqKpFsO-qb}BWXJ3OZboE$G9b=W^k3IB0yq;C=a$aE_nu
zawC2huKHb;peN{Y;&%atyS*#0937-lDErCa^k?;%NA<;}+U0X!J^TbT$@-J?!Ie)N
zv$OT3KLmHKS07ys=5MvcxeLLmOZCbPfNX7UA?ZIgTK(}agOk^rkZz7<*>Di~$=aW8
zG-gjfWltk$KfdQ642G~lYNzg0pHyleF2a7PJ}kq4$$|E!7)UnQuKCaH)|frpxb}H+
zwJGe(;Qo2ohb^C_UkCH8q1Oi94uZBmY_XzgAPgs4p{Q9U)zBRXtory03>IAYxuJv9
zxb|uAS7NKr3%19EUD2>$51M3>!29PWQJ0@=4z?YHHkPr;M%%rktSY<)J{B!wvtFwFUWT);nbF|mv$a)8s@|Q0!=QTi{_@THgMt#FF8ggF
z(e@yC?k5}(=|=VFSz7z-dVTTp;EO-jm#z;+NfauF3B#HoqG65OBr?!8}ByhX{U!vXT5z4No}u
zMG){-N?xKQNeTTdoC2bBV>Ic(H3L^2)(Q?uKnyAc1k4O!ZJ~yYyZ{{83K6kzs8uJV
zPB24YmqdXV{uPPz@)E!54fTUGHMI6hdiErP5qe$I`x~xnSycQ@$7#`u>8(#v&oafVrp0t+$iTAlOL;c4
z+MJq%579MP@jt4SNTOL3?L(#aVE>SAHe9FlX3568XapiHxtg%yHB9lm3NI`BK-$|x
o-M8sVJKq8#h5_Te6pHg(0r%ZPoL}=3BtF7^)TVc@4E#F&->!3>@Bjb+
diff --git a/zhyy/library/BusinessKw/SZPurchase/__pycache__/__init__.cpython-38.pyc b/zhyy/library/BusinessKw/SZPurchase/__pycache__/__init__.cpython-38.pyc
deleted file mode 100644
index 56ce41da931e1f40b27af505e42b74db69f8130a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 145
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
diff --git a/zhyy/library/CommonFun/__pycache__/contract_pair_check.cpython-38.pyc b/zhyy/library/CommonFun/__pycache__/contract_pair_check.cpython-38.pyc
deleted file mode 100644
index b28df69c117f29bf372f7afb86abde3409e5390f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 8950
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
diff --git a/zhyy/library/CommonFun/__pycache__/course_package_common.cpython-38.pyc b/zhyy/library/CommonFun/__pycache__/course_package_common.cpython-38.pyc
deleted file mode 100644
index 8557aad0b955bd615a47d4a2c6296f2874621ced..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1323
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
diff --git a/zhyy/library/CommonFun/__pycache__/handle_aita.cpython-38.pyc b/zhyy/library/CommonFun/__pycache__/handle_aita.cpython-38.pyc
deleted file mode 100644
index 4839ff131d8e8461a28f76b26a9125612c552bab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3934
zcmZu!TW=f36`q-$T`rdtCCjdZI&R9kg%hF`UH1mZO;RVZovL*i!^Jy9?nZh;bINNk#cb9Ha82N)*NKvqt$f?q#ip$mQMj
zySH-pZaRpPE)kDE4kkCyvL?ES5o>J`If@_f4W}*JZrf8rIfu+%FO_@94tTq)JX}%A
zy)W-S*c(Kz=__51ZuZca+UIB)sX{Rv;H_8e70+cB#ar3~)pl>zZeHIQZfdph@Uwe2
zH{#x=?&!UZ&(nTCO>Pg9jqOgN;wbF&Os6^6%l$CyB|Q^{75cb9$M|Tu;G{WQJ0U3T
zp=P=H1Oo*zW46!6Y{HM&J|FXmID$=}-Al&Vk@wk@;(+oSP~7_rJ%qM$$d)GI^3tnk
zaP2NmjNSQ(+U$h#Xm8=lqmP67^wGnl-i7nQ>*lm>Uxk^`^b+rNdj05@)~U{eY`8hlX*bF;P5RelOe8>YGnW46)^p7oB
zM;(<{$T3v(buz^L6%vjF>6obDX##FunhKb^U?&{t_lU>`Iq#lAL|%box+FI%+e-=4;quU7hh2gq}c*s#dz`@>~8#%C-JLl8t=A_9J8h$&AW2y!h?@EtOgJgD*!R{^*nZtyua4Pt&i(l
zC`Bkj0|kr8o%Q<DI5mrvys5}Mew2G%z)dZ0f>KdP;*t<5|b!_k@f-1;$QuPGhrPpSKi
zPL$xoKgEL@(k43;0-YyOwy?f6yQZM1Z=yr#h1?9|$5AxUw}?z3V3u0lZi?)!*NHy2
zYXObZhNK)>+}6kLjM6JZ+$c)jRcq1!rVK!lTnafe-QwH{(@}9i&4%yu7?9}{LNA$Z
z3}eA?^tZ%mjhaciJsi{rd#HAkU)N_$E5H5a)vL{H
zyTOat=@hZkiBr|~vh5J>Q!!HC0SkXa%Sdh#3<4~QgQ=QZ4Su^((LcZrO+4#&sG~Zx
zQ2VcFbeTGGEd3|y?ovlzKX#+lt*v1%V1b&A${-hxAP^w{SZ1iYFF0D5cg{@ie^mSx`Gi21
VQK?7Pg&R7x)s@u89~vL_{U3Y4Y6AcO
diff --git a/zhyy/library/CommonFun/__pycache__/handle_harmonyos.cpython-38.pyc b/zhyy/library/CommonFun/__pycache__/handle_harmonyos.cpython-38.pyc
deleted file mode 100644
index a58fde11b91bd0f3635d8dad5ccf16bef620bed3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3031
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
diff --git a/zhyy/library/CommonFun/__pycache__/handle_login.cpython-38.pyc b/zhyy/library/CommonFun/__pycache__/handle_login.cpython-38.pyc
deleted file mode 100644
index 1be6c0cc17a1a308e4533fbf30de09d32f9020e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6564
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