dever 4 years ago
parent
commit
8a987dc83b
3 changed files with 197 additions and 5 deletions
  1. 152 5
      app/user/lib/Seat.php
  2. 2 0
      app/user/src/Api.php
  3. 43 0
      app/user/src/Pay.php

+ 152 - 5
app/user/lib/Seat.php

@@ -9,22 +9,27 @@ class Seat
 	# 获取座位信息
 	public function get($uid, $info_id, $parent_page_id, $page_id, $times_id, $day, $content_id, $index, $hall)
 	{
+		$data = array();
 		//$where['uid'] = $uid;
 		$where['info_id'] = $info_id;
-		$where['times_id'] = $times_id;
 		$where['content_id'] = $content_id;
+
+		# 只要买过座位,在哪都可以看,但是只能在座位上发言
+		$data['disabled'] = true;
+		$state = Dever::db('user/seat')->one($where);
+		if ($state) {
+			$data['disabled'] = false;
+		}
+		$where['times_id'] = $times_id;
 		if ($day && $day > 0) {
             $where['day'] = $day;
         } else {
             $where['day'] = -1;
         }
+
         $where['hall'] = $hall;
 		$my = Dever::db('user/seat')->getMyData($where);
-
-		$data = array();
-		$data['disabled'] = true;
 		if ($my) {
-			$data['disabled'] = false;
 			foreach ($my as $k => $v) {
 				$key = $v['hall'] . '_' . $v['seat_row'] . '_' . $v['seat_column'];
 				$v['user'] = Dever::load('user/lib/info')->get($v['uid'], $info_id);
@@ -114,4 +119,146 @@ class Seat
 
 		return $data;
 	}
+
+	# 发起支付
+    public function action($parent_uid, $uid, $info_id, $parent_page_id, $page_id, $times_id, $day, $content_id, $index, $seat, $price, $system_source, $refer = '')
+    {
+        if (!$uid) {
+            Dever::alert('错误的用户信息');
+        }
+
+        $tmp = explode(',', $seat);
+        $num = count($num);
+
+        $where['info_id'] = $info_id;
+		$where['content_id'] = $content_id;
+		$state = Dever::db('user/seat')->one($where);
+		if (!$state) {
+			$num = $num - 1;
+		}
+        
+        $order_data['uid'] = $uid;
+        $order_data['status'] = 1;
+        $order_data['info_id'] = $info_id;
+        $order_data['parent_page_id'] = $parent_page_id;
+        $order_data['page_id'] = $page_id;
+        $order_data['times_id'] = $times_id;
+        $order_data['day'] = $day;
+        $order_data['content_id'] = $content_id;
+        $order_data['index'] = $index;
+        $order_data['seat'] = $seat;
+        $order_data['name'] = '购买座位:' . $seat;
+        $order_data['cash'] = $price * $num;
+        $order_data['price'] = $price;
+        $order_data['num'] = $num;
+        
+        $order_data['system_source'] = $system_source;
+        $order_data['order_id'] = $this->getOrderId();
+
+        if ($parent_uid) {
+            $order_data['parent_uid'] = $parent_uid;
+        }
+
+        $id = Dever::db('user/seat_order')->insert($order_data);
+
+        if (!$id) {
+            Dever::alert('支付失败');
+        }
+
+        $param = array
+        (
+            'project_id' => 3,
+            'channel_id' => $cate['pay_channel'],
+            'system_source' => $system_source,
+            'uid' => $uid,
+            'name' => $order_data['name'],
+            'cash' => $order_data['cash'],
+            'product_id' => $info['id'],
+            'order_id' => $order_data['order_id'],
+            'refer' => $refer,
+        );
+
+        $receipt = Dever::input('receipt');
+        if ($receipt) {
+            $param['receipt'] = $receipt;
+        }
+
+        $result = Dever::load('pay/api.pay', $param);
+
+        return $result;
+    }
+
+    # 支付成功回调 安全加密 设置token
+    public function success_secure_api_token()
+    {
+        $project_id = Dever::input('pay_project_id');
+        $info = Dever::db('pay/project')->one($project_id);
+        if ($info) {
+            return $info['key'];
+        }
+        return 'seat_dever_2020';
+    }
+
+    # 支付成功回调 安全加密
+    public function success_secure_api($param = array())
+    {
+        $this->success($param);
+    }
+
+    # 支付成功回调
+    public function success($param = array())
+    {
+        $send = $param ? $param : Dever::preInput('pay_');
+        $order_id = $send['pay_order_id'];
+        $status = $send['pay_status'];
+        $msg = $send['pay_msg'];
+
+        $order = Dever::db('user/seat_order')->one(array('order_id' => $order_id, 'time' => time()));
+        if ($order && $order['status'] == 1) {
+            if ($status == 2) {
+
+                $this->save($order['uid'], $order['info_id'], $order['info_id'], $order['parent_page_id'], , $order['page_id'], $order['times_id'], $order['day'], $order['content_id'], $order['index'], $order['seat']);
+
+                # 增加积分
+                if ($order['parent_uid'] > 0) {
+                    $uid = $order['parent_uid'] . '_' . $order['uid'];
+                } else {
+                    $uid = $order['uid'];
+                }
+                Dever::score($uid, 'buy_seat', '购买座位', false, false, false, 'collection/info', $order['info_id']);
+
+                # 发消息
+                if (Dever::project('message')) {
+                    Dever::load('message/lib/data')->push(-1, $order['uid'], '购买提醒', '购买座位成功', 11);
+                }
+            }
+
+            $update['status'] = $status;
+            $update['where_id'] = $order['id'];
+            Dever::db('user/seat_order')->update($update);
+        }
+
+        return 'ok';
+    }
+
+    # 生成订单号
+    public function getOrderId()
+    {
+        $where['order_id'] = Dever::order('T');
+        $state = Dever::db('user/seat_order')->one($where);
+        if (!$state) {
+            return $where['order_id'];
+        } else {
+            return $this->getOrderId();
+        }
+    }
+
+    public function getOrderIdAndId($order_id, $id)
+    {
+    	if ($order_id) {
+    		return $order_id . '/' . $id;
+    	} else {
+    		return '无' . '/' . $id;
+    	}
+    }
 }

+ 2 - 0
app/user/src/Api.php

@@ -105,6 +105,7 @@ class Api extends Core
     }
 
     # 保存座位
