<?php
class orderAction  extends baseAction
{
	/**
	 * @method    订单确认页面
	 * @author 卢
	 * @copyright 2017-08-04
	 */
	public function index()
	{
	    // 年检 by huluo
        if(empty($_POST['tkey']) || $_SESSION['tkey'] != $_POST['tkey'])
        {
            unset($_SESSION['tkey']);
            LibTpl::Error('请求异常，获取数据失败！');
        }

		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		if(!count($_POST['data'])&&!isset($_POST['pack']))
		{
			LibFc::Go('/cart/index');
			exit();
		}
		$B2cAddr= new B2cAddr();
		$YpwAddr= new YpwAddr();
		$B2cOrder = new B2cOrder();
		$B2cUserFavourable= new B2cUserFavourable();
		$userId=$_SESSION['_userid'];
		// print_r($_POST);
		// die;
		$headArr = [
			'title'=>'确认订单-跑街的',	
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Set('ComTitle','订单确认');
		//地址列表
		$addrData=$B2cAddr->getMyListUser($userId);
		foreach ($addrData['data'] as $k => $v) 
		{
			$rootCity=array_slice(explode(',',$v['add_pct_ids']),0,2);
			$resArr=$YpwAddr->getAddrByIds(implode(',', $rootCity));
			$addrData['data'][$k]['BaseCity']=implode('', $resArr['data']);
		}
		LibTpl::Set('addrList',$addrData['data']);
		$shopArr=array();
		
		if(count($_POST['data']))
		{
			$proArr=array();
			foreach ($_POST['data'] as $k => $v) 
			{
				$shopArr[]=$k;			
				foreach ($v as $i => $j) 
				{
					$proArr[]=$i;
				}
			}
			if(isset($_SESSION['_shopid'])&&in_array($_SESSION['_shopid'], $shopArr))
			{
				LibTpl::Error('不能购买自家店铺的配件！');
				exit();
			}
			$result=$B2cOrder->getProductRealInfo($proArr,$userId,$shopArr,$_POST['data']);
			// print_r($result);
			if(!count($result['data']))
			{
				LibTpl::Error('配件已失效！','/cart/index');
				exit();
			}
			$proCount=[];//配件数量
			foreach ($result['data'] as $k => $v) 
			{
				foreach ($v as $pro) 
				{
					if($pro['pro_status']<1)
					{
						LibTpl::Error('配件状态异常！','/cart/index');
						exit();
					}
					if($pro['shop_status']<1)
					{
						LibTpl::Error('店铺状态异常！','/cart/index');
						exit();
					}
					//初步判断库存是否小于1
					if($pro['pro_count']<1)
					{
						LibTpl::Error('配件'.$pro['pro_name'].'库存不足！','/cart/index');
						exit();
					}
					if(empty($pro['pri_frt_id']))
					{
						LibTpl::Error('配件'.$pro['pro_name'].'暂时尚未定义运费模板，不可购买！','/cart/index');
						exit();
					}
					$proCount[$pro['pro_id']]+=$pro['byNum'];
				}
			}
			//拼接普通订单
			foreach ($result['data'] as $k => $v) 
			{
				LibTpl::Set('shopId',$k);
				LibTpl::Set('prolist',$v);
				foreach ($v as $proValue) 
				{
					$proPrice[$proValue['pro_id']]=min($proValue['realPrice']);
				}
				LibTpl::Set('proPrice',$proPrice);
				$tpl[$k]['shopInfo']['shopName']=current($v)['shopName'];
				$tpl[$k]['shopInfo']['shopId']=current($v)['pro_shop_id'];
				$tpl[$k]['shopInfo']['shopUrl']=current($v)['shopUrl'];
				$tpl[$k]['shopInfo']['shop_status']=current($v)['shop_status'];
				$tpl[$k]['proTpl'][]=LibTpl::Fetch('/order/normalPro.php');
				foreach ($v as $proId => $proArr) 
				{
					$result['data'][$k]['normal'][$proId]=$proArr;
					unset($result['data'][$k][$proId]);
				}
			}
			// print_r($tpl);
			
		}
		if(isset($_POST['pack'])&&count($_POST['pack']))
		{
			foreach ($_POST['pack'] as $packIdData => $packNumData) 
			{
				if(LibFc::Int($packIdData)&&LibFc::Int($packNumData))
				{
					$packArr=array_keys($_POST['pack']);
					$packNum=$_POST['pack'];
				}
				else
				{
					LibTpl::Error('套餐信息错误');
					exit();
				}
			}
			// $packArr=[13330056,12660056];
			// $packNum=['13330056'=>1,'12660056'=>2];
			//包含套餐13330056
			if(count($packArr)&&count($packNum))
			{
				//判断套餐是否存在
				$exit=$B2cOrder->get('bc_product_pack',['prpa_id','prpa_shop_id'],sprintf(' and prpa_id in(%s) and prpa_btime<=%d and prpa_etime>=%d',implode(',',$packArr),time(),time()));
				if(count($exit['data'])==count($packArr))
				{
					$prpaId=array_column($exit['data'], 'prpa_id');
					$packRes=$B2cOrder->get('bc_product_pack_link left join bc_product on prpl_pro_id=pro_id left join sh_shop on pro_shop_id=shop_id',['prpl_prpa_id','pro_id','pro_status','pro_count','pro_name','shop_status','shop_id'],sprintf(' and prpl_prpa_id in(%s)',implode(',',$prpaId)));
					//套餐中有配件下架或店铺禁用
					foreach ($packRes['data'] as $proArr) 
					{
						if($proArr['shop_id']==$_SESSION['_shopid'])
						{
							LibTpl::Error('不能购买自家店铺的配件！');
							exit();
						}
						if($proArr['pro_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单','/cart/index');
							exit();
						}
						if($proArr['shop_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单','/cart/index');
							exit();
						}
						if($proArr['pro_count']<1)
						{
							LibTpl::Error('配件'.$proArr['pro_name'].'库存不足！请重新下单','/cart/index');
							exit();
						}
						$proCount[$proArr['pro_id']]+=1;//套餐配件数量
					}		
					$re=$B2cOrder->getPackProInfo($packArr,$_SESSION['_userid']);
					if(!count($re['data']))
					{
						LibTpl::Error('配件已失效！请重新下单','/cart/index');
						exit();
					}
					// print_r($re['data']);
					foreach ($re['data'] as $k => $v) 
					{
						$result['data'][$v['shopId']]['pack'][$k]['packNum']=isset($packNum[$k])?(int)$packNum[$k]:1;
						$shopArr=array_merge($shopArr,[$v['shopId']]);
						$result['data'][$v['shopId']]['pack'][$k]['pro']=$v['pro'];
						$result['data'][$v['shopId']]['pack'][$k]['totalPackPrice']=$v['totalPackPrice'];
						$packNumArr=isset($packNum[$k])?(int)$packNum[$k]:1;
						LibTpl::Set('packNum',$packNumArr);
						LibTpl::Set('packList',$v);
						LibTpl::Set('packId',$k);
						$tpl[$v['shopId']]['shopInfo']['shopName']=current($v['pro'])['shopName'];
						$tpl[$v['shopId']]['shopInfo']['shopId']=current($v['pro'])['pro_shop_id'];
						$tpl[$v['shopId']]['shopInfo']['shopUrl']=current($v['pro'])['shopUrl'];
						$tpl[$v['shopId']]['shopInfo']['shop_status']=current($v['pro'])['shop_status'];
						$tpl[$v['shopId']]['proTpl'][]=LibTpl::Fetch('/order/packPro.php');					
					}
					// print_r($tpl);
				}
				else
				{
					LibTpl::Error('配件信息错误');
					exit();
				}
			}
		}
		if(count($proCount))
		{
			//最终判断配件数量
			$countData=$B2cOrder->get('bc_product',['pro_id','pro_count','pro_name'],sprintf(' and pro_id in(%s) and pro_show_b2c=1',implode(',',array_keys($proCount))));
			foreach ($countData['data'] as $v) 
			{
				if($proCount[$v['pro_id']]>$v['pro_count'])
				{
					LibTpl::Error('配件'.$v['pro_name'].'库存不足，请重新下单','/cart/index');
					exit();
				}
			}
		}
		else
		{
			LibTpl::Error('配件信息错误');
			exit();
		}
		//满包邮
		if(count($shopArr))
		{
			$frtInfo=$B2cOrder->get('sh_shop',['shop_baoyou','shop_id'],sprintf(' and shop_id in(%s)',implode(',', $shopArr)));
		}
		else
		{
			LibTpl::Error('配件信息错误');
			exit();
		}
		foreach ($frtInfo['data'] as $k => $v) 
		{
			$frt[$v['shop_id']]=$v['shop_baoyou'];
		}
		if(isset($_POST['type'])&&$_POST['type']=='buyNow')
		{
			LibTpl::Set('buyNow',1);
		}
		LibTpl::Set('data',$tpl);
		LibTpl::Set('frt',$frt);
		LibTpl::Set('proList',$result['data']);
		LibTpl::Set('integral',$integral);
		LibTpl::Put();
	}
	/**
	 * @method    ajax更新修改的地址
	 * @author 卢
	 * @copyright 2017-08-05
	 */
	public function ajaxUpdataAddr()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$B2cAddr= new B2cAddr();
		$YpwAddr= new YpwAddr();
		if(LibFc::Int($Params['addrId']))
		{
			$addrData=$B2cAddr->Get('us_address',['*'],sprintf(' and add_id=%d and add_uid=%d',LibFc::Int($Params['addrId']),$_SESSION['_userid']),true);
			$rootCity=explode(',',$addrData['data']['add_pct_ids']);
			$resArr=$YpwAddr->getAddrByIds(implode(',', $rootCity));
			$addrData['data']['BaseCity']=implode('', array_slice($resArr['data'], 0,2));
			$addrData['data']['pathname']=implode('',$resArr['data']);
			LibTpl::Set('addrList',$addrData['data']);
			$result=LibTpl::fetch('order/addrList.php');
			LibFc::ajaxJsonEncode(['status'=>true,'data'=>$result]);
		}
	}
	/**
	 * @method    获取不同地区的运费
	 * @author 卢
	 * @copyright 2017-08-07
	 */
	public function getFrtPrice()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$B2cAddr= new B2cAddr();
		$userId=$_SESSION['_userid'];
		$addrId=(int)$Params['addrId'];
		// print_r($_POST);
		// die;
		if($addrId>0)
		{
			$shopArr=[];
			$manArr=!empty($_POST['manJianArr'])?$_POST['manJianArr']:[];
			if(!empty($_POST['tplId']))
			{
				$shopArr=array_merge($shopArr,array_keys($_POST['tplId']));
			}
			if(!empty($_POST['packTplId']))
				$shopArr=array_merge($shopArr,array_keys($_POST['packTplId']));
			if(empty($shopArr))
				LibFc::ajaxJsonEncode(['status'=>true,'data'=>false]);
			//检查是否满包邮
			$B2cOrder=new B2cOrder();
			$frtInfo=$B2cOrder->get('sh_shop',['shop_baoyou','shop_id'],sprintf(' and shop_id in(%s)',implode(',', $shopArr)));
			$frtInfo=array_column($frtInfo['data'],null, 'shop_id');
			$proArr=(!empty($_POST['proArr'])&&!empty($_POST['nPrefer']))?['proArr'=>$_POST['proArr'],'nPrefer'=>$_POST['nPrefer']]:[];
			$packArr=(!empty($_POST['packArr']))?$_POST['packArr']:[];
			$res=$B2cOrder->checkManJian($_SESSION['_userid'],$proArr,$packArr,$manArr);
			// print_r($res);
			foreach($shopArr as $shop)
			{
				$freeArr[$shop]=false;
				if($frtInfo[$shop]['shop_baoyou']>0&&!empty($res['data'][$shop])&&$res['data'][$shop]['seleTotal']>=$frtInfo[$shop]['shop_baoyou'])
				{
					$freeArr[$shop]=true;
				}
			}
			// print_r($freeArr);
			// die;
			$areaData=$B2cAddr->Get('us_address',['add_pct_ids'],sprintf(' and add_uid=%d and add_id=%d',$userId,$addrId),true);
			$area=array_slice(explode(',', $areaData['data']['add_pct_ids']), 1,1);
			$B2cFreight=new B2cFreight();
			$data=array();
			$num=[];
			//普通配件订单
			if(isset($_POST['tplId'])&&count($_POST['tplId']))
			{
				foreach ($_POST['tplId'] as $shopId => $value) 
				{
					if($freeArr[$shopId])
						continue;
					//计算每种配件的数量
					foreach ($value['num'] as $proId => $numArr) 
					{
						$num[$shopId][$proId]=array_sum($numArr);
					}
				}
				foreach ($_POST['tplId'] as $k => $v) 
				{
					if($freeArr[$k])
						continue;
					//$k====>店铺ID
					$res=$B2cFreight->getUserTemplatePrice($userId,$k,$area,$v['tpl'],$num[$k]);

					// print_r($res);
					$proKey=array_keys($res['data']['realPrice']);
					$key=[];
					foreach ($proKey as $method) 
					{
						if(count($res['data']['realPrice'][$method])==1)
						{
							$key=array_keys($res['data']['realPrice'][$method]);
						}
					}
					// print_r($key);
					foreach ($res['data']['realPrice'] as $i => $j) 
					{
						if(count($key)>0)
						{
							if($key[0]>0)
							{
								unset($j[0]);
							}
							else
							{
								unset($j[1]);
							}
						}
						// print_r($j);
						foreach ($j as $h => $g) 
						{
							$data[$k][$h][]=$g;
						}
					}
				}
			}
			//套餐订单
			if(isset($_POST['packTplId'])&&count($_POST['packTplId']))
			{
				foreach ($_POST['packTplId'] as $shopId => $tpl) 
				{
					if($freeArr[$shopId])
						continue;
					$res=$B2cFreight->getPackTplPrice($userId,$shopId,$area,$tpl['tpl'],$tpl['num']);
					$proKey=array_keys($res['data']['realPrice']);
					$key=[];
					foreach ($proKey as $method) 
					{
						if(count($res['data']['realPrice'][$method])==1)
						{
							//判断是否只有一种运送方式
							$key=array_keys($res['data']['realPrice'][$method]);//获取运送方式 
						}
					}
					// print_r($key);
					foreach ($res['data']['realPrice'] as $i => $j) 
					{
						if(count($key)>0)
						{
							if($key[0]>0)
							{
								//是否是1
								unset($j[0]);
							}
							else
							{
								//是否是0
								unset($j[1]);
							}
						}
						foreach ($j as $h => $g) 
						{
							$data[$shopId][$h][]=$g;
						}
					}
				}
			}
			foreach ($freeArr as $shopId => $tag) 
			{
				if($tag)
				{
					$max[$shopId][0]=0;
				}
			}
			// print_r($data);
			if(count($data))
			{
				foreach ($data as $k => $v) 
				{
					foreach ($v as $i => $j) 
					{
						$max[$k][$i]=max($j);
					}
				}
			}
			// print_r($max);
			LibFc::ajaxJsonEncode(['status'=>true,'data'=>$max]);			
		}
	}
	/**
	 * @method    订单提交入库
	 * @author 卢
	 * @copyright 2017-08-07
	 */
	public function addOrder()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$B2cOrder = new B2cOrder();	
		$B2cShoppingCart = new B2cShoppingCart();
		$B2cAddr= new B2cAddr();
		$B2cFreight=new B2cFreight();
		$userId=$_SESSION['_userid'];
		$shopArr=array();
		$proArr=array();
		$nPreferArr=[0,1,2,3];
		if(!$_POST['addrId']||!LibFc::Int($_POST['addrId']))
		{
			LibTpl::Error('请先添加地址','/user/address');
			exit();
		}
		// print_r($_POST['shipping']);
		// die;
		/**校验运送方式**/
		if(isset($_POST['shipping'])&&count($_POST['shipping']))
		{
			foreach ($_POST['shipping'] as $v) 
			{
				if(!in_array((int)$v, [0,1,3]))
				{
					LibTpl::Error('订单信息错误，请重新下单','/cart/index');
					exit();
				}
			}
		}
		//收货地址
		$areaData=$B2cAddr->get('us_address',['add_pct_ids'],sprintf(' and add_uid=%d and add_id=%d',$userId,$_POST['addrId']),true);
		$area=array_slice(explode(',', $areaData['data']['add_pct_ids']), 1,1);
		$nProDataArr=[];
		$manJianTotal=[];//参加满减计算的总金额
		$proCount=[];//配件数量
		$proAllArr=[];
		$shopAllTotal=[];//配件满减前总额
		//普通订单
		if(!empty($_POST['proArr']))
		{
			foreach ($_POST['proArr'] as $shop => $v) 
			{
				if(LibFc::Int($shop))
				{
					$shopArr[]=$shop;	
					$proArr=array_merge($proArr,array_keys($v));		
				}
				else
				{
					LibTpl::Error('订单信息错误，请重新下单！','/cart/index');
					exit();
				}
				
			}
			if(count($shopArr)&&isset($_SESSION['_shopid']))
			{
				if(in_array($_SESSION['_shopid'], $shopArr))
				{
					LibTpl::Error('不能购买自己店铺的配件','/cart/index');
					exit();
				}
			}
			// print_r($_POST['nPrefer']);
			// var_dump(!in_array($_POST['nPrefer'][$shop][$pro['pro_id']], $nPreferArr));
			// die;
			$res=$B2cOrder->getProductRealInfo($proArr,$userId,$shopArr,$_POST['proArr']);
			if(!empty($res['data']))
			{
				foreach ($res['data'] as $shop => $v) 
				{
					foreach($v as $k=> $pro)
					{
						if($pro['pro_status']<1)
						{
							LibTpl::Error('配件'.$pro['pro_name'].'已失效！请重新下单','/cart/index');
							exit();
						}
						if($pro['shop_status']<1)
						{
							LibTpl::Error('配件'.$pro['pro_name'].'已失效！请重新下单','/cart/index');
							exit();
						}
						if($pro['pro_count']<1)
						{
							LibTpl::Error('配件'.$pro['pro_name'].'库存不足！请重新下单','/cart/index');
							exit();
						}
						if(empty($pro['pri_frt_id']))
						{
							LibTpl::Error('配件'.$pro['pro_name'].'暂时不可购买！','/cart/index');
							exit();
						}
						if(isset($_POST['shipping'][$shop])&&in_array($_POST['shipping'][$shop], [0,1]))
						{
							foreach ($_POST['tplId'][$shop]['num'] as $proId => $num) 
							{
								$numArr[$proId]=$num[0];
							}
							//计算运费
							$re=$B2cFreight->getUserTemplatePrice($userId,$shop,$area,$_POST['tplId'][$shop]['tpl'],$numArr);
							if(count($re['data']['realPrice']))
							{
								foreach ($re['data']['realPrice'] as $methodPrice) 
								{
									$tranPrice[$shop][]=$methodPrice[$_POST['shipping'][$shop]];
								}
							}
							else
							{
								LibTpl::Error('订单信息错误，请重新下单！','/cart/index');
								exit();
							}
							$shippPriceArr[$shop]=max($tranPrice[$shop]);
						}
						else
						{
							$shippPriceArr[$shop]=0;//包邮
						}
						$discountVal=10;//折扣
						$proCount[$pro['pro_id']]+=$pro['byNum'];//配件数量
						$proAllArr[]=$pro['pro_id'];
						if(!in_array($_POST['nPrefer'][$shop][$pro['pro_id']], $nPreferArr))
						{
							LibTpl::Error('订单信息错误，请重新下单！','/cart/index');
						}
						$nProDataArr[$shop][$pro['pro_id']]['pro_count']=$pro['pro_count'];//配件数量
						$nProDataArr[$shop][$pro['pro_id']]['orp_pro_id']=$pro['pro_id'];//配件ID
						$nProDataArr[$shop][$pro['pro_id']]['orp_pro_name']=$pro['pro_name'];//配件名
						$nProDataArr[$shop][$pro['pro_id']]['orp_set_inventory']=$pro['pri_set_inventory'];//配件ID
						$nProDataArr[$shop][$pro['pro_id']]['orp_count']=$pro['byNum'];//购买数量
						$nProDataArr[$shop][$pro['pro_id']]['orp_sale_price']=$pro['pro_sale_price'];//原价
						$nProDataArr[$shop][$pro['pro_id']]['orp_prh_id']=$pro['pro_prh_id'];
						$nProDataArr[$shop][$pro['pro_id']]['orp_promotion_price']=$pro['on_promote']>0? $pro['pro_promotion_price']:$pro['pro_sale_price'];//促销价
						switch ($_POST['nPrefer'][$shop][$pro['pro_id']]) 
						{
							case '1':
								//促销优惠
								$nProDataArr[$shop][$pro['pro_id']]['orp_price']=$pro['realPrice']['promPrice'];
								//优惠后单价
								$nProDataArr[$shop][$pro['pro_id']]['orp_discount']='促销优惠';
								break;
							case '2':
								//会员优惠
								$nProDataArr[$shop][$pro['pro_id']]['orp_price']=$pro['realPrice']['vipPrice'];
								$nProDataArr[$shop][$pro['pro_id']]['orp_discount']='店铺会员优惠';
								break;
							case '3':
								//企业会员优惠
								$nProDataArr[$shop][$pro['pro_id']]['orp_price']=$pro['realPrice']['comPrice'];
								$nProDataArr[$shop][$pro['pro_id']]['orp_discount']='企业会员优惠';
								$discountVal=$pro['shop_com_discount'];
								break;
							default:
								$nProDataArr[$shop][$pro['pro_id']]['orp_price']=$pro['pro_sale_price'];
								$nProDataArr[$shop][$pro['pro_id']]['orp_discount']='无优惠';
								break;
						}
						$manJianTotal[$shop]+=($nProDataArr[$shop][$pro['pro_id']]['orp_price']*$pro['byNum']);
						$shopAllTotal[$shop]+=($nProDataArr[$shop][$pro['pro_id']]['orp_price']*$pro['byNum']);//总价
						$nProDataArr[$shop][$pro['pro_id']]['orp_discount_val']=$discountVal;//折扣
						$nProDataArr[$shop][$pro['pro_id']]['orp_discount_money']=$pro['pro_sale_price']-$nProDataArr[$shop][$pro['pro_id']]['orp_price'];//优惠总额
					}
				}
			}
			else
			{
				LibTpl::Error('订单信息错误，请重新下单！','/cart/index');
				exit();
			}
		}
		// print_r($shopAllTotal);
		// die;
		$packDataArr=[];
		if(!empty($_POST['packArr']))
		{
			//套餐
			$packArr=[];
			foreach($_POST['packArr'] as $shop=>$v)
			{
				$tplPackArr[$shop]=[];
				$packArr=array_merge($packArr,array_keys($v));
			}
			//判断套餐是否存在
			$exit=$B2cOrder->get('bc_product_pack',['prpa_id','prpa_frt_id','prpa_shop_id'],sprintf(' and prpa_id in(%s) and prpa_btime<=%d and prpa_etime>=%d',implode(',',$packArr),time(),time()));
			
			if(count($exit['data'])==count($packArr))
			{
				//套餐
					$packRes=$B2cOrder->get('bc_product_pack_link left join bc_product on prpl_pro_id=pro_id left join sh_shop on pro_shop_id=shop_id',['prpl_prpa_id','pro_id','pro_status','pro_name','pro_count','shop_status','pro_shop_id'],sprintf(' and prpl_prpa_id in(%s)',implode(',',$packArr)));
					//套餐中有配件下架或店铺禁用					
					foreach ($packRes['data'] as $proRes) 
					{
						if($proRes['pro_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单','/cart/index');
							exit();
						}
						if($proRes['shop_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单','/cart/index');
							exit();
						}
						if($proRes['pro_count']<1)
						{
							LibTpl::Error('配件'.$proRes['pro_name'].'库存不足！请重新下单','/cart/index');
							exit();
						}
					}
			}
			else
			{
				LibTpl::Error('套餐已失效！请重新下单','/cart/index');
				exit();
			}
			$res=$B2cOrder->getPackProInfo($packArr,$_SESSION['_userid']);
			if(!empty($res['data']))
			{
				foreach ($res['data'] as $packId => $v) 
				{
					$shopArr[]=$v['shopId'];
					// echo $packId;
					if(current($v['pro'])['is_manJian'])
					{
						//套餐参与满减
						$manJianTotal[$v['shopId']]+=($v['totalPackPrice']*$_POST['packArr'][$v['shopId']][$packId]);
					}
					$shopAllTotal[$v['shopId']]+=($v['totalPackPrice']*$_POST['packArr'][$v['shopId']][$packId]);
					// print_r();
					$tplPackArr[$v['shopId']][$packId]=current($v['pro'])['pri_frt_id'];
					foreach ($v['pro'] as $pro) 
					{
						$proAllArr[]=$pro['pro_id'];
						$proCount[$pro['pro_id']]+=$pro['byNum'];
					}
				}
				foreach ($_POST['packArr'] as $shop => $v) 
				{
					if(in_array($_POST['shipping'][$shop], [0,1]))
					{
						$re=$B2cFreight->getPackTplPrice($_SESSION['_userid'],$shop,$area,$tplPackArr[$shop],$v);
						// print_r($re);
						foreach ($v as $packId => $pro) 
						{
							$shippPrice[$shop][]=$re['data']['realPrice'][$packId][$_POST['shipping'][$shop]];
						}
						$shippPriceArr[$shop]=isset($shippPriceArr[$shop])&&($shippPriceArr[$shop]>max($shippPrice[$shop]))?$shippPriceArr[$shop]:max($shippPrice[$shop]);//运费
					}
					else
					{
						$shippPriceArr[$shop]=0;//运费
					}
				}
				// print_r($shippPriceArr);
			}
			else
			{
				LibTpl::Error('订单信息错误，请重新下单','/cart/index');
				exit();
			}
		}
		$shopArr=array_unique($shopArr);
		// print_r($shopArr);
		// die;
		$cutMoney=[];
		if(count($manJianTotal))
		{
			foreach ($manJianTotal as $shop => $total) 
			{
				$cutMoney[$shop]=0;
				// $shopOriAllTotal[$shop]=$shopAllTotal[$shop]-$total;
				$res=$B2cOrder->get('sh_manjian',['man_id','man_full_money','man_cut_money','man_shop_id'],sprintf(' and man_full_money<=%f and man_shop_id=%d and man_btime<=%d and man_etime>=%d order by man_cut_money desc',$total,$shop,time(),time()));
				// print_r($res);
				if($res['data'])
				{
					$manJianIdArr=array_column($res['data'], 'man_id');
					if($_POST['manJianArr'][$shop]>0)
					{
						if(!in_array($_POST['manJianArr'][$shop], $manJianIdArr))
						{
							LibTpl::Error('订单信息错误，请重新下单','/cart/index');
							exit();
						}
						foreach ($res['data'] as $manJian) 
						{
							if($_POST['manJianArr'][$shop]==$manJian['man_id'])
							{
								$cutMoney[$shop]=$manJian['man_cut_money'];
							}
						}
					}
				}
			}
		}
		// print_r($cutMoney);
		if(!empty($nProDataArr))
		{
			foreach ($nProDataArr as $shop => $v) 
			{
				$index=1;
				$countNum=count($pro);
				$proDisMoney=0;
				foreach ($v as $k=> $pro) 
				{
					if(isset($manJianTotal[$shop])&&isset($cutMoney[$shop]))
					{
						if($index==$countNum)
						{
							$nProDataArr[$shop][$k]['orp_money']=$pro['orp_price']*$pro['orp_count']-$cutMoney[$shop]+$dis;
						}
						else
						{
							$dis=round(($pro['orp_price']/$manJianTotal[$shop])*$cutMoney[$shop],2);
							$proDisMoney+=$dis;
							$nProDataArr[$shop][$k]['orp_money']=$pro['orp_price']*$pro['orp_count']-$dis;
						}
					}
					else
					{
						$nProDataArr[$shop][$k]['orp_money']=$pro['orp_price']*$pro['orp_count'];
					}
					$index++;
				}
				// echo $dis,'</br>';
			}
		}
		if(count($proCount))
		{
			//判断库存
			//最终判断配件数量
			$countData=$B2cOrder->get('bc_product',['pro_id','pro_count','pro_name'],sprintf(' and pro_id in(%s)',implode(',',array_keys($proCount))));
			foreach ($countData['data'] as $v) 
			{
				if($proCount[$v['pro_id']]>$v['pro_count'])
				{
					LibTpl::Error('配件'.$v['pro_name'].'库存不足，请重新下单','/cart/index');
					exit();
				}
			}
		}
		else
		{
			LibTpl::Error('订单信息错误，请重新下单','/cart/index');
			exit();
		}
		foreach ($shopArr as $shop) 
		{
			if(!isset($shippPriceArr[$shop])||!isset($shopAllTotal[$shop]))
				LibTpl::Error('订单信息错误，请重新下单','/cart/index');

			$dataArr['proArr'][$shop]['norProArr']=isset($nProDataArr[$shop])?$nProDataArr[$shop]:[];
			$dataArr['proArr'][$shop]['packProArr']=isset($_POST['packArr'][$shop])?$_POST['packArr'][$shop]:[];
		}
		$dataArr['shippPriceArr']=$shippPriceArr;
		$dataArr['cutMoney']=$cutMoney;
		$dataArr['shopAllTotal']=$shopAllTotal;
		$dataArr['remark']=$_POST['remark'];
		$dataArr['shipping']=$_POST['shipping'];
		// print_r($dataArr);
		// die;
		$public=empty($_POST['public'])?0:$_POST['public'];
		$res=$B2cOrder->addOrder($dataArr,$userId,$_POST['addrId'],$public);
		// print_r($proArr);
		// print_r($_POST['buyNow']);
		// die;
		if($res['status'])
		{
			if(count($proArr)&&empty($_POST['buyNow']))
			{
				$exist=$B2cShoppingCart->Get('us_cart',['count(*) count'],sprintf(' and car_uid=%d and car_pro_id in(%s)',$userId,implode(',',$proArr)),true);
				if($exist['data']['count']>0)
				{
					//删除购物车
					$B2cShoppingCart->delShoppingCart($proArr,$userId);
				}
			}
			//删除购物车套餐
			if(isset($packArr)&&count($packArr)&&empty($_POST['buyNow']))
			{
				$B2cShoppingCart->delPackage($packArr,$userId);
			}
			$orderString=implode(',',$res['data']);
			LibFc::Go('/order/pay?ordId='.$orderString);
			//提交成功，删除购物车
		}
	}
	/**
	 * @method    判断配件库存和是否属于自己的商品
	 * @author 卢
	 * @copyright 2017-08-09
	 */
	public function getProCount()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$B2cOrder = new B2cOrder();
		$shopArr=array();
		$proArr=array();
		$proCountArr=[];
		$tag['count']=true;
		//普通配件
		if(count($_POST['pro']))
		{
			foreach ($_POST['pro'] as $k => $v) 
			{
				if($k==$_SESSION['_shopid'])
				{
					LibFc::ajaxJsonEncode(['status'=>false,'data'=>'不能购买自己店铺的配件！']);
					exit();
				}
				$shopArr[]=$k;	
				foreach ($v as $i => $j) 
				{
					$proCountArr[$i]+=$j;
				}
			}
		}
		//套餐
		if(isset($_POST['packId'])&&count($_POST['packId']))
		{
			foreach ($_POST['packId'] as $shopId => $packArr) 
			{
				$packIdArr=array_keys($packArr);
				if(count($packIdArr))
				{
					$packRes=$B2cOrder->get('bc_product_pack_link left join bc_product_pack on prpa_id=prpl_prpa_id left join bc_product on prpl_pro_id=pro_id left join sh_shop on pro_shop_id=shop_id',['prpl_prpa_id','pro_id','pro_status','pro_count','shop_status','shop_id'],sprintf(' and prpl_prpa_id in(%s) and shop_id=%d',implode(',',$packIdArr),$shopId));
				}
				if(!empty($packRes['data']))
				{
					foreach ($packRes['data'] as $pack) 
					{
						if($pack['shop_id']==$_SESSION['_shopid'])
						{
							LibFc::ajaxJsonEncode(['status'=>false,'data'=>'不能购买自己店铺的配件！']);
							exit();
						}
						if($pack['pro_status']<1)
						{
							LibFc::ajaxJsonEncode(['status'=>false,'data'=>'套餐已失效，请重新下单！']);
							exit();
						}
						if($pack['shop_status']<1)
						{
							LibFc::ajaxJsonEncode(['status'=>false,'data'=>'套餐已失效，请重新下单！']);
							exit();
						}
						if($pack['pro_count']<1)
						{
							$tag['count']=false;
							$tag['id']=$pack['pro_id'];
							LibFc::ajaxJsonEncode(['status'=>true,'data'=>$tag]);
							exit();
						}
						$proCountArr[$pack['pro_id']]+=1;//套餐配件数量
					}
				}
				else
				{
					LibFc::ajaxJsonEncode(['status'=>false,'data'=>'套餐已失效，请重新下单！']);
					exit();
				}
			}
		}
		if(count($proCountArr))
		{
			$proRes=$B2cOrder->Get('bc_product',['pro_count','pro_id','pro_name'],sprintf(' and pro_id in(%s)',implode(',',array_keys($proCountArr))));
			foreach ($proRes['data'] as $v) 
			{
				if($v['pro_count']<$proCountArr[$v['pro_id']])
				{
					$tag['count']=false;
					$tag['id']=$v['pro_id'];
					LibFc::ajaxJsonEncode(['status'=>true,'data'=>$tag]);
					exit();
				}
			}
		}
		else
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'订单信息错误，请重新下单！']);
			exit();
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>$tag]);	
	}


	/**
	  * @method 订单支付
	  * @author soul 2017/8/12
	  */
	function pay()
	{	
		//是否登录
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		//校验订单合法性
		if(empty($Params['ordId'])) LibTpl::Error('订单不存在或者已被删除！', '/user/order');

		$temIdArr = [];
		foreach(explode(',', $Params['ordId']) as $v)
		{
			$temIdArr[] = (int) $v;
		}
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('or_order', ['ord_id', 'ord_status', 'ord_pay_money'], sprintf(" and ord_id in (%s) and ord_uid = %d order by ord_id", implode(',', $temIdArr), $_SESSION['_userid']));
		if(empty($res['data'])) LibTpl::Error('订单不存在或者已被删除！', '/user/order');
		
		$toPayArr = ['ids'=>[], 'money'=>0.00];
		foreach($res['data'] as $v)
		{
			if($v['ord_status'] == 'paied')
			{
				LibTpl::Error('订单ID：'.$v['ord_id'].'已完成支付，请勿重复支付！', '/user/detail?orderId='.$v['ord_id']);
			}
			else if($v['ord_status'] != 'creat')
			{
				LibTpl::Error('订单ID：'.$v['ord_id'].'状态异常，请稍后重试！', '/user/detail?orderId='.$v['ord_id']);
			}
			else
			{
				$orderArr[$v['ord_id']] = $v;
				$toPayArr['ids'][] = $v['ord_id'];
				$toPayArr['money'] += $v['ord_pay_money'];
			}
		}
		sort($toPayArr['ids']);

		//没有待支付的订单，跳转至订单列表页
		if(empty($toPayArr['ids']))  LibTpl::Error('订单不存在或者已被删除！', '/user/order');
		$ordIds = implode(',', $toPayArr['ids']);

		//付款减判断库存
		$res=$B2cBase->get('or_order_product left join bc_product on pro_id=orp_pro_id',['pro_id', 'pro_count', 'orp_count', 'orp_set_inventory'], sprintf(' and orp_ord_id in(%s)', $ordIds));
		foreach ($res['data'] as $v) 
		{
			if($v['orp_set_inventory'] < 1 && $v['orp_count'] > $v['pro_count'])
			{
				LibTpl::Error('配件ID：'.$v['pro_id'].'库存不足，请重新下单！', '/user/order');
			}
		}

		$LibYpApi = new LibYpApi();
		$B2cOrder = new B2cOrder();

		//分别检查已创建的支付二维码状态
		$res = $B2cBase->get('or_order_pay_list_link join or_order_pay_list on opl_id = opll_opl_id', ['distinct opl_por_guid'], 
			sprintf(" and opll_ord_id in (%s) and opl_status != 'close' and opl_por_guid is not null", $ordIds));
		foreach($res['data'] as $v)
		{
			$res = $LibYpApi->get('order/checkPay', [], ['por_guid'=>$v['opl_por_guid']]);
			$payArr = $res['data'];
			if($payArr['por_status'] == 1)
			{
				//此交易在支付平台支付已完成，但是商城对应的订单状态未修改
				$res = $B2cBase->get('or_order_pay_list', ['opl_id'], sprintf(" and opl_por_guid='%s'", $v['opl_por_guid']), true);
				$B2cOrder->payOkByoplId($res['data']['opl_id']);
				LibTpl::Error('订单已支付，请勿重复付款！', '/user/order');
			}
		}

		//获取订单配件信息
		$res = $B2cBase->get('or_order_product', ['orp_ord_id, orp_pro_name, orp_count'], sprintf(" and orp_ord_id in (%s)", $ordIds));
		foreach($res['data'] as $v)
		{
			$orderArr[$v['orp_ord_id']]['pros'][] = $v;
		}

		LibTpl::Set('toPayArr', $toPayArr);
		LibTpl::Set('orderArr', $orderArr);
		LibTpl::Set('ComTitle', '订单支付');

		$headArr = [
			'title'=>'订单支付-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}


	/**
	  * @method 订单支付成功跳转页
	  * @author soul 2017/8/12
	  */
	function payOk()
	{	
		//是否登录
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$oplId = (int) $Params['oplId'];
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('or_order_pay_list', ['opl_por_id'], sprintf(" and opl_id =%d", $oplId), true);
		if(empty($res['data'])) LibTpl::Error('oplId不存在或者已被删除！', '/user/order');
		$LibYpApi = new LibYpApi();
		$res = $LibYpApi->get('order/checkPay', [], ['por_id'=>$res['data']['opl_por_id']]);
		$payArr = $res['data'];

		$res = $B2cBase->get('or_order_pay_list_link', ['opll_ord_id'], sprintf(" and opll_opl_id =%d order by opll_ord_id", $oplId));
		$ordIdArr = array_column($res['data'], 'opll_ord_id');

		if($payArr['por_status'] == 1)
		{
			$B2cOrder = new B2cOrder();
			$B2cOrder->payOkByoplId($oplId);
			LibTpl::Success('订单ID：'.implode(',', $ordIdArr).'支付成功！', '/user/detail?orderId='.implode(',', $ordIdArr));
		}
		else
		{
			LibTpl::Error('订单ID：'.implode(',', $ordIdArr).'尚未完成支付，请稍后重试！', '/user/order');
		}
	}



	/**
	  * @method 根据订单号获取对应方式的支付链接或二维码
	  * @author soul 2017/8/12
	  */
	function getPayUrl()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		
		if(!in_array($Params['payBy'], ['weixin', 'alipay'])) LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'支付方式不存在！']);
		$PayBy = $Params['payBy'];
		$payType = $Params['payType'];

		$temIdArr = [];
		foreach(explode(',', $Params['ordId']) as $v)
		{
			$temIdArr[] = (int) $v;
		}

		if(empty($temIdArr)) LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'订单不存在或者已被删除！']);
		
		$B2cBase = new B2cBase();
		$res = $B2cBase->get('or_order', ['ord_id', 'ord_pay_money'], sprintf(" and ord_id in (%s) and ord_status='creat' and ord_uid = %d order by ord_id", implode(',', $temIdArr), $_SESSION['_userid']));
		$toPayArr = ['ids'=>[], 'money'=>0.00];
		foreach($res['data'] as $v)
		{
			$toPayArr['ids'][] = $v['ord_id'];
			$toPayArr['money'] += $v['ord_pay_money'];
		}
		if(empty($toPayArr['ids']))  LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'订单状态异常，请稍后重试！']);

		//没有待支付的订单，跳转至订单列表页
		$ordIds = implode(',', $toPayArr['ids']);
		//付款减判断库存
		$res=$B2cBase->get('or_order_product left join bc_product on pro_id=orp_pro_id',['pro_id', 'pro_count', 'orp_count', 'orp_set_inventory'], sprintf(' and orp_ord_id in(%s)', $ordIds));
		foreach ($res['data'] as $v) 
		{
			if($v['orp_set_inventory'] < 1 && $v['orp_count'] > $v['pro_count'])
			{
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'库存不足，请重新下单！']);
			}
		}

		$LibYpApi = new LibYpApi();
		$B2cOrder = new B2cOrder();

		//分别检查已创建的支付二维码状态
		$res = $B2cBase->get('or_order_pay_list_link join or_order_pay_list on opl_id = opll_opl_id', ['distinct opl_por_guid'], 
			sprintf(" and opll_ord_id in (%s) and opl_status != 'close' and opl_por_guid is not null", $ordIds));
		foreach($res['data'] as $v)
		{
			$res = $LibYpApi->get('order/checkPay', [], ['por_guid'=>$v['opl_por_guid']]);
			$payArr = $res['data'];
			if($payArr['por_status'] == 1)
			{
				//此交易在支付平台支付已完成，但是商城对应的订单状态未修改
				$res = $B2cBase->get('or_order_pay_list', ['opl_id'], sprintf(" and opl_por_guid='%s'", $v['opl_por_guid']), true);
				$B2cOrder->payOkByoplId($res['data']['opl_id']);
				LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'订单已支付，请勿重复付款！']);
			}
		}
		
		//检查是否已经创建支付明细
		$where = sprintf(" and opl_style = 0 and opl_pam_code='%s' and opl_pay_type='%s' and opl_money=%.2f and opl_status='wait'", $PayBy, LibFc::Escape($payType), $toPayArr['money']);
		$res = $B2cOrder->getPayListId($where, $toPayArr['ids']);
		$oplDataArr = [];
		if(empty($res['data']))
		{
			$oplDataArr = [
				'opl_por_id'=>0,
				'opl_por_guid'=>LibFc::guid(),
				'opl_pam_code'=>$PayBy,
				'opl_pay_type'=>$payType,
				'opl_money'=>$toPayArr['money'],
				'opl_style'=>0
			];
			$res = $B2cOrder->addPayList($toPayArr['ids'], $oplDataArr);
			$oplId = $res['data'];
			$backUrl = $PayBy == 'weixin'? mvc::$cfg['HOST']['orderPayBack'] : mvc::$cfg['HOST']['b2c'].'order/payOk?oplId='.$oplDataArr['opl_id'];
			//获取支付二维码
			$dataArr = [
				'por_guid'=>$oplDataArr['opl_por_guid'],
				'por_u_id'=>$_SESSION['_userid'],
				'por_style'=>'PJDORD',
				'por_orderids'=>$ordIds,
				'por_pay_method'=>$PayBy,
				'por_pay_type'=>$payType,
				'por_money'=>$toPayArr['money'],
				'por_title'=>'跑街的订单：'.$ordIds,
				'por_back_url'=>$backUrl,
				'por_from'=>'PJD'
			];
			
			$res = $LibYpApi->get('order/buildPay', [], $dataArr);
			$payArr = $res['data'];
			$B2cBase->set('or_order_pay_list', ['opl_por_id'=>$payArr['por_id']], sprintf(" and opl_id=%d", $oplId));
		}
		else
		{
			$oplId = $res['data'][0];
			$res = $B2cBase->get('or_order_pay_list', ['opl_por_id'], sprintf(" and opl_id =%d", $oplId), true);
			$res = $LibYpApi->get('order/getPayPage', ['por_id'=>$res['data']['opl_por_id']]);
			$payArr = $res['data'];
		}
		if($PayBy == 'alipay' && $payType != 'app')
		{
			$payArr['por_return_data']['pay_form'] = base64_decode($payArr['por_return_data']['pay_form']);
		}
		LibFc::ajaxJsonEncode(['status'=>true, 'data'=>['opl_id'=>$oplId, 'pay'=>$payArr['por_return_data']]]);
	}


	/**
	  * @method 检查订单的支付情况
	  * @author soul 2017/8/12
	  */
	function checkOrderPay()
	{
		$Params = mvc::$URL_PARAMS;
		$returnArr = ['status'=>true, 'data'=>'wait'];
		if(empty($Params['ordId'])) $returnArr = ['status'=>false, 'data'=>'订单ID异常，请稍后重试！'];
		$ordIdArr = [];
		foreach(explode(',', $Params['ordId']) as $v)
		{
			$ordIdArr[] = (int) $v;
		}
		$Params['ordId'] = implode(',', $ordIdArr);
		
		$where = sprintf(" and opl_id in(
			select distinct opl_id from (
				select group_concat(distinct opll_ord_id) ord_ids, opl_id from or_order_pay_list_link join or_order_pay_list on opl_id = opll_opl_id
				where opll_ord_id in (%s) and opl_status != 'close' and opl_por_guid is not null group by opl_id
			) as a where ord_ids='%s'
		)", $Params['ordId'], $Params['ordId']);

		$B2cBase = new B2cBase();
		$LibYpApi = new LibYpApi();
		$res = $B2cBase->get('or_order_pay_list', ['opl_id', 'opl_money', 'opl_status', 'opl_por_id'], $where);
		foreach($res['data'] as $v)
		{
			if($v['opl_status'] == 'wait')
			{
				$res = $LibYpApi->get('order/checkPay', [], ['por_id'=>$v['opl_por_id']]);
				$payArr = $res['data'];
				if($payArr['por_status'] == 1 && $payArr['por_money'] == $v['opl_money'])
				{
					//修改订单状态
					$B2cOrder = new B2cOrder();
					$B2cOrder->payOkByoplId($v['opl_id']);
					$returnArr = ['status'=>true, 'data'=>'paied'];
					break;
				}
			}
			else if($v['opl_status'] == 'paied')
			{
				$returnArr = ['status'=>true, 'data'=>'paied'];
				break;
			}
		}
		LibFc::ajaxJsonEncode($returnArr);
	}


	/**
	  * @method 支付平台付款完成后的回调 order/orderPayCallback?por_guid=xxx
	  * @author soul 2017/11/2
	  */
	function orderPayCallback()
	{
		set_time_limit(120);
		ignore_user_abort(true); 
		$Params = mvc::$URL_PARAMS;
		if(!empty($Params['por_guid']))
		{
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('or_order_pay_list join or_order_pay_list_link on opl_id=opll_opl_id', ['opl_id', 'opll_order_id'], sprintf(" and opl_por_guid='%s' and opl_status='wait'", LibFc::Escape($Params['por_guid'])), true);
			if(!empty($res['data']))
			{
				$B2cOrder = new B2cOrder();
				$B2cOrder->payOkByoplId($res['data']['opl_id']);
				LibTpl::Go('/user/detail?orderId='.$res['data']['opll_order_id']);
			}
		}
		LibTpl::Error('参数异常', '/user/order');
	}



	/**
	  * @method 申请售后     ?orpId=xxx
				修改售后协议 ?repId=xxx
	  * @author soul 2017/8/12
	  */
	public function applyRefund()
	{
		// 检测登录状态
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$Params = mvc::$URL_PARAMS;
		$repId = 0;

		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();
		// print_r($_REQUEST);
		// die;
		//保存退款协议
		if(!empty($_POST['rep']) && !empty($_POST['rep']['rep_orp_id']))
		{
			$repArr = $_POST['rep'];
			$dataArr['rep_status'] =  'wait';
			if($repArr['rep_type'] == 2) $repArr['rep_money'] = 0.00;
			$repArr['rep_uid'] = $_SESSION['_userid'];
			if(!empty($repArr['rep_id']))
			{
				$dataArr['rep_apply_time'] = time();
				$res = $B2cOrder->setRefund($repArr['rep_id'], $repArr);
			}
			else
			{
				$res = $B2cOrder->addRefund($repArr);
			}

			LibFc::Go('/order/viewRefundByBuyer?repId='.$res['data']);
		}
		$type = 'apply';
		if(!empty($Params['repId']))
		{
			//修改退款协议
			$res = $B2cBase->get('or_refund_pact join or_order on rep_ord_id=ord_id join or_order_product on orp_ord_id=ord_id',['*'],sprintf(" and rep_id=%d and ord_uid=%d ", $Params['repId'], $_SESSION['_userid']), true);
			if(empty($res['data'])) LibTpl::Error('退款ID：'.$Params['repId'].'不存在！', '/user/order');

			// 卖家同意退款、卖家已寄回货物、退款关闭、退款完成 =》 禁止重新提交退款申请
			if($res['data']['rep_status']=='confirm' || $res['data']['rep_status']=='refundpro' || $res['data']['rep_status']=='close'|| $res['data']['rep_status']=='refunded')
			{
				LibFc::Go('/order/viewRefundByBuyer?repId='.$res['data']['rep_id']);
				exit;
			}

			$repArr = $res['data'];
			LibTpl::Set('repArr',$repArr);
			$type = 'edit';
			$repId = $repArr['rep_id'];
			$orpId = $repArr['rep_orp_id'];
		}
		else if(!empty($Params['orpId']))
		{
			//新申请
			$orpId = (int) $Params['orpId'];
			//检测此配件订单是否存在
			$res = $B2cBase->get('or_order_product join or_order on orp_ord_id=ord_id ',['*'],sprintf(" and orp_id=%d and ord_uid=%d ", $orpId, $_SESSION['_userid']), true);
			$repArr = $res['data'];
			if(empty($repArr)) LibTpl::Error('订单不存在或者已被删除！', '/user/order');

			if(!empty($repArr))
			{
				//卖家信息
				// $B2cShop = new B2cShop();
				// $res = $B2cShop->getShopInfo($repArr['ord_shop_id']);
				// $repArr['shopInfo'] = $res['data'];
				// 获取买家头像
				$YpwUser = new YpwUser();
				$res = $YpwUser->Get('yp_user', array('u_logo',), ' and u_id='.$repArr['ord_uid'], true);
				$userInfo['logo'] = $res['data']['u_logo'];
				// 获取买家名称
				$res = $B2cBase->get('us_user_base',['ub_username'],sprintf(" and ub_uid=%d ",$repArr['ord_uid']),true);
				$userInfo['username'] = $res['data']['ub_username'];
				$repArr['userInof'] = $userInfo;
			}


			//检查此配件是否有未完成退款记录
			$res = $B2cBase->get('or_refund_pact',['rep_id'],sprintf(" and rep_orp_id=%d and rep_status in ('wait', 'confirm', 'refuse') limit 1", $orpId), true);
			if(!empty($res['data'])) LibFc::Go('/order/viewRefundByBuyer?repId='.$res['data']['rep_id']);
		}
		if(empty($repArr)) LibFc::Go('/user/order');

		
		LibTpl::Set('repArr',$repArr);
		$res = $B2cOrder->getRefundMoney($orpId, $repId);
		// print_r($res['data']);
		$maxMoney = $res['data'];
		if($maxMoney['maxMoney']<0.01)
		{
			LibTpl::Error('该订单不允许退款！', '/user/order');
		}
		LibTpl::Set('maxMoney',$maxMoney);
		LibTpl::Set('type',$type);

		$res = $B2cOrder->getRefundType();
		LibTpl::Set('refundType',$res['data']);

		$res = $B2cOrder->getRefundReason();
		LibTpl::Set('refundReason', $res['data']);


		//配件图片
		$B2cProduct = new B2cProduct;
		$res = $B2cProduct->getProductPic([$repArr['orp_pro_id']]);
		$res = isset($res['data'][$repArr['orp_pro_id']])?current($res['data'][$repArr['orp_pro_id']]):[];
		LibTpl::Set('proPicArr', $res);
		
		//卖家信息
		$B2cShop = new B2cShop();
		$res = $B2cShop->getShopInfo($repArr['ord_shop_id']);
		LibTpl::Set('shopInfo', $res['data']);
		
		$headArr = [
			'title'=>'订单申请售后-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}


	/**
	  * @method 买家售后详情 ?repId=xxx
	  * @author soul 2017/8/12
	  */
	public function viewRefundByBuyer()
	{
		// 检测登录状态
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$Params = mvc::$URL_PARAMS;
		
		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();


		if(isset($Params['repId']))
		{
			// 在applyrefund方法之中跳转过来
			if(!LibFc::Int($Params['repId'])) LibTpl::Error('参数错误！', '/user/order');
			// 校验退款单
			$where = sprintf(" and rep_id=%d and rep_uid=%d ",(int)$Params['repId'],$_SESSION['_userid']);
			$res=$B2cBase->get('or_refund_pact',['*'],$where,true);
			$repArr = $res['data'];
		}
		elseif(isset($Params['orpId']))
		{
			// 在订单列表之中跳转过来
			$orpId = (int) $Params['orpId'];
			$res = $B2cBase->get("or_refund_pact",['*'],sprintf(" and rep_orp_id=%d and rep_uid=%d and rep_status!='close' order by rep_apply_time desc ", $orpId, $_SESSION['_userid']), true);
			$repArr = $res['data'];
		}
		else
		{
			LibTpl::Error('参数错误！', '/user/order');
		}

		if(empty($repArr)) LibTpl::Error('退款申请记录：不存在！', '/user/order');

		// 调用接口校验
		$B2cOrder->checkRefund($repArr['rep_id']);

		// 获取当前配件订单信息
		$res = $B2cBase->get('or_order_product',['*'],sprintf(" and orp_id=%d ",$repArr['rep_orp_id']),true);
		LibTpl::Set('orderProductMsg',$res['data']);


		$repId = $repArr['rep_id'];
		//计算是否超时更新状态 
		$B2cOrder->autoRefundStatus($repId);
		
		// 获取该条售后申请相关数据
		$res = $B2cOrder->getRefundkMsg($repId);
		$repArr = $res['data'];
		LibTpl::Set('repArr',$repArr);

		// 如果有卖家退货地址
		if(!empty($repArr['rep_refund_addr'])) LibTpl::Set("sellerAddress",json_decode($repArr['rep_refund_addr'],true));
		
		// 如果有买家退回的物流信息
		if(!empty($repArr['rep_express_des'])) LibTpl::Set("buyerRepAddress",json_decode($repArr['rep_express_des'],true));
		
		
		//获取所有退款原因
		$res = $B2cOrder->getRefundType();
		LibTpl::Set('refundType',$res['data']);

		// 针对不同的状态计算不同的倒计时
		$res = $B2cOrder->getRemaintime($repArr);
		LibTpl::Set('hasHowmuchTime',$res['data']);

		// 将退款ID传递过去
		$Params['repId'] = $repId;
		LibTpl::Set('Params',$Params);
		
		$headArr = [
			'title'=>'退款申请-跑街的',
			'keyword'=>'',
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);

		LibTpl::Put();
	}


	/**
	  * @method 买家售后历史记录 ?orpId=xxx
	  * @author xu 2018/01/05
	  */
	public function viewRefundHistory()
	{
		// 检测登录状态
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$Params = mvc::$URL_PARAMS;
		
		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();
		// 校验参数
		if(isset($Params['orpId']))
		{
			// 获取退款记录信息
			$orpId = (int) $Params['orpId'];
			$res = $B2cBase->get("or_refund_pact left join or_order_product on orp_id=rep_orp_id left join or_order on ord_id=orp_ord_id ",['*'],sprintf(" and rep_orp_id=%d and rep_uid=%d and rep_status in ('close','refunded') order by rep_atime desc ", $orpId, $_SESSION['_userid']));
			$repArr = $res['data'];
			$firstRep = current($repArr);
			if(empty($repArr))
			{
				LibTpl::Error('参数错误！', '/user/order');
			}
		}
		else
		{
			LibTpl::Error('参数错误！', '/user/order');
		}
		$allRepId = array();
		// 获取退款记录对应退款ID
		foreach ($repArr as $k => $v)
		{
			$allRepId[] = $v['rep_id'];
		}
		// 获取所有日志信息
		$res = $B2cBase->get("or_refund_log",['*'],sprintf(" and rel_rep_id in(%s) order by rel_atime desc ",implode(',', $allRepId)));
		$res = $res['data'];
		// 拼接退款记录和日志
		foreach ($repArr as $k => $v)
		{
			foreach ($res as $kk => $vv)
			{
				if($vv['rel_rep_id']==$v['rep_id'])
				{
					$repArr[$k]['log'][] = $vv;
				}
			}
		}
		LibTpl::Set('repArr',$repArr);
		//获取所有退款原因
		$res = $B2cOrder->getRefundType();
		LibTpl::Set('refundType',$res['data']);
		//配件图片
		$B2cProduct = new B2cProduct;
		$res = $B2cProduct->getProductPic([$firstRep['orp_pro_id']]);
		$res = isset($res['data'][$firstRep['orp_pro_id']])?current($res['data'][$firstRep['orp_pro_id']]):[];
		LibTpl::Set('proPic',$res);		
		//卖家信息
		$B2cShop = new B2cShop();
		$res = $B2cShop->getShopInfo($firstRep['ord_shop_id']);
		$shopInfo = $res['data'];
		LibTpl::Set('shopInfo',$shopInfo);
		// 获取买家头像
		$YpwUser = new YpwUser();
		$res = $YpwUser->Get('yp_user', array('u_logo',), ' and u_id='.$firstRep['ord_uid'], true);
		$userInfo['logo'] = $res['data']['u_logo'];
		// 获取买家名称
		$res = $B2cBase->get('us_user_base',['ub_username'],sprintf(" and ub_uid=%d ",$firstRep['ord_uid']),true);
		$userInfo['username'] = $res['data']['ub_username'];
		LibTpl::Set('userInfo',$userInfo);
		// 设置meta信息
		$headArr = [
			'title'=>'售后历史记录-跑街的',
			'keyword'=>'',
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);

		LibTpl::Put();
	}


	/**
	  * @method 系统自动处理申请退款中的超时情况 ?repId=xxx
	  * @author soul 2017/8/12
	  */
	public function autoRefundStatus()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cOrder = new B2cOrder();
		$B2cOrder->autoRefundStatus($repId);
		echo 'ok';
	}



	/**
	 * @method  买家填写退货物流信息页面   
	 * @author xu
	 * @copyright 2017-11-01
	 */
	public function writDownAddressMsg()
	{
		
		// 检测登录状态
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$B2cProduct = new B2cProduct;
		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();
		$Params = mvc::$URL_PARAMS;
		LibTpl::Set('Params',$Params);
		// 校验当前的退款申记录ID
		$repId = $Params['repId'];
		if(!LibFc::Int($repId))
		{
			LibTpl::Error('参数错误！');
		}
		// 校验当前的退款记录必须是当前买家的
		$res = $B2cBase->get("or_refund_pact",['rep_id'],sprintf(" and rep_id=%d and rep_uid=%d and rep_status!='close' ",$repId,$_SESSION['_userid']),true);
		if(empty($res['data']))
		{
			LibTpl::Error('退款申请记录不存在！');
		}
		// 获取当前退款记录的相关数据
		$res = $B2cOrder->getRefundkMsg($repId);
		$repArr = $res['data'];
		LibTpl::Set('repArr',$repArr);

		// 获取所有退款类型
		$res = $B2cOrder->getRefundType();
		LibTpl::Set('refundType',$res['data']);
		// 获取所有快递公司名称用于用户填写寄回物流时候自动填充
		$B2cExpress = new B2cExpress();
		$res = $B2cExpress->getExpress();
		$res = $res['data'];
		$newRes = array();
		$i = 0;
		foreach ($res as $key => $value) {
		 	$newRes[$i]['name'] = $value['exp_name'];
		 	$newRes[$i]['code'] = $value['exp_code'];
		 	$i++;
		}
		LibTpl::Set('allAddrCompanyJson',json_encode($newRes,JSON_UNESCAPED_UNICODE));
		// 引入自动填充插件
		$this->HEAD_CSSJS['plugin'][] = 'autocomplete';
		LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
		// meta参数
		$headArr = [
			'title'=>'买家填写物流信息-跑街的',
			'keyword'=>'',
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Put();
	}


	/**
	  * @method 买家主动取消售后服务申请
	  * @author xu 2017/10/30
	  */
	function cancleServiceApply()
	{
		// 检测登录状态
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		// 校验参数
		$rep_id = $_POST['rep_id'];

		if(!LibFc::Int($rep_id))
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();
		// 校验当前配件订单属于当前买家
		$res = $B2cBase->get(' or_refund_pact  ',['*'],sprintf(" and rep_id=%d and rep_uid=%d ",$rep_id,$_SESSION['_userid']),true);
		
		if(empty($res['data']))
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
		// 校验当前配件订单状态不能是退款完成或者退款关闭的状态
		if($res['data']['rep_status'] == 'close' || $res['data']['rep_status'] == 'refunded')
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
		// 调用接口撤销退款申请
		$res = $B2cOrder->closeRefund($rep_id);

		// 添加关闭日志记录
		// 调用接口增加退款日志
		$logArr = [
			'rel_rep_id'=>$rep_id,
			'rel_txt'=>'买家撤销售后服务申请！',
			'rel_atime'=>time(),
			'rel_utype'=>1
		];
		$B2cOrder = new B2cOrder();
		$B2cOrder->addRefundLog($logArr);


		if($res['status'])
		{
			$msg = array('status'=>true,'data'=>true);
			LibFc::ajaxJsonEncode($msg);
		}
		else
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
	}




	/**
	  * @method 订单不存在或者已被删除.....
	  * @author soul 2017/8/12
	  */
	function orderErr()
	{
		$headArr = [
			'title'=>'订单详情-跑街的',
			'keyword'=>'',	
			'des'=>''
		];
		LibTpl::Set('headArr', $headArr);
		LibTpl::Error('获取订单信息失败，订单不存在或者已被删除，请稍后重试！');
		// LibTpl::Put();
	}


	/**
	 * @method    再次购买
	 * @author 卢
	 * @copyright 2017-08-18
	 */
	public function buyAgain()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$B2cOrder = new B2cOrder();
		if(LibFc::Int($Params['orderId']))
		{
			$B2cShoppingCart= new B2cShoppingCart();
			$packArr=[];
			$proArr=$B2cOrder->get('or_order_product',['orp_count','orp_pro_id','orp_prpa_id'],sprintf(' and orp_ord_id=%d',LibFc::Int($Params['orderId'])));
			if(count($proArr['data']))
			{
				foreach ($proArr['data'] as $v) 
				{
					$allProArr[$v['orp_pro_id']]+=$v['orp_count'];//配件数量
					if(!empty($v['orp_prpa_id']))
					{
						//套餐
						$packArr[]=$v['orp_prpa_id'];
						continue;
					}
					$proIdArr[]=$v['orp_pro_id'];
				}
			}
			if(count($allProArr))
			{
				$where=sprintf(' and pro_id in(%s)',implode(',',array_keys($allProArr)));
				$ex=$B2cOrder->get('bc_product left join sh_shop on pro_shop_id=shop_id',['pro_id','pro_shop_id','pro_status','shop_status','pro_count'],$where);
				if(!count($ex['data']))
				{
					LibTpl::Error('配件已下架或已失效');
					exit();
				}
				foreach ($ex['data'] as $v) 
				{
					if($v['pro_status']<1)
					{
						LibTpl::Error('配件已下架或已失效');
						exit();
					}
					if($v['shop_status']<1)
					{
						LibTpl::Error('配件已下架或已失效');
						exit();
					}
					if($v['pro_count']<$allProArr[$v['pro_id']])
					{
						LibTpl::Error('配件库存不足');
						exit();
					}
					if(isset($_SESSION['_shopid'])&&$v['pro_shop_id']==$_SESSION['_shopid'])
					{
						LibTpl::Error('不能购买自己店铺的配件');
						exit();
					}

				}
				$ex['data']=array_column($ex['data'],null,'pro_id');
				//普通订单
				if(count($proIdArr))
				{
					foreach ($proIdArr as $proId) 
					{
						//去除套餐的配件
						if(isset($ex['data'][$proId]))
						{
							$norArr[$proId]=$ex['data'][$proId];	
						}
					}
					$pro=array();
					foreach ($proArr['data'] as $k => $v) 
					{
						//计算库存，超过库存则为库存数
						$pro[$v['orp_pro_id']]=($norArr[$v['orp_pro_id']]['pro_count']>=$v['orp_count'])?$v['orp_count']:$norArr[$v['orp_pro_id']]['pro_count'];

					}
					if(count($pro))
					{
						$proCart=$B2cShoppingCart->Get('us_cart',['car_pro_id','car_count'],sprintf(' and car_pro_id in(%s) and car_uid=%d',implode(',',array_keys($pro)),$_SESSION['_userid']));
					}
					if(count($proCart['data'])>0)
					{
						foreach ($proCart['data'] as $k => $v) 
						{
							$pro[$v['car_pro_id']]=$pro[$v['car_pro_id']]>$v['car_count']? ($pro[$v['car_pro_id']]-$v['car_count']) : $pro[$v['car_pro_id']];
						}
					}
					foreach ($pro as $k => $v) 
					{
						if($v>0)
						{
							$B2cShoppingCart->addCart($k,$_SESSION['_userid'],$v,true);
						}
					}
				}
				//套餐
				if(count($packArr))
				{
					foreach ($packArr as $packId) 
					{
						$B2cShoppingCart->addPackage($packId,$_SESSION['_userid']);
					}
				}
			}
		}
		LibFc::Go('/cart/index');
	}

	/**
	 * @method    发货页面
	 * @author 卢
	 * @copyright 2017-08-15
	 */
	public function sendExpress()
	{
		//必须已开通店铺
		// $OthCheck = new OthCheck();
		// 
		// $OthCheck->rule('OR06');
		$B2cOrder = new B2cOrder();
		$B2cExpress =new B2cExpress();
		$B2cAddr= new B2cAddr();
		$Params = mvc::$URL_PARAMS;
		$headArr = [
			'title'=>'发货-跑街的',	
			'keyword'=>'',	
			'des'=>''
		];
		$this->HEAD_CSSJS['css'][] = 'css/order.css';
		$this->HEAD_CSSJS['css'][] = 'css/seller.css';
		$this->HEAD_CSSJS['css'][] = 'css/jquery.autocomplete.css';
		$this->HEAD_CSSJS['js'][] = 'js/jquery.autocomplete.js';
		$this->HEAD_CSSJS['js'][] = 'js/order.js';
		$this->HEAD_CSSJS['js'][] = 'js/addr.js';
		LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
		LibTpl::Set('headArr', $headArr);
		//获取快递
		$expressInfo=$B2cExpress->getExpress();
		foreach ($expressInfo['data'] as $k => $v) 
		{
			$data[]=$v;
		}
		LibTpl::Set('autoArr',$data);
		//获取订单信息
		if(isset($Params['orderId'])&&(int)$Params['orderId'])
		{
			$orderId=[$Params['orderId']];
		}
		else if($_SERVER['REQUEST_METHOD'] =='POST')
		{
			$orderId=is_array($_POST['orderId'])?$_POST['orderId']:[$_POST['orderId']];
		}
		else
		{
			LibTpl::Error('订单信息错误','/seller/order');
			exit();
		}
		if(count($orderId))
		{
			$orderInfo=$B2cOrder->get('or_order',['*'],sprintf(" and ord_id in(%s) and ord_shop_id=%d",implode(',', $orderId),$_SESSION['_shopid']));
		}
		else
		{
			LibTpl::Error('订单信息错误','/seller/order');
			exit();
		}
		$orderUid=array_column($orderInfo['data'], 'ord_uid');
		if(count($orderUid))
		{
			$userInfo=$B2cOrder->get('us_user_base',['ub_username','ub_uid'],sprintf('and ub_uid in(%s)',implode(',',$orderUid)));
			$userData=array_column($userInfo['data'],null,'ub_uid');
			$proArr=$B2cOrder->getOrderPro(sprintf(" and orp_ord_id in(%s) and orp_status='paied'",implode(',', $orderId)));
			if(count($proArr['data'])>0)
			{
				foreach ($proArr['data'] as $k => $v) 
				{
					$proDataArr[$v['orp_ord_id']][]=$v;
				}
			}
			foreach ($orderInfo['data'] as $k => $v) 
			{	
				if(!in_array($v['ord_status'], ['paied','send']))
					LibTpl::Error('订单'.$v['ord_id'].'暂不可发货');
				$orderInfo['data'][$k]['userName']=$userData[$v['ord_uid']]['ub_username'];
				if(isset($proDataArr[$v['ord_id']]))
				{
					$orderInfo['data'][$k]['proArr']=$proDataArr[$v['ord_id']];
				}else
				{
					unset($orderInfo['data'][$k]);
				}
			}
		}
		else
		{
			LibTpl::Error('订单信息错误');
			exit();
		}
		//获取发货地址
		$sendAddr=$B2cAddr->getMyListSeller($_SESSION['_shopid']);
		// print_r($sendAddr);
		LibTpl::Set('sendaddr',$sendAddr['data']);
		LibTpl::Set('orderList',$orderInfo['data']);
		LibTpl::Put();
	}
	/**
	 * @method    发货
	 * @author 卢
	 * @copyright 2017-08-15
	 */
	public function sendAllExpress()
	{
		$OthCheck = new OthCheck();
		
		$B2cOrder = new B2cOrder();
		$B2cExpress=new B2cExpress();
		$res=$B2cExpress->getExpress();
		$expressArr=$res['data'];
		// print_r($expressArr);
		// print_r($_POST);
		// die;
		if($_POST['edit']=='edit'&&(int) $_POST['orderId'])
		{
			$result=['status'=>false,'data'=>'修改失败'];
			// print_r($_POST);
			// die;
			$addrArr['sendAddr']=(int)$_POST['sendAddr'];
			$addrArr['refundAddr']=(int)$_POST['refundAddr'];
			if($_POST['type']=='one'&&!empty($_POST['expressName'])&&!empty($_POST['expNum'])&&count($_POST['proId'])&&$_POST['track'])
			{
				$express='';
				foreach ($expressArr as $ex) 
				{
					if($ex['exp_name']==trim($_POST['expressName']))
					{
						$express=$ex['exp_code'];
					}
				}
				$express=!empty($express)?$express:'other';
				//单个物流
				$res=$B2cOrder->editExpress($_SESSION['_shopid'],$_POST['expressName'],(int) $_POST['orderId'],$_POST['expNum'],$express,$_POST['track'],$addrArr,$_POST['sellerRemark']);
				if(!$res['status'])
				{
					LibFc::ajaxJsonEncode($res);
				}
			}
			else if($_POST['type']=='all')
			{
				//多个物流
				if(count($_POST['singleExp'])&&count($_POST['singleExpNum'])&&count($_POST['trackId']))
				{
					foreach ($_POST['singleExpNum'] as $k => $v) 
					{
						$express='';
						foreach ($expressArr as $ex) 
						{
							if($ex['exp_name']==trim($_POST['expressName'][$k]))
							{
								$express=$ex['exp_code'];
							}
						}
						$express=!empty($express)?$express:'other';
						
						$res=$B2cOrder->editExpress($_SESSION['_shopid'],$_POST['expressName'][$k],(int) $_POST['orderId'],$v,$express,$_POST['trackId'][$k],$addrArr,$_POST['singleSellerRemark'][$k]);
						if(!$res['status'])
						{
							LibFc::ajaxJsonEncode($res);
						}
					}
				}
			}
			$result=['status'=>true,'data'=>true];
		}
		else
		{
			$result=['status'=>false,'data'=>'发货失败'];
			//按订单发货
			if($_POST['expNum'] && count($_POST['expNum']))
			{			
				$orderId=array_keys($_POST['expNum']);		
				$proData=$B2cOrder->getOrderPro(sprintf('and orp_ord_id in(%s)',implode(',',$orderId)));
				foreach ($proData['data'] as $k => $v) 
				{
					$pro[$v['orp_ord_id']][$v['orp_id']]=$v;
				}
				// print_r($pro);
				// die;
				foreach ($_POST['expNum'] as $k => $v) 
				{
					if(empty($v))
					{
						LibFc::ajaxJsonEncode(['status'=>false,'data'=>'运单号不正确！']);
						break;
					}
					if(empty($_POST['expressName']))
					{
						LibFc::ajaxJsonEncode(['status'=>false,'data'=>'物流公司不能为空！']);
						break;
					}
					if(empty($_POST['express']))
					{
						foreach ($expressArr as $ex) 
						{
							if($ex['exp_name']==trim($_POST['expressName']))
							{
								$_POST['express']=$ex['exp_code'];
							}
						}
						$_POST['express']=empty($_POST['express'])?'other':$_POST['express'];
					}
					$orpId=array_keys($pro[$k]);
					$res=$B2cOrder->sendExpress($_SESSION['_shopid'],$_POST['expressName'],$k,$orpId,$v,$_POST['express'],$_POST['sendAddr'],$_POST['refundAddr'],$_POST['sellerRemark'][$k]);
					if(!$res['status'])
					{
						LibFc::ajaxJsonEncode($res);
					}
				}
			}
			// die;
			//单配件发货
			if($_POST['singleExp'] && count($_POST['singleExp']))
			{
				foreach ($_POST['singleExp'] as $k => $v) 
				{
					foreach ($v as $i => $j) 
					{
						if(empty($_POST['expressName'][$k][$i]))
							LibFc::ajaxJsonEncode(['status'=>false,'data'=>'物流公司不能为空！']);
						if(empty($j))
						{
							foreach ($expressArr as $ex) 
							{
								if($ex['exp_name']==trim($_POST['expressName'][$k][$i]))
								{
									$j=$ex['exp_code'];
								}
							}
							$j=!empty($j)?$j:'other';
						}
						// print_r($j);
						// die;
						$res=$B2cOrder->sendExpress($_SESSION['_shopid'],$_POST['expressName'][$k][$i],$k,$i,$_POST['singleExpNum'][$k][$i],$j,$_POST['sendAddr'],$_POST['refundAddr'],$_POST['singleSellerRemark'][$k][$i]);
						if(!$res['status'])
						{
							LibFc::ajaxJsonEncode($res);
						}
					}
				}
			}
			$result=['status'=>true,'data'=>true];
		}
		LibFc::ajaxJsonEncode($result);
	}
	/**
	 * @method    判断是否符合满减要求
	 * @author 卢
	 * @copyright 2017-08-31
	 */
	public function checkManJian()
	{
		// echo 123;
		// die;
		// LibFc::ajaxJsonEncode(['status'=>true,'data'=>'123']);
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$B2cOrder=new B2cOrder();
		$proArr=(!empty($_POST['proArr'])&&!empty($_POST['nPrefer']))?['proArr'=>$_POST['proArr'],'nPrefer'=>$_POST['nPrefer']]:[];
		$packArr=(!empty($_POST['packArr']))?$_POST['packArr']:[];
		$res=$B2cOrder->checkManJian($_SESSION['_userid'],$proArr,$packArr);
		LibFc::ajaxJsonEncode($res);
	}
	/**
	 * @method    修改收货信息
	 * @author 卢
	 * @copyright 2017-09-05
	 */
	public function editAddr()
	{
		$Params = mvc::$URL_PARAMS;
		$B2cOrder = new B2cOrder();
		if($Params['tag']=='edit')
		{
			$YpwAddr= new YpwAddr();
			$ids=implode(',',$_POST['province']);
			$idsData=$YpwAddr->getAddrByIds($ids);
			$target['ord_add_pct']=implode('',$idsData['data']);
			$target['ord_add_pct_ids']=$ids;
			$target['ord_add_address']=$_POST['detail_addr'];
			$target['ord_add_tel']=$_POST['phone'];
			$target['ord_add_mobile']=$_POST['tel'];
			$target['ord_add_zip']=$_POST['code'];
			$target['ord_add_name']=$_POST['name'];
			$res=$B2cOrder->set('or_order',$target,sprintf('and ord_id=%d and ord_shop_id=%d',LibFc::Int($_POST['orderId']),$_SESSION['_shopid']));
		}
		else if($Params['tag']=='get')
		{
			$addrInfo=$B2cOrder->get('or_order',['ord_id','ord_add_name','ord_add_pct_ids','ord_add_pct','ord_add_address','ord_add_tel','ord_add_mobile','ord_add_zip'],sprintf('and ord_id=%d',LibFc::Int($Params['orderId'])),true);
			LibTpl::Set('addrList',$addrInfo['data']);
			$data=LibTpl::fetch('/order/ajaxGetRecAddr.php');
			$res=['status'=>true,'data'=>$data];
		}
		LibFc::ajaxJsonEncode($res);
	}


	/**
	 * @method 买家提交退货物流信息
	 * @author xu
	 * @copyright 2017-11-3
	 */
	public function submitReturnBackForm()
	{
		//必须已经登录
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();


		if($_POST['phone']=="" || $_POST['number']=="" || $_POST['company']=="")
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();

		// 校验当前的退款申记录ID
		$repId = $_POST['repId'];
		if(!LibFc::Int($repId))
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);
		}
		// 校验当前的退款记录必须是当前买家的
		$res = $B2cBase->get("or_refund_pact",['rep_id'],sprintf(" and rep_id=%d and rep_uid=%d and rep_status!='close' ",$repId,$_SESSION['_userid']),true);
		if(empty($res['data']))
		{
			$msg = array('status'=>false,'data'=>'退款申请记录不存在！');
			LibFc::ajaxJsonEncode($msg);
		}

		// 现在进行入库物流数据
		$rep_express_des = array(
			'instruc'=>urlencode(LibFc::Escape($_POST['instruc'])),
			'phone'=>(int)$_POST['phone'],
			'number'=>LibFc::Escape($_POST['number']),
			'company'=>urlencode(LibFc::Escape($_POST['company'])),
			'expcode'=>urlencode(LibFc::Escape($_POST['expcode']))
		);
		$dataArr = array(
			'rep_express_des'=>urldecode(json_encode($rep_express_des)),
			'rep_etime'=>time(),
			'rep_refund_pro_time'=>time(),
			'rep_status'=>'refundpro'
		);
		// 更新refund_pack表
		$res = $B2cBase->set(" or_refund_pact ",$dataArr,sprintf(" and rep_id=%d and rep_uid=%d and rep_status!='close' ",$repId,$_SESSION['_userid']));
		// 更新order_produt表
		$res = $B2cBase->get(" or_refund_pact ",['rep_orp_id'],sprintf(" and rep_id=%d and rep_uid=%d and rep_status!='close' ",$repId,$_SESSION['_userid']),true);
		$res = $res['data'];
		$res = $B2cBase->set(" or_order_product ",array('orp_refund_status'=>'refundpro'),sprintf(" and orp_id=%d ",$res['rep_orp_id']));
		// 记录日志信息
		$logArr = [
			'rel_rep_id'=>$repId,
			'rel_txt'=>'买家寄回配件，快递公司：'.LibFc::Escape($_POST['company']).'，物流单号：'.LibFc::Escape($_POST['number']).'，联系电话：'.(int)$_POST['phone'].'，退货说明：'.(LibFc::Escape($_POST['instruc'])?LibFc::Escape($_POST['instruc']):'无'),
			'rel_utype'=>1
		];
		$B2cOrder->addRefundLog($logArr);
		// 直接返回true
		$msg = array('status'=>true,'data'=>true);
		LibFc::ajaxJsonEncode($msg);
	}

	/**
	 * @method 换货申请-买家确认收货
	 * @author xu
	 * @copyright 2017-11-8
	 */
	public function confirmCompleteChange()
	{
		//必须已经登录
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();

		if(!LibFc::Int($_POST['repId']))
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);		
		}

		$repId = $_POST['repId'];

		$res = $B2cBase->get("or_refund_pact",['rep_orp_id'],sprintf(" and rep_id=%d and rep_uid=%d and rep_status='confirm' and rep_type=2 ", $repId, $_SESSION['_userid']), true);
		$orpId = $res['data']['rep_orp_id'];
		if(empty($res['data']))
		{
			$msg = array('status'=>false,'data'=>'退款申请记录不存在！');
			LibFc::ajaxJsonEncode($msg);
		}

		// 现在开始确认收货
		$dataArr = array(
			'rep_status'=>'refunded',
			'rep_etime'=>time(),
			'rep_refunded_time'=>time()
		);
		// 售后申请表改成退款完成
		$B2cBase->Set('or_refund_pact',$dataArr,sprintf(" and rep_orp_id=%d and rep_uid=%d and rep_status='confirm' and rep_type=2 ", $orpId, $_SESSION['_userid']));
		// 配件订单表改为退款完成
		$B2cBase->Set('or_order_product',array('orp_refund_status'=>'refunded'),sprintf(" and orp_id=%d ", $orpId));
		// 记录日志信息
		$logArr = [
			'rel_rep_id'=>$repId,
			'rel_txt'=>'买家确认收货，完成换货。',
			'rel_utype'=>1
		];
		$B2cOrder->addRefundLog($logArr);
		// 直接返回true
		$msg = array('status'=>true,'data'=>true);
		LibFc::ajaxJsonEncode($msg);
	}

	/**
	 * @method 买家留言
	 * @author xu
	 * @copyright 2017-11-8
	 */
	public function addTalkHistory()
	{
		//必须已经登录
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$B2cBase = new B2cBase();
		$B2cOrder = new B2cOrder();
		
		$content = LibFc::Escape($_POST['content']);
		if(!LibFc::Int($_POST['repId']) || $content=='')
		{
			$msg = array('status'=>false,'data'=>'参数错误！');
			LibFc::ajaxJsonEncode($msg);		
		}

		$repId = $_POST['repId'];

		$res = $B2cBase->get("or_refund_pact",['rep_orp_id'],sprintf(" and rep_id=%d and rep_uid=%d and rep_status!='close' ", $repId, $_SESSION['_userid']), true);

		if(empty($res['data']))
		{
			$msg = array('status'=>true,'data'=>'退款申请记录不存在！');
			LibFc::ajaxJsonEncode($msg);
		}
		// 记录日志信息
		$logArr = [
			'rel_rep_id'=>$repId,
			'rel_txt'=>$content,
			'rel_utype'=>1
		];
		$B2cOrder->addRefundLog($logArr);
		// 直接返回true
		$msg = array('status'=>true,'data'=>true);
		LibFc::ajaxJsonEncode($msg);
	}
	/**
	 * @method    交易快照
	 * @author 卢
	 * @copyright 2017-12-25
	 */
	public function snapshoot()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		$Params = mvc::$URL_PARAMS;
		$B2cProduct=new B2cProduct();
		$B2cBase=new B2cBase();
		if((int)$Params['orpId']&&($Params['type']=='u'||$Params['type']=='s'))
		{
			$where=$Params['type']=='u'?sprintf(' and orp_id=%d and ord_uid=%d',$Params['orpId'],$_SESSION['_userid']):sprintf(' and orp_id=%d and ord_shop_id=%d',$Params['orpId'],$_SESSION['_shopid']);
			$res=$B2cBase->get('or_order_product left join or_order on ord_id=orp_ord_id',['orp_prh_id','orp_pro_id','ord_shop_id','ord_id'],$where,true);
			if($res['data']['orp_prh_id']&&$res['data']['orp_pro_id'])
			{
				$orderId=$res['data']['ord_id'];
				$proId=$res['data']['orp_pro_id'];
				$shopId=$res['data']['ord_shop_id'];
				LibTpl::Set('proId', $proId);
				LibTpl::Set('orderId', $orderId);
				LibTpl::Set('shopId', $shopId);
				$res=$B2cProduct->get('bc_product_history',['prh_text'],sprintf(' and prh_id=%d',$res['data']['orp_prh_id']),true);
				if($res['data']['prh_text'])
				{
					$data=json_decode($res['data']['prh_text'],true);
					//初始化店铺路径
					$shopCfg = require(mvc::$cfg['ROOT'].'shop/'.$shopId.'/'.'shop.config.php');
					//店铺页面配置
					$pageConfigAll = require(mvc::$cfg['ROOT'].'shop/'.$shopId.'/'.'page.config.php');
					$pageConfing = $pageConfigAll['item/index'];
					//头部和底部公共模块配置
					$pageConfing['modules']['top'] = $pageConfigAll['public']['top'];
					$pageConfing['modules']['foot'] = $pageConfigAll['public']['foot'];
					//模块配置
					$pageData = [];
					//店铺基本信息、店铺名称、域名等提前加载
					$ShopBase = new ShopBase();
					$shopInfo = $ShopBase->getShopInfo($shopId);
					LibTpl::Set('shopInfoData', $shopInfo);
					$allModuleConfig = require(mvc::$cfg['ROOT_SHOP_SYS'].'module.config.php');
					//加载该店铺的模块数据
					$htmlArr = [];
					$shopCssJs = ['css'=>[], 'js'=>[]];
					foreach ($allModuleConfig as $module) 
					{
						$js=isset($module['js'])?$module['js']:[];
						$css=isset($module['css'])?$module['css']:[];
						$shopCssJs['css'] = array_merge($shopCssJs['css'], $css);
						$shopCssJs['js'] = array_merge($shopCssJs['js'], $js);
					}
					$extArr=['menu','banner'];
					foreach($pageConfing['modules'] as $location=>$moduleArr)
					{
						$htmlArr[$location] = [];
						//此位置的所有模块
						foreach($moduleArr as $k=> $moduleConfig)
						{
							if(in_array($moduleConfig['module'], $extArr)) continue;
							if($moduleConfig['module']=='itemInfo')
							{
								$htmlArr[$location][]=$data['info'];
								continue;
							}
							else if($moduleConfig['module']=='itemDes')
							{
								$htmlArr[$location][]=$data['desc'];
							}
							else
							{
								$res = $ShopBase->getModuleHtml($shopId, $moduleConfig);
								$htmlArr[$location][] = $res['html'];
							}
							// print_r($res);
						}
					}
					LibTpl::Set('sysModule', $sysModule);
					LibTpl::Set('pageConfing', $pageConfing);
					LibTpl::Set('htmlArr',$htmlArr);
					//加载模块样式和JS
					$shopCssJs['css'] = array_unique($shopCssJs['css']);
					$shopCssJs['js'] = array_unique($shopCssJs['js']);
					unset($shopCssJs['js'][array_search('item.js', $shopCssJs['js'])],$shopCssJs['js'][array_search('itemInfo.js', $shopCssJs['js'])]);
					LibTpl::Set('shopCssJs', $shopCssJs);
					unset($sysModule['shopInfo'],$sysModule['banner'],$sysModule['menu'],$sysModule['itemInfo'],$sysModule['itemDes'],$sysModule['foot']);
					LibTpl::Set('moduleList',$sysModule);
					$headArr = array(
						'title'=>'交易快照-跑街的',	
						'keyword'=>'',	
						'des'=>''
					);
					// print_r($shopCssJs['js']);
					$this->HEAD_CSSJS['plugin'][] = 'webuploader';
					$this->HEAD_CSSJS['plugin'][] = 'ueditor';
					$this->HEAD_CSSJS['plugin'][] = 'typeahead';
					$this->HEAD_CSSJS['plugin'][] = 'zTree';
					//添加图片放大镜
					$this->HEAD_CSSJS['js'][] = 'js/jquery.imagezoom.min.js';
					$this->HEAD_CSSJS['js'][] = 'js/item.js';
					$this->HEAD_CSSJS['css'][] = 'css/item.css';
					unset($this->HEAD_CSSJS['css'][array_search('css/order.css', $this->HEAD_CSSJS['css'])]);
					// print_r($this->HEAD_CSSJS);
					LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
					LibTpl::Set('headArr', $headArr);

					LibTpl::Put('/order/snapshoot.php');
					exit;
				}
			}
		}
		LibTpl::Error('快照不存在！');
		exit();
	}
	/**
	 * @method    获取交易快照的配件信息
	 * @author 卢
	 * @copyright 2017-12-25
	 */
	public function getOrderInfo()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();

		$Params=mvc::$URL_PARAMS;
		$res=['status'=>false,'data'=>'订单信息错误'];
		if((int)$Params['orderId']&&(int)$Params['shopId']&&(int)$Params['proId'])
		{
			$B2cBase=new B2cBase();
			$res=$B2cBase->get('or_order left join or_order_product on ord_id=orp_ord_id',['orp_count','ord_freight_money'],sprintf(' and ord_id=%d and ord_shop_id=%d and orp_pro_id=%d',$Params['orderId'],$Params['shopId'],$Params['proId']),true);
		}
		LibFc::ajaxJsonEncode($res);
	}
	/**
	 * @method    editExpress
	 * @return    修改运单
	 * @author 卢
	 * @copyright 2018-03-10
	 */
	public function editExpress()
	{
		//必须已开通店铺
		// $OthCheck = new OthCheck();
		
		// $OthCheck->rule('OR10');
		$B2cOrder = new B2cOrder();
		$B2cExpress =new B2cExpress();
		$B2cAddr= new B2cAddr();
		$YpwAddr= new YpwAddr();
		$Params = mvc::$URL_PARAMS;
		$headArr = [
			'title'=>'修改运单-跑街的',	
			'keyword'=>'',	
			'des'=>''
		];
		$this->HEAD_CSSJS['css'][] = 'css/order.css';
		$this->HEAD_CSSJS['css'][] = 'css/seller.css';
		$this->HEAD_CSSJS['css'][] = 'css/jquery.autocomplete.css';
		$this->HEAD_CSSJS['js'][] = 'js/jquery.autocomplete.js';
		$this->HEAD_CSSJS['js'][] = 'js/order.js';
		$this->HEAD_CSSJS['js'][] = 'js/addr.js';
		LibTpl::Set('HEAD_CSSJS', $this->HEAD_CSSJS);
		LibTpl::Set('headArr', $headArr);
		//获取快递
		$expressInfo=$B2cExpress->getExpress();
		foreach ($expressInfo['data'] as $k => $v) 
		{
			$data[]=$v;
		}
		LibTpl::Set('autoArr',$data);
		//获取订单信息
		if(isset($Params['orderId'])&&LibFc::Int($Params['orderId']))
		{
			$orderId=[$Params['orderId']];
		}
		else
		{
			LibTpl::Error('订单信息错误','/seller/order');
			exit();
		}
		if(count($orderId))
		{
			$orderInfo=$B2cOrder->get('or_order',['*'],sprintf(" and ord_id in(%s) and ord_shop_id=%d",implode(',', $orderId),$_SESSION['_shopid']));
		}
		else
		{
			LibTpl::Error('订单信息错误','/seller/order');
			exit();
		}
		$orderUid=array_column($orderInfo['data'], 'ord_uid');
	
		if(count($orderUid))
		{
			//获取用户
			$userInfo=$B2cOrder->get('us_user_base',['ub_username','ub_uid'],sprintf('and ub_uid in(%s)',implode(',',$orderUid)));
			//获取配件
			$userData=array_column($userInfo['data'],null,'ub_uid');
			$proArr=$B2cOrder->getOrderPro(sprintf(" and orp_ord_id in(%s) and orp_status='send'",implode(',', $orderId)));
			//获取物流
			$expIdArr=array_column($proArr['data'], 'orp_ext_id');
			if(count($expIdArr))
			{
				$trackData=$B2cOrder->get('or_express_track',['ext_id','ext_exp_code','ext_name','ext_exp_number','ext_send_addr','ext_ext_id','ext_track_tatus','ext_refund_addr','ext_remark'],sprintf(' and ext_id in(%s)',implode(',',$expIdArr)));
				$trackArr=array_column($trackData['data'],null ,'ext_id');
				$single=count($trackArr);
			}
			else
			{
				LibTpl::Error('该订单信息有误或正在售后中，运单号不允许修改','/seller/order');
				exit();
			}
			if(count($proArr['data'])>0)
			{
				$sendAddr=json_decode(current($trackArr)['ext_send_addr'],true);
				$refAddr=json_decode(current($trackArr)['ext_refund_addr'],true);
				// print_r($sendAddr);
				// print_r($refAddr);
				$addrArr['sendId']=$sendAddr['addr_id'];
				$addrArr['refundId']=$refAddr['addr_id'];
				LibTpl::Set('addrArr',$addrArr);
				foreach ($proArr['data'] as $k => $v) 
				{
					$temp=array_merge($v,$trackArr[$v['orp_ext_id']]);
					$proDataArr[$v['orp_ord_id']][]=$temp;
				}
			}
			foreach ($orderInfo['data'] as $k => $v) 
			{	
				$orderInfo['data'][$k]['userName']=$userData[$v['ord_uid']]['ub_username'];
				if(isset($proDataArr[$v['ord_id']]))
				{
					$orderInfo['data'][$k]['proArr']=$proDataArr[$v['ord_id']];
				}else
				{
					unset($orderInfo['data'][$k]);
				}
			}
		}
		else
		{
			LibTpl::Error('订单信息错误');
			exit();
		}
		$sendAddr=$B2cAddr->getMyListSeller($_SESSION['_shopid']);
		LibTpl::Set('sendaddr',$sendAddr['data']);
		LibTpl::Set('single',$single);
		LibTpl::Set('orderList',$orderInfo['data']);
		LibTpl::Put();
	}
	/*
	 *ajax获取退货物流信息
	 */
	function ajaxGetRefundLogic()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin();
		//获取最新物流信息
		if(LibFc::Int($_POST['repId']))
		{
			$B2cBase = new B2cBase();
			$res = $B2cBase->get('or_refund_pact',['rep_express_des'],sprintf('and rep_id=%d and rep_uid=%d and rep_type>0',$_POST['repId'],$_SESSION['_userid']),true);
			if(!empty($res['data'])) $res = json_decode($res['data']['rep_express_des'],true);
			if(!empty($res['expcode']))
			{
				$LibYpApi = new LibYpApi();
				$dataArr = [
					'ext_exp_code'=>$res['expcode'],
					'ext_number'=>$res['number'],
					'ext_from'=>'B2C'
				];
				$resArr = $LibYpApi->Get('express/getTrack',$dataArr);
				$resArr['data']['ext_track'] = array_pop(json_decode($resArr['data']['ext_track'],true));
				LibTpl::Set('data', $resArr['data']);
				LibTpl::Set('repId', $_POST['repId']);
				$result=LibTpl::Fetch('order/ajaxGetLogisticInfo.php');
				LibFc::ajaxJsonEncode(['status'=>true,'data'=>$result]);
			}
		}else
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'参数不正确']);
		}
	}
}