|
@@ -69,13 +69,13 @@ class Api
|
|
|
}
|
|
|
|
|
|
|
|
|
- * 设置数据库的结构信息
|
|
|
- *
|
|
|
- * @return mixed
|
|
|
- */
|
|
|
- public function setDatabaseConfig($attr, &$config)
|
|
|
- {
|
|
|
- if ($attr) {
|
|
|
+ * 设置数据库的结构信息
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function setDatabaseConfig($attr, &$config)
|
|
|
+ {
|
|
|
+ if ($attr) {
|
|
|
foreach ($attr as $k => $v) {
|
|
|
$k = 'attr_' . $v['id'];
|
|
|
$config['struct'][$k] = array();
|
|
@@ -178,16 +178,16 @@ class Api
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * 获取属性的值,无类别
|
|
|
- *
|
|
|
- * @return mixed
|
|
|
- */
|
|
|
- public function getValue($ids, $value, $order = 'all')
|
|
|
- {
|
|
|
- $result = array();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 根据属性id,获取属性列表
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function getList($ids, $value, $order = 'all')
|
|
|
+ {
|
|
|
+ $result = array();
|
|
|
if ($ids) {
|
|
|
$where['ids'] = $ids;
|
|
|
$method = 'getAllByIds';
|
|
@@ -216,93 +216,154 @@ class Api
|
|
|
}
|
|
|
|
|
|
return $data;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * 获取属性的值,字符类型
|
|
|
- *
|
|
|
- * @return mixed
|
|
|
- */
|
|
|
- public function string($ids, $value = '')
|
|
|
- {
|
|
|
- $result = $this->getInfo($ids, $value);
|
|
|
-
|
|
|
- $table = array();
|
|
|
- foreach ($result as $k => $v) {
|
|
|
- $table[$v['name']] = '';
|
|
|
- foreach ($v['attr'] as $k1 => $v1) {
|
|
|
- $table[$v['name']] .= $v1['name'] . " ";
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取属性的值
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function getValue($info)
|
|
|
+ {
|
|
|
+
|
|
|
+ if ($info['type'] == 7) {
|
|
|
+ $info['value'] = Dever::load("area/api.string", $info['value']);
|
|
|
+ } elseif ($info['type'] >= 10 && $info['value']) {
|
|
|
+ $temp = explode("\n", $info['type_option']);
|
|
|
+ if ($temp) {
|
|
|
+ $info['value'] = $info['value'] - 1;
|
|
|
+ if (isset($temp[$info['value']])) {
|
|
|
+ $info['value'] = $temp[$info['value']];
|
|
|
+ if (strstr($info['value'], ',')) {
|
|
|
+ $temp = explode(',', $info['value']);
|
|
|
+ $info['value'] = $temp[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($info['unit']) {
|
|
|
+ $info['value'] = $info['value'] . $info['unit'];
|
|
|
+ }
|
|
|
+
|
|
|
+ return $info['value'];
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取属性的名称,字符类型
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function string($ids, $value = '')
|
|
|
+ {
|
|
|
+ $result = $this->getInfo($ids, $value);
|
|
|
+
|
|
|
+ $table = array();
|
|
|
+ foreach ($result as $k => $v) {
|
|
|
+ $table[$v['name']] = '';
|
|
|
+ foreach ($v['attr'] as $k1 => $v1) {
|
|
|
+ $table[$v['name']] .= $v1['name'] . " ";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return Dever::table($table);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- * 获取某个分类下的搜索列表
|
|
|
- *
|
|
|
- * @return mixed
|
|
|
- */
|
|
|
- public function getSearch($ids, $cate = true, $city = false, $search_value = false)
|
|
|
- {
|
|
|
- $value = array();
|
|
|
- $search_value = Dever::preInput('attr_', $search_value);
|
|
|
-
|
|
|
- if ($cate && Dever::project('category')) {
|
|
|
- $attr_where['category'] = Dever::defaultValue($ids);
|
|
|
- $attr = Dever::db('category/attr')->getAttr($attr_where);
|
|
|
- if ($attr) {
|
|
|
- $ids = $ids_input = array();
|
|
|
- foreach ($attr as $k => $v) {
|
|
|
- $v['attr'] = explode(',', $v['attr']);
|
|
|
- $v['attr_input'] = explode(',', $v['attr_input']);
|
|
|
- foreach ($v['attr'] as $k1 => $v1) {
|
|
|
- $ids[$v1] = $v1;
|
|
|
- if (isset($v['attr_input'][$k1])) {
|
|
|
- $ids_input[$v1] = $v['attr_input'][$k1];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $ids = array_keys($ids);
|
|
|
- }
|
|
|
- }
|
|
|
- $where['ids'] = $ids;
|
|
|
- $where['search_reorder'] = 1;
|
|
|
- $data = Dever::db('attr/info')->getSearch($where);
|
|
|
-
|
|
|
- if ($data) {
|
|
|
- foreach ($data as $k => $v) {
|
|
|
- if (isset($ids_input[$v['id']]) && $ids_input[$v['id']]) {
|
|
|
- $data[$k]['name'] = $ids_input[$v['id']];
|
|
|
- }
|
|
|
- $data[$k]['key'] = 'attr_' . $v['id'];
|
|
|
- if ($v['type'] == 7 && $city > 0) {
|
|
|
-
|
|
|
- $data[$k]['option'] = Dever::db('area/county')->state(array('city_id' => $city));
|
|
|
- } elseif ($v['type_option']) {
|
|
|
- $temp = explode("\n", $v['type_option']);
|
|
|
- foreach ($temp as $k1 => $v1) {
|
|
|
- $v1 = explode(',', $v1);
|
|
|
- $k1 = $k1+1;
|
|
|
- $data[$k]['option'][$k1] = array
|
|
|
- (
|
|
|
- 'id' => $k1,
|
|
|
- 'name' => $v1[0],
|
|
|
- );
|
|
|
- if (isset($v1[1])) {
|
|
|
- $data[$k]['option_match'][$k1] = $v1[1];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (isset($search_value[$data[$k]['key']])) {
|
|
|
- $data[$k]['option_value'] = $search_value[$data[$k]['key']];
|
|
|
- $value[$data[$k]['key']] = $data[$k]['option_value'];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private function attrSort(&$attr, $reorder = 'list_reorder')
|
|
|
+ {
|
|
|
+ $order = Dever::config('base')->attrOrder;
|
|
|
+ if ($order && $order != $reorder) {
|
|
|
+ $reorder = $order;
|
|
|
+ }
|
|
|
+ if ($attr) {
|
|
|
+ foreach ($attr as $k => $v) {
|
|
|
+ $sort[$k] = $v[$reorder];
|
|
|
+ }
|
|
|
+ array_multisort($sort, SORT_DESC, $attr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getAttrByCate($category, $order = 'list_reorder')
|
|
|
+ {
|
|
|
+ $data = array();
|
|
|
+ if ($category && Dever::project('category')) {
|
|
|
+ $array = explode(',', $category);
|
|
|
+ $cate = array();
|
|
|
+ $total = count($array)-1;
|
|
|
+ foreach ($array as $k => $v) {
|
|
|
+ $cate[$k] = $v;
|
|
|
+ if ($k < $total) {
|
|
|
+ $cate[] = '-1';
|
|
|
+ }
|
|
|
+ $where['category'] = $cate;
|
|
|
+ $info = Dever::db('category/attr')->one($where);
|
|
|
+ if ($info) {
|
|
|
+ $data += Dever::load('attr/api')->getList($info['attr'], $info['attr_input']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $this->attrSort($data, $order);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 获取某个分类下的搜索列表
|
|
|
+ *
|
|
|
+ * @return mixed
|
|
|
+ */
|
|
|
+ public function getSearch($ids, $cate = true, $city = false, $search_value = false)
|
|
|
+ {
|
|
|
+ $value = array();
|
|
|
+ $search_value = Dever::preInput('attr_', $search_value);
|
|
|
+
|
|
|
+ if ($cate && $ids && Dever::project('category')) {
|
|
|
+ $data = $this->getAttrByCate($ids, 'search_reorder');
|
|
|
+ if (!$data) {
|
|
|
+ return array('search' => array(), 'value' => $value);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $where['ids'] = $ids;
|
|
|
+ $where['search_reorder'] = 1;
|
|
|
+ $data = Dever::db('attr/info')->getSearch($where);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($data) {
|
|
|
+ foreach ($data as $k => $v) {
|
|
|
+ if (isset($ids_input[$v['id']]) && $ids_input[$v['id']]) {
|
|
|
+ $data[$k]['name'] = $ids_input[$v['id']];
|
|
|
+ }
|
|
|
+ $data[$k]['key'] = 'attr_' . $v['id'];
|
|
|
+ if ($v['type'] == 7 && $city > 0) {
|
|
|
+
|
|
|
+ $data[$k]['option'] = Dever::db('area/county')->state(array('city_id' => $city));
|
|
|
+ } elseif ($v['type_option']) {
|
|
|
+ $temp = explode("\n", $v['type_option']);
|
|
|
+ foreach ($temp as $k1 => $v1) {
|
|
|
+ $v1 = explode(',', $v1);
|
|
|
+ $k1 = $k1+1;
|
|
|
+ $data[$k]['option'][$k1] = array
|
|
|
+ (
|
|
|
+ 'id' => $k1,
|
|
|
+ 'name' => $v1[0],
|
|
|
+ );
|
|
|
+ if (isset($v1[1])) {
|
|
|
+ $data[$k]['option_match'][$k1] = $v1[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isset($search_value[$data[$k]['key']])) {
|
|
|
+ $data[$k]['option_value'] = $search_value[$data[$k]['key']];
|
|
|
+ $value[$data[$k]['key']] = $data[$k]['option_value'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
return array('search' => $data, 'value' => $value);
|
|
|
- }
|
|
|
+ }
|
|
|
}
|