rabin 6 months ago
parent
commit
0c837ae929
2 changed files with 48 additions and 27 deletions
  1. 47 27
      lib/Sku.php
  2. 1 0
      lib/Spec.php

+ 47 - 27
lib/Sku.php

@@ -2,36 +2,44 @@
 use Dever;
 class Sku
 {
-    # 获取价格
-    public function getPrice($where, $spec_type, $score, $app)
+    # 获取当前价格
+    public function getPrice($where, $spec_type, $app)
     {
-        $result = array();
-        $result['value'] = 0;
-        $result['text'] = '免费';
-        $result['spec'] = array();
-        $result['list'] = array();
+        $result['price'] = 0;
+        $result['id'] = 0;
+        $result['name'] = '';
         if ($spec_type == 2) {
             $where['key'] = '-1';
             $sku = Dever::db('sku', $app)->find($where);
-            if ($sku) {
-                $result['value'] = $sku['price'];
-                $result['text'] = $sku['price'] . $score;
-            }
         } elseif ($spec_type == 3) {
-            $sku = Dever::db('sku', $app)->select($where, array('order' => 'price asc,id desc'));
-            if ($sku) {
-                $min = $sku[0];
-                #$max = $sku[count($sku)-1];
-                $result['value'] = $min['price'];
-                $result['text'] = $min['price'] . $score;
-                $result['spec'] = Dever::load('spec', 'api')->getList($app, $where);
-                foreach ($sku as $k => $v) {
-                    $t = array();
-                    $k = $v['key'];
-                    $t['pic'] = $v['pic'];
-                    $t['value'] = $v['price'];
-                    $t['text'] = $v['price'] . $score;
-                    $result['list'][$k] = $t;
+            $sku = Dever::db('sku', $app)->find($where, array('order' => 'price asc,id desc'));
+        }
+        if (isset($sku) && $sku) {
+            $result['price'] = $sku['price'];
+            $result['id'] = $sku['id'];
+            $result['name'] = $this->getName($sku['key'], $app);
+        }
+        return $result;
+    }
+
+    # 多规格获取多个价格
+    public function getList($where, $sku_id, $app)
+    {
+        $result = array();
+        $sku = Dever::db('sku', $app)->select($where, array('order' => 'price asc,id desc'));
+        if ($sku) {
+            $result['info'] = array();
+            $result['spec'] = Dever::load('spec', 'api')->getList($where, $app);
+            foreach ($sku as $k => $v) {
+                $t = array();
+                $k = str_replace(',', '_', $v['key']);
+                $t['id'] = $v['id'];
+                $t['pic'] = $v['pic'];
+                $t['value'] = $v['price'];
+                $result['price'][$k] = $t;
+                if ($sku_id && $sku_id == $v['id']) {
+                    $t['name'] = $this->getName($v['key'], $app);
+                    $result['info'] = $t;
                 }
             }
         }
@@ -41,7 +49,19 @@ class Sku
     # 获取某个sku的名称
     public function getName($key, $app)
     {
-        $where['id'] = array('in', $key);
-        $data = Dever::db('spec_value', $app)->kv($where);
+        if (!$key || $key == '-1') {
+            return '';
+        } else {
+            $name = array();
+            $where['id'] = array('in', $key);
+            $data = Dever::db('spec_value', $app)->select($where);
+            if ($data) {
+                foreach ($data as $k => $v) {
+                    $info = Dever::db('spec', $app)->find($v['spec_id']);
+                    $name[] = $info['name'] . ':' . $v['value'];
+                }
+            }
+            return implode(',', $name);
+        }
     }
 }

+ 1 - 0
lib/Spec.php

@@ -44,6 +44,7 @@ class Spec
             foreach ($data as &$v) {
                 $w = $where;
                 $w['spec_id'] = $v['id'];
+                unset($v['id']);
                 $v['value'] = Dever::db('spec_value', $app)->select($w, array('col' => 'id,value'));
             }
         }