CNHomePageViewModel.swift 2.56 KB
//
//  CNLiveHomePageViewModel.swift
//  metaCode
//
//  Created by daojian on 2023/7/3.
//

import Foundation
import CNLiveRequestBastKit

///请求响应回调
typealias responseBlock = (_ listArray:Array<CNLiveIdentityModel>, _ responseType:CNLiveNetworkingResponseType, _ errorMsg:String) -> Void

class CNLiveHomePageViewModel:NSObject {
    
    /// 获取身份列表
    class func getUserIdentityApi(resultBlock:@escaping responseBlock){
        
        //先从本地获取,本地有直接返回
        let db = CNLiveIdentityDB()
        let allDbArray = db.searchAllObject()
        if(allDbArray.count > 0){
            resultBlock(allDbArray,.success,"")
            return
        }
        
        //从网络获取
        CNLiveNetworking.setAllowRequestDefaultArgument(false)
        CNLiveNetworking.setupShowDataResult(false)
        CNLiveNetworking.requestNetwork(with: .GET, urlString: "\(APPBaseMCUrl)/identityApi/list?sid=\(UserInfoManager.shared.userInfo.uid)&page=1&pageSize=1000", param: nil, cacheType: .networkOnly) { task , result, error in
            
            if((error) != nil){
                //网络请求失败
                if CNLiveNetworking.isNetworking(){
                    resultBlock([],.failed,error?.localizedDescription ?? "请求失败")
                }else{
                    resultBlock([],.noNetwork,"无网络连接")
                }
                return
            }
            
            let resultDic:NSDictionary = result as! NSDictionary
            
            let errorCode:String = "\(resultDic["errorCode"]!)"
            if (errorCode == "0"){
                let data:NSDictionary =  resultDic["data"] as! NSDictionary
                let list:NSArray      = data["list"] as! NSArray
                
                //list数据转CNLiveIdentityModel, 并把model存入本地
                
                var array:Array = Array<CNLiveIdentityModel>()
                for index in 0..<list.count{
                    let item = dictionaryToModel(list[index] as! [String : Any], CNLiveIdentityModel.self, "")
                    array.append(item as! CNLiveIdentityModel)
                    //存入数据库
                    db.insterObject(object: item as! CNLiveIdentityModel)
                }
                resultBlock(array,.success,"")
            }
            else{
                let errorMessage:String = resultDic["errorMessage"] as! String
                showMessage(message: errorMessage)
                resultBlock([],.failed,errorMessage)
            }
            
        }
        
    }
    
    
}