feat: App 后台 Phase 1 Maven 治理 + Docker 部署

- 创建 xiaoqu-app-parent 统一父 POM,管理 4 个 App 模块依赖版本
- 统一 fastjson(1.2.83)、druid(1.2.27)、jedis(3.1.0) 等版本
- 子模块 POM 改造:继承父 POM,删除硬编码版本号
- 添加 Docker 部署方案(complex + mall 双容器)
- 添加 ARCHITECTURE.md 架构文档(三套 DAO 层、冻结规范、新项目规范)
- 关联需求:REQ-20260421-0011

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xqzp2026
2026-04-21 16:56:25 +09:30
parent 49127bb6a7
commit d932a33a75
12 changed files with 2625 additions and 0 deletions

1
.gitignore vendored
View File

@@ -32,3 +32,4 @@ deploy/docker/.last-version
*.jar
sql/
docs.zip
deploy/docker-app/.current-version

258
backend/ARCHITECTURE.md Normal file
View File

@@ -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
├── 被旧 Appxiaoqu-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 内部存在三套独立的<E7AB8B><E79A84><EFBFBD>据访问机制连接两个数据库
```
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
<context:component-scan base-package="me.iiv.*"/> <!-- ① 自有层 -->
<context:component-scan base-package="xiaoqu.home.open.service.db1.*"/> <!-- ② db1 Service -->
<context:component-scan base-package="xiaoqu.home.open.service.db2.*"/> <!-- ② db2 Service -->
<context:component-scan base-package="org.home.open.*"/> <!-- ③ JdbcTemplate 层 -->
```
**springmvc.xml:**
```xml
<context:component-scan base-package="me.iiv.iivframework.controller"/>
<context:component-scan base-package="me.iiv.iivframework.aop.*"/>
<mvc:interceptors>
<bean class="me.iiv.iivframework.core.SystemInterceptor"/>
<bean class="me.iiv.iivframework.core.PermissionInterceptor"/>
</mvc:interceptors>
```
### 同名 @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-publicMyBatis-Plus
两个版本字段集合不完全相同,是各自独立演化的结果。
**处置方式:冻结原样,不做收敛。** 旧项目冻结后同名文件只做 bug 修复。
## 6. 旧项目冻结规范
Phase 1Maven 治理)完成后,以下模块进入冻结状态:
### 允许的变更
- Bug 修复
- 安全补丁(如依赖版本升级修复 CVE
### 禁止的变更
- 新增功能、新增接口
- 重构代码、统一包名
- 框架升级Spring Boot 等)
- 新增 DAO/Mapper/Entity
- 收敛同名文件
### 旧 DAO 层冻结说明
| DAO 层 | 冻结说明 |
|--------|---------|
| ① 自有 MyBatis41 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 等) | 主要消费方,变更需确保兼容 |
| 旧 Appxiaoqu-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 |

View File

