接入举报摄影师正式接口

This commit is contained in:
2026-07-08 16:38:15 +08:00
parent 4a78a0c21a
commit 290a01e699
12 changed files with 2586 additions and 218 deletions
@@ -0,0 +1,99 @@
//
// WildPhotographerReportAPI.swift
// suixinkan
//
import Foundation
/// 举报摄影师服务协议,封装举报类型等后端接口。
@MainActor
protocol WildPhotographerReportServing {
/// 拉取提交举报可选类型。
func reportTypes() async throws -> WildReportTypeListResponse
/// 提交摄影师举报。
func submitReport(_ request: WildReportSubmitRequest) async throws
/// 拉取我的举报列表。
func reportList(_ request: WildReportListRequest) async throws -> WildReportListResponse
}
/// 举报摄影师 API,负责和 `photog/report` 相关接口通讯。
@MainActor
final class WildPhotographerReportAPI: WildPhotographerReportServing {
private let client: APIClient
/// 初始化举报摄影师 API。
init(client: APIClient) {
self.client = client
}
/// 拉取提交举报可选类型。
func reportTypes() async throws -> WildReportTypeListResponse {
try await client.send(
APIRequest(method: .get, path: "/api/yf-handset-app/photog/report/types")
)
}
/// 提交摄影师举报。
func submitReport(_ request: WildReportSubmitRequest) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/report/submit",
body: request
)
)
}
/// 拉取我的举报列表。
func reportList(_ request: WildReportListRequest) async throws -> WildReportListResponse {
try await client.send(
APIRequest(
method: .get,
path: "/api/yf-handset-app/photog/report/list",
queryItems: request.queryItems
)
)
}
}
/// 提交举报接口请求体。
struct WildReportSubmitRequest: Encodable, Equatable {
let scenicId: Int
let reportType: Int
let desc: String
let storeUserId: Int?
let contactPhone: String?
let locationName: String?
let locationAddress: String?
let lat: Double
let lng: Double
let evidences: [WildReportEvidenceRequest]
let paymentScreenshots: [WildReportEvidenceRequest]
enum CodingKeys: String, CodingKey {
case scenicId = "scenic_id"
case reportType = "report_type"
case desc
case storeUserId = "store_user_id"
case contactPhone = "contact_phone"
case locationName = "location_name"
case locationAddress = "location_address"
case lat
case lng
case evidences
case paymentScreenshots = "payment_screenshots"
}
}
/// 提交举报接口中的附件项。
struct WildReportEvidenceRequest: Encodable, Equatable {
let fileURL: String
let fileType: Int
let fileName: String?
enum CodingKeys: String, CodingKey {
case fileURL = "file_url"
case fileType = "file_type"
case fileName = "file_name"
}
}