121 lines
3.4 KiB
Swift
121 lines
3.4 KiB
Swift
//
|
||
// 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())
|
||
|
||
}
|
||
}
|
||
}
|