//
|
// Model.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/9/4.
|
//
|
|
import HandyJSON
|
import UserDefaultsStore
|
|
struct UserDefaultSettingModel:HandyJSON,Identifiable,Codable {
|
static let idKey = \UserDefaultSettingModel.id
|
var id = 0
|
var volume:Double = 0.5
|
var masterVolume:Double = 0.5
|
var sceneMusicModel:BGMModel?
|
var playModel:PlayMode = .line
|
|
var userFirstOpenTreeTask = true //第一次打开树苗
|
var userFirstLaunch = true //第一次启动
|
}
|
|
|
struct LoginUserInfoModel:HandyJSON,Identifiable,Codable{
|
|
static let idKey = \LoginUserInfoModel.userid
|
|
var accessToken: String = ""
|
var appUserId: Int = 0
|
var bindStatus: Int = 0 //是否需要验证手机号 1=是 2=否
|
var cellPhone: String = ""
|
var expireIn: Int = 0 // token过期时间
|
var expireTime: Int = 0
|
var ipaddr: String = ""
|
var loginTime: Int = 0
|
var token: String = ""
|
var userid: Int = 0
|
var username: String = ""
|
|
var loginByAppleToken:String?
|
var appleId:String?
|
var wechatOpenId:String?
|
}
|
|
|
struct HtmlModel:HandyJSON{
|
var content: String = ""
|
var contentType:AgreementType = .none
|
var id: Int = 0
|
}
|
|
|
struct VerifiyForgotPwdModel:HandyJSON{
|
var secret:String = ""
|
var successFlag:Bool = false
|
}
|
|
struct BGMModel:HandyJSON,Identifiable,Codable{
|
static let idKey = \BGMModel.id
|
|
var audioFile: String = ""
|
var audioFileName: String = ""
|
var id: Int = 0
|
var imageUrl: String = ""
|
|
var backName:String?
|
var backUrl:String?
|
}
|
|
struct ItemTypeModel:HandyJSON{
|
var categoryName = ""
|
var description = ""
|
var id = 0
|
var firstIconUrl = "" //icon图片 用于顶部四个分类展示
|
var secondIconUrl = "" //icon图片 用于下面的三个分类展示
|
var showType = 0 //展示方式 1=横版 2=竖版
|
}
|
|
struct ToDayMeditationModel:HandyJSON{
|
var clientMeditationVO: MeditationModel?
|
var endPlayTime: String = ""
|
var id: Int = 0
|
var imageUrl: String = ""
|
var meditationId: Int = 0
|
var startPlayTime: String = ""
|
var time:Int = 0
|
|
var isShow:Int = 0 // 0 每日疗愈,1:展示微电影
|
var meditationVideo:ToDayMeditationVideoModel?
|
|
var playAtMe:Bool = false
|
}
|
|
struct ToDayMeditationVideoModel:HandyJSON{
|
var imageUrl:String = ""
|
var title:String = ""
|
var videoUrl:String = ""
|
var videoSecond:Int = 0
|
}
|
|
struct MeditationListModel:HandyJSON{
|
var clientMeditationCategoryVO:MeditationTitleModel?
|
var clientMeditationVOList = [MeditationModel]()
|
}
|
|
struct MeditationTitleModel:HandyJSON{
|
var categoryName: String = ""
|
var description: String = ""
|
var firstIconUrl: String = ""
|
var id: Int = 0
|
var secondIconUrl: String = ""
|
var showType: DisplayType = .horizontal
|
}
|
|
class MeditationModel:HandyJSON{
|
var backgroundUrl: String = ""
|
var cateId: Int = 0
|
var chargeType:ChargeType = .free
|
var isBuy:ConditionType = .no //是否购买
|
var coverDescription: String = ""
|
var coverUrl: String = ""
|
var detailDescription: String = ""
|
var favoriteCount: Int = 0
|
var generalPrice: Double = 0
|
var iconUrl: String = ""
|
var id: Int = 0
|
var questionCount:Int = 0
|
var iosPrice: Double = 0
|
var listingStatus: Int = 0
|
var meditationTitle: String = ""
|
var realLearnedNum: Int = 0
|
var sanskrit: Int = 0
|
var sortNum: Int = 0
|
var tutorAudioUrl: String = ""
|
var virtualLearnedNum: Int = 0
|
var favorite:ConditionType = .no // 是否收藏:1:是 2:否
|
var tutor:String = ""
|
var meditationMusicList = [String]()
|
var meditationSecondList = [Int]() //时长
|
var paymentStatus:ConditionType = .no //支付状态 1待支付 2已支付
|
var isVip:ConditionType = .no
|
var time:Int = 0
|
var imageUrl:String = ""
|
|
required init(){}
|
}
|
|
class CommentModel:HandyJSON{
|
var appUserId: Int = 0
|
var avatar: String = ""
|
var content: String = ""
|
var id: Int = 0
|
var like: ConditionType = .no //是否点赞 1=是 2=否
|
var likeCount: Int = 0
|
var nickname: String = ""
|
var publishTime: String = ""
|
var replyContent: String = ""
|
var replyTime: String = ""
|
|
required init(){}
|
}
|
|
struct PavilionDetailModel:HandyJSON{
|
var address: String = ""
|
var addressDetail: String = ""
|
var briefIntroduction: String = ""
|
var businessHours: String = ""
|
var contactNumber: String = ""
|
var coverUrl: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var delFlag: Int = 0
|
var detailBannerUrl: String = ""
|
var distance: Double = 0
|
var hallName: String = ""
|
var id: Int = 0
|
var latitude: Double = 0
|
var listingStatus: Int = 0
|
var longitude: Double = 0
|
var sortNum: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
}
|
|
struct CategoryModel:HandyJSON{
|
var id = 0
|
var imageUrl = ""
|
var name = ""
|
var courseId:String?
|
}
|
|
class CourseModel:HandyJSON{
|
var address:String = ""
|
var addressDetail:String = ""
|
var briefIntroduction:String = ""
|
var cateId: Int = 0
|
var chargeType: ChargeType = .free
|
var count: Int = 0
|
var courseTitle:String = ""
|
var courseType: DeliverStudyType = .online
|
var coverUrl:String = ""
|
var description:String = ""
|
var detailUrl:String = ""
|
var generalPrice: Double = 0
|
var headers = [String]()
|
var id: Int = 0
|
var businessId:Int = 0 // 课程/音频id 收藏用
|
var iosPrice: Double = 0
|
var isBuy: ConditionType = .no
|
var isVip: ConditionType = .no
|
var latitude: Int = 0
|
var listingStatus: Int = 0
|
var longitude: Int = 0
|
var recommend: Int = 0
|
var sortNum: Int = 0
|
var tutor:String = ""
|
var wxQrCode:String = ""
|
var isCollect:ConditionType = .no // 是否收藏:1:是 2:否
|
var paymentStatus:ConditionType = .no //支付状态 1待支付 2已支付
|
var coverDescription:String = ""
|
|
var courseId:Int?
|
var list2 = [CourseModel]()
|
var list = [CourseItemModel]()
|
|
required init(){}
|
}
|
|
class CourseItemModel:HandyJSON{
|
var chapterTitle:String = ""
|
var courseId: Int = 0
|
var createBy:String = ""
|
var createTime:String = ""
|
var delFlag: Int = 0
|
var duration: Int = 0
|
var id: Int = 0
|
var isOver: ConditionType = .yes
|
var minuteLook: Int = 0
|
var realLearnedNum: Int = 0
|
var secondLook: Int = 0
|
var sortNum: Int = 0
|
var updateBy:String = ""
|
var updateTime:String = ""
|
var videoUrl:String = ""
|
var virtualLearnedNum: Int = 0
|
|
required init(){}
|
}
|
|
|
struct UserInfoModel:HandyJSON,Identifiable,Codable{
|
|
static let idKey = \UserInfoModel.id
|
|
var appleId: String = ""
|
var avatar: String = ""
|
var balance: Int = 0
|
var birthday: String = ""
|
var cellPhone: String = ""
|
var company: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var delFlag: Int = 0
|
var education: String = ""
|
var email: String = ""
|
var freezingOperator: String = ""
|
var freezingReason: String = ""
|
var gender: GenderType?
|
var hometown: String = ""
|
var id: Int = 0
|
var income: Int = 0
|
var industry: String = ""
|
var inviteUserId: Int = 0
|
var isFirst: Int = 0
|
var levelSettingId: Int = 0
|
var location: String = ""
|
var logoutTime: String = ""
|
var nickname: String = ""
|
var realname:String = ""
|
var occupation: String = ""
|
var registerTime: String = ""
|
var sanskritFlag: Int = 0
|
var signature: String = ""
|
var signTime: String = ""
|
var tagId: String = ""
|
var totalEnergyValue: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var userId: Int = 0
|
var userStatus: Int = 0
|
var vipExpireTime: String = ""
|
var isVip:ConditionType = .no
|
var wxOpenId: String = ""
|
|
var continuity: Int = 0
|
var cumulative: Int = 0
|
var level: Int = 0
|
var levelIcon: String = ""
|
var levelName: String = ""
|
var today: Int = 0
|
|
//判断缓存里的VIP信息
|
func checkVip()->Bool{
|
if isVip == .yes{
|
let interval = Date.jq_StringToTimeInterval(vipExpireTime, "yyyy-MM-dd HH:mm:ss")
|
if interval > Date().timeIntervalSince1970{return true}
|
}
|
return false
|
}
|
}
|
|
struct SimpleUserInfoModel:HandyJSON{
|
var avatar:String = ""
|
var id:Int = 0
|
var nickname:String = ""
|
}
|
|
struct TutorInfoModel:HandyJSON{
|
var id = 0
|
var tutorIntroduction = ""
|
var coverUrl = ""
|
var videoUrl = ""
|
var list = [CourseModel]()
|
}
|
|
|
struct TreeInfoModel:HandyJSON,Identifiable,Codable{
|
|
static let idKey = \TreeInfoModel.id
|
|
var appUserId: Int = 0
|
var createBy: String = ""
|
var createTime: String = ""
|
var energyValue: Int = 0
|
var delFlag: Int = 0
|
var growthValue: Int = 0
|
var id: Int = 0
|
var isSign: ConditionType = .no
|
var nextLevel: Int = 0
|
var sowAgain: ConditionType = .no
|
var taskOne: ConditionType = .no
|
var taskTwo: ConditionType = .no
|
var treeLevelType: TreeLevel = .level_1
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var status:ConditionType = .no //是否枯萎
|
}
|
|
//struct EnergyModel:HandyJSON{
|
// var energyTotal:Int = 0
|
// var list = [EnergyListModel]()
|
//}
|
|
struct EnergyListModel:HandyJSON{
|
var appUserId: Int = 0
|
var changeType: EnergyChangeType = .decreate
|
var createTime:String = ""
|
var energyValue: Int = 0
|
var id: Int = 0
|
var reason: String = ""
|
}
|
|
struct WateringModel:HandyJSON{
|
var growthValue = 0
|
var nextLevel = 0
|
var isNext = false
|
var status = 0 //是否枯萎 1是2否(暂时不用)
|
var treeLevelType:TreeLevel = .level_1
|
}
|
|
struct EnergyExchangeGiftModel:HandyJSON{
|
var coverUrl: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var delFlag: Int = 0
|
var energyValue: Int = 0
|
var id: Int = 0
|
var name: String = ""
|
var receiveStatus:ConditionType = .no
|
var redemptionTime: String = ""
|
var sortNum: Int = 0
|
var status: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
var worth: Double = 0
|
}
|
|
struct EnergyExchangeRecordModel:HandyJSON{
|
var coverUrl: String = ""
|
var energyValue: Int = 0
|
var id: Int = 0
|
var name: String = ""
|
var status:ConditionType = .no
|
var worth: Double = 0
|
var code:String = ""
|
}
|
|
struct TagModel:HandyJSON,Hashable{
|
var id = 0
|
var tagName = ""
|
|
var indexPath:IndexPath?
|
}
|
|
struct HeadingLevelModel:HandyJSON{
|
var content: String = ""
|
var differenceLevel: Int = 0
|
var growthValue: Int = 0
|
var level: Int = 0
|
var levelIcon: String = ""
|
var levelName: String = ""
|
var nextLevel: Int = 0
|
}
|
|
struct MyStudyModel:HandyJSON{
|
var courseList = [CourseModel]()
|
var freeCourseList = [CourseModel]()
|
}
|
|
struct WalletModel:HandyJSON{
|
var balance:Double = 0
|
var income:Double = 0
|
var recharge:Double = 0
|
}
|
|
struct BankInfoModel:HandyJSON{
|
var appUserId: Int = 0
|
var bankName: String = ""
|
var cardholder: String = ""
|
var cardNo: String = ""
|
var cellPhone: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var delFlag: Int = 0
|
var id: Int = 0
|
var identityCard: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
}
|
|
|
struct BalanceInfoModel:HandyJSON{
|
var changeType:EnergyChangeType = .increase
|
var id = 0
|
var reason = ""
|
var createTime = ""
|
var amount:Double = 0
|
}
|
|
struct BalanceInfoDetailModel:HandyJSON{
|
var amount: Double = 0
|
var avatar: String = ""
|
var changeType:EnergyChangeType = .increase
|
var id: Int = 0
|
var paymentTime: String = ""
|
var payOrderNo: String = ""
|
var remark: String = ""
|
var type: String = ""
|
var userName: String = ""
|
}
|
|
struct CommonQuestionModel:HandyJSON{
|
var content: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var customerServiceQrCode: String = ""
|
var delFlag: Int = 0
|
var id: Int = 0
|
var questionDescription: String = ""
|
var questionName: String = ""
|
var sortNum: Int = 0
|
var type: Int = 0
|
var updateBy: String = ""
|
var updateTime: String = ""
|
}
|
|
|
struct CommonRuleModel:HandyJSON{
|
var id: Int = 0
|
var poster: String = ""
|
var proportion: Int = 0
|
var qrCode: String = ""
|
var rules: String = ""
|
}
|
|
class NoticeModel:HandyJSON{
|
var appUserId: Int = 0
|
var content: String = ""
|
var createBy: String = ""
|
var createTime: String = ""
|
var delFlag: Int = 0
|
var id: Int = 0
|
var meditationQuestionId: Int = 0
|
var noticeType: Int = 0
|
var readStatus: Int = 0
|
var time: String = ""
|
var title: String = ""
|
var updateBy: String = ""
|
var updateTime: String = ""
|
|
required init() {}
|
}
|
|
struct NoticeDetailModel:HandyJSON{
|
var avatar: String = ""
|
var content: String = ""
|
var coverDescription: String = ""
|
var iconUrl: String = ""
|
var meditationQuestionId: Int = 0
|
var meditationTitle: String = ""
|
var nickname: String = ""
|
var noticeType: Int = 0
|
var publishTime: String = ""
|
var realname: String = ""
|
var reply: String = ""
|
var replyContent: String = ""
|
var time: String = ""
|
var title: String = ""
|
|
}
|
|
|
struct ResponseUserAnswerModel:HandyJSON{
|
var tagIds = "" //问题二 多个tagId使用英文逗号拼接字符串
|
var userAnswerOneDTOList = [ResponseUserAnswerDTOModel]()
|
}
|
|
struct ResponseUserAnswerDTOModel:HandyJSON{
|
var answer = "" //问题一 答案 1:是2:否3:偶尔,其他补充说明
|
var type = 0 //问题一 问题类型 1:您是否内心纠结敏感多疑?2:您是否辗转反侧彻夜难眠?3:您是否情绪失控暴躁易怒?4:您是否沉迷情感倍受伤害?5:您是否人生迷茫踌躇彷徨?6:其它补充说明
|
}
|
|
struct VIPContentModel:HandyJSON{
|
var annualVipIos:Double = 0
|
var monthlyVipIos:Double = 0
|
var quarterlyVipIos:Double = 0
|
}
|
|
struct PaymentResultModel:HandyJSON{
|
var appId: String?
|
var id: Int = 0
|
var orderId: String?
|
var orderNo: String?
|
var orgId: String?
|
var path: String?
|
var payAmt: String?
|
var payInfo: String?
|
var qrcodeUrl: String?
|
var zeroFlag: Int = 0
|
}
|
|
struct PendingItemModel:HandyJSON{
|
var amount:Double = 0
|
var balance:Double = 0
|
var coverUrl:String = ""
|
var id:Int = 0
|
var orderFrom:Int = 0
|
var orderId:Int = 0
|
var title:String = ""
|
var tutor:String = ""
|
}
|