hyapp-server/docs/CP关系本地真实链路测试用例.md
2026-06-08 14:12:23 +08:00

4.5 KiB
Raw Permalink Blame History

CP关系本地真实链路测试用例

本文只记录本地真实链路验证用例。业务动作优先走 gateway HTTP、room/wallet/user/notice 服务和 RocketMQSQL 只用于准备本地测试数据和核对最终事实。

环境前置

  • Docker 本地服务MySQL、Redis、RocketMQ、gateway-service、room-service、wallet-service、user-service、notice-service。
  • user-service 必须启用 cp_relationship_worker,并消费 hyapp_room_outbox
  • notice-service 必须消费 hyapp_user_outbox,并把 CP 申请/同意/拒绝/关系创建事件投递到腾讯云 IM。
  • 本地测试账号 A、B、C 需要是同一个 app_code=lalu 下的完整资料用户。
  • 本地 CP 礼物需要是 gift_type_code=cp,并在礼物配置中写入 cp_relation_type
  • 送礼前 A 和 B 必须都在同一个房间的 room-service presence 内。

T01 CP礼物创建申请

步骤:

  1. 准备 A、B 用户和 A 的 COIN 余额。
  2. 准备 CP 礼物 local_cp_gift_cpcp_relation_type=cp
  3. A 创建房间A 和 B 都调用进房接口。
  4. A 通过 gateway 给 B 送 CP 礼物。

验证:

  • hyapp_room.room_outboxRoomGiftSentpayload 中 cp_relation_type=cpgift_icon_url 非空。
  • RocketMQ hyapp_room_outbox 被 user-service CP consumer 消费。
  • hyapp_user.user_cp_applications 有 A 到 B 的 pending 申请,expires_at_ms 为当前时间加服务端默认 24 小时。
  • hyapp_user.user_cp_gift_event_consumption 有该 room event 的消费记录。
  • hyapp_user.user_outboxUserCPApplicationCreated
  • 腾讯云 IM 有 A 发给 B 的 C2C 申请消息,Desc=cp_application_createdpayload 含 application_idrelation_type=cpexpires_at_ms
  • 腾讯云 IM 有发到房间群的申请消息,Desc=cp_application_createdpayload 含 recipient_user_id=Broom_id

T02 B同意申请建立关系

步骤:

  1. 使用 T01 产生的 application_id
  2. B 调用 gateway 同意申请接口。

验证:

  • user_cp_applications.status=accepted
  • user_cp_relationships 新增 active 关系A/B 无序 pair 只有一条 active 关系。
  • 同一对用户其他 pending 申请被置为 blocked
  • user_outboxUserCPApplicationAcceptedUserCPRelationshipCreated
  • 腾讯云 IM 向 A 发送 B 发出的同意结果 C2C 消息,Desc=cp_application_accepted
  • 腾讯云 IM 向房间群发送同意结果消息,Desc=cp_application_acceptedpayload 含 recipient_user_id=A
  • 腾讯云 IM 向区域群发送关系创建消息,Desc=cp_relationship_createdpayload 含 A/B 头像昵称短 ID、礼物 icon 和 room_id

T03 已有关系后送礼增加亲密值并升级

步骤:

  1. 使用服务端默认等级规则,确认 1 级阈值为 0。
  2. A 再次给 B 送 CP 礼物。

验证:

  • 不新增 pending 申请。
  • 原关系 intimacy_value 增加礼物结算热度值。
  • 原关系 level_no 按服务端默认阈值计算。
  • user_outboxUserCPRelationshipIntimacyChanged

T04 同一对用户只能同时存在一种关系

步骤:

  1. A 给 B 发送兄弟礼物,生成 brother pending 申请。
  2. A 给 B 发送姐妹礼物,生成 sister pending 申请。
  3. B 接受其中一个申请。
  4. B 再尝试接受另一个申请。

验证:

  • 第一个接受成功后产生 active 关系。
  • 另一个申请不能接受,接口返回冲突提示。
  • A/B active 关系仍只有一种。

T05 同一用户只能同时存在一个关系

步骤:

  1. 使用 T02 建立 A/B active 关系。
  2. C 给 A 发送 CP 礼物,生成 C 到 A 的 pending 申请。
  3. A 尝试同意 C 的申请。

验证:

  • 同意接口返回冲突。
  • A/B active 关系仍保留。
  • C/A 不创建 active 关系。

T06 申请过期

步骤:

  1. 创建一条 pending 申请。
  2. 通过 SQL 把 expires_at_ms 调整到当前时间之前。
  3. B 查询申请列表或尝试同意。

验证:

  • 申请状态被固化为 expired
  • 同意接口返回 CONFLICT,申请被固化为 expired,不建立关系。

T07 拒绝申请

步骤:

  1. 创建一条 pending 申请。
  2. B 调用拒绝接口。

验证:

  • user_cp_applications.status=rejected
  • 不创建 active 关系。
  • user_outboxUserCPApplicationRejected
  • 腾讯云 IM 向 A 发送 B 发出的拒绝结果 C2C 消息,Desc=cp_application_rejected
  • 腾讯云 IM 向房间群发送拒绝结果消息,Desc=cp_application_rejectedpayload 含 recipient_user_id=A