Request.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app;
  12. use Spatie\Macroable\Macroable;
  13. /**
  14. * Class Request
  15. * @package app
  16. * @method tokenData() 获取token信息
  17. * @method user(string $key = null) 获取用户信息
  18. * @method uid() 获取用户uid
  19. * @method isAdminLogin() 后台登陆状态
  20. * @method adminId() 后台管理员id
  21. * @method adminInfo() 后台管理信息
  22. * @method kefuId() 客服id
  23. * @method kefuInfo() 客服信息
  24. */
  25. class Request extends \think\Request
  26. {
  27. use Macroable;
  28. /**
  29. * 不过滤变量名
  30. * @var array
  31. */
  32. protected $except = ['menu_path', 'api_url', 'unique_auth',
  33. 'description', 'custom_form', 'content', 'tableField', 'url', 'customCode'];
  34. /**
  35. * 获取请求的数据
  36. * @param array $params
  37. * @param bool $suffix
  38. * @param bool $filter
  39. * @return array
  40. */
  41. public function more(array $params, bool $suffix = false, bool $filter = true): array
  42. {
  43. $p = [];
  44. $i = 0;
  45. foreach ($params as $param) {
  46. if (!is_array($param)) {
  47. $p[$suffix == true ? $i++ : $param] = $this->param($param);
  48. } else {
  49. if (!isset($param[1])) $param[1] = null;
  50. if (!isset($param[2])) $param[2] = '';
  51. if (is_array($param[0])) {
  52. $name = is_array($param[1]) ? $param[0][0] . '/a' : $param[0][0] . '/' . $param[0][1];
  53. $keyName = $param[0][0];
  54. } else {
  55. $name = is_array($param[1]) ? $param[0] . '/a' : $param[0];
  56. $keyName = $param[0];
  57. }
  58. $p[$suffix == true ? $i++ : ($param[3] ?? $keyName)] = $this->param($name, $param[1], $param[2]);
  59. }
  60. }
  61. if ($filter && $p) {
  62. $p = $this->filterArrayValues($p);
  63. }
  64. return $p;
  65. }
  66. /**
  67. * 过滤接数组中的字符串
  68. * @param $str
  69. * @param bool $filter
  70. * @return array|mixed|string|string[]
  71. */
  72. public function filterArrayValues($array)
  73. {
  74. $result = [];
  75. foreach ($array as $key => $value) {
  76. if (is_array($value)) {
  77. // 如果值是数组,递归调用 filterArrayValues
  78. $result[$key] = $this->filterArrayValues($value);
  79. } else {
  80. if (in_array($key, $this->except) || is_int($value) || is_null($value)) {
  81. $result[$key] = $value;
  82. } else {
  83. // 如果值是字符串,过滤特殊字符
  84. $result[$key] = filter_str($value);
  85. }
  86. }
  87. }
  88. return $result;
  89. }
  90. /**
  91. * 获取get参数
  92. * @param array $params
  93. * @param bool $suffix
  94. * @param bool $filter
  95. * @return array
  96. */
  97. public function getMore(array $params, bool $suffix = false, bool $filter = true): array
  98. {
  99. return $this->more($params, $suffix, $filter);
  100. }
  101. /**
  102. * 获取post参数
  103. * @param array $params
  104. * @param bool $suffix
  105. * @param bool $filter
  106. * @return array
  107. */
  108. public function postMore(array $params, bool $suffix = false, bool $filter = true): array
  109. {
  110. return $this->more($params, $suffix, $filter);
  111. }
  112. /**
  113. * 获取用户访问端
  114. * @return array|string|null
  115. */
  116. public function getFromType()
  117. {
  118. return $this->header('Form-type', '');
  119. }
  120. /**
  121. * 当前访问端
  122. * @param string $terminal
  123. * @return bool
  124. */
  125. public function isTerminal(string $terminal)
  126. {
  127. return strtolower($this->getFromType()) === $terminal;
  128. }
  129. /**
  130. * 是否是H5端
  131. * @return bool
  132. */
  133. public function isH5()
  134. {
  135. return $this->isTerminal('h5');
  136. }
  137. /**
  138. * 是否是微信端
  139. * @return bool
  140. */
  141. public function isWechat()
  142. {
  143. return $this->isTerminal('wechat');
  144. }
  145. /**
  146. * 是否是小程序端
  147. * @return bool
  148. */
  149. public function isRoutine()
  150. {
  151. return $this->isTerminal('routine');
  152. }
  153. /**
  154. * 是否是app端
  155. * @return bool
  156. */
  157. public function isApp()
  158. {
  159. return $this->isTerminal('app');
  160. }
  161. /**
  162. * 是否是app端
  163. * @return bool
  164. */
  165. public function isPc()
  166. {
  167. return $this->isTerminal('pc');
  168. }
  169. }