优化现有目录结构
This commit is contained in:
174
README.md
174
README.md
@@ -1,2 +1,172 @@
|
||||
# label_backend
|
||||
|
||||
# 数据同步微服务
|
||||
|
||||
## 项目简介
|
||||
|
||||
数据同步微服务用于从第三方接口同步人员、项目和报告数据到MySQL数据库。支持定时任务自动同步和手动触发同步。
|
||||
|
||||
## 功能特性
|
||||
|
||||
1. **数据同步**
|
||||
- 从第三方接口同步人员数据
|
||||
- 从第三方接口同步项目(工程)数据
|
||||
- 从第三方接口同步报告数据
|
||||
- 支持字段大小写兼容
|
||||
|
||||
2. **同步方式**
|
||||
- 定时任务:每晚12点自动执行全量同步
|
||||
- 手动触发:通过REST API手动触发同步
|
||||
|
||||
3. **同步策略**
|
||||
- 先删除表中所有现有数据
|
||||
- 再全量同步接口返回的数据
|
||||
- 使用接口返回的ID作为主键
|
||||
|
||||
## 技术栈
|
||||
|
||||
- Java 21
|
||||
- Spring Boot 3.1.5
|
||||
- Spring Cloud 2022.0.4
|
||||
- MyBatis Plus 3.5.3.1
|
||||
- MySQL 8.2.0
|
||||
- Nacos(服务注册与发现)
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
src/main/java/com/zhonghe/datasync/
|
||||
├── common/ # 公共类
|
||||
│ ├── exception/ # 异常处理
|
||||
│ ├── Result.java # 统一响应结果
|
||||
│ └── ResultCode.java # 响应码枚举
|
||||
├── config/ # 配置类
|
||||
├── controller/ # 控制器
|
||||
├── dto/ # 数据传输对象
|
||||
│ ├── request/ # 请求DTO
|
||||
│ └── response/ # 响应DTO
|
||||
├── entity/ # 实体类
|
||||
├── mapper/ # MyBatis映射器
|
||||
├── scheduled/ # 定时任务
|
||||
├── service/ # 业务服务
|
||||
└── util/ # 工具类
|
||||
```
|
||||
|
||||
## 数据库表结构
|
||||
|
||||
### employee(人员表)
|
||||
- id: 主键(VARCHAR)
|
||||
- name: 人员姓名
|
||||
- phone_number: 人员手机号
|
||||
- password: 密码(明文存储)
|
||||
- created_at: 创建时间
|
||||
- updated_at: 更新时间
|
||||
|
||||
### project(项目表)
|
||||
- id: 主键(BIGINT)
|
||||
- project_name: 工程名称
|
||||
- created_at: 创建时间
|
||||
- updated_at: 更新时间
|
||||
|
||||
### report(报告表)
|
||||
- id: 主键(BIGINT)
|
||||
- order_number: 委托编号
|
||||
- sample_code: 样品编号
|
||||
- bg_sample_code: 报告编号
|
||||
- project_name: 工程名称
|
||||
- project_id: 工程主键
|
||||
- experiment_name: 试验人员
|
||||
- real_experiment_date: 试验时间
|
||||
- created_at: 创建时间
|
||||
- updated_at: 更新时间
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 环境变量
|
||||
|
||||
| 变量名 | 说明 | 默认值 |
|
||||
|--------|------|--------|
|
||||
| MYSQL_HOST | MySQL主机地址 | localhost |
|
||||
| MYSQL_PORT | MySQL端口 | 3306 |
|
||||
| MYSQL_DATABASE | MySQL数据库名 | datasync |
|
||||
| MYSQL_USERNAME | MySQL用户名 | root |
|
||||
| MYSQL_PASSWORD | MySQL密码 | root |
|
||||
| NACOS_SERVER | Nacos服务器地址 | localhost:8848 |
|
||||
| NACOS_USERNAME | Nacos用户名 | nacos |
|
||||
| NACOS_PASSWORD | Nacos密码 | nacos |
|
||||
| THIRD_PARTY_AUTH_URL | 第三方鉴权接口地址 | http://limspro.91jiance.net/api/LoginAPI/GetAdminUserCode |
|
||||
| THIRD_PARTY_EMPLOYEE_URL | 第三方人员接口地址 | http://121.40.18.211:20016/api/EmployeeAPI/GetZHEmployeeList |
|
||||
| THIRD_PARTY_PROJECT_URL | 第三方项目接口地址 | http://121.40.18.211:20030/API/GetZHProjectList |
|
||||
| THIRD_PARTY_REPORT_URL | 第三方报告接口地址 | http://121.40.18.211:20030/API/GetZHSampleAllList |
|
||||
| THIRD_PARTY_USER_NAME | 第三方接口用户名 | 13120251031 |
|
||||
| THIRD_PARTY_PASS_WORD | 第三方接口密码 | whfst@1901 |
|
||||
|
||||
## API接口
|
||||
|
||||
### 1. 同步所有数据
|
||||
- **URL**: `/api/v1/sync/all`
|
||||
- **方法**: POST
|
||||
- **说明**: 同步人员、项目和报告数据
|
||||
|
||||
### 2. 同步人员数据
|
||||
- **URL**: `/api/v1/sync/employees`
|
||||
- **方法**: POST
|
||||
- **说明**: 仅同步人员数据
|
||||
|
||||
### 3. 同步项目数据
|
||||
- **URL**: `/api/v1/sync/projects`
|
||||
- **方法**: POST
|
||||
- **说明**: 仅同步项目数据
|
||||
|
||||
### 4. 同步报告数据
|
||||
- **URL**: `/api/v1/sync/reports`
|
||||
- **方法**: POST
|
||||
- **说明**: 仅同步报告数据
|
||||
|
||||
## 定时任务
|
||||
|
||||
定时任务配置在 `DataSyncScheduledTask` 类中,使用 cron 表达式:
|
||||
- **执行时间**: 每晚12点(0 0 0 * * ?)
|
||||
- **执行内容**: 同步所有数据(人员、项目、报告)
|
||||
|
||||
## 部署说明
|
||||
|
||||
### 1. 数据库初始化
|
||||
|
||||
执行 `src/main/resources/db/schema.sql` 创建数据库表。
|
||||
|
||||
### 2. 构建项目
|
||||
|
||||
```bash
|
||||
mvn clean package
|
||||
```
|
||||
|
||||
### 3. Docker部署
|
||||
|
||||
```bash
|
||||
docker build -t data-sync-service:1.0.0 .
|
||||
docker run -d -p 8080:8080 \
|
||||
-e MYSQL_HOST=your-mysql-host \
|
||||
-e MYSQL_USERNAME=your-username \
|
||||
-e MYSQL_PASSWORD=your-password \
|
||||
data-sync-service:1.0.0
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **字段大小写兼容**: 使用 `@JsonProperty` 注解处理接口返回字段的大小写差异
|
||||
2. **ID使用**: 使用接口返回的ID作为数据库主键,不自动生成
|
||||
3. **同步策略**:
|
||||
- 人员数据:增量同步(不删除现有数据),新增用户密码为手机号后六位,老用户密码保持不变
|
||||
- 项目和报告数据:全量同步(先删除后插入)
|
||||
4. **密码管理**:
|
||||
- 新增用户:密码自动设置为手机号后六位
|
||||
- 更新用户:密码字段不会被修改,保持原有密码
|
||||
5. **事务管理**: 同步操作使用事务,失败时会回滚
|
||||
6. **日志记录**: 所有同步操作都会记录详细日志
|
||||
|
||||
## 开发规范
|
||||
|
||||
本项目遵循《微服务开发规范文档.md》中的开发规范,包括:
|
||||
- 代码风格规范
|
||||
- 命名规范
|
||||
- 异常处理规范
|
||||
- 日志规范
|
||||
|
||||
Reference in New Issue
Block a user