+    /*
     public function seatSave()
     {
         $content_id = Dever::input('content_id');
@@ -114,6 +115,7 @@ class Api extends Core
 
         return 'ok';
     }
+    */
 
     # 记录用户操作
     public function record()

+ 43 - 0
app/user/src/Pay.php

@@ -59,4 +59,47 @@ class Pay extends Core
 
         return $pay;
     }
+
+    # 购买座位 下单
+    public function seat()
+    {
+        if (!$this->user) {
+            Dever::alert('用户信息错误');
+        }
+
+        $uid = $this->uid;
+
+        $seat = Dever::input('seat');
+
+        if (!$seat) {
+            Dever::alert('请选择正确的座位');
+        }
+
+        $content_id = Dever::input('content_id');
+
+        if (!$content_id) {
+            Dever::alert('请选择正确的座位');
+        }
+
+        $index = Dever::input('index');
+        $type = Dever::input('type');
+        $type_id = Dever::input('type_id');
+        $info = Dever::db($type)->one($type_id);
+
+        if (!$info) {
+            Dever::alert('请选择正确的座位');
+        }
+
+        $refer = Dever::input('refer');
+        $location = Dever::input('location');
+        $code = $this->getCode($this->id, $this->parent_page_id, $this->page_id, $index, $this->times, $this->day);
+        $refer = str_replace('{code}', $code, $refer);
+        $location = str_replace('{code}', $code, $location);
+
+        $pay = Dever::load('user/lib/seat')->action($this->share_uid$this->uid, $this->id, $this->parent_page_id, $this->page_id, $this->times, $this->day, $content_id, $index, $seat, $info['seat_price'], $this->system_source, $refer);
+
+        $pay['location'] = $location;
+
+        return $pay;
+    }
 }