149 lines
4.3 KiB
Swift
149 lines
4.3 KiB
Swift
//
|
||
// UserAPI.swift
|
||
// QuickLocation
|
||
//
|
||
// Created by 八条 on 2026/5/28.
|
||
//
|
||
|
||
import Moya
|
||
import SwiftyUserDefaults
|
||
internal import Alamofire
|
||
|
||
/// 用户相关API
|
||
enum UserAPI {
|
||
/// 登录
|
||
/// - Parameters:
|
||
/// - type: weixin、phone、apple、onekey、device、alipay
|
||
/// - bind:1绑定 2解绑 为空是登录
|
||
case login(type: String,
|
||
bind: String,
|
||
data: [String: Any])
|
||
|
||
/// 用户信息
|
||
case userInfo
|
||
|
||
/// 用户IM Token
|
||
case imToken
|
||
|
||
/// 更换手机号
|
||
case changePhone(timestamp: String, phone: String, code: String)
|
||
|
||
/// 设置头像
|
||
case setHeadPic(index: Int)
|
||
|
||
/// 昵称
|
||
case setNickName(nick: String)
|
||
|
||
/// 性别
|
||
/// - Parameters:
|
||
/// - sex: 1 男 2 女
|
||
case setGender(sex: Int)
|
||
|
||
/// 紧急联系人
|
||
/// - Parameters:
|
||
/// - opType: get、add
|
||
/// - requestData:[String: Any] 根据操作传入对应的值
|
||
case emergencyContact(opType: String, requestData: [String: Any])
|
||
|
||
/// 删除账号
|
||
case deleteAccount
|
||
|
||
/// 退出登录
|
||
case logout
|
||
}
|
||
|
||
extension UserAPI: MultiTargetProtocol {
|
||
|
||
var path: String {
|
||
switch self {
|
||
case .login:
|
||
return "api/user/login"
|
||
case .userInfo:
|
||
return "api/user"
|
||
case .imToken:
|
||
return "mapi/openim/user/token/get"
|
||
case .changePhone:
|
||
return "api/user"
|
||
case .setHeadPic:
|
||
return "mapi/user/setheadpic"
|
||
case .setNickName:
|
||
return "mapi/user/setnick"
|
||
case .setGender:
|
||
return "api/user"
|
||
case .emergencyContact:
|
||
return "mapi/user/emergencycontact"
|
||
case .deleteAccount:
|
||
return "mapi/user/account"
|
||
case .logout:
|
||
return "api/user/logout"
|
||
}
|
||
}
|
||
|
||
var method: Moya.Method {
|
||
switch self {
|
||
case .userInfo:
|
||
return .get
|
||
case .changePhone, .setGender:
|
||
return .put
|
||
case .deleteAccount:
|
||
return .delete
|
||
default:
|
||
return .post
|
||
}
|
||
}
|
||
|
||
var task: Moya.Task {
|
||
switch self {
|
||
case let .login(type, bind, data):
|
||
var params = Parameters()
|
||
params["type"] = type
|
||
params["bind"] = bind
|
||
params["data"] = data
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case .userInfo:
|
||
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
|
||
|
||
case .imToken:
|
||
var params = Parameters()
|
||
params["platform_id"] = 1
|
||
params["force"] = true
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case let .changePhone(timestamp, phone, code):
|
||
var params = Parameters()
|
||
params["phone_timestamp"] = timestamp
|
||
params["phone"] = phone
|
||
params["phone_code"] = code
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case let .setHeadPic(index):
|
||
var params = Parameters()
|
||
params["head_pic_index"] = index
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case let .setNickName(nick):
|
||
var params = Parameters()
|
||
params["nick"] = nick
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case let .setGender(sex):
|
||
var params = Parameters()
|
||
params["sex"] = sex
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case let .emergencyContact(opType, requestData):
|
||
var params = Parameters()
|
||
params["op_type"] = opType
|
||
params.merge(requestData) { _, new in new }
|
||
return .requestParameters(parameters: params, encoding: JSONEncoding())
|
||
|
||
case .deleteAccount:
|
||
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
|
||
|
||
case .logout:
|
||
return .requestParameters(parameters: Parameters(), encoding: JSONEncoding())
|
||
}
|
||
}
|
||
}
|