Parcourir la source

up - 统一对外通知

liugc il y a 1 an
Parent
commit
ce17af5eaa

+ 12 - 10
app/adminapi/controller/works/ServiceWorkController.php

@@ -69,11 +69,12 @@ class ServiceWorkController extends BaseAdminController
                 $masterDetail = MasterWorkerLogic::detail(['id'=>$workDetail['master_worker_id']]);
                 // 商家改约通知外部平台 即改约
                 if($workDetail['external_platform_id'] > 0){
-                    http_request(env('internal_api.api_url_host').'platf/performanceNotice',http_build_query([
-                        'external_platform_id'=>$workDetail['external_platform_id'],
-                        'send_code'=> 1002,
-                        'work_sn'=> $workDetail['work_sn']
-                    ]));
+                    event('ExternalPlatform',  [
+                        'send_code' => 1002,
+                        'params' => [
+                            'work_id' => $workDetail['id'],
+                        ]
+                    ]);
                 }
 
                 // 修改预约时间通知【给用户的通知】
@@ -154,11 +155,12 @@ class ServiceWorkController extends BaseAdminController
             $serviceWorkInfo = ServiceWork::find($params['id']);
             // 商家取消通知外部平台 即取消
             if($serviceWorkInfo['external_platform_id'] > 0){
-                http_request(env('internal_api.api_url_host').'platf/performanceNotice',http_build_query([
-                    'external_platform_id'=>$serviceWorkInfo['external_platform_id'],
-                    'send_code'=> 1005,
-                    'work_sn'=> $serviceWorkInfo['work_sn']
-                ]));
+                event('ExternalPlatform',  [
+                    'send_code' => 1005,
+                    'params' => [
+                        'work_id' => $serviceWorkInfo['id'],
+                    ]
+                ]);
             }
 
             //判断是否是美团订单,如果是,则取消美团订单

+ 6 - 13
app/adminapi/logic/works/ServiceWorkLogic.php

@@ -333,21 +333,14 @@ class ServiceWorkLogic extends BaseLogic
             }
 
             Db::commit();
-
-            // 外部平台工单 - 通知外边平台
+            // 商家报价通知外部平台 即报价
             if($work->external_platform_id > 0){
-                /*event('ExternalPlatform',  [
-                    'scene' => 'confirm_price',
+                event('ExternalPlatform',  [
+                    'send_code' => 1006,
                     'params' => [
                         'work_id' => $work->id,
                     ]
-                ]);*/
-                // 商家报价通知外部平台 即报价通知
-                http_request(env('internal_api.api_url_host').'platf/performanceNotice',http_build_query([
-                    'external_platform_id'=> $work->external_platform_id,
-                    'send_code'=> 1006,
-                    'work_sn'=> $work->work_sn
-                ]));
+                ]);
             }
         }
         catch (\Exception $e) {
@@ -391,12 +384,12 @@ class ServiceWorkLogic extends BaseLogic
 
             // 外部平台工单 - 通知外边平台
             if($work->external_platform_id > 0){
-                event('ExternalPlatform',  [
+                /*event('ExternalPlatform',  [
                     'scene' => 'service_finish',
                     'params' => [
                         'work_id' => $work->id,
                     ]
-                ]);
+                ]);*/
             }
 
 

+ 3 - 3
app/common/listener/ExternalPlatformListener.php

@@ -14,8 +14,8 @@ class ExternalPlatformListener
     public function handle($params)
     {
         try {
-            // 工单服务取消通知 cancel_order 尾款报价通知 confirm_price
-            if (empty($params['scene'])) {
+            // send_code 配置
+            if (empty($params['send_code'])) {
                 throw new \Exception('场景不能为空');
             }
             $result = ExternalPlatformLogic::handleByScene($params);
@@ -24,7 +24,7 @@ class ExternalPlatformListener
             }
             return true;
         } catch (\Exception $e) {
-            Log::write($params['scene'].':执行失败:'.$e->getMessage());
+            Log::write($params['send_code'].':执行失败:'.$e->getMessage());
             return $e->getMessage();
         }
     }

+ 25 - 74
app/common/logic/ExternalPlatformLogic.php

@@ -15,15 +15,12 @@ class ExternalPlatformLogic  extends BaseLogic
     public static function handleByScene($params)
     {
         try {
-            switch ($params['scene']){
-                case 'cancel_order':
-                    //self::cancelOrder($params['params']);
-                    break;
-                case 'confirm_price':
-                    self::confirmPrice($params['params']);
-                    break;
-                case 'service_finish':
-                    self::serviceFinish($params['params']);
+            switch ($params['send_code']){
+                case 1002:
+                case 1003:
+                case 1005:
+                case 1006:
+                    self::generalServiceWork($params['send_code'],$params['params']);
                     break;
                 default:
                     throw new \Exception('场景不存在');
@@ -37,86 +34,40 @@ class ExternalPlatformLogic  extends BaseLogic
     }
 
 
-    // 工程师报价通知
-    private static function confirmPrice($params)
-    {
-        try {
-
-            $work = ServiceWork::where(['id'=>$params['work_id']])->findOrEmpty();
-            if($work->isEmpty()){
-                throw new \Exception('工单不存在');
-            }
-            if($work->external_platform_id > 0){
-                $externalPlatform = ExternalPlatform::find($work->external_platform_id);
-
-                $order_amount = RechargeOrder::where([
-                    'user_id'=>$work->user_id,
-                    'work_id'=>$params['work_id'],
-                    'pay_status'=>0,
-                    'payment_type'=>2
-                ])->value('order_amount');
-
-                $data = [
-                    'timestamp'=>time(),
-                    'scene'=>'confirm_price',
-                    'version'=>'1',
-                    'notice_data'=>json_encode([
-                        'work_sn'=>$work->work_sn,
-                        'order_amount'=>$order_amount * 100, // 单位分
-                    ],JSON_UNESCAPED_UNICODE)
-                ];
-                $data['sign'] = ExternalPlatform::getSign($externalPlatform['appkey'],$data);
-                if($externalPlatform['send_url']){
-                    $res = http_request($externalPlatform['send_url'],http_build_query($data));
-                }else{
-                    $res = '未配置接口地址';
-                }
-                Log::info('ExternalPlatform-confirmPrice:'
-                    .'url:'.$externalPlatform['send_url']
-                    .'|data:'.json_encode($data,JSON_UNESCAPED_UNICODE)
-                    .'|res:'.json_encode([$res],JSON_UNESCAPED_UNICODE)
-                );
-            }
-            return true;
-        } catch (\Exception $e) {
-            throw new \Exception($e->getMessage());
-        }
-    }
-    // 工程师服务完成通知
-    private static function serviceFinish($params)
+    /**
+     * 工单统一处理
+     * @param $send_code
+     * @param $params
+     * @return bool
+     * @author liugc <466014217@qq.com>
+     * @date 2025/4/17 14:12
+     */
+    private static function generalServiceWork($send_code,$params)
     {
         try {
-
             $work = ServiceWork::where(['id'=>$params['work_id']])->findOrEmpty();
             if($work->isEmpty()){
                 throw new \Exception('工单不存在');
             }
             if($work->external_platform_id > 0){
-                $externalPlatform = ExternalPlatform::find($work->external_platform_id);
-
+                $send_url = env('internal_api.api_url_host').'platf/performanceNotice';
                 $data = [
-                    'timestamp'=>time(),
-                    'scene'=>'service_finish',
-                    'version'=>'1',
-                    'notice_data'=>json_encode([
-                        'work_sn'=>$work->work_sn
-                    ],JSON_UNESCAPED_UNICODE)
+                    'external_platform_id'=> $work->external_platform_id,
+                    'send_code'=> $send_code,
+                    'work_sn'=> $work->work_sn
                 ];
-                $data['sign'] = ExternalPlatform::getSign($externalPlatform['appkey'],$data);
-                if($externalPlatform['send_url']){
-                    $res = http_request($externalPlatform['send_url'],http_build_query($data));
-                }else{
-                    $res = '未配置接口地址';
-                }
-                Log::info('ExternalPlatform-serviceFinish:'
-                    .'url:'.$externalPlatform['send_url']
+                // 通过内部SDK服务 对外通知
+                $res = http_request($send_url,http_build_query($data));
+                Log::info('generalServiceWork:'
+                    .'url:'.$send_url
                     .'|data:'.json_encode($data,JSON_UNESCAPED_UNICODE)
                     .'|res:'.json_encode([$res],JSON_UNESCAPED_UNICODE)
                 );
             }
             return true;
         } catch (\Exception $e) {
-            throw new \Exception($e->getMessage());
+            Log::info('generalServiceWork-error:'.$e->getMessage());
+            return false;
         }
     }
 

+ 6 - 5
app/common/model/works/ServiceWork.php

@@ -46,11 +46,12 @@ class ServiceWork extends BaseModel
     {
         // 工单状态通知外部平台 即履约
         if($model->external_platform_id > 0){
-            http_request(env('internal_api.api_url_host').'platf/performanceNotice',http_build_query([
-                'external_platform_id'=>$model->external_platform_id,
-                'send_code'=> 1003,
-                'work_sn'=> $model->work_sn
-            ]));
+            event('ExternalPlatform',  [
+                'send_code' => 1003,
+                'params' => [
+                    'work_id' => $model->id,
+                ]
+            ]);
         }
         if($model->user_confirm_status == 5 and $model->work_status == 7 and $model->work_pay_status==1){
             if($model->user_equity_id > 0){