jsdw_ios/QuickLocation/Manager/URL/URLManager.swift

128 lines
3.8 KiB
Swift

//
// URLManager.swift
// SHECommunity
//
// Created by on 2024/11/26.
//
import Foundation
import SwiftyUserDefaults
import RxSwift
extension DefaultsKeys {
// 0: 1:
var apiEnvKey: DefaultsKey<Int> { .init("ApiEnvKey", defaultValue: -99) }
//
var apiServerURL: DefaultsKey<String> { .init("ApiServerURL", defaultValue: "") }
}
@objcMembers class URLManager: NSObject {
static let shared = URLManager()
// -1: UAT 0: 1:
var apiEnv: Int = 0
///
var apiServerURL: String = "" {
didSet {
AppNetworkConfig.shared.baseURL = apiServerURL
}
}
///
var userAgreementUrl: String { "https://sd.zuom8.cn/Agreement.html" }
///
var privacyPolicyUrl: String { "https://sd.zuom8.cn/Privacy.html" }
///
var cancellationNoticeUrl: String { "https://h5.yiwen618.com.cn/yiwen_h5_logoff.html" }
/// 线
var onlineCustomerServiceUrl: String { "https://h5.zywmwl.com/kefu.html" }
///
var feedbackRuleUrl: String { "https://h5.zywmwl.com/suggestion_rule.html" }
/// 使
var useGuideUrl: String { "https://activity.zywmwl.com/web_acitvtiy/#/pages/index/useGoldDetail" }
// ///
// var orderTrackUrl: String { "\(apiServerURL)/webapp/h5/dist/index.html#/order-track" }
// ///
// var delayDetailUrl: String { "\(apiServerURL)/webapp/delayedpayment/detail.html" }
// /// FAQ
// var faqUrl: String { "\(apiServerURL)/webapp/faq/detail.html?service_im_id=\(IMService.shared.customServiceId)" }
// /// CRM
// var crmUrl: String { apiServerURL + "/webapp/h5/dist/index.html#/crm/bd" }
private override init() {
super.init()
self.setupNetworkMode()
}
func setupNetworkMode() {
#if DEBUG
setupApiEnv(1)
#elseif AdHoc
setupApiEnv(-1)
#else
setupApiEnv(1)
#endif
}
private func setupApiEnv(_ env: Int) {
// env
if Defaults[\.apiEnvKey] != -99 {
apiEnv = Defaults[\.apiEnvKey]
}
else {
apiEnv = env
}
// api
if Defaults[\.apiServerURL].isEmpty {
apiServerURL = apiServerURL(apiEnv)
} else {
apiServerURL = Defaults[\.apiServerURL]
}
}
// MARK: -
func apiServerURL(_ env: Int) -> String {
switch env {
case 1: //
return "https://jsapi.zuom8.cn/"
case -1: // UAT
return "https://jsapi.zuom8.cn/"
default: // SIT
return "https://jsapi.zuom8.cn/"
}
}
// MARK: -
func uploadServerURL() -> String {
//#if DEBUG
// return ""
//#else
return ""
//#endif
}
// MARK: - h5
func setupUrlParams(_ strUrl: String) -> String {
var tempUrl = strUrl
let separator = strUrl.contains("?") ? "&" : "?"
tempUrl.append(separator)
//
var params = ["height=\(kStatusBarHeight)"]
//
if let latitude = Defaults[\.currentLatitude],
let longitude = Defaults[\.currentLongitude] {
params.append("lat=\(latitude)")
params.append("log=\(longitude)")
}
// header
if let ecommerceHeader = ApiManager.shared.httpHeader()["EcommerceHeader"] {
params.append("header=\(ecommerceHeader)")
}
if let paramsStr = params.joined(separator: "&").addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
tempUrl.append(paramsStr)
}
return tempUrl
}
}