<?php
class entity_goods extends entity{

    function &export_sdf_array($id){

        $trading = &$this->system->loadModel('trading/goods');
        $goods_info = $trading->getGoods($id,$levelid=0);
        $j_goods_arr = $this->_getGoodsInfo($goods_info,$this->_map_schema(),$goods_info['type_id']);

        return $j_goods_arr ;

    }

    function import_sdf_array(&$sdf_array,$type){
        $array = array();
        foreach ($sdf_array[$type] as $k=>$v){
            switch($k){
                case 'type':
                    $attributes['goods_type'] = $v;
                    $array = array_merge($array,$attributes);
                break;
                //case 'goods_id':
                    //$goods_id['goods_id'] = $v;
                    //$array = array_merge($array,$goods_id);
                //break;
                case 'orderinfo':
                    $mininfo['minfo'] = $v;
                    $array = array_merge($array,$mininfo);
                break;
                
                case 'bn':
                    $bn[$k] = $v;
                    $array = array_merge($array,$bn);
                break;
                
                case 'description':
                    $intro['intro'] =$v;
                    $array = array_merge($array,$intro);
                break;
                
                case 'meta':
                    if(count($v)>0){
                        foreach($v as $meta_k=>$meta_v){
                            $tmp_m[$meta_v['key']] = $meta_v['value'];
                        }
                    }
                    $array = array_merge($array,$tmp_m);
                break;
                
                case 'title':
                    $name['name'] = $v;
                    $array = array_merge($array,$name);
                break;
                
                case 'createtime':
                    $uptime['uptime'] = $v;
                    $array = array_merge($array,$uptime);
                break;
                case 'status':
                    $t_status[$k] = $v;
                    $array = array_merge($array,$t_status);
                break;
                
                case 'last_modified':
                    $last_modify['last_modify'] = $v;
                    $array = array_merge($array,$last_modify);
                break;
                
                case 'brief':
                    $brief[$k] = $v;
                    $array = array_merge($array,$brief);
                break;
                
                case 'props':
                    foreach($v as $props_k=>$props_v){
                        $tmp_props[$props_k] = $props_v['id'];
                    }
                    $array = array_merge($array,$tmp_props);
                
                case 'adjunct':
                    $adj_items['product_id'] = array();
                    $adj['adjunct'] = array();
                    $adj_filt = array();
                    foreach($v as $adjunct_k=>$adjunct_v){
                        $tmp_adjunct = array();
                        $items['items'] = array();
                        $tmp_adj['name'] = $adjunct_v['title'];
                        $tmp_adj['min_num'] = $adjunct_v['min'];
                        $tmp_adj['max_num'] = $adjunct_v['max'];
                        $tmp_adjunct = array_merge($tmp_adjunct,$tmp_adj);
                        if(array_key_exists('adj_include',$adjunct_v)){
                            if(count($adjunct_v['adj_include'])>0){
                                foreach($adjunct_v['adj_include'] as $a_incl){
                                    $a_pid = $a_incl['id'];
                                    array_push($adj_items['product_id'],$a_pid);
                                }
                                $items['items'] = array_merge($items['items'],$adj_items);
                                $tmp_adjunct = array_merge($tmp_adjunct,$items);
                            }
                        }elseif(array_key_exists('adj_filter',$adjunct_v)){
                            if(count($adjunct_v['adj_filter']>0)){
                                foreach($adjunct_v['adj_filter'] as $a_fil){
                                    $a_fv = $a_fil['value'];
                                    array_push($adj_filt,$a_fv);
                                }
                                $str['items'] = implode("&",$adj_filt);
                                $tmp_adjunct = array_merge($tmp_adjunct,$str);
                            }
                        }
                        array_push($adj['adjunct'],$tmp_adjunct);
                    }
                    $array = array_merge($array,$adj);
                
                break;
                
                case 'category':
                    //foreach($v as $cat_k=>$cat_v){
                    $tmp_cat['cat_id'] = $v['id'];
                    //}
                    
                    $array = array_merge($array,$tmp_cat);
                break;
                
                case 'brand':
                    foreach($v as $brand_k=>$brand_v){
                        $tmp_brand['brand_id'] = $brand_v['id'];
                        $tmp_brand['brand'] = $brand_v['value'];
                    }
                    $array = array_merge($array,$tmp_brand);
                break;
                
                case 'thumbnail':
                    unset($v['width']);
                    unset($v['height']);
                    $thumbnail_pic['thumbnail_pic'] = $v['value'];
                    $array = array_merge($array,$thumbnail_pic);
                break;

                case 'spec':
                    $spec_desc['spec_desc'] = array();
                    foreach($v as $spec_k=>$spec_v){
                        unset($spec_v['title']);
                        $tmp_spec_desc[$spec_v['key']] = array();
                        foreach($spec_v['option'] as $spec_value_k=>$spec_value_v){
                            $tmp_spec_value['spec_value'] = $spec_value_v['value'];
                            array_push($tmp_spec_desc[$spec_v['key']],$tmp_spec_value);
                        }
                    }
                    $spec_desc['spec_desc'] = $tmp_spec_desc;
                    //error_log(var_export($spec_desc,true),3,'d:/test.txt');
                    $array = array_merge($array,$spec_desc);
                break;
                case 'image':
                    foreach($v as $media_k=>$media_v){
                        //unset($media_v['default']);
                        $tmp_media[$media_v['type']] = $media_v['value'];
                        $tmp_media['height'] = $media_v['height'];
                        $tmp_media['width'] = $media_v['width'];
                    }
                    $array = array_merge($array,$tmp_media);
                break;
                
                case 'product':
                $products['products'] = array();
                
                if(count($v)>0){
                    foreach($v as $product_v){
                        $tmp_products['products'] = array();
                        foreach($product_v as $pr_k=>$pr_v){
                            if($pr_k=='id'){
                                //$tmp_pr['product_id'] = $pr_v;
                                
                            }elseif($pr_k=='meta'){
                                foreach($pr_v as $prmeta_k=>$prmeta_v){
                                    $tmp_pr[$prmeta_v['key']] = $prmeta_v['value'];
                                }
                            }elseif($pr_k=='last_modified'){
                                $tmp_pr['last_modify'] = $pr_v;
                            }elseif($pr_k=='store'){
                                if(count($pr_v)>0){
                                    foreach($pr_v as $pr_store_v){
                                        $tmp_pr['store_place'] = $pr_store_v['place'];
                                        $tmp_pr['freez'] = $pr_store_v['freez'];
                                        $tmp_pr['store'] = $pr_store_v['value'];
                                    }
                                }
                            }elseif($pr_k=='price'){
                                $tmp_price['mprice'] = array();
                                foreach($pr_v as $pr_price_k=>$pr_price_v){
                                
                                    if(array_key_exists('member_group_id',$pr_price_v)){
                                        $t[$pr_price_v['member_group_id']] = $pr_price_v['value'];
                                    }else{
                                        $tmp_pr[$pr_price_v['title']] = $pr_price_v['value'];
                                        $tmp_pr[$pr_price_v['disabled']] = $pr_price_v['disabled'];
                                    }
                                }
                                
                                $tmp_price['mprice'] = $t;
                                $tmp_products['products'] = array_merge($tmp_products['products'],$tmp_price);
                                
                                
                            }elseif($pr_k=='spec_def'){
                                $tmppspecid['spec_value_id'] = array();
                                $tmppspec['spec'] = array();
                                $tmp_pprops['props'] = array();
                                foreach($pr_v['spec_value'] as $pspec_k=>$pspec_v){
                                    array_push($tmppspecid['spec_value_id'],$pspec_v['key']);
                                    array_push($tmppspec['spec'],$pspec_v['value']);
                                }
                                for($i=0;$i<count($tmppspecid['spec_value_id']);$i++){
                                    $ltmppspecid['spec_value_id'][$i+1] = $tmppspecid['spec_value_id'][$i];
                                    $ltmppspec['spec'][$i+1] = $tmppspec['spec'][$i];
                                }
                                $tmp_pprops['props'] = array_merge($tmp_pprops['props'],$ltmppspec);
                                $tmp_pprops['props'] = array_merge($tmp_pprops['props'],$ltmppspecid);
                                
                            }elseif($pr_k=='bn'){
                                $tmp_pr['bn'] = $pr_v;
                            }
                        }
                        $tmp_products['products'] = array_merge($tmp_products['products'],$tmp_pr);
                        $tmp_products['products'] = array_merge($tmp_products['products'],$tmp_price);
                        $tmp_products['products'] = array_merge($tmp_products['products'],$tmp_pprops);
                        array_push($products['products'],$tmp_products['products']);
                    }
                }
                
                $array = array_merge($array,$products);
                break;
            }    
        }
        
        $productsdata = $array['products'];
        $adjunct = $array['adjunct'];
        $images['small'] = $array['small_pic'];
        $images['big'] = $array['big_pic'];
        $images['src_size_width'] = $array['width'];
        $images['src_size_height'] = $array['height'];
        $tmp_minfo['minfo'] = $array['minfo'];
        
        unset($array['products']);
        unset($array['adjunct']);
        unset($array['products']['mprice']);
        unset($array['products']['product_id']);
        unset($array['width']);
        unset($array['height']);
        unset($array['minfo']);
        
        
        
        $array['spec_desc'] = serialize($array['spec_desc']);
        $aRs = $this->db->query("SELECT * FROM sdb_goods WHERE 0");
        
        
        $sSql = $this->db->getInsertSql($aRs,$array);
        $this->db->exec($sSql);
        
        $new_goods_id_row = $this->db->selectrow('SELECT MAX(goods_id) FROM sdb_goods');
        $aRs_link = $this->db->query("SELECT * FROM sdb_goods_rate WHERE 0");
        $aRs_pro = $this->db->query("SELECT * FROM sdb_products WHERE 0");
        $aRs_adj = $this->db->query("SELECT * FROM sdb_goods_memo WHERE 0");
        $aRs_imgs = $this->db->query("SELECT * FROM sdb_gimages WHERE 0");
        $new_goods_id = $new_goods_id_row['MAX(goods_id)'];
        $ng['goods_id'] = $new_goods_id;
        
                   
        foreach($sdf_array[$type] as $kkey=>$vvalue){
            if($kkey=='link'){
                 foreach($vvalue as $link_k=>$link_v){
                    $tmp_goods_rate['goods_1'] = $new_goods_id;
                    $tmp_goods_rate['goods_2'] = $link_v['url'];
                    $tmp_goods_rate['manual'] = $link_v['type'];
                    $tmp_goods_rate['rate'] = $link_v['value'];
                    $sSql_link = $this->db->getInsertSql($aRs_link,$tmp_goods_rate);
                    $this->db->exec($sSql_link);
                }
            }
        }
        
        
        $images['goods_id']=$new_goods_id;
        
        $sSql_imgs = $this->db->getInsertSql($aRs_imgs,$images);
        $this->db->exec($sSql_imgs);
        foreach($productsdata as $prodk=>$prodv){
            $r = array_merge($prodv,$ng);
            $sSql_pro = $this->db->getInsertSql($aRs_pro,$r);
            $this->db->exec($sSql_pro);
        }
        
        $adjunct = serialize($adjunct);
        
        $p_value['p_value'] = $adjunct;
        $adjdata = array();
        $adjtype['p_key'] = 'adjunct';
        $adjdata = array_merge($adjdata,$ng);
        $adjdata = array_merge($adjdata,$adjtype);
        $adjdata = array_merge($adjdata,$p_value);
        $sSql_adj = $this->db->getInsertSql($aRs_adj,$adjdata);
        $this->db->exec($sSql_adj);
        return $new_goods_id;
    }

