ComController.php 3.9 KB
<?php

namespace App\Http\Controllers\Bside;

use App\Enums\Common\Code;
use App\Models\Project as ProjectModel;
use App\Models\ProjectMenu as ProjectMenuModel;
use App\Models\ProjectRole as ProjectRoleModel;
use App\Models\User as UserModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;

/***
 * 当前为公共类  所有方法均不需要验证登录token
 */
class ComController extends BaseController
{
    /**
     * @name :管理员登录
     * @return void
     * @author :liyuhang
     * @method
     */
    public function login(Request $request){
        $request->validate([
            'mobile'=>['required,string,max:12'],
            'password'=>['required,string'],
        ],[
            'mobile.required'=>'标题必须填写',
            'mobile.string'=>'标题中含有非法文字',
            'password.required'=>'内容必须填写',
            'password.string'=>'内容中含有非法文字',
            'mobile.max'   =>  'account不大于12字符.',
        ]);
        $userModel = new UserModel();
        $res = $userModel->login($this->param);
        if($res === false){
            $this->response('当前用户不存在或者被禁用,登录失败',Code::USER_ERROR,[]);
        }
        $this->response('请求成功',Code::SUCCESS,$res);
    }

    /**
     * @name :获取当前用户权限菜单列表
     * @return void
     * @author :liyuhang
     * @method
     */
    public function get_menu(){
        //根据当前登录用户角色返回用户菜单列表
        $projectRoleModel = new ProjectRoleModel();
        $info = $projectRoleModel->read(['id'=>$this->user['role_id']]);
        $projectMenuModel = new ProjectMenuModel();
        $info['role_menu'] = trim($info['role_menu'],',');
        $lists = $projectMenuModel->where(['status'=>0,'is_role'=>0])->whereIn('id',explode(',',$info['role_menu']))->get();
        $lists = $lists->toArray();
        $menu = array();
        foreach ($lists as $k => $v){
            $v = (array)$v;
            if ($v['pid'] == 0) {
                $v['sub'] = $this->_get_child($v['id'], $lists);
                $menu[]   = $v;
            }
        }
        $this->response('当前用户菜单列表',Code::SUCCESS,$menu);
    }

    /**
     * @name :获取当前项目详情
     * @return void
     * @author :liyuhang
     * @method
     */
    public function get_project(){
        $projectModel = new ProjectModel();
        $info = $projectModel->read(['id'=>$this->user['project_id']]);
        if(empty($info)){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @name :登录用户编辑资料/修改密码
     * @return void
     * @author :liyuhang
     * @method
     */
    public function edit_info(Request $request){
        $request->validate([
            'password'=>['required,string,min:5'],
            'name'=>['required,max:20'],
        ],[
            'password.required'=>'密码必须填写',
            'password.string'=>'密码中含有非法文字',
            'password.min'   =>  '密码不小于5字符.',
            'name.required'=>'名称必须填写',
            'name.min'   =>  '名称不小于5字符.',
        ]);
        $userModel = new UserModel();
        $this->param['id'] = $this->uid;
        $rs = $userModel->edits($this->param);
        if($rs === false){
            $this->response('参数错误或其他服务器原因,编辑失败',Code::USER_ERROR);
        }
        $this->response('编辑成功');
    }

    /**
     * @name :退出登录
     * @return void
     * @author :liyuhang
     * @method :post
     */
    public function logout(){
        $rs = Cache::pull($this->token);
        if($rs === false){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success');
    }
}