Employee.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Http\Controllers\Api\Personnel;
  3. use App\Http\Controllers\Api\Api;
  4. use App\Http\Requests\Api\Personnel\Employee as Request;
  5. use App\Models\Api\Personnel\Employee as EmployeeModel;
  6. use App\Models\Api\Personnel\Department as DepartmentModel;
  7. use App\Models\Api\Personnel\Roles as RolesModel;
  8. use App\Models\Api\Citys as CitysModel;
  9. /**
  10. * 人员信息管理-员工管理
  11. * @author 唐远望
  12. * @version 1.0
  13. * @date 2025-12-10
  14. */
  15. class Employee extends Api
  16. {
  17. /**
  18. * 列表
  19. * @author 唐远望
  20. * @version 1.0
  21. * @date 2025-12-10
  22. *
  23. */
  24. public function list(Request $request, EmployeeModel $EmployeeModel)
  25. {
  26. $user_info = $this->checkLogin();
  27. if (!$user_info) return json_send(['code' => 'error', 'msg' => '请先登录']);
  28. $request->scene('list')->validate();
  29. // 查询条件
  30. $map = [];
  31. $limit = request('limit', config('page_num', 10));
  32. $name = request('name', '');
  33. // 其他条件
  34. if ($name) $map[] = ['name', 'like', "%$name%"];
  35. $field = ['id', 'employee_code', 'name'];
  36. // 查询数据
  37. $result_model = $EmployeeModel->query();
  38. $result = $result_model
  39. ->where($map)
  40. ->select($field)
  41. ->orderByDesc('id')
  42. ->paginate($limit)->toarray();
  43. // 分配数据
  44. if (!$result) return json_send(['code' => 'error', 'msg' => '暂无数据']);
  45. // 加载模板
  46. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
  47. }
  48. /**
  49. * 个人信息详情
  50. * @author 唐远望
  51. * @version 1.0
  52. * @date 2026-03-03
  53. */
  54. public function personal_info(Request $request, EmployeeModel $EmployeeModel, DepartmentModel $DepartmentModel, RolesModel $RolesModel, CitysModel $CitysModel)
  55. {
  56. $request->scene('personal_info')->validate();
  57. $user_info = $this->checkLogin();
  58. if (!$user_info) return json_send(['code' => 'error', 'msg' => '请先登录']);
  59. $company_id = $user_info['company_id'];
  60. // 接收参数
  61. $map = ['id' => $user_info['uid']];
  62. // 权限判断
  63. $map['company_id'] = $company_id;
  64. $field = ['id', 'employee_code', 'name', 'mobile', 'email', 'department_ids', 'duty_type', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status'];
  65. $data = $EmployeeModel->where($map)->select($field)->first();
  66. if (!$data) return json_send(['code' => 'error', 'msg' => '记录不存在']);
  67. // 查询部门信息
  68. $department_ids = explode(',', $data['department_ids']);
  69. $department_info = $DepartmentModel->whereIn('id', $department_ids)->select(['id', 'name'])->get()->toarray();
  70. // 查询角色信息
  71. $role_where = ['id' => $data['role_id']];
  72. $role_where['company_id'] = $company_id;
  73. $role_info = $RolesModel->where($role_where)->first();
  74. // 查询城市信息
  75. $city_ids = explode(',', $data['city_ids']);
  76. $city_info = [];
  77. if (count($city_ids) > 0) {
  78. $city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name');
  79. }
  80. //截取字符串
  81. $data['department_ids'] = $data['department_ids'] != '' ? substr($data['department_ids'], 1, strlen($data['department_ids']) - 2) : '';
  82. $data['department_name'] = isset($department_info) ? array_column($department_info, 'name') : '';
  83. $data['role_name'] = isset($role_info['name']) ? $role_info['name'] : '';
  84. $data['city_info'] = $city_info;
  85. // 加载模板
  86. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
  87. }
  88. }