BaseService.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. /**
  3. * @Name
  4. * @Description
  5. * @Author 刘学玺
  6. * @Date 2023/11/23 20:59
  7. */
  8. namespace App\Http\Services;
  9. use App\Exceptions\ApiException;
  10. use App\Exceptions\Code;
  11. use App\Exceptions\Message;
  12. use function PHPUnit\Framework\stringStartsWith;
  13. class BaseService
  14. {
  15. function queryCondition(object $model, array $params, string $key = 'name'): object
  16. {
  17. if (!empty($params['created_at'])) {
  18. $model = $model->whereBetween('created_at', $params['created_at']);
  19. }
  20. if (!empty($params['updated_at'])) {
  21. $model = $model->whereBetween('updated_at', $params['updated_at']);
  22. }
  23. if (!empty($params[$key])) {
  24. $model = $model->where($key, 'like', '%' . $params[$key] . '%');
  25. }
  26. if (isset($params['status']) && $params['status'] != '') {
  27. $model = $model->where('status', $params['status']);
  28. }
  29. return $model;
  30. }
  31. public function commonCreate($model, array $data = [], string $successMessage = Message::ADD_API_SUCCESS, string $errorMessage = Message::ADD_API_ERROR, $timestamps = true)
  32. {
  33. if ($timestamps)
  34. $data['created_at'] = date('Y-m-d H:i:s');
  35. // $model->save();
  36. // $token = Auth::fromUser($user);
  37. if ($model->insert($data)) {
  38. return $this->apiSuccess($successMessage);
  39. }
  40. $this->apiError($errorMessage);
  41. }
  42. public function commonUpdate($model, $id, array $data = [], string $successMessage = Message::UPDATE_API_SUCCESS, string $errorMessage = Message::UPDATE_API_ERROR, $timestamps = true)
  43. {
  44. // if ($timestamps) $data['updated_at'] = date('Y-m-d H:i:s');
  45. if ($model->where('id', $id)->update($data)) {
  46. return $this->apiSuccess($successMessage);
  47. }
  48. $this->apiError($errorMessage);
  49. }
  50. public function apiSuccess(string $message = '', array $data = array(), int $code = Code::Ok,)
  51. {
  52. if (!$message) {
  53. $message = Message::Ok;
  54. }
  55. return response([
  56. 'code' => $code,
  57. 'message' => $message,
  58. 'data' => $data
  59. ]);
  60. }
  61. /**
  62. * @throws ApiException
  63. */
  64. public function apiError(string $message = Message::API_ERROR_EXCEPTION, int $code = Code::BAD_REQUEST)
  65. {
  66. throw new ApiException([
  67. 'code' => $code,
  68. 'message' => $message
  69. ]);
  70. }
  71. /**
  72. * 物理删除
  73. * Method : Interface commonDestroy
  74. * @param $model
  75. * @param array $ArrId
  76. * @param string $successMessage
  77. * @param string $errorMessage
  78. * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Foundation\Application|\Illuminate\Http\Response|void
  79. * @throws ApiException
  80. */
  81. public function commonDestroy($model, array $ArrId, string $successMessage = Message::DELETE_API_SUCCESS, string $errorMessage = Message::DELETE_API_ERROR)
  82. {
  83. if ($model->whereIn('id', $ArrId)->forceDelete()) {
  84. return $this->apiSuccess($successMessage);
  85. }
  86. $this->apiError($errorMessage);
  87. }
  88. /**
  89. * 软删除
  90. * @description
  91. **/
  92. public function commonIsDelete($model, array $ids, string $successMessage = Message::DELETE_API_SUCCESS, string $errorMessage = Message::DELETE_API_ERROR)
  93. {
  94. if ($model->whereIn('id', $ids)->delete()) {
  95. return $this->apiSuccess($successMessage);
  96. }
  97. $this->apiError($errorMessage);
  98. }
  99. public function buildMenu(array $array, int $pid = 0): array
  100. {
  101. $tree = array();
  102. foreach ($array as $key => $value) {
  103. if ($value['pid'] == $pid) {
  104. $path = trim($value['path'], '/');
  105. $name = ucfirst($value['name'] ?: $path);
  106. $value['children'] = $this->buildMenu($array, $value['id']);
  107. $menu = [
  108. 'name' => $name,
  109. 'path' => '/' . $path,
  110. "meta" => [
  111. "locale" => $value['title'],
  112. "icon" => $value['icon'],
  113. "order" => $value['sort'],
  114. // "activeMenu" => true,
  115. // "hideChildrenInMenu" => true,
  116. ]
  117. ];
  118. if ($value['component'])
  119. $menu['component'] = $value['component'];
  120. if ($value['redirect'])
  121. $menu['redirect'] = $value['redirect'];
  122. if ($value['children'])
  123. $menu['children'] = $value['children'];
  124. if ($value['requires_auth'])
  125. $menu['meta']['requiresAuth'] = true;
  126. if ($value['hide'])
  127. $menu['meta']['hideInMenu'] = true;
  128. if ($value['keep_alive'])
  129. $menu['meta']['keepAlive'] = true;
  130. $tree[] = $menu;
  131. }
  132. }
  133. return $tree;
  134. }
  135. }