    function _map_schema(){

        $schema = array(
            'attributes'=>array('goods_type'),
            'meta'=>array('type_id','mktprice','cost','price','marketable','weight','unit','store_place','score_setting','downtime','disabled','notify_num','rank','rank_count','comments_count','view_w_count','view_count','buy_count','buy_w_count','count_stat'),
            'title'=>array('name'),
            'brand'=>array('brand_id','brand'),
            'category'=>array('cat_id'),
            'createtime'=>array('uptime'),
            'props'=>array(
                '1'=>'p_1',
                '2'=>'p_2',
                '3'=>'p_3',
                '4'=>'p_4',
                '5'=>'p_5',
                '6'=>'p_6',
                '7'=>'p_7',
                '8'=>'p_8',
                '9'=>'p_9',
                '10'=>'p_10',
                '11'=>'p_11',
                '12'=>'p_12',
                '13'=>'p_13',
                '14'=>'p_14',
                '15'=>'p_15',
                '16'=>'p_16',
                '17'=>'p_17',
                '18'=>'p_18',
                '19'=>'p_19',
                '20'=>'p_20',
                'p_21','p_22','p_23','p_24','p_25','p_26','p_27','p_28'),

            'thumbnail'=>array('thumbnail_pic'),

            'media'=>array('big_pic','small_pic'),
           
            'brief'=>array('brief'),

            'last_modified'=>array('last_modify'),

            'description'=>array('intro'),

            'product'=>array(
                'id'=>array('product_id'),
                'bn'=>array('bn'),
                'meta'=>array('barcode','weight','unit','cost','uptime','market_place','pdt_desc'),
                'price'=>array('price','mprice','sale_price'),
                'last_modified'=>array('last_modify'),
                'store'=>array('store','store_place','freez'),
                'spec_value'=>array('props'),
            ),
        );
        return $schema;
    }

