//
|
// ActivityDetailApplyVC.swift
|
// WanPai
|
//
|
// Created by 杨锴 on 2023/6/13.
|
//
|
|
import UIKit
|
import QMUIKit
|
import SDWebImage
|
import JQTools
|
|
class ActivityDetailApplyVC: BaseVC {
|
|
|
@IBOutlet weak var view_banner: UIView!
|
@IBOutlet weak var label_storeNames: UILabel!
|
@IBOutlet weak var label_title: UILabel!
|
@IBOutlet weak var label_joinCondition: UILabel!
|
@IBOutlet weak var label_address: UILabel!
|
@IBOutlet weak var label_duetime: UILabel!
|
@IBOutlet weak var label_starttime: UILabel!
|
@IBOutlet weak var label_endtime: UILabel!
|
@IBOutlet weak var label_ageScope: UILabel!
|
@IBOutlet weak var label_city: UILabel!
|
@IBOutlet weak var label_money: UILabel!
|
@IBOutlet weak var label_coin: UILabel!
|
@IBOutlet weak var label_courseNum: UILabel!
|
@IBOutlet weak var label_introducion: UILabel!
|
@IBOutlet weak var btn_enroll: UIButton!
|
@IBOutlet weak var tableView: UITableView!
|
@IBOutlet weak var btn_addStudent: QMUIButton!
|
@IBOutlet weak var cons_tableHei: NSLayoutConstraint!
|
@IBOutlet weak var label_matchStore: UILabel!
|
@IBOutlet weak var btn_moreMatchStore: UIButton!
|
|
@IBOutlet weak var view_money: UIView!
|
@IBOutlet weak var view_coin: UIView!
|
@IBOutlet weak var view_courseNum: UIView!
|
|
private lazy var bannerView:CommonBannerView = {
|
let v = CommonBannerView()
|
return v
|
}()
|
|
var activityDetailModel:ActivityDetailModel!
|
private var students = [ActivityDetailPartModel]()
|
|
required init(model:ActivityDetailModel) {
|
super.init(nibName: nil, bundle: nil)
|
self.activityDetailModel = model
|
}
|
|
required init?(coder: NSCoder) {
|
fatalError("init(coder:) has not been implemented")
|
}
|
|
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
title = "活动详情"
|
|
label_storeNames.text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",")
|
btn_moreMatchStore.isHidden = (label_storeNames.text?.count ?? 0) < 50
|
|
label_title.text = activityDetailModel.name
|
label_joinCondition.text = activityDetailModel.registerCondition.strTitle + "参与"
|
label_address.text = activityDetailModel.address
|
label_duetime.text = activityDetailModel.registerEndTime
|
label_starttime.text = activityDetailModel.startTime
|
label_endtime.text = activityDetailModel.endTime
|
label_ageScope.text = activityDetailModel.age + "岁"
|
label_introducion.text = activityDetailModel.introduction
|
label_city.isHidden = activityDetailModel.province.isEmpty || activityDetailModel.city.isEmpty
|
label_city.text = activityDetailModel.province + "|" + activityDetailModel.city
|
label_money.text = String(format: "%@/人", activityDetailModel.cashPrice.currency())
|
label_coin.text = String(format: "%ld币/人", activityDetailModel.playPaiCoin)
|
label_courseNum.text = String(format: "%ld课时/人", activityDetailModel.classPrice)
|
|
view_money.isHidden = activityDetailModel.cashPrice == 0
|
view_courseNum.isHidden = activityDetailModel.classPrice == 0
|
view_coin.isHidden = activityDetailModel.playPaiCoin == 0
|
|
students.append(contentsOf: activityDetailModel.participant)
|
cons_tableHei.constant = Double(students.count) * 100
|
tableView.reloadData()
|
|
let imgs = activityDetailModel.imgs.components(separatedBy: ",")
|
var items = [CommonBannerModel]()
|
for (index,img) in imgs.enumerated(){
|
items.append(CommonBannerModel(index: index,resource: img,mediaType: .imageUrl))
|
}
|
bannerView.setItems(items: items)
|
}
|
|
override func setUI() {
|
btn_addStudent.imagePosition = .right
|
btn_addStudent.spacingBetweenImageAndTitle = 4
|
tableView.delegate = self
|
tableView.dataSource = self
|
tableView.separatorStyle = .none
|
tableView.register(UINib(nibName: "StudentInfo_2_TCell", bundle: nil), forCellReuseIdentifier: "_StudentInfo_2_TCell")
|
|
view_banner.addSubview(bannerView)
|
bannerView.frame = CGRect(x: 0, y: 0, width: JQ_ScreenW, height: JQ_ScreenW * 0.56)
|
|
let moreBtnAttributeding = AttributedStringbuilder.build().add(string: "查看更多", withFont: UIFont.systemFont(ofSize: 12, weight: .medium), withColor: Def_ThemeColor).underLine(color: Def_ThemeColor).mutableAttributedString
|
btn_moreMatchStore.setAttributedTitle(moreBtnAttributeding, for: .normal)
|
}
|
|
@IBAction func matchStoreAction(_ sender: UIButton) {
|
let text = activityDetailModel.storeInfos.map({$0.name}).joined(separator: ",")
|
AgreentView.show(type: .matchStore, content: text)
|
}
|
|
@IBAction func addStudentAction(_ sender: QMUIButton) {
|
StudentChooseView.show(itemType: .activity, defaultStu: students,isAuth: activityDetailModel.isReal) { [weak self] studs in
|
self?.students = studs as! [ActivityDetailPartModel]
|
self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100
|
self?.tableView.reloadData()
|
} needAddClouse: {[weak self] () in
|
let vc = ActivityStudentListVC()
|
self?.push(vc: vc)
|
}
|
}
|
|
@IBAction func applyAction(_ sender: UIButton) {
|
|
guard students.count != 0 else {
|
alertError(msg: "请至少选择一位活动人员");return
|
}
|
|
|
if activityDetailModel.storeInfos.count > 1{
|
let a = activityDetailModel.storeInfos.map({$0.name})
|
StoresInfo_2_View.show(a) {[weak self] status in
|
guard let weakSelf = self else { return }
|
|
let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count)
|
let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count
|
let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count
|
|
if status{
|
let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false
|
//零元购
|
if price == 0 && coin == 0 && course == 0{
|
weakSelf.payment(type: .coin,paymentId: 0)
|
return
|
}
|
|
PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in
|
guard let weakSelf = self else { return }
|
if type == .courseNum{
|
PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in
|
weakSelf.payment(type: type,paymentId: id)
|
}
|
}else{
|
weakSelf.payment(type: type)
|
}
|
}
|
}else{
|
weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: {
|
NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil)
|
})
|
}
|
}
|
}else{
|
StoresInfoView.show(activityDetailModel.storeInfos.first!) { [weak self] status in
|
guard let weakSelf = self else { return }
|
|
let price = weakSelf.activityDetailModel.cashPrice * Double(weakSelf.students.count)
|
let coin = weakSelf.activityDetailModel.playPaiCoin * weakSelf.students.count
|
let course = weakSelf.activityDetailModel.classPrice * weakSelf.students.count
|
|
if status{
|
//零元购
|
if price == 0 && coin == 0 && course == 0{
|
weakSelf.payment(type: .coin,paymentId: 0)
|
return
|
}
|
|
let isStudent = weakSelf.students.filter({$0.isStudent == 0}).count > 0 ? true:false
|
PaymentView.show(enumType: .activity, money: (ali:price,wx:price,coin:coin,course:course,integral:nil),hasNotStudent: isStudent) { [weak self] type in
|
guard let weakSelf = self else { return }
|
if type == .courseNum{
|
PaymentCourseView.show(id: weakSelf.activityDetailModel.id,number:course) { id in
|
weakSelf.payment(type: type,paymentId: id)
|
}
|
}else{
|
weakSelf.payment(type: type)
|
}
|
}
|
}else{
|
weakSelf.navigationController?.qmui_popToRootViewController(animated: true, completion: {
|
NotificationCenter.default.post(name: ChooseHomeStore_Noti, object: nil)
|
})
|
}
|
}
|
}
|
}
|
|
private func payment(type:PayType,paymentId:Int? = nil){
|
let students = students.map { m in
|
return ["id":m.id,"isStudent":m.isStudent]
|
}.jq_toJson1()
|
|
Services.paymentCompetition(id: activityDetailModel.id, userIds: students, payType: type,coursePaymentId: paymentId).subscribe(onNext: {[weak self] data in
|
NotificationCenter.default.post(name: StudentRefresh_Nofi, object: nil)
|
if let m = data.data{
|
switch type {
|
case .aliPay:
|
let req = YYAlipayRequest(orderString: m.orderString)
|
YYPaymentManager.shared.sendPaymentRequest(req) { result in
|
switch result {
|
case .success:
|
let vc = PaymentResultVC(result: .success, objType: .activityApply)
|
self?.push(vc: vc)
|
case .cancel:
|
alert(msg: "已取消")
|
case .failure(_):
|
let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .activityApply)
|
self?.push(vc: vc)
|
}
|
}
|
case .wechat:
|
let req = YYWeChatPayRequest(partnerId: m.partnerid, prepayId: m.prepayid, package: m.package, nonceStr: m.noncestr, timeStamp: m.timestamp, sign: m.sign)
|
YYPaymentManager.shared.sendPaymentRequest(req) { result in
|
switch result {
|
case .success:
|
let vc = PaymentResultVC(result: .success, objType: .activityApply)
|
self?.push(vc: vc)
|
case .cancel:
|
alert(msg: "已取消")
|
case .failure(_):
|
let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .activityApply)
|
self?.push(vc: vc)
|
}
|
}
|
case .coin,.free:
|
let vc = PaymentResultVC(result: .success, objType: .activityApply)
|
self?.push(vc: vc)
|
case .courseNum:
|
let vc = PaymentResultVC(result: .success, objType: .activityApply)
|
self?.push(vc: vc)
|
default:break
|
}
|
}
|
},onError: {[weak self] error in
|
if let er = error as? NetworkRequest.NetRequestError{
|
switch er {
|
case .Other(let code,let string):
|
let vc = PaymentResultVC(result: .fail(string,code), objType: .yard,handleVC: nil)
|
self?.push(vc: vc)
|
default:
|
let vc = PaymentResultVC(result: .fail("支付失败",0), objType: .yard,handleVC: nil)
|
self?.push(vc: vc)
|
}
|
}
|
}).disposed(by: disposeBag)
|
}
|
}
|
|
extension ActivityDetailApplyVC:UITableViewDelegate{
|
|
}
|
|
extension ActivityDetailApplyVC:UITableViewDataSource{
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
let student = students[indexPath.row]
|
let cell = tableView.dequeueReusableCell(withIdentifier: "_StudentInfo_2_TCell") as! StudentInfo_2_TCell
|
cell.indexPath = indexPath
|
cell.activityDetailPartModel = student
|
cell.btn_edit.isHidden = true
|
cell.img_radio.isHidden = true
|
cell.delClouse = {[weak self] index in
|
tableView.beginUpdates()
|
self?.students.remove(at: index.row)
|
tableView.deleteItemsAtIndexPaths([index], animationStyle: .automatic)
|
tableView.endUpdates()
|
tableView.reloadData()
|
self?.cons_tableHei.constant = Double(self?.students.count ?? 0) * 100
|
}
|
|
return cell
|
}
|
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
return students.count
|
}
|
}
|