jsdw_ios/QuickLocation/Manager/Account/UserConfigModel.swift

192 lines
4.4 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// UserConfigModel.swift
// QuickLocation
//
// Created by 八条 on 2026/5/26.
//
import ObjectMapper
import RxDataSources
struct UserConfigModel: Mappable {
var token: String?
var phone: String?
var name: String?
var avater: String?
/// 头像,对应本地图标
var head_pic: String = "1"
/// 展示用头像:优先上传 URL(head_pic 或 avater),否则本地序号
var displayHeadPic: String {
HeadPic.resolved(head_pic, avater)
}
/// 用户头像
var userIcon: UIImage {
HeadPic.image(for: displayHeadPic)
}
/// 性别
var sex: Int = -1
/// 是否游客
var temp: Bool = true
/// 用户 ID
var uid: String?
/// 状态:0、无状态 1、SOS 2、气泡等
var status: Int = 0
/// 心情:0、无状态 1、开心 2、愤怒
var mood: Int = 0
/// Config
var config: SystemConfigModel?
init?(map: Map) {
}
mutating func mapping(map: Map) {
token <- map["token"]
temp <- map["temp"]
phone <- map["phone"]
name <- map["name"]
uid <- (map["user_id"], kFlexString)
avater <- map["avater"]
sex <- map["sex"]
head_pic <- (map["head_pic"], kFlexString)
config <- map["config"]
status <- map["status"]
mood <- map["mood"]
}
}
struct SystemConfigModel: Mappable {
/// 弹窗配置
// var popupConfig: PopupWindowConfigModel?
/// 弹窗时间配置
// var timeConfig: PopupWindowTimeModel?
/// 微信分享配置
var shareConfig: WxShareConfigModel?
/// 飞鸽传书发送次数
var pigeonConfig: PigeonTimeSettingModel?
/// 版本更新
var versionUpgradeModel: VersionUpgradeModel?
/// 聊天界面的警告说明
var chatWarning: String = ""
/// 探索里的banner配置
var bannerList: [BannerConfigModel] = []
/// 圈子里的banner
var groupBannerList: [String] = []
init?(map: Map) {
}
mutating func mapping(map: Map) {
chatWarning <- map["client.chatwarning", nested: false]
groupBannerList <- map["client.team.ad", nested: false]
// timeConfig <- map["client.time.setting", nested: false]
pigeonConfig <- map["client.time.setting.pigeon", nested: false]
shareConfig <- map["client.weixin.share", nested: false]
versionUpgradeModel <- map["client.version.upgrade", nested: false]
bannerList <- map["client.banner.explore", nested: false]
}
}
struct PigeonTimeSettingModel: Mappable {
/// 时间窗口内最多发送次数
var nums: Int = 0
/// 窗口长度(秒)
var times: Int = 0
init?(map: Map) {}
mutating func mapping(map: Map) {
nums <- (map["nums"], kStrTransformInt)
times <- (map["times"], kStrTransformInt)
}
var isEnabled: Bool { nums > 0 && times > 0 }
}
struct WxShareConfigModel: Mappable {
/// 链接
var link: String = ""
/// 标题
var title: String = ""
/// 内容
var content: String = ""
/// 图标
var image: String = ""
init?(map: Map) {
}
mutating func mapping(map: Map) {
link <- map["link"]
title <- map["title"]
content <- map["content"]
image <- map["image"]
}
}
struct VersionUpgradeModel: Mappable {
/// 下载地址
var url: String = ""
/// 标题
var title: String = ""
/// 内容
var description: String = ""
/// 版本
var version: String = ""
/// 强制更新
var force: Bool = false
init?(map: Map) {
}
mutating func mapping(map: Map) {
url <- map["url"]
title <- map["title"]
description <- map["description"]
force <- map["force"]
version <- map["version"]
}
}
struct BannerConfigModel: Mappable {
/// 图片地址
var img: String = ""
/// url:网页地址
var url: String = ""
/// app:原生应用内跳转 web:跳转网页
var type: String = ""
var enable: Bool = false
/// 备注
var text: String = ""
init?(map: Map) {
}
mutating func mapping(map: Map) {
img <- map["img"]
url <- map["url"]
type <- map["type"]
enable <- map["enable"]
text <- map["text"]
}
}