excle导入

public function import_upload(){
        set_time_limit(900);
        if(!empty($_FILES ['xls_path']['name'])){
            $tmp_file = $_FILES ['xls_path']['tmp_name'];
            $file_types = explode ( ".",$_FILES ['xls_path']['name']);
            $file_type = $file_types[count($file_types) - 1];
            $operator = $_SESSION[C('USER_AUTH_KEY')];
            $import_id = time();
        
             /*判别是不是.xls文件,判别是不是excel文件*/
             if(!in_array(strtolower($file_type),array('xls','xlsx'))){
                  $this->error('不是Excel文件,重新上传');
             }
             if($_FILES['size']>2097152){
                 $this->error('上传文件大小不能超过2M');
             }
            /*设置上传路径*/
             $savePath = substr($_SERVER['DOCUMENT_ROOT'],0,-8) . "upload_dir/update_goods/";
        
            /*以时间来命名上传的文件*/
             $str = date('Ymdhis'); 
             $file_name = $str . "." . $file_type;
        
             /*是否上传成功*/
             if(!copy( $tmp_file, $savePath . $file_name)){
                  $this->error('上传失败');
             }
             
             $excel_row = $this->Execlimport($savePath.$file_name,strtolower($file_type));
             if($excel_row['data'][0]['Rows']>1001){
                 $this->error('单次上传数据不能超过1000条');
             }
             if($excel_row['error']==1){
//                 echo $excel_row['data'][0]['Cols'];
//                 var_dump($excel_row['data'][0]);
//                 if($excel_row['data'][0]['Cols']!=22){
//                     exit();
//                     //$this->error('数据列与模板不符,上传模板格式的数据表');
//                 }
                 $col_title = array(
                     0=>array('title'=>'序号'),
                     1=>array('title'=>'商品编号','name'=>'goods_bzno','required'=>1),
                     2=>array('title'=>'OMS编码','name'=>'goods_no','required'=>1),
                     3=>array('title'=>'一级分类','name'=>'cate','required'=>1,'type'=>'int'),
                                4=>array('title'=>'二级分类','name'=>'second_cate'),
                                5=>array('title'=>'三级分类','name'=>'three_cate'),
                                6=>array('title'=>'分类标签','name'=>'cate_tag'),
                                7=>array('title'=>'适合性别','name'=>'gender'),
                     8=>array('title'=>'商品名称','name'=>'goods_name','required'=>1),
                     9=>array('title'=>'尺寸','name'=>'size','required'=>0),
                     10=>array('title'=>'颜色','name'=>'color','required'=>0),
                     11=>array('title'=>'疯狂价','name'=>'crazy_price','required'=>1,'type'=>'double'),
                     12=>array('title'=>'柜台价','name'=>'shop_price','required'=>1,'type'=>'double'),
                     13=>array('title'=>'进货价','name'=>'buy_price','required'=>1,'type'=>'double'),
                     14=>array('title'=>'上下架','name'=>'is_putaway','required'=>1),
                     15=>array('title'=>'残次品','name'=>'is_defective'),
                     16=>array('title'=>'买手','name'=>'buyer','required'=>1),
                     17=>array('title'=>'供应商','name'=>'supplier_id','required'=>1),
                     18=>array('title'=>'批次','name'=>'bathch','required'=>0),
                     19=>array('title'=>'商品参数1','name'=>'param1','required'=>0),
                     20=>array('title'=>'商品参数2','name'=>'param2','required'=>0),
                     21=>array('title'=>'商品参数3','name'=>'param3','required'=>0),
                     22=>array('title'=>'商品参数4','name'=>'param4','required'=>0),
                     23=>array('title'=>'商品参数5','name'=>'param5','required'=>0),
                     24=>array('title'=>'商品参数6','name'=>'param6','required'=>0),
                     25=>array('title'=>'商品参数7','name'=>'param7','required'=>0),
                     26=>array('title'=>'商品参数8','name'=>'param8','required'=>0),
                     27=>array('title'=>'商品参数9','name'=>'param9','required'=>0),
                     28=>array('title'=>'商品参数10','name'=>'param10','required'=>0),
                     29=>array('title'=>'商品参数11','name'=>'param11','required'=>0),
                     30=>array('title'=>'商品参数12','name'=>'param12','required'=>0),
                     31=>array('title'=>'商品参数13','name'=>'param13','required'=>0),
                     32=>array('title'=>'商品参数14','name'=>'param14','required'=>0),
                     33=>array('title'=>'商品参数15','name'=>'param15','required'=>0),
                     34=>array('title'=>'商品参数16','name'=>'param16','required'=>0),
                     35=>array('title'=>'商品参数17','name'=>'param17','required'=>0),
                     36=>array('title'=>'商品参数18','name'=>'param18','required'=>0),
                     37=>array('title'=>'商品参数19','name'=>'param19','required'=>0),
                     38=>array('title'=>'商品参数20','name'=>'param20','required'=>0),
                     39=>array('title'=>'商品参数21','name'=>'param21','required'=>0),
                     40=>array('title'=>'商品参数22','name'=>'param22','required'=>0),
                     41=>array('title'=>'商品参数23','name'=>'param23','required'=>0),
                     42=>array('title'=>'商品参数24','name'=>'param24','required'=>0),
                     43=>array('title'=>'商品参数25','name'=>'param25','required'=>0),
                     44=>array('title'=>'商品参数26','name'=>'param26','required'=>0),
                     45=>array('title'=>'商品参数27','name'=>'param27','required'=>0),
                     46=>array('title'=>'商品参数28','name'=>'param28','required'=>0),
                     47=>array('title'=>'商品参数29','name'=>'param29','required'=>0),
                     48=>array('title'=>'商品参数30','name'=>'param30','required'=>0),
                     49=>array('title'=>'商品状态','name'=>'state','required'=>1)
                 );
                 //供应商
                 $supplier_arr = $this->supper_name_id();
                 //买手
                 $user_arr = $this->user_name_id();
                 //分类
                 $cate_arr = $this->cate_title_id();
                        //获取一、二、三级分类
                        $other_cate = $this->getOtherCate();
                        //获取所有分类标签
                        $cate_tags = $this->getCateTag();
                        //封装性别数组
                        $gender = array(
                            '男' => 1,
                            '女' => 2,
                            '中性' => 3,
                            '童'=> 4 
                        );
                 //上下架
                 $putaway_arr = array('上架'=>1,'下架'=>0);
                 //是否残次
                 $defective_arr = array('是'=>1,'否'=>0);
                 //商品状态
//                 $state_arr = array('首页上架'=>1,'列表页上架'=>2,'隐身上架'=>3,'下架'=>4);
                $state_arr = array_flip($this->state_ary);
                 $excel_arr = array();
                 $goods_arr = array();
                 foreach($excel_row['data'][0]['Content'] as $key=>$value){
                     if($key==1){
                         foreach($value as $k=>$val){
                             if($col_title[$k]['title']!=$val){
                                 $this->error('数据列与模板不符,上传失败');
                             }
                         }
                     }else{
//                         if(empty($value[1]) || empty($value[2])){
//                             continue;
//                         }
                         $row_arr = array();
                         $row_arr['goods_bzno'] = trim($value[1]);
                         $row_arr['goods_no'] = trim($value[2]);
                                        if(empty($row_arr['goods_no'])){
                                            $this->error('OMS编码不能为空!');
                                        }
                         $row_arr['goods_name'] = trim($value[8]);
                         $row_arr['size'] = trim($value[9]);
                         $row_arr['color'] = trim($value[10]);
                         $row_arr['crazy_price'] = trim($value[11]);
                         $row_arr['shop_price'] = trim($value[12]);
                         $row_arr['buy_price'] = trim($value[13]);
                         $row_arr['bathch'] = trim($value[18]);
                         $i = 15;
                         $param_arr = array();
                         for($i=19;$i<49;$i++){
                             $row_arr['param'.($i-18)] = trim($value[$i]);
                             if(!empty($value[$i])){
                                 $param_arr[] = trim($value[$i]);
                             }
                         }
//                         $row_arr['param1'] = $value[15];
//                         $row_arr['param2'] = $value[16];
//                         $row_arr['param3'] = $value[17];
//                         $row_arr['param4'] = $value[18];
//                         $row_arr['param5'] = $value[19];
//                         $row_arr['param6'] = $value[20];
//                         $param_arr = array();
//                         if(!empty($value[15])){
//                             $param_arr[] = $value[15];
//                         }
//                         if(!empty($value[16])){
//                             $param_arr[] = $value[16];
//                         }
//                         if(!empty($value[17])){
//                             $param_arr[] = $value[17];
//                         }
//                         if(!empty($value[18])){
//                             $param_arr[] = $value[18];
//                         }
//                         if(!empty($value[19])){
//                             $param_arr[] = $value[19];
//                         }
//                         if(!empty($value[20])){
//                             $param_arr[] = $value[20];
//                         }
                        $row_arr['goods_param'] = $param_arr;
                         
                         $row_arr['cate_text'] = trim($value[3]);
                         $row_arr['is_putaway_text'] = trim($value[14]);
                         $row_arr['is_defective_text'] = trim($value[15]);
                         $row_arr['buyer_text'] = trim($value[16]);
                         $row_arr['supplier_id_text'] = trim($value[17]);
                         $row_arr['state_text'] = trim($value[49]);
                         $row_arr['cate'] = trim($other_cate[$value[3]]['id']);
                                        $row_arr['second_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['id']);
                                        $row_arr['three_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['item'][$value[5]]['id']);
                                        if(empty($row_arr['cate']) || empty($row_arr['second_cate'])){
                                            $this->error('请确认商品编号:'.$row_arr['goods_bzno'].'的一、二级分类是否存在!');
                                        }
                                        $row_arr['cate_tag'] = $cate_tags[$value[6]];
                                        $row_arr['gender'] = !is_null($gender[$value[7]])?$gender[$value[7]]:0;
                         $row_arr['is_putaway'] = trim($putaway_arr[$value[14]]);
                         $row_arr['is_defective'] = trim($defective_arr[$value[15]]);
                         $row_arr['buyer'] = trim($user_arr[$value[16]]);
                         $row_arr['supplier_id'] = trim($supplier_arr[$value[17]]);
                         $row_arr['state'] = trim($state_arr[$value[49]]);
                         $goods_arr[] = trim($value[2]);
                         
                         $excel_arr[$row_arr['goods_no']] = $row_arr;
                                             
                     }
                 }
             }
                     //判断商品的适合性别是否合法
                     $gender_err = rtrim($gender_err,',');
                     if(!empty($gender_err)){
                         $this->error('OMS编码:'.$gender_err.' 商品适合性别不合法!');
                     }
                    /*
                     * 增加‘导入表与既存商品价格不一致时,给出提示并整张表不可导’功能
                     */
                    foreach ($excel_arr as $key => $value) {
                        $tmp_excel_str[] = $key;
                    }
                    $m_spec = M('Spec');
                    $spec_field = 'goods_no,crazy_price,goods_id';
                    $spec_map['goods_no'] = array('IN',$tmp_excel_str);
                    $s_spec_arr = $m_spec->field($spec_field)->where($spec_map)->group('goods_no')->select();
                    foreach ($s_spec_arr as $key => $value) {
                        $data_price[$value['goods_id']][$value['goods_no']] = $value['crazy_price'];
                        $check_goods_id[] = $value['goods_id'];
                        $check_goods_no[] = $value['goods_no'];
                    }
                    $error_goods_no = array_diff($tmp_excel_str, $check_goods_no);
                    if(!empty($error_goods_no)){
                        foreach ($error_goods_no as $key => $value) {
                            $err_goods_no .= $value.',';
                        }
                        $final_err = rtrim($err_goods_no,',');
                        $this->error('商品编码:'.$final_err.'不存在!');
                    }
                    //校验商品是否属于正式运营专题
                    $checkRs = $this->check_special_goods(array_unique($check_goods_id));
                    $this->assign('checkRs',$checkRs);
             $e_goods = $excel_arr;
             $m_goods = M('goods g');
             $w_goods['s.goods_no'] = array('in',$goods_arr);
             $j_goods = " inner join ".C('DB_PREFIX')."spec s on g.goods_id=s.goods_id ";
             $j_goods .= " inner join ".C('DB_PREFIX')."goodscollect gc on g.goods_id=gc.goods_id and gc.type=0 ";
             $f_goods = "g.goods_id,s.spec_id,g.goods_bzno,s.goods_no,g.goods_name,s.attr,s.skusize,s.color,s.crazy_price,s.shop_price,s.buy_price,g.bathch,g.goods_param,g.cate,g.second_cate,g.three_cate,g.cate_tag,g.gender,s.is_putaway,s.is_defective,g.buyer,g.supplier_id,gc.state,gc.status";
             $l_goods = $m_goods->field($f_goods)->join($j_goods)->where($w_goods)->select();
             $goods_excel = $msg_arr = $neq_msg_arr = $neq_price_arr = array();
             $goods_price = array();
             $status_arr = array(3,5);
             foreach($l_goods as $key=>$value){
                 unset($e_goods[$value['goods_no']]);
                 //赋值
                 $neq_m_arr = $m_arr = $g_arr = array();
                 $g_arr['spec_id'] = $value['spec_id'];
                 $g_arr['goods_id'] = $value['goods_id'];
                 $g_arr['goods_bzno'] = $value['goods_bzno'];
                 $g_arr['goods_no'] = $value['goods_no'];
                 $g_arr['cate'] = $value['cate'];
                        $g_arr['second_cate'] = $value['second_cate'];
                        $g_arr['three_cate'] = $value['three_cate'];
                        $g_arr['cate_tag'] = $value['cate_tag'];
                        $g_arr['gender'] = $value['gender'];
                 $g_arr['goods_name'] = $value['goods_name'];
                 $g_arr['color'] = $value['color'];
                 $g_arr['skusize'] = $value['skusize'];
                 $g_arr['attr'] = $value['attr'];
                 $g_arr['crazy_price'] = $value['crazy_price'];
                 $g_arr['shop_price'] = $value['shop_price'];
                 $g_arr['buy_price'] = $value['buy_price'];
                 $g_arr['is_putaway'] = $value['is_putaway'];
                 $g_arr['is_defective'] = $value['is_defective'];
                 $g_arr['buyer'] = $value['buyer'];
                 $g_arr['supplier_id'] = $value['supplier_id'];
                 $g_arr['bathch'] = $value['bathch'];
                 $g_arr['goods_param'] = $value['goods_param'];
                 $g_arr['state'] = $value['state'];
                 $g_arr['status'] = $value['status'];
                 $g_arr['im_cate'] = $excel_arr[$value['goods_no']]['cate'];
                        $g_arr['im_second_cate'] = !empty($excel_arr[$value['goods_no']]['second_cate'])?$excel_arr[$value['goods_no']]['second_cate']:0;
                        $g_arr['im_three_cate'] = !empty($excel_arr[$value['goods_no']]['three_cate'])?$excel_arr[$value['goods_no']]['three_cate']:0;
                        $g_arr['im_cate_tag'] = !empty($excel_arr[$value['goods_no']]['cate_tag'])?$excel_arr[$value['goods_no']]['cate_tag']:0;
                        $g_arr['im_gender'] = $excel_arr[$value['goods_no']]['gender'];
                 $g_arr['im_goods_name'] = $excel_arr[$value['goods_no']]['goods_name'];
                 $g_arr['im_color'] = $excel_arr[$value['goods_no']]['color'];
                 $g_arr['im_skusize'] = $excel_arr[$value['goods_no']]['size'];
                $attr2 = array();
                        if(empty($excel_arr[$value['goods_no']]['color'])){
                            if(!empty($excel_arr[$value['goods_no']]['size'])){
                                $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size'];
                            }
                        }else{
                            $attr2['color'] = $excel_arr[$value['goods_no']]['color'];
                            if(!empty($excel_arr[$value['goods_no']]['size'])){
                            $attr2['skuSize'] = $excel_arr[$value['goods_no']]['size'];
                            }
                        }
                        if(!isset($goods_price[$value['goods_id']])){
                            $goods_price[$value['goods_id']] = $excel_arr[$value['goods_no']]['crazy_price'];
                        }
                
                 $g_arr['im_attr'] = serialize($attr2);
                 $g_arr['im_crazy_price'] = $excel_arr[$value['goods_no']]['crazy_price'];
                 $g_arr['im_shop_price'] = $excel_arr[$value['goods_no']]['shop_price'];
                 $g_arr['im_buy_price'] = $excel_arr[$value['goods_no']]['buy_price'];
                 $g_arr['im_is_putaway'] = $excel_arr[$value['goods_no']]['is_putaway'];
                 $g_arr['im_is_defective'] = $excel_arr[$value['goods_no']]['is_defective'];
                 $g_arr['im_buyer'] = $excel_arr[$value['goods_no']]['buyer'];
                 $g_arr['im_supplier_id'] = $excel_arr[$value['goods_no']]['supplier_id'];
                 $g_arr['im_bathch'] = $excel_arr[$value['goods_no']]['bathch'];
                 $g_arr['im_goods_param'] = serialize($excel_arr[$value['goods_no']]['goods_param']);
                 $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state'];
                 if(in_array($value['status'],$status_arr)){
                            $g_arr['im_status'] = 2;
                            $g_arr['im_post_checktime'] = time();
                 }else{
                            $g_arr['im_status'] = $value['status'];
                            $g_arr['im_post_checktime'] = 0;
                 }
                 $g_arr['operator'] = $operator;
                 $g_arr['import_id'] = $import_id;
                 //验证是否必填,验证是否已经有值
                 if(!empty($excel_arr[$value['goods_no']]['cate']) && !empty($excel_arr[$value['goods_no']]['cate_text'])){    //所属分类
                     if(!empty($value['cate'])){
                                    $m_arr['cate']['ct'] = 1;
                     }
                 }else{
                            if(empty($value['cate'])){
                                $neq_m_arr['cate']['neq'] = 1;
                            }else{
                                $g_arr['im_cate'] = $value['cate'];
                            }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['goods_name'])){ //商品名称
                            if(!empty($value['goods_name'])){
                                $m_arr['goods_name']['ct'] = 1;
                            }
                 }else{
                            if(empty($value['goods_name'])){
                                $neq_m_arr['goods_name']['neq'] = 1;
                            }else{
                                $g_arr['im_goods_name'] = $value['goods_name'];
                            }
                 }
                 $attr = unserialize($value['attr']);
                 if(!empty($excel_arr[$value['goods_no']]['size'])){ //尺寸
                     if(!empty($attr['skuSize'])){
                         $m_arr['size']['ct'] = 1;
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['color'])){ //颜色
                     if(!empty($attr['color'])){
                         $m_arr['color']['ct'] = 1;
                     }
                 }
                 if((empty($excel_arr[$value['goods_no']]['size']) && empty($excel_arr[$value['goods_no']]['color'])) && (!empty($attr['skuSize']) || !empty($attr['color']))){
                     $attr1 = array();
//                     var_dump($attr);
                    if(empty($attr['color'])){
                        if(!empty($attr['skuSize'])){
                            $attr1['skuSize'] = $attr['skuSize'];
                        }
                    }else{
                        $attr1['color'] = $attr['color'];
                        if(!empty($attr['skuSize'])){
                            $attr1['skuSize'] = $attr['skuSize'];
                        }
                    }
                     $g_arr['im_attr'] = serialize($attr1);
                 }
                 if(!empty($excel_arr[$value['goods_no']]['crazy_price'])){ //疯狂价
                     if(!empty($value['crazy_price'])){
                         $m_arr['crazy_price']['ct'] = 1;
                     }
                     if(!is_numeric($excel_arr[$value['goods_no']]['crazy_price'])){
                         $neq_m_arr['crazy_price']['n_int'] = 1; 
                     }
                     if(!isset($neq_price_arr[$value['goods_bzno']])){
                         if($goods_price[$value['goods_id']]!=$excel_arr[$value['goods_no']]['crazy_price']){
                             $neq_price_arr[$value['goods_bzno']] = 1;
                         }
                     }
                     //if($goods_excel[$value['spec_id']]['im_crazy_price'])
                 }else{
                     if(empty($value['crazy_price'])){
                         $neq_m_arr['crazy_price']['neq'] = 1;
                     }else{
                         $g_arr['im_crazy_price'] = $value['crazy_price'];
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['shop_price'])){ //柜台价
                     if(!empty($value['shop_price'])){
                         $m_arr['shop_price']['ct'] = 1;
                     }
                     if(!is_numeric($excel_arr[$value['goods_no']]['shop_price'])){
                         $neq_m_arr['shop_price']['n_int'] = 1; 
                     }
                 }else{
                     if(empty($value['shop_price'])){
                         $neq_m_arr['shop_price']['neq'] = 1;
                     }else{
                         $g_arr['im_shop_price'] = $value['shop_price'];
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['buy_price'])){ //进货价
                     if(!empty($value['buy_price'])){
                         $m_arr['buy_price']['ct'] = 1;
                     }
                     if(!is_numeric($excel_arr[$value['goods_no']]['buy_price'])){
                         $neq_m_arr['buy_price']['n_int'] = 1; 
                     }
                 }else{
                     if(empty($value['buy_price'])){
                         $neq_m_arr['buy_price']['neq'] = 1;
                     }else{
                         $g_arr['im_buy_price'] = $value['buy_price'];
                     }
                 }
                 if((!empty($excel_arr[$value['goods_no']]['is_putaway']) || $excel_arr[$value['goods_no']]['is_putaway'] == 0) && !empty($excel_arr[$value['goods_no']]['is_putaway_text'])){ //上下架
                     if(!empty($value['is_putaway']) || $value['is_putaway'] ==0){
                         $m_arr['is_putaway']['ct'] = 1;
                     }
                 }else{
                     if(empty($value['is_putaway']) && $value['is_putaway'] != 0){
                         $neq_m_arr['is_putaway']['neq'] = 1;
                     }else{
                         $g_arr['im_is_putaway'] = $value['is_putaway'];
                     }
                 }
                 if((!empty($excel_arr[$value['goods_no']]['is_defective']) || $excel_arr[$value['goods_no']]['is_defective'] == 0) && !empty($excel_arr[$value['goods_no']]['is_defective_text'])){ //是否残次
                     if(!empty($value['is_defective']) || $value['is_defective'] ==0){
                         $m_arr['is_defective']['ct'] = 1;
                     }
                 }else{
                     $g_arr['im_is_defective'] = $value['is_defective'];
                 }
                 if(!empty($excel_arr[$value['goods_no']]['buyer']) && !empty($excel_arr[$value['goods_no']]['buyer_text'])){ //买手
                     if(!empty($value['buyer'])){
                         $m_arr['buyer']['ct'] = 1;
                     }
                 }else{
                     if(empty($value['buyer'])){
                         $neq_m_arr['buyer']['neq'] = 1;
                     }else{
                         $g_arr['im_buyer'] = $value['buyer'];
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['supplier_id']) && !empty($excel_arr[$value['goods_no']]['supplier_id_text'])){ //供应商
                     if(!empty($value['supplier_id'])){
                         $m_arr['supplier_id']['ct'] = 1;
                     }
                 }else{
                     if(empty($value['supplier_id'])){
                         $neq_m_arr['supplier_id']['neq'] = 1;
                     }else{
                         $g_arr['im_supplier_id'] = $value['supplier_id'];
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['bathch'])){ //批次
                     if(!empty($value['bathch'])){
                         $m_arr['bathch']['ct'] = 1;
                     }
                 }else{
                     if(!empty($value['bathch'])){
                         $g_arr['im_bathch'] = $value['bathch'];    
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['goods_param'])){ //参数
                     $goods_param = unserialize($value['goods_param']);
                     if(!empty($value['goods_param'])){
                         $m_arr['goods_param']['ct'] = 1;
                     }
                 }else{
                     if(!empty($value['goods_param'])){
                         $g_arr['im_goods_param'] = $value['goods_param'];
                     }
                 }
                 if(!empty($excel_arr[$value['goods_no']]['state']) && !empty($excel_arr[$value['goods_no']]['state_text'])){ //商品状态
                     if(!empty($value['state'])){
                         $m_arr['state']['ct'] = 1;
                     }
                 }else{
                     if(empty($value['state'])){
                         $neq_m_arr['state']['neq'] = 1;
                     }else{
                         $g_arr['im_state'] = $excel_arr[$value['goods_no']]['state'];
                     }
                 }

                if(!empty($m_arr)){
                     $msg_arr[$value['goods_no']] = $m_arr;
                }
                if(!empty($neq_m_arr)){
                    $neq_msg_arr[$value['goods_no']] = $neq_m_arr;
                }
                 $goods_excel[$value['spec_id']] = $g_arr;
                        $data_excel_goods[$value['goods_id']][$value['goods_no']] = $excel_arr[$value['goods_no']]['crazy_price'];
             }
             if(!empty($msg_arr)){
                 $m_edit_goods = M('edit_goods');
                 $w_edit_goods['operator'] = $operator;
                 if($m_edit_goods->where($w_edit_goods)->delete()!==false){
                     $data = $goods_excel;
                    sort($data);
                                        //导入表与既存商品价格不一致时,给出提示并整张表不可导。
                                        foreach ($data_excel_goods as $key => $value) {
                                            if(isset($data_price[$key])){
                                                $price_diff[$key] = $data_excel_goods[$key]+$data_price[$key];
                                            }
                                        }
                                        foreach ($price_diff as $k => $v) {
                                            if(count(array_unique($price_diff[$k])) > 1){
                                                $this->error('商品ID'.$k.'所属SKU价格不一致');
                                            }
                                        }
                     if($m_edit_goods->addAll($data)===false){
                        $this->error('上传失败,创建备份失败!');
                     }
                 }else{
                     $this->error('上传失败,清除历史备份失败!');
                 }
             }
             $yz_arr = array(
                 'ct'=>array(
                     'cate'=>'分类',
                     'goods_name'=>'商品名称',
                     'size'=>'尺寸',
                     'color'=>'颜色',
                     'crazy_price'=>'疯狂价',
                     'shop_price'=>'柜台价',
                     'buy_price'=>'进货价',
                     'is_putaway'=>'上下架',
                     'is_defective'=>'残次品',
                     'buyer'=>'买手',
                     'supplier_id'=>'供应商',
                     'bathch'=>'批次',
                     'goods_param'=>'商品参数',
                     'state'=>'商品状态'
                 ),
                 'neq'=>array(
                     'cate'=>'分类',
                     'goods_name'=>'商品名称',
                     'crazy_price'=>'疯狂价',
                     'shop_price'=>'柜台价',
                     'buy_price'=>'进货价',
                     'is_putaway'=>'上下架',
                     'buyer'=>'买手',
                     'supplier_id'=>'供应商',
                     'state'=>'商品状态'
                 ),
                 'n_int'=>array(
                     'crazy_price'=>'疯狂价',
                     'shop_price'=>'柜台价',
                     'buy_price'=>'进货价'
                 )
             );
             $this->assign('yz_arr',$yz_arr);
             $this->assign('msg_arr',$msg_arr);
             $this->assign('neq_msg_arr',$neq_msg_arr);
             $this->assign('neq_price_arr',$neq_price_arr);
             $this->assign('goods_excel',$goods_excel);
             $this->assign('e_goods',$e_goods);
             $this->assign('import_id',$import_id);
             $this->display();
        }
    }
public function Execlimport($file, $excel_type = 'xls')
        {
            //        $file='E:workcbdcbdrootupload_dirsupplier_goods20140604538e8fee0ae11.xls';
            //        echo $file;
            if (!file_exists($file))
            {
                return [
                    "error" => 0,
                    'message' => 'file not found!'
                ];
            }

            Vendor("PHPExcel.PHPExcel");
            Vendor("PHPExcel.PHPExcel.IOFactory");
            Vendor("PHPExcel.PHPExcel.Reader.Excel5");
            Vendor("PHPExcel.PHPExcel.Reader.Excel2007");
            if ($excel_type == 'xls')
            {
                $objReader = PHPExcel_IOFactory::createReader('Excel5');
            }
            else
            {
                $objReader = PHPExcel_IOFactory::createReader('Excel2007');
            }
            try
            {
                $PHPReader = $objReader->load($file);
            }
            catch (Exception $e)
            {
            }
            if (!isset($PHPReader))
            {
                return [
                    "error" => 0,
                    'message' => 'read error!'
                ];
            }
            $allWorksheets = $PHPReader->getAllSheets();
            $i = 0;
            foreach ($allWorksheets as $objWorksheet)
            {
                $sheetname = $objWorksheet->getTitle();
                $allRow = $objWorksheet->getHighestRow();//how many rows
                $highestColumn = $objWorksheet->getHighestColumn();//how many columns
                $allColumn = PHPExcel_Cell::columnIndexFromString($highestColumn);
                $array[$i]["Title"] = $sheetname;
                $array[$i]["Cols"] = $allColumn;
                $array[$i]["Rows"] = $allRow;
                $arr = [];
                $isMergeCell = [];
                foreach ($objWorksheet->getMergeCells() as $cells)
                {//merge cells
                    foreach (PHPExcel_Cell::extractAllCellReferencesInRange($cells) as $cellReference)
                    {
                        $isMergeCell[$cellReference] = true;
                    }
                }
                for ($currentRow = 1; $currentRow <= $allRow; $currentRow++)
                {
                    $row = [];
                    for ($currentColumn = 0; $currentColumn < $allColumn; $currentColumn++)
                    {
                        ;
                        $cell = $objWorksheet->getCellByColumnAndRow($currentColumn, $currentRow);
                        $afCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn + 1);
                        $bfCol = PHPExcel_Cell::stringFromColumnIndex($currentColumn - 1);
                        $col = PHPExcel_Cell::stringFromColumnIndex($currentColumn);
                        $address = $col . $currentRow;
                        $value = $objWorksheet->getCell($address)->getValue();
                        if (substr($value, 0, 1) == '=')
                        {
                            return [
                                "error" => 0,
                                'message' => 'can not use the formula!'
                            ];
                            exit;
                        }
                        if ($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC)
                        {
                            $cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();
                            //                      $cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat();
                            //                        var_dump($cell->getCoordinate());
                            //                        exit();
                            $formatcode = $cellstyleformat->getFormatCode();
                            if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode))
                            {
                                $value = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
                            }
                            else
                            {
                                $value = PHPExcel_Style_NumberFormat::toFormattedString($value, $formatcode);
                            }
                        }
                        if ($isMergeCell[$col . $currentRow] && $isMergeCell[$afCol . $currentRow] && !empty($value))
                        {
                            $temp = $value;
                        }
                        elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$col . ($currentRow - 1)] && empty($value))
                        {
                            $value = $arr[$currentRow - 1][$currentColumn];
                        }
                        elseif ($isMergeCell[$col . $currentRow] && $isMergeCell[$bfCol . $currentRow] && empty($value))
                        {
                            $value = $temp;
                        }
                        $row[$currentColumn] = $value;
                    }
                    $arr[$currentRow] = $row;
                }
                $array[$i]["Content"] = $arr;
                $i++;
            }
            spl_autoload_register([
                'Think',
                'autoload'
            ]);//must, resolve ThinkPHP and PHPExcel conflicts
            unset($objWorksheet);
            unset($PHPReader);
            unset($PHPExcel);
            unlink($file);
            return [
                "error" => 1,
                "data" => $array
            ];
        }
