Activity.php 8.2 KB
<?php

namespace app\api\controller;

use app\common\controller\Api;
use app\common\model\Active;
use app\common\model\Item;
use app\common\model\Ronda;

/**
 * 活动接口
 * @ApiWeigh    (97)
 */
class Activity extends Api
{
    protected $noNeedLogin = ['getSchoolItem'];
    protected $noNeedRight = ['*'];

    /**
     * @ApiTitle (活动首页)
     * @ApiMethod (POST)
     * @ApiParams   (name="page", type="string", required=false, description="当前页[非必填]")
     * @ApiReturn   ({"code":状态码,
    "msg":"提示信息"
    "time": "时间戳",
    "data": [
    "id": 1,
    "title": "活动名称",
    "images": "活动图片",
    "depict": "描述",
    ]
    })
     */
    public function index()
    {
        $page = $this->request->param('page');
        $data = db('activity')
            ->order('createtime DESC')
            ->paginate(10,false,['page'=>$page])
            ->each(function ($item,$key){
                $item['images'] = cdnurl($item['image'], true);
                $item['createtime'] = date('Y-m-d', $item['createtime']);
                return $item;
        });
        if (!$data) {
            $this->error('当前还没有活动', ['status' => 2]);
        }
        $this->success('全部活动', $data);

    }

    /**
     * @ApiTitle (活动详情)
     * @ApiMethod (POST)
     * @ApiParams   (name="id", type="interge", required=false, description="活动ID")
     * @ApiReturn   ({"code":状态码,
    "msg":"提示信息"
    "time": "时间戳",
    "data": [
    "title": "活动名称",
    "images": "活动图片",
    "depict": "描述",
    ]
    })
     */
    public function activeDetails(){
        $id = $this->request->param('id');
        $model = new Active();
        $data = $model->where('id',$id)->find()->toArray();
        $this->success('',$data);
    }


    /**
     * @ApiTitle (届次)
     * @ApiMethod (POST)
     * @ApiParams   (name="id", type="interge", required=true, description="活动id")
     * @ApiReturnParams   (name="code", type="integer", required=true, description="状态码")
     * @ApiReturnParams   (name="msg", type="string", required=true, description="提示语")
     * @ApiReturnParams   (name="data", type="object", description="扩展数据返回")
     * @ApiReturn   ({
    "code":"状态码",
    "msg": "提示消息",
    "data": {}
    })
     */
    public function getSchoolItem()
    {
        $param = $this->request->param();
        $data = db('campus c')
            ->join('activity a','a.id = c.activity_id')
            ->join('school s','s.id = c.school_id')
            ->field('c.*,a.title as activity_name,s.title as school_name')
            ->where('c.activity_id',$param['id'])
            ->select();
        if (empty($data)) {
            $this->error('当前还没有届次', ['status' => 2]);
        }
        $this->success('届次', $data);
    }

    /**
     * @ApiTitle (场次筛选)
     * @ApiMethod (POST)
     * @ApiParams   (name="cid", type="string", required=false, description="届次id")
     * @ApiReturnParams   (name="code", type="integer", required=true, description="状态码")
     * @ApiReturnParams   (name="msg", type="string", required=true, description="提示语")
     * @ApiReturnParams   (name="data", type="object", description="扩展数据返回")
     * @ApiReturn   ({
    "code":"状态码",
    "msg": "提示消息",
    "data": {
    "campus_title": "届次名称",
    "ronda_title": "场次",
    "ronda_holdtime": "场次时间",
    }
    })
     */
    public function getRonda()
    {
        $cid = $this->request->param('cid');
        if (empty($cid)) {
            $this->error('参数错误', ['status' => 2]);
        }
//        $data = db('ronda r')
//            ->join('campus c','c.id = r.campus_id')
//            ->field('r.id as rid,c.title as campus_title,r.title as ronda_title,r.holdtime as ronda_holdtime')
//            ->where('r.campus_id',$cid)
//            ->paginate(10,false)
//            ->each(function ($item,$key){
//                $item['holdtime'] = date('Y-m-d',$item['ronda_holdtime']);
//                return $item;
//            });
        $data = db('ronda')
            ->where('campus_id',$cid)
            ->paginate(10,false)
            ->each(function ($item,$key){
                $item['rid'] = $item['id'];
                $item['campus_title'] = db('campus')->where('id',$item['campus_id'])->value('title');
                $item['ronda_title'] = $item['title'];
                $item['ronda_holdtime'] = date('Y-m-d',$item['holdtime']);
                $item['images'] = cdnurl($item['images'],true);
                $item['details'] = strip_tags($item['details']);
                return $item;
            });
        $this->success('获取场次列表成功', $data);
    }

