// // ItineraryAPI.swift // QuickLocation // // Created by 八条 on 2026/6/23. // import Moya import SwiftyUserDefaults internal import Alamofire /// 行程API enum ItineraryAPI { /// 查询行程列表 /// - Parameters: /// - follow: 只查看关注的行程 /// - own: 只查看自己创建的行程 /// - history: true查看历史行程,默认查看今天之后的行程 /// - group_key: 过滤圈子查询 case query(follow: Bool, own: Bool, history: Bool, group_key: String, page: Int) /// 查询行程关注人 /// - Parameters: /// - id: 行程ID case queryFollowList(id: String) /// 设置行程 /// - Parameters: /// - id: 更新时传入 /// - group_keys: 只查看关注的行程 /// - timestamp: 行程日期 /// - points: 行程点 case set(id: String, group_keys: [String], timestamp: Int64, points: [[String: Any]]) /// 删除 /// - Parameters: /// - id: 行程ID case delete(id: String) /// 关注行程 /// - Parameters: /// - id: 行程ID /// - op: 1关注 2取消关注 case follow(id: String, op: Int) } extension ItineraryAPI: MultiTargetProtocol { var path: String { switch self { case .query: return "mapi/itinerary/route" case .queryFollowList: return "mapi/itinerary/route/follower" case .set: return "mapi/itinerary/route/set" case .delete: return "mapi/itinerary/route/delete" case .follow: return "mapi/itinerary/route/follow" } } var method: Moya.Method { switch self { case .query, .queryFollowList: return .get case .delete: return .delete default: return .post } } var task: Moya.Task { switch self { case let .query(follow, own, history, group_key, page): var params = Parameters() params["follow"] = follow params["own"] = own params["history"] = history if !group_key.isEmpty { params["group_key"] = group_key } params["page"] = page params["limit"] = 20 return .requestParameters(parameters: params, encoding: URLEncoding()) case let .queryFollowList(id): var params = Parameters() params["route_id"] = id return .requestParameters(parameters: params, encoding: URLEncoding()) case let .set(id, group_keys, timestamp, points): var params = Parameters() if id.isEmpty { params["timestamp"] = timestamp } else { params["id"] = id } params["group_keys"] = group_keys params["points"] = points return .requestParameters(parameters: params, encoding: JSONEncoding()) case let .delete(id): var params = Parameters() params["id"] = id return .requestParameters(parameters: params, encoding: URLEncoding()) case let .follow(id, op): var params = Parameters() params["id"] = id params["op"] = op return .requestParameters(parameters: params, encoding: JSONEncoding()) } } }