    function _getGoodsInfo($arr,$map_arr,$type_id){
        $array['goods'] = array();
        $attributes = $this->_getGoodsAttributes($arr,$map_arr);
        $productnum = $this->_getProductNum($arr);
        $basecurrency = $this->_getBaseCurrency();
        $bn = $this->_getBn($arr);
        $goodsId = $this->_getGoodsId($arr);
        $title = $this->_getTitle($arr,$map_arr);
        $createtime = $this->_getCreatetime($arr,$map_arr);
        $link = $this->_getLink($arr);
        //$status = $this->_getStatus($arr);
        $meta = $this->_getMeta($arr,$map_arr);
        $last_modified = $this->_getLastmodified($arr,$map_arr);
        $brief =  $this->_getBrief($arr,$map_arr);
        $props = $this->_getProps($arr,$map_arr,$type_id);
        $description = $this->_getDescription($arr,$map_arr);
        $adjunct = $this->_getAdjunct($arr,$map_arr);
        $category = $this->_getCategory($arr,$map_arr);
        $brand = $this->_getBrand($arr,$map_arr);
        $thumbnail = $this->_getThumbnail($arr,$map_arr);
        $spec = $this->_getSpec($arr,$map_arr);
        $media = $this->_getMedia($arr,$map_arr);
        $product = $this->_getProduct($arr,$map_arr);
        $url = $this->_getUrl($arr);
        $orderinfo = $this->_getOrderInfo($arr);

        $array['goods'] = array_merge($array['goods'],$attributes);
        $array['goods'] = array_merge($array['goods'],$productnum);
        $array['goods'] = array_merge($array['goods'],$basecurrency);
        $array['goods'] = array_merge($array['goods'],$goodsId);
        $array['goods'] = array_merge($array['goods'],$title);
        $array['goods'] = array_merge($array['goods'],$bn);
        $array['goods'] = array_merge($array['goods'],$createtime);
        $array['goods'] = array_merge($array['goods'],$link);
        //$array['goods'] = array_merge($array['goods'],$status);
        $array['goods'] = array_merge($array['goods'],$meta);
        $array['goods'] = array_merge($array['goods'],$last_modified);
        $array['goods'] = array_merge($array['goods'],$brief);
        $array['goods'] = array_merge($array['goods'],$props);
        $array['goods'] = array_merge($array['goods'],$description);
        $array['goods'] = array_merge($array['goods'],$adjunct);
        $array['goods'] = array_merge($array['goods'],$category);
        $array['goods'] = array_merge($array['goods'],$brand);
        $array['goods'] = array_merge($array['goods'],$thumbnail);
        $array['goods'] = array_merge($array['goods'],$spec);
        $array['goods'] = array_merge($array['goods'],$media);
        $array['goods'] = array_merge($array['goods'],$product);
        $array['goods'] = array_merge($array['goods'],$url);
        $array['goods'] = array_merge($array['goods'],$orderinfo);

        return $array;

    }

