|
@@ -338,14 +338,14 @@ class Info
|
|
|
}
|
|
|
|
|
|
|
|
|
- public function getInfo($info, $attr = true, $order = 'view_reorder', $user = array(), $reward = false)
|
|
|
+ public function getInfo($info, $attr = true, $other = false, $order = 'view_reorder', $user = array(), $reward = false)
|
|
|
{
|
|
|
if (!is_array($info)) {
|
|
|
$info = Dever::db($this->table_info)->find($info);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
if ($info && $attr) {
|
|
|
- $info = $this->info($info, $order, false, $user, $reward);
|
|
|
+ $info = $this->info($info, $order, $other, false, $user, $reward);
|
|
|
}
|
|
|
|
|
|
if (!isset($info['goods_id'])) {
|
|
@@ -376,11 +376,15 @@ class Info
|
|
|
$info['goods'] = $goods_info;
|
|
|
}
|
|
|
|
|
|
+ if ($info['tag_id']) {
|
|
|
+ $info['tag'] = Dever::db('goods/tag')->getAllByIds($info['tag_id']);
|
|
|
+ }
|
|
|
+
|
|
|
return $info;
|
|
|
}
|
|
|
|
|
|
|
|
|
- public function info($info, $key = 'list_reorder', $is_sell = false, $user = array(), $reward = false)
|
|
|
+ public function info($info, $key = 'list_reorder', $other = false, $is_sell = false, $user = array(), $reward = false)
|
|
|
{
|
|
|
$info['category_array'] = Dever::load('category/api')->string($info['category']);
|
|
|
if ($info['price_type'] == 2) {
|
|
@@ -420,21 +424,10 @@ class Info
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (isset($info['price_array']['min']['price'])) {
|
|
|
- $info['price'] = $info['price_array']['min']['price'];
|
|
|
- $info['sku_id'] = $info['price_array']['min']['id'];
|
|
|
+
|
|
|
+ $this->getPrice($info, $other);
|
|
|
}
|
|
|
- } else {
|
|
|
- $info['price_array'] = array();
|
|
|
- $info['price_array']['list'] = array();
|
|
|
- $info['price_array']['min'] = array
|
|
|
- (
|
|
|
- 'price' => $info['price'],
|
|
|
- 's_price' => $info['s_price'],
|
|
|
- );
|
|
|
- $info['price_array']['max'] = array();
|
|
|
}
|
|
|
|
|
|
if (isset($info['cdate']) && $info['cdate']) {
|
|
@@ -553,13 +546,14 @@ class Info
|
|
|
$value = explode(',', $data['value']);
|
|
|
foreach($data['option'] as $k => $v) {
|
|
|
if (in_array($v['id'], $value)) {
|
|
|
- $data['option_sku'][] = array
|
|
|
+ $key = $v['info_id'] . '-' . $v['id'];
|
|
|
+ $info['option_sku'][$key] = $data['option_sku'][] = array
|
|
|
(
|
|
|
'id' => $v['id'],
|
|
|
'info_id' => $v['info_id'],
|
|
|
'name' => $v['name'],
|
|
|
'icon' => $v['icon'],
|
|
|
- 'value' => $v['info_id'] . '-' . $v['id'],
|
|
|
+ 'value' => $key,
|
|
|
);
|
|
|
}
|
|
|
}
|
|
@@ -567,18 +561,67 @@ class Info
|
|
|
}
|
|
|
|
|
|
$info['sell_attr'][] = $data;
|
|
|
-
|
|
|
-
|
|
|
- $where['info_id'] = $info['id'];
|
|
|
- $info['price_array'] = array();
|
|
|
- $info['price_array']['list'] = Dever::db('goods/info_sku')->getData($where);
|
|
|
- $info['price_array']['min'] = Dever::db('goods/info_sku')->getMinOne($where);
|
|
|
- $info['price_array']['max'] = Dever::db('goods/info_sku')->getMaxOne($where);
|
|
|
} elseif ($data['is_sell'] == 3) {
|
|
|
$info['option_attr'][] = $data;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private function getPrice(&$info, $other = false)
|
|
|
+ {
|
|
|
+
|
|
|
+ $where['info_id'] = $info['id'];
|
|
|
+ $info['price_array'] = array();
|
|
|
+ $list = Dever::db('goods/info_sku')->getData($where);
|
|
|
+
|
|
|
+ $info['price_array']['list'] = array();
|
|
|
+
|
|
|
+ $min = $max = array();
|
|
|
+ if ($list) {
|
|
|
+ foreach ($list as $k => $v) {
|
|
|
+
|
|
|
+ $v['name'] = array();
|
|
|
+ $temp = explode('_', $v['key']);
|
|
|
+ foreach ($temp as $k1 => $v1) {
|
|
|
+ if (isset($info['option_sku'][$v1])) {
|
|
|
+ $v['name'][] = $info['option_sku'][$v1]['name'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $v['name'] = implode(';', $v['name']);
|
|
|
+
|
|
|
+ if ($other) {
|
|
|
+ foreach ($other[1] as $k1 => $v1) {
|
|
|
+ $v[$v1] = isset($other[0][$v['id']][$v1]) ? $other[0][$v['id']][$v1] : 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $info['price_array']['list'][$v['key']] = $v;
|
|
|
+ if (!$min) {
|
|
|
+ $min = $v;
|
|
|
+ }
|
|
|
+ if (!$max) {
|
|
|
+ $max = $v;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($min['price'] > $v['price']) {
|
|
|
+ $min = $v;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($max['price'] < $v['price']) {
|
|
|
+ $max = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $info['price_array']['min'] = $min;
|
|
|
+ $info['price_array']['max'] = $max;
|
|
|
+
|
|
|
+ if ($min) {
|
|
|
+ $info['price'] = $min['price'];
|
|
|
+ $info['s_price'] = $min['s_price'];
|
|
|
+ $info['sku_id'] = $min['id'];
|
|
|
+ }
|
|
|
+ unset($info['option_sku']);
|
|
|
+ }
|
|
|
+
|
|
|
public function getInfoLink($info)
|
|
|
{
|
|
|
if (isset($this->view_path)) {
|