Base.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. namespace app\extra\basic;
  3. use Overtrue\EasySms\Strategies\OrderStrategy;
  4. use think\Validate;
  5. class Base
  6. {
  7. protected array $mobileWhite = ["18665619195","18665619196","18665619198","18665619199"];
  8. protected function getParent(array $data)
  9. {
  10. if ($data['parent_id'] > 0) {
  11. return $data['parent_id'];
  12. }
  13. return $data['user_id'];
  14. }
  15. public function getShopId()
  16. {
  17. return request()->header("shop",0);
  18. }
  19. public function getAccountId(array $data)
  20. {
  21. return $data['account_id'];
  22. }
  23. protected function getSmsChannel(): array
  24. {
  25. return [
  26. [
  27. "name" => "阿里云",
  28. "type" => "aliyun",
  29. "url" => "https://dysms.console.aliyun.com/dysms.htm"
  30. ],
  31. [
  32. "name" => "腾讯云",
  33. "type" => "qcloud",
  34. "url" => "https://console.cloud.tencent.com/smsv2"
  35. ],
  36. [
  37. "name" => "七牛云",
  38. "type" => "qiniu",
  39. "url" => "https://portal.qiniu.com/sms/dashboard"
  40. ]
  41. ];
  42. }
  43. /**
  44. * 短信配置
  45. * @return array
  46. */
  47. protected function getSmsConfig(): array
  48. {
  49. $sms = sysconf('sms.');
  50. return [
  51. 'enable' => true,
  52. 'timeout' => 5.0,
  53. "default" => [
  54. "strategy" => OrderStrategy::class,
  55. "gateways" => [$sms['sms_type']]
  56. ],
  57. "gateways" => [
  58. 'errorlog' => [
  59. 'file' => runtime_path().'/tmp/easy-sms.log',
  60. ],
  61. 'aliyun' => [
  62. 'access_key_id' => $sms['AccessKeyId'],
  63. 'access_key_secret' => $sms['AccessKeySecret'],
  64. 'sign_name' => trim($sms['sign']),
  65. ],
  66. ]
  67. ];
  68. }
  69. /**
  70. * 快捷输入并验证( 支持 规则 # 别名 )
  71. * @param array $rules 验证规则( 验证信息数组 )
  72. * @param array|string $input 输入方式 ( post. 或 get. )
  73. * @param callable|null $callable 异常处理操作
  74. */
  75. protected function _valid(array $rules, array|string $input = '', ?callable $callable = null)
  76. {
  77. if (is_string($input)) {
  78. $type = trim($input, '.') ?: 'get';
  79. $input = request()->$type();
  80. }
  81. [$data, $rule, $info] = [[], [], []];
  82. foreach ($rules as $name => $message) if (is_numeric($name)) {
  83. [$name, $alias] = explode('#', $message . '#');
  84. $data[$name] = $input[($alias ?: $name)] ?? null;
  85. } elseif (!str_contains($name, '.')) {
  86. $data[$name] = $message;
  87. } elseif (preg_match('|^(.*?)\.(.*?)#(.*?)#?$|', $name . '#', $matches)) {
  88. [, $_key, $_rule, $alias] = $matches;
  89. if (in_array($_rule, ['value', 'default'])) {
  90. if ($_rule === 'value') $data[$_key] = $message;
  91. elseif ($_rule === 'default') $data[$_key] = $input[($alias ?: $_key)] ?? $message;
  92. } else {
  93. $info[explode(':', $name)[0]] = $message;
  94. $data[$_key] = $data[$_key] ?? ($input[($alias ?: $_key)] ?? null);
  95. $rule[$_key] = isset($rule[$_key]) ? ($rule[$_key] . '|' . $_rule) : $_rule;
  96. }
  97. }
  98. $validate = new Validate();
  99. if ($validate->rule($rule)->message($info)->check($data)) {
  100. return $data;
  101. } elseif (is_callable($callable)) {
  102. return call_user_func($callable, $validate->getError(), $data);
  103. } else {
  104. return $validate->getError();
  105. }
  106. }
  107. /**
  108. * 菜单信息格式化
  109. * @param array $menus
  110. * @param int $type
  111. * @return array
  112. */
  113. protected function filterMenu(array $menus,int $type,int $mch = 0): array
  114. {
  115. foreach ($menus as &$menu) {
  116. $menu['meta'] = [
  117. "title" => $menu['title'],
  118. "icon" => $menu['icon']??'',
  119. "type" => $menu['type'],
  120. "desc" => $menu['descs'],
  121. ];
  122. if (!empty($menu['children'])) {
  123. $menu['children'] = $this->filterMenu($menu['children'],$type,$mch);
  124. }
  125. if ($mch > 0) {
  126. $menu['component'] = ($mch==1?'merchant/':'store/').$menu['name'];
  127. } else {
  128. $menu['component'] = $menu['name'];
  129. }
  130. $menu['isMenu'] = $menu['status'];
  131. if($type == 1) unset($menu['title'],$menu['icon'],$menu['type'],$menu['pid'],$menu['id']);
  132. }
  133. return $menus;
  134. }
  135. }