# 短信登录API接口说明

## 接口概述
本文档描述了短信验证码登录相关的API接口，包括获取验证码和短信登录功能。

## 基础配置
- 开发环境: `https://dev-app.igandan.com`
- 生产环境: `https://app.igandan.com`
- 请求头: `Authorization: Bearer {token}` (登录接口不需要)

## API接口列表

### 1. 获取短信验证码
**接口地址:** `/expertAPI/getSmsCode`
**请求方法:** `POST`
**请求参数:**
```json
{
  "phone": "13800138000"
}
```

**响应格式:**
```json
{
  "code": 200,
  "message": "验证码发送成功",
  "data": null
}
```

**错误响应:**
```json
{
  "code": 400,
  "message": "手机号格式错误",
  "data": null
}
```

### 2. 短信验证码登录
**接口地址:** `/expertAPI/umSmsLogin`
**请求方法:** `POST`
**请求参数:**
```json
{
  "phone": "13800138000",
  "code": "123456"
}
```

**响应格式:**
```json
{
  "code": 200,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "userInfo": {
      "userId": "12345",
      "phone": "13800138000",
      "nickname": "用户昵称",
      "avatar": "头像URL"
    }
  }
}
```

**错误响应:**
```json
{
  "code": 400,
  "message": "验证码错误",
  "data": null
}
```

## 使用流程

### 1. 获取验证码
1. 用户输入手机号
2. 点击"获取验证码"按钮
3. 前端验证手机号格式
4. 调用获取验证码API
5. 开始60秒倒计时

### 2. 短信登录
1. 用户输入手机号和验证码
2. 点击"登录"按钮
3. 前端验证输入内容
4. 调用短信登录API
5. 保存token和用户信息
6. 跳转到首页

## 前端实现要点

### 验证码倒计时
```javascript
// 开始倒计时
isCountingDown.value = true;
countdown.value = 60;

const timer = setInterval(() => {
  countdown.value--;
  if (countdown.value <= 0) {
    clearInterval(timer);
    isCountingDown.value = false;
  }
}, 1000);
```

### 登录状态管理
```javascript
// 保存认证信息
if (result.data.data && result.data.data.token) {
  uni.setStorageSync('AUTH_TOKEN_App', result.data.data.token);
  if (result.data.data.userInfo) {
    uni.setStorageSync('USER_INFO', result.data.data.userInfo);
  }
}
```

### 错误处理
```javascript
try {
  const result = await api.smsLogin({
    phone: phoneNumber.value,
    code: smsCode.value
  });
  
  if (result.data.code === 200) {
    // 登录成功处理
  } else {
    // 显示错误信息
    uni.showToast({
      title: result.data.message || '登录失败',
      icon: 'none'
    });
  }
} catch (error) {
  // 网络错误处理
  uni.showToast({
    title: '登录失败，请重试',
    icon: 'none'
  });
}
```

## 注意事项

1. **手机号验证**: 前端需要验证手机号格式（11位数字，以1开头）
2. **验证码长度**: 验证码通常为6位数字
3. **倒计时控制**: 防止用户频繁点击获取验证码
4. **协议同意**: 登录前必须同意用户协议
5. **错误提示**: 提供清晰的错误信息给用户
6. **安全考虑**: 验证码有效期限制，防止暴力破解

## 测试建议

1. 使用真实手机号测试验证码发送
2. 测试各种错误情况（错误验证码、过期验证码等）
3. 测试网络异常情况
4. 验证登录成功后的跳转逻辑
5. 测试token存储和用户信息保存
