jsdw_ios/QuickLocation/API/ItineraryAPI.swift

123 lines
3.5 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.

//
// 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
}
if page != -1 {
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())
}
}
}