Explorar el Código

feat(lakala): add profit share receiver management and application features

- Add receiver number column in admin table view
- Display receiver number in detail page
- Implement apply method in ProfitShareReceiverController
- Add applyLedgerReceiver method in LedgerService with proper response handling
- Create LedgerService facade for service access
- Update MMSService cardBin method return type and exception handling
- Refactor controller read method parameter passing
- Add status check and update logic in apply method
- Integrate ledger service API call for receiver application
- Handle response and update receiver status accordingly
runphp hace 4 meses
padre
commit
31908678a2

+ 4 - 0
resource/admin/ProfitShareReceiver.vue

@@ -47,6 +47,7 @@
         <el-table-column prop="id" label="ID" width="80" />
         <el-table-column prop="order_no" label="订单编号" min-width="180" />
         <el-table-column prop="receiver_name" label="接收方名称" min-width="120" />
+        <el-table-column prop="receiver_no" label="接收方编号" min-width="150" />
         <el-table-column prop="acct_name" label="收款账户名称" min-width="120" />
         <el-table-column prop="acct_no" label="收款账户卡号" min-width="180" />
         <el-table-column prop="acct_type_code" label="收款账户账户类型" width="120">
@@ -97,6 +98,9 @@
         <el-form-item label="分账接收方名称:">
           <span>{{ detailData.receiver_name }}</span>
         </el-form-item>
+        <el-form-item label="接收方编号:">
+          <span>{{ detailData.receiver_no }}</span>
+        </el-form-item>
         <el-form-item label="联系手机号:">
           <span>{{ detailData.contact_mobile }}</span>
         </el-form-item>

+ 0 - 1
route/api.php

@@ -9,6 +9,5 @@ use SixShop\System\Middleware\MacroPageMiddleware;
 //
 // 如果需要登录请添加认证中间件auth
 // ->middleware(['auth'])
-
 Route::resource('profit_share_receiver', ProfitShareReceiverController::class)
     ->middleware(['auth', MacroPageMiddleware::class]);

+ 3 - 4
src/Controller/Admin/ProfitShareReceiverController.php

@@ -22,12 +22,11 @@ class ProfitShareReceiverController
 
     public function read(int $id, Request $request, ProfitShareReceiverEntity $entity):Response
     {
-        $params = ['id' => $id];
-        return success_response($entity->getReceiver($params));
+        return success_response($entity->getReceiver(['id' => $id]));
     }
 
-    public function apply(int $id):Response
+    public function apply(int $id, ProfitShareReceiverEntity $entity):Response
     {
-
+        return success_response($entity->apply($id));
     }
 }

+ 32 - 0
src/Entity/ProfitShareReceiverEntity.php

@@ -5,6 +5,9 @@ namespace SixShop\Lakala\Entity;
 
 use SixShop\Core\Entity\BaseEntity;
 use SixShop\Lakala\Config;
+use SixShop\Lakala\Enum\ProfitShareOrderStatusEnum;
+use SixShop\Lakala\Enum\ReceiverStatusEnum;
+use SixShop\Lakala\Facade\LedgerService;
 use SixShop\Lakala\Facade\MMSService;
 use SixShop\Lakala\Model\ProfitShareReceiverModel;
 use think\facade\Db;
@@ -53,4 +56,33 @@ class ProfitShareReceiverEntity extends BaseEntity
         }
         return $result;
     }
+
+    public function apply(int $id):self
+    {
+        $entity = $this->getReceiver(['id' => $id]);
+        if ($entity->status != ReceiverStatusEnum::PENDING) {
+            throw_logic_exception('请不要重复提交申请!');
+        }
+        $reqData = [
+            'orderNo' => $entity->order_no,
+            'orgCode' => $entity->org_code,
+            'receiverName' => $entity->receiver_name,
+            'contactMobile' => $entity->contact_mobile,
+            'acctNo' => $entity->acct_no,
+            'acctName' => $entity->acct_name,
+            'acctTypeCode' => $entity->acct_type_code,
+            'acctCertificateType' => $entity->acct_certificate_type,
+            'acctCertificateNo' => $entity->acct_certificate_no,
+            'acctOpenBankCode' => $entity->acct_open_bank_code,
+            'acctOpenBankName' => $entity->acct_open_bank_name,
+            'acctClearBankCode' => $entity->acct_clear_bank_code,
+        ];
+        $response = LedgerService::applyLedgerReceiver($reqData);
+        $entity->org_id = $response->orgId;
+        $entity->org_name = $response->orgName;
+        $entity->receiver_no = $response->receiverNo;
+        $entity->status = ReceiverStatusEnum::SUBMITTING;
+        $entity->save();
+        return $entity;
+    }
 }

+ 16 - 0
src/Facade/LedgerService.php

@@ -0,0 +1,16 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\Lakala\Facade;
+
+use think\Facade;
+
+/**
+ * @mixin \SixShop\Lakala\Service\LedgerService
+ */
+class LedgerService extends Facade
+{
+    protected static function getFacadeClass()
+    {
+        return \SixShop\Lakala\Service\LedgerService::class;
+    }
+}

+ 9 - 11
src/Service/LedgerService.php

@@ -6,6 +6,7 @@ namespace SixShop\Lakala\Service;
 use SixShop\Lakala\Config;
 use SixShop\Lakala\OpenAPISDK\V2\Api\V2LakalaApi;
 use SixShop\Lakala\OpenAPISDK\V2\Model\V2ModelRequest;
+use function SixShop\Core\throw_logic_exception;
 
 /**
  * LedgerService
@@ -24,24 +25,21 @@ class LedgerService
      *
      * @link https://o.lakala.com/#/home/document/detail?id=382
      */
-    public function applyLedgerReceiver(array $reqData, string $version = '1.0')
+    public function applyLedgerReceiver(array $reqData, string $version = '1.0'):object
     {
         $request = new V2ModelRequest();
         $reqData['version'] = $version;
         $request->setReqData($reqData);
         $response = $this->v2LakalaApi->tradeApi('/api/v2/mms/openApi/ledger/applyLedgerReceiver', $request);
-        if ($response->getRespData()) {
-            print_r($response->getRespData());
+        if ($response->getRetCode() == '000000') {
+            return $response->getRespData();
         } else {
-            print_r($response);
+            throw_logic_exception(
+                msg:$response->getRetMsg(),
+                code: (int)$response->getRetCode(),
+                data: $response->getRespData(),
+            );
         }
-        echo $response->getRetCode();
-
-        # 响应头信息
-        print_r($response->getHeaders());
-
-        # 响应原文
-        echo $response->getOriginalText();
     }
 
     /**

+ 2 - 2
src/Service/MMSService.php

@@ -27,7 +27,7 @@ class MMSService
      * @param string $version 接口版本号 默认1.0
      * @link https://o.lakala.com/#/home/document/detail?id=179
      */
-    public function cardBin(string $orderNo, string $cardNo,string $orgCode = '1',  string $version = '1.0')
+    public function cardBin(string $orderNo, string $cardNo,string $orgCode = '1',  string $version = '1.0'):object
     {
         $request = new V2ModelRequest();
         $request->setReqData([
@@ -47,7 +47,7 @@ class MMSService
         } else {
             throw_logic_exception(
                 msg:$response->getRetMsg(),
-                status: $response->getRetCode(),
+                code: (int)$response->getRetCode(),
                 data: $response->getRespData(),
             );
         }