CNLiveShopOrderDetailViewController.swift 11.4 KB
//
//  CNLiveShopOrderDetailViewController.swift
//  metaCode
//
//  Created by open on 2023/11/1.
//

import Foundation
import EmptyDataSet_Swift
enum CNLiveShopOrderDetailShowType {
    case order //订单详情
    case sale //订单售后
}

class CNLiveShopOrderDetailViewController: CNLiveBaseViewController, EmptyDataSetSource, EmptyDataSetDelegate, UITableViewDelegate, UITableViewDataSource{
    
    let kShopBodyOrderDetailOneViewCellIdentifier = "kShopBodyOrderDetailOneViewCellIdentifier"
    let kShopBodyOrderDetailTwoViewCellIdentifier = "kShopBodyOrderDetailTwoViewCellIdentifier"
    let kShopBodyOrderDetailThreeViewCellIdentifier = "kShopBodyOrderDetailThreeViewCellIdentifier"
    let kShopBodyOrderDetailHeaderViewCellIdentifier = "kShopBodyOrderDetailHeaderViewCellIdentifier"
    let kShopBodyOrderDetailFooterViewCellIdentifier = "kShopBodyOrderDetailFooterViewCellIdentifier"
    lazy var tableView : UITableView = {
        let tableView = UITableView(frame: .zero, style: .grouped)
        tableView.dataSource = self
        tableView.delegate = self
        tableView.emptyDataSetSource = self
        tableView.emptyDataSetDelegate = self
        tableView.backgroundColor = .clear
        tableView.tableFooterView = UIView.init()
        tableView.separatorStyle = .none
        tableView.register(ShopBodyOrderDetailOneTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailOneViewCellIdentifier)
        tableView.register(ShopBodyOrderDetailTwoTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailTwoViewCellIdentifier)
        tableView.register(ShopBodyOrderDetailThreeTableViewCell.self, forCellReuseIdentifier: kShopBodyOrderDetailThreeViewCellIdentifier)
        tableView.tableHeaderView = headerView
        return tableView
    }()
    
    lazy var headerView: ShopBodyOrderDetailHeaderView = {
        let headerView = ShopBodyOrderDetailHeaderView.init(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: 50))
        headerView.backgroundColor = .white
        return headerView
    }()
    
    lazy var dataArray: NSMutableArray = {
        let dataArray = NSMutableArray.init()
        return dataArray
    }()
    
    lazy var headerArray: NSMutableArray = {
        let headerArray = NSMutableArray.init()
        return headerArray
    }()
    
    lazy var footerArray: NSMutableArray = {
        let footerArray = NSMutableArray.init()
        return footerArray
    }()
    
    var _orderId: String
    var detailModel: ShopOrderDetailModel!
    var network_type: CNLiveMineResponseType!
    var _show_type: CNLiveShopOrderDetailShowType!
    init(orderId: String, show_type:CNLiveShopOrderDetailShowType) {
        _orderId = orderId
        _show_type = show_type
        super.init(nibName:nil, bundle:nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        navigationBarHidden = false
        titleName = "订单详情"
        
        loadDataSourceAction()
        
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.top.equalTo(KNavigationHeight)
            make.left.right.equalToSuperview()
            make.bottom.equalToSuperview().offset(-KTabBarHeight)
        }
    }
    
    func loadDataSourceAction() {
        CNLiveShopViewModel.requestOrderDetail(orderId: _orderId) { [weak self] result, respStatue in
            if respStatue == .success {
                self!.detailModel = result as? ShopOrderDetailModel
                self!.dataArray.addObjects(from: (self?.detailModel.order_detail)!)
                self!.tableView.reloadData()
                self!.tidyHeaderDataSource()
            }else if (respStatue == .noNetwork) {
                self!.network_type = .noNetwork
                self!.tableView.reloadEmptyDataSet()
            } else {
                self!.network_type = .failed
                self!.tableView.reloadEmptyDataSet()
            }
        }
    }
}

extension CNLiveShopOrderDetailViewController {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 2
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if section == 0 {
            return headerArray.count
        }
        return self.dataArray.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: kShopBodyOrderDetailTwoViewCellIdentifier) as? ShopBodyOrderDetailTwoTableViewCell else {
            return ShopBodyOrderDetailTwoTableViewCell()
        }
        var isHiddenLine: Bool = false
        if indexPath.row == dataArray.count - 1 {
            isHiddenLine = true
        }
        let goodsModel = dataArray[indexPath.row] as! ShopOrderListGoodsModel
        cell.setupDataSource(goodsModel: goodsModel, isHiddenLine: isHiddenLine, isRefund: false, isState: (self.detailModel.state == "3"))
        return cell
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 110
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 0.01
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return UIView.init()
    }
    func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 10
    }
    func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        let view = UIView.init(frame: CGRect(x: 0, y: 0, width: KSreenWidth, height: 10))
        view.backgroundColor = HexColor("#F6F6F6")
        return view
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    }
}

extension CNLiveShopOrderDetailViewController {
    
