param(); $res = db('system_user')->where('user_idcard', $param['idcard'])->where('del_time',null)->find(); if ($res == null) { return $this->sendError(40001,"用户未注册,请联系管理员",null); } if ($res != null && md5($param['password']) != $res['user_pw']) { return $this->sendError(40001,"密码错误,请重新输入",null); } //分类查找用户详细信息 $ret = []; //客户 if (1 == $res['user_type']) { $ret = db('hr_staff')->where('staff_idcard', $param['idcard']) ->field('staff_id,staff_name as name, staff_idcard as idcard') ->find(); if ($ret != null) { $ret['company'] = "苏州维达奇智能科技有限公司"; } } //客户 if (2 == $res['user_type']) { $ret = db('partner_contacts')->alias('c') ->join('partner_company i','i.company_id=c.company_id') ->where('c.contacts_idcard', $param['idcard']) ->field('c.contacts_name as name, c.contacts_idcard as idcard, i.company_name as company') ->find(); } if(md5($param['password']) == $res['user_pw']) { $roleInfo = db('system_role')->where('id', $res['user_role'])->find(); if ($ret != null) { if($res['user_state'] === 1){ $ret['id'] = $res['id']; $ret["token"] = $roleInfo['role_name']; $ret["roleName"] = $roleInfo['role_des']; return $this->sendSuccess($ret); }else{ return $this->sendError(10001, '用户账号已禁用,请联系管理员!'); } } else { return $this->sendError(40001,"登录用户信息错误,请重新输入",null); } } } public function info() { $data_par = request()->param(); $res = db('system_user')->where("id", $data_par["id"])->find(); if (NULL !=$res) { return $this->sendSuccess($res); } else { return $this->sendError(40003,"获取用户信息失败"); } } /** ** 新写用户信息功能 */ //获取角色的信息 public function getRole() { $param = request()->param(); $where=[]; if (isset($param['token'])) { $where['role_name'] = $param['token']; } $res = db('system_role')->where($where)->select(); if (NULL !=$res) { return $this->sendSuccess($res); } else { return $this->sendError(40004,"获取角色列表失败"); } } //获取用户信息列表 public function getUserList() { $param = request()->param(); $currPage = isset($param['currPage']) ? $param['currPage'] : 1; $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 20; $dbUser ='system_user'; $dbRole ='system_role'; // 查询用户列表 $userList = db($dbUser)->alias('u') ->join($dbRole.' r', 'u.user_role=r.id') ->where('u.del_time', null) ->field(['u.*,r.role_name,r.role_des']) ->page($currPage, $pageSize) ->select(); // 遍历用户列表,为每个用户查询对应的项目名称 foreach ($userList as &$user) { $user_project = explode(',', $user['user_project']); if (!empty($user_project)) { $project_info = db('project_info') ->whereIn('project_id', $user_project) ->where('project_state', '<', 10) // 未关闭的项目 ->field('project_name') ->select(); $project_names = []; foreach ($project_info as $project) { $project_names[] = $project['project_name']; } $user['project_names'] = implode(',', $project_names); } else { $user['project_names'] = ''; } // 根据用户类型补充用户信息 if (1 == $user['user_type']) { $ret = db('hr_staff')->where('staff_id', $user['user_id'])->find(); $user['user_name'] = $ret['staff_name'] ?? ''; $user['user_phone'] = $ret['staff_phone'] ?? ''; $user['user_dept'] = '内部用户'; } elseif (2 == $user['user_type']) { $ret = db('partner_contacts')->alias('c') ->join('partner_company i', 'i.company_id = c.company_id') ->where('c.contacts_id', $user['user_id']) ->field('c.*, i.company_name') ->find(); $user['user_name'] = $ret['contacts_name'] ?? ''; $user['user_phone'] = $ret['contacts_phone'] ?? ''; $user['user_dept'] = $ret['company_name'] ?? ''; } } unset($user); // 解除引用 // 查询总记录数 $total = db($dbUser)->alias('u') ->join($dbRole.' r', 'u.user_role=r.id') ->where('u.del_time', null) ->count(); $res['list'] = $userList; $res['total'] = $total; $this->sendSuccess($res); } public function getCompanyList() { $param = request()->param(); $ret = []; //客户 if (2 == $param['user_type']) { $ret = db('customer_info')->field('customer_id as company_id, customer_name as company_name ')->select(); } //供应商 if (3 == $param['user_type']) { $ret = db('supplier_info')->field('supplier_id as company_id, supplier_name as company_name ')->select(); } return $this->sendSuccess($ret); } public function GetContactsList() { $param = request()->param(); $ret = db('hr_staff')->field('staff_id as contacts_id, staff_name as contacts_name, staff_idcard as contacts_idcard')->select(); return $this->sendSuccess($ret); } //添加用户 public function addUser() { $param = request()->param(); $sameIdcard = db('system_user')->where('user_idcard', $param['user_idcard'])->where('del_time', null)->count(); if ($sameIdcard > 0) { return $this->sendError(40003, '存在相同工号的用户,请确认后再次添加'); } else { $msg = '添加用户时,信息写入数据库失败'; $insert['user_type'] = $param['user_type']; $insert['user_idcard'] = $param['user_idcard']; $insert['user_id'] = $param['user_id']; $insert['user_pw'] = md5($param['password']); $insert['user_role'] = $param['user_role']; $insert['user_state'] = 1; if (isset($param['user_project']) && ''!=$param['user_project']) { $insert['user_project'] = implode(',', $param['user_project']); } $insert['create_time'] = date("Y-m-d H:i:s"); $res = db('system_user')->insert($insert); return $this->sendSuccess("添加用户成功"); } } //更新用户 public function updateUser() { $param = request()->param(); $update = []; if ($param['password'] != '') { $update['user_pw'] = md5($param['password']); } $update['user_role'] = $param['user_role']; $update['user_state'] = $param['user_state']; if (isset($param['user_project']) && ''!=$param['user_project']) { $update['user_project'] = implode(',', $param['user_project']); } $res = db('system_user')->where('id', $param['user_id'])->update($update); return $this->sendSuccess("更新成功"); } //删除用户 public function deleteUser() { $param = request()->param(); $update['del_time'] = date("Y-m-d H:i:s"); $res = db('system_user')->where('id', $param['user_id'])->update($update); return $this->sendSuccess("更新成功"); } //更新用户密码 public function updateUserPassword() { $param = request()->param(); $ret = db('system_user')->where('id', $param['user_id'])->find(); if ($ret['user_pw'] != md5($param['password'])) { return $this->sendError(40004, "用户密码错误,请重新输入"); } else { $update['user_pw'] = md5($param['new_password']); $res = db('system_user')->where('id', $param['user_id'])->update($update); return $this->sendSuccess("更新用户密码成功"); } } public function GetUserInfoByLoginId($login_id) { $ret = null; $res = db('system_user')->where('id', $login_id)->find(); if ($res != null) { //分类查找用户详细信息 //客户 if (1 == $res['user_type']) { $ret = db('hr_staff')->where('staff_id', $res['user_id']) ->field('staff_name as name, staff_idcard as idcard') ->find(); if ($ret != null) { $ret['company'] = "苏州维达奇智能科技有限公司"; } $ret['id'] = $login_id; } //客户 if (2 == $res['user_type']) { $ret = db('partner_company')->alias('c') ->join('partner_contacts i','i.company_id=c.company_id') ->join('system_user u','u.user_id=i.contacts_id') ->where('u.id', $login_id) ->field('i.contacts_name as name, i.contacts_idcard as idcard, c.company_name as company') ->find(); $ret['id'] = $login_id; } } return $ret; } public function GetProjectStaffList() { $param = request()->post(); if ($param) { // 初始化 $array 为空数组 $array = []; $story_info_member = []; $story_info = db('project_story') ->where('story_id', $param['story_id']) ->where('project_id', $param['project_id']) ->find(); if ($story_info) { $story_info_member = explode(',', $story_info['story_member']); foreach ($story_info_member as $memberId) { $ret = db('system_user')->alias('su') ->join('hr_staff hs', 'su.user_id = hs.staff_id') ->where('su.id', $memberId) // 使用 where 方法进行单值查询 ->field('su.id, hs.staff_name') ->find(); if ($ret) { $array[] = $ret; } } } return $this->sendSuccess($array); } } //获取项目部门所有的员工信息 public function GetProjectDeptStaffList() { $param = request()->post(); $StaffList = db('system_user')->alias('u') ->join('hr_staff s','s.staff_id=u.user_id', 'left') ->where('u.user_type', 1) ->field('u.id as staff_id, s.staff_name') ->select(); //dump($StaffList); /*$result = db('hr_staff')->alias('i') ->join('hr_staff_type t', 'i.staff_type=t.id', 'left') ->field('i.*, t.desp as staff_type_desp') ->select(); //查找员工所属部门信息 for ($i=0; $iwhere('dept_id', 'in', $dept_arr)->column('dept_name'); $result[$i]['staff_dept_desp'] = implode(',', $dept_desp); } $StaffList = []; //工程项目部员工 $project_detp_id = 3; for ($i=0; $isendSuccess($StaffList); } //根据项目ID获取用户在项目中的角色 public function GetProjectUsrRole() { $param = request()->post(); $user = db('system_user')->where('id', $param['user_id'])->find(); $ret = []; $ret['user_type'] = $user['user_type']; $ret['project_role'] = []; $mergedProjectRole = []; // 外部用户 if (2 == $user['user_type']) { $company = db('partner_contacts')->where('contacts_id', $user['user_id'])->find(); $project = explode(',', $user['user_project']); for ($i = 0; $i < count($project); $i++) { $customer = db('project_info')->where('project_id', $project[$i])->find(); if (!$customer) { continue; } $par_company = db('partner_company')->where('company_id',$company['company_id'])->column('company_type'); if(!$par_company){ continue; } $find = false; if ($company['company_id'] == $customer['customer_id'] || in_array(2, $par_company)) { // 用户是客户 $role = 1; if (!isset($mergedProjectRole[$role])) { $mergedProjectRole[$role] = [ 'project' => $project[$i], 'role' => $role ]; } else { $mergedProjectRole[$role]['project'] .= ',' . $project[$i]; } $find = true; } // 查找项目的供应商 $supplier = db('project_partner')->where('project_id', $project[$i])->column('company_id'); if (in_array($company['company_id'], $supplier)) { // 用户是供应商 $role = 4; if (!isset($mergedProjectRole[$role])) { $mergedProjectRole[$role] = [ 'project' => $project[$i], 'role' => $role ]; } else { $mergedProjectRole[$role]['project'] .= ',' . $project[$i]; } $find = true; } if (false == $find) { // 用户是合作方 $role = 8; if (!isset($mergedProjectRole[$role])) { $mergedProjectRole[$role] = [ 'project' => $project[$i], 'role' => $role ]; } else { $mergedProjectRole[$role]['project'] .= ',' . $project[$i]; } } } $ret['project_role'] = array_values($mergedProjectRole); } return $this->sendSuccess($ret); } }