修复合作获客扫码绑定崩溃与 Toast 层级,并接入分成比例修改。

将扫码页提升到列表层弹出并补齐 AppDelegate.window,避免扫码时 UIKit 取主窗口崩溃;Toast 改用独立 UIWindow 显示在 sheet 之上;合作获客员支持短信验证修改分成比例,同时优化冷启动根视图创建时机并补充相关测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-03 20:37:24 +08:00
parent 00c3cd0a93
commit 49e997ddba
20 changed files with 905 additions and 70 deletions

View File

@ -17,7 +17,7 @@ protocol CooperationOrderServing {
func saleUserInviteInfo(saleUserId: Int) async throws -> SaleUserInviteInfo
///
func saleUserAcceptBind(saleUserId: Int) async throws
func saleUserAcceptBind(saleUserId: Int, commissionRate: Int) async throws
/// 线
func saleUserReferralLeads(page: Int, pageSize: Int) async throws -> ListPayload<ReferralLead>
@ -36,6 +36,12 @@ protocol CooperationOrderServing {
///
func saleUserUpdateRemark(saleUserId: Int, photogRemarkName: String) async throws
///
func saleUserCommissionRateSendSmsCode(phone: String) async throws
///
func saleUserUpdateCommissionRate(saleUserId: Int, commissionRate: Int, smsCode: String) async throws -> CooperativeSaler
}
@MainActor
@ -78,12 +84,15 @@ final class CooperationOrderAPI: CooperationOrderServing {
}
///
func saleUserAcceptBind(saleUserId: Int) async throws {
func saleUserAcceptBind(saleUserId: Int, commissionRate: Int) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/sale-user/accept-bind",
queryItems: [URLQueryItem(name: "sale_user_id", value: "\(saleUserId)")]
queryItems: [
URLQueryItem(name: "sale_user_id", value: "\(saleUserId)"),
URLQueryItem(name: "commission_rate", value: "\(commissionRate)"),
]
)
)
}
@ -173,4 +182,34 @@ final class CooperationOrderAPI: CooperationOrderServing {
)
)
}
///
func saleUserCommissionRateSendSmsCode(phone: String) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/sale-user/commission-rate/send-sms-code",
body: SaleUserCommissionRateSmsRequest(phone: phone)
)
)
}
///
func saleUserUpdateCommissionRate(
saleUserId: Int,
commissionRate: Int,
smsCode: String
) async throws -> CooperativeSaler {
try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/sale-user/commission-rate",
body: SaleUserCommissionRateUpdateRequest(
saleUserId: saleUserId,
commissionRate: commissionRate,
smsCode: smsCode
)
)
)
}
}