CNLiveMineBaseModel.swift 13.8 KB
//
//  CNLiveMineBaseModel.swift
//  metaCode
//
//  Created by open on 2023/6/20.
//

import Foundation
import HandyJSON
import WCDBSwift

class UpdateInfoModel: BaseModel {
    
    required init() {}
    
    var id:String = ""
    var appId:String = ""
    var appType:String = ""
    var version:String = ""
    var versionCode:String = ""
    var isForce:Bool = false//是不是强制更新
    var apkUrl:String = ""
    var upgradePoint:String = ""
    var status:String = ""
    var createTime:String = ""
    
    /**
     /api/identityApi/list
     接口的数据 id createTime为公共参数
     */
    var name:String = ""
    var icon:String = ""
    var enable:String = ""
}

class NewsModel: BaseModel {
    required init() {}
    
    var prePage: Int = 0
    var pageSize: Int = 0
    var startRow: Int = 0
    var navigateLastPage: Int = 0
    var firstPage: Int = 0
    var nextPage: Int = 0
    var size: Int = 0
    var endRow: Int = 0
    var isLastPage: Bool = false
    var hasNextPage: Bool = false
    var navigateFirstPage: Int = 0
    var lastPage: Int = 0
    var total: Int = 0
    var list = [NewsListModel]()
    var navigatepageNums = [Int]()
    var isFirstPage: Bool = false
    var hasPreviousPage: Bool = false
    var navigatePages: Int = 0
    var pageNum: Int = 0
    var pages: Int = 0
}


class NewsListModel: BaseModel {
    var content: String = ""
    var status: Int = 0
    var id: Int = 0
    var poster: String = ""
    var title: String = ""
    var sid: String = ""
    var createTime: Int = 0
    var createTimeString: String = ""
    var timeString: String = ""
    var subTitle: String = ""
    var read: Bool = false
    
    var textHeight: CGFloat {
        get {
            let paraph = NSMutableParagraphStyle()
            paraph.lineSpacing = 10
            let attributes = [NSAttributedString.Key.font:Font_16_Fit,
                              NSAttributedString.Key.paragraphStyle: paraph]
            let h = content.boundingRect(with: CGSize(width: KSreenWidth - 110, height: CGFloat(MAXFLOAT)), options: .usesLineFragmentOrigin, attributes: attributes, context: nil).size.height
            return h
        }
    }
    
    override func mapping(mapper: HelpingMapper) {
        mapper <<<
            self.createTime <-- TransformOf(fromJSON: { [weak self] (raw) -> Int in
                if (raw ?? 0)! > 0 {
                    let date = NSDate(timeIntervalSince1970: TimeInterval((raw!)/1000))
                    let dateFormatter = DateFormatter()
                    dateFormatter.locale = Locale.init(identifier: "zh_CN")
                    dateFormatter.dateFormat = "MM-dd"
                    self?.createTimeString = dateFormatter.string(from: date as Date)
                    let dateFormatter_time = DateFormatter()
                    dateFormatter_time.locale = Locale.init(identifier: "zh_CN")
                    dateFormatter_time.dateFormat = "yyyy年MM月dd日 HH:mm"
                    self?.timeString = dateFormatter_time.string(from: date as Date)
                }
                return raw!
            }, toJSON: { (tuple) -> Int? in
                return tuple
            })
//        mapper <<<
//            self.content <-- TransformOf(fromJSON: { result -> String in
//                return result! + "金正恩和老兵有说有笑,欣赏着精彩绝伦的烟花表演,一起憧憬朝鲜走向繁荣富强。金正恩最后面向全体朝鲜老兵进行90度的鞠躬,再次对他们表达深深的尊重和感激。他没有忘记为国家立下汗马功劳的朝鲜老兵,更没有忘记老一辈。"
//            }, toJSON: { result -> String? in
//                return result
//            })
    }
}

// !!!: /api/identityApi/allList 接口数据
class StandListBaseModel: BaseModel {
    var prePage: Int = 0
    var pageSize: Int = 0
    var startRow: Int = 0
    var navigateLastPage: Int = 0
    var firstPage: Int = 0
    var nextPage: Int = 0
    var size: Int = 0
    var endRow: Int = 0
    var isLastPage: Bool = false
    var hasNextPage: Bool = false
    var navigateFirstPage: Int = 0
    var lastPage: Int = 0
    var total: Int = 0
    var list = [StandListModel]()
    var navigatepageNums = [Int]()
    var isFirstPage: Bool = false
    var hasPreviousPage: Bool = false
    var navigatePages: Int = 0
    var pageNum: Int = 0
    var pages: Int = 0
}

final class StandListModel: BaseModel, TableCodable {
    
