$ticketId])->find(); if(!$ticketInfo){ throw new \think\Exception("未获取到票券信息"); } if($ticketInfo['inventory'] && ($ticketInfo['sales'] + $count) > $ticketInfo['inventory']){ throw new \think\Exception("票券'{$ticketInfo['name']}'库存不足"); } $activityInfo = self::getActivityDetail($ticketInfo['activity_id']); if(!$activityInfo || (!$activityInfo['status'] && !$activityInfo['apply_status'])){ throw new \think\Exception("当前活动暂不可用,请刷新后重试"); } $activityInfo['price_marking'] = $activityInfo['price'] = $ticketInfo['price']; $activityInfo['name'] .= "【{$ticketInfo['name']}】"; $activityInfo['ticket_id'] = $ticketInfo['id']; $activityInfo['form_user_id'] = \app\api\model\app\activity\Form::getFormUser($formId); if(!$activityInfo['form_user_id']){ throw new \think\Exception("报名信息错误,请返回重试"); } if(!\app\api\model\app\activity\BindCourse::checkJoinAuth($activityInfo['form_user_id'],$ticketInfo['activity_id'])){ throw new \think\Exception("请先订阅关联课程"); } if($ticketInfo['limit_buy']){ if($count > $ticketInfo['limit_buy']){ throw new \think\Exception("票券'{$ticketInfo['name']}'超出限购数量"); } //判断限购 $userBuyCount = \app\api\model\app\activity\UserTicket::getUserBuyCount($activityInfo['form_user_id'],$ticketInfo['id']); if(($userBuyCount + $count) > $ticketInfo['limit_buy']){ throw new \think\Exception("票券'{$ticketInfo['name']}'超出限购数量"); } } $activityInfo['apply_info_id'] = $formId; $activityInfo['status'] = 1; $activityInfo['is_virtual_pay'] = \app\common\library\pay\VirtualPayService::isUseVirtualPay('activity'); return $activityInfo; } /** * 向用户发放票券 * @param $userId * @param $activityId * @param $ticketId * @param $formId * @param $count * @param $price * @param $orderNo * @return void */ public static function setUserTicket($userId,$activityId,$ticketId,$formId,$count,$price,$orderNo,$ticket_no = ''){ if(!$ticket_no){ $ticket_no = Random::numeric(14); } for($i=0;$i<$count;$i++){ UserTicket::insert([ 'uniacid'=>UNIACID, 'user_id'=>$userId, 'apply_info_id'=>$formId, 'activity_id'=>$activityId, 'ticket_id'=>$ticketId, 'order_no'=>$orderNo, 'price'=>$price, 'ticket_no'=>$ticket_no, 'status'=>1, 'createtime'=>time() ]); } } /** * 获取活动详情 * @param $id * @return false */ public static function getActivityDetail($id){ $data = self::where([ 'id'=>$id ])->find(); if(!$data){ return false; } // $data['apply_info_form'] = $this->formModel->getFromField($id); //报名时间 if($data['apply_time_type'] == 1){ $data['apply_start_time'] = $data['activity_start_time']; $data['apply_end_time'] = $data['activity_end_time']; } $data['detail'] = \addons\alivod\library\Alivod::parseContentAliovdTag($data['detail']); $data['type'] = 'activity'; //判断活动状态 //判断活动是否进行中 $data['status'] = (time() > $data['activity_start_time'] && time() < $data['activity_end_time']) ? 1 : 0; //判断报名时间 $data['apply_status'] = (time() > $data['apply_start_time'] && time() < $data['apply_end_time'] ) ? 1 : 0; //获取报名人数 if($data['apply_member_show']){ $data['apply_user_count'] = \app\api\model\app\activity\UserTicket::getApplyUserCount($id); }else{ $data['apply_user_count'] = 0; } return $data; } /** * 增加浏览量 * @param $activityId * @return void */ public static function incViews($activityId){ self::where([ 'id'=>$activityId ])->setInc('views'); } /** * 检查绑定课程权限 * @return void */ public function checkBindCourse(){ } }