functions.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Here is your custom functions.
  4. */
  5. use plugin\admin\app\model\Admin;
  6. use plugin\admin\app\model\AdminRole;
  7. /**
  8. * 当前管理员id
  9. * @return integer|null
  10. */
  11. function admin_id(): ?int
  12. {
  13. return session('admin.id');
  14. }
  15. /**
  16. * 当前管理员
  17. * @param null|array|string $fields
  18. * @return array|mixed|null
  19. * @throws Exception
  20. */
  21. function admin($fields = null)
  22. {
  23. refresh_admin_session();
  24. if (!$admin = session('admin')) {
  25. return null;
  26. }
  27. if ($fields === null) {
  28. return $admin;
  29. }
  30. if (is_array($fields)) {
  31. $results = [];
  32. foreach ($fields as $field) {
  33. $results[$field] = $admin[$field] ?? null;
  34. }
  35. return $results;
  36. }
  37. return $admin[$fields] ?? null;
  38. }
  39. /**
  40. * 刷新当前管理员session
  41. * @param bool $force
  42. * @return void
  43. * @throws Exception
  44. */
  45. function refresh_admin_session(bool $force = false)
  46. {
  47. $admin_session = session('admin');
  48. if (!$admin_session) {
  49. return null;
  50. }
  51. $admin_id = $admin_session['id'];
  52. $time_now = time();
  53. // session在2秒内不刷新
  54. $session_ttl = 2;
  55. $session_last_update_time = session('admin.session_last_update_time', 0);
  56. if (!$force && $time_now - $session_last_update_time < $session_ttl) {
  57. return null;
  58. }
  59. $session = request()->session();
  60. $admin = Admin::find($admin_id);
  61. if (!$admin) {
  62. $session->forget('admin');
  63. return null;
  64. }
  65. $admin = $admin->toArray();
  66. $admin['password'] = md5($admin['password']);
  67. $admin_session['password'] = $admin_session['password'] ?? '';
  68. if ($admin['password'] != $admin_session['password']) {
  69. $session->forget('admin');
  70. return null;
  71. }
  72. // 账户被禁用
  73. if ($admin['status'] != 0) {
  74. $session->forget('admin');
  75. return;
  76. }
  77. $admin['roles'] = AdminRole::where('admin_id', $admin_id)->pluck('role_id')->toArray();
  78. $admin['session_last_update_time'] = $time_now;
  79. $session->set('admin', $admin);
  80. }
  81. function raffle()
  82. {
  83. $arr=[4,3,3,4,4,3,4,3,4,3,3,1,4,3,4,3,4,3,4,4,4,4,3,4,3,4,3,5,4,3,6,3,4,4,3,4,4,4,4,4,3,3,4,3,4,3,4,3,4,3,4,4,3,2,3,3,4,3,4,4,4,4,3,4,3,4,4,3,4,3,4,3,4,4,4,3,4,4,3,4,3,4,4,3,4,3,4,4,3,4,3,4,3,4,3,4,3,4,4,3,4,3,4,4,4,3,4,3,4,3,5,4,3,4,3,4,3,4,3,44,3,4,3,4,4,3,4,3,4,3,4,4,3,4,3,4,3,4,3,4,4,4,4,4,3,4,3,4,4,3,4,3,4,6,4,3,4,4,3,4,3,4,4,3,4,3];
  84. return $arr[mt_rand(0, 165)];
  85. }