11 KiB
11 KiB
原 Vue Host Center 逻辑清单
来源:
chatapp-h5/h5/js/index-CN7d9oZS-1776148658686.jschatapp-h5/h5/js/pageConfig-BUpLPO7w-1776148658686.jschatapp-h5/h5/js/teamBill-BWXvrc1S-1776148658686.jschatapp-h5/h5/js/index-CIAVq8iD-1776148658686.js- 后端参数定义参考
chatapp3-java/rc-service
页面初始化
- 初始化 i18n:读取当前 locale,并调用语言切换逻辑。
- 初始化路由对象。
- 初始化 identity store,并设置身份为
HOST。 - 清空 payee store。
- 使用
usePageConfig("HOST_CENTER", { needsTeamInfo: true, forceRefresh: true, onDataLoaded })。 - 页面 mounted 后并发或顺序触发:
- 设置身份:
identity = "HOST" - 获取我的代理资料
- 清空收款人缓存
- 获取银行卡列表
- 获取提现/KYC 信息
- 获取主播工资提现是否可用
- 设置身份:
用户信息获取
usePageConfig内部优先读取缓存用户信息。- 非强制刷新时读取本地缓存用户资料。
- 强制刷新时请求
/team/member/profile。 - 页面展示用字段:
idaccountuserNicknamenameuserAvatarownSpecialId.account
- Host Center 当前代理/团长资料来自
/team/team-own/profile。 - 展示名称:
userNickname || name - 展示 ID:
ownSpecialId.account || account - 头像加载失败时走
imageHandlerfallback。
App 连接与请求头
- 判断是否在 App/WebView 环境。
- 若已连接且缓存有效,复用缓存请求头。
- 若未连接,调用 App bridge 获取 access origin 参数。
- 解析 App 返回参数后设置 HTTP 请求头。
- 关键请求头来源:
AuthorizationReq-LangReq-App-IntelReq-ImeiReq-Sys-Origin
- 连接失败时可能跳转
/not_app。
路由与身份守卫
- 请求
/app/h5/identity获取身份。 - 根据身份字段计算 roles:
freightAgentagentbdLeaderbdanchoradmin
- 主角色权重:
guestanchoragentbdbdLeaderfreightAgentadmin
- 默认跳转页:
admin->/admin-centerfreightAgent->/coin-selleragent->/agency-centerbdLeader->/bd-leader-centerbd->/bd-centeranchor->/host-centerguest->/apply
- 当前用户没有 anchor 身份时跳到对应默认页。
收入/工资逻辑
- 可用工资来自
usePageConfig的salaryInfo.currentSalary。 usePageConfig会请求/wallet/bank/balance。- 响应 body 是 number 时展示
body.toFixed(2)。 - 请求失败时
currentSalary = 0并 toast:Failed to load balance. Please try again. - 原 Host Center 还请求
/team/member-work,用于获取历史工资和目标数据。 /team/member-work返回后:historySalary写入本地变量- 读取
targets[0] - 当前
hyapp/host-center的 Work Time 使用targets[0].target.onlineTime作为总工作时长 - 当前
hyapp/host-center的 Target 显示targets[0].target.acceptGiftValue当前礼物积分 - Target 点击明细使用
targets[0].target.dailyTargets[],展示每日dateNumber、acceptGiftValue、onlineTime - 结算状态映射:
SETTLED->CompletedUNPAID->In ProgressHANG_UP->Out of accountPAY_OUT->Completed
- 目标等级取
target.settlementResult.level || target.level || "-"
今日任务/直播数据逻辑
- 原 Vue
usePageConfig会请求/team/member/work/statistics-now。 - 请求参数:
dataType=DAILYmemberId=<当前用户 id/account>
- 原 Vue 今日任务展示逻辑:
anchorType = "Chat"minutesProgress = min(ownTime + otherTime, minutesTotal)minutesTotal = 120giftTask = acceptGiftValue || 0
- 当前
hyapp/host-center的 Work Time 不再用该接口,也不再限制 120;改用/team/member-work?userId=<当前用户 id>返回的targets[0].target.onlineTime总时长。
银行卡与提现信息逻辑
- 请求
/wallet/bank-card/list获取银行卡列表。 - 取
body.find(item => item.use)作为当前使用银行卡。 - 请求
/wallet/withdraw-info/list获取提现/KYC 信息。 - 若
body.length > 0:- 取第一条
passportFrontUrl按 JSON 字符串解析成previewUrls- 合并到提现信息对象
- 请求
/wallet/bank/host-salary/withdraw/enabled。 body转 Boolean 后控制是否展示Cash withdraw入口。- 点击提现:
- 如果没有提现信息或没有当前使用银行卡,打开
infoMissing弹窗。 - 否则跳转
/cash-withdraw。
- 如果没有提现信息或没有当前使用银行卡,打开
弹窗逻辑
- 弹窗状态:
infoMissingleave
maskLayerShow = infoMissing || leave- 打开弹窗前先关闭其它弹窗。
- 点击遮罩关闭弹窗。
infoMissing弹窗:- 标题:
prompt - 文案:
fill_info_tips - 辅助文案:
card_issue_tips - 按钮跳转
/host-setting
- 标题:
leave弹窗:- 标题:
tips - 文案:
leave_agent_tips - 取消关闭弹窗
- 确认执行退出团队申请
- 标题:
退出团队逻辑
- 请求
/team/user/apply - 方法:
POST - Body:
reason: "QUIT"teamId: <当前团队 id>
teamId来源:- 原 Vue 使用
pe()读取当前团队 id - 静态实现里曾兼容读取
teamInfo.id || agency.teamId || agency.id
- 原 Vue 使用
- 失败时 toast
errorMsg。
点击跳转
- 工资详情:
/history-salary - 平台政策:
/platform-policy?from=hostcenter - 主播设置/银行卡:
/host-setting - 兑换金币:
/exchange-gold-coins - 转账:
/transfer - 提现:
/cash-withdraw - 语言切换:
/language - 返回:
- App bridge
closePage - Flutter bridge
close_page - 浏览器
history.back()
- App bridge
原接口与可传参数
GET /team/member/profile
- 用途:获取当前用户信息。
- 显式查询参数:无。
- 隐式参数:App 请求头中用户、语言、来源等上下文。
GET /team/team-own/profile
- 用途:获取我的团长/代理资料。
- 显式查询参数:无。
- 隐式参数:App 请求头中的当前用户上下文。
GET /team/entry
- 用途:获取当前用户团队入口信息。
- 显式查询参数:无。
- 返回中使用
body.teamProfile || body作为团队信息。
GET /team/release/policy
- 用途:获取团队政策。
- 查询参数:
id: 团队 ID,必传。线上 Java 接口传teamId会返回REQUEST_PARAMETER_ERROR: id required.
- 团队 ID 来源:
- 优先使用
/team/entry返回的body.teamProfile.id /team/team-own/profile返回的body.id是团长/用户资料 ID,不是团队政策接口需要的团队 ID;直接传给/team/release/policy?id=...会返回TEAM_NOT_FOUND
- 优先使用
- 页面 URL 可以继续带
teamId作为本地跳转参数,但真正请求 Java 接口时必须映射为id=<teamProfile.id>。 - 返回使用:
body.policy[]policy[].levelpolicy[].onlineTimepolicy[].targetpolicy[].memberSalarypolicy[].ownSalarypolicy[].totalSalary
GET /team/search-account
- 用途:加入代理页搜索代理账号。
- 查询参数:
account: 用户输入的代理 ID/账号,必传
- 原 Vue
ApplyView使用:- 请求后判断
body.teamProfile body.teamProfile.id作为加入申请的teamId
- 请求后判断
GET /team/wait-apply/profile
- 用途:获取当前用户待处理的加入代理申请。
- 显式查询参数:无。
- 原 Vue
ApplyView使用:- 有返回
body时显示一条 pending 申请记录 - 展示
body.ownUserProfile.userAvatar - 展示
body.ownUserProfile.userNickname - 展示
body.ownUserProfile.ownSpecialId.account || body.ownUserProfile.account
- 有返回
GET /wallet/bank/balance
- 用途:获取工资/银行卡余额。
- 显式查询参数:无。
- 返回可为数字,也可能为对象。
GET /team/member/work/statistics-now
- 用途:原 Vue 获取成员当天目标/工作统计;当前
hyapp/host-center不再用它展示 Work Time。 - 查询参数:
dataType:DAILY | MONTHmemberId: 成员 ID,必传size: 数量,可选
- Host Center 使用:
dataType=DAILYmemberId=<当前用户 id/account>
GET /team/member-work
- 用途:成员工资情况。
- 查询参数:
userId: 用户 ID,必传
- 返回使用:
historySalarytargetstargets[0].target.onlineTime,当前hyapp/host-center用作 Work Time 总时长targets[0].target.acceptGiftValue,当前hyapp/host-center用作 Target 当前礼物积分targets[0].target.dailyTargets[],当前hyapp/host-center用作每日明细targets[].statustargets[].target.settlementResult.leveltargets[].target.level
GET /wallet/bank-card/list
- 用途:银行卡列表。
- 显式查询参数:无。
- 返回使用:
body[]item.useitem.cardTypeitem.cardNoitem.payee
POST /wallet/bank-card/add
- 用途:新增收款方式。
- Body:
userId: 当前用户 IDcardType:USDT | BANKcardName: 收款方式名称;USDT 时原 Vue 固定为USDTcardNo: 卡号或 USDT 地址payee: 收款人
POST /wallet/bank-card/use
- 用途:设置当前使用的收款方式。
- Body:
id: 收款方式 ID
GET /wallet/withdraw-info/list
- 用途:提现/KYC 信息列表。
- 显式查询参数:无。
- 返回使用:
body[0]body[0].passportFrontUrl
GET /wallet/bank/host-salary/withdraw/enabled
- 用途:主播工资是否允许提现。
- 显式查询参数:无。
- 返回使用:
bodyboolean
GET /wallet/bank/check/exchange-gold
- 用途:检查当前用户是否允许兑换金币。
- 显式查询参数:无。
- 原 Vue
ExchangeGoldCoins用它做兑换入口权限检查。
POST /wallet/bank/exchange/gold
- 用途:把当前可用余额兑换金币。
- Body(原 Vue 主播兑换页):
coinId: 金币档位 IDamount: 美元金额price: 美元金额
- Body(原静态逻辑页):
amount: 美元金额
- 兑换比例未发现后端接口返回;原 Vue 金币档位是前端常量。
GET /wallet/bank/search/user-profile
- 用途:转账前搜索收款用户。
- 查询参数:
account: 用户输入的账号/IDtype: 原 Vue 传AGENTsearchType: 转账场景传TRANSFER
POST /wallet/bank/transferGold
- 用途:把当前可用余额转给其它用户。
- Body:
amount: 美元金额acceptUserId: 收款用户 IDacceptMethod: 原 Vue 主播转账传BANK_TRANSFER
GET /app/h5/identity
- 用途:获取当前 H5 身份。
- 显式查询参数:无。
- 返回使用字段:
freightAgentagentbdLeaderbdanchoradmin
POST /team/user/apply
- 用途:用户申请加入或退出团队。
- Body:
reason:JOIN | QUITteamId: 团队 ID,必传url: 跳转 URL,可选
- Host Center 退出团队使用:
reason: "QUIT"teamId: <当前团队 id>
- ApplyView 加入代理使用:
reason: "JOIN"teamId: <GET /team/search-account 返回的 body.teamProfile.id>
POST /team/user/join-apply-cancel
- 用途:撤销待处理的加入代理申请。
- Body:
id: 申请记录messageId,必传