Пример #1
0
 public static function getFilterPrice_Child($id_cate_child, $supplier = 0)
 {
     return Cache::remember("get_filter_price_child_" . $id_cate_child . $supplier, 30, function () use($id_cate_child, $supplier) {
         $MrValidateData = new MrValidateData();
         $sql_parent = "\n\t\t\t\t\t\tSELECT a.cid_cate,a.is_home,a.isprice,a.status,a.is_status_series,a.is_status_cate,\n\t\t\t\t\t\tb.id,b.cid_parent,b.links_right,b.links_left,\n\t\t\t\t\t\tMAX(c.saleprice) AS mymax,MIN(c.saleprice) as mymin,c.discount,c.stock_num,c.status,c.cid_supplier,c.cid_product,c.saleprice,c.discount\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t(  pro_product AS a INNER JOIN pro_categories AS b ON a.cid_cate=b.id)\n\t\t\t\t\t\tINNER JOIN pro_supplier_product AS c ON a.id = c.cid_product\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\tb.id={$id_cate_child}";
         if (!empty($supplier)) {
             $sql_parent .= " AND c.cid_supplier={$supplier}";
         }
         $sql_parent .= " AND a.is_status_series='1' AND a.is_status_cate='1' AND a.status='1'  AND c.status='1'\n\t\t\t\t\t";
         $data = DB::select($sql_parent);
         $data = empty($data[0]) ? null : $data[0];
         if ($data->mymax - $data->mymin > 1000000) {
             $tc_min_pirce = $data->mymin < 500000 ? 500000 : $MrValidateData->formod($data->mymin);
             $tc_max_price = $data->mymax > 30000000 ? 30000000 : $MrValidateData->formod($data->mymax);
         } else {
             $tc_min_pirce = $data->mymin < 500000 ? 500000 : $data->mymin;
             $tc_max_price = $data->mymax > 30000000 ? 30000000 : $data->mymax;
         }
         //	print_r($data); exit;
         $gioi_han_lai = $tc_max_price - $tc_min_pirce < 5000000 ? 3 : 7;
         $phan_doan1 = round(($tc_max_price - $tc_min_pirce) / $gioi_han_lai);
         $phan_doan1 = $MrValidateData->formod($phan_doan1);
         $result = array();
         $result['scroll'] = $data;
         $t = $tc_min_pirce;
         for ($i = 0; $i < $gioi_han_lai; $i++) {
             if ($i == 0) {
                 $sql = "SELECT a.cid_cate,a.isprice,a.status,a.is_status_series,a.is_status_cate,\n    \t\t\t\t\tb.id,b.cid_parent,\n    \t\t\t\t\tcount(a.id) AS total,c.status,c.cid_supplier,c.cid_product,c.saleprice,c.discount\n    \t\t\t\t\tFROM\n    \t\t\t\t\t(  pro_product AS a INNER JOIN pro_categories AS b ON a.cid_cate=b.id)\n    \t\t\t\t\tINNER JOIN pro_supplier_product AS c ON a.id = c.cid_product\n    \t\t\t\t\tWHERE\n    \t\t\t\t\tb.id={$id_cate_child}";
                 if (!empty($supplier)) {
                     $sql .= " AND c.cid_supplier={$supplier}";
                 }
                 $sql .= " AND c.discount <= {$t}\n    \t\t\t\t\tAND a.is_status_series='1' AND a.is_status_cate='1' AND a.status='1' AND c.status='1'\n    \t\t\t\t\t";
                 $count = DB::select($sql);
                 $count = empty($count[0]) ? null : $count[0];
                 $result[] = array('name' => "Thấp hơn " . $MrValidateData->toPice($t), "value" => $t, "count" => $count->total, 'position' => 1);
             } elseif ($i == $gioi_han_lai - 1) {
                 $max_price = $t - $phan_doan1;
                 $sql2 = "SELECT a.cid_cate,a.isprice,a.status,a.is_status_series,a.is_status_cate,\n\t\t\t\t\t\t\tb.id,b.cid_parent,\n\t\t\t\t\t\t\tcount(a.id) AS total,c.status,c.cid_supplier,c.cid_product,c.saleprice,c.discount\n\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t(  pro_product AS a INNER JOIN pro_categories AS b ON a.cid_cate=b.id)\n\t\t\t\t\t\t\tINNER JOIN pro_supplier_product AS c ON a.id = c.cid_product\n\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tb.id={$id_cate_child}";
                 if (!empty($supplier)) {
                     $sql2 .= " AND c.cid_supplier={$supplier}";
                 }
                 $sql2 .= " AND c.discount > {$max_price}\n\t\t\t\t\t\t\tAND a.is_status_series='1' AND a.is_status_cate='1' AND a.status='1' AND c.status='1'\n\t\t\t\t\t\t\t";
                 $count = DB::select($sql2);
                 $count = empty($count[0]) ? null : $count[0];
                 $result[] = array('name' => "Cao hơn " . $MrValidateData->toPice($max_price), "value" => $max_price, "count" => $count->total, 'position' => 2);
             } else {
                 $ff = $t - $phan_doan1;
                 $sql3 = "SELECT a.cid_cate,a.isprice,a.status,a.is_status_series,a.is_status_cate,\n\t\t\t\t\t\t\t\tb.id,b.cid_parent,\n\t\t\t\t\t\tcount(a.id) AS total,c.status,c.cid_supplier,c.cid_product,c.saleprice,c.discount\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t(  pro_product AS a INNER JOIN pro_categories AS b ON a.cid_cate=b.id)\n\t\t\t\t\t\tINNER JOIN pro_supplier_product AS c ON a.id = c.cid_product\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\tb.id={$id_cate_child}";
                 if (!empty($supplier)) {
                     $sql3 .= " AND c.cid_supplier={$supplier}";
                 }
                 $sql3 .= " AND c.discount > {$ff}  AND c.discount <= " . $t . "\n\t\t\t\t\t\tAND a.is_status_series='1' AND a.is_status_cate='1' AND a.status='1' AND c.status='1'\n\t\t\t\t\t\t";
                 $count = DB::select($sql3);
                 $count = empty($count[0]) ? null : $count[0];
                 $result[] = array('name' => $MrValidateData->toPice($ff) . "-" . $MrValidateData->toPice($t), "phandoan" => $ff, "value" => $t, "count" => $count->total, 'position' => 3);
             }
             $t = $phan_doan1 + $t;
         }
         return $result;
     });
 }