public function import_upload(){
set_time_limit(900);
if(!empty($_FILES ['xls_path']['name'])){
$tmp_file = $_FILES ['xls_path']['tmp_name'];
$file_types = explode ( ".",$_FILES ['xls_path']['name']);
$file_type = $file_types[count($file_types) - 1];
$operator = $_SESSION[C('USER_AUTH_KEY')];
$import_id = time();

/*判别是不是.xls文件,判别是不是excel文件*/
if(!in_array(strtolower($file_type),array('xls','xlsx'))){
$this->error('不是Excel文件,重新上传');
}
if($_FILES['size']>2097152){
$this->error('上传文件大小不能超过2M');
}
/*设置上传路径*/
$savePath = substr($_SERVER['DOCUMENT_ROOT'],0,-8) . "upload_dir/update_goods/";

/*以时间来命名上传的文件*/
$str = date('Ymdhis');
$file_name = $str . "." . $file_type;

/*是否上传成功*/
if(!copy( $tmp_file, $savePath . $file_name)){
$this->error('上传失败');
}

$excel_row = $this->Execlimport($savePath.$file_name,strtolower($file_type));
if($excel_row['data'][0]['Rows']>1001){
$this->error('单次上传数据不能超过1000');
}
if($excel_row['error']==1){
// echo $excel_row['data'][0]['Cols'];
// var_dump($excel_row['data'][0]);
// if($excel_row['data'][0]['Cols']!=22){
// exit();
// //$this->error('数据列与模板不符,上传模板格式的数据表');
// }
$col_title = array(
0=>array('title'=>'序号'),
1=>array('title'=>'商品编号','name'=>'goods_bzno','required'=>1),
2=>array('title'=>'OMS编码','name'=>'goods_no','required'=>1),
3=>array('title'=>'一级分类','name'=>'cate','required'=>1,'type'=>'int'),
4=>array('title'=>'二级分类','name'=>'second_cate'),
5=>array('title'=>'三级分类','name'=>'three_cate'),
6=>array('title'=>'分类标签','name'=>'cate_tag'),
7=>array('title'=>'适合性别','name'=>'gender'),
8=>array('title'=>'商品名称','name'=>'goods_name','required'=>1),
9=>array('title'=>'尺寸','name'=>'size','required'=>0),
10=>array('title'=>'颜色','name'=>'color','required'=>0),
11=>array('title'=>'疯狂价','name'=>'crazy_price','required'=>1,'type'=>'double'),
12=>array('title'=>'柜台价','name'=>'shop_price','required'=>1,'type'=>'double'),
13=>array('title'=>'进货价','name'=>'buy_price','required'=>1,'type'=>'double'),
14=>array('title'=>'上下架','name'=>'is_putaway','required'=>1),
15=>array('title'=>'残次品','name'=>'is_defective'),
16=>array('title'=>'买手','name'=>'buyer','required'=>1),
17=>array('title'=>'供应商','name'=>'supplier_id','required'=>1),
18=>array('title'=>'批次','name'=>'bathch','required'=>0),
19=>array('title'=>'商品参数1','name'=>'param1','required'=>0),
20=>array('title'=>'商品参数2','name'=>'param2','required'=>0),
21=>array('title'=>'商品参数3','name'=>'param3','required'=>0),
22=>array('title'=>'商品参数4','name'=>'param4','required'=>0),
23=>array('title'=>'商品参数5','name'=>'param5','required'=>0),
24=>array('title'=>'商品参数6','name'=>'param6','required'=>0),
25=>array('title'=>'商品参数7','name'=>'param7','required'=>0),
26=>array('title'=>'商品参数8','name'=>'param8','required'=>0),
27=>array('title'=>'商品参数9','name'=>'param9','required'=>0),
28=>array('title'=>'商品参数10','name'=>'param10','required'=>0),
29=>array('title'=>'商品参数11','name'=>'param11','required'=>0),
30=>array('title'=>'商品参数12','name'=>'param12','required'=>0),
31=>array('title'=>'商品参数13','name'=>'param13','required'=>0),
32=>array('title'=>'商品参数14','name'=>'param14','required'=>0),
33=>array('title'=>'商品参数15','name'=>'param15','required'=>0),
34=>array('title'=>'商品参数16','name'=>'param16','required'=>0),
35=>array('title'=>'商品参数17','name'=>'param17','required'=>0),
36=>array('title'=>'商品参数18','name'=>'param18','required'=>0),
37=>array('title'=>'商品参数19','name'=>'param19','required'=>0),
38=>array('title'=>'商品参数20','name'=>'param20','required'=>0),
39=>array('title'=>'商品参数21','name'=>'param21','required'=>0),
40=>array('title'=>'商品参数22','name'=>'param22','required'=>0),
41=>array('title'=>'商品参数23','name'=>'param23','required'=>0),
42=>array('title'=>'商品参数24','name'=>'param24','required'=>0),
43=>array('title'=>'商品参数25','name'=>'param25','required'=>0),
44=>array('title'=>'商品参数26','name'=>'param26','required'=>0),
45=>array('title'=>'商品参数27','name'=>'param27','required'=>0),
46=>array('title'=>'商品参数28','name'=>'param28','required'=>0),
47=>array('title'=>'商品参数29','name'=>'param29','required'=>0),
48=>array('title'=>'商品参数30','name'=>'param30','required'=>0),
49=>array('title'=>'商品状态','name'=>'state','required'=>1)
);
//供应商
$supplier_arr = $this->supper_name_id();
//买手
$user_arr = $this->user_name_id();
//分类
$cate_arr = $this->cate_title_id();
//获取一、二、三级分类
$other_cate = $this->getOtherCate();
//获取所有分类标签
$cate_tags = $this->getCateTag();
//封装性别数组
$gender = array(
'' => 1,
'' => 2,
'中性' => 3,
''=> 4
);
//上下架
$putaway_arr = array('上架'=>1,'下架'=>0);
//是否残次
$defective_arr = array(''=>1,''=>0);
//商品状态
// $state_arr = array('首页上架'=>1,'列表页上架'=>2,'隐身上架'=>3,'下架'=>4);
$state_arr = array_flip($this->state_ary);
$excel_arr = array();
$goods_arr = array();
foreach($excel_row['data'][0]['Content'] as $key=>$value){
if($key==1){
foreach($value as $k=>$val){
if($col_title[$k]['title']!=$val){
$this->error('数据列与模板不符,上传失败');
}
}
}else{
// if(empty($value[1]) || empty($value[2])){
// continue;
// }
$row_arr = array();
$row_arr['goods_bzno'] = trim($value[1]);
$row_arr['goods_no'] = trim($value[2]);
if(empty($row_arr['goods_no'])){
$this->error('OMS编码不能为空!');
}
$row_arr['goods_name'] = trim($value[8]);
$row_arr['size'] = trim($value[9]);
$row_arr['color'] = trim($value[10]);
$row_arr['crazy_price'] = trim($value[11]);
$row_arr['shop_price'] = trim($value[12]);
$row_arr['buy_price'] = trim($value[13]);
$row_arr['bathch'] = trim($value[18]);
$i = 15;
$param_arr = array();
for($i=19;$i<49;$i++){
$row_arr['param'.($i-18)] = trim($value[$i]);
if(!empty($value[$i])){
$param_arr[] = trim($value[$i]);
}
}
// $row_arr['param1'] = $value[15];
// $row_arr['param2'] = $value[16];
// $row_arr['param3'] = $value[17];
// $row_arr['param4'] = $value[18];
// $row_arr['param5'] = $value[19];
// $row_arr['param6'] = $value[20];
// $param_arr = array();
// if(!empty($value[15])){
// $param_arr[] = $value[15];
// }
// if(!empty($value[16])){
// $param_arr[] = $value[16];
// }
// if(!empty($value[17])){
// $param_arr[] = $value[17];
// }
// if(!empty($value[18])){
// $param_arr[] = $value[18];
// }
// if(!empty($value[19])){
// $param_arr[] = $value[19];
// }
// if(!empty($value[20])){
// $param_arr[] = $value[20];
// }
$row_arr['goods_param'] = $param_arr;

$row_arr['cate_text'] = trim($value[3]);
$row_arr['is_putaway_text'] = trim($value[14]);
$row_arr['is_defective_text'] = trim($value[15]);
$row_arr['buyer_text'] = trim($value[16]);
$row_arr['supplier_id_text'] = trim($value[17]);
$row_arr['state_text'] = trim($value[49]);
$row_arr['cate'] = trim($other_cate[$value[3]]['id']);
$row_arr['second_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['id']);
$row_arr['three_cate'] = trim($other_cate[$value[3]]['item'][$value[4]]['item'][$value[5]]['id']);
if(empty($row_arr['cate']) || empty($row_arr['second_cate'])){
$this->error('请确认商品编号:'.$row_arr['goods_bzno'].'的一、二级分类是否存在!');
}
$row_arr['cate_tag'] = $cate_tags[$value[6]];
$row_arr['gender'] = !is_null($gender[$value[7]])?$gender[$value[7]]:0;
$row_arr['is_putaway'] = trim($putaway_arr[$value[14]]);
$row_arr['is_defective'] = trim($defective_arr[$value[15]]);
$row_arr['buyer'] = trim($user_arr[$value[16]]);
$row_arr['supplier_id'] = trim($supplier_arr[$value[17]]);
$row_arr['state'] = trim($state_arr[$value[49]]);
$goods_arr[] = trim($value[2]);

$excel_arr[$row_arr['goods_no']] = $row_arr;

}
}
}
//判断商品的适合性别是否合法
$gender_err = rtrim($gender_err,',');
if(!empty($gender_err)){
$this->error('OMS编码:'.$gender_err.' 商品适合性别不合法!');
}
/*
* 增加导入表与既存商品价格不一致时,给出提示并整张表不可导功能
*/
foreach ($excel_arr as $key => $value) {
$tmp_excel_str[] = $key;
}
$m_spec = M('Spec');
$spec_field = 'goods_no,crazy_price,goods_id';
$spec_map['goods_no'] = array('IN',$tmp_excel_str);
$s_spec_arr = $m_spec->field($spec_field)->where($spec_map)->group('goods_no')->select();
foreach ($s_spec_arr as $key => $value) {
$data_price[$value['goods_id']][$value['goods_no']] = $value['crazy_price'];
$check_goods_id[] = $value['goods_id'];
$check_goods_no[] = $value['goods_no'];
}
$error_goods_no = array_diff($tmp_excel_str, $check_goods_no);
if(!empty($error_goods_no)){
foreach ($error_goods_no as $key => $value) {
$err_goods_no .= $value.',';
}
$final_err = rtrim($err_goods_no,',');
$this->error('商品编码:'.$final_err.'不存在!');
}
//校验商品是否属于正式运营专题
$checkRs = $this->check_special_goods(array_unique($check_goods_id));
$this->assign('checkRs',$checkRs);
$e_goods = $excel_arr;
$m_goods = M('goods g');
$w_goods['s.goods_no'] = array('in',$goods_arr);
$j_goods = " inner join ".C('DB_PREFIX')."spec s on g.goods_id=s.goods_id ";
$j_goods .= " inner join ".C('DB_PREFIX')."goodscollect gc on g.goods_id=gc.goods_id and gc.type=0 ";
$f_goods = "g.goods_id,s.spec_id,g.goods_bzno,s.goods_no,g.goods_name,s.attr,s.skusize,s.color,s.crazy_price,s.shop_price,s.buy_price,g.bathch,g.goods_param,g.cate,g.second_cate,g.three_cate,g.cate_tag,g.gender,s.is_putaway,s.is_defective,g.buyer,g.supplier_id,gc.state,gc.status";
$l_goods = $m_goods->field($f_goods)->join($j_goods)->where($w_goods)->select();
$goods_excel = $msg_arr = $neq_msg_arr = $neq_price_arr = array();
$goods_price = array();
$status_arr = array(3,5);
foreach($l_goods as $key=>$value){
unset($e_goods[$value['goods_no']]);
//赋值
$neq_m_arr = $m_arr = $g_arr = array();
$g_arr['spec_id'] = $value['spec_id'];
$g_arr['goods_id'] = $value['goods_id'];
$g_arr['goods_bzno'] = $value['goods_bzno'];
$g_arr['goods_no'] = $value['goods_no'];
$g_arr['cate'] = $value['cate'];
$g_arr['second_cate'] = $value['second_cate'];
$g_arr['three_cate'] = $value['three_cate'];
$g_arr['cate_tag'] = $value['cate_tag'];
$g_arr['gender'] = $value['gender'];
$g_arr['goods_name'] = $value['goods_name'];
$g_arr['color'] = $value['color'];
$g_arr['skusize'] = $value['skusize'];
$g_arr['attr'] = $value['attr'];
$g_arr['crazy_price'] = $value['crazy_price'];
$g_arr['shop_price'] = $value['shop_price'];
$g_arr['buy_price'] = $value['buy_price'];
$g_arr['is_putaway'] = $value['is_putaway'];
$g_arr['is_defective'] = $value['is_defective'];
$g_arr['buyer'] = $value['buyer'];
$g_arr['supplier_id'] = $value['supplier_id'];
$g_arr['bathch'] = $value['bathch'];
$g_arr['goods_param'] = $value['goods_param'];
$g_arr['state'] = $value['state'];
$g_arr['status'] = $value['status'];
$g_arr['im_cate'] = $excel_arr[$value['goods_no']]['cate'];
$g_arr['im_second_cate'] = !empty($excel_arr[$value['goods_no']]['second_cate'])?$excel_arr[$value['goods_no']]['second_cate']:0;
$g_arr['im_three_cate'] = !empty($excel_arr[$value['goods_no']]['three_cate'])?$excel_arr[$value['goods_no']]['three_cate']:0;
$g_arr['im_cate_tag'] = !empty($excel_arr[$value['goods_no']]['cate_tag'])?$excel_arr[$value['goods_no']]['cate_tag']:0;
$g_arr['im_gender'] = $excel_arr[$value['goods_no']]['gender'];
$g_arr['im_goods_name'] = $excel_arr[$value['goods_no']]['goods_name'];
$g_arr['im_color'] = $excel_arr[$value['goods_no']]['color'];
$g_arr['im_skusize'] = $excel_arr[$value['goods_no']]['size'];
$attr2 = array();
if(empty($excel_arr[$value['goods_no']]['color'])){
if(!empty($excel_arr[$value['goods_no']]['size'])){
$attr2['skuSize'] = $excel_arr[$value['goods_no']]['size'];
}
}else{
$attr2['color'] = $excel_arr[$value['goods_no']]['color'];
if(!empty($excel_arr[$value['goods_no']]['size'])){
$attr2['skuSize'] = $excel_arr[$value['goods_no']]['size'];
}
}
if(!isset($goods_price[$value['goods_id']])){
$goods_price[$value['goods_id']] = $excel_arr[$value['goods_no']]['crazy_price'];
}

$g_arr['im_attr'] = serialize($attr2);
$g_arr['im_crazy_price'] = $excel_arr[$value['goods_no']]['crazy_price'];
$g_arr['im_shop_price'] = $excel_arr[$value['goods_no']]['shop_price'];
$g_arr['im_buy_price'] = $excel_arr[$value['goods_no']]['buy_price'];
$g_arr['im_is_putaway'] = $excel_arr[$value['goods_no']]['is_putaway'];
$g_arr['im_is_defective'] = $excel_arr[$value['goods_no']]['is_defective'];
$g_arr['im_buyer'] = $excel_arr[$value['goods_no']]['buyer'];
$g_arr['im_supplier_id'] = $excel_arr[$value['goods_no']]['supplier_id'];
$g_arr['im_bathch'] = $excel_arr[$value['goods_no']]['bathch'];
$g_arr['im_goods_param'] = serialize($excel_arr[$value['goods_no']]['goods_param']);
$g_arr['im_state'] = $excel_arr[$value['goods_no']]['state'];
if(in_array($value['status'],$status_arr)){
$g_arr['im_status'] = 2;
$g_arr['im_post_checktime'] = time();
}else{
$g_arr['im_status'] = $value['status'];
$g_arr['im_post_checktime'] = 0;
}
$g_arr['operator'] = $operator;
$g_arr['import_id'] = $import_id;
//验证是否必填,验证是否已经有值
if(!empty($excel_arr[$value['goods_no']]['cate']) && !empty($excel_arr[$value['goods_no']]['cate_text'])){ //所属分类
if(!empty($value['cate'])){
$m_arr['cate']['ct'] = 1;
}
}else{
if(empty($value['cate'])){
$neq_m_arr['cate']['neq'] = 1;
}else{
$g_arr['im_cate'] = $value['cate'];
}
}
if(!empty($excel_arr[$value['goods_no']]['goods_name'])){ //商品名称
if(!empty($value['goods_name'])){
$m_arr['goods_name']['ct'] = 1;
}
}else{
if(empty($value['goods_name'])){
$neq_m_arr['goods_name']['neq'] = 1;
}else{
$g_arr['im_goods_name'] = $value['goods_name'];
}
}
$attr = unserialize($value['attr']);
if(!empty($excel_arr[$value['goods_no']]['size'])){ //尺寸
if(!empty($attr['skuSize'])){
$m_arr['size']['ct'] = 1;
}
}
if(!empty($excel_arr[$value['goods_no']]['color'])){ //颜色
if(!empty($attr['color'])){
$m_arr['color']['ct'] = 1;
}
}
if((empty($excel_arr[$value['goods_no']]['size']) && empty($excel_arr[$value['goods_no']]['color'])) && (!empty($attr['skuSize']) || !empty($attr['color']))){
$attr1 = array();
// var_dump($attr);
if(empty($attr['color'])){
if(!empty($attr['skuSize'])){
$attr1['skuSize'] = $attr['skuSize'];
}
}else{
$attr1['color'] = $attr['color'];
if(!empty($attr['skuSize'])){
$attr1['skuSize'] = $attr['skuSize'];
}
}
$g_arr['im_attr'] = serialize($attr1);
}
if(!empty($excel_arr[$value['goods_no']]['crazy_price'])){ //疯狂价
if(!empty($value['crazy_price'])){
$m_arr['crazy_price']['ct'] = 1;
}
if(!is_numeric($excel_arr[$value['goods_no']]['crazy_price'])){
$neq_m_arr['crazy_price']['n_int'] = 1;
}
if(!isset($neq_price_arr[$value['goods_bzno']])){
if($goods_price[$value['goods_id']]!=$excel_arr[$value['goods_no']]['crazy_price']){
$neq_price_arr[$value['goods_bzno']] = 1;
}
}
//if($goods_excel[$value['spec_id']]['im_crazy_price'])
}else{
if(empty($value['crazy_price'])){
$neq_m_arr['crazy_price']['neq'] = 1;
}else{
$g_arr['im_crazy_price'] = $value['crazy_price'];
}
}
if(!empty($excel_arr[$value['goods_no']]['shop_price'])){ //柜台价
if(!empty($value['shop_price'])){
$m_arr['shop_price']['ct'] = 1;
}
if(!is_numeric($excel_arr[$value['goods_no']]['shop_price'])){
$neq_m_arr['shop_price']['n_int'] = 1;
}
}else{
if(empty($value['shop_price'])){
$neq_m_arr['shop_price']['neq'] = 1;
}else{
$g_arr['im_shop_price'] = $value['shop_price'];
}
}
if(!empty($excel_arr[$value['goods_no']]['buy_price'])){ //进货价
if(!empty($value['buy_price'])){
$m_arr['buy_price']['ct'] = 1;
}
if(!is_numeric($excel_arr[$value['goods_no']]['buy_price'])){
$neq_m_arr['buy_price']['n_int'] = 1;
}
}else{
if(empty($value['buy_price'])){
$neq_m_arr['buy_price']['neq'] = 1;
}else{
$g_arr['im_buy_price'] = $value['buy_price'];
}
}
if((!empty($excel_arr[$value['goods_no']]['is_putaway']) || $excel_arr[$value['goods_no']]['is_putaway'] == 0) && !empty($excel_arr[$value['goods_no']]['is_putaway_text'])){ //上下架
if(!empty($value['is_putaway']) || $value['is_putaway'] ==0){
$m_arr['is_putaway']['ct'] = 1;
}
}else{
if(empty($value['is_putaway']) && $value['is_putaway'] != 0){
$neq_m_arr['is_putaway']['neq'] = 1;
}else{
$g_arr['im_is_putaway'] = $value['is_putaway'];
}
}
if((!empty($excel_arr[$value['goods_no']]['is_defective']) || $excel_arr[$value['goods_no']]['is_defective'] == 0) && !empty($excel_arr[$value['goods_no']]['is_defective_text'])){ //是否残次
if(!empty($value['is_defective']) || $value['is_defective'] ==0){
$m_arr['is_defective']['ct'] = 1;
}
}else{
$g_arr['im_is_defective'] = $value['is_defective'];
}
if(!empty($excel_arr[$value['goods_no']]['buyer']) && !empty($excel_arr[$value['goods_no']]['buyer_text'])){ //买手
if(!empty($value['buyer'])){
$m_arr['buyer']['ct'] = 1;
}
}else{
if(empty($value['buyer'])){
$neq_m_arr['buyer']['neq'] = 1;
}else{
$g_arr['im_buyer'] = $value['buyer'];
}
}
if(!empty($excel_arr[$value['goods_no']]['supplier_id']) && !empty($excel_arr[$value['goods_no']]['supplier_id_text'])){ //供应商
if(!empty($value['supplier_id'])){
$m_arr['supplier_id']['ct'] = 1;
}
}else{
if(empty($value['supplier_id'])){
$neq_m_arr['supplier_id']['neq'] = 1;
}else{
$g_arr['im_supplier_id'] = $value['supplier_id'];
}
}
if(!empty($excel_arr[$value['goods_no']]['bathch'])){ //批次
if(!empty($value['bathch'])){
$m_arr['bathch']['ct'] = 1;
}
}else{
if(!empty($value['bathch'])){
$g_arr['im_bathch'] = $value['bathch'];
}
}
if(!empty($excel_arr[$value['goods_no']]['goods_param'])){ //参数
$goods_param = unserialize($value['goods_param']);
if(!empty($value['goods_param'])){
$m_arr['goods_param']['ct'] = 1;
}
}else{
if(!empty($value['goods_param'])){
$g_arr['im_goods_param'] = $value['goods_param'];
}
}
if(!empty($excel_arr[$value['goods_no']]['state']) && !empty($excel_arr[$value['goods_no']]['state_text'])){ //商品状态
if(!empty($value['state'])){
$m_arr['state']['ct'] = 1;
}
}else{
if(empty($value['state'])){
$neq_m_arr['state']['neq'] = 1;
}else{
$g_arr['im_state'] = $excel_arr[$value['goods_no']]['state'];
}
}

if(!empty($m_arr)){
$msg_arr[$value['goods_no']] = $m_arr;
}
if(!empty($neq_m_arr)){
$neq_msg_arr[$value['goods_no']] = $neq_m_arr;
}
$goods_excel[$value['spec_id']] = $g_arr;
$data_excel_goods[$value['goods_id']][$value['goods_no']] = $excel_arr[$value['goods_no']]['crazy_price'];
}
if(!empty($msg_arr)){
$m_edit_goods = M('edit_goods');
$w_edit_goods['operator'] = $operator;
if($m_edit_goods->where($w_edit_goods)->delete()!==false){
$data = $goods_excel;
sort($data);
//导入表与既存商品价格不一致时,给出提示并整张表不可导。
foreach ($data_excel_goods as $key => $value) {
if(isset($data_price[$key])){
$price_diff[$key] = $data_excel_goods[$key]+$data_price[$key];
}
}
foreach ($price_diff as $k => $v) {
if(count(array_unique($price_diff[$k])) > 1){
$this->error('商品ID'.$k.'所属SKU价格不一致');
}
}
if($m_edit_goods->addAll($data)===false){
$this->error('上传失败,创建备份失败!');
}
}else{
$this->error('上传失败,清除历史备份失败!');
}
}
$yz_arr = array(
'ct'=>array(
'cate'=>'分类',
'goods_name'=>'商品名称',
'size'=>'尺寸',
'color'=>'颜色',
'crazy_price'=>'疯狂价',
'shop_price'=>'柜台价',
'buy_price'=>'进货价',
'is_putaway'=>'上下架',
'is_defective'=>'残次品',
'buyer'=>'买手',
'supplier_id'=>'供应商',
'bathch'=>'批次',
'goods_param'=>'商品参数',
'state'=>'商品状态'
),
'neq'=>array(
'cate'=>'分类',
'goods_name'=>'商品名称',
'crazy_price'=>'疯狂价',
'shop_price'=>'柜台价',
'buy_price'=>'进货价',
'is_putaway'=>'上下架',
'buyer'=>'买手',
'supplier_id'=>'供应商',
'state'=>'商品状态'
),
'n_int'=>array(
'crazy_price'=>'疯狂价',
'shop_price'=>'柜台价',
'buy_price'=>'进货价'
)
);
$this->assign('yz_arr',$yz_arr);
$this->assign('msg_arr',$msg_arr);
$this->assign('neq_msg_arr',$neq_msg_arr);
$this->assign('neq_price_arr',$neq_price_arr);
$this->assign('goods_excel',$goods_excel);
$this->assign('e_goods',$e_goods);
$this->assign('import_id',$import_id);
$this->display();
}
}
原文地址:https://www.cnblogs.com/wicub/p/5948456.html