初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\model\app\activity;
|
||||
|
||||
use think\Model;
|
||||
use think\Db;
|
||||
use app\api\model\app\activity\Ticket;
|
||||
use app\common\exception\Exception;
|
||||
use app\api\model\app\activity\UserTicket;
|
||||
use fast\Random;
|
||||
class Activity extends Model
|
||||
{
|
||||
|
||||
|
||||
// 表名
|
||||
protected $name = 'app_activity';
|
||||
|
||||
|
||||
// 自动写入时间戳字段
|
||||
protected $autoWriteTimestamp = 'integer';
|
||||
|
||||
// 定义时间戳字段名
|
||||
protected $createTime = 'createtime';
|
||||
protected $updateTime = false;
|
||||
protected $deleteTime = false;
|
||||
|
||||
|
||||
/**
|
||||
* 获取支付信息
|
||||
* @param $ticket
|
||||
* @return mixed
|
||||
*/
|
||||
public function getPayDetail($ticketId,$count,$formId){
|
||||
//计算商品总价
|
||||
|
||||
//这里保证每张卡券都来自同一个活动
|
||||
|
||||
$ticketInfo = Ticket::where(['id'=>$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(){
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user