    func image(forEmptyDataSet scrollView: UIScrollView) -> UIImage? {
        if network_type == .failed  || network_type == .unkonw {
            return UIImage(named: "mine_list_source_unusual_failed")
        }
        if dataArray.count == 0 {
            return UIImage(named: "mine_list_source_unusual_empty")
        }
        if network_type == .noNetwork {
            return UIImage(named: "mine_list_source_unusual_noNet")
        }
        return UIImage(named: "mine_list_source_unusual_empty")
    }
    
    func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
        var defult_string = ""
        if network_type == .failed  || network_type == .unkonw {
            defult_string = "接口请求错误,刷新试试~"
        }
        if network_type == .noNetwork {
            defult_string = "网络开小差了,刷新试试~"
        }
        if dataArray.count == 0 {
            defult_string = "暂时没有数据~"
        }
        return NSAttributedString(string: defult_string, attributes: [.font: Font_17,.foregroundColor: HexColor("#666666")!])
    }
    
    func buttonTitle(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> NSAttributedString? {
        if network_type == .failed || network_type == .noNetwork {
            let attributes = [NSAttributedString.Key.font:Font_16_Fit,
                              NSAttributedString.Key.foregroundColor: HexColor("#609BFF")]
            return NSAttributedString(string: "刷一刷", attributes: attributes as [NSAttributedString.Key : Any])
        }
        return nil
    }
    
    func emptyDataSet(_ scrollView: UIScrollView, didTapView view: UIView) {
        if network_type == .failed || network_type == .noNetwork  {
            loadDataSourceAction()
        }
    }
}

extension CNLiveShopOrderDetailViewController {
    /// 对头视图数据进行整理
    private func tidyHeaderDataSource() {
        var back_image = ""
        var icon_image = ""
        var userTitle = ""
        var userMessage = ""
        var statues = ""
        var isNoUser = false
        var deliveryMessage = ""
        if detailModel.state == "1" {
            statues = "等待买家付款"
            back_image = "DS_order_daifukuan"
            icon_image = "DS_order_money"
        }
        if detailModel.state == "2" {
            if detailModel.delivery == "2" {
                statues = "卖家备货中"
            } else {
                statues = "等待卖家发货"
            }
            back_image = "DS_order_daifahuo"
            icon_image = "DS_order_timer"
        }
        if detailModel.state == "3" {
            if detailModel.delivery == "2" {
                statues = "备货完毕"
                back_image = "DS_order_yifahuo"
                icon_image = "DS_order_money"
            } else {
                if detailModel.is_send_all {
                    statues = ""
                    back_image = "DS_order_bufen_fahuo"
                    icon_image = ""
                } else {
                    statues = "卖家已发货"
                    back_image = "DS_order_yifahuo"
                    icon_image = "DS_order_timer"
                }
            }
        }
        if detailModel.state == "4" {
            if detailModel.delivery == "2" {
                statues = "自取完毕"
            } else {
                statues = "确认送达"
            }
            back_image = "DS_order_yiwancheng"
            icon_image = "DS_order_money"
        }
        if detailModel.state == "5" {
            statues = "已取消"
            back_image = "DS_order_yiwancheng"
            icon_image = "DS_order_close"
        }
        if detailModel.state == "6" {
            statues = "已退款"
            back_image = "DS_order_yiwancheng"
            icon_image = "DS_order_close"
        }
        if detailModel.delivery == "2" {
            isNoUser = false
            deliveryMessage = "自取"
            userTitle = "联系电话"
            userMessage = detailModel.user_phone ?? ""
        } else {
            deliveryMessage = "物流配送"
            userTitle = "\(detailModel.address_name ?? "") \(detailModel.address_phone ?? "")"
            userMessage = detailModel.address_address ?? ""
            if detailModel.state == "4" {
                deliveryMessage = "已签收"
            }
            if detailModel.state == "4" {
                deliveryMessage = "已取消"
            }
            if detailModel.state == "4" {
                deliveryMessage = "已退款"
            }
            isNoUser = !detailModel.address_name!.isNotBlank() || !detailModel.address_name!.isNotBlank()
        }
        let dict01 = ["title":"下单时间:\(detailModel.orderid ?? "")","desc":"订单编号:\(detailModel.addtime ?? "")","phone":""]
        let dict02 = ["title":"配送信息","desc":deliveryMessage,"phone":""]
        let dict03 = ["title":userTitle,"desc":userMessage,"phone":""]
        if isNoUser {
            headerArray.add(dict01)
        } else {
            headerArray.add(dict01)
            headerArray.add(dict02)
            headerArray.add(dict03)
        }
        if detailModel.content!.isNotBlank() {
            headerArray.add(["name":"备注信息","desc":detailModel.content,"phone":""])
        }
        headerView.setupDataSource(dict: ["statues":statues,"back_image":back_image,"icon_image":icon_image])
    }
    
    /// 对尾视图数据进行整理
    private func tidyFooterDataSource() {
        
    }
}