    function _getTitle($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['title'])){
                $k = 'title';
                $title[$k] = $v;
            }
        }
        return $title;
    }
    function _getUrl($arr){
        $url['url'] = 'http://127.0.0.1/485/src/shopadmin/index.php?ctl=goods/product&act=edit&p[0]='.$arr['goods_id'];
        return $url;
    }
    function _getBaseCurrency(){
        $basecur['base_currency'] = 'CYN';
        
        return $basecur;
    }
    function _getBn($arr){
        foreach($arr as $k=>$v){
            if($k=='bn'){
                $bn[$k] = $v;
            }
        }
        return $bn;
    }
    function _getOrderInfo($arr){
        $order_info = $this->db->selectrow('SELECT minfo FROM sdb_goods_type WHERE type_id =\''.$arr['type_id'].'\'');
        $o_info['orderinfo'] = $order_info['minfo'];
        return $o_info;
    }
    function _getProductNum($arr){
        $productsnum['products'] = 6;
        return $productsnum;
    }
    
    function _getStatus($arr){
        foreach($arr as $k=>$v){
            if($k=='status'){
                $status[$k]=$v;
            }
        }
        return $status;
    }

    function _getGoodsAttributes($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['attributes'])){
                $k = 'type';
                $attributes[$k] = $v;
            }
        }
        return $attributes;
    }
    
    function _getLink($arr){
        $linklist = $this->db->select('SELECT * FROM sdb_goods_rate WHERE goods_1=\''.$arr['goods_id'].'\'');
        $link['link'] = array();
        foreach($linklist as $k=>$v){
            $tmp = array('url'=>$v['goods_2'],'type'=>$v['manual'],'value'=>$v['rate']);
            array_push($link['link'],$tmp);
        }
        return $link;
    }

    function _getGoodsId($arr){
        foreach($arr as $k=>$v){
            if($k=='goods_id'){
                $goods_id[$k] = $v;
            }
        }
        return $goods_id;
    }

    function _getBrand($arr,$map_arr){
        $brand_arr['brand'] = array();
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['brand'])){

                $tmp = array('id'=>$arr['brand_id'],'value'=>$arr['brand']);
                array_push($brand_arr['brand'],$tmp);
            }

        }
        return $brand_arr;
    }

    function _getCategory($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['category'])){
                $value = $this->db->selectrow('SELECT cat_name FROM sdb_goods_cat WHERE cat_id =\''.$v.'\'');
                $tmp['category'] = array('id'=>$v,'value'=>$value['cat_name']);
            }
        }
        return $tmp;
    }

    function _getCreatetime($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['createtime'])){
                $tmp['createtime'] = $v;
            }
        }
        return $tmp;
    }
    function _getAdjunct($arr,$map_arr){

        $adj_include['adj_include'] = array();
        $adj_filter['adj_filter'] = array();
        $adjunct['adjunct'] = array();
        $tamp_adjunct = array();

        foreach($arr as $k=>$v){
            if($k=='adjunct'&& is_array($v)){
                foreach($v as $kk=>$vv){
                    $tmp['title'] = $vv['name'];
                    $tmp['min'] = $vv['min_num'];
                    $tmp['max'] = $vv['max_num'];
                    $tamp_adjunct = array_merge($tamp_adjunct,$tmp);
                    if(is_array($vv['items'])){
                        foreach($vv['items']['product_id'] as $pk=>$pid){
                            $pname = $this->db->selectrow('SELECT name FROM sdb_products WHERE product_id=\''.$pid.'\'');
                            $adj_tmp = array('id'=>$pid,'value'=>$pname['name']);
                            array_push($adj_include['adj_include'],$adj_tmp);
                        }
                        $tamp_adjunct = array_merge($tamp_adjunct,$adj_include);
                    }else{
                        $conditionList = explode('&',$vv['items']);
                        foreach($conditionList as $ck=>$cv){
                            $adj_filter_tmp = array('value'=>$cv);
                            array_push($adj_filter['adj_filter'],$adj_filter_tmp);
                        }
                        $tamp_adjunct = array_merge($tamp_adjunct,$adj_filter);
                    }
                    array_push($adjunct['adjunct'],$tamp_adjunct);
                    $tamp_adjunct = array();
                }
            }
        }
        return $adjunct;
    }
    function _getMedia($arr,$map_arr){
        $media_arr['image'] = array();
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['media'])){
                if($k=='small_pic'){
                    $height_row = $this->db->selectrow('SELECT src_size_height FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\' AND small=\''.$v.'\'');
                    $width_row = $this->db->selectrow('SELECT src_size_width FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\' AND small=\''.$v.'\'');
                    $small = $this->db->selectrow('SELECT small FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\'');
                    $smallatt = explode("|",$small['small']);
                    $tmp = array('type'=>$k,'value'=>$v,'height'=>$height_row['src_size_height'],'width'=>$width_row['src_size_width'],'default'=>1,'storage'=>$smallatt[2],'option'=>'id='.$smallatt[1]);
                    array_push($media_arr['image'],$tmp);
                }
                if($k=='big_pic'){
                    $height_row = $this->db->selectrow('SELECT src_size_height FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\' AND big=\''.$v.'\'');
                    $width_row = $this->db->selectrow('SELECT src_size_width FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\' AND big=\''.$v.'\'');
                    $big = $this->db->selectrow('SELECT big FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\'');
                    $bigatt = explode("|",$big['big']);
                    $tmp = array('type'=>$k,'value'=>$v,'height'=>$height_row['src_size_height'],'width'=>$width_row['src_size_width'],'storage'=>$bigatt[2],'option'=> 'id='.$smallatt[1],'default'=>0);
                    array_push($media_arr['image'],$tmp);
                }
                
            }
        }
        //error_log(var_export($media_arr,true),3,'d:/test.txt');
        return $media_arr;
    }

    function _getThumbnail($arr,$map_arr){
        $th['thumbnail'] = array();
        foreach($arr as $k=>$v){
            $thumbnail['value']=$arr['thumbnail_pic'];
            $th['thumbnail'] = array_merge($th['thumbnail'],$thumbnail);
        }
        if(!is_null($th['thumbnail'])){
            $height_row = $this->db->selectrow('SELECT src_size_height FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\'AND thumbnail =\''.$thumbnail['value'].'\'');
            $width_row = $this->db->selectrow('SELECT src_size_width FROM sdb_gimages WHERE goods_id=\''.$arr['goods_id'].'\'AND thumbnail =\''.$thumbnail['value'].'\'');
            $thumbnail['width'] = 100;
            $thumbnail['height'] = 100;
            $th['thumbnail'] = array_merge($th['thumbnail'],$thumbnail);
        }
        return $th;
    }

    function _getSpec($arr,$map_arr){
        $spec_arr['spec'] = array();
        $option['option'] = array();
        foreach($arr as $k=>$v){
            if($k=='spec_desc'){
                foreach($v as $kk=>$vv){
                    foreach($vv as $key=>$value){
                        $temp = array('value'=>$value['spec_value']);
                        array_push($option['option'],$temp);
                    }
                    $spec_row = $this->db->selectrow('SELECT spec_name FROM sdb_specification WHERE spec_id=\''.$kk.'\'');
                    $tmp['spec'] = array('title'=>$spec_row['spec_name'],'key'=>$kk);
                    $tmp['spec'] = array_merge($tmp['spec'],$option);
                    $option['option'] = array();
                    array_push($spec_arr['spec'], $tmp['spec']);
                }
            }
        }
        return $spec_arr;
    }

    function _getLastmodified($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['last_modified'])){
                $k = 'last_modified';
                $last_modified[$k] = $v;
            }
        }
        return $last_modified;
    }

    function _getDescription($arr,$map_arr){

        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['description'])){
                $k = 'description';
                $description[$k] = $v;
            }
        }
        return $description;
    }

    function _getMeta($arr,$map_arr){
        $meta_arr['meta'] = array();
        if(is_array($arr)){
            foreach($arr as $k=>$v){
                if(in_array($k,$map_arr['meta'])){
                    $tmp = array('key'=>$k,'value'=>$v);
                    array_push($meta_arr['meta'],$tmp);
                }
            }
        }
        return $meta_arr;
    }


    function _getProps($arr,$map_arr,$type_id){
        $array['props'] = array();
        $props = $this->db->selectrow('SELECT props FROM sdb_goods_type WHERE type_id =\''.$type_id.'\'');
        $p = unserialize($props['props']);
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['props'])){
                if(!is_null($v)){
                    $tmp[$k] = array('id'=>$v,'value'=>$p[substr($k,2)]['options'][$v]);
                }
            }
        }
        $array['props'] = array_merge($array['props'],$tmp);
        return $array;
    }

    function _getBrief($arr,$map_arr){
        foreach($arr as $k=>$v){
            if(in_array($k,$map_arr['brief'])){
                $brief[$k]=$v;
            }
        }
        return $brief;
    }

    function _getProduct($arr,$map_arr){
        $product['meta']=array();
        $product['price'] = array();
        $product['store'] = array();
        $product['spec_def'] = array();
        $p['spec_value'] = array();
        $tamp['product'] = array();
        foreach($arr as $key=>$value){
            if($key=='products'){
                if(is_array($value)){
                    //print_r($value);
                    foreach($value as $k=>$v){

                        foreach($v as $kk=>$vv){

                            if(in_array($kk,$map_arr['product']['id'])){
                                $product['id']=$vv;
                            }

                            if(in_array($kk,$map_arr['product']['bn'])){
                                $product['bn']=$vv;
                            }
                            if(in_array($kk,$map_arr['product']['store'])){
                                $product['store'] = array('place'=>$v['store_place'],'freez'=>$v['freez'],'value'=>$v['store']);
                                //array_push($product['store'],$tmp['store']);
                            }

                            if(in_array($kk, $map_arr['product']['meta'])){

                                $tmp = array('key'=>$kk,'value'=>$vv);
                                array_push($product['meta'],$tmp);
                            }

                            if(in_array($kk,$map_arr['product']['price'])){

                                if(is_array($vv)){
                                    foreach($vv as $member_id=>$val){
                                        $tmp['price']=array('title'=>$kk,'member_group_id'=>$member_id,'value'=>$val,'disabled'=>$v['disabled']);
                                        array_push($product['price'],$tmp['price']);
                                    }

                                }else{
                                    $tmp['price']=array('title'=>$kk,'value'=>$vv,'disabled'=>$v['disabled']);
                                    array_push($product['price'],$tmp['price']);
                                }
                            }
                            if(in_array($kk,$map_arr['product']['last_modified'])){

                                $product['last_modified']=$vv;
                            }
                            if(in_array($kk,$map_arr['product']['spec_value'])){
                                foreach($vv['spec'] as $spec_k=>$spec_v){
                                    $temp_spec_val = array('key'=>$spec_k,'value'=>$spec_v);
                                    array_push($p['spec_value'],$temp_spec_val);
                                }
                                for($i=0;$i<count($vv['spec_value_id']);$i++){
                                    $p['spec_value'][$i]['key'] = $vv['spec_value_id'][$i+1];
                                }
                                $product['spec_def'] = array_merge($product['spec_def'],$p);
                            }

                        }

                        array_push($tamp['product'],$product);
                        $product['meta']=array();
                        $product['price'] = array();
                        $product['store'] = array();
                        $p['spec_value'] = array();
                    }
                }

            }
        }
        return $tamp;
    }
}