// // KMMemberInfo.swift // PDF Reader Pro // // Created by wanjun on 2024/10/22. // import Cocoa // 用户场景类型 @objc enum KMUserScenarioType : Int { case lite_type1 = 0 // 免费版 无旧买断 免费未试用 (右上角导航栏按钮 - “登录领福利” + “试用”) case lite_type2 // 免费版 无旧买断 免费试用中 (右上角导航栏按钮 - “登录领福利”) case lite_type3 // 免费版 无旧买断 试用过期或取消 (右上角导航栏按钮 - “登录领福利” + 开通会员) case lite_type4 // 免费版 无旧买断 可升级订阅 (右上角导航栏按钮 - “登录领福利”) case lite_type5 // 免费版 无旧买断 多平台永久 (右上角导航栏按钮 - “登录领福利” + 升级全平台) case lite_type6 // 免费版 无旧买断 全平台年订阅 (右上角导航栏按钮 - “登录领福利”) case lite_type7 // 免费版 无旧买断 会员到期 (右上角导航栏按钮 - “登录领福利” + 续费) case lite_type8 // 免费版 无旧买断 订阅未过期且取消订阅 (右上角导航栏按钮 - “登录领福利” + 续费) case lite_type9 // 免费版 有旧买断 免费未试用+订阅过期+多平台永久 (右上角导航栏按钮 - “登录领福利” + “升级至Pro”) case lite_type10 // 免费版 有旧买断 免费试用中 (右上角导航栏按钮 - “登录领福利”) case lite_type11 // 免费版 有旧买断 试用过期或取消 (右上角导航栏按钮 - “登录领福利” + 开通会员) case lite_type12 // 免费版 有旧买断 订阅中 (右上角导航栏按钮 - “登录领福利”) case lite_type13 // 免费版 有旧买断 订阅未过期且取消订阅 (右上角导航栏按钮 - “登录领福利” + 续费) case pro_type1 // 付费版 有旧PDF To Offic 免费+买断 (右上角导航栏按钮 - “登录领福利” + 升级(全平台)) case pro_type2 // 付费版 有旧PDF To Office 订阅且未过期 (右上角导航栏按钮 - “登录领福利”) case pro_type3 // 付费版 无旧PDF To Office未订阅 (右上角导航栏按钮 - “登录领福利” + 升级(全平台/高级版永久)) case pro_type4 // 付费版 无旧PDF To Office 高级版永久 (右上角导航栏按钮 - Info + 升级(全平台)) case pro_type5 // 付费版 无旧PDF To Office 订阅且未过期 (右上角导航栏按钮 - Info) /** DMG | 未登录 | 未绑定License 【账户权益:免费; 卡片:空; 状态栏:登入、升级至Pro; 比较表:无; 高级功能:无】*/ case dmg_type1 /** DMG | 未登录 | 有标准版License、无转档License 【账户权益:免费; 卡片:空; 状态栏:登入、升级至Pro、PDF To Office; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type2 /** DMG | 未登录 | 有标准版License、有转档License 【账户权益:免费; 卡片:空; 状态栏:登入、升级至Pro; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type3 /** DMG | 登录 | 未绑定License | 免费未试用 【账户权益:免费; 卡片:免费试用、立即购买; 状态栏:头像、立即试用; 比较表:试用、购买; 高级功能:无】*/ case dmg_type4 /** DMG | 登录 | 未绑定License | 双平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级比较表(39.99); 高级功能:可使用高级功能(含转档)】 */ case dmg_type5 /** DMG | 登录 | 未绑定License | Mac单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级比较表(49.99); 高级功能:可使用高级功能(含转档)】 */ case dmg_type6 /** DMG | 登录 | 未绑定License | iOS单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级比较表(49.99); 高级功能:可使用高级功能(含转档)】 */ case dmg_type7 /** DMG | 登录 | 未绑定License | 全平台标准版12个月订阅 【账户权益:标准; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能,无法使用转档】 */ case dmg_type8 /** DMG | 登录 | 未绑定License | 全平台标准版12个月订阅取消续订 【账户权益:标准; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type9 /** DMG | 登录 | 未绑定License | 全平台高级版12个月订阅试用中 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type10 /** DMG | 登录 | 未绑定License | 全平台高级版12个月试用过期 【账户权益:免费; 卡片:购买; 状态栏:头像、购买; 比较表:购买比较表; 高级功能:无】*/ case dmg_type11 /** DMG | 登录 | 未绑定License | 全平台高级版12个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type12 /** DMG | 登录 | 未绑定License | 全平台高级版12个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type13 /** DMG | 登录 | 未绑定License | 全平台高级版6个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type14 /** DMG | 登录 | 未绑定License | 全平台高级版6个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type15 /** DMG | 登录 | 未绑定License | Android单平台高级版月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:无】*/ case dmg_type16 /** DMG | 登录 | 未绑定License | Android单平台高级版月订阅取消续订 【账户权益:高级; 卡片:; 状态栏:头像; 比较表:无; 高级功能:无】*/ case dmg_type17 /** DMG | 登录 | 未绑定License | 订阅到期 【账户权益:免费; 卡片:续费; 状态栏:头像、续费; 比较表:购买比较表; 高级功能:无】*/ case dmg_type18 /** DMG | 登录 | 有标准版License、无转档License | 免费未试用 【账户权益:免费; 卡片:免费试用、购买按钮; 状态栏:头像、免费试用、PDF To Office; 比较表:试用、购买; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type19 /** DMG | 登录 | 有标准版License、无转档License | 全平台标准版12个月订阅 【账户权益:标准; 卡片:无; 状态栏:头像、PDF To Office; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type20 /** DMG | 登录 | 有标准版License、无转档License | 全平台标准版12个月订阅取消续订 【账户权益:标准; 卡片:无; 状态栏:头像、PDF To Office; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type21 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版12个月试用过期 【账户权益:免费; 卡片:购买按钮; 状态栏:头像、购买、PDF To Office; 比较表:购买; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type22 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版12个月订阅试用中 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type23 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版12个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type24 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版12个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type25 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版6个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type26 /** DMG | 登录 | 有标准版License、无转档License | 全平台高级版6个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type27 /** DMG | 登录 | 有标准版License、无转档License | 双平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级(39.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type28 /** DMG | 登录 | 有标准版License、无转档License | Mac单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级(49.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type29 /** DMG | 登录 | 有标准版License、无转档License | iOS单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级、PDF To Office; 比较表:升级(49.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type30 /** DMG | 登录 | 有标准版License、无转档License | Android单平台高级版月订阅 【账户权益:高级; 卡片:无; 状态栏:头像、PDF To Office; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type31 /** DMG | 登录 | 有标准版License、无转档License | Android单平台高级版月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像、PDF To Office; 比较表:无; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type32 /** DMG | 登录 | 有标准版License、无转档License | 订阅到期 【账户权益:免费; 卡片:续费; 状态栏:头像、续费、PDF To Office; 比较表:购买; 高级功能:可使用高级功能,无法使用转档】*/ case dmg_type33 /** DMG | 登录 | 有标准版License、有转档License | 免费未试用 【账户权益:免费; 卡片:免费试用、购买按钮; 状态栏:头像、免费试用; 比较表:试用、购买; 高级功能:可使用高级功能(含转档)】*/ case dmg_type34 /** DMG | 登录 | 有标准版License、有转档License | 全平台标准版12个月订阅 【账户权益:标准; 卡片:无; 状态栏:头像; 比较表:无; 高级功能: 高级功能:可使用高级功能(含转档)】*/ case dmg_type35 /** DMG | 登录 | 有标准版License、有转档License | 全平台标准版12个月订阅取消续订 【账户权益:标准; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type36 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版12个月试用过期 【账户权益:免费; 卡片:购买按钮; 状态栏:头像、购买; 比较表:购买; 高级功能:可使用高级功能(含转档)】*/ case dmg_type37 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版12个月订阅试用中 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type38 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版12个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type39 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版12个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type40 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版6个月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type41 /** DMG | 登录 | 有标准版License、有转档License | 全平台高级版6个月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type42 /** DMG | 登录 | 有标准版License、有转档License | 双平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级(39.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type43 /** DMG | 登录 | 有标准版License、有转档License | Mac单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级(49.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type44 /** DMG | 登录 | 有标准版License、有转档License | iOS单平台高级永久 【账户权益:高级; 卡片:升级; 状态栏:头像、升级; 比较表:升级(49.99); 高级功能:可使用高级功能(含转档)】*/ case dmg_type45 /** DMG | 登录 | 有标准版License、有转档License | Android单平台高级版月订阅 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type46 /** DMG | 登录 | 有标准版License、有转档License | Android单平台高级版月订阅取消续订 【账户权益:高级; 卡片:无; 状态栏:头像; 比较表:无; 高级功能:可使用高级功能(含转档)】*/ case dmg_type47 /** DMG | 登录 | 有标准版License、有转档License | 订阅到期 【账户权益:免费; 卡片:续费; 状态栏:头像、续费; 比较表:购买; 高级功能:可使用高级功能(含转档)】*/ case dmg_type48 } // 当前权益类型 @objc enum KMCurrentUserEquityType : Int { case lite_free = 0 // 免费版 免费 case lite_old } // 当前注销状态 @objc enum KMCurrentLogoutStatus : Int { case null = 0 // case prompt_unsubscribe case prompt_signout case closeAccount case closeVerification case closeApply } @objcMembers class KMMemberInfo: NSObject { static let shared = KMMemberInfo() var isLogin: Bool = false var currentLogoutStatus: KMCurrentLogoutStatus = .null /** 登录 */ 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" // 会员等级 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" // 会员等级 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 = "" // 注销时间 var avatarUrl: String = "" // 头像 var avatarImage: NSImage? // 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 index in 0..<_activeVips.count { let vip = _activeVips[index] if index == 0 { 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 index in 0..<_activeAis.count { let vip = _activeAis[index] if index == 0 { 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 } } } } } // 用户当前的状态 var userScenarioType: KMUserScenarioType { get { let oldAIPoints = AIInfoManager.default().aiInfo.totalToken - AIInfoManager.default().aiInfo.usedTimes // 旧版AI点数 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" var startTime = Date() if KMMemberInfo.shared.vip_endDate.count > 0 { if let data = dateFormatter.date(from: KMMemberInfo.shared.vip_endDate) { startTime = data } } let currentTime = Date() let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } #if VERSION_FREE #if VERSION_DMG // DMG if KMMemberInfo.shared.isLogin { if IAPProductsManager.default().isAvailableAllFunction() { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { // 有标准版License、有转档License 34 - 48 if KMMemberInfo.shared.canTrail && KMMemberInfo.shared.vip_levels == "1" { // 免费 return .dmg_type34 } if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels == "3" { // 高级买断 if platformsArray.count == 2 { return .dmg_type43 } else if platformsArray.count == 1 { if(platformsArray.contains("mac")) { return .dmg_type44 } if(platformsArray.contains("ios")) { return .dmg_type45 } } } if KMMemberInfo.shared.vip_status == 1 { // 订阅中 if platformsArray.count == 4 { // 全平台 if KMMemberInfo.shared.vip_cycle == 4 { // 周期:年 // 全平台标准版年订阅 if KMMemberInfo.shared.vip_levels == "2" { // 标准 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type35 } else { return .dmg_type36 } } // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { // 高级 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type39 } else { return .dmg_type40 } } } else if KMMemberInfo.shared.vip_cycle == 3 { // 周期:6个月 // 全平台高级版6个月订阅 if KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type41 } else { return .dmg_type42 } } } } else if platformsArray.count == 1 && platformsArray.contains("android") { if KMMemberInfo.shared.vip_cycle == 1 && KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type46 } else { return .dmg_type47 } } } } else if KMMemberInfo.shared.vip_status == 2 { // 订阅过期 return .dmg_type48 } else if KMMemberInfo.shared.vip_status == 3 { // 试用中 // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { return .dmg_type38 } } else if KMMemberInfo.shared.canTrail == false && KMMemberInfo.shared.vip_levels == "1" && KMMemberInfo.shared.vip_status != 2 { // 试用过期 return .dmg_type37 } } else { // 有标准版License、无转档License 19 - 33 if KMMemberInfo.shared.canTrail && KMMemberInfo.shared.vip_levels == "1" { // 免费 return .dmg_type19 } if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels == "3" { // 高级买断 if platformsArray.count == 2 { return .dmg_type28 } else if platformsArray.count == 1 { if(platformsArray.contains("mac")) { return .dmg_type29 } if(platformsArray.contains("ios")) { return .dmg_type30 } } } if KMMemberInfo.shared.vip_status == 1 { // 订阅中 if platformsArray.count == 4 { // 全平台 if KMMemberInfo.shared.vip_cycle == 4 { // 周期:年 // 全平台标准版年订阅 if KMMemberInfo.shared.vip_levels == "2" { // 标准 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type20 } else { return .dmg_type21 } } // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { // 高级 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type24 } else { return .dmg_type25 } } } else if KMMemberInfo.shared.vip_cycle == 3 { // 周期:6个月 // 全平台高级版6个月订阅 if KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type26 } else { return .dmg_type27 } } } } else if platformsArray.count == 1 && platformsArray.contains("android") { if KMMemberInfo.shared.vip_cycle == 1 && KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type31 } else { return .dmg_type32 } } } } else if KMMemberInfo.shared.vip_status == 2 { // 订阅过期 return .dmg_type33 } else if KMMemberInfo.shared.vip_status == 3 { // 试用中 // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { return .dmg_type23 } } else if KMMemberInfo.shared.canTrail == false && KMMemberInfo.shared.vip_levels == "1" && KMMemberInfo.shared.vip_status != 2 { // 试用过期 return .dmg_type22 } } } else { // 未绑定License 4 - 18 if KMMemberInfo.shared.canTrail && KMMemberInfo.shared.vip_levels == "1" { // 免费 return .dmg_type4 } if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels == "3" { // 高级买断 if platformsArray.count == 2 { return .dmg_type5 } else if platformsArray.count == 1 { if(platformsArray.contains("mac")) { return .dmg_type6 } if(platformsArray.contains("ios")) { return .dmg_type7 } } } if KMMemberInfo.shared.vip_status == 1 { // 订阅中 if platformsArray.count == 4 { // 全平台 if KMMemberInfo.shared.vip_cycle == 4 { // 周期:年 // 全平台标准版年订阅 if KMMemberInfo.shared.vip_levels == "2" { // 标准 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type8 } else { return .dmg_type9 } } // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { // 高级 if KMMemberInfo.shared.vip_payType == 1 { // 是否续订 return .dmg_type12 } else { return .dmg_type13 } } } else if KMMemberInfo.shared.vip_cycle == 3 { // 周期:6个月 // 全平台高级版6个月订阅 if KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type14 } else { return .dmg_type15 } } } } else if platformsArray.count == 1 && platformsArray.contains("android") { if KMMemberInfo.shared.vip_cycle == 1 && KMMemberInfo.shared.vip_levels == "3" { if KMMemberInfo.shared.vip_payType == 1 { return .dmg_type16 } else { return .dmg_type17 } } } } else if KMMemberInfo.shared.vip_status == 2 { // 订阅过期 return .dmg_type18 } else if KMMemberInfo.shared.vip_status == 3 { // 试用中 // 全平台高级版年订阅 if KMMemberInfo.shared.vip_levels == "3" { return .dmg_type10 } } else if KMMemberInfo.shared.canTrail == false && KMMemberInfo.shared.vip_levels == "1" && KMMemberInfo.shared.vip_status != 2 { // 试用过期 return .dmg_type11 } } } else { if IAPProductsManager.default().isAvailableAllFunction() { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { return .dmg_type3 } return .dmg_type2 } else { return .dmg_type1 } } #else // AppStore 免费版本 if IAPProductsManager.default().allAccessPack6months_lite.isSubscribed == true || IAPProductsManager.default().allAccessPackNew6months_lite.isSubscribed == true || IAPProductsManager.default().allAccessPack12months_lite.isSubscribed == true { // 有旧订阅 return .lite_type12 } else if (IAPProductsManager.default().allAccessProduct.isSubscribed == true) { // 有旧买断 if KMMemberInfo.shared.canTrail && KMMemberInfo.shared.vip_levels == "1" { return .lite_type9 } if KMMemberInfo.shared.vip_status == 3 { return .lite_type10 } else if KMMemberInfo.shared.vip_status == 4 { return .lite_type11 } else if(KMMemberInfo.shared.vip_status == 1 && KMMemberInfo.shared.vip_paymentModel == "1") { // 订阅中 return .lite_type12 } if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_payType == 0 && KMMemberInfo.shared.vip_status == 1 { return .lite_type13 } return .lite_type9 } else { if !KMMemberInfo.shared.isLogin { return .lite_type1 } // 无旧订阅、买断 if KMMemberInfo.shared.canTrail && KMMemberInfo.shared.vip_levels == "1" { return .lite_type1 } if(KMMemberInfo.shared.canTrail == false && KMMemberInfo.shared.vip_levels == "1" && KMMemberInfo.shared.vip_status != 2) { //试用过期 return .lite_type3 } if KMMemberInfo.shared.vip_status == 3 { return .lite_type2 } else if KMMemberInfo.shared.vip_status == 4 { return .lite_type3 } else if KMMemberInfo.shared.vip_status == 2 { return .lite_type7 } else if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_payType == 0 && KMMemberInfo.shared.vip_status == 1 { return .lite_type8 } if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_status == 1 { //永久买断 return .lite_type5 } else { if KMMemberInfo.shared.vip_cycle == 4 && platformsArray.count == 4 { return .lite_type6 } else { return .lite_type4 } } } #endif #else // AppStore 付费版 if IAPProductsManager.default().pdfToOfficeProduct.isSubscribed == true { if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_status == 1 { //订阅中 return .pro_type2 } else { return .pro_type1 } } else { if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_status == 1 { //买断 return .pro_type4 } else { if KMMemberInfo.shared.vip_paymentModel == "1" && KMMemberInfo.shared.vip_status == 1 {//订阅中 return .pro_type5 } else { return .pro_type3 } } } #endif return .lite_type1 } } // 是否允许全部功能 var isMemberAllFunction: Bool { get { #if VERSION_FREE #if VERSION_DMG // DMG if userScenarioType == .dmg_type1 || userScenarioType == .dmg_type4 || userScenarioType == .dmg_type7 || userScenarioType == .dmg_type11 || userScenarioType == .dmg_type18 || userScenarioType == .dmg_type16 || userScenarioType == .dmg_type17 { // 无高级功能权益 return false } else { // 有高级功能权益 return true } #else // AppStore 免费版本 if KMMemberInfo.shared.isLogin { if IAPProductsManager.default().isAvailableAllFunction() == true { return true } else { let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } if userScenarioType == .lite_type5 || userScenarioType == .lite_type4 || userScenarioType == .lite_type8 { if(platformsArray.contains("mac")) { return true } } else if userScenarioType == .lite_type2 || userScenarioType == .lite_type6 { return true } return false } } else { if IAPProductsManager.default().allAccessPackPermanent_lite.isSubscribed == true || IAPProductsManager.default().isAvailableAllFunction() == true { return true } return false } #endif #else // AppStore 付费版 return true #endif return false } } // 是否允许使用转档 var isPermitConvert: Bool { get { #if VERSION_FREE #if VERSION_DMG // DMG if userScenarioType == .dmg_type1 || userScenarioType == .dmg_type2 || userScenarioType == .dmg_type4 || userScenarioType == .dmg_type7 || userScenarioType == .dmg_type8 || userScenarioType == .dmg_type9 || userScenarioType == .dmg_type11 || userScenarioType == .dmg_type16 || userScenarioType == .dmg_type17 || userScenarioType == .dmg_type18 || userScenarioType == .dmg_type19 || userScenarioType == .dmg_type20 || userScenarioType == .dmg_type21 || userScenarioType == .dmg_type22 || userScenarioType == .dmg_type30 || userScenarioType == .dmg_type31 || userScenarioType == .dmg_type32 || userScenarioType == .dmg_type33 { // 无转档权益 return false } else { // 有转档权益 return true } #else // AppStore 免费版本 if KMMemberInfo.shared.isLogin { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { return true } else { let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } if(userScenarioType == .lite_type2) { return true } else if userScenarioType == .lite_type5 || userScenarioType == .lite_type4 || userScenarioType == .lite_type8 { if(platformsArray.contains("mac") && KMMemberInfo.shared.vip_levels == "3") { //购买了 return true } } else if userScenarioType == .lite_type6 || userScenarioType == .lite_type12 { if KMMemberInfo.shared.vip_levels == "3" { //高级版本支持转档功能,但不支持升级 return true } } return false } } else { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { return true } return false } #endif #else // AppStore 付费版 if KMMemberInfo.shared.isLogin { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { return true } else { let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } if userScenarioType == .pro_type5 { if(platformsArray.contains("mac") && KMMemberInfo.shared.vip_levels == "3") { //购买了mac且高级 return true } } else if userScenarioType == .pro_type1 || userScenarioType == .pro_type2 || userScenarioType == .pro_type4 { if(platformsArray.contains("mac") && KMMemberInfo.shared.vip_levels == "3") { //购买了mac return true } } return false } } else { if IAPProductsManager.default().isAvailableAdvancedPDFToOffice() { return true } return false } #endif } } // 是否允许使用AI var isPermitAI: Bool { if KMMemberInfo.shared.isLogin { if KMMemberInfo.shared.aiPoint > 0 { return true } if AIInfoManager.default().aiInfo.totalToken - AIInfoManager.default().aiInfo.usedTimes > 0 { return true } } else { if AIInfoManager.default().aiInfo.totalToken - AIInfoManager.default().aiInfo.usedTimes > 0 { return true } } return false } //允许继续购买AI var allowPurchaseAI: Bool { if KMMemberInfo.shared.isLogin { if KMMemberInfo.shared.ai_status == 1 { return false } } else { if AIInfoManager.default().aiInfoValid { return false } } return true } // 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 avatarUrl = model.avatarUrl } func advancedFunctionUsage() -> Void { let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } if KMMemberInfo.shared.isLogin { productCompareShow() } else { KMLoginWindowsController.shared.openWindow() { [weak self] success in guard let self = self else { return } if success { if self.userScenarioType == .dmg_type16 || self.userScenarioType == .dmg_type17 { } else { self.productCompareShow() } } } } } func productCompareShow() -> Void { let platforms = KMMemberInfo.shared.vip_platforms let platformsArray = platforms .components(separatedBy: ",") .map { $0.trimmingCharacters(in: .whitespaces) } #if VERSION_FREE #if VERSION_DMG // DMG if userScenarioType == .dmg_type16 || userScenarioType == .dmg_type17 { let alert = NSAlert() alert.alertStyle = .critical alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "") alert.addButton(withTitle: NSLocalizedString("Got it", comment: "")) alert.runModal() } else { if userScenarioType == .dmg_type11 || userScenarioType == .dmg_type18 || userScenarioType == .dmg_type22 || userScenarioType == .dmg_type33 || userScenarioType == .dmg_type37 || userScenarioType == .dmg_type48 { KMProductCompareWC.shared.orientation = true KMProductCompareWC.shared.orientationType = .dmg_Base KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .dmg_type5 || userScenarioType == .dmg_type28 || userScenarioType == .dmg_type43 { KMProductCompareWC.shared.orientation = true KMProductCompareWC.shared.orientationType = .dmg_Upgrades1 KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .dmg_type6 || userScenarioType == .dmg_type7 || userScenarioType == .dmg_type29 || userScenarioType == .dmg_type30 || userScenarioType == .dmg_type44 || userScenarioType == .dmg_type45 { KMProductCompareWC.shared.orientation = true KMProductCompareWC.shared.orientationType = .dmg_Upgrades2 KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .dmg_type4 || userScenarioType == .dmg_type19 || userScenarioType == .dmg_type34 { KMProductCompareWC.shared.orientation = true KMProductCompareWC.shared.orientationType = .dmg_Base KMProductCompareWC.shared.showWindow(nil) } else { } } #else // AppStore 免费版本 KMProductCompareWC.shared.orientation = true // 无旧订阅、买断 if userScenarioType == .lite_type1 { // 试用比较表 KMProductCompareWC.shared.orientationType = .trial KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .lite_type3 || userScenarioType == .lite_type7 { // 购买比较表 KMProductCompareWC.shared.orientationType = .lite_Base KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .lite_type5 { // 升级比较表 // 有账号(单、多平台)高级永久权益,升级全平台权益 if platformsArray.count == 1 { // 单平台升级 KMProductCompareWC.shared.orientationType = .lite_MacWindows } else { // 多平台升级 KMProductCompareWC.shared.orientationType = .lite_MacWindows } KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .lite_type2 || userScenarioType == .lite_type4 || userScenarioType == .lite_type6 || userScenarioType == .lite_type8 { // 订阅中,Android单平台高级版月订阅或者全平台标准版年订阅,不能升级,提示联系客服 if !platformsArray.contains("mac") || KMMemberInfo.shared.vip_levels != "3" { let alert = NSAlert() alert.alertStyle = .critical alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "") alert.addButton(withTitle: NSLocalizedString("Got it", comment: "")) alert.runModal() } } // 有旧买断 if userScenarioType == .lite_type9 || userScenarioType == .lite_type11 { // 升级比较表 if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1" { // 有账号(单、多平台)高级永久权益,升级全平台权益 if (platformsArray.count == 1) { // 单平台升级 KMProductCompareWC.shared.orientationType = .lite_MacWindows } else { // 多平台升级 KMProductCompareWC.shared.orientationType = .lite_MacWindows } } else { // 有本地单平台高级永久权益,升级全平台权益 KMProductCompareWC.shared.orientationType = .lite_MacWindows } KMProductCompareWC.shared.showWindow(nil) } #endif #else // AppStore 付费版 KMProductCompareWC.shared.orientation = true // 无旧订阅 if userScenarioType == .pro_type3 { // 升级比较表 // 有本地单平台标准永久权益,升级全平台、升级单平台高级权益 KMProductCompareWC.shared.orientationType = .pro_Base KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .pro_type4 { // 升级比较表 // 有账号(单、多平台)高级永久权益,升级全平台权益 if (platformsArray.count == 1) { // 单平台升级 KMProductCompareWC.shared.orientationType = .pro_Advanced } else { // 多平台升级 KMProductCompareWC.shared.orientationType = .pro_Advanced } KMProductCompareWC.shared.showWindow(nil) } else if userScenarioType == .pro_type5 { // 订阅中,Android单平台高级版月订阅或者全平台标准版年订阅,不能升级,提示联系客服 if !platformsArray.contains("mac") || KMMemberInfo.shared.vip_levels != "3" { let alert = NSAlert() alert.alertStyle = .critical alert.informativeText = NSLocalizedString("Sorry, you do not have the rights to this paid feature and cannot use it. If you have any questions, please contact customer service at support@pdfreaderpro.com", comment: "") alert.addButton(withTitle: NSLocalizedString("Got it", comment: "")) alert.runModal() } } // 有旧订阅 if userScenarioType == .pro_type1 { // 升级比较表 if KMMemberInfo.shared.vip_paymentModel == "2" && KMMemberInfo.shared.vip_levels != "1" { // 有账号(单、多平台)高级永久权益,升级全平台权益 if (platformsArray.count == 1) { // 单平台升级 KMProductCompareWC.shared.orientationType = .pro_Advanced } else { // 多平台升级 KMProductCompareWC.shared.orientationType = .pro_Advanced } } else { // 有本地单平台高级永久权益,升级全平台权益 KMProductCompareWC.shared.orientationType = .pro_Advanced } KMProductCompareWC.shared.showWindow(nil) } #endif } func aiSubscription() -> Bool { let oldAIPoints = AIInfoManager.default().aiInfo.totalToken - AIInfoManager.default().aiInfo.usedTimes // 旧版AI点数 if oldAIPoints > 0 { return true } else { if KMMemberInfo.shared.isLogin { if KMMemberInfo.shared.aiPoint > 0 { return true } else { if KMMemberInfo.shared.ai_status == 1 { if KMMemberInfo.shared.aiPoint == 0 { let alert = NSAlert() alert.alertStyle = .critical alert.informativeText = NSLocalizedString("No Value Present", comment: "") alert.addButton(withTitle: NSLocalizedString("OK", comment: "")) alert.runModal() return false } } else { #if VERSION_DMG let embeddedWC = KMPurchaseEmbeddedWindowController.currentCode(KMAISubscriptionMonthCodeKey_DMG) embeddedWC.showWindow(nil) embeddedWC.window?.center() #else AIPurchaseWindowController.currentWC().showWindow(nil) #endif return false } } } else { KMLoginWindowsController.shared.openWindow() { success in if success { if KMMemberInfo.shared.aiPoint > 0 { } else { #if VERSION_DMG let embeddedWC = KMPurchaseEmbeddedWindowController.currentCode(KMAISubscriptionMonthCodeKey_DMG) embeddedWC.showWindow(nil) embeddedWC.window?.center() #else AIPurchaseWindowController.currentWC().showWindow(nil) #endif } } } return false } } return false } func clearMemberInfoCache() -> Void { currentLogoutStatus = .null _refresh_token = "" _access_token = "" _token_type = "" _expires_in = "" _scope = "" userID = "" userEmail = "" fullName = "" _activeVips = [] _activeAis = [] vip_id = "" vip_userId = "" vip_status = 0 vip_endDate = "" vip_payType = 0 vip_productName = "" vip_levels = "1" vip_platforms = "" vip_point = 0 vip_maxDeviceNum = 0 vip_paymentModel = "" vip_isAi = "" vip_cycle = 0 ai_id = "" ai_userId = "" ai_status = 0 ai_endDate = "" ai_payType = 0 ai_productName = "" ai_levels = "1" ai_platforms = "" ai_point = 0 ai_maxDeviceNum = 0 ai_paymentModel = "" ai_isAi = "" ai_cycle = 0 aiPoint = 0 validFlag = "" isHaveAIDiscount = "" canTrail = false } }