Appearance
微信群管理
微信群是平台运营过程中沉淀的群聊容器,用于红娘资源共享、嘉宾对接、区域协作等场景。本模块提供微信群的增删改查,以及红娘、工作微信号两类群成员的关联管理。
与工作微信号的区别:工作微信号是微信号账号,微信群是群聊容器,两者是不同的实体,但存在多对多的「群成员」关系。
关系模型
| 关联对象 | 关系 | 说明 |
|---|---|---|
| 红娘 ↔ 微信群 | N : M | 通过 work_group_matchmakers 关联 |
| 工作微信号 ↔ 微信群 | N : M | 通过 work_group_work_wechats 关联 |
- 平台全局群,不挂
company_id/store_id。 - 关联为硬插入,解绑为硬删除。
- 删除微信群前必须解除所有成员,否则返回 400 错误。
微信群列表
GET /api/open/v1/work-groups
权限:open:work_group:read
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认 1 |
| page_size | int | 否 | 每页条数,默认 20,最大 1000 |
| keyword | string | 否 | 模糊搜索,覆盖 name / group_no / remark |
| status | string | 否 | 状态筛选:active / disabled |
| has_matchmaker | bool | 否 | 是否含红娘成员 |
| has_work_wechat | bool | 否 | 是否含工作微信号成员 |
| matchmaker_id | int | 否 | 按红娘反查所属群 |
| work_wechat_id | int | 否 | 按工作微信号反查所属群 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 1,
"name": "北京资源共享群",
"group_no": "wg_001",
"qr_code": "https://oss.ailian.com/group/001.jpg",
"status": "active",
"remark": "红娘资源共享",
"matchmaker_count": 12,
"work_wechat_count": 3,
"created_at": "2025-06-01 10:00:00",
"updated_at": "2025-07-15 14:30:00"
}
],
"total": 8
}
}
matchmaker_count与work_wechat_count为运行时计算的成员数。
微信群详情
GET /api/open/v1/work-groups/{id}
权限:open:work_group:read
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"id": 1,
"name": "北京资源共享群",
"group_no": "wg_001",
"qr_code": "https://oss.ailian.com/group/001.jpg",
"status": "active",
"remark": "红娘资源共享",
"matchmaker_count": 12,
"work_wechat_count": 3,
"created_at": "2025-06-01 10:00:00",
"updated_at": "2025-07-15 14:30:00"
}
}创建微信群
POST /api/open/v1/work-groups
权限:open:work_group:write
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 群名称(最长 100 字符) |
| group_no | string | 否 | 微信侧群唯一标识(最长 64 字符,可空) |
| qr_code | string | 否 | 群二维码图片 URL(最长 255 字符) |
| status | string | 否 | active / disabled,默认 active |
| remark | string | 否 | 备注(最长 500 字符) |
请求示例:
json
{
"name": "上海红娘协作群",
"group_no": "wg_002",
"qr_code": "https://oss.ailian.com/group/002.jpg",
"remark": "上海区域红娘协作"
}响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"id": 2
}
}注意:
group_no非空时需唯一,重复返回 400 错误。
编辑微信群
PUT /api/open/v1/work-groups/{id}
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
请求体(所有字段可选,仅传需要修改的字段):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 否 | 群名称 |
| group_no | string | 否 | 群唯一标识 |
| qr_code | string | 否 | 群二维码图片 URL |
| status | string | 否 | active / disabled |
| remark | string | 否 | 备注 |
响应示例:
json
{
"code": 200,
"message": "更新成功",
"data": null
}启用/停用微信群
PUT /api/open/v1/work-groups/{id}/status
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | string | 是 | 目标状态:active / disabled |
请求示例:
PUT /api/open/v1/work-groups/1/status?status=disabled响应示例:
json
{
"code": 200,
"message": "操作成功",
"data": null
}停用后群仍保留成员关系,仅不再向 C 端展示。
删除微信群
DELETE /api/open/v1/work-groups/{id}
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
响应示例:
json
{
"code": 200,
"message": "删除成功",
"data": null
}注意:删除前必须先解除所有红娘和工作微信号成员,否则返回 400 错误。删除为软删除,
group_no会追加后缀释放唯一值。
关联红娘(单个)
POST /api/open/v1/work-groups/{id}/matchmakers
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| matchmaker_id | int | 是 | 红娘 ID |
| remark | string | 否 | 备注 |
响应示例:
json
{
"code": 200,
"message": "关联成功",
"data": null
}同一红娘在同一群已存在时返回 400 错误。
批量关联红娘
POST /api/open/v1/work-groups/{id}/matchmakers/batch
权限:open:work_group:write
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| matchmaker_ids | int[] | 是 | 红娘 ID 列表 |
| remark | string | 否 | 备注 |
请求示例:
json
{
"matchmaker_ids": [42, 43, 44],
"remark": "批量加入群"
}响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"success_count": 3,
"skip_count": 0
}
}已存在的关联自动跳过,计入
skip_count。
解绑红娘
DELETE /api/open/v1/work-groups/{id}/matchmakers/{matchmaker_id}
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
| matchmaker_id | int | 红娘 ID |
响应示例:
json
{
"code": 200,
"message": "解绑成功",
"data": null
}关联工作微信号(单个)
POST /api/open/v1/work-groups/{id}/work-wechats
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| work_wechat_id | int | 是 | 工作微信号 ID |
| remark | string | 否 | 备注 |
响应示例:
json
{
"code": 200,
"message": "关联成功",
"data": null
}同一工作微信号在同一群已存在时返回 400 错误。
批量关联工作微信号
POST /api/open/v1/work-groups/{id}/work-wechats/batch
权限:open:work_group:write
请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| work_wechat_ids | int[] | 是 | 工作微信号 ID 列表 |
| remark | string | 否 | 备注 |
请求示例:
json
{
"work_wechat_ids": [1, 2, 3],
"remark": "批量加入群"
}响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"success_count": 3,
"skip_count": 0
}
}解绑工作微信号
DELETE /api/open/v1/work-groups/{id}/work-wechats/{work_wechat_id}
权限:open:work_group:write
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
| work_wechat_id | int | 工作微信号 ID |
响应示例:
json
{
"code": 200,
"message": "解绑成功",
"data": null
}群内红娘列表
GET /api/open/v1/work-groups/{id}/matchmakers
权限:open:work_group:read
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认 1 |
| page_size | int | 否 | 每页条数,默认 20,最大 1000 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 10,
"work_group_id": 1,
"matchmaker_id": 42,
"matchmaker_name": "王红娘",
"matchmaker_wechat": "wxid_wanghongniang",
"matchmaker_wechat_id": "wanghongniang_888",
"remark": "加入资源共享群",
"joined_at": "2025-06-10 09:00:00"
}
],
"total": 12
}
}群内工作微信号列表
GET /api/open/v1/work-groups/{id}/work-wechats
权限:open:work_group:read
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认 1 |
| page_size | int | 否 | 每页条数,默认 20,最大 100 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 20,
"work_group_id": 1,
"work_wechat_id": 3,
"wechat_number": "wx_work_001",
"wechat_nickname": "艾恋客服A",
"phone": "13900139000",
"remark": "加入资源共享群",
"joined_at": "2025-06-10 09:05:00"
}
],
"total": 3
}
}查看操作日志
GET /api/open/v1/work-groups/{id}/logs
权限:open:work_group:read
路径参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | int | 微信群 ID |
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 否 | 页码,默认 1 |
| page_size | int | 否 | 每页条数,默认 20,最大 100 |
响应示例:
json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": 100,
"work_group_id": 1,
"action": "associate",
"target_type": "matchmaker",
"target_id": 42,
"from_value": null,
"to_value": null,
"operator_id": 0,
"operator_name": "Open API",
"remark": "加入资源共享群",
"created_at": "2025-06-10 09:00:00"
}
],
"total": 35
}
}操作类型说明:
| action | 说明 |
|---|---|
create | 创建微信群 |
update | 编辑信息 |
enable | 启用 |
disable | 停用 |
delete | 删除 |
associate | 关联成员 |
disassociate | 解绑成员 |
注意:
target_type仅在associate/disassociate时有值,取值为matchmaker/work_wechat。通过 Open API 进行的操作,operator_id为0,operator_name显示为"Open API"。