Commit 47424308 authored by Alex朱枝文's avatar Alex朱枝文

会员中心按钮状态调整

parent d331adc0
...@@ -11,7 +11,7 @@ import UIKit ...@@ -11,7 +11,7 @@ import UIKit
class YHMemberCenterViewController: YHBaseViewController { class YHMemberCenterViewController: YHBaseViewController {
enum TableRow { enum TableRow {
case currentPrivilege(_ curLevel: YHMembershipLevel, _ count: Int) case currentPrivilege(_ curLevel: YHMembershipLevel, _ count: Int)
case myPrivilege(_ myLevel: YHMembershipLevel, _ count: Int) case myPrivilege(_ myLevel: YHMembershipLevel, _ count: Int, _ redeemCount: Int, _ redeemedCount: Int)
case action(_ title: String, _ detail: String, _ imageStr: String, _ ratio: CGFloat, _ buttonStr: String, _ buttonState: YHMemberCenterActionButton.ButtonState, _ id: String, _ contentType: YHMemberCenterCellContent) case action(_ title: String, _ detail: String, _ imageStr: String, _ ratio: CGFloat, _ buttonStr: String, _ buttonState: YHMemberCenterActionButton.ButtonState, _ id: String, _ contentType: YHMemberCenterCellContent)
} }
...@@ -141,69 +141,105 @@ class YHMemberCenterViewController: YHBaseViewController { ...@@ -141,69 +141,105 @@ class YHMemberCenterViewController: YHBaseViewController {
private func updateDatas(_ memberCenterInfo: YHMemberCenterInfo) { private func updateDatas(_ memberCenterInfo: YHMemberCenterInfo) {
datas.removeAll() datas.removeAll()
var details: [String] = []
var buttonTitles: [String] = []
var buttonStates: [YHMemberCenterActionButton.ButtonState] = []
func appendMenu(_ giftModel: YHMemberGiftModel) {
if memberCenterInfo.currentLevel < giftModel.minLevel {
let minLevel = YHMembershipLevel(rawValue: giftModel.minLevel) ?? .normal
details.append("本月剩余兑换数量:\(giftModel.num)")
buttonTitles.append("\(minLevel.description)可兑")
buttonStates.append(.memberOnly)
} else if giftModel.num <= 0 {
details.append("本月已兑换完毕,次月更新")
buttonTitles.append("暂无库存")
buttonStates.append(.outOfStock)
} else {
details.append("本月剩余兑换数量:\(giftModel.num)")
buttonTitles.append("了解更多")
buttonStates.append(.redeemable)
}
}
switch currentLevel { switch currentLevel {
case .normal: case .normal:
datas.append(.myPrivilege(.normal, 5)) datas.append(.myPrivilege(.normal, 5, memberCenterInfo.exchangeCount, memberCenterInfo.exchangeCount))
let services: [YHMemberCenterCellContent] = [.customerService, .pointsConsumption, .afternoonTea, .offlineSalons, .onSiteConsultation] let services: [YHMemberCenterCellContent] = [.customerService, .pointsConsumption, .afternoonTea, .offlineSalons, .onSiteConsultation]
let ids: [String] = [memberCenterInfo.dedicatedAdviser.giftId, memberCenterInfo.specialIntegralConsumption.giftId, memberCenterInfo.luxuryTea.giftId, memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId] let ids: [String] = [memberCenterInfo.dedicatedAdviser.giftId, memberCenterInfo.specialIntegralConsumption.giftId, memberCenterInfo.luxuryTea.giftId, memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId]
let details: [String] = ["不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"] details = ["不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"]
let buttonTitles: [String] = ["立即联系", "了解更多", "立即兑换", "了解更多", "了解更多"] buttonTitles = ["立即联系", "了解更多", "立即兑换", "了解更多", "了解更多"]
let buttonStates: [YHMemberCenterActionButton.ButtonState] = [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable] buttonStates = [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable]
services.enumerated().forEach { index, service in services.enumerated().forEach { index, service in
let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service) let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service)
datas.append(row) datas.append(row)
} }
case .gold: case .gold:
datas.append(.currentPrivilege(.gold, 7)) datas.append(.currentPrivilege(.gold, 7))
datas.append(.myPrivilege(.normal, 5)) datas.append(.myPrivilege(.normal, 5, memberCenterInfo.exchangeCount, memberCenterInfo.exchangeCount))
let services: [YHMemberCenterCellContent] = [.kidsBay, .luxury, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption] let services: [YHMemberCenterCellContent] = [.kidsBay, .luxury, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption]
let ids: [String] = [memberCenterInfo.highTeaBox.giftId, memberCenterInfo.experienceCenter.giftId, let ids: [String] = [memberCenterInfo.highTeaBox.giftId, memberCenterInfo.experienceCenter.giftId,
memberCenterInfo.luxuryTea.giftId, memberCenterInfo.luxuryTea.giftId,
memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId, memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId,
memberCenterInfo.specialIntegralConsumption.giftId] memberCenterInfo.specialIntegralConsumption.giftId]
let details: [String] = ["本月剩余兑换数量:20", "本月剩余兑换数量:20", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"] appendMenu(memberCenterInfo.highTeaBox)
let buttonTitles: [String] = ["了解更多", "了解更多", "立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"] appendMenu(memberCenterInfo.experienceCenter)
let buttonStates: [YHMemberCenterActionButton.ButtonState] = [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable]
details.append(contentsOf: ["不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"])
buttonTitles.append(contentsOf: ["立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"])
buttonStates.append(contentsOf: [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable])
services.enumerated().forEach { index, service in services.enumerated().forEach { index, service in
let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service) let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service)
datas.append(row) datas.append(row)
} }
case .platinum: case .platinum:
datas.append(.currentPrivilege(.platinum, 8)) datas.append(.currentPrivilege(.platinum, 8))
datas.append(.myPrivilege(.normal, 5)) datas.append(.myPrivilege(.normal, 5, memberCenterInfo.exchangeCount, memberCenterInfo.exchangeCount))
let services: [YHMemberCenterCellContent] = [.kidsBay, .luxury, .hkTravel, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption] let services: [YHMemberCenterCellContent] = [.crossBorder, .kidsBay, .luxury, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption]
let ids: [String] = [memberCenterInfo.highTeaBox.giftId, memberCenterInfo.experienceCenter.giftId, let ids: [String] = [memberCenterInfo.carTransfer.giftId,
memberCenterInfo.hkCarTransfer.giftId, memberCenterInfo.highTeaBox.giftId, memberCenterInfo.experienceCenter.giftId,
memberCenterInfo.luxuryTea.giftId, memberCenterInfo.luxuryTea.giftId,
memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId, memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId,
memberCenterInfo.specialIntegralConsumption.giftId] memberCenterInfo.specialIntegralConsumption.giftId]
appendMenu(memberCenterInfo.carTransfer)
appendMenu(memberCenterInfo.highTeaBox)
appendMenu(memberCenterInfo.experienceCenter)
details.append(contentsOf: ["不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"])
buttonTitles.append(contentsOf: ["立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"])
buttonStates.append(contentsOf: [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable])
let details: [String] = ["本月剩余兑换数量:20", "本月剩余兑换数量:20", "本月剩余兑换数量:20", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"]
let buttonTitles: [String] = ["了解更多", "了解更多", "了解更多", "立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"]
let buttonStates: [YHMemberCenterActionButton.ButtonState] = [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable]
services.enumerated().forEach { index, service in services.enumerated().forEach { index, service in
let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service) let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service)
datas.append(row) datas.append(row)
} }
case .diamond: case .diamond:
datas.append(.currentPrivilege(.diamond, 13)) datas.append(.currentPrivilege(.diamond, 13))
datas.append(.myPrivilege(.normal, 5)) datas.append(.myPrivilege(.normal, 5, memberCenterInfo.exchangeCount, memberCenterInfo.exchangeCount))
let services: [YHMemberCenterCellContent] = [.kidsBay, .luxury, .crossBorder, .hkTravel, .drivingLicense, .schoolSelection, .brandPlanning, .highEndMeeting, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption] let services: [YHMemberCenterCellContent] = [.highEndMeeting, .crossBorder, .hkTravel,.drivingLicense, .schoolSelection, .brandPlanning, .kidsBay, .luxury, .afternoonTea, .offlineSalons, .onSiteConsultation, .customerService, .pointsConsumption]
let ids: [String] = [memberCenterInfo.highTeaBox.giftId, memberCenterInfo.experienceCenter.giftId, let ids: [String] = [memberCenterInfo.highEndPrivilege.giftId,
memberCenterInfo.carTransfer.giftId, memberCenterInfo.carTransfer.giftId,
memberCenterInfo.hkCarTransfer.giftId, memberCenterInfo.hkCarTransfer.giftId,
memberCenterInfo.internationalDrivingLicense.giftId, memberCenterInfo.internationalDrivingLicense.giftId,
memberCenterInfo.hongkongSchoolPlanning.giftId, memberCenterInfo.hongkongSchoolPlanning.giftId,
memberCenterInfo.brandStrategy.giftId, memberCenterInfo.brandStrategy.giftId,
memberCenterInfo.highEndPrivilege.giftId, memberCenterInfo.highTeaBox.giftId,
memberCenterInfo.experienceCenter.giftId,
memberCenterInfo.luxuryTea.giftId, memberCenterInfo.luxuryTea.giftId,
memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId, memberCenterInfo.offlineSalon.giftId, memberCenterInfo.answerConsult.giftId, memberCenterInfo.dedicatedAdviser.giftId,
memberCenterInfo.specialIntegralConsumption.giftId] memberCenterInfo.specialIntegralConsumption.giftId]
appendMenu(memberCenterInfo.highEndPrivilege)
let details: [String] = ["本月剩余兑换数量:20", "本月剩余兑换数量:20", "本月已兑换完毕,次月更新", "本月剩余兑换数量:20", "本月剩余兑换数量:20", "本月剩余兑换数量:20", "本月剩余兑换数量:20", "本月剩余兑换数量:20", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"] appendMenu(memberCenterInfo.carTransfer)
let buttonTitles: [String] = ["了解更多", "了解更多", "暂无库存", "了解更多", "了解更多", "了解更多", "了解更多", "了解更多", "立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"] appendMenu(memberCenterInfo.hkCarTransfer)
let buttonStates: [YHMemberCenterActionButton.ButtonState] = [.redeemable, .redeemable, .outOfStock, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable, .redeemable] appendMenu(memberCenterInfo.internationalDrivingLicense)
appendMenu(memberCenterInfo.hongkongSchoolPlanning)
appendMenu(memberCenterInfo.brandStrategy)
appendMenu(memberCenterInfo.highTeaBox)
appendMenu(memberCenterInfo.experienceCenter)
details.append(contentsOf: ["不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换", "不限次数兑换"])
buttonTitles.append(contentsOf: ["立即兑换", "了解更多", "了解更多", "立即联系", "了解更多"])
buttonStates.append(contentsOf: [.redeemable, .redeemable, .redeemable, .redeemable, .redeemable])
services.enumerated().forEach { index, service in services.enumerated().forEach { index, service in
let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service) let row: TableRow = .action(service.rawValue, details[index], service.imageUrl(), service.imageRatio(), buttonTitles[index], buttonStates[index], ids[index], service)
datas.append(row) datas.append(row)
...@@ -322,7 +358,8 @@ class YHMemberCenterViewController: YHBaseViewController { ...@@ -322,7 +358,8 @@ class YHMemberCenterViewController: YHBaseViewController {
} }
private func gotoPrivilegePage() { private func gotoPrivilegePage() {
YHHUD.flash(message: "进特权页,待完善!!") let vc = YHVipLevelRightViewController()
navigationController?.pushViewController(vc)
} }
} }
...@@ -349,9 +386,9 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour ...@@ -349,9 +386,9 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour
cell.setupCell(mid: "\(level.description)拥有特权\(count)项") cell.setupCell(mid: "\(level.description)拥有特权\(count)项")
return cell return cell
} }
case let .myPrivilege(_, count): case let .myPrivilege(_, count, redeemCount, redeemedCount):
if let cell = tableView.dequeueReusableCell(withIdentifier: YHMemberCenterMyPrivilegeCell.cellReuseIdentifier) as? YHMemberCenterMyPrivilegeCell { if let cell = tableView.dequeueReusableCell(withIdentifier: YHMemberCenterMyPrivilegeCell.cellReuseIdentifier) as? YHMemberCenterMyPrivilegeCell {
cell.setupCell(right: "\(count)项") cell.setupCell(right: "\(count)项", redeemCount: redeemCount, redeemedCount: redeemedCount)
return cell return cell
} }
case let .action(title, detail, imageStr, ratio, buttonStr, buttonState, id, service): case let .action(title, detail, imageStr, ratio, buttonStr, buttonState, id, service):
...@@ -374,9 +411,7 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour ...@@ -374,9 +411,7 @@ extension YHMemberCenterViewController: UITableViewDelegate, UITableViewDataSour
switch section { switch section {
case .currentPrivilege: case .currentPrivilege:
return 74.0 return 74.0
case .myPrivilege: case .myPrivilege, .action:
return 64
case .action:
return UITableView.automaticDimension return UITableView.automaticDimension
} }
} }
......
...@@ -10,7 +10,7 @@ import Foundation ...@@ -10,7 +10,7 @@ import Foundation
enum YHMemberCenterCellContent: String, CaseIterable { enum YHMemberCenterCellContent: String, CaseIterable {
case kidsBay = "kidsbay高端早教盒子" case kidsBay = "kidsbay高端早教盒子"
case luxury = "奢华体验中心" case luxury = "奢华会客体验中心"
case crossBorder = "深港跨境出行预约" case crossBorder = "深港跨境出行预约"
case hkTravel = "香港境内出行预约" case hkTravel = "香港境内出行预约"
case drivingLicense = "国际驾照续期" case drivingLicense = "国际驾照续期"
......
...@@ -39,6 +39,30 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell { ...@@ -39,6 +39,30 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell {
return view return view
}() }()
private lazy var bottomContainerView: UIView = {
let view = UIView()
view.backgroundColor = UIColor(hexString: "#F8F9FB")
view.layer.cornerRadius = 2
view.clipsToBounds = true
return view
}()
private lazy var privilegeLabel: UILabel = {
let label = UILabel()
label.text = "高端权益兑换"
label.font = .PFSC_R(ofSize: 12)
label.textColor = .mainTextColor
return label
}()
private lazy var privilegeTipsLabel: UILabel = {
let label = UILabel()
label.text = "可兑换次数: 0,已兑换次数: 0"
label.font = .PFSC_R(ofSize: 12)
label.textColor = UIColor(hexString: "#8993A2")
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier) super.init(style: style, reuseIdentifier: reuseIdentifier)
setupUI() setupUI()
...@@ -48,8 +72,9 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell { ...@@ -48,8 +72,9 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
func setupCell(right: String) { func setupCell(right: String, redeemCount: Int, redeemedCount: Int) {
rightLabel.text = right rightLabel.text = right
privilegeTipsLabel.text = "可兑换次数: \(redeemCount),已兑换次数: \(redeemedCount)"
} }
private func setupUI() { private func setupUI() {
...@@ -59,32 +84,56 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell { ...@@ -59,32 +84,56 @@ class YHMemberCenterMyPrivilegeCell: YHResignDocumentCell {
subContainerView.addSubview(rightLabel) subContainerView.addSubview(rightLabel)
subContainerView.addSubview(rightIcon) subContainerView.addSubview(rightIcon)
subContainerView.addSubview(bottomContainerView)
bottomContainerView.addSubview(privilegeLabel)
bottomContainerView.addSubview(privilegeTipsLabel)
midLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) midLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
leftIcon.setContentCompressionResistancePriority(.required, for: .horizontal) leftIcon.setContentCompressionResistancePriority(.required, for: .horizontal)
rightIcon.setContentCompressionResistancePriority(.required, for: .horizontal) rightIcon.setContentCompressionResistancePriority(.required, for: .horizontal)
rightLabel.setContentCompressionResistancePriority(.required, for: .horizontal) rightLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
leftIcon.snp.makeConstraints { make in leftIcon.snp.makeConstraints { make in
make.centerY.equalToSuperview() make.top.equalToSuperview().offset(20)
make.left.equalToSuperview().offset(16) make.left.equalToSuperview().offset(16)
make.width.height.equalTo(24) make.width.height.equalTo(24)
} }
midLabel.snp.makeConstraints { make in midLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview() make.centerY.equalTo(leftIcon)
make.left.equalTo(leftIcon.snp.right).offset(8) make.left.equalTo(leftIcon.snp.right).offset(8)
make.right.lessThanOrEqualTo(rightLabel.snp.left).offset(-8) make.right.lessThanOrEqualTo(rightLabel.snp.left).offset(-8)
} }
rightIcon.snp.makeConstraints { make in rightIcon.snp.makeConstraints { make in
make.centerY.equalToSuperview() make.centerY.equalTo(leftIcon)
make.right.equalToSuperview().offset(-16) make.right.equalToSuperview().offset(-16)
make.width.height.equalTo(20) make.width.height.equalTo(20)
} }
rightLabel.snp.makeConstraints { make in rightLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview() make.centerY.equalTo(leftIcon)
make.right.equalTo(rightIcon.snp.left).offset(-1) make.right.equalTo(rightIcon.snp.left).offset(-1)
} }
bottomContainerView.snp.makeConstraints { make in
make.top.equalTo(midLabel.snp.bottom).offset(17)
make.left.equalTo(leftIcon)
make.right.equalTo(rightIcon)
make.bottom.equalToSuperview().offset(-17)
make.height.equalTo(41)
}
privilegeLabel.setContentCompressionResistancePriority(.required, for: .horizontal)
privilegeTipsLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
privilegeLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.centerY.equalToSuperview()
}
privilegeTipsLabel.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.centerY.equalToSuperview()
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment