Ver código fonte

发货,退款站内信

gorden 7 meses atrás
pai
commit
6c5aeb0917

+ 7 - 4
app/admin/controller/order/WholeController.php

@@ -36,6 +36,7 @@ use support\exception\BusinessException;
 use support\Redis;
 use support\Request;
 use support\Response;
+use Webman\Event\Event;
 use Yansongda\Pay\Pay;
 use function Qiniu\Http\Middleware\compose;
 
@@ -868,10 +869,6 @@ class WholeController extends Curd
      */
     public function delivery(Request $request)
     {
-        if (!Order::where('order_id', $request->post('order_id'))->where('order_status_system', 'SENDING')->exists()) {
-            return json_fail('订单状态异常');
-        }
-
         // 验证
         $validate = new OrderExpressValidate();
         if (!$validate->scene('delivery')->check($request->post())) {
@@ -968,6 +965,9 @@ class WholeController extends Curd
             $model->order_express_addtimes = $params['order_express_addtimes'] ?? time();
             $model->save();
 
+            // 事件通知
+            Event::dispatch('client_message.delivery',$params);
+
             Db::commit();
 
             _syslog("订单","发货成功");
@@ -1497,6 +1497,9 @@ class WholeController extends Curd
 
             Db::commit();
 
+            // 事件通知
+            Event::dispatch('client_message.refund',$order->join_order_member_id);
+
             _syslog("退款", "发起退款", json_decode($res), $data);
             return json_success("退款成功");
         } catch (PayException $e) {

+ 69 - 1
app/event/ClientMessageEvent.php

@@ -2,9 +2,77 @@
 
 namespace app\event;
 
+use app\model\ClientMessage;
+use app\model\Order;
+use app\model\OrderSheet;
+
 class ClientMessageEvent
 {
-    public function delevery(){
+    /**
+     * @Desc 发货通知
+     * @Author Gorden
+     * @Date 2024/7/16 10:28
+     *
+     * @param $params
+     * @return void
+     */
+    public function delivery($params)
+    {
+        try {
+            $order = Order::where('order_id', $params['order_id'])
+                ->select('join_order_member_id')
+                ->first();
+            $clientMessage = new ClientMessage();
+            $clientMessage->client_message_classify = 'ORDER';
+            $clientMessage->join_client_message_send = 'SYSTEM';
+            $clientMessage->join_client_message_recv_member_id = $order->join_order_member_id;
+            $clientMessage->client_message_sendtime = date('Y-m-d H:i:s');
+            $clientMessage->client_message_status = 'PENDING';
+            $clientMessage->client_message_category = 'NORMAL';
+            $clientMessage->client_message_header_json = json_encode(['title' => '订单消息']);
+            $clientMessage->client_message_addtimes = time();
+
+            $sheet = OrderSheet::with([
+                'goods' => function ($query) {
+                    $query->select('goods_id', 'goods_name');
+                }
+            ])->where('join_sheet_order_id', $params['order_id'])
+                ->select('order_sheet_id', 'join_sheet_goods_id', 'join_sheet_order_id', 'order_sheet_num')
+                ->first();
+
+
+            if ($params['express_type'] == '自提') {
+                $clientMessage->client_message_body_json = json_encode([
+                    'content' => '提货通知:您于' . date('Y年m月d日') . '在' . $params['order_express_premises'] . '提取了您购买的商品【' . $sheet->goods->goods_name . '】,数量:【' . intval($sheet->order_sheet_num) . '】。'
+                ]);
+            } else {
+                $clientMessage->client_message_body_json = json_encode([
+                    'content' => '发货通知:您购买的商品【' . $sheet->goods->goods_name . '】,数量:【' . intval($sheet->order_sheet_num) . '】已发货,物流公司:' . $params['order_express_company'] . ',物流单号:' . $params['order_express_code'] . ',请注意查收。'
+                ]);
+            }
+
+            $clientMessage->save();
+        } catch (\Exception $e) {
+        }
+    }
+
+
+    public function refund($memberId)
+    {
+        try {
+            $clientMessage = new ClientMessage();
+            $clientMessage->client_message_classify = 'ORDER';
+            $clientMessage->join_client_message_send = 'SYSTEM';
+            $clientMessage->join_client_message_recv_member_id = $memberId;
+            $clientMessage->client_message_sendtime = date('Y-m-d H:i:s');
+            $clientMessage->client_message_status = 'PENDING';
+            $clientMessage->client_message_category = 'NORMAL';
+            $clientMessage->client_message_header_json = json_encode(['title' => '订单消息']);
+            $clientMessage->client_message_body_json = json_encode(['content' => '退款通知:您申请的退款已原路返回,请注意查收。']);
+            $clientMessage->client_message_addtimes = time();
+            $clientMessage->save();
 
+        } catch (\Exception $e) {
+        }
     }
 }

+ 6 - 1
config/event.php

@@ -1,5 +1,10 @@
 <?php
 
 return [
-    
+    'client_message.delivery' => [
+        [\app\event\ClientMessageEvent::class, 'delivery']
+    ],
+    'client_message.refund' => [
+        [\app\event\ClientMessageEvent::class, 'refund']
+    ],
 ];