BaseController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\mainapp;
  13. use think\App;
  14. use think\exception\ValidateException;
  15. use think\Validate;
  16. // use Firebase\JWT\JWT;
  17. // define('ACCESS_TOKEN_KEY', '1gHuiop975cdashyex9Ud23ldsvm2Xq'); //密钥
  18. //
  19. // define('WECHATPAY_APPID', 'wxeac94e69d4e4da41');
  20. define('NOTIFY_WECHAT_URL', 'https://zp.vlinke.com/index.php/mainapp/notify/orderwechat');
  21. /**
  22. * 控制器基础类
  23. */
  24. abstract class BaseController
  25. {
  26. protected $wechatConfig = array(
  27. 'appid' => 'wxb97c1a98dd6f52c9',
  28. 'mch_id' => '1552581081',
  29. 'key' => 'xianchangaixiechunbingbrandy5211',
  30. 'sslcert_path' => '',
  31. 'sslkey_path' => ''
  32. );
  33. protected $provincelist = array(
  34. ['value'=>"", 'title'=>"全部"],
  35. ['value'=>"北京市", 'title'=>"北京市"],
  36. ['value'=>"天津市", 'title'=>"天津市"],
  37. ['value'=>"河北省", 'title'=>"河北省"],
  38. ['value'=>"山西省", 'title'=>"山西省"],
  39. ['value'=>"内蒙古自治区", 'title'=>"内蒙古自治区"],
  40. ['value'=>"辽宁省", 'title'=>"辽宁省"],
  41. ['value'=>"吉林省", 'title'=>"吉林省"],
  42. ['value'=>"黑龙江省", 'title'=>"黑龙江省"],
  43. ['value'=>"上海市", 'title'=>"上海市"],
  44. ['value'=>"江苏省", 'title'=>"江苏省"],
  45. ['value'=>"浙江省", 'title'=>"浙江省"],
  46. ['value'=>"安徽省", 'title'=>"安徽省"],
  47. ['value'=>"福建省", 'title'=>"福建省"],
  48. ['value'=>"江西省", 'title'=>"江西省"],
  49. ['value'=>"山东省", 'title'=>"山东省"],
  50. ['value'=>"河南省", 'title'=>"河南省"],
  51. ['value'=>"湖北省", 'title'=>"湖北省"],
  52. ['value'=>"湖南省", 'title'=>"湖南省"],
  53. ['value'=>"广东省", 'title'=>"广东省"],
  54. ['value'=>"广西壮族自治区", 'title'=>"广西壮族自治区"],
  55. ['value'=>"海南省", 'title'=>"海南省"],
  56. ['value'=>"重庆市", 'title'=>"重庆市"],
  57. ['value'=>"四川省", 'title'=>"四川省"],
  58. ['value'=>"贵州省", 'title'=>"贵州省"],
  59. ['value'=>"云南省", 'title'=>"云南省"],
  60. ['value'=>"西藏自治区", 'title'=>"西藏自治区"],
  61. ['value'=>"陕西省", 'title'=>"陕西省"],
  62. ['value'=>"甘肃省", 'title'=>"甘肃省"],
  63. ['value'=>"青海省", 'title'=>"青海省"],
  64. ['value'=>"宁夏回族自治区", 'title'=>"宁夏回族自治区"],
  65. ['value'=>"新疆维吾尔自治区", 'title'=>"新疆维吾尔自治区"],
  66. ['value'=>"台湾省", 'title'=>"台湾省"],
  67. ['value'=>"香港特别行政区", 'title'=>"香港特别行政区"],
  68. ['value'=>"澳门特别行政区", 'title'=>"澳门特别行政区"]
  69. );
  70. /**
  71. * Request实例
  72. * @var \think\Request
  73. */
  74. protected $request;
  75. /**
  76. * 应用实例
  77. * @var \think\App
  78. */
  79. protected $app;
  80. /**
  81. * 是否批量验证
  82. * @var bool
  83. */
  84. protected $batchValidate = false;
  85. /**
  86. * 控制器中间件
  87. * @var array
  88. */
  89. protected $middleware = [];
  90. /**
  91. * 控制器中间件
  92. * @var array
  93. */
  94. protected $access_administer = [];
  95. /**
  96. * 构造方法
  97. * @access public
  98. * @param App $app 应用对象
  99. */
  100. public function __construct(App $app)
  101. {
  102. $this->app = $app;
  103. $this->request = $this->app->request;
  104. // 控制器初始化
  105. // $this->initialize();
  106. }
  107. // 初始化
  108. protected function initialize()
  109. {
  110. // 验证登陆信息
  111. $access_token = input('access_token');
  112. if (empty($access_token)) {
  113. page_result(1001, "You do not have permission to access.");
  114. }else{
  115. try {
  116. JWT::$leeway = 60;
  117. $decoded = JWT::decode($access_token, ACCESS_TOKEN_KEY, ['HS256']);
  118. $arr = (array)$decoded;
  119. if ($arr['exp'] < time()) {
  120. page_result(1001, "请重新登录。");
  121. } else {
  122. $this->access_administer = $arr['data'];
  123. }
  124. } catch(\Exception $e) {
  125. page_result(1001, "Token验证失败,请重新登录。");
  126. }
  127. }
  128. }
  129. /**
  130. * 验证数据
  131. * @access protected
  132. * @param array $data 数据
  133. * @param string|array $validate 验证器名或者验证规则数组
  134. * @param array $message 提示信息
  135. * @param bool $batch 是否批量验证
  136. * @return array|string|true
  137. * @throws ValidateException
  138. */
  139. protected function validate(array $data, $validate, array $message = [], bool $batch = false)
  140. {
  141. if (is_array($validate)) {
  142. $v = new Validate();
  143. $v->rule($validate);
  144. } else {
  145. if (strpos($validate, '.')) {
  146. // 支持场景
  147. list($validate, $scene) = explode('.', $validate);
  148. }
  149. $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
  150. $v = new $class();
  151. if (!empty($scene)) {
  152. $v->scene($scene);
  153. }
  154. }
  155. $v->message($message);
  156. // 是否批量验证
  157. if ($batch || $this->batchValidate) {
  158. $v->batch(true);
  159. }
  160. return $v->failException(true)->check($data);
  161. }
  162. }