Index.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-25 17:23
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\home\controller;
  13. use app\BaseController;
  14. use app\BaseViewController;
  15. use app\model\api\Site;
  16. use app\model\Api\SiteProduct;
  17. use app\model\system\Sys;
  18. use app\Request;
  19. use library\services\UtilService;
  20. use library\utils\AdvertUtils;
  21. use library\utils\Icon;
  22. use think\Cache;
  23. class Index extends BaseViewController
  24. {
  25. private $version = '1.032112';
  26. public function index(Request $request){
  27. $domain = $request->domain();
  28. $reids = \think\facade\Cache::store('redis');
  29. $keyDomain = md5($domain . $this->version);
  30. $content = $reids->get($keyDomain);
  31. if(!empty($content)){
  32. return $content;
  33. } else {
  34. $siteUrl = config('app')['SITE_URL'];
  35. if (strpos($domain, $siteUrl) !== false) {
  36. preg_match("#[http|https]://(.*?)\.#i", $domain, $match);
  37. $siteModel = (new Site)->where('sub_domain', $match[1])->find();
  38. } else {
  39. $domain = str_replace('http://', '', $domain);
  40. $domain = str_replace('https://', '', $domain);
  41. $siteModel = (new Site)->where('domain', $domain)->find();
  42. }
  43. $sys = Sys::where("id", 1)->find();
  44. // $siteModel = (new Site)->whereRaw("1=1")->find();
  45. if (empty($siteModel)) {
  46. return '抱歉,找不到站点,请联系客服电话:' . $sys['custom_tel'] . ',客服QQ:' . $sys['custom_qq'] . '!';
  47. }
  48. if (!empty($siteModel['is_close'])) {
  49. return '站点关闭了,请联系客服电话:' . $sys['custom_tel'] . ',客服QQ:' . $sys['custom_qq'] . '!';
  50. }
  51. $strBody = '';
  52. $txt = file_get_contents(app()->getRootPath() . 'public/tpl/index.html');
  53. preg_match('/\<link(.*?)<\/body>/is', $txt, $match);
  54. if (!empty($match[0])) {
  55. $strBody = $match[0];
  56. }
  57. //生成icon图标
  58. $iconImg = '';
  59. $iconStr = '';
  60. $iconAr = empty($siteModel['icon']) ? [] : json_decode($siteModel['icon'], true);
  61. if (
  62. (empty($iconAr) || $iconAr['icon_img'] != $siteModel['icon_img']) &&
  63. !empty($siteModel['icon_img'])
  64. ) {
  65. $icon = new Icon;
  66. $iconData = $icon->mkIcon($siteModel['icon_img'], 'public/favicon/');
  67. if (!empty($iconData)) {
  68. (new Site)->where('sassid', $siteModel['sassid'])->save([
  69. 'icon_data' => json_encode(['icon_img' => $siteModel['icon_img'], 'img' => $iconData['img']])
  70. ]);
  71. $iconImg = $iconData['img'];
  72. }
  73. } else {
  74. $iconImg = empty($iconAr['img']) ? '' : $iconAr['img'];
  75. }
  76. if (!empty($iconImg)) {
  77. $iconStr = '<link rel="bookmark" type="image/x-icon" href="https://www.babalipin.com/' . $iconImg . '" />';
  78. $iconStr .= '<link rel="shortcut icon" type="image/x-icon" href="https://www.babalipin.com/' . $iconImg . '" />';
  79. }
  80. $str = '<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>' . $siteModel['sys_seo_title'] . '</title>
  81. <meta name="keywords" content="' . $siteModel['sys_seo_keyword'] . '">
  82. <meta name="description" content="' . $siteModel['sys_seo_description'] . '">
  83. ' . $iconStr . '
  84. <script>
  85. var secret_key = "' . $siteModel['secret_key'] . '";
  86. var global_site = {
  87. "seo_title" : "' . $siteModel['sys_seo_title'] . '",//seo 标题
  88. "seo_keyword" : "' . $siteModel['sys_seo_keyword'] . '",//SEO key
  89. "seo_description" : "' . $siteModel['sys_seo_description'] . '",//SEO内容
  90. "record" : "' . $siteModel['record'] . '",//备案号
  91. "custom_qq" : "' . $siteModel['custom_qq'] . '",//客服QQ
  92. "custom_tel" : "' . $siteModel['custom_tel'] . '",//客服电话
  93. "weixin_logo" : "' . $siteModel['weixin_logo'] . '",//微信lOGO
  94. };</script>' . $strBody . '<script>// dataset 方法兼容 IE 浏览器。ie10及以下不支持dataset
  95. if (window.HTMLElement) {
  96. if (Object.getOwnPropertyNames(HTMLElement.prototype).indexOf(\'dataset\') === -1) {
  97. Object.defineProperty(HTMLElement.prototype, \'dataset\', {
  98. get: function () {
  99. var attributes = this.attributes // 获取节点的所有属性
  100. var name = []
  101. var value = [] // 定义两个数组保存属性名和属性值
  102. var obj = {} // 定义一个空对象
  103. for (var i = 0; i < attributes.length; i++) { // 遍历节点的所有属性
  104. if (attributes[i].nodeName.slice(0, 5) === \'data-\') { // 如果属性名的前面5个字符符合"data-"
  105. // 取出属性名的"data-"的后面的字符串放入name数组中
  106. name.push(attributes[i].nodeName.slice(5));
  107. // 取出对应的属性值放入value数组中
  108. value.push(attributes[i].nodeValue);
  109. }
  110. }
  111. for (var j = 0; j < name.length; j++) { // 遍历name和value数组
  112. obj[name[j]] = value[j]; // 将属性名和属性值保存到obj中
  113. }
  114. return obj // 返回对象
  115. }
  116. })
  117. }
  118. }</script>' . $siteModel['js_script'] . '</html>';
  119. $reids->set($keyDomain,$str,60 * 60 * 3);
  120. }
  121. echo $str;
  122. }
  123. }