Files
amb_wechatapp/application/api/controller/app/activity/Ticket.php
T

154 lines
3.7 KiB
PHP

<?php
namespace app\api\controller\app\activity;
use app\common\controller\Api;
use think\Db;
/**
* 线下活动-票券
*/
class Ticket extends Api
{
protected $noNeedLogin = ['getTicketDetail','getTicket'];
// 无需鉴权的接口,*表示全部
protected $noNeedRight = ["*"];
public function _initialize()
{
parent::_initialize();
}
/**
* 获取活动票券
* @return void
*/
public function getTicket(){
$id = input('id');
$activityInfo =\app\api\model\app\activity\Activity::getActivityDetail($id);
if(!$activityInfo){
$this->error("获取活动信息失败");
}
if(!$activityInfo['apply_status']){
$this->error("当前不可购票");
}
$sortField = 'id';
if($activityInfo['ticket_show_rule'] == 1){
$sortField = 'price';
}
$data = \app\api\model\app\activity\Ticket::where([
'activity_id'=>$id
])->order($sortField,'asc')->select();
$isVirtualPay = \app\common\library\pay\VirtualPayService::isUseVirtualPay('activity');
foreach ($data as &$item){
if($item['inventory']){
$item['inventory'] = $item['inventory'] - $item['sales'];
} else{
$item['inventory'] = 999;
}
if($item['limit_buy']){
$userBuyCount = \app\api\model\app\activity\UserTicket::getUserBuyCount($this->auth->id,$item['id']);
$item['can_buy'] = $item['limit_buy'] - $userBuyCount;
if($item['can_buy'] > $item['inventory']){
$item['can_buy'] = $item['inventory'];
}
}else{
$item['can_buy'] = $item['inventory'] >0 ? $item['inventory'] : 9999;
}
if ($isVirtualPay) {
$item = \app\common\library\pay\VirtualPayService::convertPriceFields($item->toArray(), ['price']);
}
}
$this->success("获取成功",$data);
}
/**
* 获取我的票券
* @return void
*/
public function getUserTicket(){
$userTicketModel = new \app\api\model\app\activity\UserTicket();
$limit = input('limit',10);
$page = input('page',1);
$status = input('status','');
$search = input('search');
$sort = input('sort','desc') == 'desc' ? 'desc' : 'asc';
$order = input('order');
$sort = 'desc';
$where = [
'ut.user_id'=>$this->auth->id
];
if($status){
switch ($status){
case 1:
$where['ut.status'] = 1;
$where['ut.sign'] = 0;
break;
case 2:
$where['ut.status'] = 1;
$where['ut.sign'] = 1;
break;
case 3:
$where['ut.status'] = 0;
break;
case 4:
$where['ut.status'] = 2;
break;
}
}
if($search){
$where['a.name|at.name|ut.ticket_no'] = ['like',"%{$search}%"];
}
$list = $userTicketModel->getUserTicket($where,$limit,$page);
$this->success('获取成功', $list);
}
/**
* 获取票券详情
* @return void
*/
public function getTicketDetail(){
$ticketNo = input('ticket_no');
$userTicketModel = new \app\api\model\app\activity\UserTicket();
$data = $userTicketModel->getTicketDetail($ticketNo);
if(!$data){
$this->error("未查询到相关票券信息");
}
$this->success('获取成功', $data);
}
}