|  | @@ -3342,6 +3342,11 @@ class Database
 | 
	
		
			
				|  |  |                      $v['upload_call'] = $upload_call . '&key=' . $k;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                if (isset($config['manage']['sku']) && $v['update'] == 'sku') {
 | 
	
		
			
				|  |  | +                    $v['sku'] = $config['manage']['sku'];
 | 
	
		
			
				|  |  | +                    $v['data'] = $data;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  $result[$k] .= $this->create_update_html($k, $v, $data, false, $prefix);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  $result[$k] .= '</div></div>';
 | 
	
	
		
			
				|  | @@ -3716,9 +3721,7 @@ class Database
 | 
	
		
			
				|  |  |                      $param['upload_search_value'] = $this->value($param['upload_search_value'], $data + $param);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                if ($param['update'] == 'load') {
 | 
	
		
			
				|  |  | -                    $param['where_id'] = $this->id;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +                $param['where_id'] = $this->id;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  $result .= Html::$method($param);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -4161,60 +4164,95 @@ class Database
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    if (isset($config['manage']['sku'])) {
 | 
	
		
			
				|  |  | -                        $spec_table = $config['manage']['sku']['spec'];
 | 
	
		
			
				|  |  | -                        $sku_table = $config['manage']['sku']['sku'];
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                    /*
 | 
	
		
			
				|  |  | -                    [{"id":1,"title":"颜色","child":[{"id":"1","title":"红","checked":true},{"id":"2","title":"黄","checked":false},{"id":"3","title":"蓝","checked":false}]},{"id":2,"title":"尺码","child":[{"id":"4","title":"S","checked":true},{"id":"5","title":"M","checked":true},{"id":"6","title":"L","checked":false},{"id":"7","title":"XL","checked":false}]},{"id":3,"title":"款式","child":[{"id":"8","title":"男款","checked":true},{"id":"9","title":"女款","checked":true}]},{"id":"4w627wudvpy000","title":"test","child":[{"id":"2kct9uahekm000","title":"111","checked":true},{"id":"vishp09dv4000","title":"222","checked":true}]}]
 | 
	
		
			
				|  |  | +                    $this->spec($id, $config);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    skus[1-4-8-2kct9uahekm000][price]: 0
 | 
	
		
			
				|  |  | -                    */
 | 
	
		
			
				|  |  | +        Dever::out('yes');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                    $spec = Dever::input('spec');
 | 
	
		
			
				|  |  | -                    $sku = Dever::input('skus');
 | 
	
		
			
				|  |  | -                    if ($spec && $sku) {
 | 
	
		
			
				|  |  | -                        if (!isset($spec_table)) {
 | 
	
		
			
				|  |  | -                            $spec_table = 'info_spec';
 | 
	
		
			
				|  |  | +    private function spec($id, $config)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        if (isset($config['manage']['sku'])) {
 | 
	
		
			
				|  |  | +            $spec_table = $config['manage']['sku']['spec'];
 | 
	
		
			
				|  |  | +            $sku_table = $config['manage']['sku']['sku'];
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!isset($sku_table)) {
 | 
	
		
			
				|  |  | +            $sku_table = 'info_sku';
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $sku_table = $this->project . '/' . $sku_table;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $spec_type = Dever::input('update_spec_type');
 | 
	
		
			
				|  |  | +        if ($spec_type == 2) {
 | 
	
		
			
				|  |  | +            $spec = Dever::input('spec');
 | 
	
		
			
				|  |  | +            $sku = Dever::input('skus');
 | 
	
		
			
				|  |  | +            if ($spec && $sku) {
 | 
	
		
			
				|  |  | +                if (!isset($spec_table)) {
 | 
	
		
			
				|  |  | +                    $spec_table = 'info_spec';
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                $spec_table = $this->project . '/' . $spec_table;
 | 
	
		
			
				|  |  | +                $spec_value_table = $spec_table . '_value';
 | 
	
		
			
				|  |  | +                $spec = Dever::json_decode($spec);
 | 
	
		
			
				|  |  | +                if ($spec) {
 | 
	
		
			
				|  |  | +                    $sku_id = array();
 | 
	
		
			
				|  |  | +                    Dever::db($spec_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
 | 
	
		
			
				|  |  | +                    Dever::db($spec_value_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
 | 
	
		
			
				|  |  | +                    foreach ($spec as $k1 => $v1) {
 | 
	
		
			
				|  |  | +                        if (is_numeric($v1['id'])) {
 | 
	
		
			
				|  |  | +                            $spec_id = Dever::db($spec_table)->update(array('where_id' => $v1['id'], 'set_state' => 1));
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            $spec_id = Dever::db($spec_table)->insert(array('name' => $v1['title'], 'info_id' => $id));
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                        $spec_table = $this->project . '/' . $spec_table;
 | 
	
		
			
				|  |  | -                        $spec_value_table = $spec_table . '_value';
 | 
	
		
			
				|  |  | -                        $spec = Dever::json_decode($spec);
 | 
	
		
			
				|  |  | -                        if ($spec) {
 | 
	
		
			
				|  |  | -                            $sku_id = array();
 | 
	
		
			
				|  |  | -                            Dever::db($spec_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
 | 
	
		
			
				|  |  | -                            Dever::db($spec_value_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
 | 
	
		
			
				|  |  | -                            foreach ($spec as $k1 => $v1) {
 | 
	
		
			
				|  |  | -                                if (is_numeric($v1['id'])) {
 | 
	
		
			
				|  |  | -                                    $spec_id = Dever::db($spec_table)->update(array('where_id' => $v1['id'], 'set_state' => 1));
 | 
	
		
			
				|  |  | -                                } else {
 | 
	
		
			
				|  |  | -                                    $spec_id = Dever::db($spec_table)->insert(array('name' => $v1['title'], 'info_id' => $id));
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                                foreach ($v1['child'] as $k2 => $v2) {
 | 
	
		
			
				|  |  | -                                    if (is_numeric($v2['id'])) {
 | 
	
		
			
				|  |  | -                                        $sku_id[$v2['id']] = Dever::db($spec_value_table)->update(array('where_id' => $v2['id'], 'set_state' => 1));
 | 
	
		
			
				|  |  | -                                    } else {
 | 
	
		
			
				|  |  | -                                        $v2['checked'] = $v2['checked'] ? 1 : 2;
 | 
	
		
			
				|  |  | -                                        $sku_id[$v2['id']] = Dever::db($spec_value_table)->insert(array('value' => $v2['title'], 'is_checked' => $v2['checked'], 'info_id' => $id, 'spec_id' => $spec_id));
 | 
	
		
			
				|  |  | -                                    }
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            //Dever::db($spec_table)->delete(array('info_id' => $id, 'state' => 2));
 | 
	
		
			
				|  |  | -                            if ($sku_id) {
 | 
	
		
			
				|  |  | -                                foreach ($sku as $k1 => $v1) {
 | 
	
		
			
				|  |  | -                                    $temp = explode('-', $k1);
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | +                        foreach ($v1['child'] as $k2 => $v2) {
 | 
	
		
			
				|  |  | +                            $v2['checked'] = $v2['checked'] ? 1 : 2;
 | 
	
		
			
				|  |  | +                            if (is_numeric($v2['id'])) {
 | 
	
		
			
				|  |  | +                                Dever::db($spec_value_table)->update(array('where_id' => $v2['id'], 'set_state' => 1, 'set_is_checked' => $v2['checked']));
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                $sku_id[$v2['id']] = Dever::db($spec_value_table)->insert(array('value' => $v2['title'], 'is_checked' => $v2['checked'], 'info_id' => $id, 'spec_id' => $spec_id));
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | +                    Dever::db($spec_table)->delete(array('info_id' => $id, 'state' => 2));
 | 
	
		
			
				|  |  | +                    Dever::db($spec_value_table)->delete(array('info_id' => $id, 'state' => 2));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    $this->sku($id, $sku_table, $sku, $sku_id);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            $sku = Dever::input('skus');
 | 
	
		
			
				|  |  | +            if ($sku) {
 | 
	
		
			
				|  |  | +                $this->sku($id, $sku_table, $sku);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Dever::out('yes');
 | 
	
		
			
				|  |  | +    private function sku($id, $sku_table, $sku, $sku_id = false)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        Dever::db($sku_table)->updates(array('option_info_id' => $id, 'set_state' => 2));
 | 
	
		
			
				|  |  | +        foreach ($sku as $k1 => $v1) {
 | 
	
		
			
				|  |  | +            if ($sku_id) {
 | 
	
		
			
				|  |  | +                foreach ($sku_id as $k2 => $v2) {
 | 
	
		
			
				|  |  | +                    $k1 = str_replace($k2, $v2, $k1);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $sku_data = array();
 | 
	
		
			
				|  |  | +            $sku_data['info_id'] = $id;
 | 
	
		
			
				|  |  | +            $sku_data['key'] = $k1;
 | 
	
		
			
				|  |  | +            $sku_info = Dever::db($sku_table)->one($sku_data);
 | 
	
		
			
				|  |  | +            foreach ($v1 as $k3 => $v3) {
 | 
	
		
			
				|  |  | +                $sku_data[$k3] = $v3;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if ($sku_info) {
 | 
	
		
			
				|  |  | +                $sku_data['where_id'] = $sku_info['id'];
 | 
	
		
			
				|  |  | +                $sku_data['state'] = 1;
 | 
	
		
			
				|  |  | +                Dever::db($sku_table)->update($sku_data);
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                Dever::db($sku_table)->insert($sku_data);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Dever::db($sku_table)->delete(array('info_id' => $id, 'state' => 2));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public function struct_data($struct, $data, $old = array())
 | 
	
	
		
			
				|  | @@ -4330,8 +4368,6 @@ class Database
 | 
	
		
			
				|  |  |                      if ($old_name) {
 | 
	
		
			
				|  |  |                          $old[$i] = implode(',', $old_name);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if ($log[$j['name']] == 'null') {
 |