    /**
     * @ApiTitle (项目筛选)
     * @ApiMethod (POST)
     * @ApiParams   (name="rid", type="string", required=false, description="场次id")
     * @ApiReturnParams   (name="code", type="integer", required=true, description="状态码")
     * @ApiReturnParams   (name="msg", type="string", required=true, description="提示语")
     * @ApiReturnParams   (name="data", type="object", description="扩展数据返回")
     * @ApiReturn   ({
    "code":"状态码",
    "msg": "提示消息",
    "data": {
    "campus_title": "届次名称",
    "ronda_title": "场次",
    "ronda_holdtime": "场次时间",
    }
    })
     */
    public function getItem()
    {
        $rid = $this->request->param('rid');
        if (empty($rid)) {
            $this->error('参数错误', ['status' => 2]);
        }
        $model = new Ronda();
        $list = $model->where('id',$rid)->value('item_ids');
        $item = explode(',',$list);
        foreach ($item as $k){
            $data[] = db('item')->where('id',$k)->field('id,title')->find();
        }
        $this->success('获取项目列表成功', $data);
    }

    /**
     * @ApiTitle (场次详情)
     * @ApiMethod (POST)
     * @ApiParams   (name="rid", type="string", required=false, description="场次id")
     * @ApiReturnParams   (name="code", type="integer", required=true, description="状态码")
     * @ApiReturnParams   (name="msg", type="string", required=true, description="提示语")
     * @ApiReturnParams   (name="data", type="object", description="扩展数据返回")
     * @ApiReturn   ({
    "code":"状态码",
    "msg": "提示消息",
    "data": {
    "images": "场次图片",
    "details": "场次详情"
    })
     */
    public function getRondaDetails()
    {
        $rid = $this->request->param('rid');
        $data = db('ronda')
            ->where('id', $rid)
            ->find();
        $images = explode(',',$data['images']);
        foreach ($images as $k){
            $list[] = cdnurl($data['images'], true);
        }
        $data['images'] = $list;
        $this->success('获取场次详情成功', $data);
    }

    /**
     * @ApiTitle (项目详情)
     * @ApiMethod (POST)
     * @ApiParams   (name="rid", type="string", required=false, description="场次id")
     * @ApiParams   (name="id", type="string", required=false, description="项目id")
     * @ApiReturnParams   (name="code", type="integer", required=true, description="状态码")
     * @ApiReturnParams   (name="msg", type="string", required=true, description="提示语")
     * @ApiReturnParams   (name="data", type="object", description="扩展数据返回")
     * @ApiReturn   ({
    "code":"状态码",
    "msg": "提示消息",
    "data": {
    "campus_title": "届次名称",
    "ronda_title": "场次名称",
    "images": "项目图片",
    "details": "项目详情"
    })
     */
    public function getItemDetails()
    {
        $rid = $this->request->param('rid');
        $id = $this->request->param('id');
//        $where['ronda_ids'] = ['in',$rid];
        $where['id'] = $id;
        $model = new Item();
        $data = $model->where($where)->find();
        $data['details'] = strip_tags($data['details']);
        $this->success('获取项目详情成功', $data);
    }
}