    var id: Int = 0//ID号
    var name: String?//名称
    var icon: String?//小圆图标
    var createTime: Int = 0//注册时间
    var enable: Bool = false//没用
    var backgroundImg: String = ""//首页背景图
    var backgroundColor: String = ""//添加身份按钮背景色
    var backgroundColour: String = ""
    var description: String = ""//首页身份说明描述
    var descBackgroundImg: String = ""//首页文字背景图
    var cardImg: String = ""//卡片背景图
    var cardBackgroundImg: String = ""//首页卡片背景图
    var upPath: String = ""//顶部h5 或原生页面pageId
    var upType: Int = 0//下滑类型1:h5 2:原生页面 3店铺详情 4 店铺控制台
    var downType: Int = 0//上滑类型1:h5 2:原生页面 3店铺详情 4 店铺控制台
    var downPath: String = ""//底部h5url 或原生页面pageId
    var auth: Bool = false//身份是否验证
    
    var createTimeString: String = ""
    var timeString: String = ""
    
    override func mapping(mapper: HelpingMapper) {
        mapper <<<
            self.createTime <-- TransformOf(fromJSON: { [weak self] (raw) -> Int in
                if (raw ?? 0)! > 0 {
                    let date = NSDate(timeIntervalSince1970: TimeInterval((raw!)/1000))
                    let dateFormatter = DateFormatter()
                    dateFormatter.locale = Locale.init(identifier: "zh_CN")
                    dateFormatter.dateFormat = "MM-dd"
                    self?.createTimeString = dateFormatter.string(from: date as Date)
                    let dateFormatter_time = DateFormatter()
                    dateFormatter_time.locale = Locale.init(identifier: "zh_CN")
                    dateFormatter_time.dateFormat = "yyyy年MM月dd日 HH:mm"
                    self?.timeString = dateFormatter_time.string(from: date as Date)
                }
                return raw!
            }, toJSON: { (tuple) -> Int? in
                return tuple
            })
        mapper <<<
            self.backgroundColour <-- TransformOf(fromJSON: { [weak self] (raw) -> String in
                self?.backgroundColor = raw!
                return raw!
            }, toJSON: { (tuple) -> String? in
                return tuple
            })
    }
    
    enum CodingKeys: String, CodingTableKey {
        typealias Root = StandListModel
        static let objectRelationalMapping = TableBinding(CodingKeys.self)
        {
            //设置表的主键key为id,用来区分数据唯一性, 如果id为int类型,可以按实现按顺序递增
            BindColumnConstraint(id, isPrimary: true, isAutoIncrement: true)
        }
        case id
        case name
        case enable
        case createTime
        case createTimeString
        case timeString
        case auth
        case backgroundImg
        case backgroundColor
        case backgroundColour
        case description
        case cardImg
        case downPath
    }
}

// !!!: /api/identityApi/getIdentity 接口标记
class MineStandInfoBaseModel: BaseModel {
    var authInfos = [MineStandInfoModel]()
    var icon: String?
    var name: String?
    var identityId: Int = 0
    var code: String?
    var cardImg: String?
    var authTime: Int = 0
    var userStatus: Int = 0
    var upPath: String?
    var downPath: String?
}

class MineStandInfoModel: BaseModel {
    var authInfoId: Int = 0
    var sort: Int = 0
    var name: String?//卡片标签
    var sub_title: String?//报名项说明
    var inputType: Int = 0//1 文本输入 2数字输入 3下拉选择 4认证时间 5认证编码 6正图 7小竖图 8大横图 9单选 10多选 11选项 12时间选择器 13主标题
    var nonEmpty: Bool = false
    var length: Int = 10
    var children = [MineStandInfoModel]()
    var userInfo: String? = ""//卡片标签的对应值
    var input: Bool = false
    var show: Bool = false
    var value: String? = ""//自己定义的值
    
}

// !!!: api/identityApi/myList  数据返回
class MineAuthListBaseModel: BaseModel {
    required init() {}
    
    var prePage: Int = 0
    var pageSize: Int = 0
    var startRow: Int = 0
    var navigateLastPage: Int = 0
    var firstPage: Int = 0
    var nextPage: Int = 0
    var size: Int = 0
    var endRow: Int = 0
    var isLastPage: Bool = false
    var hasNextPage: Bool = false
    var navigateFirstPage: Int = 0
    var lastPage: Int = 0
    var total: Int = 0
    var list = [MineAuthListModel]()
    var navigatepageNums = [Int]()
    var isFirstPage: Bool = false
    var hasPreviousPage: Bool = false
    var navigatePages: Int = 0
    var pageNum: Int = 0
    var pages: Int = 0
}

final class MineAuthListModel: BaseModel , TableCodable {

    required init() {}
    
    var cardImg: String? = ""
    var name: String? = ""
    var icon: String? = ""
    var authTime: Int = 0
    var code: String? = ""
    var identityId: Int = 0
    var userStatus: Int = 0
    
