Employee.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. $company_id = $user_info['company_id'];
  30. // 查询条件
  31. $map = [];
  32. $map[]=['company_id','=', $company_id];
  33. $limit = request('limit', config('page_num', 10));
  34. $name = request('name', '');
  35. // 其他条件
  36. if ($name) $map[] = ['name', 'like', "%$name%"];
  37. $field = ['id', 'employee_code', 'name'];
  38. // 查询数据
  39. $result_model = $EmployeeModel->query();
  40. $result = $result_model
  41. ->where($map)
  42. ->select($field)
  43. ->orderByDesc('id')
  44. ->paginate($limit)->toarray();
  45. // 分配数据
  46. if (!$result) return json_send(['code' => 'error', 'msg' => '暂无数据']);
  47. // 加载模板
  48. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
  49. }
  50. /**
  51. * 个人信息详情
  52. * @author 唐远望
  53. * @version 1.0
  54. * @date 2026-03-03
  55. */
  56. public function personal_info(Request $request, EmployeeModel $EmployeeModel, DepartmentModel $DepartmentModel, RolesModel $RolesModel, CitysModel $CitysModel)
  57. {
  58. $request->scene('personal_info')->validate();
  59. $user_info = $this->checkLogin();
  60. if (!$user_info) return json_send(['code' => 'error', 'msg' => '请先登录']);
  61. $company_id = $user_info['company_id'];
  62. // 接收参数
  63. $map = ['id' => $user_info['uid']];
  64. // 权限判断
  65. $map['company_id'] = $company_id;
  66. $field = ['id', 'employee_code', 'name', 'mobile', 'email', 'department_ids', 'duty_type', 'role_id', 'city_ids', 'open_notice', 'insert_time', 'update_time', 'status'];
  67. $data = $EmployeeModel->where($map)->select($field)->first();
  68. if (!$data) return json_send(['code' => 'error', 'msg' => '记录不存在']);
  69. // 查询部门信息
  70. $department_ids = explode(',', $data['department_ids']);
  71. $department_info = $DepartmentModel->whereIn('id', $department_ids)->select(['id', 'name'])->get()->toarray();
  72. // 查询角色信息
  73. $role_where = ['id' => $data['role_id']];
  74. $role_where['company_id'] = $company_id;
  75. $role_info = $RolesModel->where($role_where)->first();
  76. // 查询城市信息
  77. $city_ids = explode(',', $data['city_ids']);
  78. $city_info = [];
  79. if (count($city_ids) > 0) {
  80. $city_info = $CitysModel->whereIn('id', $city_ids)->pluck('name');
  81. }
  82. //截取字符串
  83. $data['department_ids'] = $data['department_ids'] != '' ? substr($data['department_ids'], 1, strlen($data['department_ids']) - 2) : '';
  84. $data['department_name'] = isset($department_info) ? array_column($department_info, 'name') : '';
  85. $data['role_name'] = isset($role_info['name']) ? $role_info['name'] : '';
  86. $data['city_info'] = $city_info;
  87. // 加载模板
  88. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
  89. }
  90. }