CNBindingManageCell.swift 11.5 KB
//
//  CNBindingManageCell.swift
//  metaCode
//
//  Created by zx on 2024/4/26.
//

import Foundation
import CNLiveShareToolKit
import APButton
import CNLivePayCostModule

typealias FinishBlock = (_ type: CNLiveDownSlideResponseType) -> Void

class CNBindingManageCell:UITableViewCell{
    
    var finishBlock:FinishBlock?
    
    let appleBindBtnSubLayer = "appleBindBtnSubLayer"
    let wxBindBtnSubLayer = "wxBindBtnSubLayer"
    
    var _bindModel:CNBindingManageModel?
    var bindModel:CNBindingManageModel?{
        get{
            _bindModel
        }
        set{
            _bindModel = newValue!
            
            if _bindModel?.title == "手机号"{
                self.totalView.isHidden = false
                self.bindTotalView.isHidden = true
                self.phoneLabel.text = _bindModel?.desc ?? ""
            }else if _bindModel?.title == "微信"{
                self.totalView.isHidden = true
                self.bindTotalView.isHidden = false
                self.iconImgView.image = UIImage(named: "login_wechat")
                self.nickNameLabel.text = "(\(UserInfoManager.shared.userInfo.nickName))"
                if _bindModel?.isBinding == "0"{
                    self.bindButton.isSelected = false
                    let follLayer = self.subLayer(name: appleBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    follLayer?.removeFromSuperlayer()

                    let payLayer = self.subLayer(name: wxBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    if (payLayer != nil){
                        //已添加layer
                    }else{
                        //未添加layer
                        let gradient = CAGradientLayer()
                        gradient.frame = self.bounds
                        gradient.colors = [UIColor(red: 0.4, green: 0.77, blue: 1, alpha: 1).cgColor, UIColor(red: 0.38, green: 0.6, blue: 1, alpha: 1).cgColor]
                        gradient.locations = [0, 1]
                        gradient.startPoint = CGPoint(x: 0.5, y: 0)
                        gradient.endPoint = CGPoint(x: 1, y: 1)
                        gradient.name = wxBindBtnSubLayer
                        self.bindButton.layer.insertSublayer(gradient, at: 0)
                        self.bindButton.backgroundColor = .clear
                    }

                }else{
                    let afollLayer = self.subLayer(name: appleBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    afollLayer?.removeFromSuperlayer()
                    
                    let follLayer = self.subLayer(name: wxBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    follLayer?.removeFromSuperlayer()
                    self.bindButton.isSelected = true
                    self.bindButton.backgroundColor = UIColor(red: 0.92, green: 0.92, blue: 0.92, alpha: 1)
                }
            }else if _bindModel?.title == "苹果"{
                self.totalView.isHidden = true
                self.bindTotalView.isHidden = false
                self.iconImgView.image = UIImage(named: "login_apple_icon")
                self.nickNameLabel.text = "(\(UserInfoManager.shared.userInfo.nickName))"
                if _bindModel?.isBinding == "0"{
                    self.bindButton.isSelected = false
                    let follLayer = self.subLayer(name: wxBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    follLayer?.removeFromSuperlayer()

                    let payLayer = self.subLayer(name: appleBindBtnSubLayer, viewLayer: self.bindButton.layer)

                    if (payLayer != nil){
                        //已添加layer
                    }else{
                        //未添加layer
                        let gradient = CAGradientLayer()
                        gradient.frame = self.bounds
                        gradient.colors = [UIColor(red: 0.4, green: 0.77, blue: 1, alpha: 1).cgColor, UIColor(red: 0.38, green: 0.6, blue: 1, alpha: 1).cgColor]
                        gradient.locations = [0, 1]
                        gradient.startPoint = CGPoint(x: 0.5, y: 0)
                        gradient.endPoint = CGPoint(x: 1, y: 1)
                        gradient.name = appleBindBtnSubLayer
                        self.bindButton.layer.insertSublayer(gradient, at: 0)
                        self.bindButton.backgroundColor = .clear
                    }
                }else{
                    let afollLayer = self.subLayer(name: wxBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    afollLayer?.removeFromSuperlayer()
                    
                    let follLayer = self.subLayer(name: appleBindBtnSubLayer, viewLayer: self.bindButton.layer)
                    follLayer?.removeFromSuperlayer()
                    self.bindButton.isSelected = true
                    self.bindButton.backgroundColor = UIColor(red: 0.92, green: 0.92, blue: 0.92, alpha: 1)
                }
            }
        }
    }
    
    lazy var totalView :UIView = {
        let totalView = UIView(frame: CGRect(x: 15, y: 0, width: KSreenWidth-30, height: 70))
        totalView.backgroundColor = .white
        totalView.layer.cornerRadius = 9
        totalView.layer.masksToBounds = true
        return totalView
    }()

    lazy var changePhoneLabel: UILabel = {
        let titleLabel = UILabel.init(frame: CGRectMake(19, 0, 100, 21))
        titleLabel.centerY = self.centerY
        titleLabel.textColor = HexColor("#333333")
        titleLabel.text = "更换手机号"
        titleLabel.textAlignment = .left
        titleLabel.font = Font_15
        return titleLabel
    }()
    
    lazy var phoneLabel: UILabel = {
        let titleLabel = UILabel.init(frame: CGRectMake(self.totalView.right-130, 0, 100, 21))
        titleLabel.centerY = self.centerY
        titleLabel.textColor = HexColor("#999999")
        titleLabel.text = "130xxxx1123"
        titleLabel.textAlignment = .left
        titleLabel.font = Font_15
        return titleLabel
    }()

    lazy var moreImgView :UIImageView = {
        let moreImgView = UIImageView()
        moreImgView.image = UIImage(named: "mine_set_band_detail")
        return moreImgView
    }()

    //绑定总视图
    lazy var bindTotalView :UIView = {
        let totalView = UIView(frame: CGRect(x: 15, y: 0, width: KSreenWidth-30, height: 70))
        totalView.backgroundColor = .white
        totalView.layer.cornerRadius = 9
        totalView.layer.masksToBounds = true
        return totalView
    }()
    lazy var iconImgView :UIImageView = {
        let moreImgView = UIImageView()
        return moreImgView
    }()
    lazy var nameLabel: UILabel = {
        let titleLabel = UILabel.init()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .left
        titleLabel.font = Font_15
        return titleLabel
    }()
    lazy var nickNameLabel: UILabel = {
        let titleLabel = UILabel.init()
        titleLabel.textColor = HexColor("#999999")
        titleLabel.textAlignment = .left
        titleLabel.font = Font_15
        return titleLabel
    }()
    lazy var bindButton: UIButton = {
        let bindButton = UIButton()
        bindButton.setTitle("未绑定", for: .normal)
        bindButton.setTitle("已绑定", for: .selected)
        bindButton.setTitleColor(.white, for: .normal)
        bindButton.setTitleColor(HexColor("#999999"), for: .selected)
        bindButton.titleLabel?.font = Font_14_Fit
        bindButton.layer.cornerRadius = 15.5
        bindButton.layer.masksToBounds = true
        bindButton.addTarget(self, action: #selector(bindButtonAction), for: .touchUpInside)
        
        return bindButton
    }()

    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.selectionStyle = .none
        self.backgroundColor = .clear
        contentView.backgroundColor = .clear
        self.initUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func initUI(){
        self.contentView.addSubview(self.totalView)
        self.totalView.addSubview(self.changePhoneLabel)
        self.totalView.addSubview(self.phoneLabel)
        self.totalView.addSubview(self.moreImgView)
        
        self.changePhoneLabel.snp.makeConstraints { make in
            make.left.equalToSuperview().offset(19)
            make.centerY.equalToSuperview()
        }
        self.phoneLabel.snp.makeConstraints { make in
            make.right.equalToSuperview().offset(-31)
            make.centerY.equalToSuperview()
        }
        self.moreImgView.snp.makeConstraints { make in
            make.right.equalToSuperview().offset(-15)
            make.width.height.equalTo(15)
            make.centerY.equalToSuperview()
        }
        
        self.contentView.addSubview(self.bindTotalView)
        self.bindTotalView.addSubview(self.iconImgView)
        self.bindTotalView.addSubview(self.nameLabel)
        self.bindTotalView.addSubview(self.nickNameLabel)
        self.bindTotalView.addSubview(self.bindButton)
        self.iconImgView.snp.makeConstraints { make in
            make.left.equalToSuperview().offset(15)
            make.centerY.equalToSuperview()
        }
        self.nameLabel.snp.makeConstraints { make in
            make.left.equalTo(self.iconImgView.snp.right).offset(10)
            make.centerY.equalToSuperview()
        }
        self.nickNameLabel.snp.makeConstraints { make in
            make.left.equalTo(self.nameLabel.snp.right).offset(5)
            make.centerY.equalToSuperview()
        }
        self.bindButton.snp.makeConstraints { make in
            make.right.equalToSuperview().offset(-15)
            make.width.equalTo(80)
            make.height.equalTo(31)
            make.centerY.equalToSuperview()
        }
        
    }
    
    func subLayer(name:String,viewLayer:CALayer) -> CALayer?{
        if let subLayer = viewLayer.sublayers?.first(where: { $0.name == name }) {
            // 这里可以对获取到的子图层进行操作或者访问其属性等
            return subLayer
        } else {
//            print("未找到指定名称的图层")
            return nil
        }
    }
    
    @objc func bindButtonAction(){
        if self.bindButton.isSelected{
            //已绑定
            AlertTool.showSystemAlert(title: "确定解除绑定?", message: "", actionTitles: ["确定","取消"], style: .alert) { index in
                if index == 1 {
                    self.requestBindingManage(model: self.bindModel!)
                }
            }
        }else{
            //未绑定 , 执行绑定操作
            self.requestBindingManage(model: self.bindModel!)
        }
    }
    
    func requestBindingManage(model:CNBindingManageModel){
        if model.type == CNLiveSendAuthRespWX{
            if !WXApi.isWXAppInstalled(){
                showMessage(message: "未安装微信")
            }
        }else if model.type == CNLiveSendAuthRespApple{
            
        }
        if model.isBinding == "1"{
            //解除绑定操作
            CNLiveMineViewModel.requestUnBindingModel(model: self.bindModel!) { result, status in
                if status == .success{
                    self.finishBlock?(.success)
                }
            }
        }else{
            //绑定操作
            CNLiveMineViewModel.requestBindingModel(model: self.bindModel!) { result, status in
                if status == .success{
                    self.finishBlock?(.success)
                }
            }
        }
    }
}