younger_times
2023-07-12 5a590aaf3fd9ed5f9cfd2d54e72c904ce4918e7f
WanPai/Root/Course/VC/CourseDetailApplyVC.swift
@@ -15,20 +15,58 @@
    @IBOutlet weak var cons_collectHei: NSLayoutConstraint!
    @IBOutlet weak var btn_addStudent: QMUIButton!
    @IBOutlet weak var tableView: UITableView!
    @IBOutlet weak var cons_collHei: NSLayoutConstraint!
    @IBOutlet weak var cons_tableHei: NSLayoutConstraint!
    @IBOutlet weak var btn_coupon: TapBtn!
    
    @IBOutlet weak var img_cover: UIImageView!
    @IBOutlet weak var label_title: UILabel!
    @IBOutlet weak var label_listenWeek: UILabel!
    @IBOutlet weak var label_listenTime: UILabel!
    @IBOutlet weak var label_store: UILabel!
    @IBOutlet weak var label_address: UILabel!
    @IBOutlet weak var label_price: UILabel!
    @IBOutlet weak var label_originPrice: UILabel!
    @IBOutlet weak var label_vipPrice: UILabel!
    @IBOutlet weak var label_coin: UILabel!
    @IBOutlet weak var btn_hasCoupon: TapBtn!
    @IBOutlet weak var studentTableView: UITableView!
    var CellW:Double!
    var CellH:Double!
    private var detailModel:CourseDetailModel?
    private var selectClassIndex:Int = 0
    private var CellW:Double!
    private var CellH:Double!
    private var studentModels = [CourseDetailStudentModel]()
    private var couponModels = [CouponInfoModel]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        title = "课程详情"
        if let m = detailModel{
            img_cover.sd_setImage(with: URL(string: m.coverDrawing))
            label_title.text = m.name
            label_listenWeek.text = m.weeks.joined(separator: "、")
            label_listenTime.text = m.times
            label_store.text = m.storeName
            label_address.text = m.storeAddress
            changePrice(selectClassIndex)
            if let stu = m.student{studentModels.append(stu)}
            cons_collHei.constant = ceil(Double(m.list.count) / 3.0) * CellH + floor(Double(m.list.count) / 3.0) * 21.0
            collectionView.reloadData()
            cons_tableHei.constant = CGFloat(studentModels.count * 87)
            tableView.reloadData()
        }
    }
    
    override func setUI() {
        
        btn_hasCoupon.isHidden = true
        CellW = (JQ_ScreenW - 155) / 3.0
        CellH = CellW * 0.439
        
@@ -45,7 +83,21 @@
        btn_addStudent.spacingBetweenImageAndTitle = 3
    }
    
    init(detailModel:CourseDetailModel) {
        super.init(nibName: nil, bundle: nil)
        self.detailModel = detailModel
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    @IBAction func couponAction(_ sender: TapBtn) {
        guard couponModels.count != 0 else {
            alertError(msg: "暂无优惠券");return
        }
        CouponChooseView.show()
    }
    
@@ -56,7 +108,6 @@
            let vc = AddStudentVC()
            self?.push(vc: vc)
        }
    }
    
    @IBAction func paymentAction(_ sender: UIButton) {
@@ -67,21 +118,85 @@
            self.present(vc, animated: true)
        }
    }
    private func changePrice(_ index:Int){
        if let subM = detailModel?.list[index]{
            label_price.text = subM.paymentPrice.currency()
            label_originPrice.isHidden = subM.originalPrice == nil
            label_coin.isHidden = subM.playPaiCoin == nil
            label_vipPrice.isHidden = subM.vipPrice == nil
                //原价
            if let originPrice =  subM.originalPrice{
                let attribute = AttributedStringbuilder.build().add(string: originPrice.currency(), withFont: UIFont.systemFont(ofSize: 16, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F").withAlphaComponent(0.58)).underLine(color: UIColor(hexStr: "#3F3F3F").withAlphaComponent(0.58))
                label_originPrice.attributedText = attribute.mutableAttributedString
            }
                //玩湃币
            if let paiCoin = subM.playPaiCoin{
                let coinAttribute = AttributedStringbuilder.build()
                    .add(string: "玩湃币:", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F"))
                    .add(string: "\(paiCoin)币", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#F21313"))
                label_coin.attributedText = coinAttribute.mutableAttributedString
            }
                //会员价
            if let vipPrice = subM.vipPrice{
                let vipAttribute = AttributedStringbuilder.build()
                    .add(string: "会员价:", withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#3F3F3F"))
                    .add(string: vipPrice.currency(), withFont: UIFont.systemFont(ofSize: 14, weight: .semibold), withColor: UIColor(hexStr: "#F21313"))
                label_vipPrice.attributedText = vipAttribute.mutableAttributedString
            }
        }
        queryCouponInfo()
    }
    private func queryCouponInfo(){
        if let subM = detailModel?.list[selectClassIndex]{
            var price:Double?
            switch subM.payType{
                case .cash:
                    price = subM.originalPrice == nil ? subM.vipPrice : subM.originalPrice
                case .coin:
                    if let coin = subM.playPaiCoin{price = Double(coin)}
            }
            guard price != nil else {
                LogError("会员优惠价格出现问题:nil");return
            }
            Services.queryAvaiableCopons(id: subM.id, price: price!).subscribe(onNext: { [weak self] data in
                self?.btn_hasCoupon.isHidden = (data.data?.count ?? 0) == 0
                self?.couponModels = data.data ?? []
            }).disposed(by: disposeBag)
        }
    }
}
extension CourseDetailApplyVC:UICollectionViewDelegate{
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        selectClassIndex = indexPath.row
        collectionView.reloadData()
        changePrice(selectClassIndex)
    }
}
extension CourseDetailApplyVC:UICollectionViewDataSource{
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let m = detailModel!.list[indexPath.row]
       let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_Common_1_CCell", for: indexPath) as! Common_1_CCell
        cell.isSelected = indexPath.row == selectClassIndex
        cell.courseDetailListModel = m
        
        return cell
    }
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 3
        return detailModel?.list.count ?? 0
    }
}
@@ -102,12 +217,12 @@
extension CourseDetailApplyVC:UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
        return studentModels.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfoTCell") as! StudentInfoTCell
        cell.studentModel = studentModels[indexPath.row]
        return cell
    }