Skip to content

Latest commit

 

History

History
238 lines (194 loc) · 5.26 KB

File metadata and controls

238 lines (194 loc) · 5.26 KB

股票订阅系统 API 使用示例

概述

这个系统为每个注册用户创建独立的股票数据表,用户可以订阅感兴趣的股票,系统会为他们提供相应的数据查询服务。

数据库表结构

用户表(扩展后)

userInfo:
- id (BIGINT, 主键)
- username (VARCHAR, 用户名)
- password_hash (VARCHAR, 密码哈希)
- user_table_name (VARCHAR, 用户表名前缀)  -- 新增
- created_at, updated_at

每个用户的独立表

  • user_stocks_{user_id} - 用户股票订阅表
  • user_stock_data_{user_id} - 用户股票数据表

全局股票基础信息表

  • stock_basic_info - 所有股票的基础信息

API 接口

1. 用户注册

POST /register
Content-Type: application/json

{
  "username": "testuser",
  "password": "password123"
}

响应: 注册成功时会自动创建用户的个人股票表

2. 订阅股票

POST /api/stocks/subscribe?user_id=1
Content-Type: application/json

{
  "stock_code": "000001",
  "stock_name": "平安银行",
  "market": "SZ",
  "alert_price": 15.00,
  "alert_type": "up"
}

3. 取消订阅

DELETE /api/stocks/unsubscribe?user_id=1&stock_code=000001

4. 获取用户订阅列表

GET /api/stocks/subscriptions?user_id=1

响应示例:

{
  "success": true,
  "data": [
    {
      "stock_code": "000001",
      "stock_name": "平安银行",
      "market": "SZ",
      "alert_price": 15.00,
      "alert_type": "up",
      "is_active": true
    }
  ]
}

5. 更新股票提醒

PUT /api/stocks/alert?user_id=1
Content-Type: application/json

{
  "stock_code": "000001",
  "alert_price": 16.00,
  "alert_type": "both"
}

6. 获取股票数据

GET /api/stocks/data?user_id=1&stock_code=000001&start_time=2024-01-01&end_time=2024-12-31

响应示例:

{
  "success": true,
  "data": [
    {
      "stock_code": "000001",
      "stock_name": "平安银行",
      "market": "SZ",
      "current_price": 14.85,
      "change_amount": 0.15,
      "change_percent": 1.02,
      "volume": 50000000,
      "turnover": 742500000.00,
      "high_price": 15.20,
      "low_price": 14.50,
      "open_price": 14.70,
      "prev_close": 14.70,
      "data_time": "2024-01-15 15:00:00"
    }
  ]
}

7. 搜索股票

GET /api/stocks/search?keyword=银行&market=SZ

测试步骤

1. 编译并运行测试程序

# 构建项目
mkdir build && cd build
cmake ..
make

# 运行股票API测试
./stockApiTest

2. 使用curl测试API

注册用户

curl -X POST http://localhost:8080/register \
  -H "Content-Type: application/json" \
  -d '{"username": "testuser", "password": "123456"}'

订阅股票

curl -X POST "http://localhost:8080/api/stocks/subscribe?user_id=1" \
  -H "Content-Type: application/json" \
  -d '{
    "stock_code": "000001",
    "stock_name": "平安银行",
    "market": "SZ",
    "alert_price": 15.00,
    "alert_type": "up"
  }'

获取订阅列表

curl -X GET "http://localhost:8080/api/stocks/subscriptions?user_id=1"

搜索股票

curl -X GET "http://localhost:8080/api/stocks/search?keyword=银行"

3. 使用Postman测试

导入以下环境变量:

然后按照上述API接口进行测试。

数据集成

与Python爬虫系统集成

可以通过以下方式将Python爬虫获取的数据同步到用户表中:

  1. 直接数据库操作: Python脚本直接写入用户的个人股票数据表
  2. API调用: Python脚本调用C++系统的API接口
  3. 文件同步: 通过共享文件进行数据交换

示例:Python数据同步脚本

import mysql.connector
from datetime import datetime

def sync_stock_data_to_user(user_id, stock_data):
    """将股票数据同步到用户的个人表中"""
    conn = mysql.connector.connect(
        host='localhost',
        user='EzTest01',
        password='123456',
        database='testdb'
    )
    
    cursor = conn.cursor()
    table_name = f"user_stock_data_{user_id}"
    
    for stock in stock_data:
        sql = f"""
        INSERT INTO {table_name} 
        (stock_code, stock_name, market, current_price, change_amount, 
         change_percent, volume, turnover, data_time)
        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)
        """
        cursor.execute(sql, (
            stock['code'], stock['name'], stock['market'],
            stock['price'], stock['change'], stock['change_pct'],
            stock['volume'], stock['turnover'], datetime.now()
        ))
    
    conn.commit()
    cursor.close()
    conn.close()

性能优化建议

  1. 索引优化: 在股票代码、用户ID、时间字段上建立适当的索引
  2. 数据分区: 对于大量历史数据,可以按时间分区
  3. 缓存策略: 对热门股票数据使用Redis缓存
  4. 连接池: 使用数据库连接池提高并发性能

注意事项

  1. 用户认证: 当前使用简化的用户ID传递方式,生产环境应使用JWT或session
  2. 数据校验: 需要添加更严格的输入验证和错误处理
  3. 并发控制: 对于高并发场景,需要考虑数据库锁和事务管理
  4. 数据备份: 建议定期备份用户的个人股票数据