TECH-DOC.md 17 KB

业务后台系统技术说明文档

本文档由 Sisyphus AI 助手生成,用于帮助 AI 代理快速理解本项目结构、架构和关键实现细节。

1. 项目概述

属性 值
项目名称 business-webapi
Artifact ID business-webapi
Group ID com.hz3r.infrastructure
版本 1.0.0
描述 园区管理系统后端 API 服务
基础框架 Spring Boot 3.1.2
Java 版本 17
打包方式 Spring Boot Jar
端口 8030
API 文档 /manager/doc.html (SpringDoc Swagger UI)

2. 技术栈

2.1 核心框架

  • Spring Boot 3.1.2 - 应用程序框架
  • Spring Web - REST API
  • Spring Security - 认证授权
  • Spring Data Redis - 缓存
  • MyBatis Plus 3.5.14 - ORM (支持 Spring Boot 3)
  • MySQL Connector 8.4.0 - 数据库驱动

2.2 认证相关

  • java-jwt 4.5.0 (Auth0) - JWT 解析
  • jjwt 0.11.5 (io.jsonwebtoken) - JWT 生成
  • Kaptcha 2.3.2 - 图形验证码

2.3 工具库

  • Hutool 5.8.8 - Java 工具集
  • FastJSON 2.0.53 - JSON 序列化
  • FastJSON2 2.0.53 - JSON 序列化 (新版)
  • EasyExcel 3.1.1 - Excel 读写
  • Apache POI 5.5.1 - Office 文档
  • Apache Commons (Lang3, Collections4, Text, Pool2) - Apache 工具集
  • Vavr 0.10.4 - 函数式编程

2.4 第三方 SDK

  • MinIO 8.5.2 - 对象存储
  • Alipay SDK 4.40.576.ALL - 支付宝支付
  • 阿里云短信 Dysmsapi 4.1.1 - SMS
  • 海康威视 Artemis HTTP Client 1.1.13 - 视频监控
  • 海康威视 AKSK SDK 1.2.1 / 2.0.0 - 设备接入
  • JNA 3.0.9 - Java Native Access

2.5 数据库迁移

  • Flyway (通过 Spring Boot 内置) - 数据库版本化管理

3. 项目结构

