|
|
@@ -10,6 +10,11 @@ import Foundation
|
|
|
|
|
|
protocol LNOrderManagerNotify {
|
|
|
func onOrderInfoChanged(orderId: String)
|
|
|
+ func onMyDiscountInfoChanged(info: LNOrderDiscountVO?)
|
|
|
+}
|
|
|
+extension LNOrderManagerNotify {
|
|
|
+ func onOrderInfoChanged(orderId: String) { }
|
|
|
+ func onMyDiscountInfoChanged(info: LNOrderDiscountVO?) { }
|
|
|
}
|
|
|
|
|
|
enum LNOrderErrorCode: Int {
|
|
|
@@ -58,7 +63,11 @@ class LNOrderManager {
|
|
|
static let orderRefundMaxLength = 500
|
|
|
static let orderCommentMaxLength = 200
|
|
|
|
|
|
- private init() {}
|
|
|
+ private(set) var discount: LNOrderDiscountVO?
|
|
|
+
|
|
|
+ private init() {
|
|
|
+ LNEventDeliver.addObserver(self)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -130,6 +139,7 @@ extension LNOrderManager {
|
|
|
if let res, err == nil {
|
|
|
LNPurchaseManager.shared.reloadWalletInfo()
|
|
|
notifyOrderInfoChanged(orderId: res.orderNo)
|
|
|
+ reloadMyOrderDiscountInfo()
|
|
|
}
|
|
|
queue.asyncIfNotGlobal {
|
|
|
handler(res?.orderNo)
|
|
|
@@ -317,12 +327,14 @@ extension LNOrderManager {
|
|
|
count: Int, type: LNOrderSource,
|
|
|
queue: DispatchQueue = .main,
|
|
|
handler: @escaping (String?) -> Void) {
|
|
|
- LNHttpManager.shared.createOrderQR(skillId: skillId, count: count, type: type) { data, err in
|
|
|
+ LNHttpManager.shared.createOrderQR(skillId: skillId, count: count, type: type) { [weak self] data, err in
|
|
|
queue.asyncIfNotGlobal {
|
|
|
handler(data?.qrCode)
|
|
|
}
|
|
|
if let err {
|
|
|
showToast(err.errorDesc)
|
|
|
+ } else if let self {
|
|
|
+ reloadMyOrderDiscountInfo()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -344,22 +356,48 @@ extension LNOrderManager {
|
|
|
func createQRCodeOrder(data: String, count: Int, extra: String,
|
|
|
queue: DispatchQueue = .main,
|
|
|
handler: @escaping (String?) -> Void) {
|
|
|
- LNHttpManager.shared.createQROrder(data: data, count: count, extra: extra) { res, err in
|
|
|
+ LNHttpManager.shared.createQROrder(data: data, count: count, extra: extra) { [weak self] res, err in
|
|
|
queue.asyncIfNotGlobal {
|
|
|
handler(res?.orderNo)
|
|
|
}
|
|
|
|
|
|
if let err {
|
|
|
showToast(err.errorDesc)
|
|
|
+ } else if let self {
|
|
|
+ reloadMyOrderDiscountInfo()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// MARK: 折扣
|
|
|
+extension LNOrderManager {
|
|
|
+ func reloadMyOrderDiscountInfo() {
|
|
|
+ LNHttpManager.shared.fetchOrderDiscount { [weak self] info, err in
|
|
|
+ guard let self else { return }
|
|
|
+ if err != nil { return }
|
|
|
+ discount = info
|
|
|
+ notifyDiscountInfoChange(info: info)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+extension LNOrderManager: LNAccountManagerNotify {
|
|
|
+ func onUserLogin() {
|
|
|
+ reloadMyOrderDiscountInfo()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
extension LNOrderManager {
|
|
|
private func notifyOrderInfoChanged(orderId: String) {
|
|
|
LNEventDeliver.notifyEvent {
|
|
|
($0 as? LNOrderManagerNotify)?.onOrderInfoChanged(orderId: orderId)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private func notifyDiscountInfoChange(info: LNOrderDiscountVO?) {
|
|
|
+ LNEventDeliver.notifyEvent {
|
|
|
+ ($0 as? LNOrderManagerNotify)?.onMyDiscountInfoChanged(info: info)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|