//
|
// CommonModel.swift
|
// DolphinEnglishLearnStudent
|
//
|
// Created by 无故事王国 on 2024/5/30.
|
//
|
|
import Foundation
|
import HandyJSON
|
import UserDefaultsStore
|
|
struct LoginModel:HandyJSON{
|
var token:LoginTokenModel?
|
}
|
|
struct LoginTokenModel:HandyJSON,Identifiable,Codable{
|
static let idKey = \LoginTokenModel.id
|
var id: Int = 0
|
|
var access_token = ""
|
var expires_in = 0
|
var request_time = 0 //请求时间
|
|
private static let userInfo = UserDefaultsStore<LoginTokenModel>(uniqueIdentifier: "LoginTokenModel")!
|
|
static func saveToken(_ model:LoginTokenModel){
|
do{
|
try LoginTokenModel.userInfo.save(model)
|
}catch{
|
|
}
|
}
|
|
static func isOverdue()->Bool{
|
if let token = LoginTokenModel.getToken(){
|
//过期时间(秒)
|
let overdueTimeval = token.expires_in * 60 + token.request_time
|
|
if overdueTimeval < Int(Date().timeIntervalSince1970){
|
return true
|
}
|
return false
|
}
|
return true
|
}
|
|
static func getToken()->LoginTokenModel?{
|
return LoginTokenModel.userInfo.allObjects().first
|
}
|
|
static func clearToken(){
|
LoginTokenModel.userInfo.deleteAll()
|
}
|
}
|
|
|
struct RecommendModel:HandyJSON{
|
var basicCount: Int = 0
|
var coverImg: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var detail: String = ""
|
var detailImg: String = ""
|
var disabled: Bool = false
|
var id: Int = 0
|
var insertTime: String = ""
|
var integral: Int = 0
|
var inventory: Int = 0
|
var isDelete: Int = 0
|
var name: String = ""
|
var price: Int = 0
|
var surplus: Int = 0
|
var total: Int = 0
|
var type: Int = 0
|
var typeIds: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userCount: Int = 0
|
}
|
|
struct MarketModel:HandyJSON{
|
var basicCount: Int = 0
|
var coverImg: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var detail: String = ""
|
var detailImg: String = ""
|
var disabled: Bool = false
|
var id: Int = 0
|
var integral: Int = 0
|
var inventory: Int = 0
|
var isDelete: Int = 0
|
var name: String = ""
|
var price: Int = 0
|
var surplus: Int = 0
|
var total: Int = 0
|
var type: Int = 0
|
var typeIds: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userCount: Int = 0
|
}
|
|
struct MarketTypeModel:HandyJSON,Hashable{
|
var id = 0
|
var name = ""
|
}
|
|
struct MarketDetailModel:HandyJSON{
|
var exchangeNumber: Int = 0
|
var good: MarketModel?
|
var goodTypes = [MarketTypeModel]()
|
var orderNumber: String = ""
|
var recipient: MarketRecipientModel?
|
}
|
|
struct MarketRecipientModel:HandyJSON,Hashable{
|
var id = 0
|
var name = ""
|
}
|
|
struct AddressModel:HandyJSON{
|
var address: String = ""
|
var city: String = ""
|
var cityCode: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var id: Int = 0
|
var isDefault: Int = 0
|
var province: String = ""
|
var provinceCode: String = ""
|
var recipient: String = ""
|
var recipientPhone: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
}
|
|
struct AddressTreeModel:HandyJSON{
|
var id = 0
|
var name = ""
|
var code = ""
|
var parentId = 0
|
var children:[AddressTreeModel]?
|
}
|
|
struct IntegralModel:HandyJSON{
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var gameId: Int = 0
|
var id: Int = 0
|
var integral: String = ""
|
var method: String = ""
|
var storyId: Int = 0
|
var type: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
}
|
|
struct ExchangeRecordModel:HandyJSON{
|
var completeTime: String = ""
|
var consigneeAddress: String = ""
|
var consigneeName: String = ""
|
var consigneePhone: String = ""
|
var count: Int = 0
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var express: String = ""
|
var expressNumber: String = ""
|
var expressTime: String = ""
|
var goodsId: Int = 0
|
var goodsName: String = ""
|
var id: Int = 0
|
var insertTime: String = ""
|
var integral: Int = 0
|
var orderNumber: String = ""
|
var state: Int = 0 //订单状态1待发货2已发货3已完成
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
var goodsType = [String]()
|
var coverImg:String = ""
|
}
|
|
struct StudyGamesModel:HandyJSON{
|
var gameRecordList = [StudyGamesRecordModel]()
|
var record:StudyDataRecordModel?
|
}
|
|
|
struct StudyGamesRecordModel:HandyJSON{
|
var accuracy: Int = 0
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var gameDifficulty: Int = 0
|
var gameId: Int = 0
|
var gameName: String = ""
|
var id: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
var useTime: Int = 0
|
}
|
|
struct StudyDataRecordModel:HandyJSON{
|
var answer: Int = 0
|
var createBy: String = ""
|
var createTime: String = ""
|
var day: Int = 0
|
var disabled: Bool = false
|
var id: Int = 0
|
var induction: Int = 0
|
var listen: Int = 0
|
var look: Int = 0
|
var monthStudy: Int = 0
|
var pair: Int = 0
|
var surplus: Int = 0
|
var todayStudy: Int = 0
|
var totalStudy: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
var week: Int = 0
|
var weekStudy: Int = 0
|
}
|
|
struct ListenWeekModel:HandyJSON{
|
var id = 0
|
var day = 0
|
var quarter = 0
|
var title = ""
|
var totalIntegral = 0
|
var type = 0
|
var week = 0
|
}
|
|
class Listen1Model:HandyJSON{
|
var data:Listen1DataModel?
|
var subjectList = [Listen1SubModel]()
|
|
required init(){}
|
}
|
struct Listen1DataModel:HandyJSON{
|
var createBy: String = ""
|
var createTime: String = ""
|
var day: Int = 0
|
var disabled: Bool = false
|
var id: Int = 0
|
var integral: Int = 0
|
var isVip: Int = 0
|
var studyId: Int = 0
|
var subject: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var week: Int = 0
|
}
|
|
class Listen1SubModel:HandyJSON{
|
|
required init() {}
|
|
var correct: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var english: String = ""
|
var error: String = ""
|
var id: Int = 0
|
var img: String = ""
|
var name: String = ""
|
var state: Int = 0
|
var type: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
}
|
|
struct Listen4Model:HandyJSON{
|
var data = [Listen4DataModel]()
|
}
|
|
struct Listen4DataModel:HandyJSON{
|
var answerSubject: Int = 0
|
var createBy: String = ""
|
var createTime: String = ""
|
var day: Int = 0
|
var disabled: Bool = false
|
var id: Int = 0
|
var integral: Int = 0
|
var isAnswer: Int = 0
|
var isVip: Int = 0
|
var studyId: Int = 0
|
var subject: Int = 0
|
var subjectList = [Listen1SubModel]()
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var week: Int = 0
|
}
|