ProjectUserController.php 3.9 KB
<?php

namespace App\Http\Controllers\Aside\User;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\User\UserLogic;
use App\Http\Requests\Aside\User\UserRequest;
use App\Models\User\ProjectRole;
use App\Models\User\User;
use App\Models\User\User as UserModel;

/**
 * @remark :b端用户管理
 * @name   :ProjectUserController
 * @author :lyh
 * @time   :2023/6/17 16:24
 */
class ProjectUserController extends BaseController
{
    //超级管理员
    const ROLE_ID = 0;
    /**
     * @remark :超级管理员用户列表
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2023/6/25 9:27
     */
    public function lists(){
        $userModel = new UserModel();
        $query = $userModel->leftJoin('gl_project', 'gl_project_user.project_id', '=', 'gl_project.id')
                            ->leftJoin('gl_project_role', 'gl_project_user.role_id', '=', 'gl_project_role.id');
        $query = $this->searchParam($query);
        $lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page);
        $this->response('列表',Code::SUCCESS,$lists);
    }

    /**
     * @remark :查询字段
     * @name   :selectParam
     * @author :lyh
     * @method :post
     * @time   :2023/8/4 11:44
     */
    public function selectParam(){
        $select = [
            'gl_project_user.id AS id',
            'gl_project.title AS title',
            'gl_project_user.project_id AS project_id',
            'gl_project_user.mobile AS mobile',
            'gl_project_user.email AS email',
            'gl_project_user.status AS status',
            'gl_project_user.name AS name',
            'gl_project_role.name AS role_name',
        ];
        return $select;
    }

    public function searchParam(&$query){
        //搜索条件处理
        if(isset($this->map['title'])){
            $query = $query->where('gl_project.title','like','%'.$this->map['title'].'%');
        }
        if(isset($this->map['name'])){

            $query = $query->where('gl_project_user.name',$this->map['name'][0],$this->map['name'][1]);
        }
        if(isset($this->map['mobile'])){
            $query = $query->where('gl_project_user.mobile','like','%'.$this->map['mobile'].'%');
        }
        return $query;
    }

    /**
     * @remark :用户详情
     * @name   :info
     * @author :lyh
     * @method :post
     * @time   :2023/6/25 9:27
     */
    public function info(UserLogic $userLogic){
        $this->request->validate([
            'id'=>'required'
        ],[
            'id.required' => 'ID不能为空'
        ]);
        $info = $userLogic->user_info();
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @remark :保存用户
     * @name   :edit
     * @author :lyh
     * @method :post
     * @time   :2023/6/25 9:28
     */
    public function save(UserRequest $request,UserLogic $userLogic){
        $request->validated();
        $userLogic->projectUserSave();
        $this->response('success');
    }

    /**
     * @param UserLogic $userLogic
     * @remark :编辑用户
     * @name   :del
     * @author :lyh
     * @method :post
     * @time   :2023/6/25 9:28
     */
    public function del(UserLogic $userLogic){
        $this->request->validate([
            'id'=>['required','array'],
        ],[
            'id.required' => 'ID不能为空',
            'id.array' => 'ID为数组',
        ]);
        $userLogic->user_del();
        $this->response('success');
    }

    /**
     * @remark :获取项目角色
     * @name   :getRole
     * @author :lyh
     * @method :post
     * @time   :2023/8/29 13:47
     */
    public function getRole(){
        $this->request->validate([
            'project_id'=>'required',
        ],[
            'project_id.required' => 'project_id不能为空',
        ]);
        $roleModel = new ProjectRole();
        $list =  $roleModel->list($this->map);
        $this->response('success',Code::SUCCESS,$list);
    }
}