Visual_Novel_iOS/crush/Crush/Src/Models/DiscoverModels.swift

237 lines
4.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.

//
// 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]?
}