<?php

namespace app\admin\controller\sys_manage;

use app\admin\service\sys_manage\DeptService;
use app\admin\service\sys_manage\RoleService;
use app\admin\service\sys_manage\UserService;
use app\admin\validate\sys_manage\UserValidate;
use support\Request;

class User
{
    /**
     * @Desc 用户列表
     * @Author Gorden
     * @Date 2024/2/21 14:46
     *
     * @param Request $request
     * @return \support\Response
     */
    public function userList(Request $request)
    {
        $page = $request->get('page', 1);
        $limit = $request->get('limit', 10);
        $keywords = $request->get('keywords', '');

        return UserService::userList($page, $limit, $keywords);
    }

    /**
     * @Desc 用户详情
     * @Author Gorden
     * @Date 2024/2/21 14:53
     *
     * @param $id
     * @return \support\Response
     */
    public function userInfo($id)
    {
        return UserService::userInfo($id);
    }

    /**
     * @Desc 添加用户
     * @Author Gorden
     * @Date 2024/2/21 14:53
     *
     * @param Request $request
     * @return \support\Response
     */
    public function addUser(Request $request)
    {
        $validate = new UserValidate();
        if (!$validate->scene('add')->check($request->post())) {
            return json_fail($validate->getError());
        }
        // 账号是否已存在
        if (UserService::checkUserExist($request->post('user_login_name'))) {
            return json_fail('账号已存在');
        }
        // 部门是否存在
        if (!empty($request->post('join_user_dept_id')) && !DeptService::checkDeptExist($request->post('join_user_dept_id'))) {
            return json_fail('部门不存在');
        }
        // 角色是否存在
        if (!empty($request->post('join_user_role_id')) && !RoleService::checkRoleExist($request->post('join_user_role_id'))) {
            return json_fail('角色不存在');
        }

        return UserService::insertUser($request->post());
    }

    /**
     * @Desc 修改用户
     * @Author Gorden
     * @Date 2024/2/21 14:07
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateUser($id, Request $request)
    {
        $validate = new UserValidate();
        if (!$validate->scene('update')->check($request->post())) {
            return json_fail($validate->getError());
        }
        // 部门是否存在
        if (!empty($request->post('join_user_dept_id')) && !DeptService::checkDeptExist($request->post('join_user_dept_id'))) {
            return json_fail('部门不存在');
        }
        // 角色是否存在
        if (!empty($request->post('join_user_role_id')) && !RoleService::checkRoleExist($request->post('join_user_role_id'))) {
            return json_fail('角色不存在');
        }

        return UserService::updateUser($id, $request->post());
    }

    /**
     * @Desc 修改用户状态
     * @Author Gorden
     * @Date 2024/2/21 15:03
     *
     * @param $id
     * @param Request $request
     * @return \support\Response
     */
    public function updateStatus($id, Request $request)
    {
        $validate = new UserValidate();
        if (!$validate->scene('update_status')->check($request->post())) {
            return json_fail($validate->getError());
        }

        return UserService::updateStatus($id, $request->post());
    }

    /**
     * @Desc 删除用户
     * @Author Gorden
     * @Date 2024/2/21 15:11
     *
     * @param $id
     * @return \support\Response
     */
    public function delUser($id)
    {
        return UserService::delUser($id);
    }
}