//
|
// 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: Double = 0
|
var surplus: Int?
|
var total: Int = 0
|
var type: Int = 0
|
var typeIds: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userCount: Int?
|
}
|
|
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 residueNumber:Int?
|
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
|
var orderId: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 orderId:Int = 0
|
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 time = ""
|
// 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
|
var canStudy = 0
|
}
|
|
class ListenNewModel:HandyJSON{
|
var data:ListenNewDataModel?
|
var subjectList = [[Listen1SubModel]]()
|
|
required init(){}
|
}
|
|
class ListenNewDataModel:HandyJSON{
|
var id:String = ""
|
var integral = 0
|
|
required init(){}
|
}
|
|
class Listen1Model:HandyJSON{
|
var data:Listen1DataModel?
|
var subjectList = [Listen1SubModel]()
|
var storyList = [Listen1SubModel]()
|
|
//超级记忆专用
|
var photoList = [SimpleListenDataModel]()
|
var voiceList = [SimpleListenDataModel]()
|
|
required init(){}
|
}
|
|
struct TeamScheduleModel:HandyJSON{
|
var answerNumber = 0
|
var correctNumber = 0
|
var teamIds = [Int]() //题组ids
|
var topicIds = [Int]() //已回答正确的题目Id
|
var schedule = 0
|
}
|
|
|
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
|
var answerCount = 0
|
var answerIntegral = 0
|
var answerTime = 0
|
var time = 0
|
var count = 0
|
var lookIntegral = 0
|
|
//custom
|
var playNow:Bool = false //立刻播放
|
|
}
|
|
class Listen1SubModel:HandyJSON,Hashable{
|
|
static func == (lhs: Listen1SubModel, rhs: Listen1SubModel) -> Bool {
|
return lhs.id == rhs.id
|
}
|
|
// var hashValue: Int{
|
// return id
|
// }
|
|
func hash(into hasher: inout Hasher) {
|
|
}
|
|
|
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 = ""
|
|
|
//学习类型四专用
|
var isQuestion:Int = 0
|
|
//游戏类型2专用
|
var isOpen:Bool = false
|
|
// 自主学习1,3专用 (是否已回答)
|
var isAnster:Bool = false
|
}
|
|
@available(*,deprecated,message: "废弃")
|
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
|
}
|
|
struct StudyScheduleModel:HandyJSON,Hashable{
|
init() {}
|
|
var answer: Int = 0
|
var day: Int = 0
|
var computeSchedule:Int = 0
|
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: String = ""
|
var todayStudy: Int = 0
|
var totalStudy: Int = 0
|
var userId: Int = 0
|
var week: Int = 0
|
var weekStudy: Int = 0
|
var gameDifficulty:Int = 0
|
|
var hashValue: Int{
|
return answer+day+computeSchedule+induction+listen+look+monthStudy+pair+todayStudy+totalStudy+week+weekStudy+gameDifficulty
|
}
|
}
|
|
class SimpleListenDataModel:HandyJSON,Hashable{
|
|
required init() {}
|
|
static func == (lhs: SimpleListenDataModel, rhs: SimpleListenDataModel) -> Bool {
|
return lhs.id == rhs.id
|
}
|
|
func hash(into hasher: inout Hasher) {
|
|
}
|
|
var id = 0
|
var photo = ""
|
var voice = ""
|
|
//游戏类型2专用
|
var isOpen:Bool = false
|
var type = 0 // 1:图片 2:音频
|
}
|
|
struct PromptVoiceModel:HandyJSON{
|
var correct: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var disabled: Bool = false
|
var error: String = ""
|
var id: Int = 0
|
var img: String = ""
|
var integral: String = ""
|
var integralShare: String = ""
|
var phone: String = ""
|
var time: String = ""
|
var title: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
}
|
|
struct ShareInfoModel:HandyJSON{
|
var title = ""
|
var phone = ""
|
var img = ""
|
}
|
|
struct VIPInfoModel:HandyJSON{
|
var id = 0
|
var info = ""
|
var isVip = 0
|
var time = 0
|
var amount = 0
|
}
|
|
struct PaymentInfoModel:HandyJSON{
|
var id = 0
|
var orderId = 0
|
}
|