237 lines
4.8 KiB
Swift
237 lines
4.8 KiB
Swift
|
|
//
|
|||
|
|
// DiscoverModels.swift
|
|||
|
|
// Crush
|
|||
|
|
//
|
|||
|
|
// Created by Leon on 2025/9/10.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
// MARK: - Discover Home info
|
|||
|
|
|
|||
|
|
struct DiscoverHomeInfo:Codable{
|
|||
|
|
var aiChatRankTop3List:[AIDiscoverTop]?
|
|||
|
|
var aiHeartbeatRankTop3List:[AIDiscoverTop]?
|
|||
|
|
var aiGiftRankTop3List:[AIDiscoverTop]?
|
|||
|
|
var advertiseList: [AdvertiseOutput]?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// 广告输出对象
|
|||
|
|
struct AdvertiseOutput: Codable {
|
|||
|
|
/// 广告名称
|
|||
|
|
var name: String?
|
|||
|
|
/// 广告配图
|
|||
|
|
var icon: String?
|
|||
|
|
/// 跳转连接
|
|||
|
|
var jumpLink: String?
|
|||
|
|
/// 展示开始时间
|
|||
|
|
var showStartTime: String?
|
|||
|
|
/// 展示结束时间
|
|||
|
|
var showEndTime: String?
|
|||
|
|
/// 扩展字段
|
|||
|
|
var ext: String?
|
|||
|
|
/// 排序
|
|||
|
|
var sort: Int?
|
|||
|
|
/// 使用端点(WEB/ANDROID/IOS)
|
|||
|
|
var endpoint: String?
|
|||
|
|
/// 是否弹窗 (1.是,0.否)
|
|||
|
|
var isGlobal: Int?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// AI 榜单 Top3
|
|||
|
|
struct AIDiscoverTop: Codable {
|
|||
|
|
/// 排名编号
|
|||
|
|
var rankNo: Int?
|
|||
|
|
/// AI 的 id
|
|||
|
|
var aiId: Int?
|
|||
|
|
/// 昵称
|
|||
|
|
var nickname: String?
|
|||
|
|
/// 性别 (0=男,1=女,2=自定义)
|
|||
|
|
var sex: Sex?
|
|||
|
|
/// 头像
|
|||
|
|
var headImg: String?
|
|||
|
|
/// 出生日期
|
|||
|
|
var birthday: Int?
|
|||
|
|
/// 角色名称
|
|||
|
|
var roleName: String?
|
|||
|
|
/// 性格名称
|
|||
|
|
var characterName: String?
|
|||
|
|
/// 标签名称
|
|||
|
|
var tagName: String?
|
|||
|
|
/// 简介
|
|||
|
|
var introduction: String?
|
|||
|
|
/// 主页头图
|
|||
|
|
var homeImageUrl: String?
|
|||
|
|
|
|||
|
|
var likedNum: Int?
|
|||
|
|
|
|||
|
|
// MARK: Chat
|
|||
|
|
|
|||
|
|
/// 聊天次数
|
|||
|
|
var chatNum: Int?
|
|||
|
|
|
|||
|
|
// MARK: HeartBeat
|
|||
|
|
|
|||
|
|
// 心动值分值
|
|||
|
|
var heartbeatValTotal: CGFloat?
|
|||
|
|
|
|||
|
|
// MARK: Gift
|
|||
|
|
|
|||
|
|
var giftCoinNum: Int?
|
|||
|
|
|
|||
|
|
func formateRankDisplayString()->String{
|
|||
|
|
let rank = rankNo ?? 1
|
|||
|
|
if rank == 1{
|
|||
|
|
return "1st"
|
|||
|
|
}else if rank == 2{
|
|||
|
|
return "2nd"
|
|||
|
|
}else {
|
|||
|
|
return "3rd"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func formateChatDisplay() -> String{
|
|||
|
|
return String.displayDouble(Double(chatNum ?? 0))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func formateHeartbeatDisplay() ->String {
|
|||
|
|
return "\(heartbeatValTotal ?? 0.0)℃"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func formateGiftDisplay() ->String{
|
|||
|
|
return String.displayDouble(Double((giftCoinNum ?? 0))*0.01)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// MARK: - Daily check
|
|||
|
|
|
|||
|
|
struct Day7CheckList: Codable {
|
|||
|
|
/// 最大连续签到天数
|
|||
|
|
var continuousDays: Int?
|
|||
|
|
|
|||
|
|
var list: [Day7CheckListItem]?
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct Day7CheckListItem:Codable{
|
|||
|
|
/// PST 天(yyyy-MM-dd)
|
|||
|
|
var dayStr: String?
|
|||
|
|
/// 是否已签到
|
|||
|
|
var signIn: Bool?
|
|||
|
|
/// 得到coin的数量
|
|||
|
|
var coinNum: Int?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// MARK: - Meet Home
|
|||
|
|
|
|||
|
|
class MeetCard: Codable{
|
|||
|
|
/// AI 的 id
|
|||
|
|
var aiId: Int?
|
|||
|
|
/// 昵称
|
|||
|
|
var nickname: String?
|
|||
|
|
/// 性别 (0=男, 1=女, 2=自定义)
|
|||
|
|
var sex: Sex?
|
|||
|
|
/// 头像
|
|||
|
|
var headImg: String?
|
|||
|
|
/// 年龄
|
|||
|
|
var age: Int?
|
|||
|
|
/// 点赞数
|
|||
|
|
var likedCount: Int?
|
|||
|
|
/// 角色
|
|||
|
|
var role: String?
|
|||
|
|
/// 性格
|
|||
|
|
var character: String?
|
|||
|
|
/// 标签
|
|||
|
|
var tag: String?
|
|||
|
|
/// 简介
|
|||
|
|
var introduction: String?
|
|||
|
|
/// 形象图
|
|||
|
|
var imageUrl: String?
|
|||
|
|
|
|||
|
|
var albumList:[AlbumPhotoItem]?
|
|||
|
|
|
|||
|
|
var heartbeatVal: CGFloat?
|
|||
|
|
|
|||
|
|
// MARK: Custom property
|
|||
|
|
var secretAdmirer : Bool?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct MeetMatchInfo: Codable{
|
|||
|
|
var sex: Sex?
|
|||
|
|
var introduction: String?
|
|||
|
|
var characterName: String?
|
|||
|
|
var likedCount: Int?
|
|||
|
|
var aiId: Int?
|
|||
|
|
var userId: Int?
|
|||
|
|
var birthday: Int? // 原始毫秒时间戳
|
|||
|
|
var roleName: String?
|
|||
|
|
var tagName: String?
|
|||
|
|
var homeImageUrl: String?
|
|||
|
|
var liked: Bool?
|
|||
|
|
var headImg: String?
|
|||
|
|
var nickname: String?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct MeetCardReportResponse: Codable{
|
|||
|
|
/// 是否能够调用绑定
|
|||
|
|
var bd: Bool?
|
|||
|
|
/// 是否能够调用爱慕者推荐
|
|||
|
|
var rc: Bool?
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct MeetReportAdmirerReturnAlbum: Codable{
|
|||
|
|
var aiId: Int?
|
|||
|
|
var albumId: Int?
|
|||
|
|
var width: String?
|
|||
|
|
var height: String?
|
|||
|
|
var img1: String?
|
|||
|
|
var img2: String?
|
|||
|
|
var img3: String?
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// MARK: - Request
|
|||
|
|
|
|||
|
|
enum AIRoleListRequestAge: String, Codable{
|
|||
|
|
/// 18-24
|
|||
|
|
case AGE_1
|
|||
|
|
/// 25-34
|
|||
|
|
case AGE_2
|
|||
|
|
/// 35-44
|
|||
|
|
case AGE_3
|
|||
|
|
/// 45-54
|
|||
|
|
case AGE_4
|
|||
|
|
/// >54
|
|||
|
|
case AGE_5
|
|||
|
|
|
|||
|
|
var localized: String?{
|
|||
|
|
switch self {
|
|||
|
|
case .AGE_1:
|
|||
|
|
return "18-24"
|
|||
|
|
case .AGE_2:
|
|||
|
|
return "25-34"
|
|||
|
|
case .AGE_3:
|
|||
|
|
return "35-44"
|
|||
|
|
case .AGE_4:
|
|||
|
|
return "45-54"
|
|||
|
|
case .AGE_5:
|
|||
|
|
return ">54"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
struct AIRoleListRequest: Codable{
|
|||
|
|
var pn = 1
|
|||
|
|
var ps = 20
|
|||
|
|
/// 需要排除的aiId列表
|
|||
|
|
var exList: [Int]?
|
|||
|
|
// var sex: [Sex]? // 修改为支持多选
|
|||
|
|
var sex: Sex? // 修改为支持多选
|
|||
|
|
var age : AIRoleListRequestAge?
|
|||
|
|
var random: Bool?
|
|||
|
|
var roleCodeList: [String]?
|
|||
|
|
/// 情感性格Code
|
|||
|
|
var characterCodeList: [String]?
|
|||
|
|
/// 标签code列表
|
|||
|
|
var tagCodeList: [String]?
|
|||
|
|
}
|