浏览代码

feat:(shop): 流量包逻辑

laurieryayoi 5 年之前
父节点
当前提交
54024badca
共有 3 个文件被更改,包括 60 次插入0 次删除
  1. 1 0
      app/routes.php
  2. 47 0
      src/Controllers/UserController.php
  3. 12 0
      src/Models/Shop.php

+ 1 - 0
app/routes.php

@@ -48,6 +48,7 @@ return function (SlimApp $app) {
         $this->get('/shop',                     App\Controllers\UserController::class . ':shop');
         $this->post('/coupon_check',            App\Controllers\UserController::class . ':CouponCheck');
         $this->post('/buy',                     App\Controllers\UserController::class . ':buy');
+        $this->post('/buy_traffic_package',     App\Controllers\UserController::class . ':buy_traffic_package');
 
         // Relay Mange
         $this->get('/relay',                    App\Controllers\RelayController::class . ':index');

+ 47 - 0
src/Controllers/UserController.php

@@ -1016,6 +1016,53 @@ class UserController extends BaseController
         return $response->getBody()->write(json_encode($res));
     }
 
+    public function buy_traffic_package ($request, $response, $args)
+    {
+        $user = $this->user;
+        $shop = $request->getParam('shop');
+        $price = $shop->price;
+
+        if ($shop == null || $shop->traffic_package() == 0) {
+            $res['ret'] = 0;
+            $res['msg'] = '非法请求';
+            return $response->getBody()->write(json_encode($res));
+        }
+
+        if ($user->class < $shop->traffic_package()['class']['min'] || $user->class > $shop->traffic_package()['class']['max']) {
+            $res['ret'] = 0;
+            $res['msg'] = '您当前的会员等级无法购买此流量包';
+            return $response->getBody()->write(json_encode($res));
+        }
+
+        if (!$user->isLogin) {
+            $res['ret'] = -1;
+            return $response->getBody()->write(json_encode($res));
+        }
+
+        if (bccomp($user->money, $price, 2) == -1) {
+            $res['ret'] = 0;
+            $res['msg'] = '喵喵喵~ 当前余额不足,总价为' . $price . '元。</br><a href="/user/code">点击进入充值界面</a>';
+            return $response->getBody()->write(json_encode($res));
+        }
+
+        $user->money = bcsub($user->money, $price, 2);
+        $user->save();
+
+        $bought = new Bought();
+        $bought->userid = $user->id;
+        $bought->shopid = $shop->id;
+        $bought->datetime = time();
+        $bought->price = $price;
+        $bought->save();
+
+        $shop->buy($user);
+
+        $res['ret'] = 1;
+        $res['msg'] = '购买成功';
+
+        return $response->getBody()->write(json_encode($res));
+    }
+
     public function buy($request, $response, $args)
     {
         $coupon = $request->getParam('coupon');

+ 12 - 0
src/Models/Shop.php

@@ -79,6 +79,12 @@ class Shop extends Model
         return $content->reset_exp ?? 0;
     }
 
+    public function traffic_package()
+    {
+        $content = json_decode($this->attributes['content']);
+        return $content->traffic_package ?? 0;
+    }
+
     public function content_extra()
     {
         $content = json_decode($this->attributes['content']);
@@ -129,6 +135,12 @@ class Shop extends Model
         $content = json_decode($this->attributes['content'], true);
         $content_text = '';
 
+        if ($content->traffic_package() != 0) {
+            $user->transfer_enable += $content->bandwidth() * 1024 * 1024 * 1024;
+            $user->save();
+            return;
+        }
+
         foreach ($content as $key => $value) {
             switch ($key) {
                 case 'bandwidth':