Kaynağa Gözat

feat: 创建订单增加场景字段

陈文艺 6 gün önce
ebeveyn
işleme
59b1d17dbf

+ 8 - 7
Lanu/Manager/Order/LNOrderManager.swift

@@ -136,12 +136,12 @@ extension LNOrderManager {
 
 // MARK: 订单操作
 extension LNOrderManager {
-    func createOrder(
-        skillId: String, count: Int, remark: String,
-        queue: DispatchQueue = .main,
-        handler: @escaping (String?) -> Void)
+    func createOrder(skillId: String, count: Int,
+                     remark: String, scene: LNOrderScene? = nil,
+                     queue: DispatchQueue = .main,
+                     handler: @escaping (String?) -> Void)
     {
-        LNHttpManager.shared.createOrderBySkill(skillId: skillId, count: count, remark: remark)
+        LNHttpManager.shared.createOrderBySkill(skillId: skillId, count: count, remark: remark, scene: scene)
         { [weak self] res, err in
             guard let self else { return }
             if let res, err == nil {
@@ -364,10 +364,11 @@ extension LNOrderManager {
         }
     }
     
-    func createQRCodeOrder(data: String, count: Int, extra: String,
+    func createQRCodeOrder(data: String, count: Int,
+                           extra: String, scene: LNOrderScene? = nil,
                            queue: DispatchQueue = .main,
                            handler: @escaping (String?) -> Void) {
-        LNHttpManager.shared.createQROrder(data: data, count: count, extra: extra) { [weak self] res, err in
+        LNHttpManager.shared.createQROrder(data: data, count: count, extra: extra, scene: scene) { [weak self] res, err in
             queue.asyncIfNotGlobal {
                 handler(res?.orderNo)
             }

+ 18 - 6
Lanu/Manager/Order/Network/LNHttpManager+Order.swift

@@ -37,16 +37,24 @@ private enum LNOrderHandlerType: Int {
     case done = 4
 }
 
+enum LNOrderScene: Int {
+    case room = 1
+}
+
 extension LNHttpManager {
     func createOrderBySkill(
-        skillId: String, count: Int, remark: String,
+        skillId: String, count: Int, remark: String, scene: LNOrderScene?,
         completion: @escaping (LNCreateOrderResponse?, LNHttpError?) -> Void)
     {
-        post(path: kNetPath_Order_Create, params: [
+        var params: [String: Any] = [
             "skillId": skillId,
             "purchaseQty": count,
             "remark": remark
-        ], completion: completion)
+        ]
+        if let scene {
+            params["scene"] = scene.rawValue
+        }
+        post(path: kNetPath_Order_Create, params: params, completion: completion)
     }
 }
 
@@ -111,13 +119,17 @@ extension LNHttpManager {
         ], completion: completion)
     }
     
-    func createQROrder(data: String, count: Int, extra: String,
+    func createQROrder(data: String, count: Int, extra: String, scene: LNOrderScene?,
                        completion: @escaping (LNCreateOrderResponse?, LNHttpError?) -> Void) {
-        post(path: kNetPath_Order_QR_Order, params: [
+        var params: [String: Any] = [
             "qrCode": data,
             "purchaseQty": count,
             "remark": extra
-        ], completion: completion)
+        ]
+        if let scene {
+            params["scene"] = scene.rawValue
+        }
+        post(path: kNetPath_Order_QR_Order, params: params, completion: completion)
     }
 }
 

+ 3 - 2
Lanu/Views/Order/Create/LNCreateOrderPanel.swift

@@ -62,6 +62,7 @@ class LNCreateOrderPanel: LNPopupView {
             countLabel.isHidden = editable
         }
     }
+    var scene: LNOrderScene?
     
     private var targetUid: String?
     var completionHandler: ((String) -> Void)?
@@ -214,10 +215,10 @@ extension LNCreateOrderPanel {
             }
             if let skillId {
                 LNOrderManager.shared.createOrder(
-                    skillId: skillId, count: curCount, remark: extra, handler: handler)
+                    skillId: skillId, count: curCount, remark: extra, scene: scene, handler: handler)
             } else if let qrCode {
                 LNOrderManager.shared.createQRCodeOrder(
-                    data: qrCode, count: curCount, extra: extra, handler: handler)
+                    data: qrCode, count: curCount, extra: extra, scene: scene, handler: handler)
             }
         }), for: .touchUpInside)
         container.addSubview(confirmButton)

+ 1 - 0
Lanu/Views/Room/Profile/LNRoomProfileSkillView.swift

@@ -54,6 +54,7 @@ class LNRoomProfileSkillView: UIView {
                 let panel = LNCreateOrderPanel()
                 panel.update(skill, user: userInfo)
                 panel.editable = true
+                panel.scene = .room
                 panel.popup(self)
             }
             stackView.addArrangedSubview(itemView)

+ 2 - 0
Lanu/Views/Room/ViewModel/LNRoomViewModel.swift

@@ -488,6 +488,8 @@ extension LNRoomViewModel {
     private func setupRoomInfoObserver() {
         LNRoomManager.shared.liveListStore.state.subscribe().receive(on: DispatchQueue.main).sink { [weak self] state in
             guard let self else { return }
+            if state.currentLive.liveID.isEmpty { return }
+            
             if !state.currentLive.roomType.contains(.playmate) {
                 showToast(.init(key: "A00389"))
                 leaveRoom()