DeviceController.php 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Model\Depart;
  5. use App\Model\Employee;
  6. use App\Model\EmployeeDepartPermission;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Log;
  9. class DeviceController extends Controller
  10. {
  11. public $user_info;
  12. public function __construct()
  13. {
  14. }
  15. public function heartbeat(Request $request){
  16. $data = $request->all();
  17. Log::channel('apiLog')->info('smkq-heartbeat', ['data' => $data]);
  18. $emloyee = new Employee();
  19. $emloyee = $emloyee->where('is_device',0)->get()->toArray();
  20. $depart = Depart::pluck('title','id')->toArray();
  21. $depart_code = Depart::pluck('code','id')->toArray();
  22. $employee_depart = EmployeeDepartPermission::pluck('depart_id','employee_id')->toArray();
  23. $recodes = [];
  24. if(!empty($emloyee)){
  25. foreach ($emloyee as $v){
  26. if(!isset($depart_code[$employee_depart[$v['id']]]) || !isset( $depart[$employee_depart[$v['id']]])) continue;
  27. //{"url":"","sex":"男","emp_id":"001","groups":"11111111","valid_date":"2099-01-01","access_pwd":"1234","rec_id":"1","door_right":"","depart_name":"财务部","birth_date":"1996-01-01","level_id":15,"account_id":"00000001","twins":"","emp_fname":"测试人员","state":"0","card_sn":"12345"}
  28. $recodes[] = [
  29. 'url' => $v['pic'],
  30. 'tel' => $v['mobile'],
  31. 'sex' => $v['sex'],
  32. 'emp_id' => $v['number'],
  33. 'groups' => $depart_code[$employee_depart[$v['id']]],
  34. 'visitor' => "0",
  35. 'job_name' => "",
  36. 'valid_date' => '9999-01-01',
  37. 'access_pwd' => '1234',
  38. 'rec_id' => $v['number'],
  39. 'door_right' => '',
  40. 'depart_name' => $depart[$employee_depart[$v['id']]],
  41. 'birth_date' => $v['birth_date'],
  42. 'level_id' => 1,
  43. 'account_id' => $v['number'],
  44. 'twins' => '',
  45. 'emp_fname' => $v['emp_name'],
  46. 'state' => '0',
  47. 'card_sn' => '12345',
  48. ];
  49. }
  50. }
  51. //{"transaction_id":"20220829153806182","api":"addperson","interval":"10000","result_code":"0","noncestr":"5ec6966c0e1b41e193d82b52b0c5668c","whitelist":[{"url":"http://192.168.0.20:5002/photo/134/00066434.jpg?devid=802&trans_id=20220829153806182","tel":"","sex":"","emp_id":"123456","groups":"1","visitor":"0","job_name":"","valid_date":"9999-01-01","access_pwd":"3456","rec_id":620218,"door_right":"","depart_name":"测试部","birth_date":"","level_id":1,"account_id":"00066434","twins":"","emp_fname":"测试456","state":"0","card_sn":""}],"time":"1661758686","sign":"4dab2d55c119f5d7ea93a80c14d1951a","result_msg":"OK"}
  52. $return = json_decode('{"transaction_id":"20220829142124067","api":"heartbeat","records":[],"interval":"10000","result_code":0,"noncestr":"be39ff7eadc0450b91f0713c3382cd22","time":"1661754084","sign":"9ab968049901cd4e493baeec1dcf85fe","result_msg":"OK"}',true);
  53. if(!empty($recodes)){
  54. $return['api'] = 'addperson';
  55. $return['whitelist'] = $recodes;
  56. }
  57. $return['time'] = time();
  58. $return['transaction_id'] = date('YmdHis').rand(1000,9999);
  59. // var_dump($return);die;
  60. echo json_encode($return,JSON_UNESCAPED_UNICODE);
  61. }
  62. public function addperson(Request $request){
  63. $data = $request->all();
  64. Log::channel('apiLog')->info('smkq-addperson', ['data' => $data]);
  65. //{"build_time":"2024-09-23 18-49-04","customer":"23333","dev_id":"001","door_status":0,"faceCount":"1","fireware":"XF108-Y-SV1.020240822","ip":"192.168.0.241","mac":"3e:b6:b9:ed:0d:8e","main_board":0,"model":"2","noncestr":"b38ebc4de96c43d7aacb8225f3f46591","personCount":"1","serialno":"410204307430","sign":"fdbad4552caae32bd4ba7ebacca60cd8","sub_model":"2","time":"1727175016706","total":"4","transaction_id":"100","version":"V3.0.4","whitelist":[{"account_id":"23333","rec_id":"1","result_code":"407"}]}
  66. if(isset($data['whitelist'])){
  67. $data = $data['whitelist'];
  68. foreach ($data['whitelist'] as $v){
  69. Employee::where('number',$v['account_id'])->update([
  70. 'is_device' => 1
  71. ]);
  72. }
  73. }
  74. $json = json_decode('{"transaction_id":"20220829142124067","api":"heartbeat","records":[],"interval":"10000","result_code":0,"noncestr":"be39ff7eadc0450b91f0713c3382cd22","time":"1661754084","sign":"9ab968049901cd4e493baeec1dcf85fe","result_msg":"OK"}',true);
  75. $json['transaction_id'] = date('YmdHis').rand(1000,9999);
  76. $json['time'] = time();
  77. echo json_encode($json);
  78. }
  79. }