初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\activity;
|
||||
|
||||
use app\common\controller\Api;
|
||||
use think\Db;
|
||||
use app\api\model\app\activity\Form;
|
||||
/**
|
||||
* 线下活动
|
||||
*/
|
||||
class Activity extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ["detail","index"];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->formModel = new \app\api\model\app\activity\Form;
|
||||
$this->model = new \app\api\model\app\activity\Activity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取活动列表
|
||||
* @return void
|
||||
*/
|
||||
public function index(){
|
||||
|
||||
$limit = input('limit',10);
|
||||
$page = input('page',1);
|
||||
$search = input('search');
|
||||
$sort = input('sort','desc') == 'desc' ? 'desc' : 'asc';
|
||||
$order = input('order');
|
||||
|
||||
|
||||
$sort = 'desc';
|
||||
|
||||
$where = [
|
||||
'status'=>1
|
||||
];
|
||||
|
||||
$orderField = 'createtime';
|
||||
|
||||
if(!empty($search)){
|
||||
}
|
||||
|
||||
|
||||
$list = $this->model
|
||||
->where($where)
|
||||
->limit($limit)->page($page)
|
||||
->order($orderField,$sort)
|
||||
->select();
|
||||
|
||||
|
||||
if(!empty($list)){
|
||||
foreach ($list as &$item){
|
||||
|
||||
$item = $item->toArray();
|
||||
$item['type'] = 'activity';
|
||||
$extendInfo = \app\common\model\goods\Handle::parseGoodsExtendInfo($item['id'],$item['type']);
|
||||
if($extendInfo){
|
||||
$item = array_merge($item,$extendInfo);
|
||||
}
|
||||
|
||||
$isVirtualPay = \app\common\library\pay\VirtualPayService::isUseVirtualPay('activity');
|
||||
$item['is_virtual_pay'] = $isVirtualPay ? 1 : 0;
|
||||
if ($isVirtualPay) {
|
||||
$item = \app\common\library\pay\VirtualPayService::convertPriceFields($item, ['price', 'price_marking']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->success('获取成功', $list);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 活动详情
|
||||
* @return void
|
||||
*/
|
||||
public function detail(){
|
||||
$id = input('id');
|
||||
|
||||
$activityDetail =\app\api\model\app\activity\Activity::getActivityDetail($id);
|
||||
|
||||
if(!$activityDetail){
|
||||
$this->error("获取活动信息失败");
|
||||
}
|
||||
|
||||
//增加浏览量
|
||||
\app\api\model\app\activity\Activity::incViews($id);
|
||||
|
||||
$activityDetail['is_virtual_pay'] = \app\common\library\pay\VirtualPayService::isUseVirtualPay('activity');
|
||||
if ($activityDetail['is_virtual_pay']) {
|
||||
$activityDetail = \app\common\library\pay\VirtualPayService::convertPriceFields($activityDetail, ['price', 'price_marking']);
|
||||
}
|
||||
|
||||
$this->success("获取成功",$activityDetail);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\activity;
|
||||
|
||||
use app\common\controller\Api;
|
||||
use think\Db;
|
||||
use app\api\model\app\activity\Form;
|
||||
/**
|
||||
* 绑定课程
|
||||
*/
|
||||
class BindCourse extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ["getBindCourse"];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->courseBindModel = new \app\api\model\app\activity\BindCourse();
|
||||
}
|
||||
|
||||
public function getBindCourse(){
|
||||
$activityId = input('activity_id');
|
||||
|
||||
$list = $this->courseBindModel
|
||||
->with(['course'])
|
||||
->where([
|
||||
'activity_id'=>$activityId,
|
||||
'course.status'=>1
|
||||
])
|
||||
->select();
|
||||
|
||||
if($list){
|
||||
foreach ($list as &$item){
|
||||
$item->getRelation('course')->visible(['name','cover','id']);
|
||||
$item->visible(['id','course','count','subscription']);
|
||||
if(!$this->auth->isLogin()){
|
||||
$item->subscription = false;
|
||||
}else{
|
||||
$item->subscription = \app\common\model\user\Subscription::getSubscriptionAuth($this->auth->id,$item->course->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->success("获取成功", $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查参与权限
|
||||
* @return void
|
||||
*/
|
||||
public function checkJoinAuth(){
|
||||
|
||||
$activityId = input('activity_id');
|
||||
|
||||
$data = $this->courseBindModel->checkJoinAuth($this->auth->id,$activityId);
|
||||
|
||||
if($data){
|
||||
return $this->success("可以参与");
|
||||
}
|
||||
|
||||
return $this->error("请先订阅关联课程");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取课程关联的活动
|
||||
* @return void
|
||||
*/
|
||||
public function getCourseBindActivity(){
|
||||
$courseId = $this->request->post('course_id');
|
||||
$activityIds = $this->courseBindModel
|
||||
->where([
|
||||
'course_id'=>$courseId
|
||||
])
|
||||
->column('activity_id');
|
||||
|
||||
$query = \app\common\model\goods\Handle::getGoodsQuery();
|
||||
|
||||
$list = [];
|
||||
|
||||
if($activityIds) {
|
||||
$list = $query->where([
|
||||
'id'=>['in',$activityIds],
|
||||
'type'=>'activity'
|
||||
])->select();
|
||||
|
||||
if($list){
|
||||
foreach ($list as &$item){
|
||||
$priceInfo = \app\common\model\goods\Handle::parseGoodsExtendInfo($item['id'],$item['type']);
|
||||
$item = array_merge($item,$priceInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->success("获取成功",$list);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\activity;
|
||||
|
||||
use app\common\controller\Api;
|
||||
use think\Db;
|
||||
/**
|
||||
* 线下活动-表单
|
||||
*/
|
||||
class Form extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = [];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\api\model\app\activity\Form;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交表单
|
||||
* @return void
|
||||
*/
|
||||
public function submit(){
|
||||
$activityId = input('activity_id');
|
||||
|
||||
$activityDetail =\app\api\model\app\activity\Activity::getActivityDetail($activityId);
|
||||
|
||||
if(!$activityDetail){
|
||||
$this->error("获取活动信息失败");
|
||||
}
|
||||
|
||||
if(!$activityDetail['apply_status']){
|
||||
$this->error("当前活动暂时无法报名,请刷新后重试");
|
||||
}
|
||||
|
||||
|
||||
$fromField = $this->model->getFromField($activityId);
|
||||
|
||||
if(!$fromField){
|
||||
$this->error("获取表单数据失败,请刷新后重试");
|
||||
}
|
||||
|
||||
$form = input('form/a',[]);
|
||||
|
||||
$ids = [];
|
||||
|
||||
//判断手机号是否重复
|
||||
//判断手机号是否已经报名过了
|
||||
|
||||
|
||||
foreach ($form as $index => $item) {
|
||||
|
||||
if (count($fromField) != count($item)) {
|
||||
$this->error("请完善表单信息后提交");
|
||||
break;
|
||||
}
|
||||
|
||||
foreach ($form as $key => $option) {
|
||||
if($item[1] == $option[1] && $index != $key){
|
||||
$this->error("手机号码不能重复");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$isApply = $this->model
|
||||
->alias('form')
|
||||
->join(\app\api\model\app\activity\UserTicket::getTable() . ' ut','ut.apply_info_id = form.id')
|
||||
->where([
|
||||
'form.uniacid'=>UNIACID,
|
||||
'form.activity_id'=>$activityId,
|
||||
'form.mobile'=>$item[1],
|
||||
'ut.status'=>['in',[0,1]]
|
||||
])->find();
|
||||
|
||||
if($isApply){
|
||||
$this->error("手机号码{$item[1]}已经报过名了");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach ($form as $item){
|
||||
|
||||
$parseForm = $this->parseForm($fromField,$item);
|
||||
|
||||
$ids[] = $this->model->insertGetId([
|
||||
'uniacid'=>UNIACID,
|
||||
'user_id'=>$this->auth->id,
|
||||
'activity_id'=>$activityId,
|
||||
'name'=>$item[0],
|
||||
'mobile'=>$item[1],
|
||||
'other'=>json_encode($parseForm),
|
||||
'createtime'=>time()
|
||||
]);
|
||||
}
|
||||
|
||||
$this->success("提交成功",$ids);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 格式化表单
|
||||
* @param $formField
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function parseForm($formField,$data){
|
||||
$list = [];
|
||||
foreach ($formField as $index => $item){
|
||||
$list[] = [$item['name'],$data[$index]];
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取报名信息
|
||||
* @return void
|
||||
*/
|
||||
public function getApplyForm(){
|
||||
$activityId = input('activity_id');
|
||||
$fromField = $this->model->getFromField($activityId);
|
||||
|
||||
if(!$fromField){
|
||||
$this->error("获取报名信息失败");
|
||||
}
|
||||
|
||||
$this->success("获取成功",$fromField);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller\app\activity;
|
||||
|
||||
use app\common\controller\Api;
|
||||
use think\Db;
|
||||
/**
|
||||
* 线下活动-签到
|
||||
*/
|
||||
class Signin extends Api
|
||||
{
|
||||
|
||||
protected $noNeedLogin = ["signin"];
|
||||
// 无需鉴权的接口,*表示全部
|
||||
protected $noNeedRight = ['*'];
|
||||
|
||||
|
||||
public function _initialize()
|
||||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\api\model\app\activity\Form;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 签到
|
||||
* @return void
|
||||
*/
|
||||
public function signin()
|
||||
{
|
||||
$name = input('name','');
|
||||
$mobile = input('mobile','');
|
||||
$activityId = input('activity_id','');
|
||||
|
||||
$activityDetail =\app\api\model\app\activity\Activity::getActivityDetail($activityId);
|
||||
|
||||
if(!$activityDetail){
|
||||
$this->error("获取活动信息失败");
|
||||
}
|
||||
|
||||
if(!$activityDetail['status']){
|
||||
$this->error("当前不在活动时间");
|
||||
}
|
||||
|
||||
|
||||
$ticket = \app\api\model\app\activity\UserTicket::alias('uk')
|
||||
->join(\app\api\model\app\activity\Form::getTable() . ' form','uk.apply_info_id = form.id')
|
||||
->where([
|
||||
'form.name'=>$name,
|
||||
'form.mobile'=>$mobile,
|
||||
'uk.activity_id'=>$activityId,
|
||||
'uk.status'=>1
|
||||
])->field('uk.ticket_no,uk.id,uk.status,uk.sign')->find();
|
||||
|
||||
|
||||
if($ticket){
|
||||
|
||||
//判断有没有签到,未签到则改变签到状态
|
||||
if($ticket['sign'] == 0){
|
||||
\app\api\model\app\activity\Signin::signin($ticket['ticket_no']);
|
||||
}
|
||||
|
||||
$this->success("签到成功",$ticket['ticket_no']);
|
||||
}
|
||||
|
||||
$this->error("根据你提交的报名信息,没有查询到相关票券");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
<?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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user