<?php
class productAction extends baseAction
{
	/**
	 * @method    saveItemImg  保存配件图片
	 * @http      (post)
	 * @param     isAjax                 [必填]  1
	 * @param     img             file   [必填]  file 图片文件
	 * @param     proId           int    [必填]  配件id
	 * @param     ppSpiId         int    [选填]  图片id 更新时提供
	 * @param     seq             int    [选填]  顺序  默认 0
	 * @author    liao
	 * @copyright 2018-09-28
	 * @return    {"status":true,"data":{"size":167954,"path":"shop172999\/product\/","ext":"jpg","name":"5821761f747f1096","oriname":"1729991538117912jpg","small":"100\/","width":880,"heigth":880,"crc32":"3CD39A16","etime":1538117912,"sfile":"shop172999\/product\/100\/5821761f747f1096.jpg","url":"http:\/\/192.168.1.42\/file_center\/center\/read.php?site=b2c&c=product&f=shop172999\/product\/100\/5821761f747f1096.jpg&i=42","spi_id":17439}}
	 */
	public function saveItemImg()
	{
		//必须开通店铺
		$this->checkRule(2);
		// print_r($_POST);
		// print_r($_REQUEST);
		// print_r($_FILES);
		// die;
		$proId = (int) $_POST['proId'];
		if ($proId < 1 || empty($_FILES['img']))
			LibFc::ajaxJsonEncode(['status'=>false, 'data'=>'参数不正确']);

		$OthFileCenter = new OthFileCenter();
		$B2cProduct=new B2cProduct();
		$dataArr['cate']='product';
		$dataArr['file']=$_FILES['img'];
		$dataArr['file']['name']=$this->dataConfig['_shopid'].time().'.jpg';
		// $dataArr['file']['data']=base64_decode(substr(strstr($_POST['img'], ','), 1));
		$dataArr['path'] = 'shop'.$this->dataConfig['_shopid'].'/product/';
		$fileRes=$OthFileCenter->upload($dataArr);
		$B2cBase = new B2cBase();
		$fileRes['data']['oriname'] = empty($fileRes['data']['oriname'])? $fileRes['data']['name']: $fileRes['data']['oriname'];
		$temArr = [
			'spi_cate'=>$dataArr['cate'],
			'spi_shop_id'=>$this->dataConfig['_shopid'],
			'spi_path'=>$fileRes['data']['path'],
			'spi_name'=>$fileRes['data']['name'],
			'spi_oriname'=>$fileRes['data']['oriname'],
			'spi_ext'=>$fileRes['data']['ext'],
			'spi_crc32'=>$fileRes['data']['crc32'],
			'spi_size'=>$fileRes['data']['size'],
			'spi_width'=>$fileRes['data']['width'],
			'spi_height'=>$fileRes['data']['heigth'],
			'spi_atime'=>time(),
			'spi_style'=>0
		];
		$res = $B2cBase->Add('sh_pic', $temArr);
		$fileRes['data']['spi_id'] = $res['data'];
		$temArr['spi_id'] = $fileRes['data']['spi_id'];
		$res=$B2cProduct->editProPic($this->dataConfig['_shopid'],$proId,$temArr['spi_id'],$_POST['ppSpiId'],$_POST['seq']);
		$res['data']=$temArr['spi_id'];
		LibFc::ajaxJsonEncode($fileRes);
	}
	/**
	 * @method    获取店铺配件
	 * @http    get
	 * @param  [int] page  [可选 默认1] 页码
	 * @param  [int] limit [可选 默认20] 每页条数
	 * @param  [int] proId  [可选]  配件ID
	 * @param  [string] proNum  [可选]  配件号码
	 * @param  [string] keyword  [可选] 关键字
	 * @param  [bool] isRemote  [可选] 是否开启促销
	 * @param  [int]  pic   [可选 默认为空 则为有图]  [null|1] 是否无图
	 * @param  [string] status  [可选] 1已上架 0未上架
	 * @return    [json]          {"status":true,"data":{"proArr":{"p156201":{"pro_id":"156201","pro_name":"ttt","pro_sale_price":"100.00","pro_promotion_price":"85.00","pro_promotion_btime":"0","pro_promotion_etime":"0"}},"numArr":{"p123820":{"selfNum":"2114020","selfName":"FERODO"},"p123821":{"selfNum":"2114021","selfName":"dddddddddd"},"p123822":{"selfNum":"2114038"}}}}
	 *
	 * proArr: 配件列表，以  p+proId 为键  numArr 配件号码  以  p+proId 为键  selfNum[号码]  selfName[品牌]  mainNum [主号] mainFactory[厂商]
	 * @author 卢
	 * @copyright 2018-09-28
	 */
	function getProcudtLists()
	{
		$this->checkRule(2);
		$Params = mvc::$URL_PARAMS;
		$B2cOrder = new B2cOrder();
		$B2cBase=new B2cBase();
		$shopId=$this->dataConfig['_shopid'];
		// $shopId=172999;
		$Params = mvc::$URL_PARAMS;
		$where=' and pro_shop_id='.$shopId;
		$perPage=!empty($Params['limit']) ? $Params['limit'] : 20;
		$B2cProduct=new B2cProduct();
		$page=!empty($Params['page']) ? $Params['page'] : 1;
		$where.=(isset($Params['proId'])&&LibFc::Int($Params['proId']))?sprintf(' and pro_id=%d',(int)$Params['proId']):'';
		LibTpl::Set('Params', $Params);
		if(!empty($Params['proNum']))
		{
			$where.=sprintf(" and pro_id in(select num_pro_id from bc_number where num_format like '%%%s%%' or num_display like '%%%s%%')",LibFc::Escape($Params['proNum']),LibFc::Escape($Params['proNum']));
		}
		if(!empty($Params['keyword']))
		{
			$keywordArr=LibFc::keyword($Params['keyword']);
			if(count($keywordArr))
			{
				$keywordStr="'".implode("','",$keywordArr)."'";
				$where.=sprintf(" and pro_id in (%s)",sprintf("select prk_pro_id from bc_keyword right join bc_product_keyword on prk_key_id=key_id where key_txt in(%s)",$keywordStr));
			}
			else
			{
				//关键字搜索为空，搜索名称
				$where.=sprintf(" and pro_name like '%%%s%%'",LibFc::Escape($Params['keyword']));
			}
		}
		if(!empty($Params['pic']))
		{
			switch ($Params['pic']) 
			{
				case '1':
					$where.=sprintf(' and pro_id not in(%s)',sprintf("select pro_id from bc_product_pic left join bc_product on pp_pro_id=pro_id where pro_shop_id=%d",$shopId));
					break;
			}
		}
		if(!empty($Params['isRemote']))
		{
			$where.=' and pro_promotion_btime>0';
		}
		if(isset($Params['status']) && $Params['status']!='')
		{
			$where .= sprintf(" AND pro_status in (%s)",$Params['status']);
		}
		$order='pro_add_time desc';
		//当前条件总数
		$totalData=$B2cProduct->get('bc_product',['count(*) count'],$where,true);
		$data=['status'=>true,'data'=>[]];
		if($totalData['data']['count']>0)
		{
			//配件列表
			$proData=$B2cProduct->getProductList($page,$perPage,$totalData['data']['count'],$order,$where,' join bc_product_info on pri_pro_id=pro_id');
			$proData['data']=array_column($proData['data'], null,'pro_id');
			// print_r($proData);
			if(count($proData['data']))
			{
				$proId=array();
				$partId=array();
				foreach ($proData['data'] as $k => $v) 
				{
					$partId[]=$v['pro_part_id'];
					array_push($proId, $v['pro_id']);
				}
				//配件图片
				$picData=$B2cProduct->getProductPic($proId);
				// print_r($proId);
				//号码自编号
				$res=$B2cProduct->get('bc_number',['num_display','num_pro_id','num_self','num_ismain','num_factory'],sprintf(' and (num_self=1 or num_ismain=1) and num_pro_id in(%s)',implode(',', $proId)));
				//获取品牌
				$brandArr=$B2cProduct->get('bc_probrand inner join bc_product on pro_prb_id=prb_id',['prb_name','prb_id','pro_id'],sprintf(' and pro_id in(%s)',implode(',',$proId)));
				$brandArr=array_column($brandArr['data'],null, 'pro_id');
				// print_r($brandArr);
				$selNum=[];
				if(!empty($res['data']))
				{
					foreach ($res['data'] as $k=> $v) 
					{
						if($v['num_self']){
							$selNum[$v['num_pro_id']]['selfNum']=$v['num_display'];//号码
						}
						if(!empty($brandArr[$v['num_pro_id']]['prb_name']))
						{
							$selNum[$v['num_pro_id']]['selfName']=$brandArr[$v['num_pro_id']]['prb_name'];//品牌
						}
						if($v['num_ismain']){
							$selNum[$v['num_pro_id']]['mainNum']=$v['num_display'];//主号
							$selNum[$v['num_pro_id']]['mainFactory']=$v['num_factory'];//厂商
						}
					}
				}
				if(!empty($selNum))
				{
					$temp=$selNum;
					$selNum=[];
					foreach ($temp as $k=> $v) 
					{
						$v['pro_id']=$k;
						$selNum[]=$v;
					}
				}
				foreach ($proData['data'] as $k => $v) 
				{
					if(count($picData['data'][$v['pro_id']][0]))
					{
						$proData['data'][$k]=isset($picData['data'][$v['pro_id']][0])?array_merge($picData['data'][$v['pro_id']][0],$proData['data'][$k]):$proData['data'][$k];
					}
					// $proData['data']['p'.$k]=$proData['data'][$k];
					// unset($proData['data'][$k]);
				}
			}
			
			if($totalData['data']['count']>0)
			{
				$ignoreArr=['spi_path','spi_name','pro_name','pro_promotion_btime','pro_promotion_etime','pro_promotion_price','pro_sale_price','pro_id'];
				foreach ($proData['data'] as $k => $v) 
				{
					foreach ($v as $key => $value) 
					{
						if(!in_array($key, $ignoreArr))
							unset($proData['data'][$k][$key]);
					}
					$proData['data'][$k]['pro_promotion_price']=sprintf('%.2f',$v['pro_promotion_price']);
					$proData['data'][$k]['pro_sale_price']=sprintf('%.2f',$v['pro_sale_price']);
					if(!empty($v['spi_name']))
					{
						$proData['data'][$k]['img']=mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=product&f='.$v['spi_path'].'100/'.$v['spi_name'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
						$proData['data'][$k]['oimg']=mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=product&f='.$v['spi_path'].'800/'.$v['spi_name'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
					}
				}
				$data=['status'=>true,'data'=>['numArr'=>$selNum]];
				$tempArr=$proData['data'];
				foreach ($tempArr as $v) 
				{
					$data['data']['proArr'][]=$v;
				}
			}
			// echo json_encode($data);
			LibFc::ajaxJsonEncode($data);
		}
	}
	/**
	 * @method    获取修改的配件信息
	 * @http  get 
	 * @param int  proId  [必填]  配件ID
	 * @param  string  type [默认为null则为取配件图片][price|null] 为price则取价格
 	 * @return  json {"status":true,"data":{"proArr":{"pro_sale_price":"10000.00","pro_promotion_price":"0.00","pro_cost_price":"0.00","pro_promotion_btime":"0","pro_promotion_etime":"0","pro_price_vip1":"0.00","pro_price_vip2":"0.00","pro_price_vip3":"0.00","pro_price_vip4":"0.00","pro_id":"123822","pro_name":"ff"},"memberArr":[{"mem_id":"2182","mem_shop_id":"172999","mem_mel_id":"1","mem_discount":"3.00","mem_status":"1","men_manjian":"0","mel_id":"1","mel_name":"\u7ef4\u4fee\u5382","as_mem_discount":" 3.00"},{"mem_id":"2183","mem_shop_id":"172999","mem_mel_id":"2","mem_discount":"4.00","mem_status":"1","men_manjian":"0","mel_id":"2","mel_name":"\u5c0f\u578b\u7ecf\u9500\u5546","as_mem_discount":" 4.00"},{"mem_id":"2184","mem_shop_id":"172999","mem_mel_id":"3","mem_discount":"6.00","mem_status":"1","men_manjian":"0","mel_id":"3","mel_name":"\u4e2d\u578b\u7ecf\u9500\u5546","as_mem_discount":" 6.00"},{"mem_id":"2185","mem_shop_id":"172999","mem_mel_id":"4","mem_discount":"9.00","mem_status":"1","men_manjian":"0","mel_id":"4","mel_name":"\u5927\u578b\u7ecf\u9500\u5546","as_mem_discount":" 9.00"}]}}
	 *
	 *
	 * type=price
	 *proArr: pro_sale_price 销售价 pro_promotion_price 促销价 pro_cost_price 成本价 pro_promotion_btime促销开始时间  pro_promotion_etime促销结束时间 pro_price_vip1 vip1价 .....
	 *memberArr: [会员信息]  mem_shop_id 店铺 mem_mel_id 会员等级【vip1】 mem_status 会员状态[1|0]【开启|关闭】 mel_name 会员名称
	 *
	 *type=null
	 * 
	 *{"status":true,"data":{"imgArr":["http:\/\/192.168.1.42\/file_center\/center\/read.php?site=b2c&c=product&f=shop172999\/product\/100\/450eb61241431997.jpg&i=42","http:\/\/192.168.1.42\/file_center\/center\/read.php?site=b2c&c=product&f=shop172999\/product\/100\/c552d5f500a13e9f.jpg&i=42"]}}
	 * 
	 * @author 卢
	 * @copyright 2018-05-05
	 */
	function getEditPro()
	{
		$this->checkRule(2);
		$Params = mvc::$URL_PARAMS;
		$B2cProduct=new B2cProduct();
		$data=['status'=>false,'data'=>[]];
		if(LibFc::Int($Params['proId']))
		{
			$data['status']=true;
			$shopId=$this->dataConfig['_shopid'];
			// $shopId=172999;
			if($Params['type']=='price')
			{
				$res=$B2cProduct->getProduct(['pro_sale_price','pro_promotion_price','pro_cost_price','pro_promotion_btime','pro_promotion_etime','pro_price_vip1','pro_price_vip2','pro_price_vip3','pro_price_vip4','pro_id','pro_name'],sprintf(' and pro_id=%d and pro_shop_id=%d',$Params['proId'],$shopId),true);
				$proArr=$res['data'];
				$B2cShop = new B2cShop();
				$res = $B2cShop->getMemberSetting($shopId);
				$memberArr=[];
				if(!empty($res['data']))
				{
					foreach ($res['data'] as $v) 
					{
						if($v['mem_status']>0)
							$memberArr[]=$v;
					}
				}
				$data['data']['proArr']=$proArr;
				$data['data']['memberArr']=$memberArr;
				
			}
			else
			{
				$data['data']['imgArr']=[];
				$res=$B2cProduct->getProductPic($Params['proId'],true);
				if(!empty($res['data']))
				{
					foreach ($res['data'] as $v) 
					{
						$v['imgUrl']=mvc::$cfg['FILE_CENTER']['b2c']['url_get'].'&c=product&f='.$v['spi_path'].'100/'.$v['spi_name'].mvc::$cfg['FILE_CENTER']['b2c']['get_uri'];
						$data['data']['imgArr'][]=$v;
					}
				}
			}
			LibFc::ajaxJsonEncode(['status'=>true,'data'=>$data]);
		}
	}
	/**
	 * @method    保存修改的价格
	 * @http post
	 * @param   pro  array  [
	 *        int    sale_price    【必填】 [销售价]
	 *        float  id            【必填】 [配件Id]
	 *        float  price_vip1    【选填】 vip1价格
	 *        float  price_vip2    【选填】 vip2价格
	 *        float  price_vip3    【选填】
	 *        float  price_vip4    【选填】
	 *        int    promotion     [选填] 1|null
			  float  promotion_price [选填] 【】
			  string promotion_btime [选填]  促销开始时间  【2018-10-11 13:17:00】
			  string promotion_etime [选填] 【2018-12-11 13:17:00】
	 * 	]
	 * @return    [json]     {"status":true,"data":1,"code":0}
	 * @author 卢
	 * @copyright 2018-09-28
	 */
	function editPro()
	{
		$this->checkRule(2);
		$B2cProduct=new B2cProduct();
		$shopId=$this->dataConfig['_shopid'];
		if(!LibFc::Int($_POST['id']))
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'参数不正确']);
			exit();
		}
		$res=$B2cProduct->get('bc_product',['count(1) count'],sprintf(' and pro_id=%d and pro_shop_id=%d',$_POST['id'],$shopId),true)
		;
		if(!$res['data']['count'])
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'修改价格失败']);
		}
		$proArr=[];
		$valArr=['promotion_btime','promotion_etime','sale_price','price_vip1','price_vip2','price_vip3','price_vip4','promotion_price'];
		foreach ($valArr as $v) 
		{
			switch ($v) 
			{
				case 'promotion_btime':
					$proArr['pro_promotion_btime']=!empty($_POST[$v])?strtotime($_POST[$v]):0;
					break;
				case 'promotion_etime':
					$proArr['pro_promotion_etime']=!empty($_POST[$v])?strtotime($_POST[$v]):0;
					// $proArr['pro_promotion_etime']=strtotime($v);
					break;
				case 'sale_price':
					if(floatval($_POST['sale_price'])<0.01){
						LibFc::ajaxJsonEncode(['status'=>false,'data'=>'销售价不能为空']);
					}
					$proArr['pro_'.$v]=sprintf('%.2f',$_POST[$v]);
				default:
					$proArr['pro_'.$v]=sprintf('%.2f',$_POST[$v]);
					break;
			}
		}
		if(empty($_POST['promotion']))
		{
			$proArr['pro_promotion_etime']=0;
			$proArr['pro_promotion_btime']=0;
		}
		$res=$B2cProduct->set('bc_product',$proArr,sprintf(' and pro_id=%d',$_POST['id']));
		LibFc::ajaxJsonEncode($res);
	}
	/**
	 * @method    删除配件图片
	 * @http post
	 * @param   arr|int   imgArr  【图片ID】
	 * @return    [json]     [{"status":true,"data":1,"code":0}]
	 * @author 卢
	 * @copyright 2018-10-10
	 */
	function delProImg()
	{
		$this->checkRule(2);
		$B2cProduct=new B2cProduct();
		$shopId=$this->dataConfig['_shopid'];
		$data=$_POST['imgArr'];
		if(!empty($data))
		{
			$data=is_array($data)?array_filter($data,'LibFc::Int'):[(int)$data];
			if(!empty($data))
			{
				$B2cProduct=new B2cProduct();
				$res=$B2cProduct->get('bc_product_pic',['distinct pp_pro_id'],sprintf(' and pp_spi_id in(%s)',implode(',',$data)));
				$proIdArr=array_column($res['data'], 'pp_pro_id');
				if(!empty($proIdArr))
				{
					$res=$B2cProduct->get('bc_product',['distinct pro_shop_id'],sprintf(' and pro_id in(%s)',implode(',',$proIdArr)));
					$shopIdArr=array_column($res['data'], 'pro_shop_id');
					foreach ($shopIdArr as $v) 
					{
						if($v!=$shopId)
						{
							LibFc::ajaxJsonEncode(['status'=>false,'data'=>'配件不属于该店铺']);
						}
					}
					$res=$B2cProduct->del('bc_product_pic',sprintf(' and pp_spi_id in(%s)',implode(',',$data)));
					LibFc::ajaxJsonEncode($res);
				}
				LibFc::ajaxJsonEncode(['status'=>false,'data'=>'配件不存在']);
			}
		}
		LibFc::ajaxJsonEncode(['status'=>false,'data'=>'参数错误']);
	}
	/**
	 * @method    更改配件图片顺序
	 * http post
	 * @param int  proId  [必填] 配件id
	 * @param arr  spiArr [必填]  图片id  
	 * @param arr  seqArr [必填]  图片顺序数组  必须跟spiArr中的对应
	 * @return    [json]       {"status":true,"data":true}
	 * @author 卢
	 * @copyright 2018-10-15
	 */
	function changeImgSeq()
	{
		// print_r($_POST);
		// die;
		$this->checkRule(2);
		$B2cProduct=new B2cProduct();
		if(!LibFc::Int($_POST['proId'])||empty($_POST['seqArr'])||empty($_POST['spiArr']))
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'参数错误']);
		}
		$shopId=$this->dataConfig['_shopid'];
		$seqArr=explode(',',$_POST['seqArr']);
		$spiArr=explode(',', $_POST['spiArr']);
		// $seqArr=['17437'=>2,'17425'=>0,'17424'=>1,'17420'=>3];
		// $spiArr=['17437','17425','17424','17420'];
		$shopArr=[];
		if(!empty($spiArr))
		{
			$res=$B2cProduct->get('bc_product_pic left join bc_product on pro_id=pp_pro_id',['distinct pro_shop_id'],sprintf(' and pp_pro_id =%d and pp_spi_id in(%s)',$_POST['proId'],implode(',',$spiArr)));
			$shopArr=array_unique(array_column($res['data'], 'pro_shop_id'));
		}
		// print_r($shopArr);
		if(count($shopArr)>1||$shopArr[0]!=$shopId)
		{
			LibFc::ajaxJsonEncode(['status'=>false,'data'=>'配件图片不属于该店铺']);
		}
		array_map(function($v){
			return (int)$v;
		}, $seqArr);
		foreach ($seqArr as $k => $v) 
		{
			$B2cProduct->set('bc_product_pic',['pp_seq'=>$v],sprintf(' and pp_spi_id=%d',$spiArr[$k]));
		}
		//修改主图
		$res=$B2cProduct->get('bc_product_pic',['pp_spi_id'],sprintf(' and pp_pro_id=%d order by pp_seq asc',$_POST['proId']));
		if(!empty($res['data']))
		{
			$index=0;
			foreach ($res['data'] as $v) 
			{
				$isMain=empty($index)?1:0;
				$B2cProduct->set('bc_product_pic',['pp_ismain'=>$isMain],sprintf(' and pp_spi_id=%d',$v['pp_spi_id']));
				$index++;
			}
		}
		LibFc::ajaxJsonEncode(['status'=>true,'data'=>true]);
	}
}