Przeglądaj źródła

feat(lakala): 优化分账订单查询与接收方信息校验

- 调整分账订单状态和外部编号的请求参数类型为字符串
- 增加分账接收方信息变更校验逻辑,避免无效更新
- 实现分账订单外部编号模糊搜索功能
- 实现分账订单状态枚举过滤功能
runphp 4 miesięcy temu
rodzic
commit
3f2d8398a2

+ 2 - 2
src/Controller/Admin/ProfitShareOrderController.php

@@ -12,8 +12,8 @@ class ProfitShareOrderController
     public function index(Request $request, ProfitShareOrderEntity $entity): Response
     {
         $params = $request->get([
-            'status/d' => 0,
-            'out_separate_no' => '',
+            'status/s',
+            'out_separate_no/s',
         ]);
         return page_response(page: $entity->getOrderList($params, $request->pageAndLimit()));
     }

+ 8 - 0
src/Entity/ProfitShareReceiverEntity.php

@@ -186,6 +186,14 @@ class ProfitShareReceiverEntity extends BaseEntity
             throw_logic_exception('分账接收方申请记录不存在!');
         }
         $saveData = $entity->toArray();
+        if($saveData['receiver_name'] == $data['receiver_name']
+            && $saveData['contact_mobile'] == $data['contact_mobile']
+            && $saveData['acct_type_code'] == $data['acct_type_code']
+            && $saveData['acct_open_bank_name'] == $data['acct_open_bank_name']
+            && $saveData['acct_no'] == $data['acct_no']
+        ) {
+            throw_logic_exception('分账接收方信息未发生变更!');
+        }
         unset($saveData['id'], $saveData['order_no'], $saveData['create_time'], $saveData['effective_time']);
         $saveData = array_merge($saveData, $data);
         $this->data($saveData);

+ 15 - 0
src/Model/ProfitShareOrderModel.php

@@ -30,4 +30,19 @@ class ProfitShareOrderModel extends Model
     {
         return generate_number(NumberBizEnum::PROFIT_SHARE_ORDER, 5);
     }
+
+    public function searchOutSeparateNoAttr($query, $value)
+    {
+        if ($value) {
+            $query->where('out_separate_no', 'like', '%' . $value . '%');
+        }
+    }
+
+    public function searchStatusAttr($query, $value)
+    {
+        $value = ProfitShareOrderStatusEnum::tryFrom($value);
+        if ($value) {
+            $query->where('status', $value);
+        }
+    }
 }