# app-server
**Repository Path**: cao-im/app-server
## Basic Information
- **Project Name**: app-server
- **Description**: 🌐 CAO-IM App Server — 基于 Spring Boot 3 + Spring Cloud 的应用层服务,提供用户注册登录、JWT 认证、个人信息管理及 IM 连接桥接能力,是客户端接入 IM 系统的统一网关。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-22
- **Last Updated**: 2026-06-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# App Server - 曹操IM应用服务(C端认证)
> 纯后端 API 服务,依赖 **im-core** JAR,为 Flutter Demo 等客户端提供用户登录、注册、换取 IM Token 的认证接口。
---
## 架构设计
```
┌─────────────────────────────────────────────────────┐
│ 曹操IM 体系 │
│ │
│ flutter-demo (Flutter客户端) │
│ │ │
│ ▼ 使用 im-sdk-flutter 连接 im-server │
│ │
│ app-server (本服务) │
│ ├── 依赖: im-core (JAR) ◀── im-server 的核心库 │
│ ├── 职责: 用户认证 (登录/注册/换Token) │
│ └── 端口: 8080 │
│ │
│ im-server (IM核心) │
│ ├── im-core (JAR) ←── app-server 引用这个 │
│ └── im-boot (独立运行, 默认端口8080) │
│ │
└─────────────────────────────────────────────────────┘
```
### app-server 与 im-server 的关系
| 项目 | 职责 | 端口 | 数据库 |
|------|------|------|--------|
| **app-server** | C端用户认证(登录/注册/Token) | 8080 | `cao_im_app_server` |
| **im-server/im-boot** | IM核心业务(消息/群组/好友/WebSocket) | 8080(默认,可配置) | `cao_im_db` |
| **im-server/im-core** | IM核心库JAR,被app-server依赖调用 | - | - |
---
## Maven 依赖
app-server 的 pom.xml 中已引入 im-core:
```xml
com.caoim
im-core
1.0.0
```
通过 `AppImBridgeService` 桥接调用 IM 能力:
```java
@Autowired
private AppImBridgeService imBridge;
// 发送消息
imBridge.sendPrivateMessage(fromId, toId, "你好");
// 获取会话列表
List conversations = imBridge.getConversations(userId);
```
---
## 接口文档
所有接口无需 Token 即可访问。
| 方法 | 路径 | 说明 | 密码要求 |
|------|------|------|---------|
| POST | `/api/client/login` | C端用户登录 | MD5加密后传输 |
| POST | `/api/client/register` | C端用户注册 | MD5加密后传输 |
| POST | `/api/client/refresh-token` | 刷新Token | Bearer refreshToken |
### 登录响应
```json
{
"code": 200,
"message": "success",
"data": {
"token": "eyJhbG...(accessToken)",
"user": { "id": 1, "username": "test", "nickname": "测试" }
}
}
```
### 密码安全机制
```
客户端 → [MD5加密] → app-server → [BCrypt存储] → MySQL
```
---
## 环境要求
| 环境 | 版本 |
|------|------|
| JDK | 17+ |
| Maven | 3.6+ |
| MySQL | 8.0+ |
## 快速开始
### 1. 安装 im-core 到本地仓库
```bash
cd im-server
mvn clean install -DskipTests
```
### 2. 初始化数据库
```bash
# app-server 数据库
mysql -u root -p < app-server/src/main/resources/schema.sql
# im-server 数据库(如需独立运行 im-boot)
mysql -u root -p < im-server/im-boot/src/main/resources/schema.sql
```
### 3. 启动 app-server
```bash
cd app-server
mvn spring-boot:run
```
访问:http://localhost:8080
- Swagger: http://localhost:8080/swagger-ui.html
---
## 项目结构
```
app-server/
├── pom.xml # Maven配置(含im-core依赖)
├── src/main/java/com/caoim/appserver/
│ ├── AppServerApplication.java # 启动类
│ ├── config/ # Security/JWT/CORS 配置
│ ├── controller/AuthController.java # 登录/注册/刷新Token
│ ├── service/
│ │ ├── UserService.java # 用户业务
│ │ └── AppImBridgeService.java # ImService桥接(调用im-core)
│ ├── security/ # JWT工具/过滤器
│ ├── dao/dto/entity/common # 基础设施层
│ └── config/DataInitializer.java # 启动初始化admin账号
├── src/main/resources/
│ ├── application.yml # 配置文件
│ └── schema.sql # 数据库脚本
└── README.md
```