KMLightMemberUserInfo.swift 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. //
  2. // KMLightMemberUserInfo.swift
  3. // PDF Master
  4. //
  5. // Created by lizhe on 2023/2/22.
  6. //
  7. import Cocoa
  8. class KMLightMemberUserInfo: NSObject, Codable {
  9. var id: String = ""
  10. var appId: String = ""
  11. var freeDate: String = ""
  12. var isInFreeUseTime: Bool = false //是否免费使用
  13. var email: String = ""
  14. var platformType: Int = 0
  15. var accountType: Int = 0
  16. var createdAt: String = ""
  17. var validFlag: String = "" // 0是已注销 5是注销中
  18. var subscriptionInfoList: [KMLightMemberUserSubscriptionInfo] = []
  19. // var companyId: String = ""
  20. // var fullName: String = ""
  21. // var subscriberType: String = ""
  22. // var subscribed: String = ""
  23. // var digestPassword: String = ""
  24. // var phone: String = ""
  25. // var industry: String = ""
  26. // var lastPopularizeAt: String = ""
  27. // var lastPresentedCouponAt: String = ""
  28. // var mailable: String = ""
  29. // var resetToken: String = ""
  30. // var role: String = ""
  31. // var job: String = ""
  32. // var area: String = ""
  33. // var accountSource: String = ""
  34. // var updatedAt: String = ""
  35. // var remark: String = ""
  36. // var validFlag: String = ""
  37. // var subscriptionInfoList: Any
  38. }
  39. class KMLightMemberUserSubscriptionInfo: NSObject, Codable {
  40. var endDate: String?
  41. var id: String?
  42. var payType: Int?
  43. var platform: Int?
  44. var status: Int?
  45. var userId: String?
  46. }
  47. extension KMLightMemberUserInfo {
  48. //MARK: data
  49. /**
  50. @abstract 解析数据
  51. @param data 传入参数 NSDictionary
  52. @return KMAdvertisementModel
  53. */
  54. static public func parseData(data: NSDictionary, needSave: Bool = true, completion:(_ result: KMLightMemberUserInfo) -> Void) -> Void {
  55. if (data.count != 0 && needSave) {
  56. KMLightMemberCache.cache.saveData(data: data)
  57. }
  58. var result: KMLightMemberUserInfo = KMLightMemberUserInfo()
  59. let jsonString: String = DictionaryToJson.dictionary(toJson: data)!
  60. let jsonData: Data = jsonString.data(using: .utf8)!
  61. let decoder = JSONDecoder()
  62. // decoder.dataDecodingStrategy = .base64
  63. // decoder.keyDecodingStrategy = .convertFromSnakeCase //带下划线命名
  64. decoder.nonConformingFloatDecodingStrategy = .convertFromString(positiveInfinity: "+∞", negativeInfinity: "-∞", nan: "NaN")
  65. #if DEBUG
  66. //MARK: 测试使用
  67. var lightMemberUserInfo = try! decoder.decode(KMLightMemberUserInfo.self, from: jsonData)
  68. if (lightMemberUserInfo != nil) {
  69. result = KMLightMemberUserInfo.allowLoadItemData(lightMemberUserInfo)
  70. }
  71. #else
  72. // MARK: 此处try 使用 ? ,如果数据出问题 advertisementModel将无参数, 测试时使用!
  73. var lightMemberUserInfo = try? decoder.decode(KMLightMemberUserInfo.self, from: jsonData)
  74. if (lightMemberUserInfo != nil) {
  75. result = KMLightMemberUserInfo.allowLoadItemData(lightMemberUserInfo!)
  76. }
  77. #endif
  78. completion(result)
  79. }
  80. func allowLoadData(data: NSDictionary) -> Bool {
  81. var result = false
  82. // let status = (data["status"] as? Int) ?? 0
  83. // let app_name: String = data["app_name"] as? String ?? ""
  84. //
  85. // if (status == 1 &&
  86. // app_name == configuration.appName.string()) {
  87. // result = true
  88. // }
  89. return result
  90. }
  91. func allowLoadContentData(data: KMLightMemberUserInfo) -> Bool {
  92. var result = false
  93. // let time: NSInteger = NSInteger(KMAdvertisementTimeStampConversion.getCurrentTimeInterval())!
  94. // let startTime: NSInteger = NSInteger(data.startTime!)!
  95. // let endTime: NSInteger = NSInteger(data.endTime!)!
  96. // let platform = configuration.platform
  97. // let subscribeType = configuration.subscribeType
  98. // let version = data.version ?? "1.0"
  99. // let localVersion = self.getLocalVersion()
  100. // let hidden = data.hidden ?? false
  101. //
  102. // if (time >= startTime &&
  103. // time <= endTime &&
  104. // platform == data.platform &&
  105. // self.compareVersion(nowVersion:localVersion, newVersion: version) &&
  106. // (subscribeType == data.subscribeType || data.subscribeType == .all) &&
  107. // !hidden) {
  108. // result = true
  109. // }
  110. return result
  111. }
  112. //过滤item是否显示
  113. static func allowLoadItemData(_ data: KMLightMemberUserInfo) -> KMLightMemberUserInfo {
  114. var result = data
  115. var array: [KMLightMemberUserSubscriptionInfo] = []
  116. let subscriptionList = data.subscriptionInfoList
  117. for item in subscriptionList {
  118. if item.platform == 1 {
  119. array.append(item)
  120. }
  121. }
  122. result.subscriptionInfoList = array
  123. return result
  124. }
  125. //获取本地版本号
  126. func getLocalVersion() -> String {
  127. var localVersion = ""
  128. if let v: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String {
  129. localVersion = v
  130. }
  131. return localVersion
  132. }
  133. func compareVersion(nowVersion: String, newVersion: String) -> Bool {
  134. let nowArray = nowVersion.split(separator: ".")
  135. let newArray = newVersion.split(separator: ".")
  136. let big = nowArray.count > newArray.count ? newArray.count : nowArray.count
  137. if big != 0 {
  138. for index in 0...big - 1 {
  139. let first = nowArray[index]
  140. let second = newArray[index]
  141. if Int(first)! < Int(second)! {
  142. return true
  143. }
  144. if index == big - 1 {
  145. if Int(first)! <= Int(second)! {
  146. return true
  147. }
  148. }
  149. }
  150. } else {
  151. return true
  152. }
  153. return false
  154. }
  155. }