src/main/java/com/hz3r/
├── infrastructure/park/              # 主包 - 园区管理系统核心
│   ├── BusinessWebapiApplication.java   # Spring Boot 启动类
│   ├── client/                          # 外部客户端调用
│   ├── config/                          # 配置类
│   ├── domain/                          # 领域模型
│   │   ├── beb/                         # 业务实体(?)
│   │   ├── constant/                    # 常量
│   │   ├── entity/                     # 数据库实体
│   │   ├── enums/                     # 枚举
│   │   └── vo/                         # 值对象 DTO
│   ├── excel/                          # Excel 工具
│   ├── hikvision/                      # 海康威视集成
│   ├── job/                            # 定时任务
│   ├── kafka/                          # Kafka 消息
│   ├── listener/                        # Spring 事件监听器
│   ├── mapper/                         # MyBatis Mapper
│   ├── security/                       # 安全相关 (TokenAuthenticationFilter, UserDetails)
│   ├── service/                        # 业务服务层
│   │   ├── access/                    # 访客通行
│   │   ├── adc/                       # 广告/支付聚合
│   │   ├── agc/                       # (AGC 相关)
│   │   ├── app/                       # APP 端
│   │   ├── artemis/                    # 海康 Artemis
│   │   ├── business/                  # 通用业务
│   │   ├── hik/                      # 海康
│   │   ├── icCard/                   # IC 卡
│   │   ├── meter/                    # 水电表
│   │   ├── meterbillnew/              # 水电账单(新)
│   │   ├── payment/                  # 支付
│   │   ├── share/                    # 分享
│   │   ├── tenant/                   # 租户管理
│   │   ├── visitor/                  # 访客
│   │   ├── sys/                     # 系统管理
│   │   └── wehcat/                  # 微信(?)
│   └── web/                          # Web 层 (Controller)
│       ├── controller/
│       │   ├── access/               # 通行 Controller
│       │   ├── adc/                 # ADC Controller (聚合支付/广告)
│       │   ├── agc/                 # AGC Controller
│       │   ├── artemis/             # Artemis Controller
│       │   ├── front/               # 前端 Controller
│       │   ├── hikvision/          # 海康 Controller
│       │   ├── icCard/            # IC 卡 Controller
│       │   ├── index/              # 首页
│       │   ├── lease/             # 租赁 Controller
│       │   ├── login/             # 登录
│       │   ├── merchant/          # 商户
│       │   ├── meter/            # 水电表
│       │   ├── meterapp/         # 水电表 APP
│       │   ├── openapi/          # 开放 API
│       │   ├── payment/          # 支付
│       │   ├── sys/              # 系统
│       │   ├── tenant/           # 租户
│       │   └── visitor/           # 访客
│       ├── event/                  # 事件控制器
│       └── scheduler/             # 调度器
├── authorization/                   # 认证授权模块
│   ├── app/                       # APP Token
│   │   ├── AppTokenManager.java
│   │   ├── AppTokenManagerImpl.java
│   │   └── AppTokenModel.java
│   └── front/                     # 前端 Token
│       ├── FrontTokenManager.java
│       ├── FrontTokenManagerImpl.java
│       └── FrontTokenModel.java
├── config/                         # 全局配置
│   ├── BusiRedisConfig.java
│   ├── BusiRedisFastJson2JsonSerializer.java
│   ├── LocalDateTimeConfiguration.java
│   ├── MybatisPlusConfiguration.java
│   ├── RestTemplateConfig.java
│   ├── SpringDocConfig.java
│   └── WebConfiguration.java
├── domain/                          # 通用领域模型
├── exception/                      # 全局异常
├── schedule/                        # 调度任务
├── utils/                          # 工具类
│   ├── BusiServiceUtils.java       # 业务服务工具
│   ├── BusiSvcCUDUtils.java       # 增删改工具
│   ├── BusiSvcQueryUtils.java     # 查询工具
│   ├── CaptchaUtils.java          # 验证码工具
│   ├── DPCUtils.java              # 数据处理
│   ├── EnumGroupingUtils.java      # 枚举分组
│   ├── JwtTokenProvider.java     # JWT Token Provider
│   ├── JwtUtil.java             # JWT 工具
│   ├── LocalDateTimeUtil.java    # 日期时间工具
│   ├── LocalOrderNoGenerator.java # 订单号生成
│   ├── MeterDevOnlineUtils.java   # 设备在线状态
│   ├── MiscUtils.java            # 杂项工具
│   ├── MyDbOpsUtils.java        # 数据库操作
│   ├── MyEntityUtils.java       # 实体工具
│   ├── MyLocalDateTimeUtils.java # 日期时间
│   ├── MyNumberUtils.java       # 数字工具
│   ├── MyOssUtils.java       # OSS 工具
│   ├── MyShortIdUtils.java   # 短 ID
│   ├── MyStrUtils.java      # 字符串
│   ├── ObjectConversion.java # 对象转换
│   ├── PercentageUtils.java # 百分比
│   ├── RedisCache.java      # Redis 缓存
│   ├── RedisUtil.java       # Redis 工具
│   ├── RedisUtils.java     # Redis 工具
│   ├── RequestUtil.java    # 请求工具
│   ├── RestTemplateUtil.java # HTTP 客户端
│   ├── SecurityUtils.java   # 安全工具
│   ├── SpringBeanUtils.java # Spring Bean
│   ├── TenantSortUtils.java # 租户排序
│   ├── ThreadLocalUtil.java # ThreadLocal
│   └── meter/              # 水电表相关工具
│       ├── Base64.java
│       ├── CaptchaConfig.java
│       ├── DateDimensionUtils.java
│       ├── JwtUtils.java
│       └── RedisCache.java
├── web/                            # Web 通用层
│   ├── advice/                    # 异常拦截 (ThrowableAdvice)
│   ├── controller/
│   │   ├── FileContentExchangeController.java  # 文件交换
│   │   └── OssController.java               # OSS
│   └── interceptor/
│       ├── AppTokenInterceptor.java   # APP Token 拦截
│       ├── FrontTokenInterceptor.java # 前端 Token 拦截
│       └── RequestIdInterceptor.java # 请求 ID 拦截
└── aop/                           # AOP 切面
    ├── IVoLogInfo.java
    └── ProjDocItem.java

4. 数据库

  • 引擎: MySQL 8.x
  • ORM: MyBatis Plus 3.5.14 (支持 Spring Boot 3)
  • 连接池: Druid (Spring Boot 内置 HikariCP)
  • Mapper 扫描路径: com.hz3r.infrastructure.park.**.mapper
  • 表名/列名格式: 反引号包裹 (处理数据库关键词如 type, index)
  • 迁移工具: Flyway
  • Flyway 脚本路径: src/main/resources/db.flyway/

4.1 配置文件优先级 (profile)

