<?php
class orderAction extends baseAction
{

	function index()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		$Params = mvc::$URL_PARAMS;
		if(!count($_POST['data'])&&!isset($_POST['pack']))
		{
			LibFc::Go(mvc::$cfg['SELF_URI'].'cart/index');
		}
		$B2cAddr= new B2cAddr();
		$YpwAddr= new YpwAddr();
		$B2cOrder = new B2cOrder();
		$userId=$_SESSION['_userid'];
		//地址列表
		$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']);
		}
		// print_r($addrData);
		// print_r($_POST);
		// die;
		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('配件已失效！',mvc::$cfg['SELF_URI'].'cart/index');
				exit();
			}
			$proCount=[];//配件数量
			foreach ($result['data'] as $k => $v) 
			{
				foreach ($v as $pro) 
				{
					if($pro['pro_status']<1)
					{
						LibTpl::Error('配件状态异常！',mvc::$cfg['SELF_URI'].'cart/index');
						exit();
					}
					if($pro['shop_status']<1)
					{
						LibTpl::Error('店铺状态异常！',mvc::$cfg['SELF_URI'].'cart/index');
						exit();
					}
					//初步判断库存是否小于1
					if($pro['pro_count']<1 && !mvc::$cfg['shopInfo']['shop_overbook'])
					{
						LibTpl::Error('配件'.$pro['pro_name'].'库存不足！',mvc::$cfg['SELF_URI'].'cart/index');
						exit();
					}
					if(empty($pro['pri_frt_id']))
					{
						LibTpl::Error('配件'.$pro['pro_name'].'暂时尚未定义运费模板，不可购买！',mvc::$cfg['SELF_URI'].'cart/index');
						exit();
					}
					$proCount[$pro['pro_id']]+=$pro['byNum'];
				}
			}
			
		}
		// die;
		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'];
					// print_r($packNum);
					LibTpl::Set('packNum',$packNum);
				}
				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) 
					{
						$shopArr=array_merge($shopArr,[$proArr['shop_id']]);
						if($proArr['shop_id']==$_SESSION['_shopid'])
						{
							LibTpl::Error('不能购买自家店铺的配件！');
							exit();
						}
						if($proArr['pro_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($proArr['shop_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($proArr['pro_count']<1 && !mvc::$cfg['shopInfo']['shop_overbook'])
						{
							LibTpl::Error('配件'.$proArr['pro_name'].'库存不足！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						$proCount[$proArr['pro_id']]+=1;//套餐配件数量
					}		
					$re=$B2cOrder->getPackProInfo($packArr,$_SESSION['_userid']);
					if(!count($re['data']))
					{
						LibTpl::Error('配件已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
						exit();
					}
					$packArrList=array_column($re['data'], null,'shopId');
				}
				else
				{
					LibTpl::Error('配件信息错误');
					exit();
				}
			}
		}
		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'] && !mvc::$cfg['shopInfo']['shop_overbook'])
				{
					LibTpl::Error('配件'.$v['pro_name'].'库存不足，请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
					exit();
				}
			}
		}
		else
		{
			LibTpl::Error('配件信息错误');
			exit();
		}
		$shopArr=array_unique($shopArr);
		//满包邮
		if(count($shopArr))
		{
			$frtInfo=$B2cOrder->get('sh_shop',['shop_baoyou','shop_id','shop_name','shop_logo','shop_uid'],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'];
		}
		$shopInfo=array_column($frtInfo['data'],null, 'shop_id');
		// print_r($shopInfo);
		if(isset($_POST['type'])&&$_POST['type']=='buyNow')
		{
			LibTpl::Set('buyNow',1);
		}
		$nameArr=[
			'salePrice'=>'无优惠',
			'comPrice'=>'企业会员优惠',
			'promPrice'=>'促销优惠',
			'vipPrice'=>'店铺会员优惠'
		];
		LibTpl::Set('nameArr',$nameArr);
		$preferArr=[
			'salePrice'=>0,
			'promPrice'=>1,
			'vipPrice'=>2,
			'comPrice'=>3
		];
		LibTpl::Set('preferArr',$preferArr);
		// print_r($packArrList);
		LibTpl::Set('shopInfo',$shopInfo);
		LibTpl::Set('packArrList',$packArrList);
		LibTpl::Set('shopArr',$shopArr);
		LibTpl::Set('frt',$frt);
		LibTpl::Set('proList',$result['data']);
		LibTpl::Set('integral',$integral);
		LibTpl::Set('footMenu', 'cart');
		LibTpl::Set('title', '确认订单');
		LibTpl::Put();
	}
	/**
	 * @method    判断是否符合满减要求
	 * @author 卢
	 * @copyright 2017-08-31
	 */
	public function checkManJian()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		$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);
			$re['data']['manjianArr']=$res['data'];
			if($Params['type']=='manjian'){
				LibFc::ajaxJsonEncode(['status'=>true,'data'=>$re['data']]);
			}
			// 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);
			$re['data']['frtArr']=$max;
			LibFc::ajaxJsonEncode(['status'=>true,'data'=>$re['data']]);			
		}
	}
	/**
	 * @method    订单提交入库
	 * @author 卢
	 * @copyright 2017-08-07
	 */
	public function addOrder()
	{
		$OthCheck = new OthCheck();
		$OthCheck->mustLogin('gzh');
		$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('请先添加地址',mvc::$cfg['SELF_URI'].'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,5]))
				{
					LibTpl::Error('订单信息错误，请重新下单',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单！',mvc::$cfg['SELF_URI'].'cart/index');
					exit();
				}
				
			}
			if(count($shopArr)&&isset($_SESSION['_shopid']))
			{
				if(in_array($_SESSION['_shopid'], $shopArr))
				{
					LibTpl::Error('不能购买自己店铺的配件',mvc::$cfg['SELF_URI'].'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'].'已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($pro['shop_status']<1)
						{
							LibTpl::Error('配件'.$pro['pro_name'].'已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($pro['pro_count']<1 && !mvc::$cfg['shopInfo']['shop_overbook'])
						{
							LibTpl::Error('配件'.$pro['pro_name'].'库存不足！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if(empty($pro['pri_frt_id']))
						{
							LibTpl::Error('配件'.$pro['pro_name'].'暂时不可购买！',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单！',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单！',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单！',mvc::$cfg['SELF_URI'].'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('套餐已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($proRes['shop_status']<1)
						{
							LibTpl::Error('套餐已失效！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
						if($proRes['pro_count']<1 && !mvc::$cfg['shopInfo']['shop_overbook'])
						{
							LibTpl::Error('配件'.$proRes['pro_name'].'库存不足！请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
							exit();
						}
					}
			}
			else
			{
				LibTpl::Error('套餐已失效！请重新下单',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单',mvc::$cfg['SELF_URI'].'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('订单信息错误，请重新下单',mvc::$cfg['SELF_URI'].'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']&& !mvc::$cfg['shopInfo']['shop_overbook'])
				{
					LibTpl::Error('配件'.$v['pro_name'].'库存不足，请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
					exit();
				}
			}
		}
		else
		{
			LibTpl::Error('订单信息错误，请重新下单',mvc::$cfg['SELF_URI'].'cart/index');
			exit();
		}
		foreach ($shopArr as $shop) 
		{
			if(!isset($shippPriceArr[$shop])||!isset($shopAllTotal[$shop]))
				LibTpl::Error('订单信息错误，请重新下单',mvc::$cfg['SELF_URI'].'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,'gzh');
		// 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']);
			// user/detail?orderId=100796
			LibFc::Go(mvc::$cfg['SELF_URI'].'user/detail?orderId='.$orderString);
			// echo $orderString;
			// LibFc::Go('/order/pay?ordId='.$orderString);
			//提交成功，删除购物车
		}
	}
	/**
	 * @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);
	}
}