TrainController.php 13.4 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\TrainModel;
/**
 * @title 培训
 */
class TrainController extends RestBaseController
{

    /**
     * @title 甲方申请培训列表
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/trainList
     * @method GET
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:page type:inter require:1 default: other desc:分页页码
     * @param name:status type:inter require:1 default: other desc:切换状态(-1:全部,1:待领导确认(乙方领导(确认,驳回)),2:进行中,3:已完成)
     * @return data:培训列表@
     * @data id:培训id uid:甲方提交人id status:培训状态(0:甲方提交申请,1:乙方领导驳回,2:乙方领导确认,3:完成 ) user_login:甲方发起人 b_leader:乙方确认领导 project_name:项目名称 train_time:培训时间 address:培训地点
     * @return page:当前页数
     * @return total_page:总页数
     */
    public function trainList(){
        if($this->request->isGet()){
            $page = $this->request->get('page');
            $status = $this->request->get('status');//切换状态(-1:全部,1:待领导确认(-1:全部,1:待领导确认(乙方领导(确认,驳回)),2:进行中,3:已完成)

            $limit = config('site.limit');
            $rule = config('site.pages_list');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check(['page'=>$page,'status'=>$status])) {
                $this->error($validate->getError());
            }
            //显示甲方发起人,乙方确认领导,项目名称,培训演习时间
            $common = new CommonController();
            $project = $common->getUserIdentity();
            //如果不是甲乙方员工,则没有权限操作
            if($project['identity'] != config('site.a_staff') && $project['identity'] != config('site.b_staff')){
                $this->error('无权操作');
            }
            if($status == 1){
                $where = ['project_id' => $project['project_id'], 'status' => 0];
            }else if($status == 2 || $status == 3){
                $where = ['project_id' => $project['project_id'], 'status' => $status];
            }else{
                $where = ['project_id' => $project['project_id']];
            }
            $res = Db::name('train')
                ->where($where)
                ->page($page,$limit)
                ->field('id,uid,status,b_leader,train_time,address')
                ->order('id desc')
                ->select()
                ->toArray();
            $total_page = $common->getCountPage('train',$where);
            foreach($res as &$value){
                //查看甲方提交人用户信息
                $user = $common->getUserById(['id'=>$value['uid']]);
                $value['user_login'] = isset($user['user_login'])&&!empty($user['user_login'])?$user['user_login']:'';

                //查看乙方确认领导
                $leader = $common->getUserById(['id'=>$value['b_leader']]);
                $value['b_leader'] = isset($leader['user_login'])&&!empty($leader['user_login'])?$leader['user_login']:'';
                $value['project_name'] = $project['project_name'];
            }
            $this->success('成功',['data'=>$res,'page'=>intval($page),'total_page'=>$total_page]);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 甲方提交培训申请
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/applyTrain
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:train_time type:int 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 applyTrain(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getUserIdentity();
            //如果是乙方,则没有权限操作
            if($user['party'] == 1){
                $this->error('无权操作');
            }
            $rule = config('site.train_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $data['uid'] = $this->userId;
            $data['project_id'] = $user['project_id'];
            $data['create_time'] = time();
            $data['number'] = $common->genOrderSn();
            $trainModel = new TrainModel();
            $res = $trainModel->create($data);
            if($res){
                $this->success('培训信息提交成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 甲方重新发起申请显示(被驳回)
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/reEditTrain
     * @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 train_time:培训时间
     * @return address:培训地点
     * @return remark:培训备注
     * @return advice_time:驳回建议时间
     */
    public function reEditTrain(){
        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,train_time,address,remark,advice_time';
            $res = $common->getTrainById(['id'=>$id,'status'=>1],$field);
            $this->success('成功',$res);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 甲方重新发起申请提交(被驳回)
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/reApplyTrain
     * @method POST
     *
     * @header name:token require:1 default: desc:header
     *
     * @param name:id type:int require:1 default: other desc:培训id
     * @param name:train_time type:int 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 reApplyTrain(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $common = new CommonController();
            $user = $common->getIdentity();
            //如果是乙方,则没有权限操作
            if($user['party'] == 1){
                $this->error('无权操作');
            }
            $rule = config('site.re_train_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $arr['uid'] = $this->userId;
            $arr['status'] = 0;
            $arr['train_time'] = $data['train_time'];
            $arr['address'] = $data['address'];
            $arr['remark'] = $data['remark'];
            $trainModel = new TrainModel();
            $res = $trainModel->where(['id'=>$data['id'],'status'=>1])->update($arr);
            if($res){
                $this->success('培训信息重新提交成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 甲乙方员工完善培训单详情
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/improveTrainDetail
     * @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 train_time:培训时间
     * @return address:培训地点
     * @return images:完善图片@
     * @images image_url:图片路径 file_time:图片时间
     * @return remark:培训备注
     * @return number:培训单号
     */
    public function improveTrainDetail(){
        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();
            $user = $common->getUserIdentity();
            if($user['identity'] != config('site.a_staff') && $user['identity'] != config('site.b_staff')){
                $this->error('无权操作');
            }
            $field = 'id,train_time,address,images,number';
            $res = $common->getTrainById(['id'=>$id,'status'=>2],$field);
            if($res){
                //查询培训演习项目
                $res['project_name'] = $user['project_name'];

                if($res['images']){
                    $res['images'] = $common->absolutionUrl($res['images']);
                }else{
                    $res['images'] = [];
                }
            }
            $this->success('成功',$res);
        }else{
            $this->error('请求方式错误!');
        }
    }

    /**
     * @title 甲乙方员工完善培训单
     * @description 接口说明
     * @author 开发者
     * @url /api/home/train/improveTrainPost
     * @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 improveTrainPost(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $rule = config('site.improve_check_post');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }
            $common = new CommonController();
            $user = $common->getIdentity();
            //如果不是甲乙方员工,则无权操作
            if($user['identity'] != config('site.a_staff') && $user['identity'] != config('site.b_staff')){
                $this->error('无权操作');
            }
            $trainModel = new TrainModel();
            $images = $common->relationUrl($data['images']);
            $res = $trainModel->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/train/finishTrain
     * @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:file require:1 default: other desc:验收照片(二维数组形式)
     */
    public function finishTrain(){
        if($this->request->isPost()){
            $data = $this->request->post();
            $rule = config('site.check_train');
            $validate = new Validate($rule['rule'],$rule['msg']);
            if (!$validate->check($data)) {
                $this->error($validate->getError());
            }

            $common = new CommonController();
            $user = $common->getIdentity();
            //如果不是甲乙方员工,则无权操作
            if($user['identity'] != config('site.a_staff') && $user['identity'] != config('site.b_staff')){
                $this->error('无权操作');
            }
            $trainModel = new TrainModel();
            $confirm_images = $common->relationUrl($data['confirm_images']);
            $arr = [
                'confirm_uid'=>$this->userId,
                'finish_time'=>time(),
                'status'=>3,
                'confirm_images'=>$confirm_images
            ];
            $res = $trainModel->where(['id'=>$data['id'],'status'=>2])->update($arr);
            if($res){
                $this->success('成功');
            }else{
                $this->error('失败');
            }
        }else{
            $this->error('请求方式错误!');
        }
    }

}