CNLiveDigitalResumePreViewFirCell.swift 14.3 KB
//
//  CNLiveDigitalResumePreViewFirCell.swift
//  metaCode
//
//  Created by zx on 2024/8/7.
//  数字简历-fir 实名cell

import Foundation
import Kingfisher
import SnapKit

class CNLiveDigitalResumePreViewFirCell: UITableViewCell {
    
    var updateViateDataBlock:UpdateViateDataBlock?

    //简历Model
    var _vitaeModel : CNLiveVitaeModel?
    var vitaeModel : CNLiveVitaeModel? {
        get{
            _vitaeModel
        }
        set{
            _vitaeModel = newValue!
            setupNewUI(model: _vitaeModel!)
        }
    }
    
    lazy var whiteBgView :UIView = {
        let whiteView = UIView(frame: CGRect(x: 15, y:51, width: KSreenWidth-30, height: 177))
        whiteView.backgroundColor = .white
        whiteView.layer.cornerRadius = 12
        whiteView.clipsToBounds = true
        return whiteView
    }()
    lazy var updateTimeTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#C2D7FF")
        titleLabel.textAlignment = .left
        titleLabel.text = "最后更新时间:2024.09.12  12:34"
        titleLabel.font = Font_13
        titleLabel.adjustsFontSizeToFitWidth = true
        return titleLabel
    }()
    lazy var jianliIconBgView :UIView = {
        let whiteBgView = UIView()
        whiteBgView.backgroundColor = .white
        whiteBgView.layer.cornerRadius = 12
        whiteBgView.clipsToBounds = true
        return whiteBgView
    }()
    lazy var jianliIconImgView :UIImageView = {
        let iconImgView = UIImageView()
        iconImgView.image = UIImage(named: "mine_jianli_icon")
        iconImgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(jianliIconAction)))
        iconImgView.isUserInteractionEnabled = true
        iconImgView.contentMode = .scaleAspectFit
        return iconImgView
    }()
    //名字
    lazy var authNameTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .center
        titleLabel.text = ""
        titleLabel.font = BoldFont_24
        return titleLabel
    }()
    lazy var changePersonBtn: UIButton = {
        let  closeBtn = UIButton(type: .custom)
        closeBtn.backgroundColor = HexColor("#FFF8DB")
        closeBtn.layer.cornerRadius = 3
        closeBtn.clipsToBounds = true
        closeBtn.setTitle("实名对象切换 ▶", for: .normal)
        closeBtn.setTitleColor(HexColor("#F2A62E"), for: .normal)
        closeBtn.titleLabel?.font = Font_12
        closeBtn.addTarget(self, action: #selector(changePersonBtnAction), for: .touchUpInside)
        return closeBtn
    }()
    lazy var phoneTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#999999")
        titleLabel.textAlignment = .left
        titleLabel.text = "男 | xx岁 | 10000000000"
        titleLabel.font = Font_14
        return titleLabel
    }()
    lazy var weizhiTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#999999")
        titleLabel.textAlignment = .left
        titleLabel.text = " | 位置未授权"
        titleLabel.font = Font_14
        return titleLabel
    }()
    lazy var workTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#999999")
        titleLabel.textAlignment = .left
        titleLabel.text = "参加工作时间未设置  >"
        titleLabel.font = Font_14
        return titleLabel
    }()
    //性别 年龄 手机号 位置 工作年限整体的点击tap
    lazy var phoneWorkTapView :UIView = {
        let bottomNavView = UIView()
        bottomNavView.backgroundColor = .clear
        bottomNavView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(workTitleLabelAciton)))
        return bottomNavView
    }()
    
    lazy var lineView :UIView = {
        let bottomNavView = UIView()
        bottomNavView.backgroundColor = HexColor("#EBEBEB")
        return bottomNavView
    }()
    lazy var hangyeTitleLabel: UILabel = {
        let titleLabel = UILabel()
        titleLabel.textColor = HexColor("#333333")
        titleLabel.textAlignment = .left
        titleLabel.text = "行业"
        titleLabel.font = BoldFont_14
        return titleLabel
    }()
    lazy var hangyeImgView :UIImageView = {
        let iconImgView = UIImageView()
        iconImgView.image = UIImage(named: "mine_jianli_zhenshi")
        return iconImgView
    }()
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.contentView.backgroundColor = .clear
        self.backgroundColor = .clear
        self.selectionStyle = .none
        
        self.contentView.addSubview(self.whiteBgView)
        self.whiteBgView.snp.makeConstraints { make in
            make.top.equalTo(51)
            make.bottom.equalToSuperview()
            make.left.equalTo(15)
            make.right.equalToSuperview().offset(-15)
        }
        self.contentView.addSubview(self.jianliIconBgView)
        self.jianliIconBgView.snp.makeConstraints { make in
            make.top.equalTo(21)
            make.right.equalToSuperview().offset(adapt_length(length: -42))
            make.width.height.equalTo(90)
        }
        self.jianliIconBgView.addSubview(self.jianliIconImgView)
        self.jianliIconImgView.snp.makeConstraints { make in
            make.width.height.equalTo(70)
            make.center.equalToSuperview()
        }
        self.contentView.addSubview(self.updateTimeTitleLabel)
        self.updateTimeTitleLabel.snp.makeConstraints { make in
            make.top.equalTo(20)
            make.left.equalTo(15)
            make.right.equalTo(self.jianliIconBgView.snp.left).offset(-5)
        }
        
        self.whiteBgView.addSubview(self.authNameTitleLabel)
        self.authNameTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(adapt_length(length: 15))
            make.top.equalTo(20)
        }
        self.authNameTitleLabel.text = UserInfoManager.shared.userInfo.currentUser?.name
        
        self.whiteBgView.addSubview(self.changePersonBtn)
        self.changePersonBtn.snp.makeConstraints { make in
            make.left.equalTo(self.authNameTitleLabel.snp.right).offset(5)
            make.centerY.equalTo(self.authNameTitleLabel.snp.centerY)
            make.width.equalTo(91)
            make.height.equalTo(21)
        }

        self.whiteBgView.addSubview(self.phoneTitleLabel)
        let (gender, age) = self.extractGenderAndAge(fromIDCardNumber: UserInfoManager.shared.userInfo.currentUser?.idNo ?? "")
        let ageStr = String(format: "%d", age ?? 0)
        self.phoneTitleLabel.text = gender+" | "+ageStr+"岁"+" | "+UserInfoManager.shared.userInfo.mobile
        self.phoneTitleLabel.sizeToFit()
        self.phoneTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(adapt_length(length: 15))
            make.top.equalTo(self.authNameTitleLabel.snp.bottom).offset(8)
            make.width.equalTo(self.phoneTitleLabel.size.width)
            make.height.equalTo(self.phoneTitleLabel.size.height)
        }
        
        self.whiteBgView.addSubview(self.weizhiTitleLabel)
        self.weizhiTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(self.phoneTitleLabel.snp.right)
            make.right.equalToSuperview().offset(-5)
            make.top.equalTo(self.phoneTitleLabel.snp.top)
        }
        self.whiteBgView.addSubview(self.workTitleLabel)
        self.workTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(adapt_length(length: 15))
            make.top.equalTo(self.phoneTitleLabel.snp.bottom).offset(4)
        }
        self.whiteBgView.addSubview(self.phoneWorkTapView)
        self.phoneWorkTapView.snp.makeConstraints { make in
            make.left.equalTo(self.phoneTitleLabel.snp.left)
            make.top.equalTo(self.phoneTitleLabel.snp.top)
            make.bottom.equalTo(self.workTitleLabel.snp.bottom)
            make.right.equalTo(self.weizhiTitleLabel.snp.right)

        }
        
        
        self.whiteBgView.addSubview(self.lineView)
        self.lineView.snp.makeConstraints { make in
            make.left.equalTo(adapt_length(length: 15))
            make.right.equalToSuperview().offset(adapt_length(length: -15))
            make.top.equalTo(self.workTitleLabel.snp.bottom).offset(15)
            make.height.equalTo(0.5)
        }

        self.whiteBgView.addSubview(self.hangyeTitleLabel)
        self.hangyeTitleLabel.snp.makeConstraints { make in
            make.left.equalTo(adapt_length(length: 15))
            make.top.equalTo(self.lineView.snp.bottom).offset(20)
        }
        self.whiteBgView.addSubview(self.hangyeImgView)
        self.hangyeImgView.snp.makeConstraints { make in
            make.left.equalTo(self.hangyeTitleLabel.snp.right).offset(5)
            make.centerY.equalTo(self.hangyeTitleLabel.snp.centerY)
            make.width.equalTo(83)
            make.height.equalTo(16)
        }


    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func setupNewUI(model:CNLiveVitaeModel){
        let updateDateString = convertTimestampStringToDateString(timestampString: model.vitae?.updateTime ?? "")
        self.updateTimeTitleLabel.text = "最后更新时间:\(updateDateString ?? "")"
        self.jianliIconImgView.kf.setImage(with: URL(string: model.vitae?.icon ?? ""), placeholder: UIImage(named: "mine_jianli_icon"))
        let name = UserInfoManager.shared.userInfo.currentUser?.name ?? ""
        self.authNameTitleLabel.text = name
        let idNo = UserInfoManager.shared.userInfo.currentUser?.idNo ?? ""
        let (gender, age) = self.extractGenderAndAge(fromIDCardNumber: idNo)
        let ageStr = String(format: "%d", age ?? 0)
        self.phoneTitleLabel.text = gender+" | "+ageStr+"岁"+" | "+UserInfoManager.shared.userInfo.mobile

        if model.vitae?.profession.count ?? 0 > 0{
            self.hangyeTitleLabel.text = model.vitae?.profession
        }
        if model.vitae?.city.count ?? 0 > 0 && model.vitae?.showAddress == true{
            self.weizhiTitleLabel.text = " | "+model.vitae!.city
        }else{
            self.weizhiTitleLabel.text = " | 位置未授权"
        }
        if model.vitae?.workTime.count ?? 0 > 0{
            self.workTitleLabel.text = model.vitae!.workTime
        }else{
            self.workTitleLabel.text = "参加工作时间未设置  >"
        }

    }
    
    func convertTimestampStringToDateString(timestampString: String) -> String? {
        // 首先,将毫秒时间戳字符串转换为TimeInterval(秒)
        guard let timestampMilliseconds = Double(timestampString) else {
            return nil
        }
        let timestampSeconds = timestampMilliseconds / 1000.0
          
        // 然后,将TimeInterval转换为Date对象
        let date = Date(timeIntervalSince1970: timestampSeconds)
          
        // 接着,设置DateFormatter的格式
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy.MM.dd HH:mm" // 设置为你想要的日期格式
          
        // 最后,使用DateFormatter将Date对象格式化为字符串
        return formatter.string(from: date)
    }

    //身份证号提取 性别和年龄
    func extractGenderAndAge(fromIDCardNumber idCardNumber: String) -> (gender: String, age: Int?) {
        guard idCardNumber.count == 18 else {
            return ("未知", nil)
        }
          
        // 提取出生年份(身份证号码的第7位到第14位)
        let birthYearStr = idCardNumber.subString(start: 6, length: 4)
        guard let birthYear = Int(birthYearStr) else {
            return ("未知", nil)
        }
          
        // 计算年龄
        let currentYear = Calendar.current.component(.year, from: Date())
        let age = currentYear - birthYear
          
        // 提取性别(身份证号码的第17位,奇数代表男,偶数代表女)
        let genderCode = Int(String(idCardNumber[idCardNumber.index(idCardNumber.startIndex, offsetBy: 16)]))
        let gender = genderCode != nil && genderCode! % 2 == 0 ? "女" : "男"
          
        return (gender, age >= 0 ? age : nil)
    }

    
    // MARK: - buttonAction
    @objc func jianliIconAction(){
        //换简历头像
        let vc = CNLiveMineInfoViewController.init(mineIconType: .mineViateIcon,viateIconUrl: self.vitaeModel?.vitae?.icon ?? "", result: { image in
            self.jianliIconImgView.image = image
            self.updateViateDataBlock?()
        })
        navigationViewController().pushViewController(vc, animated: true)
    }
    //切换实名身份
    @objc func changePersonBtnAction(){
        var infoArr = Array<String>()
        UserInfoManager.shared.userInfo.userMsgUsers?.verifyUsers.forEach({ userMdl in
            infoArr.append(userMdl.name)
        })
        MineStandListAlertView.showStandListView(infos: infoArr as NSArray,name: "实名对象切换", show_type: .string, isAddPerson: true) {text in
            let seleText = text as? String
            let tempArr = UserInfoManager.shared.userInfo.userMsgUsers?.verifyUsers
            if tempArr?.count == 0{
                return
            }
            tempArr?.forEach({ userMdl in
                if userMdl.name == seleText{
                    let userInfo = UserInfoManager.shared.userInfo
                    userInfo.currentUser = userMdl
                    UserInfoManager.cacheUserInfo(userInfo: userInfo)
                    
                    CNLiveMineViewModel.requestsGETAuthInfoList(page: 1) { result, respStatue in
                        self.updateViateDataBlock?()
                    }
                    self.authNameTitleLabel.text = userMdl.name
                    
                    let (gender, age) = self.extractGenderAndAge(fromIDCardNumber: UserInfoManager.shared.userInfo.currentUser?.idNo ?? "")
                    let ageStr = String(format: "%d", age ?? 0)
                    self.phoneTitleLabel.text = gender+" | "+ageStr+"岁"+" | "+UserInfoManager.shared.userInfo.mobile
                }
            })
        }
    }
    @objc func workTitleLabelAciton(){
        let vc = CNLiveDigitalResumeInfoController()
        currentViewController()?.navigationController?.pushViewController(vc, animated: true)
    }

        
}