zilong 4 лет назад
Родитель
Сommit
65242929b6

+ 6 - 0
app/Http/Controllers/Api/V1/OrderController.php

xqd xqd xqd
@@ -139,6 +139,8 @@ class OrderController extends AuthController
                     //改变用户余额
                     $change_amount = 0 - $payment_amount;
                     User::changeBalance($user['id'], $change_amount, 1, $order['id'], '咨询订单消费');
+
+                    Order::payCompletedHandle($order['id']);
                 }
             }
 
@@ -292,6 +294,8 @@ class OrderController extends AuthController
                     //改变用户余额
                     $change_amount = 0 - $payment_amount;
                     User::changeBalance($user['id'], $change_amount, 1, $order['id'], '预约订单消费');
+
+                    Order::payCompletedHandle($order['id']);
                 }
             }
 
@@ -416,6 +420,8 @@ class OrderController extends AuthController
                     //改变用户余额
                     $change_amount = 0 - $payment_amount;
                     User::changeBalance($user['id'], $change_amount, 1, $order['id'], '购买服务包');
+
+                    Order::payCompletedHandle($order['id']);
                 }
             }
 

+ 4 - 2
app/Http/Controllers/Api/V1/PayCallbackController.php

xqd xqd xqd
@@ -44,7 +44,7 @@ class PayCallbackController extends Controller
                     try {
                         //更新payment
                         Payment::where('id', $payment['id'])->update(['online_sn' => $message['transaction_id'], 'status' => 2, 'payment_time' => time()]);
-                        $order = Order::select(['id', 'user_id', 'docter_id', 'product_type', 'payment_amount'])->where('id', $payment['order_id'])->first();
+                        $order = Order::select(['id', 'user_id', 'docter_id', 'product_type', 'payment_amount', 'total_amount'])->where('id', $payment['order_id'])->first();
                         $order_status = 2;
                         if (in_array($order['product_type'], [3,4,5,6])) {
                             $order_status = 3;
@@ -52,7 +52,7 @@ class PayCallbackController extends Controller
                         elseif ($order['product_type'] == 7) {
                             $order_status = 4;
                             //改变用户余额
-                            User::changeBalance($order['user_id'], $order['payment_amount'], 2, $order['id'], '充值');
+                            User::changeBalance($order['user_id'], $order['total_amount'], 2, $order['id'], '充值');
                         }
                         //更新订单
                         Order::where('id', $payment['order_id'])->update([
@@ -66,6 +66,8 @@ class PayCallbackController extends Controller
                             Docter::where('id', $order['docter_id'])->increment('service_persons');
                         }
 
+                        Order::payCompletedHandle($order['id']);
+
                         // 提交事务
                         DB::commit();
                     } catch (\Exception $e) {

+ 4 - 0
app/Http/Controllers/Api/V1/UserController.php

xqd xqd
@@ -104,6 +104,8 @@ class UserController extends AuthController
 
         User::where('id', $user['id'])->update(['pay_password' => sha1(md5($req['pay_password']))]);
 
+        UserMessage::saveMessage($user['id'], 11);
+
         return out();
     }
 
@@ -146,6 +148,8 @@ class UserController extends AuthController
 
         User::where('id', $user['id'])->update(['phone' => $req['new_phone']]);
 
+        UserMessage::saveMessage($user['id'], 10);
+
         return out();
     }
 }

+ 26 - 0
app/Models/Order.php

xqd
@@ -58,4 +58,30 @@ class Order extends BaseModel
     {
         return $this->belongsTo(Organization::class);
     }
+
+    //支付完成的处理方法
+    public static function payCompletedHandle($order_id)
+    {
+        $order = Order::select(['user_id', 'product_type', 'total_amount', 'payment_type', 'payment_amount'])->where('id', $order_id)->first();
+        //发送下单消息
+        if ($order['product_type'] < 6) {
+            $product_type_text = config('config.product_type_map')[$order['product_type']];
+            UserMessage::saveMessage($order['user_id'], 4, $order_id, [$product_type_text]);
+        }
+        elseif ($order['product_type'] == 6) {
+            $orderPack = OrderPack::select(['pack_name', 'end_time'])->where('order_id', $order_id)->first();
+            UserMessage::saveMessage($order['user_id'], 5, $order_id, [$orderPack['pack_name'], date('Y-m-d', $orderPack['end_time'])]);
+        }
+        elseif ($order['product_type'] == 7) {
+            $user = User::select(['balance'])->where('id', $order['user_id'])->first();
+            UserMessage::saveMessage($order['user_id'], 7, $order_id, [round($order['total_amount']/100, 2), round($user['balance']/100, 2)]);
+        }
+        //发送余额付款成功消息
+        if ($order['payment_type'] == 2) {
+            $user = User::select(['balance'])->where('id', $order['user_id'])->first();
+            UserMessage::saveMessage($order['user_id'], 8, $order_id, [round($order['payment_amount']/100, 2), round($user['balance']/100, 2)]);
+        }
+
+        return true;
+    }
 }

+ 14 - 0
app/Models/UserMessage.php

xqd
@@ -10,5 +10,19 @@ namespace App\Models;
 
 class UserMessage extends BaseModel
 {
+    public static function saveMessage($user_id, $type, $relation_id = 0, $param = [], $content = '')
+    {
+        if (empty($content)) {
+            $content = config('config.user_message_map')[$type] ?? '';
+            $content = vsprintf($content, $param);
+        }
+        UserMessage::create([
+            'user_id' => $user_id,
+            'type' => $type,
+            'relation_id' => $relation_id,
+            'content' => $content,
+        ]);
 
+        return true;
+    }
 }

+ 11 - 0
config/config.php

xqd
@@ -32,4 +32,15 @@ return [
         'verify_template_code' => 'SMS_185242509',
         'sms_verify_code_expire' => 360,
     ],
+
+    'user_message_map' => [
+        4 => '您的%s订单下单成功,已经通知医生(社区医院)(点击查看订单详情)',
+        5 => '您的%s服务包,已经购买成功,有效期为%s(点击查看服务包详情)',
+        6 => '您的%s服务包,已经于%s过期(点击查看服务包详情)',
+        7 => '您已成功充值%s元,账户余额为%s元',
+        8 => '您已成功付款%s元,账户余额为%s元',
+        9 => '您已成功修改密码,重新登录生效',
+        10 => '您已成功修改绑定电话,重新登录生效',
+        11 => '您已成功修改支付密码',
+    ],
 ];