PQBaseModel.swift 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. //
  2. // PQBaseModel.swift
  3. // PQSpeed
  4. //
  5. // Created by SanW on 2020/5/25.
  6. // Copyright © 2020 BytesFlow. All rights reserved.
  7. //
  8. import RealmSwift
  9. import UIKit
  10. open class PQBaseModel: Object {
  11. @objc dynamic public var uniqueId: String? // 唯一ID
  12. @objc dynamic public var videoId: Int = 0 // 视频ID
  13. @objc dynamic public var eventId: String? // 事件ID
  14. @objc dynamic public var title: String? // 标题
  15. @objc dynamic public var attributedTitle: NSMutableAttributedString? // 富文本标题
  16. @objc dynamic public var summary: String? // 描述
  17. @objc dynamic public var imageUrl: String = "" // 图片地址
  18. @objc dynamic public var selectedImage: String = "" // 图片地址
  19. @objc dynamic public var isSelected: Bool = false
  20. @objc dynamic public var recommendLogVO: String? // 推荐日志对象
  21. @objc dynamic public var abInfoData: String? // AB
  22. @objc dynamic public var pageCategoryId: Int = 0 // 页面分类ID
  23. @objc dynamic public var version: String = versionName // 版本号
  24. @objc dynamic public var mid = getMachineCode() // 设备ID
  25. @objc dynamic public var date: Int = 0 // 当前时间戳 CGFloat(Date.init().timeIntervalSince1970) * 1000
  26. @objc dynamic public var itemWidth: Float = 0 // cell宽
  27. @objc dynamic public var primaryKeys: String? // 区分存储唯一值
  28. override class public func primaryKey() -> String? {
  29. return "uniqueId"
  30. }
  31. public override required init() {
  32. super.init()
  33. uniqueId = getUniqueId(desc: "uniqueId")
  34. }
  35. override class open func ignoredProperties() -> [String] {
  36. return ["attributedTitle"]
  37. }
  38. @objc func toString() -> String {
  39. var json: [String: Any] = [
  40. "version": version,
  41. "mid": mid,
  42. "pageCategoryId": pageCategoryId,
  43. "selectedImage": selectedImage,
  44. "isSelected": isSelected,
  45. "imageUrl": imageUrl,
  46. ]
  47. if uniqueId != nil {
  48. json["uniqueId"] = uniqueId
  49. json["videoId"] = videoId
  50. }
  51. if eventId != nil {
  52. json["eventId"] = eventId
  53. }
  54. if title != nil {
  55. json["title"] = title
  56. }
  57. if summary != nil {
  58. json["summary"] = summary
  59. }
  60. if recommendLogVO != nil {
  61. json["recommendLogVO"] = recommendLogVO
  62. }
  63. return dictionaryToJsonString(json) ?? ""
  64. }
  65. public init(jsonDict: [String: Any]) {
  66. super.init()
  67. if jsonDict.keys.contains("id") {
  68. uniqueId = "\(jsonDict["id"] ?? "")"
  69. videoId = Int(uniqueId ?? "0") ?? 0
  70. }
  71. if jsonDict.keys.contains("uniqueId") {
  72. uniqueId = "\(jsonDict["uniqueId"] ?? "")"
  73. videoId = Int(uniqueId ?? "0") ?? 0
  74. }
  75. if jsonDict.keys.contains("eventId") {
  76. eventId = "\(jsonDict["eventId"] ?? "")"
  77. }
  78. if jsonDict.keys.contains("title") {
  79. title = "\(jsonDict["title"] ?? "")"
  80. }
  81. if jsonDict.keys.contains("summary") {
  82. summary = "\(jsonDict["summary"] ?? "")"
  83. }
  84. if jsonDict.keys.contains("imageUrl") {
  85. imageUrl = "\(jsonDict["imageUrl"] ?? "")"
  86. }
  87. if jsonDict.keys.contains("selectedImage") {
  88. selectedImage = "\(jsonDict["selectedImage"] ?? "")"
  89. }
  90. if jsonDict.keys.contains("isSelected") {
  91. isSelected = jsonDict["isSelected"] as! Bool
  92. }
  93. if jsonDict.keys.contains("recommendLogVO") {
  94. recommendLogVO = "\(jsonDict["recommendLogVO"] ?? "")"
  95. }
  96. if jsonDict.keys.contains("pageCategoryId") {
  97. pageCategoryId = Int("\(jsonDict["pageCategoryId"] ?? "0")") ?? 0
  98. }
  99. if jsonDict.keys.contains("version") {
  100. version = "\(jsonDict["version"] ?? "")"
  101. }
  102. if jsonDict.keys.contains("mid") {
  103. mid = "\(jsonDict["mid"] ?? "")"
  104. }
  105. }
  106. }
  107. // MARK: - 当前应用本地存储的model
  108. /// 当前应用本地存储的model
  109. public class PQLocalStoreModel: PQBaseModel {
  110. @objc dynamic public var currentDate: String?
  111. @objc required init() {
  112. super.init()
  113. currentDate = systemCurrentDate()
  114. }
  115. }
  116. // MARK: - oss上传model
  117. /// oss上传model
  118. public class PQOssUploadModel: NSObject {
  119. public var accessKeyId: String?
  120. public var secretKeyId: String?
  121. public var securityToken: String?
  122. public var endpoint: String?
  123. public var endpoints: [String]?
  124. public var bucketName: String?
  125. public var fileName: String?
  126. public var uploadID: String?
  127. public var expiration: String? // 过期时间
  128. public init(jsonDict: [String: Any]) {
  129. super.init()
  130. if jsonDict.keys.contains("AccessKeyId") {
  131. accessKeyId = "\(jsonDict["AccessKeyId"] ?? "")"
  132. }
  133. if jsonDict.keys.contains("AccessKeySecret") {
  134. secretKeyId = "\(jsonDict["AccessKeySecret"] ?? "")"
  135. }
  136. if jsonDict.keys.contains("SecurityToken") {
  137. securityToken = "\(jsonDict["SecurityToken"] ?? "")"
  138. }
  139. if jsonDict.keys.contains("Hosts") {
  140. endpoints = jsonDict["Hosts"] as? [String]
  141. }
  142. if jsonDict.keys.contains("Host") {
  143. endpoint = "\(jsonDict["Host"] ?? "")"
  144. if endpoint != nil {
  145. if endpoints == nil {
  146. endpoints = [endpoint!]
  147. } else {
  148. endpoints?.append(endpoint!)
  149. }
  150. }
  151. }
  152. if jsonDict.keys.contains("Bucket") {
  153. bucketName = "\(jsonDict["Bucket"] ?? "")"
  154. }
  155. if jsonDict.keys.contains("FileName") {
  156. fileName = "\(jsonDict["FileName"] ?? "")"
  157. }
  158. if jsonDict.keys.contains("Upload") {
  159. uploadID = "\(jsonDict["Upload"] ?? "")"
  160. }
  161. if jsonDict.keys.contains("Expiration") {
  162. expiration = "\(jsonDict["Expiration"] ?? "")"
  163. }
  164. }
  165. }
  166. // MARK: - 空白页面model
  167. /// 空白页面model
  168. public class PQEmptyModel: NSObject {
  169. public var title: String? // 标题
  170. public var summary: String? // 描述
  171. public var emptyImage: String? // 空白提示图
  172. public var isRefreshHidden: Bool = true // 是否隐藏刷新按钮
  173. public var refreshImage: String? // 刷新按钮图片
  174. public var refreshTitle: NSMutableAttributedString? // 刷新按钮文字
  175. public var refreshBgColor: UIColor? // 刷新按钮背景颜色
  176. }