CNLiveShopViewModel.swift 9.2 KB
//
//  CNLiveShopViewModel.swift
//  metaCode
//
//  Created by open on 2023/10/31.
//

import Foundation
import CNLiveRequestBastKit

typealias resultShopBlock = (_ result: Any,_ respStatue :CNLiveMineResponseType) -> Void
class CNLiveShopViewModel: NSObject {
    
    /// 请求获取订单列表数据
    /// - Parameters:
    ///   - state:  0全部 1待发货 2配送中 3代付款 4订单退款
    ///   - resultShopBlock: 返回
    static func requestOrderList(state: String, page: NSInteger, resultBlock: @escaping resultShopBlock) {
        if state == "6" {
            let param = NSMutableDictionary()
            param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid")
            param.setValue("\(page)", forKey: "page")
            let custom_param = NSMutableDictionary()
            custom_param.setValue(APPId_wjj, forKey: "appId")
            custom_param.setValue(APPKey_wjj, forKey: "appKey")
            CNLiveNetworking.setAllowRequestDefaultArgument(true)
            CNLiveNetworking.setupShowDataResult(false)
            CNLiveNetworking.setupDSRequest(true)
            CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
            CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/refundList", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
                hiddenLoading()
                if (error == nil) {
                    let resp = result as! NSDictionary
                    let errorCode = "\(resp["code"] ?? "0")"
                    if (errorCode == "200") {
                        if resp["data"] is NSNull {
                            resultBlock(Array<Any>(),.success)
                        } else {
                            let array = resp["data"] as! NSArray
                            let tempArray = NSMutableArray()
                            for item in array {
                                let listModel = dictionaryToModel(item as! [String : Any], ShopOrderListModel.self,"") as! ShopOrderListModel
                                listModel.isRefund = "1"
                                tempArray.add(listModel)
                            }
                            resultBlock(tempArray, .success)
                        }
                    } else {
                        showMessage(message: resp["message"] as! String)
                        resultBlock(NSNull(),.failed)
                    }
                } else {
                    if CNLiveNetworking.isNetworking() {
                        showMessage(message: "获取失败")
                        resultBlock(NSNull(),.failed)
                    } else {
                        showMessage(message: "似乎与网络断开链接")
                        resultBlock(NSNull(),.noNetwork)
                    }
                }
            }
        } else {
            let param = NSMutableDictionary()
            param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid")
            param.setValue("\(page)", forKey: "page")
            param.setValue("", forKey: "delivery")
            param.setValue(state, forKey: "state")
            param.setValue("", forKey: "keyword")
            let custom_param = NSMutableDictionary()
            custom_param.setValue(APPId_wjj, forKey: "appId")
            custom_param.setValue(APPKey_wjj, forKey: "appKey")
            CNLiveNetworking.setAllowRequestDefaultArgument(true)
            CNLiveNetworking.setupShowDataResult(false)
            CNLiveNetworking.setupDSRequest(true)
            CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
            CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/orders", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
                hiddenLoading()
                if (error == nil) {
                    let resp = result as! NSDictionary
                    let errorCode = "\(resp["code"] ?? "0")"
                    if (errorCode == "200") {
                        if resp["data"] is NSNull {
                            resultBlock(Array<Any>(),.success)
                        } else {
                            let array = resp["data"] as! NSArray
                            let tempArray = NSMutableArray()
                            for item in array {
                                let listModel = dictionaryToModel(item as! [String : Any], ShopOrderListModel.self,"") as! ShopOrderListModel
                                tempArray.add(listModel)
                            }
                            resultBlock(tempArray, .success)
                        }
                    } else {
                        showMessage(message: resp["message"] as! String)
                        resultBlock(NSNull(),.failed)
                    }
                } else {
                    if CNLiveNetworking.isNetworking() {
                        showMessage(message: "获取失败")
                        resultBlock(NSNull(),.failed)
                    } else {
                        showMessage(message: "似乎与网络断开链接")
                        resultBlock(NSNull(),.noNetwork)
                    }
                }
            }
        }
    }
    
    /// 通知自提
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - resultBlock: 返回
    static func requestNotifyOrder(orderId: String, resultBlock: @escaping resultShopBlock) {
        let param = NSMutableDictionary()
        param.setValue(UserInfoManager.shared.userInfo.uid, forKey: "uid")
        param.setValue(orderId, forKey: "id")
        let custom_param = NSMutableDictionary()
        custom_param.setValue(APPId_wjj, forKey: "appId")
        custom_param.setValue(APPKey_wjj, forKey: "appKey")
        CNLiveNetworking.setAllowRequestDefaultArgument(true)
        CNLiveNetworking.setupShowDataResult(false)
        CNLiveNetworking.setupDSRequest(true)
        CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
        CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/notifyOrder", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
            hiddenLoading()
            if (error == nil) {
                let resp = result as! NSDictionary
                let errorCode = "\(resp["code"] ?? "0")"
                if (errorCode == "200") {
                    resultBlock("",.success)
                } else {
                    showMessage(message: resp["message"] as! String)
                    resultBlock(NSNull(),.failed)
                }
            } else {
                if CNLiveNetworking.isNetworking() {
                    showMessage(message: "获取失败")
                    resultBlock(NSNull(),.failed)
                } else {
                    showMessage(message: "似乎与网络断开链接")
                    resultBlock(NSNull(),.noNetwork)
                }
            }
        }
    }
    
    /// 获取订单详情数据
    /// - Parameters:
    ///   - orderId: 订单id
    ///   - resultBlock: 返回
    static func requestOrderDetail(orderId: String, resultBlock: @escaping resultShopBlock) {
        let param = NSMutableDictionary()
        param.setValue(orderId, forKey: "id")
        let custom_param = NSMutableDictionary()
        custom_param.setValue(APPId_wjj, forKey: "appId")
        custom_param.setValue(APPKey_wjj, forKey: "appKey")
        CNLiveNetworking.setAllowRequestDefaultArgument(true)
        CNLiveNetworking.setupShowDataResult(false)
        CNLiveNetworking.setupDSRequest(true)
        CNLiveNetworking.setupCustomParam(custom_param as? [String : String])
        CNLiveNetworking.requestNetwork(with: .GET, urlString: APPBaseWjjBUrl+"/api/v1/order", param: param as! [String : String], cacheType: .networkOnly) { task, result, error in
            hiddenLoading()
            if (error == nil) {
                let resp = result as! NSDictionary
                let errorCode = "\(resp["code"] ?? "0")"
                if (errorCode == "200") {
                    if resp["data"] is NSNull {
                        resultBlock(NSNull(),.failed)
                    } else {
                        let model = dictionaryToModel(resp as! [String : Any], ShopOrderDetailModel.self,"data") as! ShopOrderDetailModel
                        var is_send_all: Bool = true
                        for goodsModel in model.order_detail {
                            if Int(goodsModel.send_num!)! > 0 {
                                is_send_all = false
                            }
                        }
                        model.is_send_all = is_send_all
                        resultBlock(model,.success)
                    }
                } else {
                    showMessage(message: resp["message"] as! String)
                    resultBlock(NSNull(),.failed)
                }
            } else {
                if CNLiveNetworking.isNetworking() {
                    showMessage(message: "获取失败")
                    resultBlock(NSNull(),.failed)
                } else {
                    showMessage(message: "似乎与网络断开链接")
                    resultBlock(NSNull(),.noNetwork)
                }
            }
        }
    }
    
}