order_status = C('ORDER_STATUS');
        $this->pay_status = C('PAY_STATUS');
        $this->shipping_status = C('SHIPPING_STATUS');
//        $sql="SELECT a.*,b.shipping_code,b.shipping_name,b.shipping_logo FROM  __PREFIX__store_shipping a ";
//        $sql.="left join   __PREFIX__shipping b on a.shipping_id=b.shipping_id where a.store_id=1";
//        $shipping_status = DB::query($sql);
        // 订单 支付 发货状态
        $this->assign('order_status',$this->order_status);
        $this->assign('pay_status',$this->pay_status);
        $this->assign('shipping_status',$this->shipping_status);
    }
    /*
     *订单首页
     */
    public function index(){
    	$begin = date('Y/m/d',strtotime("-1 month"));//30天前
    	$end = date('Y/m/d',strtotime('+1 days'));
        $day =  trim(I('day',""));
        if ($day=="1")
        {
            $begin= date('Y/m/d');
            $end = date('Y/m/d',strtotime('+1 days'));
        }
//    	$this->assign('timegap',$begin.'-'.$end);
        $this->assign('timegap','');
        $consignee = I('consignee');
        $pay_status = I('pay_status');
        $keytype = I('keytype');
        $timetype = I('timetype');
        $order_status =  I('order_status');
        $keywords = urldecode(urldecode(I('keywords')));
        $getp=I('p');
        //自动评价
        $this->autopj();
        //
        $shipping_status = I('shipping_status');
        $exp_type = I('exp_type');
        $picksle_type = I('picksle_type');
        $picksle = I('picksle');
        $add_time_begin= urldecode(urldecode(I('add_time_begin')));
        $add_time_end= urldecode(urldecode(I('add_time_end')));
        $goodstype = I("goodstype");
        $goodskey = I('goodskey','','trim');
        $oldurl=array(
            "consignee"=>$consignee,
            "pay_status"=>$pay_status,
            "keytype"=>$keytype,
            "timetype"=>$timetype,
            "keywords"=>$keywords,
            "goodstype"=>$goodstype,
            "goodskey"=>$goodskey,
            "shipping_status"=>$shipping_status,
            "exp_type"=>$exp_type,
            "order_status"=>$order_status,
            "picksle_type"=>$picksle_type,
            "picksle"=>$picksle,
            "add_time_begin"=>$add_time_begin,
            "add_time_end"=>$add_time_end,
            "p"=>$getp
        );
        $this->assign('oldurl',$oldurl);
        return $this->fetch('',getAdmStoId());
    }
    //自动评价
    public function  autopj()
    {
        $getstoid=getAdmStoId();
        $is_autopj = 0;
        $tp_config = tpCache('shopping', $getstoid);
        $is_autopj = $tp_config['is_autopj'];
        //是否开启自动评价
        if ($is_autopj==1) {
            $auto_pjday = $tp_config['auto_pjday'];
            $auto_pjremark = $tp_config['auto_pjremark'];
            $logic = new \app\home\logic\UsersLogic();
            //几天前
            $et=strtotime('-'.$auto_pjday.' day');
            $sql = "select  a.store_id,a.order_id,a.is_comment,a.goods_id,b.confirm_time,b.user_id,b.consignee,b.mobile from wxd_order_goods a left join wxd_order b on a.order_id=b.order_id where a.store_id=" . $getstoid . " and a.is_comment=0 and b.order_status=2 and b.shipping_status=1 and b.confirm_time>0 and b.confirm_time<" . $et." LIMIT 20";
            $auto_order = DB::query($sql);
            foreach ($auto_order as $key => $value) {
                $add['goods_id'] = $value['goods_id'];
                if ($value['consignee'])
                {
                    $add['username'] = $value['consignee'];
                }
                else
                {
                    $add['username'] = $value['mobile'];
                }
                $add['content'] = $auto_pjremark;
                $add['deliver_rank'] = 5;
                $add['add_time'] = time();
                $add['ip_address'] = getIP();
                $add['is_show'] = 1;
                $add['user_id'] = $value['user_id'];
                $add['order_id'] = $value['order_id'];
                $add['goods_rank'] = 5;
                $add['service_rank'] = 5;
                $add['isauto'] = 1;
                $add['store_id'] = $getstoid;
                //添加评论
                $row = $logic->add_comment($add);
            }
        }
    }
    /*
     *Ajax首页
     */
    public function ajaxindex(){
        $orderLogic = new OrderLogic();
        $timegap = I('timegap');
        if($timegap){
        	$gap = explode('-', $timegap);
        	$begin = strtotime($gap[0]);
        	$end = strtotime($gap[1]);
        }
        if (I('add_time_begin') && I('add_time_end')) {
            //@new 新后台UI参数
            $begin = strtotime(I('add_time_begin'));
            $end = strtotime(I('add_time_end'));
        }
        // 搜索条件
        $condition = array();
        $keyType = I("keytype");
        $timetype = I("timetype");
        $keywords = I('keywords','','trim');
        $goodstype = I("goodstype");
        $goodskey = I('goodskey','','trim');
        $ispj = I('ispj');
        $consignee =  ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim');
        $consignee ? $condition['a.consignee'] = trim($consignee) : false;
        if($begin && $end){
            switch ($timetype)
            {
                case  "1":
                    $condition['a.add_time'] = array('between',"$begin,$end");
                    break;
                case  "2":
                    $condition['a.erp_givetime'] = array('between',"$begin,$end");
                    break;
            }
        }
        $stoid=getAdmStoId();
        $condition['a.store_id']= $stoid;
        if ($keyType && $keywords)
        {
            switch ($keyType)
            {
                case  "1":
                    $condition['a.order_sn']=trim($keywords);
                    break;
                case  "2":
                    $condition['c.mobile']=trim($keywords);
                    break;
            }
        }
//        I('order_status') != '' ? $condition['order_status'] = I('order_status') : false; //订单状态
        $order_status=I('order_status');
        if($order_status=="")
        {
            I('pay_status') != '' ? $condition['a.pay_status'] = I('pay_status') : false; //是否支付
            I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
            I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : false; //是否发货
            upload_ylp_log('B06所有订单查询/搜索');
        }
        else
        {
            switch ($order_status)
            {
                case 0:      //待付款
                    $condition['a.order_status'] = 0;
                    $condition['a.pay_status'] =0;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    upload_ylp_log('B07待付款查询/搜索');
                    break;
                case 1:      //待发货
                    $condition['a.pay_status'] =1;
                    $condition['a.order_status'] = ['in','0,1'];
                    $condition['a.shipping_status'] =0;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    break;
                case 11:     //待收货
                    $condition['a.order_status'] = 1;
                    I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : $condition['shipping_status'] = ['in','1,2']; //是否发货
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    upload_ylp_log('B08待收货查询/搜索');
                    break;
                case 2:     //已收货
                    $condition['a.order_status'] = 2;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    upload_ylp_log('B09已收货查询/搜索');
                    break;
                case 3:      //已取消
                    $condition['a.order_status'] = I('order_status');
                    break;
                case 4:      //已完成(包含待评价,已评价)
                    if ($ispj)
                    {
                        $condition['a.order_status'] =$ispj;
                    }
                    else {
                        $condition['a.order_status'] = array('in', '2,4');
                    }
                    upload_ylp_log('B10已完成查询/搜索');
                    break;
                case 5:      //已作废
                    $condition['a.order_status'] = I('order_status');
                    upload_ylp_log('B11已作废查询/搜索');
                    break;
            }
        }
        $pt_status=I('pt_status');
        switch ($pt_status){
            case 1://失败
                $condition['a.pt_status'] =3;
                break;
            case 2://待成团
                $condition['a.pt_status'] =1;
                break;
            case 3://已成团
                $condition['a.pt_status'] =['in','2,4,5'];
                break;
        }
        /*--订单列表--*/
        $picksle=trim(I('picksle'));
        $pstype=I('picksle_type');
        $user_id=I('user_id/d');
        $where="1=1";
        if($picksle){
            if($pstype)
                $where .= " AND b.pickup_name='".$picksle."'";
            else
                $where .= " AND b.pickup_no='".$picksle."'";
        }
        if($user_id){
            $where .= " AND a.user_id=".$user_id;
        }
        //I('user_id/d') ? $condition['a.user_id'] = trim(I('user_id')) : false;
        $sort_order = I('order_by','order_id DESC').' '.I('sort');
        //查询商品信息
        if ($goodskey)
        {
            $sear_field="goods_sn";
            switch ($goodstype)
            {
                case 1:
                    $sear_field="goods_sn";
                    break;
                case 2:
                    $sear_field="sku";
                    break;
                default:
                    break;
            }
            $where.="  and EXISTS (SELECT * FROM wxd_order_goods b left join wxd_goods g on b.goods_id=g.goods_id  WHERE  b.order_id=a.order_id and g.".$sear_field."='".$goodskey."')  ";
        }
        $count = M('order')->alias('a')
            ->join('(select pickup_id,pickup_name,pickup_no from  wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left')
            ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left')
            ->where($condition)->where($where)->count('a.order_id');
        $Page  = new AjaxPage($count,10);
        //  搜索条件下 分页赋值
        foreach($condition as $key=>$val) {
            if($key == 'add_time'){
                $between_time = explode(',',$val[1]);
                $parameter_add_time = date('Y/m/d',$between_time[0]) . '-' . date('Y/m/d',$between_time[1]);
                $Page->parameter['timegap'] = $parameter_add_time;
            }
//            else if($key == 'shipping_status' && $val==3)
//            {
//                $Page->parameter[$key]   =  "> 0";
//            }
            else{
                if(is_array($val))
                {
                    $val='';
                }
                $Page->parameter[$key]   =  urlencode($val);
            }
        }
        //获取订单列表
        //$orderList = $orderLogic->getOrderList($condition,$sort_order,$Page->firstRow,$Page->listRows);
        $show = $Page->show();
        $start=$Page->firstRow;
        $page_size=$Page->listRows;
        $orderList= M('order')->alias('a')
            ->join('(select pickup_name,pickup_id,pickup_no from wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left')
            ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left')
            ->where($condition)->where($where)->limit("$start,$page_size")->order($sort_order)
            ->field('a.order_id,a.order_sn,a.add_time,a.total_amount,a.pay_code,a.pay_status,a.erp_givetime,a.order_status,a.shipping_status,a.exp_type,a.user_note,a.consignee,a.province,a.city,a.district,a.shipping_name,a.address,a.shipping_price,a.is_zsorder,a.pt_status,    a.pt_tail_money,b.pickup_name,b.pickup_no,c.mobile,c.user_id')
            ->select();
        $order_id_arr = get_arr_column($orderList, 'order_id');
        if (!empty($order_id_arr)) {
                $goods_arr = array();
                foreach ($order_id_arr as $k=>$v) {
                    $goods_list = M('order_goods')->alias('a')
                        ->join('(select goods_id,original_img from wxd_goods where store_id='.$stoid.') b','a.goods_id=b.goods_id')
                        ->where('a.order_id',$v)
                        ->field('a.store_id,a.goods_id,a.goods_sn,a.goods_name,a.goods_price,a.prom_type,a.goods_num,a.is_distri,b.original_img')->select();
                    $goods_arr[$v]= $goods_list;
                    unset($goods_list);
                }
                $this->assign('goodsArr', $goods_arr);
        }
        foreach ($orderList as $kk=>$vv){
            $order_status_arr = C('ORDER_STATUS_DESC');
            $order_status_code = orderStatusDesc(0, $vv); // 订单状态显示给用户看的
            $orderList[$kk]['order_status_desc'] = $order_status_arr[$order_status_code];
            //if($vv['order_status']!=3) {
                //if (empty($orderList[$kk]['order_status_desc']) || $orderList[$kk]['order_status_desc'] == '已取消') {
                 switch ($vv['pt_status']) {
                        case "1":
                            $orderList[$kk]['order_status_desc'] = "待成团";
                            break;
                        case "2":
                            if ($vv['is_zsorder'] == 4)
                                $orderList[$kk]['order_status_desc'] = "待付尾款";
                            //else
                                //$orderList[$kk]['order_status_desc'] = "已成团";
                            break;
                        case "3":
                            $orderList[$kk]['order_status_desc'] = "拼团失败";
                            break;
                        case "6":
                            $orderList[$kk]['order_status_desc'] = "未付尾款";
                            break;
                    }
                //}
            //}
            //物流
            if ($orderList[$kk]['exp_type']=="0") {
                $orderLogic = new OrderLogic();
                $orderList[$kk]['address2'] = $orderLogic->getAddressName($orderList[$kk]['province'], $orderList[$kk]['city'], $orderList[$kk]['district']);
                $orderList[$kk]['address2'] = $orderList[$kk]['address2'] . $orderList[$kk]['address'];
            }else
            {
                $orderList[$kk]['address2']="";
            }
        }
        $this->assign('orderList',$orderList);
        $this->assign('page',$show);// 赋值分页输出
        $this->assign('pager',$Page);
        $consignee = I('consignee');
        $pay_status = I('pay_status');
        $keytype = I('keytype');
        $keywords = urldecode(urldecode(I('keywords')));
        $getp=I('p');
        $shipping_status = I('shipping_status');
        $exp_type = I('exp_type');
        $picksle_type = I('picksle_type');
        $picksle = I('picksle');
        $order_status=I('order_status');
        $add_time_begin=I('add_time_begin');
        $add_time_end=I('add_time_end');
        $oldurl=U('Admin/Order/index',array(
            "consignee"=>$consignee,
            "pay_status"=>$pay_status,
            "keytype"=>$keytype,
            "timetype"=>timetype,
            "keywords"=>$keywords,
            "shipping_status"=>$shipping_status,
            "exp_type"=>$exp_type,
            "picksle_type"=>$picksle_type,
            "picksle"=>$picksle,
            "add_time_begin"=>$add_time_begin,
            "add_time_end"=>$add_time_end,
            "order_status"=>$order_status,
            "p"=>$getp
        ));
        $this->assign('order_status',$order_status);
        $this->assign('oldurl',urlencode($oldurl));
//        upload_ylp_log('订单列表');
        return $this->fetch('',getAdmStoId());
    }
    //导出添加商品编号
    public function exportreport()
    {
        $timegap = I('timegap');
        if($timegap){
            $gap = explode('-', $timegap);
            $begin = strtotime($gap[0]);
            $end = strtotime($gap[1]);
        }
        if (I('add_time_begin') && I('add_time_end')) {
            //@new 新后台UI参数
            $begin = strtotime(I('add_time_begin'));
            $end = strtotime(I('add_time_end'));
        }
        // 搜索条件
        $condition = array();
        $keyType = I("keytype");
        $timetype = I("timetype");
        $keywords = I('keywords','','trim');
        $goodstype = I("goodstype");
        $goodskey = I('goodskey','','trim');
        $ispj = I('ispj');
        $consignee =  ($keyType && $keyType == 'consignee') ? $keywords : I('consignee','','trim');
        $consignee ? $condition['a.consignee'] = trim($consignee) : false;
        if($begin && $end){
            switch ($timetype)
            {
                case  "1":
                    $condition['a.add_time'] = array('between',"$begin,$end");
                    break;
                case  "2":
                    $condition['a.erp_givetime'] = array('between',"$begin,$end");
                    break;
            }
        }
        $stoid=getAdmStoId();
        $condition['a.store_id']= $stoid;
        if ($keyType && $keywords)
        {
            switch ($keyType)
            {
                case  "1":
                    $condition['a.order_sn']=trim($keywords);
                    break;
                case  "2":
                    $condition['c.mobile']=trim($keywords);
                    break;
            }
        }
        $order_status=I('order_status');
        if($order_status=="")
        {
            I('pay_status') != '' ? $condition['a.pay_status'] = I('pay_status') : false; //是否支付
            I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
            I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : false; //是否发货
        }
        else
        {
            switch ($order_status)
            {
                case 0:      //待付款
                    $condition['a.order_status'] = 0;
                    $condition['a.pay_status'] =0;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    break;
                case 1:      //待发货
                    $condition['a.pay_status'] =1;
                    $condition['a.order_status'] = ['in','0,1'];
                    $condition['a.shipping_status'] =0;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    break;
                case 11:     //待收货
                    $condition['a.order_status'] = 1;
                    I('shipping_status') != '' ? $condition['a.shipping_status'] = I('shipping_status') : $condition['shipping_status'] = ['in','1,2']; //是否发货
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    break;
                case 2:     //已收货
                    $condition['a.order_status'] = 2;
                    I('exp_type') != '' ? $condition['a.exp_type'] = I('exp_type') : false;   //配送方式
                    break;
                case 3:      //已取消
                    $condition['a.order_status'] = I('order_status');
                    break;
                case 4:      //已完成
                    if ($ispj)
                    {
                        $condition['a.order_status'] =$ispj;
                    }
                    else {
                        $condition['a.order_status'] = array('in', '2,4');
                    }
                    break;
                case 5:      //已作废
                    $condition['a.order_status'] = I('order_status');
                    break;
            }
        }
        /*--订单列表--*/
        $picksle=trim(I('picksle'));
        $pstype=I('picksle_type');
        $where="1=1";
        if($picksle){
            if($pstype)
                $where .= " AND b.pickup_name='".$picksle."'";
            else
                $where .= " AND b.pickup_no='".$picksle."'";
        }
        //查询商品信息
        if ($goodskey)
        {
            $sear_field="goods_sn";
            switch ($goodstype)
            {
                case 1:
                    $sear_field="goods_sn";
                    break;
                case 2:
                    $sear_field="sku";
                    break;
                default:
                    break;
            }
            $where.="  and EXISTS (SELECT * FROM wxd_order_goods b left join wxd_goods g on b.goods_id=g.goods_id  WHERE  b.order_id=a.order_id and g.".$sear_field."='".$goodskey."')  ";
        }
        I('user_id') ? $condition['a.user_id'] = trim(I('user_id')) : false;
        $sort_order =" a.add_time desc";
        $orderList= M('order')->alias('a')
            ->join('(select user_id,mobile from wxd_users where store_id='.$stoid.') c','a.user_id=c.user_id','left')
            ->join('(select pickup_name,pickup_id,pickup_no,pickup_address from wxd_pick_up where store_id='.$stoid.') b','a.pickup_id=b.pickup_id','left')
            ->where($condition)
            ->where($where)
            ->field("a.admin_note,a.is_zsorder,a.order_id,a.shipping_name,a.consignee,a.mobile,a.goods_price,a.shipping_price,b.pickup_address,b.pickup_no,b.pickup_name,a.exp_type,a.order_status,a.shipping_status,a.pay_status,a.pt_status,a.order_sn,FROM_UNIXTIME(a.add_time) as add_time,a.pay_time,FROM_UNIXTIME(a.pay_time) as pay_time1,a.erp_givetime,a.total_amount,IFNULL(CONCAT(IFNULL(a.more_address,''),a.address),'') as ADDRESS,a.expressno,a.user_note")
            ->order($sort_order)->select();
        foreach ($orderList as $kk=>$vv){
            $order_status_arr = C('ORDER_STATUS_DESC');
            $order_status_code = orderStatusDesc(0, $vv); // 订单状态显示给用户看的
            $orderList[$kk]['order_status_desc'] = $order_status_arr[$order_status_code];
        }
        $strTable = '
';
        $strTable .= '';
        $strTable .= '| 订单号';
        $strTable .= ' | 下单时间';
        $strTable .= ' | 付款时间';
        $strTable .= ' | POS调单时间';
        $strTable .= ' | 收件人';
        // $strTable .= ' | 数量';
        $strTable .= ' | 金额';
        $strTable .= ' | 邮费';
        $strTable .= ' | 总金额';
        $strTable .= ' | 状态';
        $strTable .= ' | 电话';
        $strTable .= ' | 收货地址';
        $strTable .= ' | 配送方式';
        $strTable .= ' | 物流单号';
        $strTable .= ' | 配送公司';
        $strTable .= ' | 门店编号';
        $strTable .= ' | 门店名称';
        $strTable .= ' | 备注';
        $strTable .= ' | 管理员备注';
        $strTable .= ' | 商品详情';
        $strTable .= ' | 
';
        $strTable .= '';
        $strTable .= '| 商品编号';
        $strTable .= ' | 商品条码';
        $strTable .= ' | 商品名称';
        $strTable .= ' | 数量';
        $strTable .= ' | 单价';
        $strTable .= ' | 
';
        if (is_array($orderList)) {
            foreach ($orderList as $k => $val) {
                switch ($val['pt_status']) {
                    case "1":
                        $val['order_status_desc'] = "待成团";
                        break;
                    case "2":
                        if ($val['is_zsorder'] == 4)
                            $val['order_status_desc']= "待付尾款";
                        break;
                    case "3":
                        $val['order_status_desc']= "拼团失败";
                        break;
                    case "6":
                        $val['order_status_desc'] = "未付尾款";
                        break;
                }
                $res_goods = M('order_goods')->alias('a')
                    ->join("goods b","a.goods_id=b.goods_id",'left')
                    ->where(array('a.store_id' => getAdmStoId(), 'a.order_id' => $val['order_id']))
                    ->field("a.*,b.sku")
                    ->select();
                $getgoodsnum=count($res_goods);
                if ($getgoodsnum>1)
                {
                    $getrowspan='rowspan="'.$getgoodsnum.'"';
                }
                else
                {
                    $getrowspan="";
                }
                $strTable .= '';
                $strTable .= '| ' . $val['order_sn'] . '';
                $strTable .= ' | ' . $val['add_time'] . '';
                $strTable .= ' | ' .($val['pay_time']=="0"?'':$val['pay_time1']). '';
                $strTable .= ' | ' .($val['erp_givetime']=="0"?'':date('Y-m-d H:i:s',$val['erp_givetime'])). '';
                $strTable .= ' | ' . $val['consignee'] . '';
                // $strTable .= ' | ' . $val['goods_num'] . '';
                $strTable .= ' | ' . $val['goods_price'] . '';
                $strTable .= ' | ' . $val['shipping_price'] . '';
                $strTable .= ' | ' . $val['total_amount'] . '';
                $strTable .= ' | ' . $val['order_status_desc'] . '';
                $strTable .= ' | ' . $val['mobile'] . '';
                $strTable .= ' | ' . $val['ADDRESS'] . '';
                $strTable .= ' | ' . ($val['exp_type'] == '0' ? '物流' :'自提') . '';
                $strTable .= ' | ' . $val['expressno'] . '';
                $strTable .= ' | ' . $val['shipping_name'] . '';
                $strTable .= ' | ' . ($val['pickup_no']) . '';
                $strTable .= ' | ' . ($val['pickup_name']) . '';
                $strTable .= ' | ' . $val['user_note'] . '';
                $strTable .= ' | ' . $val['admin_note'] . '';
                if ($res_goods) {
                    foreach ($res_goods as $k1 => $val1) {
                        if ($k1 > 0) {
                            $strTable .= ' | 
';
                        }
                        $strTable .= '| ' . $val1['goods_sn'] . '';
                        $strTable .= ' | ' . ($val1['sku']) . '';
                        $strTable .= ' | ' . ($val1['goods_name']) . '';
                        $strTable .= ' | ' . ($val1['goods_num']) . '';
                        $strTable .= ' | ' . $val1['goods_price'] . '';
                        if ($k1 > 0) {
                            $strTable .= ' | 
';
                        }
                    }
                }else
                {
                    $strTable .= '';
                    $strTable .= ' | ';
                    $strTable .= ' | ';
                    $strTable .= ' | ';
                }
            }
        }
        $strTable .= ' | 
';
        echo $strTable;
        unset($goodsList);
        downloadExcel($strTable, 'order');
        exit();
    }
    /*
     * ajax 发货订单列表
    */
    public function ajaxdelivery(){
    	$orderLogic = new OrderLogic();
    	$condition = array();
        $timegap = I('timegap');
        if($timegap){
            $gap = explode('-', $timegap);
            $begin = strtotime($gap[0]);
            $end = strtotime($gap[1]);
        }else{
            //@new 新后台UI参数
            $begin = strtotime(I('add_time_begin'));
            $end = strtotime(I('add_time_end'));
        }
        if($begin && $end){
            $condition['a.add_time'] = array('between',"$begin,$end");
        }
    	I('consignee') ? $condition['a.consignee'] = trim(I('consignee')) : false;
    	I('order_sn') != '' ? $condition['a.order_sn'] = trim(I('order_sn')) : false;
    	$shipping_status = I('shipping_status/d');
        $stoid=getAdmStoId();
        $condition['a.store_id']= $stoid;
        $sort_order = 'a.'.I('order_by','DESC').' '.I('sort');
        if ($shipping_status==0){
            upload_ylp_log('B12待发货查询/搜索');
        }
        if ($shipping_status==1){
            upload_ylp_log('B13部分发货查询/搜索');
        }
        if ($shipping_status==2){
            upload_ylp_log('B14已发货查询/搜索');
        }
    	$condition['a.shipping_status'] = empty($shipping_status) ? array('neq',1) : $shipping_status;
        $condition['a.order_status'] = array('in','1,2,4');
    	$count = M('order')->alias("a")->where($condition)->count();
    	$Page  = new AjaxPage($count,10);
    	//搜索条件下 分页赋值
    	foreach($condition as $key=>$val) {
            if(!is_array($val)){
                $Page->parameter[$key]   =   urlencode($val);
            }
    	}
    	$show = $Page->show();
    	//$orderList = M('order')->where($condition)->limit($Page->firstRow.','.$Page->listRows)->order($sort_order)->select();
        //获取订单列表
        $orderList = $orderLogic->getOrderList($condition,$sort_order,$Page->firstRow,$Page->listRows);
        $order_id_arr = get_arr_column($orderList, 'order_id');
        if (!empty($order_id_arr)) ;
        if ($order_id_arr) {
            $goods_list = M('order_goods')->alias('a')
                ->join('goods b',' a.goods_id=b.goods_id','left')
                ->where("a.order_id", "in", implode(',', $order_id_arr))
                ->field('a.*,b.original_img')
                ->select();
            $goods_arr = array();
            foreach ($goods_list as $v) {
                $goods_arr[$v['order_id']][] = $v;
            }
            $this->assign('goodsArr', $goods_arr);
        }
    	$this->assign('orderList',$orderList);
    	$this->assign('page',$show);// 赋值分页输出
    	$this->assign('pager',$Page);
//        upload_ylp_log('发货单');
    	return $this->fetch('',getAdmStoId());
    }
    
    /**
     * 订单详情
     * @param int $id 订单id
     */
    public function detail($order_id){
        $orderLogic = new OrderLogic();
        $order = $orderLogic->getOrderInfo($order_id);
        if($order['order_status']!=3 && $order['order_status']!=5 && $order['order_status']!=6) {
            $orderGoods = $orderLogic->getOrderGoods($order_id);
        }else{
            $orderGoods = $orderLogic->getOrderGoods($order_id);
        }
        //如果是包邮券的话
        if($order['coupon_no'] && $order['coupon_price']<=0){
            //拿出包邮券
            $wh['a.user_id']= $order['user_id'];
            $wh['a.store_id']=$order['store_id'];
            $wh['a.no']=$order['coupon_no'];
            $bylist=M("user_feemail")->alias('a')->join('coupon b','a.fmid=b.id')
                ->where($wh)
                ->field("a.no,b.condition,b.use_start_time,b.use_end_time")
                ->find();
            $this->assign('bylist',$bylist);
        }
        $button = $orderLogic->getOrderButton($order);
        // 获取操作记录
        $action_log = M('order_action')->where(array('order_id'=>$order_id,'action_user'=>array('neq',0)))->order('log_time desc')->select();
        $userIds = array();
        //查找用户昵称
        $infousername="";
        if($order['order_status']!=3) {
            if (empty($order['order_status_desc']) || $order['order_status_desc'] == '已取消') {
                switch ($order['pt_status']) {
                    case "1":
                        $order['order_status_desc'] = "待成团";
                        break;
                    case "2":
                        if ($order['is_zsorder'] == 4)
                            $order['order_status_desc'] = "待付尾款";
                        else
                            $order['order_status_desc'] = "已成团";
                        break;
                    case "3":
                        $order['order_status_desc'] = "拼团失败";
                        break;
                    case "4":
                        $order['order_status_desc'] = "已支付尾款";
                        break;
                    case "5":
                        $order['order_status_desc'] = "所有尾款完成";
                        break;
                }
            }
        }
        foreach ($action_log as $k => $v) {
            if ($v['action_user'] == 0) {
                $infousername = "管理员";
            } else {
                if ($v['user_type'] == 1) {
                    $users = M("admin")->where('store_id', getAdmStoId())
                        ->where('admin_id', $v['action_user'])->field("ERPName")->find();
                    if ($users) {
                        $infousername = $users['ERPName'];
                    }
                } else {
                    $users = M("users")->where('store_id', getAdmStoId())
                        ->where('user_id', $v['action_user'])->field("user_id,nickname")->find();
                    if ($users) {
                        $infousername = $users['nickname'];
                    }
                }
            }
            $action_log[$k]['action_username'] = $infousername;
        }
        $stoid=getAdmStoId();
        $this->assign('store_id',$stoid);
        $this->assign('users',$users);
        $this->assign('order',$order);
        $this->assign('action_log',$action_log);
        $this->assign('orderGoods',$orderGoods);
        $split = count($orderGoods) >1 ? 1 : 0;
        foreach ($orderGoods as $val){
        	if($val['goods_num']>1){
        		$split = 1;
        	}
        }
        $this->assign('split',$split);
        $this->assign('button',$button);
        $oldurl = I('oldurl/s');
        $url=urldecode(urldecode(I('oldurl')));
        $this->assign('url', $url);
//        upload_ylp_log('订单详情');
        return $this->fetch('',getAdmStoId());
    }
    /**
     * 订单编辑
     * @param int $id 订单id
     */
    public function edit_order(){
        $order_id = I('order_id');
        $orderLogic = new OrderLogic();
        $order = $orderLogic->getOrderInfo($order_id);
//        if($order['shipping_status'] != 0){
//            $this->error('已发货订单不允许编辑');
//            exit;
//        }
        $orderGoods = $orderLogic->getOrderGoods($order_id);
        if(IS_POST)
        {
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
            /*--判断是否是自提--*/
            if($order['exp_type']==1){
                $order['pickup_id']=I('pickup_id');   //门店修改
                $order['admin_note'] = I('admin_note'); // 管理员备注
            }else {
                $aa=I('consignee');
                if(!empty($aa)){
                    $order['consignee'] = I('consignee');// 收货人
                }
                $region_list = get_region_list();
                $aa1=I('province');
                if($aa1) {
                    $order['province'] = I('province'); // 省份
                    $areaname = $region_list[I('province')]['name'];
                }
                $aa2=I('city');
                if($aa2) {
                    $order['city'] = I('city'); // 城市
                    $areaname .="-". $region_list[I('city')]['name'];
                }
                $aa3=I('district');
                if($aa3) {
                    $order['district'] = I('district'); // 县
                    $areaname .= "-" . $region_list[I('district')]['name'];
                }
                $aa4=I('twon');
                if($aa4) {
                    $order['twon'] = I('twon'); // 县
                    $areaname .= "-" . $region_list[I('twon')]['name'];
                }
                $order['more_address']=$areaname;
                $aa4=I('address');
                if(!empty($aa4))
                    $order['address'] = I('address'); // 收货地址
                $aa5=I('mobile');
                if(!empty($aa5))
                    $order['mobile'] = I('mobile'); // 手机
                $aa6=I('invoice_title');
                if(!empty($aa6))
                    $order['invoice_title'] = I('invoice_title');// 发票
                $aa7=I('admin_note');
                if(!empty($aa7))
                    $order['admin_note'] = I('admin_note'); // 管理员备注
                $aa8=I('shipping');
                if(!empty($aa8))
                    $order['shipping_code'] = I('shipping');// 物流方式
                $aa9=I('shipping_name');
                if(!empty($aa9))
                    $order['shipping_name'] = I('shipping_name');//物流名称
                $aa10=I('pickup_id');
                if(!empty($aa10))
                    $order['pickup_id'] = I('pickup_id');   //取货门店
                $aa11=I('expressno');
                if(!empty($aa11))
                    $order['expressno'] = I('expressno');//快递单号
                $delivery_doc['shipping_code']= $order['shipping_code'];// 物流方式
                $delivery_doc['shipping_name']=$order['shipping_name'];//物流名称
                $delivery_doc['invoice_no']=$order['expressno'];//快递单号
                if(!empty($delivery_doc['shipping_code']) && !empty($delivery_doc['invoice_no']))
                    $d = M('delivery_doc')->where('order_id='.$order_id)->save($delivery_doc); //更改发货单
            }
            if (array_key_exists("store_id",$order)){
                unset($order['store_id']);
            }
            $o=M('order')->where(array('store_id'=>getAdmStoId(),'order_id'=>$order_id))->save($order);
            $dd=M("erp_yqty")->where(array('store_id'=>getAdmStoId(),'order_sn'=>$order['order_sn']))->find();
            if($dd){
                $aa10=I('pickup_id');
                if(!empty($aa10)) {
                    $kd['pickup_id'] = I('pickup_id');   //取货门店
                    M("erp_yqty")->where(array('store_id'=>getAdmStoId(),'order_sn'=>$order['order_sn']))->save($kd);
                }
            }
            $l = $orderLogic->orderActionLog($order_id,'edit','修改订单');//操作日志
//            upload_ylp_log('修改订单');
            if($o && $l){
                $this->success('修改成功',U('Admin/Order/detail',array('order_id'=>$order_id)));
            }else{
                $this->success('修改成功',U('Admin/Order/detail',array('order_id'=>$order_id)));
            }
            exit;
        }
        // 获取省份
        $province = M('region')->where(array('parent_id'=>0,'level'=>1))->select();
        //获取订单城市
        $city =  M('region')->where(array('parent_id'=>$order['province'],'level'=>2))->select();
        //获取订单地区
        $area =  M('region')->where(array('parent_id'=>$order['city'],'level'=>3))->select();
        //获取订单地区
        $twon =  M('region')->where(array('parent_id'=>$order['district'],'level'=>4))->select();
        //获取支付方式
        $payment_list = M('plugin')->where(array('status'=>1,'type'=>'payment'))->select();
        //获取配送方式
        $shipping_list=M('store_shipping')->alias('a')->join('shipping b',' a.shipping_id=b.shipping_id')->where(array('a.store_id'=>getAdmStoId(),'a.status'=>1))->select();
        //获取门店分类
        $pickcate='';
        $res=M("pick_up")->where('store_id',getAdmStoId())->select(); //所有门店
        $res1=M("storage_category")->where("cat_id in (SELECT category_id FROM wxd_pick_up where store_id=".getAdmStoId().") and store_id=".getAdmStoId()."")->select(); //所有门店分类
        //获取门店
        $pickupinfo=M("pick_up")->where('store_id',getAdmStoId())->where('pickup_id',$order['pickup_id'])->select();
        $pickcate=$pickupinfo[0]['category_id'];
        $pickup_list=M("pick_up")->where('store_id',getAdmStoId())->where('category_id',$pickcate)->select();
        $this->assign('storage_all',json_encode($res));
        $this->assign('storage_category',$res1);
        $this->assign('pickcate',$pickcate);
        $this->assign('order',$order);
        $this->assign('province',$province);
        $this->assign('city',$city);
        $this->assign('area',$area);
        $this->assign('twon',$twon);
        $this->assign('orderGoods',$orderGoods);
        $this->assign('shipping_list',$shipping_list);
        $this->assign('payment_list',$payment_list);
        $this->assign('pickup_list',$pickup_list);
        return $this->fetch('',getAdmStoId());
    }
    
    /*
     * 拆分订单
     */
    public function split_order(){
    	$order_id = I('order_id');
    	$orderLogic = new OrderLogic();
    	$order = $orderLogic->getOrderInfo($order_id);
    	if($order['shipping_status'] != 0){
    		$this->error('已发货订单不允许编辑');
    		exit;
    	}
    	$orderGoods = $orderLogic->getOrderGoods($order_id);
    	if(IS_POST){
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
    		$data = I('post.');
    		//################################先处理原单剩余商品和原订单信息
    		$old_goods = I('old_goods/a');
    		
    		foreach ($orderGoods as $val){
    			if(empty($old_goods[$val['rec_id']])){
    				M('order_goods')->where("rec_id=".$val['rec_id'])->delete();//删除商品
    			}else{
    				//修改商品数量
    				if($old_goods[$val['rec_id']] != $val['goods_num']){
    					$val['goods_num'] = $old_goods[$val['rec_id']];
    					M('order_goods')->where("rec_id=".$val['rec_id'])->save(array('goods_num'=>$val['goods_num']));
    				}
    				$oldArr[] = $val;//剩余商品
    			}
    			$all_goods[$val['rec_id']] = $val;//所有商品信息
    		}
    		$result = calculate_price($order['user_id'],$oldArr,$order['shipping_code'],0,$order['province'],$order['city'],$order['district'],0,0,0,0);
    		if($result['status'] < 0)
    		{
    			$this->error($result['msg']);
    		}
    		//修改订单费用
    		$res['goods_price']    = $result['result']['goods_price']; // 商品总价
    		$res['order_amount']   = $result['result']['order_amount']; // 应付金额
    		$res['total_amount']   = $result['result']['total_amount']; // 订单总价
    		M('order')->where("order_id=".$order_id)->save($res);
			//################################原单处理结束
			
    		//################################新单处理
    		for($i=1;$i<20;$i++){
                $temp = $this->request->param($i.'_old_goods/a');
    			if(!empty($temp)){
    				$split_goods[] = $temp;
    			}
    		}
    		foreach ($split_goods as $key=>$vrr){
    			foreach ($vrr as $k=>$v){
    				$all_goods[$k]['goods_num'] = $v;
    				$brr[$key][] = $all_goods[$k];
    			}
    		}
    		foreach($brr as $goods){
    			$result = calculate_price($order['user_id'],$goods,$order['shipping_code'],0,$order['province'],$order['city'],$order['district'],0,0,0,0);
    			if($result['status'] < 0)
    			{
    				$this->error($result['msg']);
    			}
    			$new_order = $order;
    			$new_order['order_sn'] = date('YmdHis').mt_rand(1000,9999);
    			$new_order['parent_sn'] = $order['order_sn'];
    			//修改订单费用
    			$new_order['goods_price']    = $result['result']['goods_price']; // 商品总价
    			$new_order['order_amount']   = $result['result']['order_amount']; // 应付金额
    			$new_order['total_amount']   = $result['result']['total_amount']; // 订单总价
    			$new_order['add_time'] = time();
    			unset($new_order['order_id']);
    			$new_order_id = DB::name('order')->insertGetId($new_order);//插入订单表
    			foreach ($goods as $vv){
    				$vv['order_id'] = $new_order_id;
    				unset($vv['rec_id']);
    				$nid = M('order_goods')->add($vv);//插入订单商品表
    			}
    		}
    		//################################新单处理结束
    		$this->success('操作成功',U('Admin/Order/detail',array('order_id'=>$order_id)));
            exit;
    	}
    	
    	foreach ($orderGoods as $val){
    		$brr[$val['rec_id']] = array('goods_num'=>$val['goods_num'],'goods_name'=>getSubstr($val['goods_name'], 0, 35).$val['spec_key_name']);
    	}
    	$this->assign('order',$order);
    	$this->assign('goods_num_arr',json_encode($brr));
    	$this->assign('orderGoods',$orderGoods);
    	return $this->fetch('',getAdmStoId());
    }
    
    /*
     * 价钱修改
     */
    public function editprice($order_id){
        $orderLogic = new OrderLogic();
        $order = $orderLogic->getOrderInfo($order_id);
        $this->editable($order);
        if(IS_POST){
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
        	$admin_id = session('admin_id');
            if(empty($admin_id)){
                $this->error('非法操作');
                exit;
            }
            $update['discount'] = I('post.discount');
            $update['shipping_price'] = I('post.shipping_price');
			$update['order_amount'] = $order['goods_price'] + $update['shipping_price'] - $update['discount'] - $order['user_money'] - $order['integral_money'] - $order['coupon_price'];
            $row = M('order')->where(array('order_id'=>$order_id))->save($update);
            if(!$row){
                $this->success('没有更新数据',U('Admin/Order/editprice',array('order_id'=>$order_id)));
            }else{
                $this->success('操作成功',U('Admin/Order/detail',array('order_id'=>$order_id)));
            }
            exit;
        }
        $this->assign('order',$order);
        return $this->fetch('',getAdmStoId());
    }
    /**
     * 订单删除
     * @param int $id 订单id
     */
    public function delete_order($order_id){
        ClearALLCache();
        delFile(TEMP_PATH."/".getAdmStoId());
    	$orderLogic = new OrderLogic();
    	$del = $orderLogic->delOrder($order_id);
        if($del){
            $this->success('删除订单成功');
        }else{
        	$this->error('订单删除失败');
        }
    }
    
    /**
     * 订单取消付款
     */
    public function pay_cancel($order_id){
    	if(I('remark')){
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
    		$data = I('post.');
    		$note = array('退款到用户余额','已通过其他方式退款','不处理,误操作项');
    		if($data['refundType'] == 0 && $data['amount']>0){
    			accountLog($data['user_id'], $data['amount'], 0,  '退款到用户余额');
    		}
    		$orderLogic = new OrderLogic();
            $a=$orderLogic->orderProcessHandle($data['order_id'],'pay_cancel');
            if($a== "-1"){
                exit(json_encode(array('status' => 0,'msg' => '该订单已经在退款中')));
            }
    		$d = $orderLogic->orderActionLog($data['order_id'],'pay_cancel',$data['remark'].':'.$note[$data['refundType']]);
    		if($d){
    			exit("");
    		}else{
    			exit("");
    		}
    	}else{
    		$order = M('order')->where("order_id=$order_id")->find();
    		$this->assign('order',$order);
    		return $this->fetch('',getAdmStoId());
    	}
    }
    /**
     * 订单打印
     * @param int $id 订单id
     */
    public function order_print(){
    	$order_id = I('order_id');
        $orderLogic = new OrderLogic();
        $order = $orderLogic->getOrderInfo($order_id);
        $order['province'] = getRegionName($order['province']);
        $order['city'] = getRegionName($order['city']);
        $order['district'] = getRegionName($order['district']);
        $order['full_address'] = $order['province'].' '.$order['city'].' '.$order['district'].' '. $order['address'];
        $orderGoods = $orderLogic->getOrderGoods($order_id);
        $shop = tpCache('shop_info',getAdmStoId());
        $this->assign('order',$order);
        $this->assign('shop',$shop);
        $this->assign('orderGoods',$orderGoods);
        $template = I('template','print');
//        upload_ylp_log('打印');
        return $this->fetch($template,getAdmStoId());
    }
    /**
     * 快递单打印
     */
    public function shipping_print(){
        $order_id = I('get.order_id');
        $orderLogic = new OrderLogic();
        $order = $orderLogic->getOrderInfo($order_id);
        //查询是否存在订单及物流
        $shipping = M('plugin')->where(array('code'=>$order['shipping_code'],'type'=>'shipping'))->find();        
        if(!$shipping){
        	$this->error('物流插件不存在');
        }
		if(empty($shipping['config_value'])){
			$this->error('请设置'.$shipping['name'].'打印模板');
		}
        $shop = tpCache('shop_info',getAdmStoId());//获取网站信息
        $shop['province'] = empty($shop['province']) ? '' : getRegionName($shop['province']);
        $shop['city'] = empty($shop['city']) ? '' : getRegionName($shop['city']);
        $shop['district'] = empty($shop['district']) ? '' : getRegionName($shop['district']);
        $order['province'] = getRegionName($order['province']);
        $order['city'] = getRegionName($order['city']);
        $order['district'] = getRegionName($order['district']);
        if(empty($shipping['config'])){
        	$config = array('width'=>840,'height'=>480,'offset_x'=>0,'offset_y'=>0);
        	$this->assign('config',$config);
        }else{
        	$this->assign('config',unserialize($shipping['config']));
        }
        $template_var = array("发货点-名称", "发货点-联系人", "发货点-电话", "发货点-省份", "发货点-城市",
        		 "发货点-区县", "发货点-手机", "发货点-详细地址", "收件人-姓名", "收件人-手机", "收件人-电话", 
        		"收件人-省份", "收件人-城市", "收件人-区县", "收件人-邮编", "收件人-详细地址", "时间-年", "时间-月", 
        		"时间-日","时间-当前日期","订单-订单号", "订单-备注","订单-配送费用");
        $content_var = array($shop['store_name'],$shop['contact'],$shop['phone'],$shop['province'],$shop['city'],
        	$shop['district'],$shop['phone'],$shop['address'],$order['consignee'],$order['mobile'],$order['phone'],
        	$order['province'],$order['city'],$order['district'],$order['zipcode'],$order['address'],date('Y'),date('M'),
        	date('d'),date('Y-m-d'),$order['order_sn'],$order['admin_note'],$order['shipping_price'],
        );
        $shipping['config_value'] = str_replace($template_var,$content_var, $shipping['config_value']);
        $this->assign('shipping',$shipping);
        return $this->fetch("Plugin/print_express",getAdmStoId());
    }
    /**
     * 生成发货单
     */
    public function deliveryHandle(){
        ClearALLCache();
        delFile(TEMP_PATH."/".getAdmStoId());
         $data = I('post.');
         $orderid = $data['order_id'];
        $orderLogic = new OrderLogic();
		$res = $orderLogic->deliveryHandle($data);
		if($res){
			$this->success('操作成功',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id'])));
		}else{
			$this->error('操作失败',U('Admin/Order/delivery_info',array('order_id'=>$data['order_id'])));
		}
    }
    
    public function delivery_info(){
    	$order_id = I('order_id');
    	$orderLogic = new OrderLogic();
    	$order = $orderLogic->getOrderInfo($order_id);
    	$orderGoods = $orderLogic->getOrderGoods($order_id);
		$delivery_record = M('delivery_doc')->alias('d')->join('__ADMIN__ a','a.admin_id = d.admin_id')->where('d.order_id='.$order_id)->select();
		if($delivery_record){
			$order['invoice_no'] = $delivery_record[count($delivery_record)-1]['invoice_no'];
		}
		$this->assign('order',$order);
		$this->assign('orderGoods',$orderGoods);
		$this->assign('delivery_record',$delivery_record);//发货记录
    	return $this->fetch('',getAdmStoId());
    }
    
    /**
     * 发货单列表
     */
    public function delivery_list(){
        return $this->fetch('',getAdmStoId());
    }
	
    /**
     * 删除某个退换货申请
     */
    public function return_del(){
        ClearALLCache();
        delFile(TEMP_PATH."/".getAdmStoId());
        $id = I('get.id');
        M('return_goods')->where("id = $id")->delete(); 
        $this->success('成功删除!');
    }
    /**
     * 退换货操作
     */
    public function return_info()
    {
        $oldurl = I('oldurl/s');
        if ($oldurl) {
            $oldurl = urldecode(urldecode($oldurl));
        }
        else{
            $oldurl="Admin/Order/return_list";
        }
        $this->assign('oldurl', $oldurl);
        $id = I('id');
        if($id)
           $return_goods = M('return_goods')->where("id= $id")->find();
        else{
           $order_id=I("order_id");
           $goods_id=I("goods_id");
           $return_goods = M('return_goods')->where("goods_id",$goods_id)
                ->where("order_id",$order_id)->find();
        }
        if($return_goods['imgs'])            
             $return_goods['imgs'] = explode(',', $return_goods['imgs']);
        $user = M('users')->where("user_id = {$return_goods[user_id]}")->find();
        $goods = M('goods')->where("goods_id = {$return_goods[goods_id]}")->find();
//        $type_msg = array('退换','换货','退款');
//        $status_msg = array('未处理','处理中','已完成','已拒绝');
        if(IS_POST)
        {
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
//            $data['type'] = I('type');
//            $data['status'] = I('status/d');
//            $data['remark'] = I('remark');
//            if($data['status']==1){
//                $data['handle_time'] = time();
//            }
//            if($data['status']==2){
//                $data['ok_time'] = time();
//            }
//            $note ="退换货:{$type_msg[$data['type']]}, 状态:{$status_msg[$data['status']]},处理备注:{$data['remark']}";
             M('return_goods')->where("id= $id")->save(['remark'=>I('remark')]);
//            if($result)
//            {
//            	$type = empty($data['type']) ? 2 : 3;
//            	if($type==3) {
//                    $where = " order_id = " . $return_goods['order_id'] . " and goods_id=" . $return_goods['goods_id'];
//                    M('order_goods')->where($where)->save(array('is_send' => $type));//更改商品状态
//                }
                //$orderLogic = new OrderLogic();
                //$log = $orderLogic->orderActionLog($return_goods[order_id],'refund',$note);
//                upload_ylp_log('退换货修改');
                $this->success('修改成功!');            
                exit();
//            }
        }        
        
        $this->assign('id',$id); // 用户
        $this->assign('user',$user); // 用户
        $this->assign('goods',$goods);// 商品
        $this->assign('return_goods',$return_goods);// 退换货               
        return $this->fetch('',getAdmStoId());
    }
    
    /**
     * 管理员生成申请退货单
     */
    public function add_return_goods(){
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
            $order_id = I('order_id'); 
            $goods_id = I('goods_id');
                
            $return_goods = M('return_goods')->where("order_id = $order_id and goods_id = $goods_id")->find();            
            if(!empty($return_goods))
            {
                $this->error('已经提交过退货申请!',U('Admin/Order/return_list'));
                exit;
            }
            $order = M('order')->where("order_id = $order_id")->find();
            
            $data['order_id'] = $order_id; 
            $data['order_sn'] = $order['order_sn']; 
            $data['goods_id'] = $goods_id; 
            $data['addtime'] = time(); 
            $data['user_id'] = $order[user_id];            
            $data['remark'] = '管理员申请退换货'; // 问题描述            
            M('return_goods')->add($data);            
            $this->success('申请成功,现在去处理退货',U('Admin/Order/return_list'));
            exit;
    }
    /**
     * 订单操作
     * @param $id
     */
    public function order_action(){    	
        $orderLogic = new OrderLogic();
        $action = I('get.type');
        $order_id = I('get.order_id');
        if($action && $order_id){
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
            if($action !=='pay'){
                $res = $orderLogic->orderActionLog($order_id,$action,I('note'));
            }
        	 $a = $orderLogic->orderProcessHandle($order_id,$action,array('note'=>I('note'),'admin_id'=>0));
        	 if($res !== false && $a !== false){
                 if ($action == 'remove') {
                     exit(json_encode(array('status' => 1, 'msg' => '操作成功', 'data' => array('url' => U('admin/order/index')))));
                 }
        	 	exit(json_encode(array('status' => 1,'msg' => '操作成功')));
        	 }else{
                 if ($action == 'remove') {
                     exit(json_encode(array('status' => 0, 'msg' => '操作失败', 'data' => array('url' => U('admin/order/index')))));
                 }
        	 	exit(json_encode(array('status' => 0,'msg' => '操作失败')));
        	 }
        }else{
        	$this->error('参数错误',U('Admin/Order/detail',array('order_id'=>$order_id)));
        }
    }
    
    public function order_log(){
        /*--清除日志为空的订单--*/
        //@new 兼容新模板
        $pagenum=20;//每页显示多少条
        if ((int)I('pagenum/s')>0)
        {
            $pagenum=I('pagenum/s');
        }
        $begin = strtotime(I('add_time_begin'));
        $end = strtotime(I('add_time_end'));
    	$condition = array();
    	$where=" where 1=1";
    	if($begin){
            $where.=' and a.log_time>='.$begin;
    	}
        if($end){
            $where.=' and a.log_time<='.$end;
        }
    	$admin_id = I('admin_id');
		if($admin_id >0 ){
            $where.=' and a.action_user='.$admin_id;
		}
		$log_id= I('order_sn');
        if($log_id>0){
            $where.=" and b.order_sn='".$log_id."'";
        }
        $where.=" and b.order_sn<>'' and a.store_id=".getAdmStoId();
        $order=' order by log_time desc ';
    	//$count = M('order_action')->alias('a')
          //  ->join('order b','a.order_id = b.order_id and a.store_id=b.store_id')->field("a.*,b.order_sn")->count();
        //$count= M('order_action')->alias('a')->join('wxd_order b','a.order_id=b.order_id','left')->where('a.order_id=1')->count();
        $sql1='select COUNT(a.action_id) num  from wxd_order_action a  LEFT JOIN wxd_order b on a.order_id=b.order_id and a.store_id=b.store_id '.$where;
        $sql2='select a.*,b.order_sn  from wxd_order_action a  LEFT JOIN wxd_order b on a.order_id=b.order_id and a.store_id=b.store_id '.$where.$order;
        $rs=Db::query($sql1);
        $count=$rs[0]['num'];
    	$Page = new Page($count,$pagenum);
    	foreach($condition as $key=>$val) {
    		$Page->parameter[$key] = urlencode($val."");
    	}
    	$show = $Page->show();
    	$sql3=$sql2.' limit '.$Page->firstRow.','.$Page->listRows;
    	$list = Db::query($sql3);
    	$this->assign('list',$list);
    	$this->assign('pager',$Page);
    	$this->assign('page',$show);   	
    	$admin = M('admin')->where(" store_id=".getAdmStoId())->getField('admin_id,ERPUser');
    	$this->assign('admin',$admin);
        $this->assign('pagenum',$pagenum);
        $this->assign('oldurl',urlencode(curPageURL()));
        upload_ylp_log('B16订单日志查询/搜索');
    	return $this->fetch('',getAdmStoId());
    }
    /**
     * 检测订单是否可以编辑
     * @param $order
     */
    private function editable($order){
        if($order['shipping_status'] != 0){
            $this->error('已发货订单不允许编辑');
            exit;
        }
        return;
    }
    public function export_order()
    {
    	//搜索条件
		$where = 'where 1=1 ';
		$consignee = I('consignee');
		if($consignee){
			$where .= " AND a.consignee like '%$consignee%' ";
		}
		$order_sn =  I('order_sn');
		if($order_sn){
			$where .= " AND a.order_sn = '$order_sn' ";
		}
		if(I('order_status')){
			$where .= " AND a.order_status = ".I('order_status');
		}
        $stoid=getAdmStoId();
        $where.=" and a.store_id=".$stoid;
		$timegap = I('timegap');
		if($timegap){
			$gap = explode('-', $timegap);
			$begin = strtotime($gap[0]);
			$end = strtotime($gap[1]);
			$where .= " AND a.add_time>$begin and a.add_time<$end ";
		}
        $picksle=trim(I('picksle'));
        $picksle=I('picksle_type');
        if($picksle){
            if($picksle)
                $where .= " AND a.pickup_name=".$picksle;
            else
                $where .= " AND a.pickup_no=".$picksle;
        }
		    
		$sql = "select a*,b.pickup_no,b.pickup_name FROM_UNIXTIME(add_time,'%Y-%m-%d') as create_time from __PREFIX__order a left join __PREFIX__pick_up b on a.pickup_id=b.pickup_id $where order by order_id";
    	$orderList = DB::query($sql);
    	$strTable ='';
    	$strTable .= '';
    	$strTable .= '| 订单编号';
    	$strTable .= ' | 日期';
    	$strTable .= ' | 收货人';
    	$strTable .= ' | 收货地址';
    	$strTable .= ' | 电话';
    	$strTable .= ' | 订单金额';
    	$strTable .= ' | 实际支付';
    	$strTable .= ' | 支付方式';
    	$strTable .= ' | 支付状态';
    	$strTable .= ' | 发货状态';
    	$strTable .= ' | 商品信息';
    	$strTable .= ' | 
';
	    if(is_array($orderList)){
	    	$region	= M('region')->getField('id,name');
	    	foreach($orderList as $k=>$val){
	    		$strTable .= '';
	    		$strTable .= '| '.$val['order_sn'].'';
	    		$strTable .= ' | '.$val['create_time'].'';	    		
	    		$strTable .= ' | '.$val['consignee'].'';
                        $strTable .= ' | '."{$region[$val['province']]},{$region[$val['city']]},{$region[$val['district']]},{$region[$val['twon']]}{$val['address']}".'';                        
	    		$strTable .= ' | '.$val['mobile'].'';
	    		$strTable .= ' | '.$val['goods_price'].'';
	    		$strTable .= ' | '.$val['order_amount'].'';
	    		$strTable .= ' | '.$val['pay_name'].'';
	    		$strTable .= ' | '.$this->pay_status[$val['pay_status']].'';
	    		$strTable .= ' | '.$this->shipping_status[$val['shipping_status']].'';
	    		$orderGoods = D('order_goods')->where('order_id='.$val['order_id'])->select();
	    		$strGoods="";
	    		foreach($orderGoods as $goods){
	    			$strGoods .= "商品编号:".$goods['goods_sn']." 商品名称:".$goods['goods_name'];
	    			if ($goods['spec_key_name'] != '') $strGoods .= " 规格:".$goods['spec_key_name'];
	    			$strGoods .= " | 
";
	    		}
	    		unset($orderGoods);
	    		$strTable .= ''.$strGoods.'';
	    		$strTable .= ' | 
';
	    	}
	    }
    	$strTable .='
';
    	unset($orderList);
    	downloadExcel($strTable,'order');
    	exit();
    }
    
    /**
     * 退货单列表
     */
    public function return_list(){
        $order_sn =  trim(I('order_sn'));
        $status =  trim(I('status',""));
        $cur_page = 1;//当前页数
        if ((int)I('p/s') > 0) {
            $cur_page = I('p/s');
        }
//        $day =  trim(I('day',""));
        $name = M("admin")->where('admin_id', getAdminId())->field('ERPUser')->find()['ERPUser'];
        $this->assign('admin_name',$name);
//        $this->assign('day',$day);
        $wx_user=M("wx_user")->where('store_id',getAdmStoId())->field('check_json')->find();
        if($wx_user){
            $ddd=json_decode($wx_user['check_json'],true);
            if($ddd['code']==1) $this->assign("is_check_ok", 1);
        }
        $this->assign('cur_page',$cur_page);
        $this->assign('order_sn',$order_sn);
        $this->assign('status',$status);
        return $this->fetch('',getAdmStoId());
    }
    /*
    * ajax 退货订单列表
    */
    public function ajax_return_list(){
        // 搜索条件
        $order_sn =  trim(I('order_sn'));
        $status =  trim(I('status',""));
        $getAdmStoId=getAdmStoId();
        $where=" a.store_id=".$getAdmStoId;
        $cur_page = 1;//当前页数
        if ((int)I('p/s') > 0) {
            $cur_page = I('p/s');
        }
        if($order_sn!="") $where.= " and a.order_sn like '%$order_sn%' ";
        if($status!="") $where.= " and a.status = '$status' ";
        $picksle=trim(I('picksle'));
        $pstype=I('picksle_type');
        if($picksle){
            if($pstype)
                $where .= " AND d.pickup_name='".$picksle."'";
            else
                $where .= " AND d.pickup_no='".$picksle."'";
        }
        $count = M('return_goods')->alias('a')
            ->join('order b','a.order_id=b.order_id')
            ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id')
            ->join('(select pickup_id,pickup_name,pickup_no from  wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left')
            ->where($where)->count();
        $Page  = new AjaxPage($count,13);
        $show = $Page->show();
        $list = M('return_goods')->alias('a')
            ->join('order b','a.order_id=b.order_id')
            ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id')
            ->join('(select pickup_id,pickup_name,pickup_no from  wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left')
            ->where($where)
            ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no,
              b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.mobile,c.nickname,d.pickup_name,d.pickup_no')->order("addtime desc")
            ->limit("{$Page->firstRow},{$Page->listRows}")->select();
        $list_str = M('return_goods')->alias('a')
            ->join('order b','a.order_id=b.order_id')
            ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id')
            ->join('(select pickup_id,pickup_name,pickup_no from  wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left')
            ->where($where)
            ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no,
              b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.mobile,c.nickname,d.pickup_name,d.pickup_no')->order("addtime desc")
            ->limit("{$Page->firstRow},{$Page->listRows}")->fetchSql(true)->select();
        mlog($list_str,'ajax_return_list/'.getAdmStoId());
        foreach ($list as $k=>$v){
            if($v['is_zsorder']==4){
                if($v['tail_pay_type']==1) $list[$k]['user_money']+=$v['pt_tail_money'];
                else $list[$k]['order_amount']+=$v['pt_tail_money'];
            }
        }
        $oldurl = U('Admin/Order/return_list', array(
            "order_sn" => $order_sn,
            "status" => $status,
            "p" => $cur_page
        ));
        session('excelreturn_list_'.getAdmStoId(),$list);
        $this->assign('oldurl', urlencode($oldurl));
        $this->assign('list',$list);
        $this->assign('pager',$Page);
        $this->assign('page',$show);// 赋值分页输出
        upload_ylp_log('B15退货列表查询/搜索');
        return $this->fetch('',getAdmStoId());
    }
    /*
   * ajax 退货订单单页导出
   */
    public function export_returnlist_report_page()
    {
        $orderList = session('excelreturn_list_' . getAdmStoId());
        $page=I('page/d',1);
        if (empty($orderList)) {
            return json(array('code' => -1, 'msg' => '无数据'));
        }
        $strTable = '';
        $strTable .= '';
        $strTable .= '| 用户手机';
        $strTable .= ' | 用户昵称';
        $strTable .= ' | 订单编号';
        $strTable .= ' | 所属门店';
        $strTable .= ' | 商品编号';
        $strTable .= ' | 商品名称';
        $strTable .= ' | 类型';
        $strTable .= ' | 退款金额';
        $strTable .= ' | 申请日期';
        $strTable .= ' | 状态';
        $strTable .= ' | 退货原因';
        $strTable .= ' | 退货描述';
        $strTable .= ' | 退款单号';
        $strTable .= ' | 操作人';
        $strTable .= ' | 
';
        $getrowspan = "";
        if (is_array($orderList)) {
            foreach ($orderList as $k => $val) {
                switch ($val['status']) {
                    case "0":
                        $val['order_status_desc'] = "未处理";
                        break;
                    case "1":
                        $val['order_status_desc'] = "处理中";
                        break;
                    case "2":
                        $val['order_status_desc'] = "已完成";
                        break;
                    case "3":
                        $val['order_status_desc'] = "已拒绝";
                        break;
                }
                $strTable .= '';
                $strTable .= '| ' . $val['mobile'] . '';
                $strTable .= ' | ' . $val['nickname'] . '';
                $strTable .= ' | ' . $val['order_sn'] . '';
                $strTable .= ' | ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ')';
                $strTable .= ' | ' . getregoodssn($val) . '';
                $strTable .= ' | ' . getregoodsname($val) . '';
                $strTable .= ' | ' .  ($val['refund_type'] == '0' ? '用户余额' : '原路返回')  . '';
                $strTable .= ' | ' . $val['back_money'] . '';
                $strTable .= ' | ' . date('Y-m-d H:i:s', $val['addtime']) . '';
                $strTable .= ' | ' . $val['order_status_desc'] . '';
                $strTable .= ' | ' . $val['reason'] . '';
                $strTable .= ' | ' . $val['user_remark'] . '';
                $strTable .= ' | ' . $val['wxrefund_no'] . '';
                $strTable .= ' | ' . $val['refund_admin'] . '';
                $strTable .= ' | 
';
            }
        }
        $strTable .= '
';
        echo $strTable;
        unset($orderList);
        downloadExcel($strTable, '退款订单'.$page);
        exit();
    }
    /*
          * ajax 退货订单单页导出
          */
    public function export_returnlist_report(){
        // 搜索条件
        $order_sn =  trim(I('order_sn'));
        $status =  trim(I('status',""));
        $getAdmStoId=getAdmStoId();
        $where=" a.store_id=".$getAdmStoId;
        if($order_sn!="") $where.= " and a.order_sn like '%$order_sn%' ";
        if($status!="") $where.= " and a.status = '$status' ";
        $picksle=trim(I('picksle'));
        $pstype=I('picksle_type');
        if($picksle){
            if($pstype)
                $where .= " AND d.pickup_name='".$picksle."'";
            else
                $where .= " AND d.pickup_no='".$picksle."'";
        }
        $list = M('return_goods')->alias('a')
            ->join('(select user_id,mobile,nickname from wxd_users where store_id='.$getAdmStoId.') c','a.user_id=c.user_id')
            ->join('order b','a.order_id=b.order_id')
            ->join('(select pickup_id,pickup_name,pickup_no from  wxd_pick_up where store_id='.$getAdmStoId.') d','b.pickup_id=d.pickup_id','left')
            ->where($where)
            ->field('a.*,b.user_money,b.coupon_price,b.order_amount,b.coupon_no,
              b.is_zsorder,b.tail_pay_type,b.pt_tail_money,c.nickname,c.mobile,d.pickup_name,d.pickup_no')->order("addtime desc")
            ->select();
        foreach ($list as $k=>$v){
            if($v['is_zsorder']==4){
                if($v['tail_pay_type']==1) $list[$k]['user_money']+=$v['pt_tail_money'];
                else $list[$k]['order_amount']+=$v['pt_tail_money'];
            }
        }
        if (empty($list)) {
            return json(array('code' => -1, 'msg' => '无数据'));
        }
        $strTable = '';
        $strTable .= '';
        $strTable .= '| 用户手机';
        $strTable .= ' | 用户昵称';
        $strTable .= ' | 订单编号';
        $strTable .= ' | 所属门店';
        $strTable .= ' | 商品编号';
        $strTable .= ' | 商品名称';
        $strTable .= ' | 类型';
        $strTable .= ' | 退款金额';
        $strTable .= ' | 申请日期';
        $strTable .= ' | 状态';
        $strTable .= ' | 退货原因';
        $strTable .= ' | 退货描述';
        $strTable .= ' | 退款单号';
        $strTable .= ' | 操作人';
        $strTable .= ' | 
';
        $getrowspan = "";
        if (is_array($list)) {
            foreach ($list as $k => $val) {
                switch ($val['status']) {
                    case "0":
                        $val['order_status_desc'] = "未处理";
                        break;
                    case "1":
                        $val['order_status_desc'] = "处理中";
                        break;
                    case "2":
                        $val['order_status_desc'] = "已完成";
                        break;
                    case "3":
                        $val['order_status_desc'] = "已拒绝";
                        break;
                }
                $strTable .= '';
                $strTable .= '| ' . $val['mobile'] . '';
                $strTable .= ' | ' . $val['nickname'] . '';
                $strTable .= ' | ' . $val['order_sn'] . '';
                $strTable .= ' | ' . $val['pickup_no'] . '(' . $val['pickup_name'] . ')';
                $strTable .= ' | ' . getregoodssn($val) . '';
                $strTable .= ' | ' . getregoodsname($val) . '';
                $strTable .= ' | ' .  ($val['refund_type'] == '0' ? '用户余额' : '原路返回')  . '';
                $strTable .= ' | ' . $val['back_money'] . '';
                $strTable .= ' | ' . date('Y-m-d H:i:s', $val['addtime']) . '';
                $strTable .= ' | ' . $val['order_status_desc'] . '';
                $strTable .= ' | ' . $val['reason'] . '';
                $strTable .= ' | ' . $val['user_remark'] . '';
                $strTable .= ' | ' . $val['wxrefund_no'] . '';
                $strTable .= ' | ' . $val['refund_admin'] . '';
                $strTable .= ' | 
';
            }
        }
        $strTable .= '
';
        echo $strTable;
        unset($list);
        downloadExcel($strTable, '退款订单');
        exit();
    }
    /**
     * 添加一笔订单
     */
    public function add_order()
    {
        $order = array();
        //  获取省份
        $province = M('region')->where(array('parent_id'=>0,'level'=>1))->select();
        //  获取订单城市
        $city =  M('region')->where(array('parent_id'=>$order['province'],'level'=>2))->select();
        //  获取订单地区
        $area =  M('region')->where(array('parent_id'=>$order['city'],'level'=>3))->select();
        //  获取配送方式
        //$shipping_list = M('plugin')->where(array('status'=>1,'type'=>'shipping'))->select();
           $sql="SELECT a.*,b.shipping_code,b.shipping_name,b.shipping_logo FROM  __PREFIX__store_shipping a ";
           $sql.="left join   __PREFIX__shipping b on a.shipping_id=b.shipping_id where a.store_id=".getAdmStoId();
            $shipping_list=DB::query($sql);
//        var_dump($shipping_list);
//        die();
//            Db::table('__PREFIX__store_shipping')
//            ->alias('a')
//            ->join('__PREFIX__shipping b','a.shipping_id = b.shipping_id')
//            ->select();
        //  获取支付方式
        $payment_list = M('plugin')->where(array('status'=>1,'type'=>'payment'))->select();
        if(IS_POST)
        {
            ClearALLCache();
            delFile(TEMP_PATH."/".getAdmStoId());
            $order['store_id']=getAdmStoId();
            $order['user_id'] = I('user_id');// 用户id 可以为空
            $order['consignee'] = I('consignee');// 收货人
            $order['province'] = I('province'); // 省份
            $order['city'] = I('city'); // 城市
            $order['district'] = I('district'); // 县
            $order['address'] = I('address'); // 收货地址
            $order['mobile'] = I('mobile'); // 手机           
            $order['invoice_title'] = I('invoice_title');// 发票
            $order['admin_note'] = I('admin_note'); // 管理员备注            
            $order['order_sn'] = date('YmdHis').mt_rand(1000,9999); // 订单编号;
            $order['admin_note'] = I('admin_note'); // 
            $order['add_time'] = time(); //                    
            $order['shipping_code'] = I('shipping');// 物流方式
            $order['shipping_name'] = M('plugin')->where(array('status'=>1,'type'=>'shipping','code'=>I('shipping')))->getField('name');            
            $order['pay_code'] = I('payment');// 支付方式            
            $order['pay_name'] = M('plugin')->where(array('status'=>1,'type'=>'payment','code'=>I('payment')))->getField('name');            
                            
            $goods_id_arr = I("goods_id/a");
            $orderLogic = new OrderLogic();
            $order_goods = $orderLogic->get_spec_goods($goods_id_arr);          
            $result = calculate_price($order['user_id'],$order_goods,$order['shipping_code'],0,$order[province],$order[city],$order[district],0,0,0,0,getAdmStoId());
            if($result['status'] < 0)	
            {
                 $this->error($result['msg']);      
            } 
           
           $order['goods_price']    = $result['result']['goods_price']; // 商品总价
           $order['shipping_price'] = $result['result']['shipping_price']; //物流费
           $order['order_amount']   = $result['result']['order_amount']; // 应付金额
           $order['total_amount']   = $result['result']['total_amount']; // 订单总价
           
            // 添加订单
            $order_id = M('order')->add($order);
            $order_insert_id = DB::getLastInsID();
            if($order_id)
            {
                foreach($order_goods as $key => $val)
                {
                    $val['store_id']=getAdmStoId();
                    $val['order_id'] = $order_id;
                    $rec_id = M('order_goods')->add($val);
                    if(!$rec_id)
                        $this->error('添加失败');                                  
                }
                $this->success('添加商品成功',U("Admin/Order/detail",array('order_id'=>$order_insert_id)));
                exit();
            }
            else{
                $this->error('添加失败');
            }                
        }     
        $this->assign('shipping_list',$shipping_list);
        $this->assign('payment_list',$payment_list);
        $this->assign('province',$province);
        $this->assign('city',$city);
        $this->assign('area',$area);        
        return $this->fetch('',getAdmStoId());
    }
    
    /**
     * 选择搜索商品
     */
    public function search_goods()
    {
    	$brandList =  M("brand")->select();
    	$categoryList =  M("goods_category")->select();
    	$this->assign('categoryList',$categoryList);
    	$this->assign('brandList',$brandList);   	
    	$where = ' is_on_sale = 1 ';//搜索条件
        $count=0;
    	I('intro')  && $where = "$where and ".I('intro')." = 1";
    	if(I('cat_id')){
    		$this->assign('cat_id',I('cat_id'));    		
            $grandson_ids = getCatGrandson(I('cat_id')); 
            $where = " $where  and cat_id in(".  implode(',', $grandson_ids).") "; // 初始化搜索条件
                
    	}
        if(I('brand_id')){
            $this->assign('brand_id',I('brand_id'));
            $where = "$where and brand_id = ".I('brand_id');
        }
    	if(!empty($_REQUEST['keywords']))
    	{
    		$this->assign('keywords',I('keywords'));
    		$where = "$where and (goods_name like '%".I('keywords')."%' or keywords like '%".I('keywords')."%')" ;
    	}  	
    	$goodsList = M('goods')->where($where)->order('goods_id DESC')->limit(10)->select();
                
        foreach($goodsList as $key => $val)
        {
            $spec_goods = M('spec_goods_price')->where("goods_id = {$val['goods_id']}")->select();
            $goodsList[$key]['spec_goods'] = $spec_goods;
        }
        if($goodsList){
            //计算商品数量
            foreach ($goodsList as $value){
                if($value['spec_goods']){
                    $count += count($value['spec_goods']);
                }else{
                    $count++;
                }
            }
            $this->assign('totalSize',$count);
        }
        
    	$this->assign('goodsList',$goodsList);
    	return $this->fetch('',getAdmStoId());
    }
    
    public function ajaxOrderNotice(){
        $order_amount = M('order')->where("order_status=0 and (pay_status=1 or pay_code='cod')")->count();
        echo $order_amount;
    }
//    拒绝退款理由
    public function return_refuse(){
        $id=I('id/d');
        $remark=I('remark/s');
        M('return_goods')->where('id',$id)->save(['remark'=>$remark,'status'=>3,'ok_time'=>time()]);
        return json(1);
    }
    //搜索换货商品
    public function exchange_search()
    {
        $wh = I('post.');
        $sto_id = getAdmStoId();
        $mz_switch = tpCache('shopping.is_beauty', $sto_id);
        $vip = 0;
        $time = time();
        if ($wh['exp'] == 0) {
            $exp = 2;
        } else {
            $exp = 1;
        }
        if (!empty($mz_switch))
            $vip = M('users')->where('user_id', $wh['user_id'])->field('is_mzvip')->find()['is_mzvip'];
//            dump($wh);die;
        if ($wh['type']) {//秒杀
            $goods = M('flash_sale')->alias('a')->join('goods b', 'a.goods_id = b.goods_id', 'left')
                ->where(['b.goods_sn' => $wh['sn'], 'b.store_count' => ['>', 0], 'a.store_id' => $sto_id, 'b.distr_type' => [['=', 0], ['=', $exp], 'or'],
                    'b.is_on_sale' => 1, 'b.on_time' => ['<', $time], 'b.down_time' => [['>', $time], ['=', 0], 'or']])->where('a.price=' . $wh['price'] . '')
                ->field('a.price,b.goods_name,b.goods_id,b.store_count,a.goods_num,a.is_end,a.buy_limit,a.buy_num')->find();
            if (empty($goods)) {
                return json(['code' => 0, 'msg' => '未找到符合的秒杀商品']);
            }
            if ($goods['is_end'] == 0) {
                if ($goods['goods_num'] - $goods['buy_num'] == 0) {
                    return json(['code' => 0, 'msg' => '该秒杀商品库存不足']);
                }
            } else {
                $goods['buy_limit'] = 1000;
            }
        } else {
            if ($vip) {
                $goods = M('goods')->where(['mz_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'],
                    'prom_type' => 0, 'store_count' => ['>', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time],
                    'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,mz_price as price,goods_name')->find();
                if (empty($goods)) {
                    return json(['code' => 0, 'msg' => '未找到符合的美妆价商品']);
                }
            } else {
                $goods = M('goods')->where(['shop_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'],
                    'prom_type' => 0, 'store_count' => ['gt', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time],
                    'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,shop_price as price,goods_name')->find();
                $goodsstr = M('goods')->where(['shop_price' => $wh['price'], 'goods_sn' => $wh['sn'], 'distr_type' => [['=', 0], ['=', $exp], 'or'],
                    'prom_type' => 0, 'store_count' => ['gt', 0], 'store_id' => $sto_id, 'is_on_sale' => 1, 'on_time' => ['<', $time],
                    'down_time' => [['>', $time], ['=', 0], 'or']])->field('goods_id,store_count,shop_price as price,goods_name')->fetchSql(true)->find();
                if (empty($goods)) {
                    return json(['code' => 0, 'msg' => '未找到符合的商品']);
                }
            }
            $goods['buy_limit'] = 1000;
        }
        return json(['code' => 1, 'data' => $goods]);
    }
    //换货操作
    public function exchange_goods()
    {
        $oid = I('oid/d');//订单id
        $gid = I('gid/d');//商品id
        $type = I('type/d', 0);//商品活动类型
        $num = I('goods_num/d');//替换数量
        $uid = I('uid/d');//用户id
        $ex_gid = I('ex_gid/d');//替换商品id
        $sto_id = getAdmStoId();
        $order = M('order')->alias('a')->join('order_goods b', 'a.order_id=b.order_id')
            ->where(['a.user_id' => $uid, 'a.order_id' => $oid, 'b.goods_id' => $gid, 'a.order_status' => ['lt', 2], 'a.shipping_status' => 0])
            ->field('b.*,a.pickup_id')->find();
        if (empty($order)) {
            return json(['code' => 0, 'msg' => '非法操作']);
        }
        $log = M('rebate_log')->where(['order_id'=>$oid])->find();
        if (!empty($log)){
            if (empty($log['commission_json'])){
                return json(['code' => 0, 'msg' => '暂时还不能换货']);
            }
            $json = json_decode($log['commission_json'],true);
            foreach ($json as $v){
                if ($gid == $v['goods_id']){
                    return json(['code' => 0, 'msg' => '此商品是分销商品,不能换']);
                }
            }
        }
        if ($type) {
            $goods = M('flash_sale')->alias('a')->join('goods b', 'a.goods_id = b.goods_id')
                ->where(['a.goods_id' => $ex_gid, 'a.store_id' => $sto_id])
                ->field('b.goods_id,b.goods_name,b.goods_sn,b.market_price,b.cost_price,a.id')->find();
        } else {
            $goods = M('goods')->where(['store_id' => $sto_id, 'goods_id' => $ex_gid])
                ->field('goods_id,goods_name,goods_sn,market_price,cost_price')->find();
        }
        if (empty($goods)) {
            return json(['code' => 0, 'msg' => '非法操作']);
        }
        $rule = tpCache('basic.sales_rules', $sto_id);//获取线下线上规则
        $out = M('erp_yqty')->where(['order_sn' => $order['order_sn'], 'store_id' => $sto_id, 'goods_id' => $gid])->field('id,out_qty')->find();
        M('goods')->where('goods_id', $ex_gid)->setInc('sales_sum', $num); // 增加换购商品销售量
        M('goods')->where('goods_id', $gid)->setDec('sales_sum', $num); // 减少被换商品销售量
        if (!empty($out)) {
            M('erp_yqty')->where('id', $out['id'])->setDec('out_qty', $num);//扣除预出库库存
        } else {
            M('goods')->where('goods_id', $gid)->setInc('store_count', $num);//增加商品库存
        }
        if ($rule == 1 || $type == 1) {//线上销售规则或者活动类型为秒杀
            M('goods')->where('goods_id', $ex_gid)->setDec('store_count', $num);//减少换购商品库存
        } else {
            $data = [
                'order_sn' => $order['order_sn'],
                'store_id' => $sto_id,
                'goods_id' => $ex_gid,
                'pickup_id' => $order['pickup_id'],
                'out_qty' => $num,
                'updatetime' => time(),
            ];
            M('erp_yqty')->save($data);//添加换购商品预出库库存
        }
        $new = $order;
        unset($new['pickup_id']);
        unset($new['rec_id']);
        $new['goods_id'] = $goods['goods_id'];
        $new['goods_name'] = $goods['goods_name'];
        $new['goods_sn'] = $goods['goods_sn'];
        $new['goods_num'] = $num;
        $new['market_price'] = $goods['market_price'];
        $new['cost_price'] = $goods['cost_price'];
        $new['prom_id'] = (int)$goods['id'];
        $new['remark'] = '换货';
        if ($num < $order['goods_num']) {
            if ($type) {//秒杀商品增加减少相应数量
                M('flash_sale')->where('id', $goods['id'])->setInc('buy_num', $num);
                M('flash_sale')->where('id', $goods['id'])->setInc('order_num');
                M('flash_sale')->where('id', $order['prom_id'])->setDec('buy_num', $num);
            }
            M('order_goods')->save($new);//换购数量少于购买商品数量,增加order_goods一条记录
        } else {
            if ($type) {//秒杀商品增加减少相应数量
                M('flash_sale')->where('id', $goods['id'])->setInc('buy_num', $num);
                M('flash_sale')->where('id', $goods['id'])->setInc('order_num');
                M('flash_sale')->where('id', $order['prom_id'])->setDec('buy_num', $num);
                M('flash_sale')->where('id', $order['prom_id'])->setDec('order_num');
            }
            M('order_goods')->where('rec_id', $order['rec_id'])->save($new);//更新数据
        }
        //添加换货记录
        $res = [
            'order_id' => $order['order_id'],
            'order_sn' => $order['order_sn'],
            'goods_id' => $gid,
            'exchange_num' => $num,
            'exchange_id' => $ex_gid,
            'goods_price' => $order['goods_price'],
            'prom_type' => (int)$type,
            'store_id' => $sto_id
        ];
        M('exchange_log')->save($res);
        return json(['code' => 1, 'msg' => '操作成功']);
    }
    //退款文档
    public function explain_word(){
        return $this->fetch('',getAdmStoId());
    }
    //发货操作
    public function fhorder()
    {
        $oid = I('oid/d');//订单id
        $expressno = substr(I('expressno'),0,30);//快递单号
        $sto_id = getAdmStoId();
        if (empty($oid) || empty($sto_id))
        {
            return json(['STATE' =>-1, 'MSG' => '参数有误']);
        }
        $where['a.order_id']=$oid;
        $where['a.store_id']=$sto_id;
        $fiedlist = "o.user_id,a.order_sn,a.goods_name,a.give_integral,a.goods_num,a.goods_price";
        $fiedlist .= ",(case when (case when k.goods_id_list<>'' then k.status else r.status end)=0 or (case when k.goods_id_list<>'' then k.status else r.status end)=1 then  1 when (case when k.goods_id_list<>'' then k.status else r.status end)=2 then 2 else 0 end) as return_status";
        $res = D('order_goods')->alias("a")
            ->join("return_goods r", ' r.order_sn=a.order_sn and r.goods_id=a.goods_id', "left")
            ->join("return_goods k", " k.order_sn=a.order_sn and k.goods_id_list<>''", "left")
            ->join("order o", ' o.order_id=a.order_id', "left")
            ->where($where)->field($fiedlist)->select();
       if (empty($res))
       {
           return json(['STATE' => -1, 'MSG' => '找不到相关信息']);
       }
       $ordergoods_name="";
       $getbuyuser_id=$res[0]['user_id'];
        foreach ($res as $k => $v) {
            $order_sn=$v['order_sn'];
            if ($v['return_status'])
            {
                $ordergoods_name.=$v['goods_name']."(".$v['goods_sn'].")/";
            }
            $getgoods_integral=0;
            $getgoods_price=0;
            $point_rate=0;
            //有效总金额
            if (empty($v['return_status']) && $v['give_integral'])
            {
                $getgoods_price=(float)($v['goods_num']*$v['goods_price']);
            }
            //积分
            $getpoint_rate = tpCache('shopping.point_rate', $sto_id);
            if ($getpoint_rate)
            {
                $getpoint_rate=json_decode($getpoint_rate,true);
                $point_rate=$getpoint_rate['integral']/$getpoint_rate['money'];
            }
            if ($point_rate && $getgoods_price)
            {
                $getgoods_integral=round($getgoods_price*$point_rate);
            }
            $user_info=M('users')->where(array('user_id'=>$getbuyuser_id))->find();
            if ($user_info) {
                accountLog($user_info["user_id"], 0, $getgoods_integral, '购买商品赠送', 0, $sto_id, $user_info["pay_points"]);//线上表
            }
            //
        }
        if ($ordergoods_name)
        {
            return json(['STATE' => -1, 'MSG' => $ordergoods_name."为申请退款状态,不允许出库"]);
        }
        $getisgo=0;
        if ($expressno)
        {
            $update_order=M('order')->where(array('order_id'=>$oid,'exp_type'=>0))->save(array('expressno'=>$expressno));
            if ($update_order)
            {
                $getisgo=1;
            }
        }
        else
        {
            $getisgo=1;
        }
        if (empty($getisgo))
        {
            return json(['STATE' => -1, 'MSG' => '正在处理中']);
        }
        //
        $postStr = "{\"NUMBER\":\"" . $order_sn . "\",\"ERPUSERID\":\"". Cookie::get("newshop_admin_erpuser")."\"}";
        $api_order=httpRequest(curHostURL() . "/home/api/order", "POST", $postStr);
        $api_order=json_decode($api_order,true);
        if ($api_order['STATE']==1)
        {
            return json(['STATE' => 1, 'MSG' => '发货成功']);
        }
        else
        {
            return json(['STATE' => -1, 'MSG' => $api_order['MSG']]);
        }
    }
    //确认是否发货,订单是否完成
    public function check_refuse(){
        $sn=I('sn');
        $stoid=getAdmStoId();
        $rs=M("order")->where("order_sn",$sn)->where('store_id',$stoid)->find();
        if(!$rs) return json(['code' => -1, 'msg' => "查无此单"]);
        if($rs['order_status']==2) return json(['code' => -1, 'msg' => "此订单已经核销完成,无法完成退款操作,请点击拒绝退款"]);
        return json(['code' => 0, 'msg' => "查找成功"]);
    }
    public function check_refuse2(){
        $id=I("id");
        $stoid=getAdmStoId();
        $rs=M("return_goods")->where('id',$id)
            ->where('store_id',$stoid)->find();
        if(!$rs) return json(['code' => -1, 'msg' => "查无此单"]);
        $rs2=M("order")->where("order_sn",$rs['order_sn'])->where('store_id',$stoid)->find();
        if(!$rs2) return json(['code' => -1, 'msg' => "查无此单"]);
        if($rs2['order_status']==2) return json(['code' => -1, 'msg' => "此订单已经核销完成,无法完成退款操作,请点击拒绝退款"]);
        return json(['code' => 0, 'msg' => "查找成功"]);
    }
}