文件 用途
application.yml 主配置
application-dev.yml 开发环境 (默认激活)
application-test.yml 测试环境
application-prod.yml 生产环境
application-local.yml 本地环境
application-ut.yml 单元测试

5. 核心功能模块

5.1 认证授权

模块 说明 Token 存储
authorization.app APP 端认证 Redis
authorization.front 前端 Web 认证 Redis

登录限制: 5 次失败后锁定 15 分钟。

5.2 业务模块

模块 Controller 包 说明
租户管理 tenant/ 租户、部门、员工管理
访客管理 visitor/ 预约、通行权限
水电表 meter/ 水电表账单、缴费
支付 adc/ 支付宝聚合支付
通行 access/ 门禁通行
IC 卡 icCard/ IC 卡管理
海康视频 artemis/ hikvision/ 视频监控集成

5.3 开放接口

  • springdoc-openapi: /v3/api-docs → /manager/doc.html
  • OpenAPI 3.0 规范

6. 配置文件 (application.yml)

server:
  port: 8030
spring:
  application.name: business-webapi
  profiles.active: dev
  jackson.property-naming-strategy: LOWER_CAMEL_CASE
mybatis-plus:
  global-config.db-config.column-format: "`%s`"
park.api.title: 园区管理系统 API文档
data.appName: 义乌蓝宇数码园区
data.sms-cloud: # 阿里云短信配置
data.login-limit.max-fail-count: 5
data.login-limit.lock-minutes: 15

7. 构建与部署

7.1 Maven

./mvnw clean package    # 构建
./mvnw spring-boot:run  # 运行

7.2 Docker

  • Dockerfile - 标准 Spring Boot 镜像
  • Dockerfile-jar - Fat JAR 镜像
  • docker-compose.yml - 本地开发环境

7.3 CI/CD

  • .gitlab-ci.yml - GitLab CI 流水线
  • .ci-build_script.sh - Linux 构建脚本
  • .ci-build_script.dev.sh - 开发环境构建

7.4 部署脚本

文件 用途
jar-quick-delivery.sh Linux 一键���署
jar-quick-delivery.bat Windows 一键部署
jar-deploy.sh JAR 部署脚本

7.5 本地原生库

  • lib/win32/ - Windows 原生 DLL (海康 SDK)
    • HCNetSDK.dll, HCCore.dll - 海康 SDK
    • hpr.dll, hlog.dll - 海康日志
    • libcrypto, libssl - OpenSSL

8. 依赖仓库

nexus.hz3r.cn/repository/maven-public/

(杭州幻视科技公司内部 Maven 仓库)

9. 启动日志

--------------------------启动成功--------------------------------
  Application 'business-webapi' is running!
  Login:   http://<host>:8030/manager
  Doc:     http://<host>:8030/manager/doc.html

10. 关键设计模式

设计 说明
分层架构 Controller → Service → Mapper
Redis Token APP/前端 Token 管理,存储在 Redis
聚合支付 adc/ 下多个支付通道聚合 (支付宝)
海康集成 artemis/ HTTP API + 本地 JNA SDK
请求追踪 RequestIdInterceptor 为每个请求生成唯一请求 ID
统一异常 ThrowableAdvice 全局异常拦截
AOP 日志 ProjDocItem + IVoLogInfo 切面日志

11. 数据库表生成代码说明

代码 来源 说明
代码模板 Ba1att或IBa1att开头的代码文件 Ba1attATemplateTable.java,Ba1attATemplateTableVo.java,Ba1attATemplateTableBEB.java,Ba1attATemplateTableMapperBEB.java,Ba1attATemplateTableMapper.java,IBa1attATemplateTableService.java,Ba1attATemplateTableServiceImpl.java,Ba1attATemplateTableController.java,Ba1attATemplateTableMapper.xml
类型属性命名 表字段名称 首字母小写驼峰命名策略
静态属性DATA_CODE 表名 数据代码,表名第一个单词小写
静态属性REL_UP 表名 上级数据引用当前数据的KEY,表名第一个单词小写 + _id
实体类型属性自动填充策略 表字段描述 检查表字段描述中//${xxx}//部分,如果其中包含 IF,则 insert 时自动填充,包含 IFU,则 update 时自动填充,包含 IFIU,则 insert 和 update 时自动填充
VO类型属性必填校验 表字段描述 检查表字段描述中//${xxx}//部分,如果其中包含 NR,则忽略必填,否则更具数据中字段是否必填设置 springboot 的 validation 规则

本文档版本: 1.0.0 生成时间: 2026-04-30 适用 AI: Sisyphus (OhMyOpenCode)