// // KMMemberInfo.swift // PDF Reader Pro // // Created by wanjun on 2024/10/22. // import Cocoa @objcMembers class KMMemberInfo: NSObject { static let shared = KMMemberInfo() var isLogin: Bool = false /** 登录 */ private var _refresh_token: String = "" // 刷新Token private var _access_token: String = "" // 访问Token private var _token_type: String = "" // Token 类型 private var _expires_in: String = "" private var _scope: String = "" /** 登录 */ var userID: String = "" // 用户ID var userEmail: String = "" // 用户邮箱 var fullName: String = "" // 用户名称 var _activeVips: [KMMemberUserInfoActiveVIP] = [] // 活跃的会员 var _activeAis: [KMMemberUserInfoActiveVIP] = [] // 活跃的AI var vip_id: String = "" // id var vip_userId: String = "" // 用户id var vip_status: Int = 0 // 状态 0注册1订阅中2订阅过期3试用中4试用过期 var vip_endDate: String = "" // 到期时间 var vip_payType: Int = 0 // 0未开启自动续订 1自动续订 var vip_productName: String = "" // 产品名字 var vip_levels: String = "" // 会员等级 1是免费 2是标准 3是高级 var vip_platforms: String = "" // 支持的平台 var vip_point: Int = 0 // 剩余ai点数(svip才有) var vip_maxDeviceNum: Int = 0 // 最大登录设备限制数 var vip_paymentModel: String = "" // 支付方式 付费模式(1自动续订(vip svip) 2单次付费(永久会员)) var vip_isAi: String = "" // 是否是ai产品(0否1是) var vip_cycle: Int = 0 // 订阅周期:1、月(30天);2、季(90天);3、半年(183天);4、年(365天) var ai_id: String = "" // id var ai_userId: String = "" // 用户id var ai_status: Int = 0 // 状态 0注册1订阅中2订阅过期3试用中4试用过期 var ai_endDate: String = "" // 到期时间 var ai_payType: Int = 0 // 0未开启自动续订 1自动续订 var ai_productName: String = "" // 产品名字 var ai_levels: String = "" // 会员等级 1是免费 2是标准 3是高级 var ai_platforms: String = "" // 支持的平台 var ai_point: Int = 0 // 剩余ai点数(svip才有) var ai_maxDeviceNum: Int = 0 // 最大登录设备限制数 var ai_paymentModel: String = "" // 支付方式 付费模式(1自动续订(vip svip) 2单次付费(永久会员)) var ai_isAi: String = "" // 是否是ai产品(0否1是) var ai_cycle: Int = 0 // 订阅周期:1、月(30天);2、季(90天);3、半年(183天);4、年(365天) var aiPoint: Int = 0 // AI 点数 var validFlag: String = "" // 注销(0), * 正常(1), * 停用(2), * 注销中(5); var isHaveAIDiscount: String = "" // 是否有ai折扣 var canTrail: Bool = false // 是否能试用 // var currentTime: String = "" // 当前注销时间 // var logOffTime: String = "" // 注销时间 // MARK: Get & Set var refresh_token: String { get { let token = UserDefaults.standard.value(forKey: "MemberRefreshToken") if token is String { return token as! String } return _refresh_token } set { _refresh_token = newValue UserDefaults.standard.setValue(newValue, forKey: "MemberRefreshToken") UserDefaults.standard.synchronize() } } var access_token: String { get { let token = UserDefaults.standard.value(forKey: "MemberAccessToken") if token is String { return token as! String } return _access_token } set { _access_token = newValue UserDefaults.standard.setValue(newValue, forKey: "MemberAccessToken") UserDefaults.standard.synchronize() } } var token_type: String { get { return _token_type } set { _token_type = newValue } } var activeVips: [KMMemberUserInfoActiveVIP] { get { return _activeVips } set { _activeVips = newValue for vip in _activeVips { if vip_levels == "" { vip_id = vip.id vip_userId = vip.userId vip_status = vip.status vip_endDate = vip.endDate vip_payType = vip.payType vip_productName = vip.productName vip_levels = vip.levels vip_platforms = vip.platforms vip_point = vip.point vip_maxDeviceNum = vip.maxDeviceNum vip_paymentModel = vip.paymentModel vip_isAi = vip.isAi vip_cycle = vip.cycle } else { if let vipLevelsInt = Int(vip_levels), let vipOtherLevelsInt = Int(vip.levels), vipLevelsInt < vipOtherLevelsInt { vip_id = vip.id vip_userId = vip.userId vip_status = vip.status vip_endDate = vip.endDate vip_payType = vip.payType vip_productName = vip.productName vip_levels = vip.levels vip_platforms = vip.platforms vip_point = vip.point vip_maxDeviceNum = vip.maxDeviceNum vip_paymentModel = vip.paymentModel vip_isAi = vip.isAi vip_cycle = vip.cycle } } } } } var activeAis: [KMMemberUserInfoActiveVIP] { get { return _activeAis } set { _activeAis = newValue for vip in _activeAis { if ai_levels == "" { ai_id = vip.id ai_userId = vip.userId ai_status = vip.status ai_endDate = vip.endDate ai_payType = vip.payType ai_productName = vip.productName ai_levels = vip.levels ai_platforms = vip.platforms ai_point = vip.point ai_maxDeviceNum = vip.maxDeviceNum ai_paymentModel = vip.paymentModel ai_isAi = vip.isAi ai_cycle = vip.cycle } else { if let vipLevelsInt = Int(ai_levels), let vipOtherLevelsInt = Int(vip.levels), vipLevelsInt < vipOtherLevelsInt { ai_id = vip.id ai_userId = vip.userId ai_status = vip.status ai_endDate = vip.endDate ai_payType = vip.payType ai_productName = vip.productName ai_levels = vip.levels ai_platforms = vip.platforms ai_point = vip.point ai_maxDeviceNum = vip.maxDeviceNum ai_paymentModel = vip.paymentModel ai_isAi = vip.isAi ai_cycle = vip.cycle } } } } } // MARK: Public Method func memberUserInfo(model: KMMemberUserInfo) -> Void { userID = model.id userEmail = model.email fullName = model.fullName aiPoint = model.aiPoint validFlag = model.validFlag isHaveAIDiscount = model.isHaveAIDiscount if model.canTrail == "1" { canTrail = true } else { canTrail = false } activeVips = model.activeVIP activeAis = model.activeAI } }