BaseModel.swift 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. //
  2. // BaseModel.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2017/8/21.
  6. // Copyright © 2017年 zone. All rights reserved.
  7. //
  8. import Foundation
  9. import HandyJSON
  10. import Moya
  11. // MARK:- 通用过程处理回调闭包定义
  12. public typealias ProgressBlock = (_ progressResponse:ProgressResponse) -> Void
  13. // MARK:- 通用结果回调闭包定义
  14. public typealias ResultBlock<T:BaseModel> = (_ result:OOResult<T>) -> Void
  15. // MARK:- 结果类型定义
  16. public enum ResultType:String,HandyJSONEnum {
  17. case SUCCESS = "success"
  18. case FAIL = "error"
  19. }
  20. // MARK:- 返回的基本数据格式协议
  21. public protocol BaseModel:HandyJSON,CustomStringConvertible {
  22. //数据头一致,不同的data的数据类型
  23. associatedtype T
  24. var count:Int { get set }
  25. var date:String? {get set}
  26. var message:String? {get set}
  27. var position:Int {get set}
  28. var size:String? {get set}
  29. var spent:Int {get set}
  30. var type:ResultType? {get set}
  31. var userMessage:String? {get set}
  32. var data:T? {get set}
  33. func isSuccess() -> Bool
  34. }
  35. public protocol DataModel:HandyJSON,CustomStringConvertible {
  36. }
  37. // MARK:- 数据格式模型基本实现
  38. open class BaseModelClass<U:CustomStringConvertible>:BaseModel,CustomStringConvertible {
  39. public typealias T = U
  40. open var position: Int = 0
  41. open var type: ResultType?
  42. open var count: Int = 0
  43. open var date: String?
  44. open var message: String?
  45. open var size: String?
  46. open var spent: Int = -1
  47. open var userMessage: String?
  48. open var data:T?
  49. required public init() {
  50. }
  51. public func isSuccess() -> Bool {
  52. guard let t = type else {
  53. return false
  54. }
  55. if t == .FAIL {
  56. return false
  57. }
  58. return true
  59. }
  60. public var description: String {
  61. return "type=\(String(describing: type)),position=\(position),count=\(count),date=\(String(describing: date)),message=\(String(describing: message)),size=\(String.init(describing: size) ),spent=\(spent),userMessage=\(userMessage!),data=\(String(describing: data))"
  62. }
  63. }
  64. public class OOCommonValueModel:DataModel {
  65. var value:String?
  66. required public init() {
  67. }
  68. public var description: String {
  69. return "OOCommonValueModel"
  70. }
  71. }
  72. public class OOCommonValueBoolModel:DataModel {
  73. var value:Bool?
  74. required public init() {
  75. }
  76. public var description: String {
  77. return "OOCommonValueBoolModel"
  78. }
  79. }
  80. public class OOCommonValueIntModel:DataModel {
  81. var value:Int?
  82. required public init() {
  83. }
  84. public var description: String {
  85. return "OOCommonValueIntModel"
  86. }
  87. }
  88. public class OOCommonIdModel:DataModel {
  89. public var description: String {
  90. return "OOCommonIdModel"
  91. }
  92. var id:String?
  93. required public init() {
  94. }
  95. }
  96. public class OOCommonModel:DataModel {
  97. required public init() {
  98. }
  99. public var description: String {
  100. return "CommonModel"
  101. }
  102. }