154 lines
3.7 KiB
PHP
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);
|
|
}
|
|
|
|
|
|
} |