245 lines
5.9 KiB
Swift
245 lines
5.9 KiB
Swift
//
|
||
// WalletModels.swift
|
||
// Crush
|
||
//
|
||
// Created by Leon on 2025/9/10.
|
||
//
|
||
|
||
import Foundation
|
||
|
||
// MARK: - VIP
|
||
// 顶层结构
|
||
struct MemberDetailOutput: Codable {
|
||
var userMemberInfo: UserSubscription?
|
||
var memberPrivList: [MemberPrivDict]?
|
||
}
|
||
|
||
// 用户会员信息
|
||
struct UserSubscription: Codable {
|
||
var id: Int?
|
||
/// Need to be "APPLE"
|
||
var platform: String?
|
||
var userId: Int?
|
||
var subscriptionId: String?
|
||
var productId: String?
|
||
var memberType: MemberType?
|
||
var priceType: PriceType?
|
||
var purchaseToken: String?
|
||
var refundTimeMs: Int?
|
||
/// 1758289340000
|
||
var purchaseTime: Int?
|
||
var expTime: Int?
|
||
var autoRenewStatus: Bool?
|
||
var status: String?
|
||
var createTime: Int?
|
||
var editTime: Int?
|
||
var ip: String?
|
||
/// 是否已经提醒过。
|
||
var remind: Bool?
|
||
|
||
func getVIPValid() -> Bool{
|
||
if let expTimeTimestamp = expTime{
|
||
if Date().timeStamp < expTimeTimestamp{
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
}
|
||
|
||
// 会员类型
|
||
enum MemberType: String, Codable {
|
||
case vip = "VIP"
|
||
}
|
||
|
||
// 价格周期
|
||
enum PriceType: String, Codable {
|
||
case month = "SUB_MONTH"
|
||
case season = "SUB_SEASON"
|
||
case year = "SUB_YEAR"
|
||
}
|
||
|
||
// 会员特权
|
||
struct MemberPrivDict: Codable {
|
||
var id: Int?
|
||
/// 会员特权标题
|
||
var title: String?
|
||
/// 会员特权描述
|
||
var desc: String?
|
||
var img: String?
|
||
var sort: Int?
|
||
var isDelete: Int?
|
||
var createTime: Int?
|
||
/// 会员特权code , ADD_CRUSH_COIN、ADD_CREATE_AI等~
|
||
var code: String?
|
||
}
|
||
|
||
// MARK: - Charge
|
||
|
||
struct CoinRechargePreOrderResponse: Codable{
|
||
var tradeNo: String?
|
||
|
||
}
|
||
|
||
// MARK: - Bill
|
||
struct BillListRequest: Codable{
|
||
var page: RequestPageData?
|
||
var type: String?
|
||
|
||
var startTime: Int?
|
||
var endTime: Int?
|
||
}
|
||
|
||
struct BillListResponse:Codable{
|
||
/// 总收入
|
||
var incomeTotal: Int?
|
||
/// 总支出
|
||
var outcomeTotal: Int?
|
||
|
||
var pageList: ResponseContentPageData<BillListInfo>?
|
||
}
|
||
|
||
/// 流水
|
||
struct BillListInfo: Codable{
|
||
var tradeNo: String?
|
||
var desUid: Int?
|
||
var status: String?
|
||
var time: Int?
|
||
var amount: Int?
|
||
var item: String?
|
||
var nickname: String?
|
||
var period: String?
|
||
var headImg: String?
|
||
var custId: String?
|
||
var bizNum: String?
|
||
var inOrOut: InOrOut?
|
||
var periodAmount: Int?
|
||
var id: Int?
|
||
/// Buff
|
||
var payment: String?
|
||
var platform: String?
|
||
/// 后续可能添加类型, 可能解析失败
|
||
var bizType: String?
|
||
var message: String?
|
||
var giftId: Int?
|
||
var toWithdrawableIncomeTime: Int?
|
||
/// BALANCE. AWAITING_INCOME
|
||
var buffType: BuffType?
|
||
/// Jsonstring: like { "aiId":.xxx, "giftId" : 1, "num": 12}
|
||
var extend: String?
|
||
|
||
func getExtendObj()-> BillListExtentObj?{
|
||
if let extentString = extend {
|
||
return CodableHelper.decode(BillListExtentObj.self, from: extentString)
|
||
}
|
||
return nil
|
||
}
|
||
/*
|
||
{
|
||
"tradeNo" : "12025091718400465000014",
|
||
"desUid" : null,
|
||
"status" : "WITHDRAW_SUCCESS",
|
||
"time" : 1758105605000,
|
||
"amount" : 7000,
|
||
"item" : "Create AI Image",
|
||
"nickname" : null,
|
||
"period" : null,
|
||
"headImg" : null,
|
||
"custId" : null,
|
||
"bizNum" : "2025091718400464367010",
|
||
"inOrOut" : "OUT",
|
||
"periodAmount" : null,
|
||
"id" : 161,
|
||
"payment" : "Buff",
|
||
"platform" : "Balance",
|
||
"bizType" : "CREATE_AI_IMAGE",
|
||
"message" : null,
|
||
"giftId" : null,
|
||
"toWithdrawableIncomeTime" : null,
|
||
"buffType" : "BALANCE",
|
||
"extend" : null
|
||
}
|
||
*/
|
||
}
|
||
|
||
struct BillListExtentObj: Codable{
|
||
var aiId: Int?
|
||
var giftId: Int?
|
||
var num: Int?
|
||
}
|
||
|
||
// MARK: - Enums
|
||
|
||
enum BuffClassify: String, Codable {
|
||
case bCharge = "B_CHARGE"
|
||
case bPurchase = "B_PURCHASE"
|
||
case bRefund = "B_REFUND"
|
||
case bTip = "B_TIP"
|
||
case bGift = "B_GIFT"
|
||
case bEpalSubscription = "B_EPAL_SUBSCRIPTION"
|
||
case bLuckyDraw = "B_LUCKY_DRAW"
|
||
case bStore = "B_STORE"
|
||
case bEpalPrize = "B_EPAL_PRIZE"
|
||
case bOther = "B_OTHER"
|
||
case iWithdraw = "I_WITHDRAW"
|
||
case iServiceIncome = "I_SERVICE_INCOME"
|
||
case iRefund = "I_REFUND"
|
||
case iTipIncome = "I_TIP_INCOME"
|
||
case iGiftIncome = "I_GIFT_INCOME"
|
||
case iSubscriptionIncome = "I_SUBSCRIPTION_INCOME"
|
||
case iEpalReward = "I_EPAL_REWARD"
|
||
case iStoreReward = "I_STORE_REWARD"
|
||
case iOther = "I_OTHER"
|
||
}
|
||
|
||
enum BizType: String, Codable {
|
||
case game = "GAME"
|
||
case charge = "CHARGE"
|
||
case sub = "SUB"
|
||
case withdraw = "WITHDRAW"
|
||
case refund = "REFUND"
|
||
case frozenBalance = "FROZEN_BALANCE"
|
||
case unfrozenBalance = "UNFROZEN_BALANCE"
|
||
case createAIImage = "CREATE_AI_IMAGE"
|
||
case textModel = "TEXT_MODEL"
|
||
case chatAssistant = "CHAT_ASSISTANT"
|
||
case sendVoice = "SEND_VOICE"
|
||
case voiceCall = "VOICE_CALL"
|
||
case imageUnlock = "IMAGE_UNLOCK"
|
||
case heartbeatPurchase = "HEARTBEAT_PURCHASE"
|
||
case gift = "GIFT"
|
||
case unlockAdmirers = "UNLOCK_ADMIRERS"
|
||
case newUserGift = "NEW_USER_GIFT"
|
||
case vipBuffGift = "VIP_BUFF_GIFT"
|
||
case subscribeMember = "SUBSCRIBE_MEMBER"
|
||
case SIGN_IN_GIFT = "SIGN_IN_GIFT"
|
||
}
|
||
enum InOrOut: String, Codable {
|
||
case `in` = "IN"
|
||
case out = "OUT"
|
||
}
|
||
|
||
enum BuffType: String, Codable {
|
||
case balance = "BALANCE"
|
||
case withdrawableIncome = "WITHDRAWABLE_INCOME"
|
||
case awaitingIncome = "AWAITING_INCOME"
|
||
case refund = "REFUND"
|
||
case frozenIncome = "FROZEN_INCOME"
|
||
case frozenBalance = "FROZEN_BALANCE"
|
||
}
|
||
|
||
enum BillStatus: String, Codable {
|
||
case created = "CREATED"
|
||
case rollBack = "ROLL_BACK"
|
||
case settled = "SETTLED"
|
||
}
|
||
|
||
enum WithdrawStatus: String, Codable {
|
||
case inReview = "IN_REVIEW"
|
||
case reviewFail = "REVIEW_FAIL"
|
||
case withdrawIng = "WITHDRAW_ING"
|
||
case withdrawFail = "WITHDRAW_FAIL"
|
||
case withdrawSuccess = "WITHDRAW_SUCCESS"
|
||
case withdrawFailBack = "WITHDRAW_FAIL_BACK"
|
||
}
|