CheckController.php 13.0 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\CheckModel;
/**
 * @title 月检
 */
class CheckController extends RestBaseController
{

    /**
     * @title 甲方项目组人员
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/userAGroup
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * name:project_id type:inter require:1 default: other desc:项目id
     *
     * @return data:数据@
     * @data id:负责人id user_login:负责人姓名
     */
    public function userAGroup(){
        if($this->request->isGet()){
            $project_id = $this->request->get('project_id');
            $rule = config('site.project_id');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['project_id'=>$project_id])) {
                $this->error($validate->getError());
            }

            $common = new CommonController();
            //根据项目id获取甲方uid
            $users = $common->getUserByProject($project_id,'id,a_sid');
            $this->success('成功',['data'=>$users]);
        }else{
            $this->error('请求方式错误!');
        }
    }


    /**
     * @title 乙方发起月检申请
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/applyCheck
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:ins_m_time type:int require:1 default: other desc:月检时间
     * @param name:project_id type:int require:1 default: other desc:项目id
     * @param name:address type:string require:1 default: other desc:月检地点
     * @param name:a_uid type:inter require:1 default: other desc:甲方负责人id
     * @param name:remark type:string require:1 default: other desc:月检申请备注
     */
    public function applyCheck(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.ins_m_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }

            $data['uid'] = $this->userId;
            //单号
            $data['number'] = $common->genOrderSn();
            $data['create_time'] = time();
            $checkModel = new CheckModel();
            $res = $checkModel->create($data);
            if($res){
                $this->success('月检信息提交成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 月检信息列表
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/checkList
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:page type:inter require:1 default: other desc:分页页码
     * @param name:project_id type:inter require:1 default: other desc:项目id
     * @return data: @
     * @data id:月检id user_login:乙方发起人 status:月检状态(0:待甲方领导确认,1:甲方领导驳回,2:待乙方员工完成,3:已完成) project_name:项目名称 ins_m_time:月检时间 leader:甲方确认领导
     * @return page:当前页数
     * @return total_page:总页数
     */
    public function checkList(){
        if($this->request->isGet()){
            $page = $this->request->get('page');
            $project_id = $this->request->get('project_id');

            $rule = config('site.pages');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['page'=>$page,'project_id'=>$project_id])) {
                $this->error($validate->getError());
            }
            $common = new CommonController();
            $res = $common->getCheckList($page,$project_id);
            //查询总页数
            $total_page = $common->getCheckPage();
            $this->success('成功',['data'=>$res,'page'=>intval($page),'total_page'=>$total_page]);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 重新编辑显示(甲方领导驳回)
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/reEditCheck
     * @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 ins_m_time:月检时间
     * @return address:月检地点
     * @return a_uid:月检甲方负责人uid
     * @return remark:月检备注
     */
    public function reEditCheck(){
        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());
            }
            $common = new CommonController();
            $field = 'id,ins_m_time,address,a_uid,remark';
            $res = $common->getCheckById(['id'=>$id,'status'=>1],$field);
            $this->success('成功',$res);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 乙方重新发起月检提交(被驳回)
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/reApplyCheck
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:inter require:1 default: other desc:月检id
     * @param name:ins_m_time type:int require:1 default: other desc:月检时间
     * @param name:address type:string require:1 default: other desc:月检地点
     * @param name:a_uid type:inter require:1 default: other desc:甲方负责人id
     * @param name:remark type:string require:1 default: other desc:月检申请备注
     */
    public function reApplyCheck(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.ins_re_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $arr['ins_m_time'] = $data['ins_m_time'];
            $arr['address'] = $data['address'];
            $arr['a_uid'] = $data['a_uid'];
            $arr['remark'] = $data['remark'];
            $arr['uid'] = $this->userId;
            $arr['status'] = 0;
            $checkModel = new CheckModel();
            $res = $checkModel->where(['id'=>$data['id'],'status'=>1])->update($arr);
            if($res){
                $this->success('月检信息重新提交成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 完善月检单显示
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/improveCheck
     * @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 ins_m_time:月检日期
     * @return project_name:月检项目名称
     * @return user_login:确认甲方领导
     * @return images:月检图片@
     * @images image_url:图片路径 file_time:图片时间
     */
    public function improveCheck(){
        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());
            }
            $arr = [];
            $common = new CommonController();
            $field = 'id,ins_m_time,a_leader,images,project_id';
            $res = $common->getCheckById(['id'=>$id],$field);
            if($res){
                $arr['id'] = $res['id'];
                $arr['ins_m_time'] = $res['ins_m_time'];
                //查询项目名称
                $project = $common->getProject(['id'=>$res['project_id']],'id,name project_name');
                $arr['project_name'] = isset($project)&&!empty($project)?$project['project_name']:'';
                //查询甲方领导人
                $user = $common->getLeader(['id'=>$res['a_leader']]);
                $arr['user_login'] = isset($user)&&!empty($user)?$user['user_login']:'';
                //相对路径转绝对路径
                if($res['images']){
                    $res['images'] = $common->absolutionUrl($res['images']);
                }else{
                    $res['images'] = [];
                }
                $arr['images'] = $res['images'];
            }
            $this->success('成功',$arr);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 完善月检单提交
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/improveCheckPost
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:inter require:1 default: other desc:月检id
     * @param name:images type:array require:1 default: other desc:月检图片(二维数组形式)
     *
     */
    public function improveCheckPost(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.improve_check_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $checkModel = new CheckModel();

            //绝对路径转相对路径
            $images = $common->relationUrl($data['images']);

            $res = $checkModel->where(['id'=>$data['id'],'status'=>2])->update(['images'=>$images]);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }

        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 乙方确认完成月检信息
     * @description 接口说明
     * @author 开发者
     * @url /api/home/check/finishCheck
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:inter require:1 default: other desc:月检id
     * @param name:confirm_images type:array require:1 default: other desc:验收照片(二维数组形式)
     */
    public function finishCheck(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getIdentity();
            //如果是甲方,则没有权限操作
            if($user['party'] == 0){
                $this->error('无权操作');
            }
            $rule = config('site.check_check');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $checkModel = new CheckModel();
            $confirmImages = $common->relationUrl($data['confirm_images']);
            $data1 = [
                'finish_uid'=>$this->userId,
                'finish_time'=>time(),
                'status'=>3,
                'confirm_images'=>$confirmImages
            ];
            $res = $checkModel->where(['id'=>$data['id'],'status'=>2])->update($data1);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }
}