CNLiveConfigUserInfo.swift 3.26 KB
//
//  CNLiveConfigUserInfo.swift
//  metaCode
//
//  Created by open on 2023/6/6.
//

import Foundation
import UIKit
import HandyJSON

class UserInfoModel: BaseModel {
    
    required init() {}
    
    var appId:String = ""
    var appleUid:String = ""
    var bigFaceUrl:String = ""
    var birthday:String = ""
    var countryCode:String = ""
    var email:String = ""
    var extInfo:String = ""
    var faceUrl:String = ""
    var frmId:String = ""
    var gender:String = ""
    var hUid:String = ""
    var isNewUser:String = ""
    var location:String = ""
    var mobile:String = ""
    var newAccount:String = ""
    var nickName:String = ""
    var platformId:String = ""
    var qqUid:String = ""
    var renrenUid:String = ""
    var sinaUid:String = ""
    var token:String = ""
    var uid:String = ""
    var wxUid:String = ""
    var access_token:String = ""
    var expires_in:String = ""//过期时间
    
    override func mapping(mapper: HelpingMapper) {

        mapper <<<
            self.gender <-- TransformOf(fromJSON: { (rawString) -> String? in
                
                if let _str = rawString {
                    
                    if _str == "m" || _str == "男"  {
                        return "男"
                    }
                    if _str == "f" || _str == "女" {
                        return "女"
                    }
                }
                return "未知"
            }, toJSON: { (srcString) -> String? in
                return srcString
            })
    }
}

class UserInfoManager: NSObject {
    
    static let shared = UserInfoManager()
    
    fileprivate var _userInfo : UserInfoModel?
    private(set) var userInfo: UserInfoModel {
        
        set {
            _userInfo = newValue
        }
        
        get {
            if _userInfo != nil && (_userInfo?.uid.count)! > 0 {
                return _userInfo!
            }
            return UserInfoManager.readUserInfo()
        }
    }
    
    private override init() {}

    /// 缓存用户数据
    /// - Parameter userInfo: 用户数据 存储字符串
    static public func cacheUserInfo(userInfo: UserInfoModel) {
        UserInfoManager.clearUserInfo()
        UserInfoManager.shared._userInfo = userInfo
        //JsonUtil.modelToJson(userInfo)
        UserDefaults.standard.set(userInfo.toJSONString(), forKey: "mateCode_userInfo")
        if UserDefaults.standard.synchronize() {
            print("用户信息存储成功")
        }
    }
    
    /// 读取用户数据
    /// - Returns: 用户数据
    static public func readUserInfo() -> UserInfoModel {
        let user_info = UserDefaults.standard.object(forKey: "mateCode_userInfo")
        if user_info == nil && (user_info as! String).count == 0 {
            print("获取用户信息失败")
            return UserInfoModel()
        }
        let userInfo = JsonUtil.jsonToModel(user_info as! String, UserInfoModel.self) as! UserInfoModel
        UserInfoManager.shared._userInfo = userInfo
        return userInfo
    }
    
    static public func clearUserInfo() {
        UserDefaults.standard.removeObject(forKey: "mateCode_userInfo")
        UserInfoManager.shared._userInfo = nil
        if UserDefaults.standard.synchronize() {
            print("用户信息删除成功")
        }
    }
}