feat(douyu): 新增和平小店查询模块(绑定角色/商品列表/点券余额)

- activity_client: getIframeUrl 签发 code/sig,道聚城 getrole.out/recommend/balance 接口
  (2026-08 起需 isCode=1 + authType=delegate + sAnchorId 才能通过 Livelink 校验)
- 迁移 0016: accounts xpd_* 字段、douyu_config 小店配置(actAlias/actId/rid)、
  douyu_xpd_goods_snapshot 商品快照表
- runner/service/router/schema 注册 query_xpd_role/refresh_xpd_goods/query_xpd_balance
  三个任务,任务结果剥离 role.raw 防 openid 泄露
- 前端: 和平小店路由/菜单/DouyuTasksPage 三态/商品下拉/配置弹窗
This commit is contained in:
yml2213
2026-08-06 17:23:59 +08:00
parent f8de495029
commit fdc74eba8c
12 changed files with 702 additions and 25 deletions
+25
View File
@@ -70,6 +70,13 @@ class Account(Base):
esports_bind_status = Column(String(32), default="")
esports_change_role_wait_time = Column(Integer, nullable=True)
esports_can_change_time = Column(Integer, nullable=True)
xpd_game_name = Column(String(128), default="")
xpd_openid = Column(String(128), default="")
xpd_role_id = Column(String(64), default="")
xpd_plat_id = Column(Integer, nullable=True)
xpd_area_id = Column(Integer, nullable=True)
xpd_balance = Column(Integer, nullable=True)
xpd_bind_status = Column(String(32), default="")
created_at = Column(DateTime, default=_utcnow)
updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow)
@@ -132,6 +139,9 @@ class DouyuConfig(Base):
esports_chicken_skin_id = Column(String(64), default="0")
esports_firework_gift_id = Column(String(64), default="24767")
esports_firework_skin_id = Column(String(64), default="3850")
xpd_act_alias = Column(String(64), default="20260623KDQFH")
xpd_act_id = Column(String(64), default="46195")
xpd_rid = Column(String(64), default="9263298")
gold_pay_type = Column(Integer, default=1)
gift_id = Column(String(64), default="23643")
skin_id = Column(String(64), default="2942")
@@ -151,6 +161,21 @@ class DouyuGoodsSnapshot(Base):
updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow)
class DouyuXpdGoodsSnapshot(Base):
"""斗鱼和平小店商品快照"""
__tablename__ = "douyu_xpd_goods_snapshot"
id = Column(Integer, primary_key=True, autoincrement=True)
commodity_id = Column(String(64), nullable=False, index=True)
name = Column(String(256), default="")
price = Column(Integer, nullable=True)
org_price = Column(Integer, nullable=True)
category = Column(String(32), default="")
goods_left = Column(Integer, nullable=True)
raw = Column(JSON, nullable=True)
updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow)
class DouyuEsportsGoodsSnapshot(Base):
"""斗鱼电竞手册皮肤商城商品快照"""
__tablename__ = "douyu_esports_goods_snapshot"