    enum CodingKeys: String, CodingTableKey {
        
        typealias Root = MineAuthListModel
        static let objectRelationalMapping = TableBinding(CodingKeys.self)
        {
            //设置表的主键key为id,用来区分数据唯一性, 如果id为int类型,可以按实现按顺序递增
            BindColumnConstraint(identityId, isPrimary: true, isAutoIncrement: true)
        }
        case identityId         //不修改数据库字段名,和属性名保持一直
        case name       //不修改数据库字段名,和属性名保持一直
        case icon
        case cardImg
        case authTime
        case code
        case userStatus
    }
}

// !!!: /Api/Index3/myOrderCount 数据返回
class MinePointCheckInModel: BaseModel {
    
    var pay_order_count: String? = ""//待支付 数量
    var send_order_count: String? = ""//待发货 数量
    var confirm_order_count: Int = 0 //待收货 数量
    var cart_count: String? = "" //购物车数量 数量
    var money: String? = ""//补贴余额
    var coupon_count: String? = ""//优惠券数量
    var integral: String? = ""//积分数量
}
// !!!: /Daren/integral/getTasks.action任务列表界面数据
class MineTaskCheckListModel: BaseModel {
    var icon: String? = ""
    var score: String? = ""
    /**1 为第一次签到显示签到弹框,其他不显示*/
    var status: String? = ""
    var taskId: String? = ""
    var taskType: String? = ""
    var times: Int = 0
    var title: String? = ""
    var totalCount: String? = ""
    var url: String? = ""
}
// !!!: /Daren/transaction/getTransactionRecord.action 余额交易记录

class MineTradingRecordBaseModel: BaseModel {
    var defray: String? = ""
    var lasePage: Bool = false
    var income: String? = ""
    var list = [MineTradingRecordModel]()
}

class MineTradingRecordModel: BaseModel {
    
    var disburseRecord: String? = ""//支出
    var incomeRecord: String? = ""  //收入
    var fromId: String? = ""
    var payType: String? = ""
    var recordId: String? = ""
    var sourceId: String? = ""
    var sourceType: String? = ""
    var sum: String? = ""
    var time: String? = ""
    
    /// wjj_balance_transfer  转账标识
    /// wjj_balance_transfer_refund 退款标识
    /// wjj_balance_transfer_collection 确认收款标识
    /// wjj_balance_transfer_overdue_refund 转账过期
    var finalType: String? = ""
    
    var iconBean = MineTradingRecordUserModel()
    
    var fromType: String? = "" //1:收入 2:支出 0:全部
    var toType: String? = "" // 0全部(默认) 1收入 2支出
    var defray: String? = "" //总支出
    var income: String? = "" //总收入
}

class MineTradingRecordUserModel: BaseModel {
    var image: String? = ""
    var nickName: String? = ""
    var userId: String? = ""
}

// !!!: /Daren/integral/myIntegralRecord.action 积分明细列表
class MineIntegralRecordModel: BaseModel {
    var obtainIntegral: Int = 0
    var hasNext: Bool = false
    var payIntegral: Int = 0
    var integralList = [MineIntegralRecordDescModel]()
}

class MineIntegralRecordDescModel: BaseModel {
    var exchangeTime: String? = ""
    var state: String? = ""
    var integral: String? = ""
    var integralDesc: String? = ""
}

// !!!: /api/v1/applyShopInfo 积分明细列表
class MineApplyShopInfoModel: BaseModel {
    var state: String? = ""//状态 0 未申请 1 开店 2 申请中 3 已拒绝 4 闭店 0没有下列参数 1如果没有下列参数则为店员身份
    var identity_stop_time: String? = ""//结束时间
    var registered_address: String? = "" //注册地址
    var commercial_name: String? = ""//统一社会信用代码
    var certificates_name: String? = "" //持证人姓名
    var management_stop_time: String? = ""//营业执照 结束时间戳
    var category: String? = ""//经营类目id
    var addtime: String? = ""//申请时间
    var service_phone: String? = "" //服务电话
    var store_logo: String? = ""//申请时的店铺logo地址
    var identity_start_time: String? = ""//开始时间
    var certificates_code: String? = ""//法人身份证号
    var id: String? = ""
    var desc: String? = ""//拒绝理由  state 等于 3 时显示
    var identification_card1_img: String? = ""//身份证正面图片地址
    var aptitude_images: String? = ""//特殊资质图片地址
    var business_licence_img: String? = "" //营业执照照片地址
    var management_start_time: String? = ""//营业执照 开始时间戳
    var credit_code: String? = ""//统一社会信用代码
    var store_name: String? = ""//申请时的店铺名称
    var identification_card2_img: String? = ""//身份证反面图片地址
}