| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- //
- // LNHttpManager+GameMate.swift
- // Lanu
- //
- // Created by OneeChan on 2025/11/20.
- //
- import Foundation
- private let kNetPath_GameMate_Category = "/biz/categorys"
- private let kNetPath_GameMate_Filter = "/biz/categorys/filter/condition"
- private let kNetPath_GameMate_List = "/skill/list"
- private let kNetPath_GameMate_Skills = "/skill/user/goods"
- private let kNetPath_GameMate_Info = "/user/playmate/info"
- private let kNetPath_GameMate_Skill_Detail = "/skill/detail"
- private let kNetPath_GameMate_Score = "/user/playmate/charmStar"
- private let kNetPath_GameMate_Skill_Comment = "/skill/goods/comments"
- private let kNetPath_GameMate_Search = "/playmate/search"
- private let kNetPath_GameMate_Mixed_Search = "/search/mixed/list"
- private let kNetPath_GameMate_Join_Infos = "/playmate/apply/curInfo"
- private let kNetPath_GameMate_Join_Improve_BaseInfo = "/playmate/apply/improve/info"
- private let kNetPath_GameMate_Join_Skill_Field = "/playmate/apply/setp3/info/get"
- private let kNetPath_GameMate_Join_Apply = "/playmate/apply/submit"
- private let kNetPath_GameMate_Settings_Info = "/playmate/business/info"
- private let kNetPath_GameMate_Settings_Switch = "/playmate/business/switch"
- private let kNetPath_GameMate_Settings_Time = "/playmate/getAcceptSet"
- private let kNetPath_GameMate_Settings_Time_Set = "/playmate/acceptSet"
- private let kNetPath_GameMate_Settings_Skill_List = "/playmate/skill/list"
- private let kNetPath_GameMate_Visitors = "/user/visitors"
- private let kNetPath_GameMate_Skill_Switch = "/skill/switch/get"
- private let kNetPath_GameMate_Skill_Switch_Set = "/skill/switch/set"
- private let kNetPath_GameMate_Skill_Fields = "/skill/editInfo/get"
- private let kNetPath_GameMate_Skill_Edit = "/skill/edit"
- private let kNetPath_GameMate_AutoReply_Switch = "/playmate/autoWelcome/switch"
- private let kNetPath_GameMate_AutoReply_List = "/playmate/welcome/list"
- private let kNetPath_GameMate_AutoReply_Create = "/playmate/welcome/create"
- private let kNetPath_GameMate_AutoReply_Update = "/playmate/welcome/update"
- private let kNetPath_GameMate_AutoReply_Delete = "/playmate/welcome/delete"
- private let kNetPath_GameMate_AutoReply_Send = "/playmate/welcome/trigger"
- private let kNetPath_GameMate_AutoReply_Mark = "/playmate/push/chat/submit"
- private let kNetPath_GameMate_AutoReply_Query = "/playmate/push/chat/quota"
- private let kNetPath_GameMate_PotentialUsers_List = "/playmate/push/list"
- enum LNGameMateAgeRange: Int, CaseIterable {
- case all = -1
- case `15-25` = 0
- case `25-35` = 1
- case `>35` = 2
-
- var text: String {
- switch self {
- case .`15-25`: "15-25"
- case .`25-35`: "25-35"
- case .`>35`: "> 35"
- case .all: .init(key: "A00008")
- }
- }
- }
- enum LNGameMatePriceRange: Int, CaseIterable {
- case all = -1
- case `0-10` = 0
- case `10-15` = 1
- case `15-25` = 2
- case `25-50` = 3
- case `>50` = 4
-
- var text: String {
- switch self {
- case .`0-10`: "0-10"
- case .`10-15`: "10-15"
- case .`15-25`: "15-25"
- case .`25-50`: "25-50"
- case .`>50`: "> 50"
- case .all: .init(key: "A00008")
- }
- }
- }
- enum LNGameMateGenderRange: Int, CaseIterable {
- case all = -1
- case unknow = 0
- case male = 1
- case female = 2
-
- var text: String {
- switch self {
- case .all: .init(key: "A00008")
- case .unknow: .init(key: "A00016")
- case .male: .init(key: "A00014")
- case .female: .init(key: "A00015")
- }
- }
- }
- class LNGameMateFilter {
- var ageRange: LNGameMateAgeRange = .all
- var gender: LNGameMateGenderRange = .all
- var areCode: String = ""
- var sortByStar: LNSortedType = .none
- var sortByPrice: LNSortedType = .none
- var priceRange: LNGameMatePriceRange = .all
- var categoryFilters: [(fieldCode: String, filterValues: [String])] = []
- }
- // MARK: 获取大品类类型
- extension LNHttpManager {
- func getGameCategories(completion: @escaping(LNGameTypeListResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Category, completion: completion)
- }
-
- func getGameFilterConfig(completion: @escaping (LNSkillFilterConfigList?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Filter, completion: completion)
- }
- }
- // MARK: 获取陪玩师列表
- extension LNHttpManager {
- func getGameMateList(
- topCategory: String, category: String?,
- filter: LNGameMateFilter, size: Int, next: String,
- completion: @escaping (LNGameMateListResponse?, LNHttpError?) -> Void)
- {
- var params: [String: Any] = [
- "firstCode": topCategory,
- "code": category ?? "",
- "ageRange": filter.ageRange.rawValue,
- "gender": filter.gender.rawValue,
- "areCode": filter.areCode,
- "sortByStar": filter.sortByStar.rawValue,
- "sortByPrice": filter.sortByPrice.rawValue,
- "priceRange": filter.priceRange.rawValue,
- "page": [
- "size": size,
- "next": next
- ]
- ]
- var filters: [[String: any Encodable]] = []
- for item in filter.categoryFilters {
- filters.append([
- "fieldCode": item.fieldCode,
- "filterValues": item.filterValues
- ])
- }
- if !filters.isEmpty {
- params["categoryFilters"] = filters
- }
- post(path: kNetPath_GameMate_List,
- params: params,
- completion: completion)
- }
- }
- // MARK: 陪玩师信息查询
- extension LNHttpManager {
- func getUserSkills(uid: String, completion: @escaping (LNGameMateSkillListResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Skills, params: ["id": uid], completion: completion)
- }
-
- func getGameMateInfo(uid: String, completion: @escaping (LNGameMateInfoResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Info, params: ["id": uid], completion: completion)
- }
-
- func getSkillDetail(skillId: String, completion: @escaping (LNGameMateSkillDetailVO?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Skill_Detail, params: ["id": skillId], completion: completion)
- }
-
- func searchGameMate(keyword: String, size: Int,
- next: String,
- completion: @escaping (LNGameMateSearchResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Search, params: [
- "keyword": keyword,
- "page": [
- "size": size,
- "next": next
- ]
- ], completion: completion)
- }
-
- func mixSearch(keyword: String, completion: @escaping (LNMixSearchResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Mixed_Search, params: [
- "keyword": keyword
- ], completion: completion)
- }
-
- func scoreGameMate(uid: String, score: Int, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Score, params: [
- "userNo": uid,
- "star": score
- ], completion: completion)
- }
-
- func getSkillCommentList(id: String, size: Int, next: String,
- completion: @escaping (LNSkillCommentListResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Skill_Comment, params: [
- "skillId": id,
- "page": [
- "size": size,
- "next": next
- ]
- ], completion: completion)
- }
- }
- // MARK: 陪玩师申请
- class LNCreateSkillFieldInfo {
- var fieldCode: String = ""
- var value: (any Encodable)?
- var duration: Int?
- }
- class LNCreateSkillFieldsInfo {
- var bizCategoryCode = ""
- var fields: [LNCreateSkillFieldInfo] = []
- }
- extension LNHttpManager {
- func getJoinGameMateInfo(completion: @escaping (LNJoinUsInputInfosResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Join_Infos, completion: completion)
- }
-
- func setJoinGameMateBaseInfo(
- info: LNJoinUsBaseInfoVO,
- completion: @escaping (LNJoinUsInputInfosResponse?, LNHttpError?) -> Void)
- {
- post(path: kNetPath_GameMate_Join_Improve_BaseInfo, params: [
- "avatar": info.avatar,
- "nickname": info.nickname,
- "gender": info.gender.rawValue,
- "birthday": info.birthday,
- "intro": info.intro,
- "languageCodes": info.languageCodes
- ], completion: completion)
- }
-
- func getCreateSkillFields(id: String, completion: @escaping (LNCreateSkillInputFieldsVO?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Join_Skill_Field, params: [
- "id": id
- ], completion: completion)
- }
-
- func createSkill(info: LNCreateSkillFieldsInfo, completion: @escaping (LNHttpError?) -> Void) {
- var fields: [[String: Any]] = []
- info.fields.forEach {
- var field: [String: Any] = [
- "fieldCode": $0.fieldCode,
- "value": $0.value as Any
- ]
- if let duration = $0.duration {
- field["duration"] = duration
- }
-
- fields.append(field)
- }
- post(path: kNetPath_GameMate_Join_Apply, params: [
- "bizCategoryCode": info.bizCategoryCode,
- "fields": fields
- ], completion: completion)
- }
- }
- // MARK: 陪玩师管理
- class LNEditSkillFieldsInfo {
- var skillId: String = ""
- var apply: Bool = false
- var fields: [LNCreateSkillFieldInfo] = []
- }
- extension LNHttpManager {
- func getGameMateManagerInfo(completion: @escaping (LNGameMateManagerInfo?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Settings_Info, completion: completion)
- }
-
- func enableGameMate(open: Bool, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Settings_Switch, params: [
- "open": open
- ], completion: completion)
- }
-
- func getOrderAccetpConfig(completion: @escaping (LNOrderAcceptConfig?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Settings_Time, completion: completion)
- }
-
- func setOrderAcceptConfig(config: LNOrderAcceptConfig, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Settings_Time_Set, params: [
- "timeRange": config.timeRange,
- "weekNums": config.weekNums.compactMap({ $0.rawValue })
- ], completion: completion)
- }
-
- func getMySkillList(onlyOpen: Bool = false, completion: @escaping (LNMySkillListResponse?, LNHttpError?) -> Void) {
- var params: [String: Any] = [:]
- if onlyOpen {
- params["open"] = true
- }
- post(path: kNetPath_GameMate_Settings_Skill_List, params: params, completion: completion)
- }
-
- func enableSkill(skillId: String, open: Bool, mainSkill: Bool? = nil, completion: @escaping (LNHttpError?) -> Void) {
- var params: [String: (any Encodable)] = [
- "skillId": skillId,
- "open": open
- ]
- if let mainSkill {
- params["mainSkill"] = mainSkill
- }
- post(path: kNetPath_GameMate_Skill_Switch_Set, params: params, completion: completion)
- }
-
- func getVisitorsList(next: String, size: Int, completion: @escaping (LNVisitorsListResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Visitors, params: [
- "size": size,
- "next": next
- ], completion: completion)
- }
-
- func getSkillEditFields(id: String, completion: @escaping (LNSkillEditFieldsResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Skill_Fields, params: [
- "id": id
- ], completion: completion)
- }
-
- func commitSkillEdit(info: LNEditSkillFieldsInfo, completion: @escaping (LNHttpError?) -> Void) {
- var fields: [[String: Any]] = []
- info.fields.forEach {
- var field: [String: Any] = [
- "fieldCode": $0.fieldCode,
- "value": $0.value as Any
- ]
- if let duration = $0.duration {
- field["duration"] = duration
- }
-
- fields.append(field)
- }
-
- post(path: kNetPath_GameMate_Skill_Edit, params: [
- "skillId": info.skillId,
- "apply": info.apply,
- "fields": fields
- ], completion: completion)
- }
-
- func getSkillSwitchInfo(id: String, completion: @escaping (LNSkillSwitchResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_Skill_Switch, params: [
- "id": id
- ], completion: completion)
- }
- }
-
- // MARK: 欢迎语(自动回复)
- extension LNHttpManager {
- func enableAutoReplay(on: Bool, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Switch, params: [
- "autoWelcomeOpen": on
- ], completion: completion)
- }
-
- func getAutoReplayList(completion: @escaping (LNAutoReplyResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_List, completion: completion)
- }
-
- func deleteAutoReplay(id: String, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Delete, params: [
- "id": id
- ], completion: completion)
- }
-
- func createAutoReplay(item: LNAutoReplyVO, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Create, params: [
- "type": item.type.rawValue,
- "textContent": item.textContent,
- "voiceUrl": item.voiceUrl,
- "voiceDuration": item.voiceDuration
- ], completion: completion)
- }
-
- func updateAutoReplay(item: LNAutoReplyVO, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Update, params: [
- "id": item.id,
- "type": item.type.rawValue,
- "textContent": item.textContent,
- "voiceUrl": item.voiceUrl,
- "voiceDuration": item.voiceDuration
- ], completion: completion)
- }
-
- func triggerAutoReplayIfNeed(uid: String, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Send, params: [
- "playmateUserNo": uid
- ], completion: completion)
- }
-
- func markUseAutoReplay(uid: String, completion: @escaping (LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Mark, params: [
- "userNo": uid
- ], completion: completion)
- }
-
- func fetchAutoReplyQuota(uid: String, completion: @escaping (LNAutoReplyQuotaResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_AutoReply_Query, params: [
- "userNo": uid
- ], completion: completion)
- }
- }
- // MARK: 潜在用户
- extension LNHttpManager {
- func getPotentialUsers(completion: @escaping (LNPotentialUsersResponse?, LNHttpError?) -> Void) {
- post(path: kNetPath_GameMate_PotentialUsers_List, completion: completion)
- }
- }
|