YearsController.php 13.2 KB
<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: Dean <zxxjjforever@163.com>
// +----------------------------------------------------------------------
namespace api\home\controller;

use think\Db;
use think\Validate;
use cmf\controller\RestBaseController;
use app\portal\model\YearsModel;
use app\portal\model\SpotModel;
use app\portal\model\TestModel;
/**
 * @title 年检
 */
class YearsController extends RestBaseController
{

    /**
     * @title 添加检测
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/addYearTest
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     * @param name:test_time type:inter require:1 default: other desc:检测点时间
     * @param name:address type:string require:1 default: other desc:检测点地点
     * @param name:remark type:string require:1 default: other desc:检测点备注
     */
    public function addYearTest(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }

            $rule = config('site.add_year_test');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }

            $data['project_id'] = $user['project_id'];
            $data['create_time'] = time();
            //单号
            $data['number'] = $common->genOrderSn();
            $data['uid'] = $this->userId;
            $test = new TestModel();
            $res = $test->create($data);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 检测列表
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/testList
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:page type:inter require:1 default: other desc:分页页码
     * @return data: @
     * @data id:年检检测id project_id:项目id test_time:检测时间 address:检测地点 remark:检测备注 company_name:检测甲方公司
     * @return page:当前页数
     * @return total_page:总页数
     */
    public function testList(){
        if($this->request->isGet()){
            $page = $this->request->get('page');
            $rule = config('site.pages');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['page'=>$page])) {
                $this->error($validate->getError());
            }
            $common = new CommonController();
            $res = $common->getTestList($page);
            //查询总页数
            $total_page = $common->getTestPage();
            $this->success('成功',['data'=>$res,'page'=>intval($page),'total_page'=>$total_page]);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 检测详情
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/testDetail
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:inter require:1 default: other desc:年检检测id
     *
     * @return id:年检检测id
     * @return project_id:项目id
     * @return test_time:检测时间
     * @return address:检测地点
     * @return remark:检测备注
     * @return company_name:检测甲方公司
     * @return spot:年检点@
     * @spot id:检测点id spot_name:检测点名称 status:检测点状态(0:正常,1:故障,2:未检测)
     */
    public function testDetail(){
        if($this->request->isGet()){
            $id = $this->request->get('id');

            $rule = config('site.data');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['id'=>$id])) {
                $this->error($validate->getError());
            }
            $res = Db::name('test')
                ->where('id',$id)
                ->field('id,project_id,test_time,address,remark')
                ->find();
            if($res){
                $common = new CommonController();
                $company_name = $common->getACompanyName($res['project_id']);
                $res['company_name'] = $company_name;
                //获取巡检点
                $spot = $common->getSpotList(['test_id'=>$res['id'],'project_id'=>$res['project_id']]);
                $res['spot'] = $spot;
            }
            $this->success('成功',$res);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 添加检测点
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/addSpot
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:test_id type:string require:1 default: other desc:检测id
     * @param name:spot_name type:string require:1 default: other desc:检测点名称
     * @param name:project_id type:string require:1 default: other desc:项目id
     *
     * @return id:检测点id
     */
    public function addSpot(){
        if($this->request->post()){
            $data = $this->request->post();

            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }

            $rule = config('site.add_spot');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $data['create_time'] = time();
            $spotModel = new SpotModel();
            $res = $spotModel->create($data);
            if($res){
                $this->success('成功',['id'=>$res->id]);
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 删除检测点
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/deleteSpot
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:string require:1 default: other desc:检测点id
     */
    public function deleteSpot(){
        if($this->request->get()){
            $id = $this->request->get('id');

            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }

            $rule = config('site.data');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['id'=>$id])) {
                $this->error($validate->getError());
            }

            $spotModel = new SpotModel();
            $res = $spotModel->where('id',$id)->delete();
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 检测点详情
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/spotDetail
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:inter require:1 default: other desc:检测点id
     *
     * @return id:检测点id
     * @return spot_name:检测点名称
     * @return test_id:检测id
     * @return status:检测点状态(0:正常,1:故障,2:未检测)
     * @return project_id:项目id
     * @return project_name:项目名称
     * @return images:检测点图片@
     * @images image_url:图片路径 file_time:图片时间
     */
    public function spotDetail(){
        if($this->request->isGet()){
            $id = $this->request->get('id');
            $rule = config('site.ins_add');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['id'=>$id])) {
                $this->error($validate->getError());
            }
            //查询年检名称,状态
            $res = Db::name('spot')
                ->where(['id'=>$id])
                ->field('id,test_id,spot_name,project_id')
                ->find();
            if($res){
                $res['status'] = 2;
                $res['images'] = [];
                //查询检测时间
                $common = new CommonController();
                //根据检测时间查看是否检测巡检点
                $years = $common->getYearsList($id,'status,images');

                //查询项目名称
                $project = $common->getProject(['id'=>$res['project_id']],'id,name project_name');
                $res['project_name'] = isset($project)&&!empty($project)?$project['project_name']:'';
                if($years){
                    $res['status'] = $years['status'];
                    $res['images'] = $common->absolutionUrl($years['images']);
                }
            }
            $this->success('成功',$res);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 添加检测点状态
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/addTestStatus
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:spot_id type:inter require:1 default: other desc:检测点id
     * @param name:project_id type:inter require:1 default: other desc:项目id
     * @param name:test_id type:inter require:1 default: other desc:检测id
     * @param name:status type:inter require:1 default: other desc:检测点状态(0:正常,1:故障)
     * @param name:images type:array require:1 default: other desc:检测点图片(二维数组形式)
     */
    public function addTestStatus(){
        if($this->request->isPost()){
            $data = $this->request->post();

            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.add_status');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            //绝对路径转相对路径
            $images = $common->relationUrl($data['images']);
            $data['images'] = $images;
            $data['uid'] = $this->userId;
            $data['create_time'] = time();
            $years = new YearsModel();
            $res = $years->create($data);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 修改检测点状态
     * @description 接口说明
     * @author 开发者
     * @url /api/home/years/editTestStatus
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:spot_id type:inter require:1 default: other desc:检测点id
     * @param name:status type:inter require:1 default: other desc:检测点状态(0:正常,1:故障)
     * @param name:images type:array require:1 default: other desc:检测点图片(二维数组形式)
     */
    public function editTestStatus(){
        if($this->request->isPost()){
            $data = $this->request->post();

            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.test_status');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            //绝对路径转相对路径
            $images = $common->relationUrl($data['images']);
            $years = new YearsModel();
            $res = $years->where(['spot_id'=>$data['spot_id']])->update(['status'=>$data['status'],'images'=>$images]);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

}