Request.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2026 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 = [
  33. 'menu_path',
  34. 'api_url',
  35. 'unique_auth',
  36. 'description',
  37. 'custom_form',
  38. 'params_list',
  39. 'content',
  40. 'tableField',
  41. 'url',
  42. 'customCode',
  43. 'value',
  44. 'refund_reason_wap_img'
  45. ];
  46. /**
  47. * 获取请求的数据
  48. * @param array $params
  49. * @param bool $suffix
  50. * @param bool $filter
  51. * @return array
  52. */
  53. public function more(array $params, bool $suffix = false, bool $filter = true): array
  54. {
  55. $p = [];
  56. $i = 0;
  57. $this->filterArrayValues($this->param);
  58. foreach ($params as $param) {
  59. if (!is_array($param)) {
  60. $p[$suffix == true ? $i++ : $param] = $this->param($param);
  61. } else {
  62. if (!isset($param[1])) $param[1] = null;
  63. if (!isset($param[2])) $param[2] = '';
  64. if (is_array($param[0])) {
  65. $name = is_array($param[1]) ? $param[0][0] . '/a' : $param[0][0] . '/' . $param[0][1];
  66. $keyName = $param[0][0];
  67. } else {
  68. $name = is_array($param[1]) ? $param[0] . '/a' : $param[0];
  69. $keyName = $param[0];
  70. }
  71. $p[$suffix == true ? $i++ : ($param[3] ?? $keyName)] = $this->param($name, $param[1], $param[2]);
  72. }
  73. }
  74. if ($filter && $p) {
  75. $p = $this->filterArrayValues($p);
  76. }
  77. return $p;
  78. }
  79. /**
  80. * 过滤接数组中的字符串
  81. * @param $str
  82. * @param bool $filter
  83. * @return array|mixed|string|string[]
  84. */
  85. public function filterArrayValues($array)
  86. {
  87. $result = [];
  88. foreach ($array as $key => $value) {
  89. if (is_array($value)) {
  90. // 如果值是数组,并且不在不过滤变量名里面,递归调用 filterArrayValues,否则直接赋值
  91. $result[$key] = in_array($key, $this->except) ? $value : $this->filterArrayValues($value);
  92. } else {
  93. if (in_array($key, $this->except) || is_int($value) || is_null($value)) {
  94. $result[$key] = $value;
  95. } else {
  96. // 如果值是字符串,过滤特殊字符
  97. $result[$key] = filter_str($value);
  98. }
  99. }
  100. }
  101. return $result;
  102. }
  103. /**
  104. * 获取get参数
  105. * @param array $params
  106. * @param bool $suffix
  107. * @param bool $filter
  108. * @return array
  109. */
  110. public function getMore(array $params, bool $suffix = false, bool $filter = true): array
  111. {
  112. return $this->more($params, $suffix, $filter);
  113. }
  114. /**
  115. * 获取post参数
  116. * @param array $params
  117. * @param bool $suffix
  118. * @param bool $filter
  119. * @return array
  120. */
  121. public function postMore(array $params, bool $suffix = false, bool $filter = true): array
  122. {
  123. return $this->more($params, $suffix, $filter);
  124. }
  125. /**
  126. * 获取用户访问端
  127. * @return array|string|null
  128. */
  129. public function getFromType()
  130. {
  131. return $this->header('Form-type', '');
  132. }
  133. /**
  134. * 当前访问端
  135. * @param string $terminal
  136. * @return bool
  137. */
  138. public function isTerminal(string $terminal)
  139. {
  140. return strtolower($this->getFromType()) === $terminal;
  141. }
  142. /**
  143. * 是否是H5端
  144. * @return bool
  145. */
  146. public function isH5()
  147. {
  148. return $this->isTerminal('h5');
  149. }
  150. /**
  151. * 是否是微信端
  152. * @return bool
  153. */
  154. public function isWechat()
  155. {
  156. return $this->isTerminal('wechat');
  157. }
  158. /**
  159. * 是否是小程序端
  160. * @return bool
  161. */
  162. public function isRoutine()
  163. {
  164. return $this->isTerminal('routine');
  165. }
  166. /**
  167. * 是否是app端
  168. * @return bool
  169. */
  170. public function isApp()
  171. {
  172. return $this->isTerminal('app');
  173. }
  174. /**
  175. * 是否是pc端
  176. * @return bool
  177. */
  178. public function isPc()
  179. {
  180. return $this->isTerminal('pc');
  181. }
  182. }