文档
This commit is contained in:
parent
7248ee6f2b
commit
9f2ade35a2
@ -1007,6 +1007,142 @@ Authorization: Token <your_token>
|
|||||||
- `409`: 资源冲突(如重名)
|
- `409`: 资源冲突(如重名)
|
||||||
- `500`: 服务器内部错误
|
- `500`: 服务器内部错误
|
||||||
|
|
||||||
|
## 7. 搜索功能相关接口
|
||||||
|
|
||||||
|
### 7.1 公有达人库搜索
|
||||||
|
- **接口路径**: `GET /search/creators/`
|
||||||
|
- **功能**: 基于关键词搜索公有达人库中的达人,支持多关键词搜索
|
||||||
|
- **请求方法**: GET
|
||||||
|
|
||||||
|
**URL参数**:
|
||||||
|
- `q`: 搜索关键词,支持单个或多个关键词(多个关键词可用空格、逗号、分号分隔)
|
||||||
|
- `mode`: 搜索模式,可选 "and"(所有关键词都必须匹配)或 "or"(任一关键词匹配即可),默认为 "and"
|
||||||
|
- `page`: 页码,默认为1
|
||||||
|
- `page_size`: 每页数量,默认为10
|
||||||
|
|
||||||
|
**响应格式**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "搜索成功",
|
||||||
|
"data": {
|
||||||
|
"creators": [
|
||||||
|
{
|
||||||
|
"Creator": {
|
||||||
|
"name": "达人姓名",
|
||||||
|
"avatar": "头像URL"
|
||||||
|
},
|
||||||
|
"Category": "Beauty & Personal Care",
|
||||||
|
"E-commerce Level": "L3",
|
||||||
|
"Exposure Level": "KOL-1",
|
||||||
|
"Followers": "125k",
|
||||||
|
"GMV": "$534k",
|
||||||
|
"Items Sold": "2.5k",
|
||||||
|
"Avg. Video Views": "85k",
|
||||||
|
"Pricing": "$200",
|
||||||
|
"Pricing Package": "套餐描述",
|
||||||
|
"# Collab": 15,
|
||||||
|
"Latest Collab.": "2024-03-15",
|
||||||
|
"E-commerce": ["TikTok Shop"],
|
||||||
|
"creator_id": 123,
|
||||||
|
"profile": "tiktok",
|
||||||
|
"public_pool_category": "公有库分类",
|
||||||
|
"public_pool_remark": "公有库备注",
|
||||||
|
"is_public": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pagination": {
|
||||||
|
"current_page": 1,
|
||||||
|
"total_pages": 15,
|
||||||
|
"total_count": 150,
|
||||||
|
"has_next": true,
|
||||||
|
"has_prev": false,
|
||||||
|
"page_size": 10
|
||||||
|
},
|
||||||
|
"search_info": {
|
||||||
|
"query": "搜索关键词",
|
||||||
|
"keywords": ["关键词1", "关键词2"],
|
||||||
|
"search_mode": "and",
|
||||||
|
"results_count": 150,
|
||||||
|
"search_applied": true,
|
||||||
|
"supports_single_char": true,
|
||||||
|
"search_scope": "public_only"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.2 私有达人库搜索
|
||||||
|
- **接口路径**: `GET /search/private/creators/`
|
||||||
|
- **功能**: 基于关键词搜索用户私有达人库中的达人,支持多关键词搜索
|
||||||
|
- **请求方法**: GET
|
||||||
|
|
||||||
|
**URL参数**:
|
||||||
|
- `q`: 搜索关键词,支持单个或多个关键词(多个关键词可用空格、逗号、分号分隔)
|
||||||
|
- `mode`: 搜索模式,可选 "and"(所有关键词都必须匹配)或 "or"(任一关键词匹配即可),默认为 "and"
|
||||||
|
- `pool_id`: 私有达人库ID(可选,如果提供则只搜索特定私有库)
|
||||||
|
- `page`: 页码,默认为1
|
||||||
|
- `page_size`: 每页数量,默认为10
|
||||||
|
|
||||||
|
**响应格式**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "搜索成功",
|
||||||
|
"data": {
|
||||||
|
"creators": [
|
||||||
|
{
|
||||||
|
"Creator": {
|
||||||
|
"name": "达人姓名",
|
||||||
|
"avatar": "头像URL"
|
||||||
|
},
|
||||||
|
"Category": "Beauty & Personal Care",
|
||||||
|
"E-commerce Level": "L3",
|
||||||
|
"Exposure Level": "KOL-1",
|
||||||
|
"Followers": "125k",
|
||||||
|
"GMV": "$534k",
|
||||||
|
"Items Sold": "2.5k",
|
||||||
|
"Avg. Video Views": "85k",
|
||||||
|
"Pricing": "$200",
|
||||||
|
"Pricing Package": "套餐描述",
|
||||||
|
"# Collab": 15,
|
||||||
|
"Latest Collab.": "2024-03-15",
|
||||||
|
"E-commerce": ["TikTok Shop"],
|
||||||
|
"creator_id": 123,
|
||||||
|
"profile": "tiktok",
|
||||||
|
"private_pool": {
|
||||||
|
"id": 456,
|
||||||
|
"name": "我的收藏",
|
||||||
|
"is_default": true
|
||||||
|
},
|
||||||
|
"notes": "私有库中的笔记",
|
||||||
|
"status": "active",
|
||||||
|
"relation_id": 789,
|
||||||
|
"is_private": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pagination": {
|
||||||
|
"current_page": 1,
|
||||||
|
"total_pages": 3,
|
||||||
|
"total_count": 25,
|
||||||
|
"has_next": true,
|
||||||
|
"has_prev": false,
|
||||||
|
"page_size": 10
|
||||||
|
},
|
||||||
|
"search_info": {
|
||||||
|
"query": "搜索关键词",
|
||||||
|
"keywords": ["关键词1", "关键词2"],
|
||||||
|
"search_mode": "and",
|
||||||
|
"results_count": 25,
|
||||||
|
"search_applied": true,
|
||||||
|
"supports_single_char": true,
|
||||||
|
"search_scope": "private_only",
|
||||||
|
"pool_id": "456"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 使用示例
|
## 使用示例
|
||||||
|
|
||||||
### 筛选达人示例
|
### 筛选达人示例
|
||||||
|
@ -1,89 +0,0 @@
|
|||||||
import os
|
|
||||||
import django
|
|
||||||
import random
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
import sys
|
|
||||||
|
|
||||||
# 添加项目根目录到Python路径
|
|
||||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
||||||
|
|
||||||
# 设置Django环境
|
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'daren.settings')
|
|
||||||
django.setup()
|
|
||||||
|
|
||||||
from apps.daren_detail.models import CreatorProfile
|
|
||||||
|
|
||||||
def generate_test_data():
|
|
||||||
# 类别列表
|
|
||||||
categories = [choice[0] for choice in CreatorProfile.CATEGORY_CHOICES]
|
|
||||||
|
|
||||||
# 曝光等级列表
|
|
||||||
exposure_levels = [choice[0] for choice in CreatorProfile.EXPOSURE_LEVEL_CHOICES]
|
|
||||||
|
|
||||||
# 电商平台列表
|
|
||||||
e_commerce_platforms = ["SUNLINK", "ARZOPA", "BELIFE", "TIKTOK", "SHOPEE", "LAZADA"]
|
|
||||||
|
|
||||||
# 生成50个测试数据
|
|
||||||
for i in range(50):
|
|
||||||
# 随机生成GMV (1-2000k)
|
|
||||||
gmv = random.randint(1, 2000)
|
|
||||||
|
|
||||||
# 随机生成粉丝数 (1k-1000k)
|
|
||||||
followers = random.randint(1000, 1000000)
|
|
||||||
|
|
||||||
# 随机生成平均视频观看量 (100-500k)
|
|
||||||
avg_views = random.randint(100, 500000)
|
|
||||||
|
|
||||||
# 随机生成售出商品数量 (100-10000)
|
|
||||||
items_sold = random.randint(100, 10000)
|
|
||||||
|
|
||||||
# 随机生成合作次数 (0-50)
|
|
||||||
collab_count = random.randint(0, 50)
|
|
||||||
|
|
||||||
# 随机生成最新合作时间
|
|
||||||
latest_collab = (datetime.now() - timedelta(days=random.randint(0, 365))).strftime("%Y-%m-%d")
|
|
||||||
|
|
||||||
# 随机选择2-4个电商平台
|
|
||||||
selected_platforms = random.sample(e_commerce_platforms, random.randint(2, 4))
|
|
||||||
|
|
||||||
# 创建达人信息
|
|
||||||
creator = CreatorProfile.objects.create(
|
|
||||||
name=f"测试达人{i+1}",
|
|
||||||
avatar_url=f"https://example.com/avatar{i+1}.jpg",
|
|
||||||
is_active=random.choice([True, False]),
|
|
||||||
email=f"creator{i+1}@example.com",
|
|
||||||
instagram=f"creator{i+1}",
|
|
||||||
tiktok_link=f"https://tiktok.com/@creator{i+1}",
|
|
||||||
location=random.choice(["北京", "上海", "广州", "深圳", "杭州"]),
|
|
||||||
live_schedule="每周一、三、五 20:00-22:00",
|
|
||||||
category=random.choice(categories),
|
|
||||||
e_commerce_level=random.randint(1, 7),
|
|
||||||
exposure_level=random.choice(exposure_levels),
|
|
||||||
followers=followers,
|
|
||||||
gmv=gmv,
|
|
||||||
items_sold=items_sold,
|
|
||||||
avg_video_views=avg_views,
|
|
||||||
pricing_individual=f"${random.randint(100, 1000)}/video",
|
|
||||||
pricing_package=f"${random.randint(1000, 5000)}/package",
|
|
||||||
collab_count=collab_count,
|
|
||||||
latest_collab=latest_collab,
|
|
||||||
e_commerce_platforms=selected_platforms,
|
|
||||||
gmv_by_channel={
|
|
||||||
"TikTok": random.randint(30, 70),
|
|
||||||
"Instagram": random.randint(20, 50),
|
|
||||||
"Facebook": random.randint(10, 30)
|
|
||||||
},
|
|
||||||
gmv_by_category={
|
|
||||||
"服装": random.randint(20, 40),
|
|
||||||
"美妆": random.randint(15, 35),
|
|
||||||
"数码": random.randint(10, 30),
|
|
||||||
"家居": random.randint(5, 25)
|
|
||||||
},
|
|
||||||
mcn=random.choice(["MCN机构A", "MCN机构B", "MCN机构C", None])
|
|
||||||
)
|
|
||||||
print(f"已创建达人: {creator.name}")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
print("开始生成测试数据...")
|
|
||||||
generate_test_data()
|
|
||||||
print("测试数据生成完成!")
|
|
Loading…
Reference in New Issue
Block a user