Bladeren bron

默认的

Kirin 3 jaren geleden
bovenliggende
commit
d68f074103
2 gewijzigde bestanden met toevoegingen van 32 en 1 verwijderingen
  1. 21 1
      app/admin/model/vote/VoteOrder.php
  2. 11 0
      app/api/controller/vote/VoteController.php

+ 21 - 1
app/admin/model/vote/VoteOrder.php

@@ -38,7 +38,7 @@ class VoteOrder extends BaseModel
      */
     protected $name = 'vote_order';
 
-    protected static $payType = ['weixin' => '微信支付', 'yue' => '余额支付'];
+    protected static $payType = ['weixin' => '微信支付', 'yue' => '余额支付', 'free' => '免费投票'];
 
     use ModelTrait;
 
@@ -82,6 +82,7 @@ class VoteOrder extends BaseModel
             $payPrice = bcmul($num, $voteInfo['price'], 2);
             $orderInfo = [
                 'uid' => $uid,
+                'vid' => $voteJoinInfo['vid'],
                 'vjid' => $id,
                 'vote_num' => $num,
                 'pay_price' => $payPrice,
@@ -134,6 +135,25 @@ class VoteOrder extends BaseModel
         return $res;
     }
 
+
+    public static function freePay($order_id, $uid)
+    {
+        $orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->find();
+        if (!$orderInfo) return self::setErrorInfo('订单不存在!');
+        if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
+        $userInfo = \app\models\user\User::getUserInfo($uid);
+        if (Vote::where('id', $orderInfo['vid'])->value('day_free') < $orderInfo['vote_num'] + self::valid()->where('uid', $orderInfo['uid'])->where('vid', $orderInfo['vid'])->whereTime('pay_time', 'today')->sum('vote_num')) {
+            return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '免费票不足' . floatval($orderInfo['pay_price'])]);
+        }
+        self::beginTrans();
+        //$res1 = false !== User::bcDec($uid, 'now_money', $orderInfo['pay_price'], 'uid');
+        //$res2 = UserBill::expend('参与投票', $uid, 'now_money', 'pay_vote', $orderInfo['pay_price'], $orderInfo['id'], $userInfo['now_money'], '余额支付' . floatval($orderInfo['pay_price']) . '元参与投票');
+        $res = self::paySuccess($order_id, 'free');//余额支付成功
+        //$res = $res1 && $res2 && $res3;
+        self::checkTrans($res);
+        return $res;
+    }
+
     /**
      * //TODO 支付成功后
      * @param $orderId

+ 11 - 0
app/api/controller/vote/VoteController.php

@@ -146,6 +146,17 @@ class VoteController
                             return app('json')->status('pay_error', $errorinfo);
                     }
                     break;
+                case 'free':
+                    if (VoteOrder::freePay($orderId, $request->uid()))
+                        return app('json')->status('success', '投票成功', $info);
+                    else {
+                        $errorinfo = VoteOrder::getErrorInfo();
+                        if (is_array($errorinfo))
+                            return app('json')->status($errorinfo['status'], $errorinfo['msg'], $info);
+                        else
+                            return app('json')->status('pay_error', $errorinfo);
+                    }
+                    break;
                 case 'offline':
                     return app('json')->status('success', '订单创建成功', $info);
                     break;