zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    下拉菜单的option的value属性值问题
    GDAL1.9.1 IN VS2008 C#中的编译及使用
    多表连接 去重
    【示例代码】HTML+JS 画图板源码分享
    Winet API 支持HTTPP/SOCKS代理
    入门Html
    关于CDC在非控件类中的使用
    The document "ViewController.xib" could not be opened. Could not read archive.
    华为的一道题
    [置顶] WEBSOKET服务器搭建
  • 原文地址:https://www.cnblogs.com/wicub/p/5948456.html
Copyright © 2011-2022 走看看