// // PaymentModels.swift // suixinkan // import Foundation /// 摄影师收款码响应,包含静态与动态支付 URL。 struct PayCodeResponse: Decodable, Sendable, Equatable { let staticPayURL: String let dynamicPayURL: String enum CodingKeys: String, CodingKey { case staticPayURL = "static_pay_url" case dynamicPayURL = "dynamic_pay_url" } init(staticPayURL: String, dynamicPayURL: String) { self.staticPayURL = staticPayURL self.dynamicPayURL = dynamicPayURL } } /// 收款记录响应,含按日汇总与明细列表。 struct RepaymentCollectionRecordResponse: Decodable, Sendable, Equatable { let analyse: [RepaymentCollectionRecordAnalyseItem] let list: [RepaymentCollectionRecordItem] init( analyse: [RepaymentCollectionRecordAnalyseItem] = [], list: [RepaymentCollectionRecordItem] = [] ) { self.analyse = analyse self.list = list } } /// 收款记录按日汇总项。 struct RepaymentCollectionRecordAnalyseItem: Decodable, Sendable, Equatable, Hashable { let date: String let orderCount: Int let orderAmountSum: String enum CodingKeys: String, CodingKey { case date case orderCount = "order_count" case orderAmountSum = "order_amount_sum" } init(date: String, orderCount: Int, orderAmountSum: String) { self.date = date self.orderCount = orderCount self.orderAmountSum = orderAmountSum } } /// 收款记录明细项。 struct RepaymentCollectionRecordItem: Decodable, Sendable, Equatable, Hashable { let orderNumber: String let userPhone: String let orderAmount: String let createDate: String let createTime: String enum CodingKeys: String, CodingKey { case orderNumber = "order_number" case userPhone = "user_phone" case orderAmount = "order_amount" case createDate = "create_date" case createTime = "create_time" } init( orderNumber: String, userPhone: String, orderAmount: String, createDate: String, createTime: String ) { self.orderNumber = orderNumber self.userPhone = userPhone self.orderAmount = orderAmount self.createDate = createDate self.createTime = createTime } } /// 按日分组的收款记录,对齐 Android `RepaymentCollectionRecordGroup`。 struct RepaymentCollectionRecordGroup: Sendable, Equatable, Hashable { let analyse: RepaymentCollectionRecordAnalyseItem let items: [RepaymentCollectionRecordItem] } /// 收款商户展示信息。 struct PaymentMerchantInfo: Sendable, Equatable { let name: String let company: String static let defaultInfo = PaymentMerchantInfo( name: "元智享", company: "扬州元智享网络科技有限公司" ) }