From cadb9dbcc4020be84017ccb4f76dfb92b7f470bb Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Tue, 29 Oct 2024 17:38:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/BaseController.php | 2 + app/admin/controller/Product.php | 40 +- app/admin/controller/ProductCategory.php | 3 + app/admin/controller/ProductPurchaseLinks.php | 12 +- app/admin/controller/ProductSeries.php | 0 app/admin/controller/ReceiveSync.php | 4 +- app/admin/controller/Webuploader.php | 192 ++++--- app/admin/model/ProductSeries.php | 0 app/admin/view/product/edit.html | 44 +- .../view/product_purchase_links/index.html | 102 ++-- app/admin/view/product_series/add.html | 0 app/admin/view/product_series/edit.html | 0 app/admin/view/product_series/lists.html | 0 app/admin/view/webuploader/modal.html | 12 +- app/admin/view/webuploader/show.html | 6 +- app/admin/view/webuploader/uploadiframe.html | 2 +- app/common/controller/BaseController.php | 11 +- app/common/model/Product.php | 2 +- app/index/controller/BaseController.php | 187 ++++-- app/index/controller/Group.php | 395 +++++++------ app/index/controller/Product.php | 4 +- app/index/view/product/detail.phtml | 18 +- app/index/view/product/subcatelists.phtml | 4 +- app/mobile/controller/BaseController.php | 6 +- app/us/controller/Antifake-bak.php | 1 + app/us/controller/BaseController.php | 95 ++- app/us/controller/Product.php | 7 +- app/us/view/product/detail.phtml | 539 +++++++++++------- app/us/view/product/subcatelists.phtml | 4 +- app/usmobile/controller/Index.php | 1 - app/usmobile/controller/Product.php | 1 - 31 files changed, 1032 insertions(+), 662 deletions(-) mode change 100644 => 100755 app/admin/controller/ProductSeries.php mode change 100644 => 100755 app/admin/model/ProductSeries.php mode change 100644 => 100755 app/admin/view/product_series/add.html mode change 100644 => 100755 app/admin/view/product_series/edit.html mode change 100644 => 100755 app/admin/view/product_series/lists.html diff --git a/app/admin/controller/BaseController.php b/app/admin/controller/BaseController.php index c38aa07..910f955 100755 --- a/app/admin/controller/BaseController.php +++ b/app/admin/controller/BaseController.php @@ -15,6 +15,8 @@ class BaseController extends Base { //当前是否管理员 0:否 1:是 protected $administrator = 0; + protected $adminlang; + protected $country_code; public function __construct() { parent::__construct(); } diff --git a/app/admin/controller/Product.php b/app/admin/controller/Product.php index cda994d..65078e9 100755 --- a/app/admin/controller/Product.php +++ b/app/admin/controller/Product.php @@ -13,6 +13,8 @@ class Product extends BaseController { private $saveDirectory = 'default'; private $config; //配置信息 + private $docDir; + private $rootDir; public function __construct() { parent::__construct(); date_default_timezone_set("Asia/Shanghai"); @@ -648,7 +650,7 @@ class Product extends BaseController { foreach($productAttr[$key]['type'] as $kt => $attrValue ) { //echo $attrValue."
*****"; print_r($productAttr[$key]['sort']);
                                 $arrribute[$kt] = array(
-                                        $data['product_attr'][$kt] => $attrValue,
+                                        $data['product_attr'][$kt] => trim($attrValue),
                                         'sort'=> isset($productAttr[$key]['sort'][$kt]) ? $productAttr[$key]['sort'][$kt]: ''
                                 );                                
                            
@@ -694,7 +696,7 @@ class Product extends BaseController {
                         'product_id' => $last_insert_id,
                         'image_url' => isset($product_image['image_url']) ? $product_image['image_url'] : '',
                         'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
-                        'image_color' => isset($product_image['image_color']) ? $product_image['image_color'] : '',
+                        'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
                         'original_url' => isset($product_image['image_url']) ? $product_image['image_url'] : '',
                         'country_code'  => $this->country_code
                     );
@@ -821,9 +823,8 @@ class Product extends BaseController {
         foreach($productImages as $color => $att_item) {
             $product_images[] = $att_item;
         }
-      
-      //echo "
-------"; print_r($product_images); die;
-        
+
+
         unset($tmp_product_images);
 
         // tiaoshi($product_images);die;
@@ -831,7 +832,7 @@ class Product extends BaseController {
         $value['product_images'] = $product_images;
 
         $value['product_two_img'] = model('product_two_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);//print_r($value['product_product']);die;
-        //$value['product_bkimg'] = model('product_bk_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);//print_r($value['product_bkimg']);die;
+        //$value['product_bkimg'] = model('product_bk_img')->getList(array('product_id'=> $product['id']),['id' => 'asc',]);
         $value['product_dls'] = model('product_dl')->getList(array('product_id' => $product['id']), ['dl_sort' => 'asc', 'id' => 'asc',]);
         $value['product_relateds'] = model('product')->getRelatedProductList(array('pr.product_id' => $product['id']), ['pr.related_sort' => 'asc', 'pr.id' => 'asc',], ['p.id' => 'id', 'p.name', 'pr.id' => 'related_id', 'pr.related_product_id', 'pr.related_sort', 'pr.related_desc']);
         // tiaoshi($value['product_images']);die;
@@ -1047,7 +1048,7 @@ class Product extends BaseController {
                         
                          foreach($productAttr[$key]['type'] as $kt => $attrValue ) {
                                 $arrribute[$kt] = array(
-                                        $data['product_attr'][$kt] => $attrValue,
+                                        $data['product_attr'][$kt] => trim($attrValue),
                                         'sort'=> isset($productAttr[$key]['sort']) ? $productAttr[$key]['sort'][$kt]: ''
                                 );                                
                            
@@ -1082,8 +1083,8 @@ class Product extends BaseController {
                         $product_image_list[$product_image_id] = array('sign' => 'update', 'where' => array('id' => $product_image_id), 'data' => array(
                             'product_id' => $last_update_id,
                             'image_url' => $product_image['image_url'],
-                            'image_bk_color' => isset( $product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
-                            'image_color' => isset($product_image['image_color']) ? $product_image['image_color']: '',
+                            'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
+                            'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
                             'original_url' => $product_image['image_url'],
                         ));
                     } else {
@@ -1091,12 +1092,13 @@ class Product extends BaseController {
                             'product_id' => $last_update_id,
                             'image_url' => $product_image['image_url'],
                             'image_bk_color' => isset($product_image['image_bkcolor']) ? $product_image['image_bkcolor'] : '',
-                            'image_color' => isset($product_image['image_color']) ? $product_image['image_color']: '',
+                            'image_color' => isset($product_image['image_color']) ? trim($product_image['image_color']) : '',
                             'original_url' => $product_image['image_url'],
                         ));
                     }
                     //$imageModel->insertRow($image);
                 }
+
                 foreach ($product_image_list as $product_image_id => $image) {
                     if ($image['sign'] == 'insert') {
                         $imageModel->insertRow($image['data']);
@@ -1106,6 +1108,8 @@ class Product extends BaseController {
                         $imageModel->deleteRow($image['where']);
                     }
                 }
+            } else {
+                model('product_two_img')->deleteRow(['product_id' => $last_update_id]);
             }
             /* 二级列表主图片 end */
 
@@ -1591,13 +1595,13 @@ class Product extends BaseController {
         $arg_order = ['a.id' => 'desc'];
         $arg_field = ['a.*', 'c.id' => 'categoryid', 'c.name' => 'categoryname'];
 
-        foreach ($id as $where ){
+        foreach ($id as $where) {
             $where = [
-                'a.id'=>$where,
-                'a.stat'=>0,
+                'a.id' => $where,
+                'a.stat' => 0,
                 'a.country_code' => $this->country_code
-                ];
-            $result = model('product')->getProductLists($where,$arg_order,$arg_field,12);
+            ];
+            $result = model('product')->getProductLists($where, $arg_order, $arg_field, 12);
         }
 
         $this->assign($result);
@@ -1711,7 +1715,9 @@ class Product extends BaseController {
         }
 
         $arg_order = ['c.sort' => 'asc', 'c.id' => 'asc'];
-        $arg_field = array_map(function($value) {return 'a.' . $value;}, array_keys($fields));
+        $arg_field = array_map(function ($value) {
+            return 'a.' . $value;
+        }, array_keys($fields));
         $arg_field['c.id'] = 'categoryid';
         $arg_field['c.name'] = 'categoryname';
         $arg_field['c.pid'] = 'pid';
@@ -2592,7 +2598,7 @@ class Product extends BaseController {
                     mysqli_query($con, $sql);
                 }
             }
-        } catch (Exception $e) {
+        } catch (\Exception $e) {
             return $this->json(-1, $e->getMessage());
         }
 
diff --git a/app/admin/controller/ProductCategory.php b/app/admin/controller/ProductCategory.php
index 3a0e064..97d8f45 100755
--- a/app/admin/controller/ProductCategory.php
+++ b/app/admin/controller/ProductCategory.php
@@ -49,6 +49,9 @@ class ProductCategory extends BaseController
         $max_unique_id = \think\db::query($sql)[0]['unique_id'];
 
         $value = ['categoryOptions' => $categoryOptions, 'pid' => $pid, 'max_unique_id' => $max_unique_id];
+
+        $tcoCategory = \think\Db::name('product_tco_category')->where('id', '>', 0)->where('country_code', '=', $this->country_code)->select();
+        $value['tcoCategoryOptions'] = $this->buildTcoCategoryToTree($tcoCategory, 0, 0, 0);
         $this->assign($value);
         return $this->fetch();
     }
diff --git a/app/admin/controller/ProductPurchaseLinks.php b/app/admin/controller/ProductPurchaseLinks.php
index 465e8e3..3475c74 100755
--- a/app/admin/controller/ProductPurchaseLinks.php
+++ b/app/admin/controller/ProductPurchaseLinks.php
@@ -1,4 +1,5 @@
 order('links.id', 'sort')
             ->group('links.product_id')
             ->paginate(10);
-            
+
         $data = [];
         foreach ($list as $val) {
             if (empty($data[$val['spu']])) {
@@ -49,7 +50,6 @@ class ProductPurchaseLinks extends BaseController
                 $data[$val['spu']] = $val;
             }
         }
-        
         if (!$list->isEmpty()) {
             $others = Db::name('product_purchase_links')->alias('links')
                 ->field([
@@ -75,7 +75,7 @@ class ProductPurchaseLinks extends BaseController
                 }
             }
         }
-        
+
         $this->assign('list', $data);
         $this->assign('page', $list->render());
 
@@ -160,7 +160,7 @@ class ProductPurchaseLinks extends BaseController
         $rows  = $sheet->getHighestRow();    //总行数
 
         $xlsx = [];
-        for($i = 2; $i <= $rows; $i++) {
+        for ($i = 2; $i <= $rows; $i++) {
             // $xlsx[行号] = 数据
             $xlsx[$i] = [
                 'spu'      => $sheet->getCellByColumnAndRow(0, $i)->getValue(),
@@ -171,7 +171,7 @@ class ProductPurchaseLinks extends BaseController
 
         // 错误提示
         $errors = [];
-        
+
         // 验证成功数据
         $valid_data = [];
 
@@ -272,7 +272,7 @@ class ProductPurchaseLinks extends BaseController
             ])
             ->join('product_purchase_link_platforms platforms', 'platforms.id=links.platform_id')
             ->join('product', 'product.id=links.product_id')
-            ->where(function($query) {
+            ->where(function ($query) {
                 $query->where('product.is_show', '=', 0)->where('links.country_code', '=', $this->country_code);
                 if (request()->has('skeyword')) {
                     $query->where(function ($q) {
diff --git a/app/admin/controller/ProductSeries.php b/app/admin/controller/ProductSeries.php
old mode 100644
new mode 100755
diff --git a/app/admin/controller/ReceiveSync.php b/app/admin/controller/ReceiveSync.php
index 46c0797..6f9e237 100755
--- a/app/admin/controller/ReceiveSync.php
+++ b/app/admin/controller/ReceiveSync.php
@@ -222,10 +222,10 @@ class ReceiveSync extends Base
                             $record['cid'] = $category_id;
                         }
                     }
-                    
+
                     // 不更新产品名称
                     unset($record['name']);
-
+                    
                     $record['updatetime'] = time();
                     $ok = $query->name('product')->where('id', '=', $mp['id'])->update($record);
                     if (!$ok) {
diff --git a/app/admin/controller/Webuploader.php b/app/admin/controller/Webuploader.php
index 3a0c51d..6f0af57 100755
--- a/app/admin/controller/Webuploader.php
+++ b/app/admin/controller/Webuploader.php
@@ -8,13 +8,17 @@ use think\Config;
 use image\Image;
 use pagination\Pagination;
 
-class Webuploader extends BaseController {
+class Webuploader extends BaseController
+{
 
+    private $docDir = '';
+    private $rootDir = '';
     private $basePath = '/';
     private $saveDirectory = 'default';
     private $num = '10';
 
-    public function __construct() {
+    public function __construct()
+    {
         parent::__construct();
         date_default_timezone_set("Asia/Shanghai");
         $this->docDir = $this->request->server('DOCUMENT_ROOT');
@@ -26,7 +30,8 @@ class Webuploader extends BaseController {
         header("Content-Type: text/html; charset=utf-8");
     }
 
-    public function show() {
+    public function show()
+    {
         $filter_name = $this->request->get('filter_name', '', 'urldecode');
         if (!empty($filter_name)) {
             $filter_name = trim(str_replace(['/../', '../', '*'], '', $filter_name), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
@@ -110,7 +115,11 @@ class Webuploader extends BaseController {
                 $path = mb_substr($image, mb_strlen($this->docDir . $this->rootDir));
                 $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION));
                 switch ($ext) {
-                    case 'jpg': case 'png': case 'gif': case 'bmp': case 'jpeg':
+                    case 'jpg':
+                    case 'png':
+                    case 'gif':
+                    case 'bmp':
+                    case 'jpeg':
                         $data['images'][] = array(
                             'thumb' => $path,
                             'name' => implode(' ', $name),
@@ -119,7 +128,11 @@ class Webuploader extends BaseController {
                             'href' => $this->request->domain() . $path
                         );
                         break;
-                    case 'html': case 'htm': case 'js': case 'php': case 'txt':
+                    case 'html':
+                    case 'htm':
+                    case 'js':
+                    case 'php':
+                    case 'txt':
                         $data['images'][] = array(
                             'thumb' => $path,
                             'name' => implode(' ', $name),
@@ -128,7 +141,13 @@ class Webuploader extends BaseController {
                             'href' => 'javascript:void(0);'
                         );
                         break;
-                    case 'avi': case 'mp4': case 'rmvb': case 'mkv': case 'wmv': case 'ogg': case 'webm':
+                    case 'avi':
+                    case 'mp4':
+                    case 'rmvb':
+                    case 'mkv':
+                    case 'wmv':
+                    case 'ogg':
+                    case 'webm':
                         $data['images'][] = array(
                             'thumb' => $path,
                             'name' => implode(' ', $name),
@@ -137,7 +156,13 @@ class Webuploader extends BaseController {
                             'href' => 'javascript:void(0);'
                         );
                         break;
-                    case 'zip': case 'rar': case 'gz': case 'tar': case 'tgz': case 'gz': case 'iso':
+                    case 'zip':
+                    case 'rar':
+                    case 'gz':
+                    case 'tar':
+                    case 'tgz':
+                    case 'gz':
+                    case 'iso':
                         $data['images'][] = array(
                             'thumb' => $path,
                             'name' => implode(' ', $name),
@@ -203,13 +228,14 @@ class Webuploader extends BaseController {
         return $this->fetch();
     }
 
-    public function modal() {
+    public function modal()
+    {
         $relativepath = $this->request->get('directory', '', 'urldecode');
         if (!empty($relativepath)) {
             $relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         }
         $func = $this->request->get('func', 'undefined');
-        $num = $this->num;
+        $num = $this->request->get('num', $this->num);
         $type = $this->request->get('type', '');
         $target = $this->request->get('target', '');
         $thumb = $this->request->get('thumb', '');
@@ -252,14 +278,15 @@ class Webuploader extends BaseController {
         return $this->fetch();
     }
 
-    public function uploadiframe() {
+    public function uploadiframe()
+    {
         $relativepath = $this->request->get('directory', '', 'urldecode');
         if (!empty($relativepath)) {
             $relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         }
         $func = $this->request->get('func', 'undefined');
         //$num = $this->request->get('num/d', 1);
-        $num = $this->num;
+        $num = $this->request->get('num', $this->num);
         $type = $this->request->get('type', '');
         $target = $this->request->get('target', '');
         $thumb = $this->request->get('thumb', '');
@@ -295,21 +322,24 @@ class Webuploader extends BaseController {
         return str_replace(array_keys($tpl_replace_string), array_values($tpl_replace_string), $content);
     }
 
-    public function imageupload() {
+    public function imageupload()
+    {
         // 上传图片框中的描述表单名称,
         $title = $this->request->get('pictitle');
         $relativepath = $this->request->get('directory', '', 'urldecode');
         if (!empty($relativepath)) {
             $relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         }
-        $this->saveDirectory = $relativepath? : 'default';
+        $this->saveDirectory = $relativepath ?: 'default';
         // 获取表单上传文件 例如上传了001.jpg
         $file = request()->file('file');
-//        if (empty($file))
-//            $file = request()->file('upfile');
+        //        if (empty($file))
+        //            $file = request()->file('upfile');
         $image_upload_limit_size = Config::get('image_upload_limit_size');
         $result = $this->validate(
-                ['file' => $file], ['file' => 'image|fileSize:' . $image_upload_limit_size . '|fileExt:jpg,jpeg,gif,png'], ['file.image' => '上传文件必须为图片', 'file.fileSize' => '上传文件过大', 'file.fileExt' => '上传文件后缀名必须为jpg,jpeg,gif,png']
+            ['file' => $file],
+            ['file' => 'image|fileSize:' . $image_upload_limit_size . '|fileExt:jpg,jpeg,gif,png'],
+            ['file.image' => '上传文件必须为图片', 'file.fileSize' => '上传文件过大', 'file.fileExt' => '上传文件后缀名必须为jpg,jpeg,gif,png']
         );
         if (true !== $result || !$file) {
             $state = "ERROR " . $result;
@@ -332,25 +362,27 @@ class Webuploader extends BaseController {
         $return_data['original'] = ''; // 这里好像没啥用 暂时注释起来
         $return_data['state'] = $state;
         $return_data['directory'] = $this->saveDirectory;
-        echo json_encode($return_data);
-        exit;
+        return json_encode($return_data);
     }
 
-    public function fileupload() {
+    public function fileupload()
+    {
         // 上传图片框中的描述表单名称,
         $title = $this->request->get('pictitle');
         $relativepath = $this->request->get('directory', '', 'urldecode');
         if (!empty($relativepath)) {
             $relativepath = trim(str_replace(['/../', '../', '*'], '', $relativepath), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         }
-        $this->saveDirectory = $relativepath? : 'default';
+        $this->saveDirectory = $relativepath ?: 'default';
         // 获取表单上传文件 例如上传了001.jpg
         $file = request()->file('file');
-//        if (empty($file))
-//            $file = request()->file('upfile');
+        //        if (empty($file))
+        //            $file = request()->file('upfile');
         $file_upload_limit_size = Config::get('file_upload_limit_size');
         $result = $this->validate(
-                ['file' => $file], ['file' => 'fileSize:' . $file_upload_limit_size], ['file.fileSize' => '上传文件过大']
+            ['file' => $file],
+            ['file' => 'fileSize:' . $file_upload_limit_size],
+            ['file.fileSize' => '上传文件过大']
         );
         if (true !== $result || !$file) {
             $state = "ERROR " . $result;
@@ -377,12 +409,13 @@ class Webuploader extends BaseController {
       删除上传的图片
      */
 
-    public function deluploadimage() {
+    public function deluploadimage()
+    {
         $action = $this->request->get('action', 'del');
         $filename = $this->request->get('filename');
         $filename = empty($filename) ? $this->request->get('url') : $filename;
-//        $filename = str_replace('../', '', $filename);
-//        $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
+        //        $filename = str_replace('../', '', $filename);
+        //        $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         $filename = trim(str_replace('../', '', $filename), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         $filename = './' . $filename;
         if ($action == 'del' && !empty($filename) && is_file($filename)) {
@@ -404,12 +437,13 @@ class Webuploader extends BaseController {
       删除上传的文件
      */
 
-    public function deluploadfile() {
+    public function deluploadfile()
+    {
         $action = $this->request->get('action', 'del');
         $filename = $this->request->get('filename');
         $filename = empty($filename) ? $this->request->get('url') : $filename;
-//        $filename = str_replace('../', '', $filename);
-//        $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
+        //        $filename = str_replace('../', '', $filename);
+        //        $filename = trim($filename, "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         $filename = trim(str_replace('../', '', $filename), "\x20\x09\x0A\x0D\x00\x0B\x2E\x2F");
         $filename = './' . $filename;
         if ($action == 'del' && !empty($filename) && is_file($filename)) {
@@ -422,7 +456,8 @@ class Webuploader extends BaseController {
         exit;
     }
 
-    public function preview() {
+    public function preview()
+    {
         // 此页面用来协助 IE6/7 预览图片,因为 IE 6/7 不支持 base64
         $DIR = 'preview';
         // Create target dir
@@ -448,7 +483,10 @@ class Webuploader extends BaseController {
         $src = file_get_contents('php://input');
         if (preg_match("#^data:image/(\w+);base64,(.*)$#", $src, $matches)) {
             $previewUrl = sprintf(
-                    "%s://%s%s", isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI']
+                "%s://%s%s",
+                isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
+                $_SERVER['HTTP_HOST'],
+                $_SERVER['REQUEST_URI']
             );
             $previewUrl = str_replace("preview.php", "", $previewUrl);
             $base64 = $matches[2];
@@ -470,8 +508,9 @@ class Webuploader extends BaseController {
         }
     }
 
-    public function upload() {
-        $json = array();
+    public function upload()
+    {
+        $json = [];
         // Make sure we have the correct directory
         $relativepath = $this->request->get('directory', '', 'urldecode');
         if (!empty($relativepath)) {
@@ -482,46 +521,57 @@ class Webuploader extends BaseController {
         }
         // Check its a directory
         if (!is_dir($directory) || mb_substr($directory, 0, mb_strlen($this->basePath)) != $this->basePath) {
-            $json['error'] = '路径错误';
-        }
-        if (!$json) {
-            $file_upload_limit_size = Config::get('file_upload_limit_size');
-            // Check if multiple files are uploaded or just one
-            //获取上传的文件类型
-            //$type = $this->request->get('type', '');
-            // 获取表单上传文件
-            $files = $this->request->file('file');
-            foreach ($files as $k => $file) {
-                // 移动到框架应用根目录/public/uploads/ 目录下
-                $info = $file->validate(['size' => $file_upload_limit_size])->move($directory, false);
-                if ($info) {
-                    // 成功上传后 获取上传信息
-                    $ext = strtolower($info->getExtension());
-                    if (in_array($ext, ['gif', 'jpg', 'jpeg', 'png', 'bmp'])) {
-                        $image_upload_limit_size = Config::get('image_upload_limit_size');
-                        $chick = $info->getInfo();
-
-                        if ($chick['size']>=$image_upload_limit_size) {
-                            $json['success'] = "文件大小超过1M";
-                        } else {
-                            $this->watermark('/uploads/' . $relativepath . '/' . $info->getFilename());
-                        }
-                    }
-                } else {
-                    // 上传失败获取错误信息
-                    $json['error'] = '';
-                    $json['error'] .= '文件' . $k . $file->getError();
-                }
+            if (!mkdir($directory, 0755, true)) {
+                $json['error'] = '路径错误';
             }
         }
         if (!$json) {
-            $json['success'] = '文件上传成功';
+            $json = [
+                'success' => '文件上传成功'
+            ];
+
+            $file_upload_limit_size = Config::get('file_upload_limit_size');
+            $image_upload_limit_size = Config::get('image_upload_limit_size');
+            // 获取表单上传文件
+            $errors = [];
+            $files  = $this->request->file('file');
+            foreach ($files as $k => $file) {
+                $file_info = $file->getInfo();
+                $idx       = mb_strripos($file_info['name'], '.', 0, 'utf-8');
+                $file      = $file->validate(['size' => $file_upload_limit_size]);
+                if (false !== $idx) {
+                    $start = $idx;
+                    if (mb_strlen($file_info['name'], 'utf-8') > $idx) {
+                        $start = $idx + 1;
+                    }
+                    $ext = mb_substr($file_info['name'], $start);
+                    if (in_array($ext, ['gif', 'jpg', 'jpeg', 'png', 'bmp'])) {
+                        $file->validate(['size' => $image_upload_limit_size]);
+                    }
+                }
+                // 移动到框架应用根目录/public/uploads/ 目录下
+                $info = $file->move($directory, false);
+                if ($info) {
+                    // 成功上传后 获取上传信息
+                    $this->watermark('/uploads/' . $relativepath . '/' . $info->getFilename());
+                } else {
+                    // 上传失败获取错误信息
+                    $errors[] = '文件【' . $file->getInfo()['name'] . '】' . $file->getError();
+                }
+            }
+            if (count($errors) != 0) {
+                $json = [
+                    'success' => implode('\n', $errors)
+                ];
+            }
         }
+        
         echo json_encode($json);
         exit;
     }
 
-    public function folder() {
+    public function folder()
+    {
         $json = array();
         // Make sure we have the correct directory
         $relativepath = $this->request->get('directory', '', 'urldecode');
@@ -569,7 +619,8 @@ class Webuploader extends BaseController {
         exit;
     }
 
-    public function rename() {
+    public function rename()
+    {
         $json = array();
         // Make sure we have the correct directory
         $relativepath = $this->request->get('directory', '', 'urldecode');
@@ -617,7 +668,8 @@ class Webuploader extends BaseController {
         exit;
     }
 
-    public function delete() {
+    public function delete()
+    {
         $json = array();
         $paths = $this->request->post();
         if (isset($paths['path'])) {
@@ -677,7 +729,8 @@ class Webuploader extends BaseController {
         exit;
     }
 
-    public function watermark($return_url = '/uploads/nopic.jpg') {
+    public function watermark($return_url = '/uploads/nopic.jpg')
+    {
         $iswatermark = Config::get('watermark');
         $return_data = ['watermark' => $iswatermark];
         if ($iswatermark) {
@@ -707,7 +760,7 @@ class Webuploader extends BaseController {
                     $ttf = './hgzb.ttf';
                     if (file_exists($ttf)) {
                         $size = $wmconfig['mark_text_size'] ? $wmconfig['mark_text_size'] : 30;
-                        $color = $wmconfig['mark_text_color'] ? : '#000000';
+                        $color = $wmconfig['mark_text_color'] ?: '#000000';
                         if (!preg_match('/^#[0-9a-fA-F]{6}$/', $color)) {
                             $color = '#000000';
                         }
@@ -729,5 +782,4 @@ class Webuploader extends BaseController {
         }
         return $return_data;
     }
-
 }
diff --git a/app/admin/model/ProductSeries.php b/app/admin/model/ProductSeries.php
old mode 100644
new mode 100755
diff --git a/app/admin/view/product/edit.html b/app/admin/view/product/edit.html
index 99502eb..951f65e 100755
--- a/app/admin/view/product/edit.html
+++ b/app/admin/view/product/edit.html
@@ -37,8 +37,6 @@
                             
  • 图片信息
  • 详细内容
  • 相关信息及下载
  • - -
    @@ -357,7 +355,6 @@ foreach ($selectColorObj as $c=>$v) { $sltclrOption .= $c==$product_image['image_color']?'':''; } - echo $product_row; ?> @@ -367,18 +364,14 @@ if(strlen($product_image["image_color"]) ==2 || $product_image["image_color"] == ''){ echo ''; + echo ''; } else{ echo ''; } - - ?> - @@ -1272,22 +1265,21 @@ function changeAlbumImagesSort(){ } - /*二级列表主图*/ var product_row = ""; function addProduct() { - var sltclrOption = ''; + for (clroption in selectColorObj) { sltclrOption += ''; } sltclrOption += ''; var html = ''; html += ' '; - html += ' ' + sltclrOption + ''; + html += ' ' + sltclrOption + ''; //html += ' '; //html += ' '; - html += ' '; + html += ' '; html += ' '; html += ''; $('#product tbody').append(html); @@ -1795,16 +1787,16 @@ function delAlbumAttributeColumn (object){ } - \ No newline at end of file diff --git a/app/admin/view/product_purchase_links/index.html b/app/admin/view/product_purchase_links/index.html index ffd14fa..6b087d0 100755 --- a/app/admin/view/product_purchase_links/index.html +++ b/app/admin/view/product_purchase_links/index.html @@ -15,7 +15,7 @@

    链接列表

    - +
    @@ -37,43 +37,43 @@ {if condition="!empty($list)"} {volist name="list" id="vo"} - - {$vo.name} - {$vo.spu} - - {if condition="$vo['is_show'] == -1"} - 未上架 - {else/} - 已上架 - {/if} - - - - - - - - - {if condition="!empty($vo.children)"} - {volist name="vo.children" id="voc"} - - - - - - - - - {/volist} - {/if} + + {$vo.name} + {$vo.spu} + + {if condition="$vo['is_show'] == -1"} + 未上架 + {else/} + 已上架 + {/if} + + + + + + + + + {if condition="!empty($vo.children)"} + {volist name="vo.children" id="voc"} + + + + + + + + + {/volist} + {/if} {/volist} {/if} @@ -96,9 +96,9 @@
    - + + diff --git a/app/admin/view/webuploader/show.html b/app/admin/view/webuploader/show.html index 4d2bc7a..3ed860a 100755 --- a/app/admin/view/webuploader/show.html +++ b/app/admin/view/webuploader/show.html @@ -225,8 +225,8 @@ } $('#modal-image').load(url); }); -//--> - + + diff --git a/app/admin/view/webuploader/uploadiframe.html b/app/admin/view/webuploader/uploadiframe.html index 5a744bc..9e94003 100755 --- a/app/admin/view/webuploader/uploadiframe.html +++ b/app/admin/view/webuploader/uploadiframe.html @@ -58,7 +58,7 @@ "compress": false, //不启用压缩 "resize": false, //尺寸不改变 "formData": {}, - "pick": {id: '#filePicker', label: '点击选择文件', "name": "file"}, + "pick": {id: '#filePicker', label: '点击选择文件', "name": "file", "multiple": false}, "thumb": {"width": 110, "height": 110, "quality": 70, "allowMagnify": true, "crop": true, "preserveHeaders": false, "type": "image\/jpeg"} }; $(function() { diff --git a/app/common/controller/BaseController.php b/app/common/controller/BaseController.php index 05e70f8..b49abea 100755 --- a/app/common/controller/BaseController.php +++ b/app/common/controller/BaseController.php @@ -16,7 +16,13 @@ class BaseController extends Controller { protected $member_id; protected $lang; - public function __construct() { + protected $module; + protected $controller; + protected $action; + protected $langid; + + public function __construct() + { parent::__construct(); } @@ -24,7 +30,8 @@ class BaseController extends Controller { * 初始化操作 * @access protected */ - protected function _initialize() { + protected function _initialize() + { //parent::_initialize(); //$this->siteid = Config::get('siteid', 0); $this->module = $this->request->module(); diff --git a/app/common/model/Product.php b/app/common/model/Product.php index e78edc4..c6e4287 100755 --- a/app/common/model/Product.php +++ b/app/common/model/Product.php @@ -133,7 +133,7 @@ class Product extends Model { public function getNewItemLists($where = null, $order = null, $field = null, $limit = null) { $this->alias('p')->join('product_category c', 'p.cid=c.id', 'INNER')->join('product_category t', 'c.pid=t.id', 'INNER'); if (is_array($where)) { - $where = array_merge(['p.stat' => ['eq', '0'],'p.isnew' => ['eq', '1'],'p.is_show' => ['eq', '0'],'t.isshow' => ['eq', '1'],'p.country_code' => ['eq', 'ZH']], $where); + $where = array_merge(['p.stat' => ['eq', '0'],'p.isnew' => ['eq', '1'], 'p.is_show' => ['eq', '0'],'t.isshow' => ['eq', '1'],'p.country_code' => ['eq', 'ZH']], $where); } if ($where) { $this->where($where); diff --git a/app/index/controller/BaseController.php b/app/index/controller/BaseController.php index 5a5a7b8..81d4cdb 100755 --- a/app/index/controller/BaseController.php +++ b/app/index/controller/BaseController.php @@ -10,7 +10,8 @@ use think\Cookie; use app\common\controller\BaseController as Controller; // -class BaseController extends Controller { +class BaseController extends Controller +{ //当前用户 protected $customer_id = 0; @@ -18,23 +19,30 @@ class BaseController extends Controller { # 当前国家编码 protected $country_code = 'ZH'; - public function __construct() { + protected $customer_info = []; + protected $categoryList = []; + protected $country_list = []; + protected $productCategory = []; + + protected $nav_header = []; + protected $nav_footer = []; + + public function __construct() + { parent::__construct(); } // 初始化 - protected function _initialize() { + protected function _initialize() + { parent::_initialize(); - if ($this->check_true_login()) - { + if ($this->check_true_login()) { $customer_info = json_decode(Cookie::get('c'), true); $this->view->assign('customer_info', $customer_info); - $this->customer_id = $customer_info['id']; + $this->customer_id = $customer_info['id']; $this->customer_info = $customer_info; - } - else - { + } else { $this->_logout(); } @@ -43,11 +51,67 @@ class BaseController extends Controller { $this->view->assign('seo_description', (string) Config::get('website_seo_description')); // $this->categoryList = $this->cacheGet('productCategoryList'); if (empty($this->productCategory)) { - $this->categoryList = Loader::model('ProductCategory')->getList(['stat' => 0, 'siteid' => $this->siteid,'isshow'=>1, 'country_code' => $this->country_code], ['sort' => 'asc', 'id' => 'asc'], ['id', 'pid', 'haschild', 'name', 'shortname', 'sort', 'description', 'isshow', 'recommend', 'picture', 'icon', 'image', 'm_icon', 'unique_id']); + // $this->categoryList = Loader::model('ProductCategory')->getList(['stat' => 0, 'siteid' => $this->siteid, 'isshow' => 1, 'country_code' => $this->country_code], ['sort' => 'asc', 'id' => 'asc'], ['id', 'pid', 'haschild', 'name', 'shortname', 'sort', 'description', 'isshow', 'recommend', 'picture', 'icon', 'image', 'm_icon', 'unique_id']); + $this->categoryList = \think\Db::name('product_category')->alias('pc') + ->field([ + 'pc.id', + 'pc.pid', + 'pc.haschild', + 'pc.name', + 'pc.shortname', + 'pc.sort', + 'pc.description', + 'pc.isshow', + 'pc.recommend', + 'pc.picture', + 'pc.icon', + 'pc.image', + 'pc.m_icon', + 'pc.unique_id' + ]) + ->where('pc.stat', '=', 0) + ->where('pc.siteid', '=', $this->siteid) + ->where('pc.isshow', '=', 1) + ->where('pc.haschild', '=', 0) + ->where('pc.country_code', '=', $this->country_code) + ->whereExists(function($query) { + $query->name('product')->alias('p') + ->where('p.stat', '=', 0) + ->where('p.is_show', '=', 0) + ->where('p.country_code', '=', $this->country_code) + ->where('p.cid=pc.id'); + }) + ->union(function($query) { + $query->name('product_category')->alias('uni_pc') + ->field([ + 'uni_pc.id', + 'uni_pc.pid', + 'uni_pc.haschild', + 'uni_pc.name', + 'uni_pc.shortname', + 'uni_pc.sort', + 'uni_pc.description', + 'uni_pc.isshow', + 'uni_pc.recommend', + 'uni_pc.picture', + 'uni_pc.icon', + 'uni_pc.image', + 'uni_pc.m_icon', + 'uni_pc.unique_id' + ]) + ->where('uni_pc.stat', '=', 0) + ->where('uni_pc.siteid', '=', $this->siteid) + ->where('uni_pc.isshow', '=', 1) + ->where('uni_pc.haschild', '=', 1) + ->where('uni_pc.country_code', '=', $this->country_code); + }) + ->order(['sort' => 'asc', 'id' => 'asc']) + ->select(); $this->cacheTag('ProductCategoryTag')->set('productCategoryList', $this->categoryList); } - - $this->productCategory = $this->list_to_tree($this->categoryList); + $this->categoryList = collection($this->categoryList); + $this->productCategory = $this->buildTreeForCategory($this->categoryList, 0); + // tiaoshi($this->productCategory[0]['child'][0]['child']);die; if ($this->cacheHas('country_list')) { $this->country_list = $this->cacheGet('country_list'); @@ -88,7 +152,27 @@ class BaseController extends Controller { $this->view->assign('productCategory', $this->productCategory); $this->view->assign('allCategoryList', $this->categoryList); } - + + // 组装分类树状结构 + private function buildTreeForCategory($data, $pid=0) + { + $tree = []; + foreach ($data as $val) { + if ($val['pid'] == $pid) { + $children = $this->buildTreeForCategory($data, $val['id']); + if (!empty($children)) { + $val['child'] = $children; + } + if (empty($children) && $val['haschild'] == 1) { + continue; + } + $tree[] = $val; + } + } + + return $tree; + } + protected function buildTree($data, $pid = 0) { $tree = []; @@ -131,7 +215,8 @@ class BaseController extends Controller { } //导航初始化 - private function navInit(){ + private function navInit() + { // 读取缓存数据 //$header = $this->cacheGet('cache_common_nav_header_key'); //$footer = $this->cacheGet('cache_common_nav_footer_key'); @@ -142,34 +227,30 @@ class BaseController extends Controller { // 缓存没数据则从数据库重新读取,顶部菜单 //if(empty($header)) //{ - $headerData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'header', 'stat'=>0, 'pid'=>0, 'country_code' => $this->country_code))->order('sort')->select(); - $header = self::navDataDealWith($headerData); - if(!empty($header)) - { - foreach($header as &$v) - { - $childData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'header', 'stat'=>0, 'pid'=>$v['id'], 'country_code' => $this->country_code))->order('sort')->select(); - $v['items'] = self::navDataDealWith($childData); - } + $headerData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'header', 'stat' => 0, 'pid' => 0, 'country_code' => $this->country_code))->order('sort')->select(); + $header = self::navDataDealWith($headerData); + if (!empty($header)) { + foreach ($header as &$v) { + $childData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'header', 'stat' => 0, 'pid' => $v['id'], 'country_code' => $this->country_code))->order('sort')->select(); + $v['items'] = self::navDataDealWith($childData); } - //$this->cacheSet('cache_common_nav_header_key', $header, 3600); - - //} - + } + //$this->cacheSet('cache_common_nav_header_key', $header, 3600); + + //} + // 底部导航 //if(empty($footer)) //{ - $footerdata = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'footer', 'stat'=>0, 'pid'=>0, 'country_code' => $this->country_code))->order('sort')->select(); - $footer = self::navDataDealWith($footerdata); - if(!empty($footer)) - { - foreach($footer as &$v) - { - $childData = Loader::model('Navigation')->field($field)->where(array('nav_type'=>'footer', 'stat'=>0, 'pid'=>$v['id'], 'country_code' => $this->country_code))->order('sort')->select(); - $v['items'] = self::navDataDealWith($childData); - } - } - //$this->cacheSet('cache_common_nav_footer_key', $footer, 3600); + $footerdata = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'footer', 'stat' => 0, 'pid' => 0, 'country_code' => $this->country_code))->order('sort')->select(); + $footer = self::navDataDealWith($footerdata); + if (!empty($footer)) { + foreach ($footer as &$v) { + $childData = Loader::model('Navigation')->field($field)->where(array('nav_type' => 'footer', 'stat' => 0, 'pid' => $v['id'], 'country_code' => $this->country_code))->order('sort')->select(); + $v['items'] = self::navDataDealWith($childData); + } + } + //$this->cacheSet('cache_common_nav_footer_key', $footer, 3600); //} return [ @@ -187,13 +268,10 @@ class BaseController extends Controller { */ public function NavDataDealWith($data) { - if(!empty($data) && is_array($data)) - { - foreach($data as $k=>&$v) - { + if (!empty($data) && is_array($data)) { + foreach ($data as $k => &$v) { // url处理 - switch($v['data_type']) - { + switch ($v['data_type']) { // 文章分类 case 'article': $v['url'] = 'article/detail/'.$v['value'].'.html'; @@ -208,12 +286,11 @@ class BaseController extends Controller { case 'goods_category': $category = Loader::model('ProductCategory')->getRow(['stat' => 0, 'id' => $v['value'], 'country_code' => $this->country_code], null, ['id' => 'asc']); //echo $category['pid']."
    =="; print_r($category);
    -                        if($category['pid'] == 0) {
    -                            $v['url'] = 'product/catelists/'.$v['value'].'.html';
    +                        if ($category['pid'] == 0) {
    +                            $v['url'] = 'product/catelists/' . $v['value'] . '.html';
    +                        } else {
    +                            $v['url'] = 'product/subcategory/' . $v['value'] . '.html';
                             }
    -                        else{
    -                            $v['url'] = 'product/subcategory/'.$v['value'].'.html';
    -                        }   
                             break;
                     }
                     
    @@ -263,12 +340,12 @@ class BaseController extends Controller {
         private function check_login_token($customer_id, $curr_time, $p)
         {
             $expire = 86400 * 30;
    -        if (time() - $curr_time > $expire)
    +        if (time() - $curr_time > $expire) {
                 return false;
    +        }
     
             $temp_p = $this->make_pwd($customer_id, $curr_time);
    -        if ($temp_p !== $p)
    -        {
    +        if ($temp_p !== $p) {
                 return false;
             }
     
    @@ -309,8 +386,7 @@ class BaseController extends Controller {
         protected function check_true_login()
         {
             //  校验用户是否登录,且校验cookie合法性
    -        if (!$this->check_login())
    -        {
    +        if (!$this->check_login()) {
                 return false;
             }
     
    @@ -323,8 +399,9 @@ class BaseController extends Controller {
     
         protected function _logout()
         {
    -        if (Cookie::has('c'))
    +        if (Cookie::has('c')) {
                 Cookie::delete('c');
    +        }
     
             $this->customer_id = 0;
         }
    diff --git a/app/index/controller/Group.php b/app/index/controller/Group.php
    index 0ad83ba..48e56f2 100755
    --- a/app/index/controller/Group.php
    +++ b/app/index/controller/Group.php
    @@ -36,18 +36,16 @@ class Group extends BaseController
         {
             return $this->view->fetch();
         }
    -	public function backup_treasure()
    -	{
    -	    return $this->view->fetch();
    -	}
    -
    +    public function backup_treasure()
    +    {
    +        return $this->view->fetch();
    +    }
     
         public function pssd()
         {
             return $this->view->fetch();
         }
     
    -
         public function question()
         {
             $data = $this->request->param();
    @@ -57,33 +55,32 @@ class Group extends BaseController
                 'a.country_code' => $this->country_code,
             ];
             $cid = isset($data['cid']) ? $data['cid'] : 0;
    -        if ($cid)
    +        if ($cid) {
                 $where['a.cid'] = $cid;
    +        }
     
             $search['keyword'] = '';
    -        if (isset($data['keyword']) && $data['keyword'] != '')
    -        {
    -            $where['a.title'] = ['like', '%' . $data['keyword'] . '%'];
    +        if (isset($data['keyword']) && $data['keyword'] != '') {
    +            $where['a.title']  = ['like', '%' . $data['keyword'] . '%'];
                 $search['keyword'] = $data['keyword'];
             }
     
             $order = [
    -            'a.sort'    => 'asc',
    -            'a.id'      => 'desc'
    +            'a.sort' => 'asc',
    +            'a.id'   => 'desc',
             ];
             $field = ['a.*', 'b.name' => 'cate_name'];
     
    -
             $question_list = model('question')->alias('a')->join('question_category b', 'a.cid = b.id', 'LEFT')->where($where)->order($order)->field($field)->paginate(4);
             // echo model('question')->getLastSql();die;
             // tiaoshi($question_list->items());die;
             $question_catelist = model('question_category')->where(['stat' => 0])->select();
    -        $value = [
    -            'question_list' => $question_list->isEmpty() ? null : $question_list->items(),
    -            'page'          => $question_list->render(),
    -            'cid'           => $cid,
    -            'search'        => $search,
    -            'question_catelist' => $question_catelist
    +        $value             = [
    +            'question_list'     => $question_list->isEmpty() ? null : $question_list->items(),
    +            'page'              => $question_list->render(),
    +            'cid'               => $cid,
    +            'search'            => $search,
    +            'question_catelist' => $question_catelist,
             ];
     
             $this->assign($value);
    @@ -104,7 +101,7 @@ class Group extends BaseController
         {
             return $this->view->fetch();
         }
    -	public function responsibility()
    +    public function responsibility()
         {
             return $this->view->fetch();
         }
    @@ -128,7 +125,6 @@ class Group extends BaseController
             return $this->view->fetch();
         }
     
    -
         public function search()
         {
             return $this->view->fetch();
    @@ -139,7 +135,6 @@ class Group extends BaseController
             return $this->view->fetch();
         }
     
    -    
         public function headset()
         {
             return $this->view->fetch();
    @@ -195,113 +190,127 @@ class Group extends BaseController
         {
             return $this->view->fetch();
         }
    -	public function thunderbolt_3 ()
    +    public function thunderbolt_3()
         {
             return $this->view->fetch();
         }
    -		public function customized ()
    +    public function customized()
         {
             return $this->view->fetch();
         }
     /********20230720 顶部导航栏目************/
    -    public function blog2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -    public function brand2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -    public function brand(){
    -			
    -            return $this->view->fetch();
    -    }
    -     public function Contact2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -    public function product2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -     public function catelists2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -     public function download(){
    -			
    -            return $this->view->fetch();
    -    }
    -    
    -    public function achievement(){
    -			
    -            return $this->view->fetch();
    -    }
    -	  public function business2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -     public function distributor2023(){
    -			
    -            return $this->view->fetch(); 
    -    }	
    -  
    -    public function introduction2023(){
    -			
    -            return $this->view->fetch();
    -    }
    -	public function faq(){
    +    public function blog2023()
    +    {
     
    -            $where = ['stat' => 0];
    -            $order = [
    -                'sort' => 'asc',
    -                'id'   => 'desc'
    -            ];
    -            $fq_list = model('fq')->where($where)->order($order)->paginate(6);
    -            // echo model('question')->getLastSql();die;
    -            // tiaoshi($question_list->items());die;
    -    
    -            $value = [
    -                'fq_list' => $fq_list->isEmpty() ? null : $fq_list->items(),
    -                'page'          => $fq_list->render(),
    -    
    -            ];
    -            $this->assign($value);       
    -            return $this->view->fetch();
    +        return $this->view->fetch();
    +    }
    +    public function brand2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function brand()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function Contact2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function product2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function catelists2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function download()
    +    {
    +
    +        return $this->view->fetch();
         }
     
    -    public function mileage(){
    -            $arg_where = ['a.siteid' => $this->siteid, 'a.country_code' => $this->country_code];
    -            $arg_order = ['a.id' => 'desc'];
    -            $arg_field = ['a.id', 'a.cid', 'a.name', 'a.sort', 'a.headline', 'a.ishot', 'a.recommend', 'a.writer', 'a.source', 'a.viewcount', 'a.zancount', 'a.commentcount', 'a.description', 'a.picture', 'a.tags', 'a.createtime', 'c.id' => 'categoryid', 'c.name' => 'categoryname'];
    -            $dataObject = model('Article')->getCateArticleLists($arg_where, $arg_order, $arg_field, 12);
    -    
    -            $category = model('ArticleCategory')->getRow(1);
    -            
    -            $value = [
    -                'list' => $dataObject->isEmpty() ? null : $dataObject->items(), //$dataObject->getCollection()->toArray()
    -                'page' => $dataObject->render(),
    -                'category' => $category,
    -            ];
    -            
    -            
    -            //echo "
    =="; print_r($category);
    -            $this->assign($value);
    -        
    -            return $this->view->fetch();
    -    }        
    -        
    -    public function guide(){
    -			
    -            return $this->view->fetch();
    -    }        
    -        
    +    public function achievement()
    +    {
     
    -    public function query(){
    -			
    -            return $this->view->fetch();
    +        return $this->view->fetch();
         }
    -    public function contact(){
    +    public function business2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function distributor2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +
    +    public function introduction2023()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function faq()
    +    {
    +
    +        $where = ['stat' => 0];
    +        $order = [
    +            'sort' => 'asc',
    +            'id'   => 'desc',
    +        ];
    +        $fq_list = model('fq')->where($where)->order($order)->paginate(6);
    +        // echo model('question')->getLastSql();die;
    +        // tiaoshi($question_list->items());die;
    +
    +        $value = [
    +            'fq_list' => $fq_list->isEmpty() ? null : $fq_list->items(),
    +            'page'    => $fq_list->render(),
    +
    +        ];
    +        $this->assign($value);
    +        return $this->view->fetch();
    +    }
    +
    +    public function mileage()
    +    {
    +        $arg_where  = ['a.siteid' => $this->siteid, 'a.country_code' => $this->country_code];
    +        $arg_order  = ['a.id' => 'desc'];
    +        $arg_field  = ['a.id', 'a.cid', 'a.name', 'a.sort', 'a.headline', 'a.ishot', 'a.recommend', 'a.writer', 'a.source', 'a.viewcount', 'a.zancount', 'a.commentcount', 'a.description', 'a.picture', 'a.tags', 'a.createtime', 'c.id' => 'categoryid', 'c.name' => 'categoryname'];
    +        $dataObject = model('Article')->getCateArticleLists($arg_where, $arg_order, $arg_field, 12);
    +
    +        $category = model('ArticleCategory')->getRow(1);
    +
    +        $value = [
    +            'list'     => $dataObject->isEmpty() ? null : $dataObject->items(), //$dataObject->getCollection()->toArray()
    +            'page' => $dataObject->render(),
    +            'category' => $category,
    +        ];
    +
    +        //echo "
    =="; print_r($category);
    +        $this->assign($value);
    +
    +        return $this->view->fetch();
    +    }
    +
    +    public function guide()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +
    +    public function query()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function contact()
    +    {
             $banners = Loader::model("Banner")->alias('b')->field([
                 'b.id',
                 'b.typeid',
    @@ -344,43 +353,47 @@ class Group extends BaseController
                 ];
             }
             $this->assign('data', $data);
    -			
    +
             return $this->view->fetch();
         }
    -        
    -    public function tutorial(){
    -			
    -            return $this->view->fetch();
    -    }
    -    public function distributor(){
    -			
    -            return $this->view->fetch(); 
    -}	
    -    public function business(){
    -			
    -            return $this->view->fetch();
    -    }
    -    public function introduction(){
    -			
    -            return $this->view->fetch();
    -    }
    -        
    -    
    -    
    -    public function test ()
    +
    +    public function tutorial()
         {
    -        $field = ['a.*', 'b.name', 'b.shortname', 'b.brand_id', 'b.url_tm', 'b.url_jd'];
    +
    +        return $this->view->fetch();
    +    }
    +    public function distributor()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function business()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +    public function introduction()
    +    {
    +
    +        return $this->view->fetch();
    +    }
    +
    +    public function test()
    +    {
    +        $field                = ['a.*', 'b.name', 'b.shortname', 'b.brand_id', 'b.url_tm', 'b.url_jd'];
             $special_product_list = db('special_product_relation')->alias('a')->join('product b', 'a.product_id=b.id', 'LEFT')->where(['a.special_id' => 3, 'a.stat' => 0, 'b.stat' => 0])->field($field)->limit(8)->select();
     
    -        $normal_product = [];
    +        $normal_product  = [];
             $special_product = [];
             foreach ($special_product_list as $key => $value) {
                 $product_two_img = model('product_two_img')->where(['stat' => 0, 'product_id' => $value['product_id']])->find();
    -            $value['img'] = $product_two_img['image_url'];
    -            if ($value['type'] == 0)
    +            $value['img']    = $product_two_img['image_url'];
    +            if ($value['type'] == 0) {
                     array_push($normal_product, $value);
    -            else if ($value['type'] == 1)
    +            } else if ($value['type'] == 1) {
                     array_push($special_product, $value);
    +            }
    +
             }
             // tiaoshi($normal_product);
             // tiaoshi($special_product);die;
    @@ -388,61 +401,75 @@ class Group extends BaseController
             $this->assign('normal_product', $normal_product);
             $this->assign('special_product', $special_product);
             return $this->view->fetch();
    -    }	
    -	public function report()
    +    }
    +    public function report()
         {
    -        if ($this->customer_id <= 0)
    +        if ($this->customer_id <= 0) {
                 $this->redirect('/login.html');
    +        }
    +
             return $this->view->fetch();
         }
     
         public function create_report()
         {
    -        if ($this->customer_id <= 0)
    +        if ($this->customer_id <= 0) {
                 return $this->json(-100, '请先登录');
    +        }
     
             $data = $this->request->post();
    -        if (empty($data) || !is_array($data))
    +        if (empty($data) || !is_array($data)) {
                 return $this->json(-1, '数据错误');
    +        }
     
    -        if ($data['product_name'] == '')
    +        if ($data['product_name'] == '') {
                 return $this->json(-2, '产品名称不能为空');
    -        if ($data['product_model'] == '')
    +        }
    +
    +        if ($data['product_model'] == '') {
                 return $this->json(-3, '产品型号不能为空');
    -        if ($data['product_manufacturer'] == '')
    +        }
    +
    +        if ($data['product_manufacturer'] == '') {
                 return $this->json(-4, '厂商不能为空');
    +        }
    +
             // if ($data['buy_source'] == '')
             //     return $this->json(-5, '购买渠道不能为空');
     
    -        if ($data['customer_telephone'] != '' && !preg_match("/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/", $data['customer_telephone']))
    +        if ($data['customer_telephone'] != '' && !preg_match("/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/", $data['customer_telephone'])) {
                 return $this->json(-6, '手机格式错误');
    -        if ($data['customer_email'] != '' && !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/", $data['customer_email']))
    +        }
    +
    +        if ($data['customer_email'] != '' && !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/", $data['customer_email'])) {
                 return $this->json(-7, '邮箱格式错误');
    +        }
     
             $insert_data = [
    -            'customer_id'           => $this->customer_id,
    -            'product_name'          => $data['product_name'],
    -            'product_model'         => $data['product_model'],
    -            'product_manufacturer'  => $data['product_manufacturer'],
    -            'buy_source'            => $data['buy_source'],
    -            'product_price'         => floatval($data['product_price']),
    -            'customer_name'         => $data['customer_name'],
    -            'customer_email'        => $data['customer_email'],
    -            'customer_telephone'    => $data['customer_telephone'],
    -            'description'           => $data['description'],
    -            'create_time'           => time(),
    +            'customer_id'          => $this->customer_id,
    +            'product_name'         => $data['product_name'],
    +            'product_model'        => $data['product_model'],
    +            'product_manufacturer' => $data['product_manufacturer'],
    +            'buy_source'           => $data['buy_source'],
    +            'product_price'        => floatval($data['product_price']),
    +            'customer_name'        => $data['customer_name'],
    +            'customer_email'       => $data['customer_email'],
    +            'customer_telephone'   => $data['customer_telephone'],
    +            'description'          => $data['description'],
    +            'create_time'          => time(),
             ];
     
             $result = model('report')->insert($insert_data);
    -        if (!$result)
    +        if (!$result) {
                 return $this->json(-8, '提交失败');
    +        }
     
             return $this->json(200, 'ok');
         }
     
         public function job()
         {
    -        $sql      = "SELECT * FROM cod_job
    +        $sql = "SELECT * FROM cod_job
     				WHERE stat=0
     				AND NOW() >= publish_time
     				AND NOW() <= end_time
    @@ -457,16 +484,18 @@ class Group extends BaseController
         {
             $data = $this->request->post();
             //$this->verify_check($data['captcha'], 'authcode') || $this->error('验证码有误', url('group/test'));
    -        $sn = $data['sn'];//dump($sn);die;
    -        $sn = $this->https_request('http://mes.orico.com.cn:8084/api/values/',$sn);dump($sn);die;
    +        $sn = $data['sn']; //dump($sn);die;
    +        $sn = $this->https_request('http://mes.orico.com.cn:8084/api/values/', $sn);
    +        dump($sn);die;
         }
     
     //CURL   POST请求
    -    function https_request($url, $data = null) {
    -        $apiUrl = "$url$data";//print_r($apiUrl);die;
    -        $oCurl = curl_init();
    -        if(stripos($apiUrl,"https://")!==FALSE){
    -            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
    +    public function https_request($url, $data = null)
    +    {
    +        $apiUrl = "$url$data"; //print_r($apiUrl);die;
    +        $oCurl  = curl_init();
    +        if (stripos($apiUrl, "https://") !== false) {
    +            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
                 curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
             }
             curl_setopt($oCurl,CURLOPT_TIMEOUT,5);
    @@ -485,7 +514,8 @@ class Group extends BaseController
             }
         }
         //可以发送get和post的请求方式
    -    function curl_request($url,$method='get',$data=null,$https=true){
    +    public function curl_request($url, $method = 'get', $data = null, $https = true)
    +    {
             //1.初识化curl
             $ch = curl_init($url);
             //2.根据实际请求需求进行参数封装
    @@ -504,7 +534,8 @@ class Group extends BaseController
                 curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
             }
             //3.发送请求
    -        $result = curl_exec($ch);dump($result);die;
    +        $result = curl_exec($ch);
    +        dump($result);die;
             //4.返回返回值,关闭连接
             curl_close($ch);
             return $result;
    @@ -519,12 +550,16 @@ class Group extends BaseController
          * @param int $flag         标志位
          * @return string           返回的资源内容
          */
    -    public function post($url, $keysArr, $flag = 0){
    +    public function post($url, $keysArr, $flag = 0)
    +    {
     
             $ch = curl_init();
    -        if(! $flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    -        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    -        curl_setopt($ch, CURLOPT_POST, TRUE);
    +        if (!$flag) {
    +            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    +        }
    +
    +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    +        curl_setopt($ch, CURLOPT_POST, true);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr);
             curl_setopt($ch, CURLOPT_URL, $url);
             $ret = curl_exec($ch);
    diff --git a/app/index/controller/Product.php b/app/index/controller/Product.php
    index 24c7f25..3d68671 100755
    --- a/app/index/controller/Product.php
    +++ b/app/index/controller/Product.php
    @@ -107,6 +107,7 @@ class Product extends BaseController {
             $value['seo_title'] = $category['seo_title']? : config('website_seo_title');
             $value['seo_keyword'] = $category['seo_keyword']? : config('website_seo_keyword');
             $value['seo_description'] = $category['seo_description']? : config('website_seo_description');
    +
             $this->assign($value);
             return $this->fetch($template);
         }
    @@ -302,7 +303,7 @@ class Product extends BaseController {
                 $this->assign('count',$count);
                 $this->assign($value);
                 $this->viewcount($id);
    -            
    +
                 $purchase_links = Db::name('product_purchase_links')->alias('links')
                     ->field(['links.id', 'platforms.platform', 'links.link'])
                     ->join('product_purchase_link_platforms platforms', 'platforms.id=links.platform_id')
    @@ -310,6 +311,7 @@ class Product extends BaseController {
                     ->where('links.country_code', '=', $this->country_code)
                     ->select();
                 $this->assign('purchase_links', $purchase_links);
    +
                 //dump($value['product_relateds']);die;
                 return $this->fetch($template);
             } else {
    diff --git a/app/index/view/product/detail.phtml b/app/index/view/product/detail.phtml
    index cd553e3..cb96c1f 100755
    --- a/app/index/view/product/detail.phtml
    +++ b/app/index/view/product/detail.phtml
    @@ -49,9 +49,8 @@
                                 $images = reset($product_images);
                                 $skuAttr = $images['image_color'];      //获取多属性标签
                          
    -                        
    -                    }
    -                    else{
    +		                             
    +                    } else {
                             if ($color){ 
                                 $images = $product_images[$color];  
                             } else { 
    @@ -200,7 +199,7 @@
                                                 if($isColor){
                                                     //判断颜色属性取值【中文文字、色值、色块图英文名称】
                                                     $firstChar = substr($attrValue, 0, 1);
    -                                                $colorFile = 'https://cc.f2b211.com/uploads/color/' .strtolower($attrValue). '.jpg';
    +                                                $colorFile = 'https://cc.f2b211.com/static/colors/' .strtolower($attrValue). '.png';
                                                     
                                                     if($kl == 0){
                                                          //判断为颜色色值RGB
    @@ -225,7 +224,7 @@
                                                     elseif($colorType == 2){
                                                         if(isset($productColor[strtoupper($attrValue)])) {
                                                             if($attrValue == 'GD'||$attrValue == 'GR'||$attrValue == 'SV'||$attrValue == 'RG'||$attrValue == 'CO'||$attrValue == 'WD'){
    -                                                            echo '
  • '; + echo '
  • '; } else{ @@ -244,7 +243,7 @@ ?>
  • - +
  • + ?>-->
    @@ -627,6 +627,9 @@ margin-top: 0px !important; } + .hd .co-bg { + width: 20px; + } - - + + \ No newline at end of file diff --git a/app/us/view/product/subcatelists.phtml b/app/us/view/product/subcatelists.phtml index c872b84..9b39cee 100755 --- a/app/us/view/product/subcatelists.phtml +++ b/app/us/view/product/subcatelists.phtml @@ -59,7 +59,7 @@ 0) { $detail = Loader::model('Product')->where(['stat' => 0, 'is_show' => 0, 'country_code' => $this->country_code, 'id' => $id])->find();