common.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. // 应用公共文件
  3. use think\facade\Filesystem;
  4. use think\facade\Config;
  5. use app\model\AdminTokenModel;
  6. use app\model\AdminModel;
  7. use think\exception\ValidateException;
  8. //返回响应数据
  9. if (!function_exists('json_show')) {
  10. function json_show(int $code = 0, string $message = '请求成功', array $data = [])
  11. {
  12. return json(['code' => $code, 'message' => $message, 'data' => $data]);
  13. }
  14. }
  15. //获取密码
  16. //@param $password string 密码
  17. //@param $salt string 盐值
  18. if (!function_exists('getPassword')) {
  19. function getPassword(string $password = '', string $salt = ''): string
  20. {
  21. return sha1($password . $salt);
  22. }
  23. }
  24. //获取token
  25. //@param $admin_id int 运营账号表id
  26. //@param $username string 账户
  27. //@param $salt string 盐值
  28. if (!function_exists('makeToken')) {
  29. function makeToken(int $admin_id = 0, string $username = '', string $salt = ''): string
  30. {
  31. $now = time();
  32. $str = $username . $salt . (string)$now;
  33. $token = base64_encode($str);
  34. AdminTokenModel::handleToken($admin_id, $token);
  35. return $token;
  36. }
  37. }
  38. //校验token
  39. //@param $salt string 盐值
  40. if (!function_exists('verifyToken')) {
  41. function verifyToken(string $token = '')
  42. {
  43. $has = AdminTokenModel::where(['token' => $token])->findOrEmpty();
  44. if ($has->isEmpty()) throw new ValidateException('token不存在');
  45. if (strtotime($has->expiretime) <= time()) throw new ValidateException('token已失效');
  46. $account = AdminModel::where(['id' => $has['adminid'], 'is_del' => AdminModel::$del_normal])->findOrEmpty();
  47. if ($account->isEmpty()) throw new ValidateException('未找到账户');
  48. if ($account->status != AdminModel::$status_normal) throw new ValidateException('账户已禁用');
  49. $token_str = base64_decode($token);
  50. $account_str = substr($token_str, 0, -10);
  51. if ($account_str == $account->username . $account->salt) {
  52. AdminTokenModel::where(['token' => $token])
  53. ->save(['expiretime' => date('Y-m-d H:i:s', time() + Config::get('common.expire'))]);
  54. return ['uid' => $account->id, 'uname' => $account->nickname, 'roleid' => $account->role_id];
  55. } else throw new ValidateException('账户token无效');
  56. }
  57. }
  58. //发送post的curl请求
  59. if (!function_exists('curl_request')) {
  60. function curl_request(string $url = '', array $data = [], array $header = [])
  61. {
  62. $curl = curl_init();
  63. curl_setopt($curl, CURLOPT_URL, $url);
  64. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
  65. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  66. curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
  67. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  68. if ($data) {
  69. curl_setopt($curl, CURLOPT_POST, 1);
  70. curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
  71. }
  72. curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
  73. if (!$header) $header = [
  74. 'uid:' . request()->development['id'],
  75. 'nickname:' . request()->development['contactor'],
  76. 'mobile:' . request()->development['mobile'],
  77. // 'email:',
  78. 'supplierNo:' . request()->development['supplierNo'],
  79. 'supplierName:' . request()->development['supplierName']
  80. ];
  81. curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  82. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  83. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  84. $data = curl_exec($curl);
  85. if (curl_errno($curl)) {
  86. return curl_error($curl);
  87. }
  88. curl_close($curl);
  89. return $data;
  90. }
  91. }
  92. //上传图片
  93. if (!function_exists('upload_img')) {
  94. function upload_img($files)
  95. {
  96. $savename = [];
  97. $files = !is_array($files) ? [$files] : $files;
  98. //验证
  99. validate([
  100. 'imgFile' => [
  101. 'fileSize' => 10240000,
  102. 'fileExt' => 'jpg,jpeg,png,bmp,gif',
  103. 'fileMime' => 'image/jpeg,image/png,image/gif'
  104. ]
  105. ])->check(['imgFile' => $files]);
  106. $domain = request()->domain() . Config::get('filesystem.disks.public.url') . DIRECTORY_SEPARATOR;
  107. foreach ($files as $file) {
  108. $url = Filesystem::disk('public')->putFile('topic/' . date('Ymd'), $file, function () use ($file) {
  109. return str_replace('.' . $file->getOriginalExtension(), '', $file->getOriginalName() . '_' . date('YmdHis'));
  110. });
  111. $name = str_replace('.' . $file->getOriginalExtension(), '', $file->getOriginalName());
  112. $temp = ['url' => $domain . $url, 'name' => $name];
  113. $savename[] = $temp;
  114. }
  115. return $savename;
  116. }
  117. }
  118. //生成编码
  119. //@param $str string 前缀
  120. if (!function_exists('makeNo')) {
  121. function makeNo(string $str = ''): string
  122. {
  123. $date = date("ymdHis");
  124. // $year = date("Y")-2000;
  125. $msec = randomkeys(4);
  126. return $str . $msec . $date;
  127. }
  128. }
  129. //生成随机字符串
  130. //@param $length int 长度,默认4
  131. if (!function_exists('randomkeys')) {
  132. function randomkeys(int $length = 4): string
  133. {
  134. $returnStr = '';
  135. $pattern = 'abcdefghijklmnopqrstuvwxyz';//ABCDEFGHIJKLOMNOPQRSTUVWXYZ
  136. $min = 0;
  137. $max = strlen($pattern) - 1;
  138. for ($i = 0; $i < $length; $i++) {
  139. $returnStr .= $pattern[mt_rand($min, $max)]; //生成php随机数
  140. }
  141. return $returnStr;
  142. }
  143. }
  144. //上传图片
  145. /**
  146. * @param $files
  147. * @return array
  148. */
  149. if (!function_exists('UploadImg')) {
  150. function UploadImg($files): array
  151. {
  152. $savename = [];
  153. $files = !is_array($files) ? [$files] : $files;
  154. //验证
  155. validate([
  156. 'imgFile' => [
  157. 'fileSize' => 10240000,
  158. 'fileExt' => 'jpg,jpeg,png,bmp,gif',
  159. 'fileMime' => 'image/jpeg,image/png,image/gif'
  160. ]
  161. ])->check(['imgFile' => $files]);
  162. foreach ($files as $file) {
  163. $url = Filesystem::disk('public')
  164. ->putFile('topic/' . date("Ymd"), $file, function () use ($file) {
  165. return str_replace('.' . $file->getOriginalExtension(), '', $file->getOriginalName() . "_" . date('YmdHis'));
  166. });
  167. $name = str_replace('.' . $file->getOriginalExtension(), '', $file->getOriginalName());
  168. $temp = ["url" => $url, "name" => $name];
  169. $savename[] = $temp;
  170. }
  171. return $savename;
  172. }
  173. }