diff --git a/.gitignore b/.gitignore
index 3685992..6fe5bd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@ deploy/docker/.last-version
*.jar
sql/
docs.zip
+deploy/docker-app/.current-version
diff --git a/backend/ARCHITECTURE.md b/backend/ARCHITECTURE.md
new file mode 100644
index 0000000..78ae61f
--- /dev/null
+++ b/backend/ARCHITECTURE.md
@@ -0,0 +1,258 @@
+# App 后台架构文档
+
+> 本文档记录小趣智清洁 App 后台的架构现状、数据访问层设计、冻结规范和新项目开发规范。
+> 维护人:Tony | 创建时间:2026-04-21 | 关联需求:REQ-20260421-0011
+
+## 1. 模块概览
+
+| 模块 | Java 文件数 | groupId | 框架 | 打包 | 状态 |
+|------|-----------|---------|------|------|------|
+| `xiaoqu-public` | 147 | me.iiv.xiaoqu | 纯 Java | jar | 冻结 |
+| `elasticsearchpublic` | 21 | me.iiv.xiaoqu | Spring 5.0 | jar | 冻结 |
+| `xiaoqu-complex` | 1,176 | me.iiv.xiaoqu | Spring 5.0 + 原生 MVC | war | 冻结 |
+| `xiaoqu-mall` | 1,007 | me.iiv.xiaoqu | Spring 5.0 + 原生 MVC | war | 冻结 |
+| `xiaoqu-intellectual-public` | 537 | xiaoqu.home.open | Spring Boot 2.4 | jar | **持续维护** |
+
+## 2. 依赖关系
+
+```
+xiaoqu-app-parent (pom, 统一版本管理) [冻结]
+ ├── xiaoqu-public (jar) [冻结]
+ ├── ElasticsearchPublic (jar) [冻结] ── 依赖 xiaoqu-public
+ ├── xiaoqu-complex (war) [冻结] ── 依赖 xiaoqu-public + ElasticsearchPublic + intellectual-public
+ └── xiaoqu-mall (war) [冻结] ── 依赖 xiaoqu-public
+
+xiaoqu-intellectual-public (jar) [持续维护] ── 唯一数据访问层
+ ├── 被 Web 后台依赖(intellectual-web/task/base/task-mgmt/attendance)
+ ├── 被旧 App(xiaoqu-complex)依赖
+ └── 被新项目依赖
+```
+
+### 构建顺序
+
+```bash
+# 1. 先安装 intellectual-public(属于 Web 后台父 POM)
+cd backend && mvn clean install -pl xiaoqu-intellectual-public -DskipTests
+
+# 2. 构建全部 App 模块
+cd backend/xiaoqu-app-parent && mvn clean package -DskipTests
+
+# 3. 验证 Web 后台(可选)
+cd backend && mvn clean package -DskipTests
+```
+
+> 必须使用 Java 8 编译和运行。
+
+## 3. xiaoqu-complex 三套并行数据访问层
+
+xiaoqu-complex 内部存在三套独立的���据访问机制,连接两个数据库:
+
+```
+xiaoqu-complex (App 主服务)
+┌──────────────────────────────────────────────────────────────────────┐
+│ Controller Layer │
+│ (me.iiv.iivframework.controller.*) │
+└──────┬───────────────────────┬───────────────────────┬───────────────┘
+ │ │ │
+ ▼ ▼ ▼
+┌──────────────────┐ ┌────────────────────────┐ ┌──────────────────┐
+│ ① 自有 DAO 层 │ │ ② intellectual-public │ │ ③ org.home.open │
+│ (MyBatis) │ │ (MyBatis-Plus) │ │ (JdbcTemplate) │
+│ │ │ │ │ │
+│ me.iiv.*.dao │ │ mapper.db1 → 同库 │ │ org.home.open.* │
+│ me.iiv.*.entity │ │ mapper.db2 → 跨库 │ │ ~48 个文件 │
+│ 41 DAO + 151 XML │ │ 51+61 Service │ │ │
+│ │ │ │ │ │
+│ sqlSessionFactory│ │ sqlSessionFactory2(db1) │ │ jdbcTemplate │
+│ → dataSource │ │ → dataSource (同库) │ │ → dataSource │
+│ │ │ sqlSessionFactory1(db2) │ │ │
+│ │ │ → dataSource1 (跨库) │ │ │
+└────────┬─────────┘ └─────────┬──────┬───────┘ └────────┬─────────┘
+ │ │ │ │
+ ▼ ▼ ▼ ▼
+ xiaoqu_complex xiaoqu_ xiaoqu_ xiaoqu_complex
+ 库 complex intellectual 库
+ 库 库
+```
+
+### 数据库连接
+
+| 数据源 | 连接数据库 | 使用方 |
+|--------|-----------|--------|
+| `dataSource` → `${servers.jdbc.jdbcUrl}` | `xiaoqu_complex` | ① 自有 DAO + ② db1 + ③ JdbcTemplate |
+| `dataSource1` → `${servers.jdbc.jdbcUrl1}` | `xiaoqu_intellectual` | ② db2(保洁任务) |
+
+### SqlSessionFactory 映射
+
+| SqlSessionFactory | 数据源 | ORM | 扫描包 |
+|-------------------|--------|-----|--------|
+| `sqlSessionFactory` | dataSource | MyBatis + PageHelper | `mappers/*.xml` |
+| `sqlSessionFactory1` | dataSource1 | MyBatis-Plus | `xiaoqu.home.open.mapper.db2` |
+| `sqlSessionFactory2` | dataSource | MyBatis-Plus | `xiaoqu.home.open.mapper.db1` |
+
+### 文件统计
+
+| 层 | 包名 | 文件数 | ORM | 数据库 | 状态 |
+|----|------|--------|-----|--------|------|
+| ① 自有 DAO | `me.iiv.iivframework.dao` + `mappers/*.xml` | 41 DAO + 151 XML | MyBatis + PageHelper | xiaoqu_complex | 冻结 |
+| ② intellectual db1 | `xiaoqu.home.open.*.db1` | 51×3 (mapper/service/model) | MyBatis-Plus | xiaoqu_complex(同库) | 由 intellectual-public 维护 |
+| ② intellectual db2 | `xiaoqu.home.open.*.db2` | 61×3 (mapper/service/model) | MyBatis-Plus | xiaoqu_intellectual | 由 intellectual-public 维护 |
+| ③ JdbcTemplate | `org.home.open.dao` | ~48 | JdbcTemplate | xiaoqu_complex | 冻结 |
+
+## 4. Spring 组件扫描隔离机制
+
+xiaoqu-complex 使用 Spring XML 配置,组件扫描是**显式声明**的,精确控制只扫描以下 4 个包:
+
+**beans.xml:**
+```xml
+
+
+
+
+```
+
+**springmvc.xml:**
+```xml
+
+
+
+
+
+
+```
+
+### 同名 @Component 类的运行时隔离
+
+xiaoqu-complex 与 intellectual-public 存在 10 个同名基础设施类。**当前不存在运行时冲突**:
+
+| 文件 | intellectual-public 包 | complex 包 | 有 @Component? | 被 complex 扫描? |
+|------|----------------------|-----------|---------------|-----------------|
+| SystemInterceptor | xiaoqu.home.open.config | me.iiv.iivframework.core | 是 | **否** |
+| RepeatSubmitAspect | xiaoqu.home.open.aop | me.iiv.iivframework.aop | 是 | **否** |
+| RedisDistributedLock | xiaoqu.home.open.redis | me.iiv.iivframework.redis | 是 | **否** |
+| RedisService5 | xiaoqu.home.open.service | me.iiv.iivframework.redis | 是 | **否** |
+| AvoidRepeatSubmit | xiaoqu.home.open.aop | me.iiv.iivframework.aop | 注解类 | 否 |
+| Constants | xiaoqu.home.open.constant | me.iiv.iivframework.Constants | 无 | 否 |
+| XxlJobInfo | xiaoqu.home.open.config | me.iiv.iivframework.entity | 无 | 否 |
+| IpUtils | xiaoqu.home.open.utils | me.iiv.iivframework.utils | 无 | 否 |
+| FileUtil | xiaoqu.home.open.utils | me.iiv.iivframework.utils | 无 | 否 |
+| UserUtils | xiaoqu.home.open.utils | me.iiv.iivframework.utils | 无 | 否 |
+
+intellectual-public 的 `config`、`aop`、`redis`、`utils`、`service`(父包)均**不在** complex 的扫描范围内。
+
+> **重要警告**:如果未来有人尝试将 xiaoqu-complex 升级到 Spring Boot 并使用 `@SpringBootApplication` 默认扫描,上述 4 个 @Component 类会被自动注册,导致 Bean 名冲突(双实例)。**不要这样做**——旧项目已冻结,不做框架升级。
+
+## 5. 同名文件(108 个)
+
+xiaoqu-complex 与 intellectual-public 有 108 个同名 Java 文件。根本原因:**同一张数据库表有两套 ORM 映射**。
+
+示例:
+- `me.iiv.iivframework.entity.User`(complex 自有,MyBatis)
+- `xiaoqu.home.open.model.db1.User`(intellectual-public,MyBatis-Plus)
+
+两个版本字段集合不完全相同,是各自独立演化的结果。
+
+**处置方式:冻结原样,不做收敛。** 旧项目冻结后同名文件只做 bug 修复。
+
+## 6. 旧项目冻结规范
+
+Phase 1(Maven 治理)完成后,以下模块进入冻结状态:
+
+### 允许的变更
+
+- Bug 修复
+- 安全补丁(如依赖版本升级修复 CVE)
+
+### 禁止的变更
+
+- 新增功能、新增接口
+- 重构代码、统一包名
+- 框架升级(Spring Boot 等)
+- 新增 DAO/Mapper/Entity
+- 收敛同名文件
+
+### 旧 DAO 层冻结说明
+
+| DAO 层 | 冻结说明 |
+|--------|---------|
+| ① 自有 MyBatis(41 DAO + 151 XML) | 仅修复已有查询的 bug,不新增 mapper |
+| ② intellectual-public 的 db1/db2 | 由 intellectual-public 统一维护 |
+| ③ org.home.open JdbcTemplate(~48 文件) | 冻结,不新增 JDBC 直写代码 |
+
+### 冻结代码变更流程
+
+1. 确认是 bug 修复(非新功能)
+2. 评估是否可在新项目中通过新接口绕过
+3. 如必须改旧代码:最小化改动,不做"顺手重构"
+4. 代码评审时标注"冻结项目 bug 修复"
+
+## 7. 新项目开发规范
+
+### 技术栈
+
+| 层级 | 技术 |
+|------|------|
+| 框架 | Spring Boot 2.4.8 + Java 8 |
+| ORM | MyBatis-Plus 3.4(通过 intellectual-public) |
+| 数据访问 | **仅使用 intellectual-public 的 DAO 层** |
+| 数据库 | xiaoqu_complex + xiaoqu_intellectual(通过 db1/db2) |
+
+### 依赖关系
+
+```
+新项目 (Spring Boot 2.4 + Java 8)
+ └── xiaoqu-intellectual-public (jar)
+ ├── mapper/service/model.db1 → xiaoqu_complex 库
+ └── mapper/service/model.db2 → xiaoqu_intellectual 库
+```
+
+**不依赖**:xiaoqu-complex、xiaoqu-mall、xiaoqu-public、elasticsearchpublic。
+
+### 数据库变更维护规则
+
+| 变更类型 | 操作位置 | 说明 |
+|---------|---------|------|
+| 新增表 | intellectual-public(新增 Entity + Mapper + Service) | 新表只在 intellectual-public 中建 ORM 映射 |
+| 修改已有表(加字段) | intellectual-public(修改 Entity) | 旧项目 complex 的同名 Entity 不改 |
+| 删除表/字段 | intellectual-public | 旧项目对应代码冻结不删 |
+
+### intellectual-public 变更注意事项
+
+intellectual-public 同时被三方依赖:
+
+| 依赖方 | 影响评估 |
+|--------|---------|
+| Web 后台(intellectual-web/task 等) | 主要消费方,变更需确保兼容 |
+| 旧 App(xiaoqu-complex) | 冻结状态,新增内容对其无影响 |
+| 新项目 | 新功能的主要数据访问通道 |
+
+**变更原则:**
+- 新增 Entity/Mapper/Service → 安全,不影响已有代码
+- 修改已有 Entity 字段 → 需评估 Web 后台影响
+- 修改已有 Service 方法签名 → 高风险,需评估所有依赖方
+- 删除任何内容 → 禁止(除非确认所有依赖方已移除引用)
+
+## 8. 环境配置
+
+### 数据库连接
+
+| 数据源 | 测试环境 | 生产环境 |
+|--------|---------|---------|
+| dataSource (xiaoqu_complex) | `192.168.1.181:3306/xiaoqu_comples_d` | Aliyun RDS `xiaoqu_complex` |
+| dataSource1 (xiaoqu_intellectual) | `192.168.1.181:3306/xiaoqu_intellectual_d` | Aliyun RDS `xiaoqu_intellectual` |
+
+### Maven 构建
+
+- App 模块由 `xiaoqu-app-parent/pom.xml` 统一管理
+- Web 后台由 `backend/pom.xml` 统一管理
+- 两套父 POM 互不干扰,intellectual-public 是唯一交叉点
+
+## 9. 包名空间
+
+xiaoqu-complex 内部存在三套包名,历史原因导致,冻结后不做统一:
+
+| 包名 | 来源 | 用途 |
+|------|------|------|
+| `me.iiv.iivframework.*` | complex 自有 | Controller、DAO、Entity、AOP、拦截器 |
+| `xiaoqu.home.open.*` | intellectual-public | MyBatis-Plus Service/Mapper/Model (db1/db2) |
+| `org.home.open.*` | complex 内 JdbcTemplate 层 | JDBC 直写 DAO |
diff --git a/backend/elasticsearchpublic/pom.xml b/backend/elasticsearchpublic/pom.xml
new file mode 100644
index 0000000..7f9f956
--- /dev/null
+++ b/backend/elasticsearchpublic/pom.xml
@@ -0,0 +1,58 @@
+
+ 4.0.0
+
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-app-parent
+ 1.0-SNAPSHOT
+ ../xiaoqu-app-parent/pom.xml
+
+
+ ElasticsearchPublic
+ 0.0.1-SNAPSHOT
+ jar
+
+ ElasticsearchPublic
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-public
+
+
+ org.elasticsearch
+ elasticsearch
+
+
+ org.elasticsearch.client
+ elasticsearch-rest-high-level-client
+
+
+ org.elasticsearch.plugin
+ transport-netty4-client
+
+
+ com.alibaba
+ fastjson
+
+
+ org.springframework
+ spring-core
+
+
+ org.springframework
+ spring-web
+
+
+ org.springframework
+ spring-webmvc
+
+
+ org.springframework
+ spring-context-support
+
+
+
diff --git a/backend/xiaoqu-app-parent/pom.xml b/backend/xiaoqu-app-parent/pom.xml
new file mode 100644
index 0000000..7a77a97
--- /dev/null
+++ b/backend/xiaoqu-app-parent/pom.xml
@@ -0,0 +1,423 @@
+
+
+ 4.0.0
+
+ me.iiv.xiaoqu
+ xiaoqu-app-parent
+ 1.0-SNAPSHOT
+ pom
+ xiaoqu-app-parent
+ App modules parent POM - unified dependency management
+
+
+ ../xiaoqu-public
+ ../elasticsearchpublic
+ ../xiaoqu-complex
+ ../xiaoqu-mall
+
+
+
+ UTF-8
+ 1.8
+ 1.8
+ UTF-8
+
+
+ 5.0.0.RELEASE
+ 2.2.3.RELEASE
+
+
+ 3.4.0
+ 3.3.2
+ 2.1.1
+ 3.7.5
+ 2.2
+
+
+ 5.1.49
+ 1.2.27
+
+
+ 3.1.0
+ 3.10.6
+
+
+ 7.7.1
+
+
+ 1.2.83
+ 2.10.0
+
+
+ 2.9.2
+ 1.5.21
+ 1.9.6
+
+
+ 1.2.17
+ 1.7.7
+
+
+ 3.4
+ 1.3.1
+ 1.9
+ 2.6
+ 3.1
+ 4.4.6
+ 4.5.2
+
+
+ 1.18.18
+ 5.8.4
+ 1.8.4
+ 3.8.0
+ 3.19.0-GA
+ 1.1.0.Final
+ 7.0.68
+ 1.10.1
+ 2.1.0
+
+
+ 1.0-SNAPSHOT
+ 0.0.1-SNAPSHOT
+ 0.0.1-SNAPSHOT
+
+
+
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-public
+ ${xiaoqu-public.version}
+
+
+ me.iiv.xiaoqu
+ ElasticsearchPublic
+ ${elasticsearchpublic.version}
+
+
+ xiaoqu.home.open
+ xiaoqu-intellectual-public
+ ${xiaoqu-intellectual-public.version}
+
+
+
+
+ org.springframework
+ spring-core
+ ${springframework.version}
+
+
+ org.springframework
+ spring-web
+ ${springframework.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${springframework.version}
+
+
+ org.springframework
+ spring-context-support
+ ${springframework.version}
+
+
+ org.springframework
+ spring-tx
+ ${springframework.version}
+
+
+ org.springframework
+ spring-aop
+ ${springframework.version}
+
+
+ org.springframework
+ spring-orm
+ ${springframework.version}
+
+
+ org.springframework
+ spring-websocket
+ ${springframework.version}
+
+
+ org.springframework
+ spring-messaging
+ ${springframework.version}
+
+
+ org.springframework
+ spring-test
+ ${springframework.version}
+
+
+ org.springframework.data
+ spring-data-redis
+ ${spring-data-redis.version}
+
+
+
+
+ com.baomidou
+ mybatis-plus
+ ${mybatis-plus.version}
+
+
+ com.baomidou
+ mybatis-plus-generator
+ ${mybatis-plus-generator.version}
+
+
+ org.mybatis
+ mybatis-spring
+ ${mybatis-spring.version}
+
+
+ com.github.pagehelper
+ pagehelper
+ ${pagehelper.version}
+
+
+ org.apache.velocity
+ velocity-engine-core
+ ${velocity.version}
+
+
+
+
+ mysql
+ mysql-connector-java
+ ${mysql-connector.version}
+
+
+ com.alibaba
+ druid
+ ${druid.version}
+
+
+
+
+ redis.clients
+ jedis
+ ${jedis.version}
+
+
+ org.redisson
+ redisson
+ ${redisson.version}
+
+
+
+
+ org.elasticsearch
+ elasticsearch
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.client
+ elasticsearch-rest-high-level-client
+ ${elasticsearch.version}
+
+
+ org.elasticsearch.plugin
+ transport-netty4-client
+ ${elasticsearch.version}
+
+
+
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson.version}
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-avro
+ ${jackson.version}
+
+
+
+
+ io.springfox
+ springfox-swagger2
+ ${springfox-swagger.version}
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${springfox-swagger.version}
+
+
+ io.springfox
+ springfox-bean-validators
+ ${springfox-swagger.version}
+
+
+ io.swagger
+ swagger-models
+ ${swagger-models.version}
+
+
+ com.github.xiaoymin
+ swagger-bootstrap-ui
+ ${swagger-bootstrap-ui.version}
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${slf4j.version}
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ commons-fileupload
+ commons-fileupload
+ ${commons-fileupload.version}
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ commons-httpclient
+ commons-httpclient
+ ${commons-httpclient.version}
+
+
+ org.apache.httpcomponents
+ httpcore
+ ${httpcore.version}
+
+
+ org.apache.httpcomponents
+ httpclient
+ ${httpclient.version}
+
+
+ org.apache.httpcomponents
+ httpmime
+ ${httpclient.version}
+
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+ org.aspectj
+ aspectjrt
+ ${aspectj.version}
+
+
+ org.aspectj
+ aspectjweaver
+ ${aspectj.version}
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ ${aliyun-oss.version}
+
+
+ org.javassist
+ javassist
+ ${javassist.version}
+
+
+ javax.validation
+ validation-api
+ ${javax.validation.version}
+
+
+ org.apache.tomcat
+ tomcat-servlet-api
+ ${tomcat-servlet-api.version}
+
+
+ org.jsoup
+ jsoup
+ ${jsoup.version}
+
+
+ se.jiderhamn.classloader-leak-prevention
+ classloader-leak-prevention-servlet
+ ${classloader-leak.version}
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.6
+
+ false
+
+
+
+
+
+
diff --git a/backend/xiaoqu-complex/pom.xml b/backend/xiaoqu-complex/pom.xml
new file mode 100644
index 0000000..189d53a
--- /dev/null
+++ b/backend/xiaoqu-complex/pom.xml
@@ -0,0 +1,689 @@
+
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-app-parent
+ 1.0-SNAPSHOT
+ ../xiaoqu-app-parent/pom.xml
+
+
+ 4.0.0
+ xiaoqu-complex
+ 0.0.1-SNAPSHOT
+ war
+
+
+ 7.0.68
+ deploy
+
+
+
+
+ test181
+
+ true
+
+
+ test181
+ test181
+ 8091
+ DEBUG
+ http://192.168.1.181:8091
+
+
+ NO_LOGGING
+ http://192.168.1.181:8091/manager/text
+
+ http://192.168.1.181:8087/device/
+
+ http://192.168.1.182:8093/
+
+ ./log/app.log
+
+ http://192.168.1.181:8088
+
+ 192.168.1.181
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d
+
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_intellectual_d
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+
+ 192.168.1.152
+ 9200
+
+
+
+ 192.168.1.152
+ 9200
+
+
+
+ xiaoqu
+ 123456
+ xiaoquadvise
+ 541500
+ http://192.168.1.182:9080/xxl-job
+ xiaoqu-franchisee
+
+
+
+ test182
+
+ test182
+ test182
+ 8089
+ DEBUG
+ http://192.168.1.182:8086
+
+
+ NO_LOGGING
+ http://192.168.1.182:8086/manager/text
+
+ http://192.168.1.181:8087/device/
+
+ http://192.168.1.182:8093/
+
+ ./log/app.log
+
+ http://192.168.1.181:8088
+
+ 192.168.1.181
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d
+
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+
+ 192.168.1.152
+ 9200
+
+
+
+ 192.168.1.152
+ 9200
+
+
+
+ xiaoqu
+ 123456
+ xiaoquadvise
+ 541500
+ http://192.168.1.182:9080/xxl-job
+ xiaoqu-franchisee
+
+
+
+ pre
+
+ pre
+ pre
+ 8089
+ DEBUG
+ http://192.168.1.241:8086
+
+
+ NO_LOGGING
+ http://192.168.1.241:8086/manager/text
+
+ http://192.168.1.241:8087/device/
+
+ http://192.168.1.182:8093/
+
+ ./log/app.log
+
+ http://192.168.1.241:8088
+
+ 192.168.1.181
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+
+ root
+ Kaixinjiuhao2019
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_comples
+
+ root
+ Kaixinjiuhao2019
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_intellectual
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+
+ 192.168.1.241
+ 9200
+
+
+
+ 192.168.1.241
+ 9200
+
+
+
+ xiaoqu
+ 123456
+ xiaoquadvise
+ 541500
+ http://192.168.1.241:9080/xxl-job
+ xiaoqu-franchisee
+
+
+
+ prd
+
+ prd
+ prd
+ 6080
+ DEBUG
+
+ http://background.xiaoqukeji.com:8080
+
+ NO_LOGGING
+
+ http://172.16.0.183:8080/manager/text
+
+ http://www.ququtec.com/device/
+
+ http://webserver.ququtech.cn:9480/
+
+ http://fileserver.xiaoqukeji.com:8082
+
+ r-2zeq2rwmlmequod12f.redis.rds.aliyuncs.com
+ 6379
+ Xdny7dvk
+ 5
+ 14
+
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_complex
+
+ kaifa
+ zuo!QAZ2wsx!@#$
+ jdbc:mysql://rm-2zeqo70cga7961912.mysql.rds.aliyuncs.com:3306/xiaoqu_intellectual
+
+ ./logs/app.log
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing-internal.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ online/
+
+ es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com
+ 9200
+ elastic
+ HKtG0VJt8rsR7zIF
+
+ 114.253.9.110
+ 19800
+ elastic
+ 0a0sp22b4O0Q
+
+ xqyuyin
+ qazwsx
+ xiaoquadvise
+ 541500
+ http://job.ququtech.cn:9380/xxl-job
+ xiaoqu-franchisee
+
+
+
+ docker
+
+ docker
+ docker
+ 8091
+ DEBUG
+ http://localhost:8091
+ NO_LOGGING
+ http://localhost:8091/manager/text
+ http://host.docker.internal:8087/device/
+ http://host.docker.internal:8093/
+ ./log/app.log
+ http://host.docker.internal:8088
+ host.docker.internal
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+ root
+ kaixinjiuhao
+ jdbc:mysql://host.docker.internal:3306/xiaoqu_comples_d
+ root
+ kaixinjiuhao
+ jdbc:mysql://host.docker.internal:3306/xiaoqu_intellectual_d
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+ host.docker.internal
+ 9200
+
+
+ host.docker.internal
+ 9200
+
+
+ xiaoqu
+ 123456
+ xiaoquadvise
+ 541500
+
+ xiaoqu-franchisee
+
+
+
+
+
+
+ com.baomidou
+ mybatis-plus
+
+
+ com.baomidou
+ mybatis-plus-generator
+
+
+ org.apache.velocity
+ velocity-engine-core
+
+
+ xiaoqu.home.open
+ xiaoqu-intellectual-public
+
+
+
+ com.yookue.forkextension.pinyin4j
+ pinyin4j
+ 2.6.1
+ compile
+
+
+ me.iiv.xiaoqu
+ ElasticsearchPublic
+
+
+ org.springframework
+ spring-core
+
+
+ org.springframework
+ spring-web
+
+
+ org.springframework
+ spring-webmvc
+
+
+ org.springframework
+ spring-context-support
+
+
+ org.springframework
+ spring-tx
+
+
+ org.springframework
+ spring-aop
+
+
+ org.springframework.data
+ spring-data-redis
+
+
+ org.aspectj
+ aspectjrt
+
+
+ org.aspectj
+ aspectjweaver
+ runtime
+
+
+ me.iiv.xiaoqu
+ xiaoqu-public
+
+
+
+
+ javax.servlet
+ servlet-api
+ 3.0-alpha-1
+ provided
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.2.1-b03
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+ log4j
+ log4j
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ slf4j-log4j12
+
+
+ mysql
+ mysql-connector-java
+
+
+ org.mybatis
+ mybatis-spring
+
+
+ com.alibaba
+ druid
+
+
+ com.alibaba
+ fastjson
+
+
+ com.github.pagehelper
+ pagehelper
+
+
+ org.springframework
+ spring-orm
+
+
+ net.sf.json-lib
+ json-lib
+ 2.4
+ jdk15
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ commons-fileupload
+ commons-fileupload
+
+
+ org.apache.commons
+ commons-math3
+ 3.3
+
+
+ commons-codec
+ commons-codec
+
+
+ commons-httpclient
+ commons-httpclient
+
+
+ commons-io
+ commons-io
+
+
+
+ org.jdom
+ jdom
+ 1.1
+
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.9.13
+
+
+
+ net.sf.flexjson
+ flexjson
+ 2.1
+
+
+
+ org.apache.httpcomponents
+ httpcore
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+ org.apache.httpcomponents
+ httpmime
+
+
+
+ net.coobird
+ thumbnailator
+ 0.4.7
+
+
+ org.apache.directory.studio
+ org.apache.commons.io
+ 2.4
+
+
+ org.apache.tomcat
+ tomcat-servlet-api
+ provided
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+
+
+ javax.validation
+ validation-api
+
+
+ org.springframework
+ spring-websocket
+
+
+ org.springframework
+ spring-messaging
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-avro
+
+
+
+ com.fasterxml
+ classmate
+ 1.5.1
+
+
+
+ redis.clients
+ jedis
+
+
+ io.springfox
+ springfox-swagger2
+
+
+ io.swagger
+ swagger-models
+
+
+
+
+ io.swagger
+ swagger-models
+
+
+ com.github.xiaoymin
+ swagger-bootstrap-ui
+
+
+ io.springfox
+ springfox-swagger-ui
+
+
+ io.springfox
+ springfox-bean-validators
+
+
+
+
+
+ org.jsoup
+ jsoup
+
+
+ se.jiderhamn.classloader-leak-prevention
+ classloader-leak-prevention-servlet
+
+
+ org.springframework
+ spring-test
+ provided
+
+
+ xerces
+ xercesImpl
+ 2.12.0
+
+
+ org.redisson
+ redisson
+
+
+ org.javassist
+ javassist
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+ 2.8.2
+
+
+
+
+ ROOT
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ ${tomcatUrl}
+ _qfbAdmin
+ _qfb2587
+ /
+ true
+
+
+
+
+ org.eclipse.jetty
+ jetty-maven-plugin
+ 9.4.8.v20171121
+
+
+ ${webserver.port}
+
+
+ /
+ src/test/resources/webdefault.xml
+
+
+
+ org.mortbay.util.URI.charset
+ ${project.build.sourceEncoding}
+
+
+
+
+
+
+
diff --git a/backend/xiaoqu-mall/pom.xml b/backend/xiaoqu-mall/pom.xml
new file mode 100644
index 0000000..615bd54
--- /dev/null
+++ b/backend/xiaoqu-mall/pom.xml
@@ -0,0 +1,723 @@
+
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-app-parent
+ 1.0-SNAPSHOT
+ ../xiaoqu-app-parent/pom.xml
+
+
+ 4.0.0
+ xiaoqu-mall
+ 0.0.1-SNAPSHOT
+ war
+
+
+ 7.0.68
+ deploy
+
+
+
+
+ test181
+
+ true
+
+
+ test181
+ test181
+ 8090
+ DEBUG
+
+
+ NO_LOGGING
+ http://192.168.1.152:8086/manager/text
+
+ ./logs/mall.log
+
+ /user/local/font/
+
+ 192.168.1.181
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_mall_d
+ root
+ kaixinjiuhao
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_franchisee_d
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+
+ 192.168.1.152
+ 9200
+
+
+
+ http://192.168.1.152:8086/open/mailVerification/
+
+ https://openapi.alipay.com/gateway.do
+ 2021001189634432
+ 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
+ http://114.253.9.110:8086/alipay/asyncPayNotify
+
+ xiaoquadvise
+ 541500
+
+ wxe9ca033dd79a1c99
+ 1603299889
+ 0D89A48337D9215817A9EECA26F5F878
+ 114.253.9.110
+ http://114.253.9.110:8086/weiXin/asyncPayNotify
+ http://192.168.1.182:8887/xiaoqu/verifyReceivable
+
+ http://192.168.1.182:8093/
+
+
+
+ pre
+
+ pre
+ pre
+ 8089
+ DEBUG
+ http://192.168.1.241:8089
+ NO_LOGGING
+ http://192.168.1.241:8089/manager/text
+
+ ./logs/mall.log
+
+ /user/local/font/
+
+ 192.168.1.181
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+
+ root
+ Kaixinjiuhao2019
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_comples
+ root
+ Kaixinjiuhao2019
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_mall
+ root
+ Kaixinjiuhao2019
+ jdbc:mysql://192.168.1.181:3306/xiaoqu_franchisee
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+
+ 192.168.1.241
+ 9200
+
+
+
+ http://192.168.1.241:8086/open/mailVerification/
+
+ https://openapi.alipay.com/gateway.do
+ 2021001189634432
+ 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
+ http://114.253.9.110:8086/alipay/asyncPayNotify
+
+ xiaoquadvise
+ 541500
+
+ wxe9ca033dd79a1c99
+ 1603299889
+ 0D89A48337D9215817A9EECA26F5F878
+ 114.253.9.110
+ http://114.253.9.110:20000/weiXin/asyncPayNotify
+ http://192.168.1.182:8887/xiaoqu/verifyReceivable
+
+ http://192.168.1.182:8093/
+
+
+
+ prdw
+
+ prdw
+ prdw
+ 6080
+ DEBUG
+
+ http://www.xqzhipin.com:8666
+
+ http://172.16.0.178:8666/manager/text
+
+ ./logs/mall.log
+
+ /user/local/font/
+
+ r-2zeq2rwmlmequod12fpd.redis.rds.aliyuncs.com
+ 6379
+ Xdny7dvk
+ 5
+ 14
+
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_complex
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_mall
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_franchisee
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ online/
+
+ es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com
+ 9200
+ elastic
+ HKtG0VJt8rsR7zIF
+
+ http://www.xqzhipin.com:8666/open/mailVerification/
+
+
+ https://openapi.alipay.com/gateway.do
+ 2021001189634432
+ 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
+ http://www.xqzhipin.com:8666/alipay/asyncPayNotify
+
+ xiaoquadvise
+ 541500
+
+ wxe9ca033dd79a1c99
+ 1603299889
+ 0D89A48337D9215817A9EECA26F5F878
+ 39.106.48.85
+ http://www.xqzhipin.com:8666/weiXin/asyncPayNotify
+ >http://192.168.1.182:8887/xiaoqu/verifyReceivable
+
+ http://webserver.ququtech.cn:9480/
+
+
+
+ prd
+
+ prd
+ prd
+ 6080
+ DEBUG
+
+ http://www.xqzhipin.com:8666
+
+ http://172.16.0.178:8666/manager/text
+
+ ./logs/mall.log
+
+ /user/local/font/
+
+ r-2zeq2rwmlmequod12f.redis.rds.aliyuncs.com
+ 6379
+ Xdny7dvk
+ 5
+ 14
+
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_complex
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_mall
+ xiaoqu_yanfa
+ Xdny7dvk
+ jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_franchisee
+
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ online/
+
+ es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com
+ 9200
+ elastic
+ HKtG0VJt8rsR7zIF
+
+ http://www.xqzhipin.com:8666/open/mailVerification/
+
+
+ https://openapi.alipay.com/gateway.do
+ 2021001189634432
+ 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
+ http://www.xqzhipin.com:8666/alipay/asyncPayNotify
+
+ xiaoquadvise
+ 541500
+
+ wxe9ca033dd79a1c99
+ 1603299889
+ 0D89A48337D9215817A9EECA26F5F878
+ 39.106.48.85
+ http://www.xqzhipin.com:8666/weiXin/asyncPayNotify
+ http://114.253.9.110:8888/xiaoqu/verifyReceivable
+
+ http://webserver.ququtech.cn:9480/
+
+
+
+ docker
+
+ docker
+ docker
+ 8090
+ DEBUG
+ NO_LOGGING
+ http://localhost:8090/manager/text
+ ./logs/mall.log
+ /user/local/font/
+ host.docker.internal
+ 6379
+ kaixinjiuhao
+ 5
+ 13
+ root
+ kaixinjiuhao
+ jdbc:mysql://host.docker.internal:3306/xiaoqu_comples_d
+ root
+ kaixinjiuhao
+ jdbc:mysql://host.docker.internal:3306/xiaoqu_mall_d
+ root
+ kaixinjiuhao
+ jdbc:mysql://host.docker.internal:3306/xiaoqu_franchisee_d
+ xOz8D11yhk5PXPo62Or6W2
+ zFrU26Tzbm9gSP5rHYDo9A
+ V2u3Z9FZce7As9cUgFsCW7
+ maip9e0W3e9s273OLalVk2
+ http://oss-cn-beijing.aliyuncs.com
+ LTAI5tCmbdJj3dymcia6CbZs
+ pZZaztTROhMc4ntRyuKg4cgITD3yo3
+ contractpic
+ test190/
+ host.docker.internal
+ 9200
+
+
+ http://localhost:8086/open/mailVerification/
+ https://openapi.alipay.com/gateway.do
+ 2021001189634432
+ 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
+ http://localhost:8086/alipay/asyncPayNotify
+ xiaoquadvise
+ 541500
+ wxe9ca033dd79a1c99
+ 1603299889
+ 0D89A48337D9215817A9EECA26F5F878
+ 127.0.0.1
+ http://localhost:8086/weiXin/asyncPayNotify
+ http://host.docker.internal:8887/xiaoqu/verifyReceivable
+ http://host.docker.internal:8093/
+
+
+
+
+
+
+
+ com.itextpdf
+ itextpdf
+ 5.5.10
+
+
+ com.itextpdf
+ itext-asian
+ 5.2.0
+
+
+ org.xhtmlrenderer
+ flying-saucer-pdf-itext5
+ 9.0.3
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.10.97.ALL
+
+
+ com.baomidou
+ mybatis-plus
+
+
+ com.baomidou
+ mybatis-plus-generator
+
+
+ org.apache.velocity
+ velocity-engine-core
+
+
+ org.springframework
+ spring-core
+
+
+ org.springframework
+ spring-web
+
+
+ org.springframework
+ spring-webmvc
+
+
+ org.springframework
+ spring-context-support
+
+
+ org.springframework
+ spring-tx
+
+
+ org.springframework
+ spring-aop
+
+
+ org.springframework.data
+ spring-data-redis
+
+
+ org.aspectj
+ aspectjrt
+
+
+ org.aspectj
+ aspectjweaver
+ runtime
+
+
+ me.iiv.xiaoqu
+ xiaoqu-public
+
+
+
+ javax.servlet
+ servlet-api
+ 3.0-alpha-1
+ provided
+
+
+ javax.servlet.jsp
+ jsp-api
+ 2.2.1-b03
+
+
+ javax.servlet
+ jstl
+ 1.2
+
+
+ log4j
+ log4j
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ slf4j-log4j12
+
+
+ mysql
+ mysql-connector-java
+
+
+ com.alibaba
+ druid
+
+
+ com.alibaba
+ fastjson
+
+
+
+ org.springframework
+ spring-orm
+
+
+ net.sf.json-lib
+ json-lib
+ 2.4
+ jdk15
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ commons-fileupload
+ commons-fileupload
+
+
+ org.apache.commons
+ commons-math3
+ 3.3
+
+
+ commons-codec
+ commons-codec
+
+
+ commons-httpclient
+ commons-httpclient
+
+
+ commons-io
+ commons-io
+
+
+
+ org.jdom
+ jdom
+ 1.1
+
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.9.13
+
+
+
+ net.sf.flexjson
+ flexjson
+ 2.1
+
+
+
+ org.apache.httpcomponents
+ httpcore
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+
+ net.coobird
+ thumbnailator
+ 0.4.7
+
+
+ org.apache.directory.studio
+ org.apache.commons.io
+ 2.4
+
+
+
+ javax.mail
+ mail
+ 1.4.7
+
+
+
+ org.apache.tomcat
+ tomcat-servlet-api
+ provided
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+
+
+ javax.validation
+ validation-api
+
+
+ org.springframework
+ spring-websocket
+
+
+ org.springframework
+ spring-messaging
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-avro
+
+
+
+ com.fasterxml
+ classmate
+ 1.5.1
+
+
+
+ redis.clients
+ jedis
+
+
+ io.springfox
+ springfox-swagger2
+
+
+ io.swagger
+ swagger-models
+
+
+
+
+ io.swagger
+ swagger-models
+
+
+ com.github.xiaoymin
+ swagger-bootstrap-ui
+
+
+ io.springfox
+ springfox-swagger-ui
+
+
+ io.springfox
+ springfox-bean-validators
+
+
+
+
+
+ org.jsoup
+ jsoup
+
+
+ se.jiderhamn.classloader-leak-prevention
+ classloader-leak-prevention-servlet
+
+
+ org.springframework
+ spring-test
+ provided
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ org.javassist
+ javassist
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+ ROOT
+
+
+ src/main/resources
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 2.6
+
+ false
+
+
+
+ org.apache.tomcat.maven
+ tomcat7-maven-plugin
+ 2.2
+
+ ${tomcatUrl}
+ _qfbAdmin
+ _qfb2587
+ /
+ true
+
+
+
+
+ org.eclipse.jetty
+ jetty-maven-plugin
+ 9.4.8.v20171121
+
+
+ ${webserver.port}
+
+
+ /
+ src/test/resources/webdefault.xml
+
+
+
+ org.mortbay.util.URI.charset
+ ${project.build.sourceEncoding}
+
+
+
+
+
+
+
diff --git a/backend/xiaoqu-public/pom.xml b/backend/xiaoqu-public/pom.xml
new file mode 100644
index 0000000..7daa0cc
--- /dev/null
+++ b/backend/xiaoqu-public/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+ me.iiv.xiaoqu
+ xiaoqu-app-parent
+ 1.0-SNAPSHOT
+ ../xiaoqu-app-parent/pom.xml
+
+
+ 4.0.0
+ xiaoqu-public
+
+
+
+ com.alibaba
+ fastjson
+
+
+ cn.hutool
+ hutool-all
+
+
+ io.swagger
+ swagger-models
+
+
+ org.projectlombok
+ lombok
+
+
+
\ No newline at end of file
diff --git a/deploy/docker-app/.env b/deploy/docker-app/.env
new file mode 100644
index 0000000..4c8d450
--- /dev/null
+++ b/deploy/docker-app/.env
@@ -0,0 +1,11 @@
+# SmartClean App Docker 部署环境变量
+
+# 版本号(由 deploy.sh 自动设置)
+VERSION=latest
+
+# 宿主机端口映射
+COMPLEX_PORT=18091
+MALL_PORT=18086
+
+# 飞书通知
+FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/5703e8cc-6998-46a6-af9d-8c5102cc8c1e
diff --git a/deploy/docker-app/Dockerfile.complex b/deploy/docker-app/Dockerfile.complex
new file mode 100644
index 0000000..673cd7f
--- /dev/null
+++ b/deploy/docker-app/Dockerfile.complex
@@ -0,0 +1,6 @@
+FROM tomcat:8.5-jdk8-temurin
+RUN rm -rf /usr/local/tomcat/webapps/* \
+ && mkdir -p /app/logs \
+ && apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
+COPY backend/xiaoqu-complex/target/ROOT.war /usr/local/tomcat/webapps/
+EXPOSE 8080
diff --git a/deploy/docker-app/Dockerfile.mall b/deploy/docker-app/Dockerfile.mall
new file mode 100644
index 0000000..2b45288
--- /dev/null
+++ b/deploy/docker-app/Dockerfile.mall
@@ -0,0 +1,6 @@
+FROM tomcat:8.5-jdk8-temurin
+RUN rm -rf /usr/local/tomcat/webapps/* \
+ && mkdir -p /app/logs \
+ && apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
+COPY backend/xiaoqu-mall/target/ROOT.war /usr/local/tomcat/webapps/
+EXPOSE 8080
diff --git a/deploy/docker-app/deploy.sh b/deploy/docker-app/deploy.sh
new file mode 100755
index 0000000..58cd1b2
--- /dev/null
+++ b/deploy/docker-app/deploy.sh
@@ -0,0 +1,365 @@
+#!/bin/bash
+#
+# SmartClean App 后台一键部署脚本(Docker 本地版)
+#
+# 用法:
+# ./deploy.sh # 构建并部署 complex + mall
+# ./deploy.sh complex # 仅构建部署 xiaoqu-complex
+# ./deploy.sh mall # 仅构建部署 xiaoqu-mall
+# ./deploy.sh rollback # 回滚到上一版本
+# ./deploy.sh status # 查看容器状态
+# ./deploy.sh logs [服务名] # 查看日志
+# ./deploy.sh stop # 停止所有容器
+# ./deploy.sh clean # 停止并清理(含数据卷)
+
+set -e
+
+DEPLOY_DIR="$(cd "$(dirname "$0")" && pwd)"
+ROOT_DIR="$(dirname "$(dirname "$DEPLOY_DIR")")"
+source "$DEPLOY_DIR/.env"
+
+# ===== 版本号 =====
+GIT_HASH=$(cd "$ROOT_DIR" && git rev-parse --short HEAD)
+TIMESTAMP=$(date +%Y%m%d-%H%M%S)
+VERSION="${TIMESTAMP}-${GIT_HASH}"
+BRANCH=$(cd "$ROOT_DIR" && git rev-parse --abbrev-ref HEAD)
+COMMIT=$(cd "$ROOT_DIR" && git log -1 --format='%h %s')
+
+BACKUP_FILE="$DEPLOY_DIR/.last-version"
+CURRENT_FILE="$DEPLOY_DIR/.current-version"
+
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+CYAN='\033[0;36m'
+NC='\033[0m'
+
+log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
+log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
+log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
+log_step() { echo -e "${CYAN}[STEP]${NC} $1"; }
+
+if docker compose version > /dev/null 2>&1; then
+ DC="docker compose -f $DEPLOY_DIR/docker-compose.yml"
+else
+ DC="docker-compose -f $DEPLOY_DIR/docker-compose.yml"
+fi
+
+# ===== 飞书通知 =====
+notify_feishu() {
+ local title="$1" content="$2" color="$3"
+ [ -z "$FEISHU_WEBHOOK" ] && return
+ curl -s -X POST "$FEISHU_WEBHOOK" \
+ -H "Content-Type: application/json" \
+ -d "{
+ \"msg_type\": \"interactive\",
+ \"card\": {
+ \"header\": {\"title\":{\"tag\":\"plain_text\",\"content\":\"$title\"},\"template\":\"$color\"},
+ \"elements\": [{\"tag\":\"markdown\",\"content\":\"$content\"}]
+ }
+ }" > /dev/null 2>&1
+}
+
+# ===== 检查 Docker =====
+check_docker() {
+ if ! command -v docker &> /dev/null; then
+ log_error "Docker 未安装"
+ exit 1
+ fi
+ if ! docker info > /dev/null 2>&1; then
+ log_error "Docker 未启动"
+ exit 1
+ fi
+}
+
+# ===== 备份当前版本号 =====
+backup_version() {
+ if [ -f "$CURRENT_FILE" ]; then
+ cp "$CURRENT_FILE" "$BACKUP_FILE"
+ log_info "已备份当前版本: $(cat "$BACKUP_FILE")"
+ fi
+}
+
+# ===== 本地构建产物 =====
+build_local() {
+ local target="${1:-all}"
+ local start_time=$(date +%s)
+
+ # 切换 Java 8
+ export JAVA_HOME="$HOME/.sdkman/candidates/java/8.0.432-zulu"
+ export PATH="$JAVA_HOME/bin:$PATH"
+
+ cd "$ROOT_DIR/backend"
+
+ # 先安装 intellectual-public(complex 依赖它)
+ if [ "$target" = "all" ] || [ "$target" = "complex" ]; then
+ log_info " 安装 xiaoqu-intellectual-public..."
+ mvn clean install -pl xiaoqu-intellectual-public -DskipTests -q
+ fi
+
+ # 从 app-parent 用 docker profile 构建
+ cd "$ROOT_DIR/backend/xiaoqu-app-parent"
+
+ case "$target" in
+ complex)
+ log_step "构建 xiaoqu-complex (-P docker)..."
+ mvn clean package -pl ../xiaoqu-complex -am -P docker -DskipTests -q
+ ;;
+ mall)
+ log_step "构建 xiaoqu-mall (-P docker)..."
+ mvn clean package -pl ../xiaoqu-mall -am -P docker -DskipTests -q
+ ;;
+ all)
+ log_step "构建全部 App 模块 (-P docker)..."
+ mvn clean package -P docker -DskipTests -q
+ ;;
+ esac
+
+ # 验证产物
+ case "$target" in
+ complex|all)
+ [ ! -f "$ROOT_DIR/backend/xiaoqu-complex/target/ROOT.war" ] && log_error "complex ROOT.war 不存在" && exit 1
+ log_info " complex: $(du -h "$ROOT_DIR/backend/xiaoqu-complex/target/ROOT.war" | cut -f1)"
+ ;;&
+ mall|all)
+ [ ! -f "$ROOT_DIR/backend/xiaoqu-mall/target/ROOT.war" ] && log_error "mall ROOT.war 不存在" && exit 1
+ log_info " mall: $(du -h "$ROOT_DIR/backend/xiaoqu-mall/target/ROOT.war" | cut -f1)"
+ ;;
+ esac
+
+ local elapsed=$(( $(date +%s) - start_time ))
+ log_info "本地构建完成 (${elapsed}s)"
+}
+
+# ===== 打包 Docker 镜像 =====
+build_images() {
+ local target="${1:-all}"
+ local start_time=$(date +%s)
+
+ cd "$DEPLOY_DIR"
+
+ case "$target" in
+ complex)
+ log_step "打包 Complex 镜像 ($VERSION)..."
+ $DC build --no-cache complex
+ docker tag smartclean-complex:latest smartclean-complex:$VERSION 2>/dev/null || true
+ ;;
+ mall)
+ log_step "打包 Mall 镜像 ($VERSION)..."
+ $DC build --no-cache mall
+ docker tag smartclean-mall:latest smartclean-mall:$VERSION 2>/dev/null || true
+ ;;
+ all)
+ log_step "打包全部镜像 ($VERSION)..."
+ $DC build --no-cache
+ docker tag smartclean-complex:latest smartclean-complex:$VERSION 2>/dev/null || true
+ docker tag smartclean-mall:latest smartclean-mall:$VERSION 2>/dev/null || true
+ ;;
+ esac
+
+ local elapsed=$(( $(date +%s) - start_time ))
+ log_info "镜像打包完成 (${elapsed}s)"
+}
+
+# ===== 部署服务 =====
+deploy_services() {
+ local target="${1:-all}"
+
+ cd "$DEPLOY_DIR"
+
+ log_step "部署容器..."
+ case "$target" in
+ complex)
+ $DC up -d --no-deps complex
+ ;;
+ mall)
+ $DC up -d --no-deps mall
+ ;;
+ all)
+ $DC down 2>/dev/null || true
+ $DC up -d
+ ;;
+ esac
+
+ log_info "容器已启动"
+}
+
+# ===== 健康检查 =====
+healthcheck() {
+ local target="${1:-all}"
+ local max_retries=30
+ local interval=3
+
+ log_step "健康检查..."
+
+ if [ "$target" = "all" ] || [ "$target" = "complex" ]; then
+ log_info " 检查 Complex (http://localhost:$COMPLEX_PORT)..."
+ for i in $(seq 1 $max_retries); do
+ if curl -sf "http://localhost:$COMPLEX_PORT/" > /dev/null 2>&1; then
+ log_info " Complex 健康 (第${i}次检查通过)"
+ break
+ fi
+ if [ $i -eq $max_retries ]; then
+ log_error " Complex 健康检查失败"
+ return 1
+ fi
+ printf "."
+ sleep $interval
+ done
+ fi
+
+ if [ "$target" = "all" ] || [ "$target" = "mall" ]; then
+ log_info " 检查 Mall (http://localhost:$MALL_PORT)..."
+ for i in $(seq 1 $max_retries); do
+ if curl -sf "http://localhost:$MALL_PORT/" > /dev/null 2>&1; then
+ log_info " Mall 健康 (第${i}次检查通过)"
+ break
+ fi
+ if [ $i -eq $max_retries ]; then
+ log_error " Mall 健康检查失败"
+ return 1
+ fi
+ printf "."
+ sleep $interval
+ done
+ fi
+
+ log_info "健康检查通过"
+ return 0
+}
+
+# ===== 回滚 =====
+rollback() {
+ if [ ! -f "$BACKUP_FILE" ]; then
+ log_error "没有可回滚的版本"
+ exit 1
+ fi
+
+ local old_version=$(cat "$BACKUP_FILE")
+ log_warn "回滚到版本: $old_version"
+
+ local has_images=true
+ docker image inspect smartclean-complex:$old_version > /dev/null 2>&1 || has_images=false
+ docker image inspect smartclean-mall:$old_version > /dev/null 2>&1 || has_images=false
+
+ if [ "$has_images" = false ]; then
+ log_error "旧版本镜像不存在 ($old_version),无法回滚"
+ exit 1
+ fi
+
+ export VERSION="$old_version"
+ cd "$DEPLOY_DIR"
+ $DC down 2>/dev/null || true
+ $DC up -d
+
+ echo "$old_version" > "$CURRENT_FILE"
+ log_info "回滚完成"
+
+ notify_feishu "SmartClean App 已回滚 (Docker)" \
+ "**回滚版本:** $old_version" \
+ "yellow"
+}
+
+# ===== 清理旧镜像 =====
+cleanup_images() {
+ log_info "清理旧镜像(保留最近 5 个版本)..."
+ for name in smartclean-complex smartclean-mall; do
+ docker images "$name" --format "{{.Tag}}" | grep -v "latest" | sort -r | tail -n +6 | while read tag; do
+ docker rmi "$name:$tag" 2>/dev/null && echo " 删除 $name:$tag"
+ done
+ done
+}
+
+# ===== 主流程 =====
+TARGET="${1:-all}"
+DEPLOY_START=$(date +%s)
+
+case "$TARGET" in
+ status)
+ $DC ps
+ exit 0
+ ;;
+ logs)
+ shift
+ $DC logs -f $@
+ exit 0
+ ;;
+ stop)
+ log_info "停止所有容器..."
+ $DC down
+ log_info "已停止"
+ exit 0
+ ;;
+ clean)
+ log_warn "停止所有容器并清理数据卷..."
+ $DC down -v --rmi all
+ log_info "已清理"
+ exit 0
+ ;;
+ rollback)
+ check_docker
+ rollback
+ exit 0
+ ;;
+ all|complex|mall)
+ ;;
+ *)
+ echo "用法: $0 {all|complex|mall|rollback|status|logs|stop|clean}"
+ exit 1
+ ;;
+esac
+
+echo ""
+log_info "======================================"
+log_info " SmartClean App 部署 (Docker)"
+log_info " 版本: $VERSION"
+log_info " 分支: $BRANCH"
+log_info " 提交: $COMMIT"
+log_info " 目标: $TARGET"
+log_info "======================================"
+echo ""
+
+# 1. 检查 Docker
+check_docker
+
+# 2. 备份当前版本号
+backup_version
+
+# 3. 本地构建(Maven -P docker)
+build_local "$TARGET"
+
+# 4. 打包 Docker 镜像
+build_images "$TARGET"
+
+# 5. 部署容器
+deploy_services "$TARGET"
+
+# 6. 健康检查
+if healthcheck "$TARGET"; then
+ echo "$VERSION" > "$CURRENT_FILE"
+ cleanup_images
+
+ ELAPSED=$(( $(date +%s) - DEPLOY_START ))
+
+ echo ""
+ log_info "======================================"
+ log_info " App 部署成功!"
+ log_info " 版本: $VERSION"
+ log_info " 耗时: ${ELAPSED}s"
+ log_info " Complex: http://localhost:$COMPLEX_PORT"
+ log_info " Mall: http://localhost:$MALL_PORT"
+ log_info "======================================"
+
+ notify_feishu "SmartClean App 部署成功 (Docker)" \
+ "**版本:** $VERSION\\n**分支:** $BRANCH\\n**提交:** $COMMIT\\n**目标:** $TARGET\\n**耗时:** ${ELAPSED}s\\n**Complex:** http://localhost:$COMPLEX_PORT\\n**Mall:** http://localhost:$MALL_PORT" \
+ "green"
+else
+ log_error "健康检查失败,自动回滚..."
+ rollback
+
+ ELAPSED=$(( $(date +%s) - DEPLOY_START ))
+ notify_feishu "SmartClean App 部署失败 (Docker,已回滚)" \
+ "**版本:** $VERSION\\n**分支:** $BRANCH\\n**提交:** $COMMIT\\n**耗时:** ${ELAPSED}s\\n**状态:** 健康检查失败,已自动回滚" \
+ "red"
+ exit 1
+fi
diff --git a/deploy/docker-app/docker-compose.yml b/deploy/docker-app/docker-compose.yml
new file mode 100644
index 0000000..258f9b4
--- /dev/null
+++ b/deploy/docker-app/docker-compose.yml
@@ -0,0 +1,52 @@
+services:
+ complex:
+ image: smartclean-complex:${VERSION:-latest}
+ container_name: smartclean-complex
+ build:
+ context: ../..
+ dockerfile: deploy/docker-app/Dockerfile.complex
+ ports:
+ - "${COMPLEX_PORT:-18091}:8080"
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
+ volumes:
+ - complex_logs:/app/logs
+ healthcheck:
+ test: ["CMD", "curl", "-sf", "http://localhost:8080/"]
+ interval: 15s
+ timeout: 5s
+ retries: 5
+ start_period: 90s
+ restart: on-failure:3
+ networks:
+ - smartclean-app
+
+ mall:
+ image: smartclean-mall:${VERSION:-latest}
+ container_name: smartclean-mall
+ build:
+ context: ../..
+ dockerfile: deploy/docker-app/Dockerfile.mall
+ ports:
+ - "${MALL_PORT:-18086}:8080"
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
+ volumes:
+ - mall_logs:/app/logs
+ healthcheck:
+ test: ["CMD", "curl", "-sf", "http://localhost:8080/"]
+ interval: 15s
+ timeout: 5s
+ retries: 5
+ start_period: 90s
+ restart: on-failure:3
+ networks:
+ - smartclean-app
+
+volumes:
+ complex_logs:
+ mall_logs:
+
+networks:
+ smartclean-app:
+ driver: bridge