jsdw_ios/QuickLocation/Model/GroupModel.swift

241 lines
5.8 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.

//
// GroupModel.swift
// QuickLocation
//
// Created by on 2026/5/30.
//
import ObjectMapper
import RxDataSources
///
struct UserGroupResponse: BaseModelProtocol {
//
var code: String?
//
var message: String?
//
var model: GroupModel?
init?(map: Map) {}
mutating func mapping(map: Map) {
code <- map["code"]
message <- map["msg"]
model <- map["data"]
}
}
///
struct RecommandGroupResponse: BaseModelProtocol {
//
var code: String?
//
var message: String?
//
var list: [GroupInfoModel] = []
init?(map: Map) {}
mutating func mapping(map: Map) {
code <- map["code"]
message <- map["msg"]
list <- map["data"]
}
}
///
struct GroupInfoResponse: BaseModelProtocol {
//
var code: String?
//
var message: String?
//
var model: GroupInfoModel?
//
var list: [GroupMemberModel] = []
//
var reviewCount: Int = 0
init?(map: Map) {}
mutating func mapping(map: Map) {
code <- map["code"]
message <- map["msg"]
model <- map["data.attr"]
list <- map["data.employee"]
reviewCount <- map["data.reviewCount"]
}
}
struct ReviewMemberListResponse: BaseModelProtocol {
//
var code: String?
//
var message: String?
///
var list: [GroupMemberModel] = []
init?(map: Map) {}
mutating func mapping(map: Map) {
code <- map["code"]
message <- map["msg"]
list <- map["data"]
}
}
struct GroupModel: Mappable {
///
var default_group_key: String = ""
///
var has_unread_email: Bool = false
/// SOS
var is_anyone_sos: Bool = false
///
var groups: [GroupInfoModel] = []
///
var select_group_employee: [GroupMemberModel] = []
var score: Int = 0
init?(map: Map) {
}
mutating func mapping(map: Map) {
default_group_key <- map["default_group_key"]
has_unread_email <- map["has_unread_email"]
is_anyone_sos <- map["is_anyone_sos"]
score <- map["score"]
groups <- map["groups"]
select_group_employee <- map["select_group_employee"]
}
}
struct GroupInfoModel: Mappable, Equatable {
///
var group_key: String = ""
///
var is_owner: Bool = false
///
var name: String = ""
/// icon
var icon_index: Int = 1
var groupIcon: UIImage {
UIImage(named: "GroupIcon/\(icon_index)") ?? UIImage()
}
///
var labels: [String] = []
///
var review: Bool = false
///
var people_no: Int = 0
///
var description: String = ""
///
var level: String = ""
///
var share_code: String = ""
init?(map: Map) {
}
mutating func mapping(map: Map) {
group_key <- map["group_key"]
is_owner <- map["is_owner"]
name <- map["name"]
icon_index <- map["icon_index"]
labels <- map["labels"]
level <- map["level"]
review <- map["review"]
description <- map["description"]
share_code <- map["share_code"]
people_no <- (map["people_no"], kStrTransformInt)
}
}
extension GroupInfoModel: IdentifiableType {
public typealias Identity = String
public var identity: String {
return group_key
}
}
struct GroupMemberModel: Mappable, Equatable {
///
var user_id: String = ""
///
var head_pic: String = "1"
///
var userIcon: UIImage {
UIImage(named: "UserIcon/\(head_pic)") ?? UIImage()
}
///
var nick_name: String = ""
/// 1 2 3 4
var level: Int = 1
var vipIcon: UIImage {
if level != 2 || level != 4 {
return UIImage(named: "VipIcon/1") ?? UIImage()
}
return UIImage(named: "VipIcon/\(level)") ?? UIImage()
}
/// 线
var is_online: Bool = false
///
var battery: String = ""
/// 线
var last_active_time: Int64 = 0
/// 线MQTT
var lastUpdateText: String {
let nowMs = Date().timeIntervalSince1970
let msgTimeMs = Double(last_active_time)
let diffSec = nowMs - msgTimeMs
let isOnline = diffSec < 60
let lastUpdateText: String
if isOnline {
lastUpdateText = ""
} else if diffSec < 3600 {
lastUpdateText = "\(Int(diffSec / 60))分钟前"
} else if diffSec < 86400 {
lastUpdateText = "\(Int(diffSec / 3600))小时前"
} else {
lastUpdateText = "\(Int(diffSec / 86400))天前"
}
return lastUpdateText
}
///
var last_position: String = ""
var lastLocation: String {
guard last_position.contains(":") else { return "" }
let arr = last_position.components(separatedBy: ":")
return arr.last ?? ""
}
init?(map: Map) {
}
mutating func mapping(map: Map) {
user_id <- map["user_id"]
head_pic <- map["head_pic"]
level <- (map["level"], kStrTransformInt)
nick_name <- map["nick_name"]
battery <- map["battery"]
last_position <- map["last_position"]
is_online <- map["is_online"]
last_active_time <- map["last_active_time"]
}
}
extension GroupMemberModel: IdentifiableType {
public typealias Identity = String
public var identity: String {
return user_id
}
}