@@ -0,0 +1,58 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-app-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../xiaoqu-app-parent/pom.xml</relativePath>
</parent>
<artifactId>ElasticsearchPublic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ElasticsearchPublic</name>
<dependencies>
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-public</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,423 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-app-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>xiaoqu-app-parent</name>
<description>App modules parent POM - unified dependency management</description>
<modules>
<module>../xiaoqu-public</module>
<module>../elasticsearchpublic</module>
<module>../xiaoqu-complex</module>
<module>../xiaoqu-mall</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- Spring -->
<springframework.version>5.0.0.RELEASE</springframework.version>
<spring-data-redis.version>2.2.3.RELEASE</spring-data-redis.version>
<!-- ORM -->
<mybatis-plus.version>3.4.0</mybatis-plus.version>
<mybatis-plus-generator.version>3.3.2</mybatis-plus-generator.version>
<mybatis-spring.version>2.1.1</mybatis-spring.version>
<pagehelper.version>3.7.5</pagehelper.version>
<velocity.version>2.2</velocity.version>
<!-- Database -->
<mysql-connector.version>5.1.49</mysql-connector.version>
<druid.version>1.2.27</druid.version>
<!-- Redis -->
<jedis.version>3.1.0</jedis.version>
<redisson.version>3.10.6</redisson.version>
<!-- Elasticsearch -->
<elasticsearch.version>7.7.1</elasticsearch.version>
<!-- JSON -->
<fastjson.version>1.2.83</fastjson.version>
<jackson.version>2.10.0</jackson.version>
<!-- Swagger -->
<springfox-swagger.version>2.9.2</springfox-swagger.version>
<swagger-models.version>1.5.21</swagger-models.version>
<swagger-bootstrap-ui.version>1.9.6</swagger-bootstrap-ui.version>
<!-- Logging -->
<log4j.version>1.2.17</log4j.version>
<slf4j.version>1.7.7</slf4j.version>
<!-- Commons -->
<commons-lang3.version>3.4</commons-lang3.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-codec.version>1.9</commons-codec.version>
<commons-io.version>2.6</commons-io.version>
<commons-httpclient.version>3.1</commons-httpclient.version>
<httpcore.version>4.4.6</httpcore.version>
<httpclient.version>4.5.2</httpclient.version>
<!-- Other -->
<lombok.version>1.18.18</lombok.version>
<hutool.version>5.8.4</hutool.version>
<aspectj.version>1.8.4</aspectj.version>
<aliyun-oss.version>3.8.0</aliyun-oss.version>
<javassist.version>3.19.0-GA</javassist.version>
<javax.validation.version>1.1.0.Final</javax.validation.version>
<tomcat-servlet-api.version>7.0.68</tomcat-servlet-api.version>
<jsoup.version>1.10.1</jsoup.version>
<classloader-leak.version>2.1.0</classloader-leak.version>
<!-- Internal modules -->
<xiaoqu-public.version>1.0-SNAPSHOT</xiaoqu-public.version>
<elasticsearchpublic.version>0.0.1-SNAPSHOT</elasticsearchpublic.version>
<xiaoqu-intellectual-public.version>0.0.1-SNAPSHOT</xiaoqu-intellectual-public.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- ==================== Internal Modules ==================== -->
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-public</artifactId>
<version>${xiaoqu-public.version}</version>
</dependency>
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>ElasticsearchPublic</artifactId>
<version>${elasticsearchpublic.version}</version>
</dependency>
<dependency>
<groupId>xiaoqu.home.open</groupId>
<artifactId>xiaoqu-intellectual-public</artifactId>
<version>${xiaoqu-intellectual-public.version}</version>
</dependency>
<!-- ==================== Spring ==================== -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>${spring-data-redis.version}</version>
</dependency>
<!-- ==================== ORM ==================== -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus-generator.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
<!-- ==================== Database ==================== -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- ==================== Redis ==================== -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>${redisson.version}</version>
</dependency>
<!-- ==================== Elasticsearch ==================== -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<!-- ==================== JSON ==================== -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-avro</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- ==================== Swagger ==================== -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox-swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
<version>${springfox-swagger.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger-models.version}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>${swagger-bootstrap-ui.version}</version>
</dependency>
<!-- ==================== Logging ==================== -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- ==================== Commons ==================== -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${commons-httpclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${httpcore.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${httpclient.version}</version>
</dependency>
<!-- ==================== Other ==================== -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun-oss.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${javax.validation.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>${tomcat-servlet-api.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>se.jiderhamn.classloader-leak-prevention</groupId>
<artifactId>classloader-leak-prevention-servlet</artifactId>
<version>${classloader-leak.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@@ -0,0 +1,689 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-app-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../xiaoqu-app-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xiaoqu-complex</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.tomcat.version>7.0.68</project.tomcat.version>
<project.deploy>deploy</project.deploy>
</properties>
<profiles>
<profile>
<id>test181</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<serviceId>test181</serviceId>
<system.state>test181</system.state>
<webserver.port>8091</webserver.port>
<logLevel>DEBUG</logLevel>
<baseUrl>http://192.168.1.181:8091</baseUrl>
<!-- mybatis日志配置 NO_LOGGING STDOUT_LOGGING -->
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://192.168.1.181:8091/manager/text</tomcatUrl>
<!--设备通信url -->
<HubUrl>http://192.168.1.181:8087/device/</HubUrl>
<!--SaaS后台url -->
<SaaSUrl>http://192.168.1.182:8093/</SaaSUrl>
<!-- log日志文件名 -->
<log4jFile>./log/app.log</log4jFile>
<!-- 文件图片相关服务配置 -->
<fileServiceUrl>http://192.168.1.181:8088</fileServiceUrl>
<!-- redis相关配置 -->
<redis.host>192.168.1.181</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>kaixinjiuhao</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d</servers.jdbc.jdbcUrl>
<!-- 数据库配置1 -->
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>kaixinjiuhao</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://192.168.1.181:3306/xiaoqu_intellectual_d</servers.jdbc.jdbcUrl1>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<!-- ES配置 -->
<es_hosts>192.168.1.152</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<!-- ES配置 -->
<es_hosts2>192.168.1.152</es_hosts2>
<es_port2>9200</es_port2>
<es_userName2></es_userName2>
<es_userPassword2></es_userPassword2>
<!-- 短信模板账号配置 -->
<phoneCallSmsUserName>xiaoqu</phoneCallSmsUserName>
<phoneCallSmsPassword>123456</phoneCallSmsPassword>
<SmsAdviseUserName>xiaoquadvise</SmsAdviseUserName>
<SmsAdviseUserPassword>541500</SmsAdviseUserPassword>
<xxl.job.admin.addresses>http://192.168.1.182:9080/xxl-job</xxl.job.admin.addresses>
<xxl.job.executor.appname>xiaoqu-franchisee</xxl.job.executor.appname>
</properties>
</profile>
<profile>
<id>test182</id>
<properties>
<serviceId>test182</serviceId>
<system.state>test182</system.state>
<webserver.port>8089</webserver.port>
<logLevel>DEBUG</logLevel>
<baseUrl>http://192.168.1.182:8086</baseUrl>
<!-- mybatis日志配置 NO_LOGGING STDOUT_LOGGING -->
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://192.168.1.182:8086/manager/text</tomcatUrl>
<!--设备通信url -->
<HubUrl>http://192.168.1.181:8087/device/</HubUrl>
<!--SaaS后台url -->
<SaaSUrl>http://192.168.1.182:8093/</SaaSUrl>
<!-- log日志文件名 -->
<log4jFile>./log/app.log</log4jFile>
<!-- 文件图片相关服务配置 -->
<fileServiceUrl>http://192.168.1.181:8088</fileServiceUrl>
<!-- redis相关配置 -->
<redis.host>192.168.1.181</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>kaixinjiuhao</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d</servers.jdbc.jdbcUrl>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<!-- ES配置 -->
<es_hosts>192.168.1.152</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<!-- ES配置 -->
<es_hosts2>192.168.1.152</es_hosts2>
<es_port2>9200</es_port2>
<es_userName2></es_userName2>
<es_userPassword2></es_userPassword2>
<!-- 短信模板账号配置 -->
<phoneCallSmsUserName>xiaoqu</phoneCallSmsUserName>
<phoneCallSmsPassword>123456</phoneCallSmsPassword>
<SmsAdviseUserName>xiaoquadvise</SmsAdviseUserName>
<SmsAdviseUserPassword>541500</SmsAdviseUserPassword>
<xxl.job.admin.addresses>http://192.168.1.182:9080/xxl-job</xxl.job.admin.addresses>
<xxl.job.executor.appname>xiaoqu-franchisee</xxl.job.executor.appname>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<serviceId>pre</serviceId>
<system.state>pre</system.state>
<webserver.port>8089</webserver.port>
<logLevel>DEBUG</logLevel>
<baseUrl>http://192.168.1.241:8086</baseUrl>
<!-- mybatis日志配置 NO_LOGGING STDOUT_LOGGING -->
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://192.168.1.241:8086/manager/text</tomcatUrl>
<!--设备通信url -->
<HubUrl>http://192.168.1.241:8087/device/</HubUrl>
<!--SaaS后台url -->
<SaaSUrl>http://192.168.1.182:8093/</SaaSUrl>
<!-- log日志文件名 -->
<log4jFile>./log/app.log</log4jFile>
<!-- 文件图片相关服务配置 -->
<fileServiceUrl>http://192.168.1.241:8088</fileServiceUrl>
<!-- redis相关配置 -->
<redis.host>192.168.1.181</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>Kaixinjiuhao2019</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://192.168.1.181:3306/xiaoqu_comples</servers.jdbc.jdbcUrl>
<!-- 数据库配置1 -->
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>Kaixinjiuhao2019</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://192.168.1.181:3306/xiaoqu_intellectual</servers.jdbc.jdbcUrl1>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<!-- ES配置 -->
<es_hosts>192.168.1.241</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<!-- ES配置 -->
<es_hosts2>192.168.1.241</es_hosts2>
<es_port2>9200</es_port2>
<es_userName2></es_userName2>
<es_userPassword2></es_userPassword2>
<!-- 短信模板账号配置 -->
<phoneCallSmsUserName>xiaoqu</phoneCallSmsUserName>
<phoneCallSmsPassword>123456</phoneCallSmsPassword>
<SmsAdviseUserName>xiaoquadvise</SmsAdviseUserName>
<SmsAdviseUserPassword>541500</SmsAdviseUserPassword>
<xxl.job.admin.addresses>http://192.168.1.241:9080/xxl-job</xxl.job.admin.addresses>
<xxl.job.executor.appname>xiaoqu-franchisee</xxl.job.executor.appname>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<system.state>prd</system.state>
<serviceId>prd</serviceId>
<webserver.port>6080</webserver.port>
<logLevel>DEBUG</logLevel>
<!-- web页面访问地址 <baseUrl>http://background.xiaoqukeji.com</baseUrl> -->
<baseUrl>http://background.xiaoqukeji.com:8080</baseUrl>
<!-- mybatis日志级别 -->
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<!-- 自动化部署tomcat地址 -->
<tomcatUrl>http://172.16.0.183:8080/manager/text</tomcatUrl>
<!--设备通信url -->
<HubUrl>http://www.ququtec.com/device/</HubUrl>
<!--SaaS后台url -->
<SaaSUrl>http://webserver.ququtech.cn:9480/</SaaSUrl>
<!-- 文件图片相关服务配置 -->
<fileServiceUrl>http://fileserver.xiaoqukeji.com:8082</fileServiceUrl>
<!-- redis相关配置 -->
<redis.host>r-2zeq2rwmlmequod12f.redis.rds.aliyuncs.com</redis.host>
<redis.port>6379</redis.port>
<redis.pass>Xdny7dvk</redis.pass>
<redis.db>5</redis.db>
<redis.db14>14</redis.db14>
<!-- 数据库 -->
<servers.jdbc.user>xiaoqu_yanfa</servers.jdbc.user>
<servers.jdbc.password>Xdny7dvk</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_complex</servers.jdbc.jdbcUrl>
<!-- 数据库配置1 -->
<servers.jdbc.user1>kaifa</servers.jdbc.user1>
<servers.jdbc.password1>zuo!QAZ2wsx!@#$</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://rm-2zeqo70cga7961912.mysql.rds.aliyuncs.com:3306/xiaoqu_intellectual</servers.jdbc.jdbcUrl1>
<!-- log日志文件名 -->
<log4jFile>./logs/app.log</log4jFile>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing-internal.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>online/</ossFolder>
<!-- ES配置 -->
<es_hosts>es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com</es_hosts>
<es_port>9200</es_port>
<es_userName>elastic</es_userName>
<es_userPassword>HKtG0VJt8rsR7zIF</es_userPassword>
<!-- ES配置 -->
<es_hosts2>114.253.9.110</es_hosts2>
<es_port2>19800</es_port2>
<es_userName2>elastic</es_userName2>
<es_userPassword2>0a0sp22b4O0Q</es_userPassword2>
<!-- 短信模板账号配置 -->
<phoneCallSmsUserName>xqyuyin</phoneCallSmsUserName>
<phoneCallSmsPassword>qazwsx</phoneCallSmsPassword>
<SmsAdviseUserName>xiaoquadvise</SmsAdviseUserName>
<SmsAdviseUserPassword>541500</SmsAdviseUserPassword>
<xxl.job.admin.addresses>http://job.ququtech.cn:9380/xxl-job</xxl.job.admin.addresses>
<xxl.job.executor.appname>xiaoqu-franchisee</xxl.job.executor.appname>
</properties>
</profile>
<profile>
<id>docker</id>
<properties>
<serviceId>docker</serviceId>
<system.state>docker</system.state>
<webserver.port>8091</webserver.port>
<logLevel>DEBUG</logLevel>
<baseUrl>http://localhost:8091</baseUrl>
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://localhost:8091/manager/text</tomcatUrl>
<HubUrl>http://host.docker.internal:8087/device/</HubUrl>
<SaaSUrl>http://host.docker.internal:8093/</SaaSUrl>
<log4jFile>./log/app.log</log4jFile>
<fileServiceUrl>http://host.docker.internal:8088</fileServiceUrl>
<redis.host>host.docker.internal</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>kaixinjiuhao</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://host.docker.internal:3306/xiaoqu_comples_d</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>kaixinjiuhao</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://host.docker.internal:3306/xiaoqu_intellectual_d</servers.jdbc.jdbcUrl1>
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<es_hosts>host.docker.internal</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<es_hosts2>host.docker.internal</es_hosts2>
<es_port2>9200</es_port2>
<es_userName2></es_userName2>
<es_userPassword2></es_userPassword2>
<phoneCallSmsUserName>xiaoqu</phoneCallSmsUserName>
<phoneCallSmsPassword>123456</phoneCallSmsPassword>
<SmsAdviseUserName>xiaoquadvise</SmsAdviseUserName>
<SmsAdviseUserPassword>541500</SmsAdviseUserPassword>
<xxl.job.admin.addresses></xxl.job.admin.addresses>
<xxl.job.executor.appname>xiaoqu-franchisee</xxl.job.executor.appname>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
<dependency>
<groupId>xiaoqu.home.open</groupId>
<artifactId>xiaoqu-intellectual-public</artifactId>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/com.yookue.forkextension.pinyin4j/pinyin4j -->
<dependency>
<groupId>com.yookue.forkextension.pinyin4j</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.6.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>ElasticsearchPublic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-public</artifactId>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>net.sf.flexjson</groupId>
<artifactId>flexjson</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-avro</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml/classmate -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
</dependency>
<!-- /swagger -->
<!-- 阿里云短信服务 -->
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
</dependency>
<dependency>
<groupId>se.jiderhamn.classloader-leak-prevention</groupId>
<artifactId>classloader-leak-prevention-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
<build>
<finalName>ROOT</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!--tomcat manager发布 -->
<!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version> <configuration> <url>http://127.0.0.1:8080/manager/text</url>
<username>tomcat</username> <password>tomcat</password> <server>tomcat</server>
<path>/</path> <update>true</update> </configuration> </plugin> -->
<!--tomcat manager发布 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>${tomcatUrl}</url>
<username>_qfbAdmin</username>
<password>_qfb2587</password>
<path>/</path>
<update>true</update>
</configuration>
</plugin>
<!-- jetty插件 -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.8.v20171121</version>
<configuration>
<httpConnector>
<port>${webserver.port}</port>
</httpConnector>
<webAppConfig>
<contextPath>/</contextPath>
<defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
</webAppConfig>
<systemProperties>
<systemProperty>
<name>org.mortbay.util.URI.charset</name>
<value>${project.build.sourceEncoding}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</project>

723
backend/xiaoqu-mall/pom.xml Normal file
View File

@@ -0,0 +1,723 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-app-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../xiaoqu-app-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xiaoqu-mall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.tomcat.version>7.0.68</project.tomcat.version>
<project.deploy>deploy</project.deploy>
</properties>
<profiles>
<profile>
<id>test181</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<serviceId>test181</serviceId>
<system.state>test181</system.state>
<webserver.port>8090</webserver.port>
<logLevel>DEBUG</logLevel>
<!-- <baseUrl>http://192.168.1.187:8086</baseUrl>-->
<!-- <baseUrl>http://192.168.1.152:8086</baseUrl>-->
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://192.168.1.152:8086/manager/text</tomcatUrl>
<!-- log日志文件名 -->
<log4jFile>./logs/mall.log</log4jFile>
<!-- 字体文件目录 -->
<fontPath>/user/local/font/</fontPath>
<!-- redis相关配置 -->
<redis.host>192.168.1.181</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>kaixinjiuhao</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://192.168.1.181:3306/xiaoqu_comples_d</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>kaixinjiuhao</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://192.168.1.181:3306/xiaoqu_mall_d</servers.jdbc.jdbcUrl1>
<servers.jdbc.user2>root</servers.jdbc.user2>
<servers.jdbc.password2>kaixinjiuhao</servers.jdbc.password2>
<servers.jdbc.jdbcUrl2>jdbc:mysql://192.168.1.181:3306/xiaoqu_franchisee_d</servers.jdbc.jdbcUrl2>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<!-- ES配置 -->
<es_hosts>192.168.1.152</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<!-- 异步通知接口 -->
<mail_NotifyUrl>http://192.168.1.152:8086/open/mailVerification/</mail_NotifyUrl>
<!-- 支付宝支付参数设置 -->
<alipay_Aateway>https://openapi.alipay.com/gateway.do</alipay_Aateway>
<alipay_APPID>2021001189634432</alipay_APPID>
<alipay_APP_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi+jL/b7aMNcYZ0zP4pPAAW5juJLoUrh26VkAOJ4vPznjaEZhFu7zxd+PYz0ppBe8dJHs1nwhMrQ4hyYEFs6YGfNKqGxdWVtBmVyzYjRluJ8epjEDloN1DA9UpnkHR56SX6LS1wMAx31LC7dW6PT2G1XY5rFHFlJEMZBSJC7C/rZERoiV0EsaAsIqZeFyTtwQ0qLSWzHOj2odw2ACjmWlkACw4VWf2gz7XjDnxV2FG+3STJDcRfI+Cw0fThBoMPA409KkKmGJkVaz9HIXJrDLupRkYkz8uRfOv/gs9rmuJjZ5hEk0G+wA3X3+7ZA1Mo5PYeYYQsIipn2njlBrN1SVEwIDAQAB</alipay_APP_PUBLIC_KEY>
<alipay_PRIVATE_KEY>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6Mv9vtow1xhnTM/ik8ABbmO4kuhSuHbpWQA4ni8/OeNoRmEW7vPF349jPSmkF7x0kezWfCEytDiHJgQWzpgZ80qobF1ZW0GZXLNiNGW4nx6mMQOWg3UMD1SmeQdHnpJfotLXAwDHfUsLt1bo9PYbVdjmsUcWUkQxkFIkLsL+tkRGiJXQSxoCwipl4XJO3BDSotJbMc6Pah3DYAKOZaWQALDhVZ/aDPteMOfFXYUb7dJMkNxF8j4LDR9OEGgw8DjT0qQqYYmRVrP0chcmsMu6lGRiTPy5F86/+Cz2ua4mNnmESTQb7ADdff7tkDUyjk9h5hhCwiKmfaeOUGs3VJUTAgMBAAECggEAfUKgl/6uNHnvNFUV7gJgLifaCh8k9yKF++ceBpLBNDcsvWf9dt3azLaaFrxksrA5npgjVehuhInL7lv/3zd6AAnNNrtGXEESmy7ev7avt7pmY16Qmsn5GiIDpMPI27tBy3Polm3u3av0a3nqysi+Kr0SY4AmZ/qhaUqP8CsZk5bW/MLn5+qdnuFC2kb5skm0OJmu8bt0EK30KAAXUJCXBhYagJFHIku5I1TfdXzfY6I/uSFeZ1i9CLB8qgzK5F9daANEsTy9CsgWAdY6nRwdRQSe+QOJpFvLTW3kQZcC0nZAtFBtwz/oQLohZmq/6w1oiinIuOoLqL03szqYudSqaQKBgQD2kbpMKIh/gEFem4/py0HZOIZ12m/EPov4S1tKpkHDxTK0IMyoVqlQImPrb6i+q87MhuS2p8G1uyNrjqiYw4dx+fUYpaiCdaphP1C1RO/HTnhzP8hfuSxpYiY6BnzIrCNUs673P55daCOapUi+sXqOdr2Hgkuxt3udIYFi05+p1QKBgQCRQrag50C8a90qqWi0khcaGjEhm/EzdoHmWocY12iNpgLBY+wXbjmXDe2MO/aBKOe914DyRnLduZ4nq7Id9x9W5PZEYs+/x3va8W0fUpL0i3HfIDrFTkFtak+CXbshN7MreGhrpGj88grFPl6+FJJmkRZBHW9o6lO1yg7k+jUPRwKBgQC+gOtqairEMAjRmul/Hk67EQQ6TFHsUtL8POTE8V2Ab3z0VR8qtQJN6rQ+tF+xKbc2qMZPJZ/x1CvSrz8uAGxGsHQg3eUrHtRMHIoz85Y67DL+AHrFEqHwrieQz3Bb7zvA9q8pUtr9mjdgBXIF+8QQDEf1ScNIBNaaGcgI3i7PHQKBgAU0Sq7BGkSl6KqanzG4+jLpNVFq8N1TJZxHKgftz8UjaX3cQp0kSdPrn9MiYtaFzKe0jN4hQARJniz1rc/9BpZqZZhVofPRBdL2S16P6svwIwhHc1OWVinBYU/eY9Hw2O55xeP1Y/2L/m7KqUJOImCiWhXDJDayDoW404fInxYJAoGAIFpimnRBqfPezT2x6S+VOW49dR728w2FL0UcZYGzvaCe8NGuwyh5oqW08rwqlk5+1X+KUVWuciIs6gtq8cBqvif1TTXPK7jDw4du3qC/0rs48N69F9oCziVUaGlcPJK9hK+vt+bhqPaBgFpc3PBLq7SvIn7qyeRl7QAUuD3SFs8=</alipay_PRIVATE_KEY>
<alipay_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwRK3BFqKVz4RZE2nhfKykRosbUljBwfZlxPX3jBFCPOmxFJmkS+iMh/ei4nFxtmsf3KK5D9N2GhIVJElxb8/x7vcF0+exyqJakKM1LyNh7nuaTE2cKBwLY7mE3252lEhkWkHaJdf7nsezxaBJW5kBlal0tNYguGDmHF3xsiiZT3Zf4VHq0hNuQeUiV5C83sHJuf5iB6Te6Qvj0aOMug7RSOnLq1GOe/S18iT8YR2FuuqYIcVsNA+XYVsTHCSRsVnqn6FB/CcmJevJ3SKRBqQekMXAF41i2JyobPZmHiFRYTwYvbIF43lHIOUFS/XZqN5VOUThKZvp0sP6OTmNA+awIDAQAB</alipay_PUBLIC_KEY>
<alipay_NotifyUrl>http://114.253.9.110:8086/alipay/asyncPayNotify</alipay_NotifyUrl>
<!-- 短信账号 -->
<userName>xiaoquadvise</userName>
<userPassword>541500</userPassword>
<!-- 微信支付 -->
<weiXinAppID>wxe9ca033dd79a1c99</weiXinAppID>
<wxMchId>1603299889</wxMchId>
<wxApiKey>0D89A48337D9215817A9EECA26F5F878</wxApiKey>
<wxSpbillCreateIp>114.253.9.110</wxSpbillCreateIp>
<wxNotifyUrlIp>http://114.253.9.110:8086/weiXin/asyncPayNotify</wxNotifyUrlIp>
<verifyReceivableUrl>http://192.168.1.182:8887/xiaoqu/verifyReceivable</verifyReceivableUrl>
<!--SaaS后台url -->
<SaaSUrl>http://192.168.1.182:8093/</SaaSUrl>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<serviceId>pre</serviceId>
<system.state>pre</system.state>
<webserver.port>8089</webserver.port>
<logLevel>DEBUG</logLevel>
<baseUrl>http://192.168.1.241:8089</baseUrl>
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://192.168.1.241:8089/manager/text</tomcatUrl>
<!-- log日志文件名 -->
<log4jFile>./logs/mall.log</log4jFile>
<!-- 字体文件目录 -->
<fontPath>/user/local/font/</fontPath>
<!-- redis相关配置 -->
<redis.host>192.168.1.181</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>Kaixinjiuhao2019</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://192.168.1.181:3306/xiaoqu_comples</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>Kaixinjiuhao2019</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://192.168.1.181:3306/xiaoqu_mall</servers.jdbc.jdbcUrl1>
<servers.jdbc.user2>root</servers.jdbc.user2>
<servers.jdbc.password2>Kaixinjiuhao2019</servers.jdbc.password2>
<servers.jdbc.jdbcUrl2>jdbc:mysql://192.168.1.181:3306/xiaoqu_franchisee</servers.jdbc.jdbcUrl2>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<!-- ES配置 -->
<es_hosts>192.168.1.241</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<!-- 异步通知接口 -->
<mail_NotifyUrl>http://192.168.1.241:8086/open/mailVerification/</mail_NotifyUrl>
<!-- 支付宝支付参数设置 -->
<alipay_Aateway>https://openapi.alipay.com/gateway.do</alipay_Aateway>
<alipay_APPID>2021001189634432</alipay_APPID>
<alipay_APP_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi+jL/b7aMNcYZ0zP4pPAAW5juJLoUrh26VkAOJ4vPznjaEZhFu7zxd+PYz0ppBe8dJHs1nwhMrQ4hyYEFs6YGfNKqGxdWVtBmVyzYjRluJ8epjEDloN1DA9UpnkHR56SX6LS1wMAx31LC7dW6PT2G1XY5rFHFlJEMZBSJC7C/rZERoiV0EsaAsIqZeFyTtwQ0qLSWzHOj2odw2ACjmWlkACw4VWf2gz7XjDnxV2FG+3STJDcRfI+Cw0fThBoMPA409KkKmGJkVaz9HIXJrDLupRkYkz8uRfOv/gs9rmuJjZ5hEk0G+wA3X3+7ZA1Mo5PYeYYQsIipn2njlBrN1SVEwIDAQAB</alipay_APP_PUBLIC_KEY>
<alipay_PRIVATE_KEY>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6Mv9vtow1xhnTM/ik8ABbmO4kuhSuHbpWQA4ni8/OeNoRmEW7vPF349jPSmkF7x0kezWfCEytDiHJgQWzpgZ80qobF1ZW0GZXLNiNGW4nx6mMQOWg3UMD1SmeQdHnpJfotLXAwDHfUsLt1bo9PYbVdjmsUcWUkQxkFIkLsL+tkRGiJXQSxoCwipl4XJO3BDSotJbMc6Pah3DYAKOZaWQALDhVZ/aDPteMOfFXYUb7dJMkNxF8j4LDR9OEGgw8DjT0qQqYYmRVrP0chcmsMu6lGRiTPy5F86/+Cz2ua4mNnmESTQb7ADdff7tkDUyjk9h5hhCwiKmfaeOUGs3VJUTAgMBAAECggEAfUKgl/6uNHnvNFUV7gJgLifaCh8k9yKF++ceBpLBNDcsvWf9dt3azLaaFrxksrA5npgjVehuhInL7lv/3zd6AAnNNrtGXEESmy7ev7avt7pmY16Qmsn5GiIDpMPI27tBy3Polm3u3av0a3nqysi+Kr0SY4AmZ/qhaUqP8CsZk5bW/MLn5+qdnuFC2kb5skm0OJmu8bt0EK30KAAXUJCXBhYagJFHIku5I1TfdXzfY6I/uSFeZ1i9CLB8qgzK5F9daANEsTy9CsgWAdY6nRwdRQSe+QOJpFvLTW3kQZcC0nZAtFBtwz/oQLohZmq/6w1oiinIuOoLqL03szqYudSqaQKBgQD2kbpMKIh/gEFem4/py0HZOIZ12m/EPov4S1tKpkHDxTK0IMyoVqlQImPrb6i+q87MhuS2p8G1uyNrjqiYw4dx+fUYpaiCdaphP1C1RO/HTnhzP8hfuSxpYiY6BnzIrCNUs673P55daCOapUi+sXqOdr2Hgkuxt3udIYFi05+p1QKBgQCRQrag50C8a90qqWi0khcaGjEhm/EzdoHmWocY12iNpgLBY+wXbjmXDe2MO/aBKOe914DyRnLduZ4nq7Id9x9W5PZEYs+/x3va8W0fUpL0i3HfIDrFTkFtak+CXbshN7MreGhrpGj88grFPl6+FJJmkRZBHW9o6lO1yg7k+jUPRwKBgQC+gOtqairEMAjRmul/Hk67EQQ6TFHsUtL8POTE8V2Ab3z0VR8qtQJN6rQ+tF+xKbc2qMZPJZ/x1CvSrz8uAGxGsHQg3eUrHtRMHIoz85Y67DL+AHrFEqHwrieQz3Bb7zvA9q8pUtr9mjdgBXIF+8QQDEf1ScNIBNaaGcgI3i7PHQKBgAU0Sq7BGkSl6KqanzG4+jLpNVFq8N1TJZxHKgftz8UjaX3cQp0kSdPrn9MiYtaFzKe0jN4hQARJniz1rc/9BpZqZZhVofPRBdL2S16P6svwIwhHc1OWVinBYU/eY9Hw2O55xeP1Y/2L/m7KqUJOImCiWhXDJDayDoW404fInxYJAoGAIFpimnRBqfPezT2x6S+VOW49dR728w2FL0UcZYGzvaCe8NGuwyh5oqW08rwqlk5+1X+KUVWuciIs6gtq8cBqvif1TTXPK7jDw4du3qC/0rs48N69F9oCziVUaGlcPJK9hK+vt+bhqPaBgFpc3PBLq7SvIn7qyeRl7QAUuD3SFs8=</alipay_PRIVATE_KEY>
<alipay_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwRK3BFqKVz4RZE2nhfKykRosbUljBwfZlxPX3jBFCPOmxFJmkS+iMh/ei4nFxtmsf3KK5D9N2GhIVJElxb8/x7vcF0+exyqJakKM1LyNh7nuaTE2cKBwLY7mE3252lEhkWkHaJdf7nsezxaBJW5kBlal0tNYguGDmHF3xsiiZT3Zf4VHq0hNuQeUiV5C83sHJuf5iB6Te6Qvj0aOMug7RSOnLq1GOe/S18iT8YR2FuuqYIcVsNA+XYVsTHCSRsVnqn6FB/CcmJevJ3SKRBqQekMXAF41i2JyobPZmHiFRYTwYvbIF43lHIOUFS/XZqN5VOUThKZvp0sP6OTmNA+awIDAQAB</alipay_PUBLIC_KEY>
<alipay_NotifyUrl>http://114.253.9.110:8086/alipay/asyncPayNotify</alipay_NotifyUrl>
<!-- 短信账号 -->
<userName>xiaoquadvise</userName>
<userPassword>541500</userPassword>
<!-- 微信支付 -->
<weiXinAppID>wxe9ca033dd79a1c99</weiXinAppID>
<wxMchId>1603299889</wxMchId>
<wxApiKey>0D89A48337D9215817A9EECA26F5F878</wxApiKey>
<wxSpbillCreateIp>114.253.9.110</wxSpbillCreateIp>
<wxNotifyUrlIp>http://114.253.9.110:20000/weiXin/asyncPayNotify</wxNotifyUrlIp>
<verifyReceivableUrl>http://192.168.1.182:8887/xiaoqu/verifyReceivable</verifyReceivableUrl>
<!--SaaS后台url -->
<SaaSUrl>http://192.168.1.182:8093/</SaaSUrl>
</properties>
</profile>
<profile>
<id>prdw</id>
<properties>
<system.state>prdw</system.state>
<serviceId>prdw</serviceId>
<webserver.port>6080</webserver.port>
<logLevel>DEBUG</logLevel>
<!-- web页面访问地址 <baseUrl>http://background.xiaoqukeji.com</baseUrl> -->
<baseUrl>http://www.xqzhipin.com:8666</baseUrl>
<!-- 自动化部署tomcat地址 -->
<tomcatUrl>http://172.16.0.178:8666/manager/text</tomcatUrl>
<!-- log日志文件名 -->
<log4jFile>./logs/mall.log</log4jFile>
<!-- 字体文件目录 -->
<fontPath>/user/local/font/</fontPath>
<!-- redis相关配置 -->
<redis.host>r-2zeq2rwmlmequod12fpd.redis.rds.aliyuncs.com</redis.host>
<redis.port>6379</redis.port>
<redis.pass>Xdny7dvk</redis.pass>
<redis.db>5</redis.db>
<redis.db14>14</redis.db14>
<!-- 数据库 -->
<servers.jdbc.user>xiaoqu_yanfa</servers.jdbc.user>
<servers.jdbc.password>Xdny7dvk</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_complex</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>xiaoqu_yanfa</servers.jdbc.user1>
<servers.jdbc.password1>Xdny7dvk</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_mall</servers.jdbc.jdbcUrl1>
<servers.jdbc.user2>xiaoqu_yanfa</servers.jdbc.user2>
<servers.jdbc.password2>Xdny7dvk</servers.jdbc.password2>
<servers.jdbc.jdbcUrl2>jdbc:mysql://rm-2zerw72wwh56sj214xo.mysql.rds.aliyuncs.com:3306/xiaoqu_franchisee</servers.jdbc.jdbcUrl2>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>online/</ossFolder>
<!-- ES配置 -->
<es_hosts>es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com</es_hosts>
<es_port>9200</es_port>
<es_userName>elastic</es_userName>
<es_userPassword>HKtG0VJt8rsR7zIF</es_userPassword>
<!-- 异步通知接口 -->
<mail_NotifyUrl>http://www.xqzhipin.com:8666/open/mailVerification/</mail_NotifyUrl>
<!-- 支付宝支付参数设置 -->
<alipay_Aateway>https://openapi.alipay.com/gateway.do</alipay_Aateway>
<alipay_APPID>2021001189634432</alipay_APPID>
<alipay_APP_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi+jL/b7aMNcYZ0zP4pPAAW5juJLoUrh26VkAOJ4vPznjaEZhFu7zxd+PYz0ppBe8dJHs1nwhMrQ4hyYEFs6YGfNKqGxdWVtBmVyzYjRluJ8epjEDloN1DA9UpnkHR56SX6LS1wMAx31LC7dW6PT2G1XY5rFHFlJEMZBSJC7C/rZERoiV0EsaAsIqZeFyTtwQ0qLSWzHOj2odw2ACjmWlkACw4VWf2gz7XjDnxV2FG+3STJDcRfI+Cw0fThBoMPA409KkKmGJkVaz9HIXJrDLupRkYkz8uRfOv/gs9rmuJjZ5hEk0G+wA3X3+7ZA1Mo5PYeYYQsIipn2njlBrN1SVEwIDAQAB</alipay_APP_PUBLIC_KEY>
<alipay_PRIVATE_KEY>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6Mv9vtow1xhnTM/ik8ABbmO4kuhSuHbpWQA4ni8/OeNoRmEW7vPF349jPSmkF7x0kezWfCEytDiHJgQWzpgZ80qobF1ZW0GZXLNiNGW4nx6mMQOWg3UMD1SmeQdHnpJfotLXAwDHfUsLt1bo9PYbVdjmsUcWUkQxkFIkLsL+tkRGiJXQSxoCwipl4XJO3BDSotJbMc6Pah3DYAKOZaWQALDhVZ/aDPteMOfFXYUb7dJMkNxF8j4LDR9OEGgw8DjT0qQqYYmRVrP0chcmsMu6lGRiTPy5F86/+Cz2ua4mNnmESTQb7ADdff7tkDUyjk9h5hhCwiKmfaeOUGs3VJUTAgMBAAECggEAfUKgl/6uNHnvNFUV7gJgLifaCh8k9yKF++ceBpLBNDcsvWf9dt3azLaaFrxksrA5npgjVehuhInL7lv/3zd6AAnNNrtGXEESmy7ev7avt7pmY16Qmsn5GiIDpMPI27tBy3Polm3u3av0a3nqysi+Kr0SY4AmZ/qhaUqP8CsZk5bW/MLn5+qdnuFC2kb5skm0OJmu8bt0EK30KAAXUJCXBhYagJFHIku5I1TfdXzfY6I/uSFeZ1i9CLB8qgzK5F9daANEsTy9CsgWAdY6nRwdRQSe+QOJpFvLTW3kQZcC0nZAtFBtwz/oQLohZmq/6w1oiinIuOoLqL03szqYudSqaQKBgQD2kbpMKIh/gEFem4/py0HZOIZ12m/EPov4S1tKpkHDxTK0IMyoVqlQImPrb6i+q87MhuS2p8G1uyNrjqiYw4dx+fUYpaiCdaphP1C1RO/HTnhzP8hfuSxpYiY6BnzIrCNUs673P55daCOapUi+sXqOdr2Hgkuxt3udIYFi05+p1QKBgQCRQrag50C8a90qqWi0khcaGjEhm/EzdoHmWocY12iNpgLBY+wXbjmXDe2MO/aBKOe914DyRnLduZ4nq7Id9x9W5PZEYs+/x3va8W0fUpL0i3HfIDrFTkFtak+CXbshN7MreGhrpGj88grFPl6+FJJmkRZBHW9o6lO1yg7k+jUPRwKBgQC+gOtqairEMAjRmul/Hk67EQQ6TFHsUtL8POTE8V2Ab3z0VR8qtQJN6rQ+tF+xKbc2qMZPJZ/x1CvSrz8uAGxGsHQg3eUrHtRMHIoz85Y67DL+AHrFEqHwrieQz3Bb7zvA9q8pUtr9mjdgBXIF+8QQDEf1ScNIBNaaGcgI3i7PHQKBgAU0Sq7BGkSl6KqanzG4+jLpNVFq8N1TJZxHKgftz8UjaX3cQp0kSdPrn9MiYtaFzKe0jN4hQARJniz1rc/9BpZqZZhVofPRBdL2S16P6svwIwhHc1OWVinBYU/eY9Hw2O55xeP1Y/2L/m7KqUJOImCiWhXDJDayDoW404fInxYJAoGAIFpimnRBqfPezT2x6S+VOW49dR728w2FL0UcZYGzvaCe8NGuwyh5oqW08rwqlk5+1X+KUVWuciIs6gtq8cBqvif1TTXPK7jDw4du3qC/0rs48N69F9oCziVUaGlcPJK9hK+vt+bhqPaBgFpc3PBLq7SvIn7qyeRl7QAUuD3SFs8=</alipay_PRIVATE_KEY>
<alipay_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwRK3BFqKVz4RZE2nhfKykRosbUljBwfZlxPX3jBFCPOmxFJmkS+iMh/ei4nFxtmsf3KK5D9N2GhIVJElxb8/x7vcF0+exyqJakKM1LyNh7nuaTE2cKBwLY7mE3252lEhkWkHaJdf7nsezxaBJW5kBlal0tNYguGDmHF3xsiiZT3Zf4VHq0hNuQeUiV5C83sHJuf5iB6Te6Qvj0aOMug7RSOnLq1GOe/S18iT8YR2FuuqYIcVsNA+XYVsTHCSRsVnqn6FB/CcmJevJ3SKRBqQekMXAF41i2JyobPZmHiFRYTwYvbIF43lHIOUFS/XZqN5VOUThKZvp0sP6OTmNA+awIDAQAB</alipay_PUBLIC_KEY>
<alipay_NotifyUrl>http://www.xqzhipin.com:8666/alipay/asyncPayNotify</alipay_NotifyUrl>
<!-- 短信账号 -->
<userName>xiaoquadvise</userName>
<userPassword>541500</userPassword>
<!-- 微信支付 -->
<weiXinAppID>wxe9ca033dd79a1c99</weiXinAppID>
<wxMchId>1603299889</wxMchId>
<wxApiKey>0D89A48337D9215817A9EECA26F5F878</wxApiKey>
<wxSpbillCreateIp>39.106.48.85</wxSpbillCreateIp>
<wxNotifyUrlIp>http://www.xqzhipin.com:8666/weiXin/asyncPayNotify</wxNotifyUrlIp>
<verifyReceivableUrl>>http://192.168.1.182:8887/xiaoqu/verifyReceivable</verifyReceivableUrl>
<!--SaaS后台url -->
<SaaSUrl>http://webserver.ququtech.cn:9480/</SaaSUrl>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<system.state>prd</system.state>
<serviceId>prd</serviceId>
<webserver.port>6080</webserver.port>
<logLevel>DEBUG</logLevel>
<!-- web页面访问地址 <baseUrl>http://background.xiaoqukeji.com</baseUrl> -->
<baseUrl>http://www.xqzhipin.com:8666</baseUrl>
<!-- 自动化部署tomcat地址 -->
<tomcatUrl>http://172.16.0.178:8666/manager/text</tomcatUrl>
<!-- log日志文件名 -->
<log4jFile>./logs/mall.log</log4jFile>
<!-- 字体文件目录 -->
<fontPath>/user/local/font/</fontPath>
<!-- redis相关配置 -->
<redis.host>r-2zeq2rwmlmequod12f.redis.rds.aliyuncs.com</redis.host>
<redis.port>6379</redis.port>
<redis.pass>Xdny7dvk</redis.pass>
<redis.db>5</redis.db>
<redis.db14>14</redis.db14>
<!-- 数据库 -->
<servers.jdbc.user>xiaoqu_yanfa</servers.jdbc.user>
<servers.jdbc.password>Xdny7dvk</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_complex</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>xiaoqu_yanfa</servers.jdbc.user1>
<servers.jdbc.password1>Xdny7dvk</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_mall</servers.jdbc.jdbcUrl1>
<servers.jdbc.user2>xiaoqu_yanfa</servers.jdbc.user2>
<servers.jdbc.password2>Xdny7dvk</servers.jdbc.password2>
<servers.jdbc.jdbcUrl2>jdbc:mysql://rm-2zerw72wwh56sj214.mysql.rds.aliyuncs.com:3306/xiaoqu_franchisee</servers.jdbc.jdbcUrl2>
<!-- 个推配置 -->
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<!-- 阿里云OSS配置 -->
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>online/</ossFolder>
<!-- ES配置 -->
<es_hosts>es-cn-oew1s2nrv00110ppc.elasticsearch.aliyuncs.com</es_hosts>
<es_port>9200</es_port>
<es_userName>elastic</es_userName>
<es_userPassword>HKtG0VJt8rsR7zIF</es_userPassword>
<!-- 异步通知接口 -->
<mail_NotifyUrl>http://www.xqzhipin.com:8666/open/mailVerification/</mail_NotifyUrl>
<!-- 支付宝支付参数设置 -->
<alipay_Aateway>https://openapi.alipay.com/gateway.do</alipay_Aateway>
<alipay_APPID>2021001189634432</alipay_APPID>
<alipay_APP_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi+jL/b7aMNcYZ0zP4pPAAW5juJLoUrh26VkAOJ4vPznjaEZhFu7zxd+PYz0ppBe8dJHs1nwhMrQ4hyYEFs6YGfNKqGxdWVtBmVyzYjRluJ8epjEDloN1DA9UpnkHR56SX6LS1wMAx31LC7dW6PT2G1XY5rFHFlJEMZBSJC7C/rZERoiV0EsaAsIqZeFyTtwQ0qLSWzHOj2odw2ACjmWlkACw4VWf2gz7XjDnxV2FG+3STJDcRfI+Cw0fThBoMPA409KkKmGJkVaz9HIXJrDLupRkYkz8uRfOv/gs9rmuJjZ5hEk0G+wA3X3+7ZA1Mo5PYeYYQsIipn2njlBrN1SVEwIDAQAB</alipay_APP_PUBLIC_KEY>
<alipay_PRIVATE_KEY>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6Mv9vtow1xhnTM/ik8ABbmO4kuhSuHbpWQA4ni8/OeNoRmEW7vPF349jPSmkF7x0kezWfCEytDiHJgQWzpgZ80qobF1ZW0GZXLNiNGW4nx6mMQOWg3UMD1SmeQdHnpJfotLXAwDHfUsLt1bo9PYbVdjmsUcWUkQxkFIkLsL+tkRGiJXQSxoCwipl4XJO3BDSotJbMc6Pah3DYAKOZaWQALDhVZ/aDPteMOfFXYUb7dJMkNxF8j4LDR9OEGgw8DjT0qQqYYmRVrP0chcmsMu6lGRiTPy5F86/+Cz2ua4mNnmESTQb7ADdff7tkDUyjk9h5hhCwiKmfaeOUGs3VJUTAgMBAAECggEAfUKgl/6uNHnvNFUV7gJgLifaCh8k9yKF++ceBpLBNDcsvWf9dt3azLaaFrxksrA5npgjVehuhInL7lv/3zd6AAnNNrtGXEESmy7ev7avt7pmY16Qmsn5GiIDpMPI27tBy3Polm3u3av0a3nqysi+Kr0SY4AmZ/qhaUqP8CsZk5bW/MLn5+qdnuFC2kb5skm0OJmu8bt0EK30KAAXUJCXBhYagJFHIku5I1TfdXzfY6I/uSFeZ1i9CLB8qgzK5F9daANEsTy9CsgWAdY6nRwdRQSe+QOJpFvLTW3kQZcC0nZAtFBtwz/oQLohZmq/6w1oiinIuOoLqL03szqYudSqaQKBgQD2kbpMKIh/gEFem4/py0HZOIZ12m/EPov4S1tKpkHDxTK0IMyoVqlQImPrb6i+q87MhuS2p8G1uyNrjqiYw4dx+fUYpaiCdaphP1C1RO/HTnhzP8hfuSxpYiY6BnzIrCNUs673P55daCOapUi+sXqOdr2Hgkuxt3udIYFi05+p1QKBgQCRQrag50C8a90qqWi0khcaGjEhm/EzdoHmWocY12iNpgLBY+wXbjmXDe2MO/aBKOe914DyRnLduZ4nq7Id9x9W5PZEYs+/x3va8W0fUpL0i3HfIDrFTkFtak+CXbshN7MreGhrpGj88grFPl6+FJJmkRZBHW9o6lO1yg7k+jUPRwKBgQC+gOtqairEMAjRmul/Hk67EQQ6TFHsUtL8POTE8V2Ab3z0VR8qtQJN6rQ+tF+xKbc2qMZPJZ/x1CvSrz8uAGxGsHQg3eUrHtRMHIoz85Y67DL+AHrFEqHwrieQz3Bb7zvA9q8pUtr9mjdgBXIF+8QQDEf1ScNIBNaaGcgI3i7PHQKBgAU0Sq7BGkSl6KqanzG4+jLpNVFq8N1TJZxHKgftz8UjaX3cQp0kSdPrn9MiYtaFzKe0jN4hQARJniz1rc/9BpZqZZhVofPRBdL2S16P6svwIwhHc1OWVinBYU/eY9Hw2O55xeP1Y/2L/m7KqUJOImCiWhXDJDayDoW404fInxYJAoGAIFpimnRBqfPezT2x6S+VOW49dR728w2FL0UcZYGzvaCe8NGuwyh5oqW08rwqlk5+1X+KUVWuciIs6gtq8cBqvif1TTXPK7jDw4du3qC/0rs48N69F9oCziVUaGlcPJK9hK+vt+bhqPaBgFpc3PBLq7SvIn7qyeRl7QAUuD3SFs8=</alipay_PRIVATE_KEY>
<alipay_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwRK3BFqKVz4RZE2nhfKykRosbUljBwfZlxPX3jBFCPOmxFJmkS+iMh/ei4nFxtmsf3KK5D9N2GhIVJElxb8/x7vcF0+exyqJakKM1LyNh7nuaTE2cKBwLY7mE3252lEhkWkHaJdf7nsezxaBJW5kBlal0tNYguGDmHF3xsiiZT3Zf4VHq0hNuQeUiV5C83sHJuf5iB6Te6Qvj0aOMug7RSOnLq1GOe/S18iT8YR2FuuqYIcVsNA+XYVsTHCSRsVnqn6FB/CcmJevJ3SKRBqQekMXAF41i2JyobPZmHiFRYTwYvbIF43lHIOUFS/XZqN5VOUThKZvp0sP6OTmNA+awIDAQAB</alipay_PUBLIC_KEY>
<alipay_NotifyUrl>http://www.xqzhipin.com:8666/alipay/asyncPayNotify</alipay_NotifyUrl>
<!-- 短信账号 -->
<userName>xiaoquadvise</userName>
<userPassword>541500</userPassword>
<!-- 微信支付 -->
<weiXinAppID>wxe9ca033dd79a1c99</weiXinAppID>
<wxMchId>1603299889</wxMchId>
<wxApiKey>0D89A48337D9215817A9EECA26F5F878</wxApiKey>
<wxSpbillCreateIp>39.106.48.85</wxSpbillCreateIp>
<wxNotifyUrlIp>http://www.xqzhipin.com:8666/weiXin/asyncPayNotify</wxNotifyUrlIp>
<verifyReceivableUrl>http://114.253.9.110:8888/xiaoqu/verifyReceivable</verifyReceivableUrl>
<!--SaaS后台url -->
<SaaSUrl>http://webserver.ququtech.cn:9480/</SaaSUrl>
</properties>
</profile>
<profile>
<id>docker</id>
<properties>
<serviceId>docker</serviceId>
<system.state>docker</system.state>
<webserver.port>8090</webserver.port>
<logLevel>DEBUG</logLevel>
<myBatisLogImpl>NO_LOGGING</myBatisLogImpl>
<tomcatUrl>http://localhost:8090/manager/text</tomcatUrl>
<log4jFile>./logs/mall.log</log4jFile>
<fontPath>/user/local/font/</fontPath>
<redis.host>host.docker.internal</redis.host>
<redis.port>6379</redis.port>
<redis.pass>kaixinjiuhao</redis.pass>
<redis.db>5</redis.db>
<redis.db14>13</redis.db14>
<servers.jdbc.user>root</servers.jdbc.user>
<servers.jdbc.password>kaixinjiuhao</servers.jdbc.password>
<servers.jdbc.jdbcUrl>jdbc:mysql://host.docker.internal:3306/xiaoqu_comples_d</servers.jdbc.jdbcUrl>
<servers.jdbc.user1>root</servers.jdbc.user1>
<servers.jdbc.password1>kaixinjiuhao</servers.jdbc.password1>
<servers.jdbc.jdbcUrl1>jdbc:mysql://host.docker.internal:3306/xiaoqu_mall_d</servers.jdbc.jdbcUrl1>
<servers.jdbc.user2>root</servers.jdbc.user2>
<servers.jdbc.password2>kaixinjiuhao</servers.jdbc.password2>
<servers.jdbc.jdbcUrl2>jdbc:mysql://host.docker.internal:3306/xiaoqu_franchisee_d</servers.jdbc.jdbcUrl2>
<appId>xOz8D11yhk5PXPo62Or6W2</appId>
<appSecret>zFrU26Tzbm9gSP5rHYDo9A</appSecret>
<appKey>V2u3Z9FZce7As9cUgFsCW7</appKey>
<masterSecret>maip9e0W3e9s273OLalVk2</masterSecret>
<ossEndpoint>http://oss-cn-beijing.aliyuncs.com</ossEndpoint>
<ossAccessKeyId>LTAI5tCmbdJj3dymcia6CbZs</ossAccessKeyId>
<ossAccessKeySecret>pZZaztTROhMc4ntRyuKg4cgITD3yo3</ossAccessKeySecret>
<ossBucketName>contractpic</ossBucketName>
<ossFolder>test190/</ossFolder>
<es_hosts>host.docker.internal</es_hosts>
<es_port>9200</es_port>
<es_userName></es_userName>
<es_userPassword></es_userPassword>
<mail_NotifyUrl>http://localhost:8086/open/mailVerification/</mail_NotifyUrl>
<alipay_Aateway>https://openapi.alipay.com/gateway.do</alipay_Aateway>
<alipay_APPID>2021001189634432</alipay_APPID>
<alipay_APP_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAi+jL/b7aMNcYZ0zP4pPAAW5juJLoUrh26VkAOJ4vPznjaEZhFu7zxd+PYz0ppBe8dJHs1nwhMrQ4hyYEFs6YGfNKqGxdWVtBmVyzYjRluJ8epjEDloN1DA9UpnkHR56SX6LS1wMAx31LC7dW6PT2G1XY5rFHFlJEMZBSJC7C/rZERoiV0EsaAsIqZeFyTtwQ0qLSWzHOj2odw2ACjmWlkACw4VWf2gz7XjDnxV2FG+3STJDcRfI+Cw0fThBoMPA409KkKmGJkVaz9HIXJrDLupRkYkz8uRfOv/gs9rmuJjZ5hEk0G+wA3X3+7ZA1Mo5PYeYYQsIipn2njlBrN1SVEwIDAQAB</alipay_APP_PUBLIC_KEY>
<alipay_PRIVATE_KEY>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCL6Mv9vtow1xhnTM/ik8ABbmO4kuhSuHbpWQA4ni8/OeNoRmEW7vPF349jPSmkF7x0kezWfCEytDiHJgQWzpgZ80qobF1ZW0GZXLNiNGW4nx6mMQOWg3UMD1SmeQdHnpJfotLXAwDHfUsLt1bo9PYbVdjmsUcWUkQxkFIkLsL+tkRGiJXQSxoCwipl4XJO3BDSotJbMc6Pah3DYAKOZaWQALDhVZ/aDPteMOfFXYUb7dJMkNxF8j4LDR9OEGgw8DjT0qQqYYmRVrP0chcmsMu6lGRiTPy5F86/+Cz2ua4mNnmESTQb7ADdff7tkDUyjk9h5hhCwiKmfaeOUGs3VJUTAgMBAAECggEAfUKgl/6uNHnvNFUV7gJgLifaCh8k9yKF++ceBpLBNDcsvWf9dt3azLaaFrxksrA5npgjVehuhInL7lv/3zd6AAnNNrtGXEESmy7ev7avt7pmY16Qmsn5GiIDpMPI27tBy3Polm3u3av0a3nqysi+Kr0SY4AmZ/qhaUqP8CsZk5bW/MLn5+qdnuFC2kb5skm0OJmu8bt0EK30KAAXUJCXBhYagJFHIku5I1TfdXzfY6I/uSFeZ1i9CLB8qgzK5F9daANEsTy9CsgWAdY6nRwdRQSe+QOJpFvLTW3kQZcC0nZAtFBtwz/oQLohZmq/6w1oiinIuOoLqL03szqYudSqaQKBgQD2kbpMKIh/gEFem4/py0HZOIZ12m/EPov4S1tKpkHDxTK0IMyoVqlQImPrb6i+q87MhuS2p8G1uyNrjqiYw4dx+fUYpaiCdaphP1C1RO/HTnhzP8hfuSxpYiY6BnzIrCNUs673P55daCOapUi+sXqOdr2Hgkuxt3udIYFi05+p1QKBgQCRQrag50C8a90qqWi0khcaGjEhm/EzdoHmWocY12iNpgLBY+wXbjmXDe2MO/aBKOe914DyRnLduZ4nq7Id9x9W5PZEYs+/x3va8W0fUpL0i3HfIDrFTkFtak+CXbshN7MreGhrpGj88grFPl6+FJJmkRZBHW9o6lO1yg7k+jUPRwKBgQC+gOtqairEMAjRmul/Hk67EQQ6TFHsUtL8POTE8V2Ab3z0VR8qtQJN6rQ+tF+xKbc2qMZPJZ/x1CvSrz8uAGxGsHQg3eUrHtRMHIoz85Y67DL+AHrFEqHwrieQz3Bb7zvA9q8pUtr9mjdgBXIF+8QQDEf1ScNIBNaaGcgI3i7PHQKBgAU0Sq7BGkSl6KqanzG4+jLpNVFq8N1TJZxHKgftz8UjaX3cQp0kSdPrn9MiYtaFzKe0jN4hQARJniz1rc/9BpZqZZhVofPRBdL2S16P6svwIwhHc1OWVinBYU/eY9Hw2O55xeP1Y/2L/m7KqUJOImCiWhXDJDayDoW404fInxYJAoGAIFpimnRBqfPezT2x6S+VOW49dR728w2FL0UcZYGzvaCe8NGuwyh5oqW08rwqlk5+1X+KUVWuciIs6gtq8cBqvif1TTXPK7jDw4du3qC/0rs48N69F9oCziVUaGlcPJK9hK+vt+bhqPaBgFpc3PBLq7SvIn7qyeRl7QAUuD3SFs8=</alipay_PRIVATE_KEY>
<alipay_PUBLIC_KEY>MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwRK3BFqKVz4RZE2nhfKykRosbUljBwfZlxPX3jBFCPOmxFJmkS+iMh/ei4nFxtmsf3KK5D9N2GhIVJElxb8/x7vcF0+exyqJakKM1LyNh7nuaTE2cKBwLY7mE3252lEhkWkHaJdf7nsezxaBJW5kBlal0tNYguGDmHF3xsiiZT3Zf4VHq0hNuQeUiV5C83sHJuf5iB6Te6Qvj0aOMug7RSOnLq1GOe/S18iT8YR2FuuqYIcVsNA+XYVsTHCSRsVnqn6FB/CcmJevJ3SKRBqQekMXAF41i2JyobPZmHiFRYTwYvbIF43lHIOUFS/XZqN5VOUThKZvp0sP6OTmNA+awIDAQAB</alipay_PUBLIC_KEY>
<alipay_NotifyUrl>http://localhost:8086/alipay/asyncPayNotify</alipay_NotifyUrl>
<userName>xiaoquadvise</userName>
<userPassword>541500</userPassword>
<weiXinAppID>wxe9ca033dd79a1c99</weiXinAppID>
<wxMchId>1603299889</wxMchId>
<wxApiKey>0D89A48337D9215817A9EECA26F5F878</wxApiKey>
<wxSpbillCreateIp>127.0.0.1</wxSpbillCreateIp>
<wxNotifyUrlIp>http://localhost:8086/weiXin/asyncPayNotify</wxNotifyUrlIp>
<verifyReceivableUrl>http://host.docker.internal:8887/xiaoqu/verifyReceivable</verifyReceivableUrl>
<SaaSUrl>http://host.docker.internal:8093/</SaaSUrl>
</properties>
</profile>
</profiles>
<dependencies>
<!-- pdf操作 -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
<version>9.0.3</version>
</dependency>
<!-- 支付宝 -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.10.97.ALL</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-public</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>
<!-- jackson -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>net.sf.flexjson</groupId>
<artifactId>flexjson</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-avro</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml/classmate -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-bean-validators</artifactId>
</dependency>
<!-- /swagger -->
<!-- 阿里云短信服务 -->
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
</dependency>
<dependency>
<groupId>se.jiderhamn.classloader-leak-prevention</groupId>
<artifactId>classloader-leak-prevention-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<finalName>ROOT</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>${tomcatUrl}</url>
<username>_qfbAdmin</username>
<password>_qfb2587</password>
<path>/</path>
<update>true</update>
</configuration>
</plugin>
<!-- jetty插件 -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.8.v20171121</version>
<configuration>
<httpConnector>
<port>${webserver.port}</port>
</httpConnector>
<webAppConfig>
<contextPath>/</contextPath>
<defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
</webAppConfig>
<systemProperties>
<systemProperty>
<name>org.mortbay.util.URI.charset</name>
<value>${project.build.sourceEncoding}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>me.iiv.xiaoqu</groupId>
<artifactId>xiaoqu-app-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../xiaoqu-app-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xiaoqu-public</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

11
deploy/docker-app/.env Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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

365
deploy/docker-app/deploy.sh Executable file
View File

@@ -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-publiccomplex 依赖它)
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

View File

@@ -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