Commit e8b75618 authored by zhz's avatar zhz

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into master_dev

parents 83407fe5 daf366f9
......@@ -116,8 +116,14 @@ class CartController extends \Our\Controller_AbstractApi{
//var_dump($storeCartData);
$storeCartData = $cartService->checkCouponForCart($storeCartData,$this->memberId);
//$this->success($storeCartData);
$storeCartData = $cartService->getDeliveryTypeForCart($address,$storeCartData);
$data = $cartService->getFormatCartListForOrder($storeCartData,$address);
if(CURRENTVERSION==\Our\NameConst::versionOne){
$storeCartData = $cartService->getDeliveryTypeForCartNew($address,$storeCartData);
//$this->success($storeCartData);
$data = $cartService->getFormatCartListForOrderNew($storeCartData,$address);
}else{
$storeCartData = $cartService->getDeliveryTypeForCart($address,$storeCartData);
$data = $cartService->getFormatCartListForOrder($storeCartData,$address);
}
$this->success($data);
}
......@@ -163,30 +169,14 @@ class CartController extends \Our\Controller_AbstractApi{
$storeCartData = array('cartList'=>$cartList['list'],'storeIds'=>array_keys($cartList['list']),'goodsIds'=>$cartList['goodsIds'],'goodsCommonIds'=>$cartList['goodsCommonIds'],'blIds'=>$cartList['blIds'],'gcIds'=>$gcIds);
$storeCartData = $cartService->checkCouponForCart($storeCartData,$this->memberId);
//$this->success($storeCartData);
$storeCartData = $cartService->getDeliveryTypeForCart($address,$storeCartData);
$data = $cartService->getFormatCartListForOrder($storeCartData,$address);
$this->success($data);
}
/**
* 立即购买
*/
public function buyNowNewAction(){
$cartService = \Business\Cart\CartServiceModel::getInstance();
$data = $this->req[\Our\NameConst::data];
$sess=\Yaf\Session::getInstance();
$currentAddress = $sess->get('currentAddress');
$address = $cartService->checkCurrentAddress($currentAddress,$this->memberId);
$cartService->checkBuynow($data,$this->memberId);
$pBundlingService = \Business\Goods\GroupSaleServiceModel::getInstance();
$cartList = $pBundlingService->getFormatBuyNowListForOrder($data,$this->memberId);
$gcIds = isset($cartList['gcIds'])?$cartList['gcIds']:array();
$storeCartData = array('cartList'=>$cartList['list'],'storeIds'=>array_keys($cartList['list']),'goodsIds'=>$cartList['goodsIds'],'goodsCommonIds'=>$cartList['goodsCommonIds'],'blIds'=>$cartList['blIds'],'gcIds'=>$gcIds);
$storeCartData = $cartService->checkCouponForCart($storeCartData,$this->memberId);
$storeCartData = $cartService->getDeliveryTypeForCartNew($address,$storeCartData);
//$this->success($storeCartData);
$data = $cartService->getFormatCartListForOrderNew($storeCartData,$address);
if(CURRENTVERSION==\Our\NameConst::versionOne){
$storeCartData = $cartService->getDeliveryTypeForCartNew($address,$storeCartData);
//$this->success($storeCartData);
$data = $cartService->getFormatCartListForOrderNew($storeCartData,$address);
}else{
$storeCartData = $cartService->getDeliveryTypeForCart($address,$storeCartData);
$data = $cartService->getFormatCartListForOrder($storeCartData,$address);
}
$this->success($data);
}
......@@ -196,6 +186,7 @@ class CartController extends \Our\Controller_AbstractApi{
$data = $this->req[\Our\NameConst::data];
$sess=\Yaf\Session::getInstance();
$currentAddress = $sess->get('currentAddress');
$result = $cartService->addOrder($data,$this->memberId,$currentAddress);
$this->success($result);
}
......
......@@ -50,12 +50,15 @@ class OrderConfirmUtil {
public function addOrder($data,$memberId,$currentAddress){
$storeCartData = $this->checkPostData($data,$memberId,$currentAddress);
//return $storeCartData;
$storeCartData = $this->checkDeliveryTypeAndPayway($storeCartData);
if(CURRENTVERSION==\Our\NameConst::versionOne){
$storeCartData = $this->checkDeliveryTypeAndPaywayNew($storeCartData);
}else{
$storeCartData = $this->checkDeliveryTypeAndPayway($storeCartData);
}
return $this->saveOrderInfo($storeCartData);
}
/**
* 验证传入数据的完成性
* @param $data
......@@ -79,7 +82,11 @@ class OrderConfirmUtil {
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyParamForOrder);
}
if(isset($this->postData['storeId'])&&$this->postData['storeId']){//组合销售或者单品的立即购买
$this->checkOneStoreData($this->postData);
if(CURRENTVERSION==\Our\NameConst::versionOne){
$this->checkOneStoreDataNew($this->postData);
}else{
$this->checkOneStoreData($this->postData);
}
if((isset($this->postData['blId'])&&$this->postData['blId']>\Our\ApiConst::zero)&&(isset($this->postData['goodsId'])&&$this->postData['goodsId']>\Our\ApiConst::zero)){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongBlIdAndGoodsIdForOrder);
}else if(!(isset($this->postData['goodsId'])&&$this->postData['goodsId']>\Our\ApiConst::zero)&&!(isset($this->postData['blId'])&&$this->postData['blId']>\Our\ApiConst::zero)){
......@@ -97,7 +104,11 @@ class OrderConfirmUtil {
}else{
$this->cartCacheDeleteFlag = true;
foreach($this->postData as $temp){
$this->checkOneStoreData($temp);
if(CURRENTVERSION==\Our\NameConst::versionOne){
$this->checkOneStoreDataNew($temp);
}else{
$this->checkOneStoreData($temp);
}
if(!$temp['cartIds']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyCartIdsForOrder);
}
......@@ -176,6 +187,52 @@ class OrderConfirmUtil {
}
}
/**
* 配送方式只包含商家配送和自提的参数检验
* @param $temp
* @throws \Error\OurExceptionModel
* @throws \Exception
*/
public function checkOneStoreDataNew($temp){
if(!$temp['storeId']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyStoreIdForOrder);
}
if(!(isset($temp['payway']))&&in_array($temp['payway'],array(\Our\ApiConst::payOnline,\Our\ApiConst::payOffline,\Our\ApiConst::payAog))){//验证支付方式
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongPaywayForOrder);
}
if(!(isset($temp['deliveryType']))&&in_array($temp['deliveryType'],array(\Our\ApiConst::deliveryBuyer,\Our\ApiConst::deliveryStore))){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongDeliveryTypeForOrder);
}
if(!($temp['deliveryTime'])){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyDeliveryTime);
}
$minute = intval(date('i',$temp['deliveryTime']));
if(!($minute==0||$minute==30)){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongDeliveryTime);
}
if($temp['deliveryType']==\Our\ApiConst::deliveryBuyer){
if(!isset($temp['buyerMobile'])){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyBuyerMobile);
}
if(!\Our\Common::checkMobilePhone($temp['buyerMobile'])){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongBuyerMobile);
}
}
if(!isset($temp['deliveryFee'])){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyDeliveryFeeForOrder);
}
if(isset($temp['couponId'])&&$temp['couponId']>\Our\ApiConst::zero){//商品如果有使用优惠券
if(intval($temp['couponId'])<=\Our\ApiConst::zero){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongCouponIdForOrder);
}else{
$this->couponIds[] = $temp['couponId'];
$this->storeCouponIds[$temp['storeId']] = $temp['couponId'];
}
}
}
/**
* 检查配送方式
* @param $storeCartData
......@@ -232,8 +289,89 @@ class OrderConfirmUtil {
\Error\ErrorModel::throwException(\Error\CodeConfigModel::noExpressDeliveryForOrder1);
}
$deliveryFee = $temp['shippingFee'];
$delivery['buyerMobile'] = $requestData['buyerMobile'];
}
if($deliveryFee!=$requestData['deliveryFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongStoreDeliveryFeeForOrder);
}
$delivery['deliveryFee'] = $deliveryFee;
$delivery['deliveryType'] = $requestData['deliveryType'];
$delivery['deliveryTime'] = isset($deliveryTime)?$deliveryTime:\Our\ApiConst::zero;
$storeCartData['cartList'][$storeId]['delivery'] = $delivery;
if(($requestData['payway'] == \Our\ApiConst::payOnline&&$temp['onelinePay']==\Our\ApiConst::one)||
($requestData['payway'] == \Our\ApiConst::payOffline&&$temp['offlinePay']==\Our\ApiConst::one)||
(($requestData['payway'] == \Our\ApiConst::payAog&&$temp['aogPay']==\Our\ApiConst::one))){
$storeCartData['cartList'][$storeId]['payway'] = $requestData['payway'];
}else{
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongPaywayForStoreForOrder);
}
$reliefAmount = isset($tempStore['reliefAmount'])?$tempStore['reliefAmount']:\Our\ApiConst::zero;
$orderAmount = $tempStore['storeTotalPrice'] - $reliefAmount + $deliveryFee;
if($orderAmount<=\Our\ApiConst::zero){
$orderAmount = \Our\ApiConst::zero;
}
if($orderAmount!=$requestData['totalFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongTotalFeeForOrder);
}
$storeCartData['cartList'][$storeId]['orderAmount'] = $orderAmount;
}
return $storeCartData;
}
/**
* 检查配送方式
* @param $storeCartData
* @return mixed
*/
public function checkDeliveryTypeAndPaywayNew($storeCartData){
$cartService = \Business\Cart\CartServiceModel::getInstance();
$storeCartData = $cartService->getDeliveryTypeForCartNew($this->address,$storeCartData,\Our\DbNameConst::masterDBConnectName,true);
$currentTime = time();
$todayTime = strtotime(date('Y-m-d',time()));
$tomorrowTime = $todayTime + \Our\ApiConst::oneDaySecond;
foreach($storeCartData['cartList'] as $storeId=>$tempStore){
$temp = $tempStore['deliverySetting'];
if(isset($this->postData['storeId'])&&$this->postData['storeId']){
$requestData = $this->postData;
}else{
$requestData = $this->postFormatData[$storeId];
}
if($requestData['deliveryType'] == \Our\ApiConst::deliveryStore){//商家配送
if($temp['sellerDistribution']!=\Our\ApiConst::one){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::noStoreDeliveryTypeForOrder);
}
if($temp['leftAmount']>0){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::leftAmountError);
}
if($requestData['deliveryTime']>=$todayTime&&$requestData['deliveryTime']<$todayTime*3){
$tempList = array_column($temp['deliverTimeList'],'list','time');
$currentDay= strtotime(date('Y-m-d',$requestData['deliveryTime']));
$currentList = $tempList[$currentDay];
$feeArray = array_column($currentList,'price','time');
$deliveryFee = $feeArray[$requestData['deliveryTime']];
}else{
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongDeliveryTimeRangeForOrder);
}
}else if($requestData['deliveryType'] == \Our\ApiConst::deliveryBuyer){
if($temp['buyerDistribution']!=\Our\ApiConst::one){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::noBuyerDeliveryTypeForOrder);
}
if($requestData['deliveryFee'] != \Our\ApiConst::zero){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::noDeliveryFeeForBuyerType);
}
if($requestData['deliveryTime']>=$todayTime&&$requestData['deliveryTime']<$todayTime*3){
$tempList = array($temp['selfDeliveryTimeList'],'list','time');
$currentDay= strtotime(date('Y-m-d',$requestData['deliveryTime']));
$currentList = $tempList[$currentDay];
$feeArray = array_column($currentList,'price','time');
$deliveryFee = $feeArray[$requestData['deliveryTime']];
}else{
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongBuyerTimeRangeForOrder);
}
$deliveryFee = \Our\ApiConst::zero;
}
if($deliveryFee!=$requestData['deliveryFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongStoreDeliveryFeeForOrder);
}
......@@ -354,6 +492,7 @@ class OrderConfirmUtil {
$needPayFlag = \Our\ApiConst::zero;
$giftCoupons = array();
$this->pushMessageOrders = array();
$storeDao = \DAO\StoreModel::getInstance(\Our\DbNameConst::masterDBConnectName);
foreach($storeCartData['cartList'] as $storeId=>$storeCarts){
$order= array();
$order['order_sn'] = $this->makeOrderSn($orderPayResult);
......@@ -432,12 +571,19 @@ class OrderConfirmUtil {
$orderModel->db->doRollback();
\Error\ErrorModel::throwException(\Error\CodeConfigModel::updateAddressFailedForOrder);
}
$store = $storeDao->get($storeId,false);
$orderCommon = array();
$orderCommon['order_id'] = $orderId;
$orderCommon['store_id'] = $storeId;
$orderCommon['order_message'] = isset($this->storeMemos[$storeId])?$this->storeMemos[$storeId]:\Our\NameConst::emptyString;
$orderCommon['reciver_info'] = $reciverInfo;
$orderCommon['reciver_name'] = $reciverName;
if($storeCarts['delivery']['deliveryType'] == \Our\ApiConst::deliveryBuyer){
list($buyerStoreInfo,$buyerName) = $this->getStoreInfoAndBuyerInfo($store,array('buyerMobile'=>$storeCarts['delivery']['buyerMobile'],'member_name'=>$this->member['memberName']));
$orderCommon['reciver_info'] = $buyerStoreInfo;
$orderCommon['reciver_name'] = $buyerName;
}else{
$orderCommon['reciver_info'] = $reciverInfo;
$orderCommon['reciver_name'] = $reciverName;
}
$orderCommon['reciver_city_id'] = $this->address['city_id'];
$orderCommonList[] = $orderCommon;
//$orderCommonDao->insert($orderCommon);
......@@ -854,6 +1000,24 @@ class OrderConfirmUtil {
}
public function getStoreInfoAndBuyerInfo($store,$data){
$reciverInfo['phone'] = $data['buyerMobile'];
$reciverInfo['mob_phone'] = $data['buyerMobile'];
$reciverInfo['tel_phone'] = $data['buyerMobile'];
$reciverInfo['address'] = $store['store_address'];
$reciverInfo['name'] = $data['member_name'];
$reciverInfo['area'] = $store['area_info'];
$reciverInfo['street'] = $store['store_address'];
$reciverInfo['lng'] = $store['store_longitude'];
$reciverInfo['lat'] = $store['store_latitude'];
$reciverInfo['citycode'] = $store['store_citycode'];
$reciverInfo['address_id'] = \Our\NameConst::emptyString;
$reciverInfo['subaddress'] = $store['store_subaddress'];
$reciverInfo = serialize($reciverInfo);
$reciverName = $data['member_name'];
return array($reciverInfo, $reciverName);
}
public function getReciverAddr($addressInfo = array()) {
/*if (intval($addressInfo['dlyp_id'])) {
$reciverInfo['phone'] = trim($addressInfo['dlyp_mobile'].($addressInfo['dlyp_telephony'] ? ','.$addressInfo['dlyp_telephony'] : null),',');
......
......@@ -6,6 +6,17 @@ namespace Our;
* 控制器抽象类
*/
abstract class Controller_Abstract extends \Yaf\Controller_Abstract {
public function init(){
$this->req=$this->getRequest()->getPost();
$version = $this->req['data']['currentVersion'];
if($version){
define('CURRENTVERSION',$version);
}else{
define('CURRENTVERSION',\Our\NameConst::versionDefault);
}
}
public function success($data=array(),$shortMessage = DescribeConst::successMessage,$longMessage=DescribeConst::successMessage,$resultCode=ApiConst::returnSuccess)
{
$returnMessage[NameConst::shortMessage] = $shortMessage;
......
......@@ -21,7 +21,7 @@ abstract class Controller_AbstractApi extends \Our\Controller_Abstract {
* api控制器直接输出json格式数据,不需要渲染视图
*/
public function init() {
$this->req=$this->getRequest()->getPost();
parent::init();
$this->checkEncrypt();
if(empty($this->req['data']['key'])){
ErrorModel::throwException(CodeConfigModel::illegalAccess);
......
......@@ -25,6 +25,7 @@ abstract class Controller_AbstractClient extends \Our\Controller_Abstract {
* api控制器直接输出json格式数据,不需要渲染视图
*/
public function init() {
parent::init();
$this->req=$this->getRequest()->getPost();
$this->checkEncrypt();
if(empty($this->req['data']['key'])){
......
......@@ -22,6 +22,7 @@ abstract class Controller_AbstractIndex extends \Our\Controller_Abstract {
}
}
public function init(){
parent::init();
$this->req=$this->getRequest()->getPost();
$postData=$this->req['data'];
$this->checkEncrypt();
......
......@@ -178,6 +178,9 @@ class NameConst {
const logOut='logOut';
const versionOne = '1.0.0';
const versionDefault = '1.0';
}
?>
\ No newline at end of file
......@@ -89,7 +89,9 @@ class TencentPay {
function postXml()
{
$xml = $this->createXml();
\Our\Log::getInstance()->write($xml,'/data/log/applog');
$this->response = $this->postXmlCurl($xml,$this->pay_url,$this->curl_timeout);
\Our\Log::getInstance()->write(serialize($this->response),'/data/log/applog');
return $this->response;
}
......
......@@ -663,7 +663,7 @@ class CartServiceModel extends \Business\AbstractModel{
* @param $address
* @param $storeCartData
*/
public function getDeliveryTypeForCartNew($address,$storeCartData,$dbName = \Our\DbNameConst::salveDBConnectName){
public function getDeliveryTypeForCartNew($address,$storeCartData,$dbName = \Our\DbNameConst::salveDBConnectName,$checkFlag = false){
$storeIds = $storeCartData['storeIds'];
$storeDao = \DAO\StoreModel::getInstance();
$deliveryFormulaDao = \DAO\DeliveryFormulaModel::getInstance($dbName);
......@@ -695,32 +695,34 @@ class CartServiceModel extends \Business\AbstractModel{
'cityCode' => $store['store_citycode']
);
if($deliverySetting['buyerDistribution']){
$deliverySetting['selfDeliveryTimeList'] = $deliveryFormulaDao->getBuyerFormulaForCart($store);
$selfDeliveryTimeData = $deliveryFormulaDao->getBuyerFormulaForCart($store);
$deliverySetting['selfDeliveryTimeList'] = $selfDeliveryTimeData['timeList'];
$deliverySetting['selfDeliveryFee'] = $selfDeliveryTimeData['default'];
}
$deliverySetting['sellerDistribution'] = $store['seller_distribution'];
if($deliverySetting['sellerDistribution']){
$deliverySetting['leftAmount'] = \Our\ApiConst::zero;
$deliverySetting['inServiceAreaFlag'] = \Our\ApiConst::zero;
//var_dump(json_encode($store));
if((isset($store['start_shipping_price'])&&$store['start_shipping_price']>\Our\ApiConst::zero)&&$storeCarts['storeTotalPrice']<$store['start_shipping_price']){
//$deliverySetting['sellerDistribution'] = \Our\ApiConst::zero;
$deliverySetting['leftAmount'] = $store['start_shipping_price']-$storeCarts['storeTotalPrice'];//差价
}else{
$deliveryFreeFlag = $storeCarts['deliveryFreeFlag'];
if((isset($store['free_shipping_price'])&&$store['free_shipping_price']>\Our\ApiConst::zero)&&$storeCarts['storeTotalPrice']>=$store['free_shipping_price']){
$deliveryFreeFlag = \Our\ApiConst::one;
}
$deliverySetting['deliverTimeList'] =array();
if($address){
$result = \Store\StoreUtil::getInstance()->checkAddressInServiceArea(array('lng'=>$address['lng'],'lat'=>$address['lat']),$storeId);
$storeDistance = \Our\CommonExtension::getDistance($address['lat'],$address['lng'],$store['store_latitude'],$store['store_longitude'],\Our\ApiConst::one);
if($result){
$deliverySetting['inServiceAreaFlag'] = \Our\ApiConst::one;
$deliverTimeList = $deliveryFormulaDao->getDeliveryFormulaForCartNew($store,$storeDistance,$deliveryFreeFlag);
if($deliverTimeList){
$deliverySetting['deliverTimeList'] =$deliverTimeList['timeList'];
$storeCartData['cartList'][$storeId]['storeDistance'] = $storeDistance;
$deliverySetting['defaultFee'] = $deliverTimeList['default']?$deliverTimeList['default']:\Our\ApiConst::zero;
}
}
$deliveryFreeFlag = $storeCarts['deliveryFreeFlag'];
if((isset($store['free_shipping_price'])&&$store['free_shipping_price']>\Our\ApiConst::zero)&&$storeCarts['storeTotalPrice']>=$store['free_shipping_price']){
$deliveryFreeFlag = \Our\ApiConst::one;
}
$deliverySetting['deliverTimeList'] =array();
if($address){
$result = \Store\StoreUtil::getInstance()->checkAddressInServiceArea(array('lng'=>$address['lng'],'lat'=>$address['lat']),$storeId);
$storeDistance = \Our\CommonExtension::getDistance($address['lat'],$address['lng'],$store['store_latitude'],$store['store_longitude'],\Our\ApiConst::one);
if($result){
$deliverySetting['inServiceAreaFlag'] = \Our\ApiConst::one;
$deliverTimeList = $deliveryFormulaDao->getDeliveryFormulaForCartNew($store,$storeCarts,$storeDistance,$deliveryFreeFlag,$checkFlag);
if($deliverTimeList){
$deliverySetting['deliverTimeList'] =$deliverTimeList['timeList'];
$storeCartData['cartList'][$storeId]['storeDistance'] = $storeDistance;
$deliverySetting['sellerDefaultFee'] = $deliverTimeList['default']?$deliverTimeList['default']:\Our\ApiConst::zero;
}
}
}
......@@ -964,7 +966,7 @@ class CartServiceModel extends \Business\AbstractModel{
$delivery = array();
$delivery['name'] = \Our\DescribeConst::deliveryNameStore;
$delivery['type'] = \Our\ApiConst::deliveryStore;
$deliveryFee = $deliverySetting['defaultFee'];
$deliveryFee = $deliverySetting['sellerDefaultFee'];
$shippingFee = $deliveryFee;
$delivery['isChoosed'] = \Our\ApiConst::one;
$delivery['deliveryFee'] = $deliveryFee;
......@@ -977,7 +979,7 @@ class CartServiceModel extends \Business\AbstractModel{
$delivery = array();
$delivery['name'] = \Our\DescribeConst::deliveryNameExpress;
$delivery['type'] = \Our\ApiConst::deliveryExpress;
if(isset($shippingFee)){
if($deliverySettings){
$delivery['isChoosed'] = \Our\ApiConst::zero;
}else{
$shippingFee = $deliveryFee;
......@@ -992,7 +994,7 @@ class CartServiceModel extends \Business\AbstractModel{
$delivery = array();
$delivery['name'] = \Our\DescribeConst::deliveryNameBuyer;
$delivery['type'] = \Our\ApiConst::deliveryBuyer;
if(isset($shippingFee)){
if($deliverySettings){
$delivery['isChoosed'] = \Our\ApiConst::zero;
}else{
$shippingFee = $deliveryFee;
......@@ -1000,7 +1002,6 @@ class CartServiceModel extends \Business\AbstractModel{
$storeSumData['deliveryFee'] = $deliveryFee;
}
$delivery['deliveryFee'] = $deliveryFee;
$delivery['timeList'] = $deliverySetting['selfDeliveryTimeList'];
$deliverySettings[]= $delivery;
}
......
......@@ -89,12 +89,13 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
if($serviceParentClassIds){
$classIds = array_merge($serviceParentClassIds,$classIds);
}
/*
//获取可快递店铺对应分类
$expressClassIds = $this->getExpressStoreClasses($where);
if($expressClassIds){
$classIds = array_merge($expressClassIds,$classIds);
}
*/
$classIdKeys = array_flip($classIds);
$goodsClassDao = \DAO\GoodsClassModel::getInstance();
$parentClasses = $goodsClassDao->getParentClasses();
......
......@@ -606,7 +606,7 @@ class StoreServiceModel extends \Business\AbstractModel{
//服务分类对应店铺
$serviceStores = $this->getServiceClassStores($gcId,$condition);
//获取签约分类对应店铺
$expressStores = $this->getExpressStores($gcId,$condition);
//$expressStores = $this->getExpressStores($gcId,$condition);
$goodsClassList = $goodsClassDao->getOnlineSecondClassList($gcId);
......@@ -620,11 +620,13 @@ class StoreServiceModel extends \Business\AbstractModel{
$purchasedStore = array();
if($signStores&&in_array($goodsClass['gcId'],array_keys($signStores))){//如果当前分类存在对应签约店铺
$exitStore = $allStores[$signStores[$goodsClass['gcId']]];
}else if($serviceStores&&in_array($goodsClass['gcId'],array_keys($serviceStores))){
}
if(empty($exitStore)&&$serviceStores&&in_array($goodsClass['gcId'],array_keys($serviceStores))){
$exitStore = $allStores[$serviceStores[$goodsClass['gcId']]];
}else if($expressStores&&in_array($goodsClass['gcId'],array_keys($expressStores))){
$exitStore = $allStores[$expressStores[$goodsClass['gcId']]];
}
/*if(empty($exitStore)&&$expressStores&&in_array($goodsClass['gcId'],array_keys($expressStores))){
$exitStore = $allStores[$expressStores[$goodsClass['gcId']]];
}*/
if($memberStores){
if($memberStores&&in_array($goodsClass['gcId'],array_keys($memberStores))){
$purchasedStore = $allStores[$memberStores[$goodsClass['gcId']]];
......
......@@ -309,7 +309,6 @@ class AddressServiceModel extends \Business\AbstractModel {
}
}
return array('returnAddressId'=>$choosedAddressId,'choosedAddressFlag'=>$choosedAddressFlag,'addresses'=>$returnAddresses);
}
public function getMyCurrentAddressByMemberId($memberId){
......
......@@ -71,6 +71,9 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if ($store['store_start_time'] && $store['store_close_time']) {
$todayStartTime = strtotime($time . ' ' . $store['store_start_time']);
$todayEndTime = strtotime($time . ' ' . $store['store_close_time']);
if($todayEndTime<=$todayStartTime){
$todayEndTime += \Our\ApiConst::oneDaySecond;
}
} else {
$todayStartTime = $time + \Our\ApiConst::deliveryStartTime;
$todayEndTime = $time + \Our\ApiConst::deliveryEndTime;
......@@ -78,33 +81,44 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if($currentTime<$todayStartTime){
$currentTime = $todayStartTime;
}
$return[]=array();
$return=array();
$time = date('Y-m-d',$currentTime);
$todayUnixTime = strtotime($time);
$todayList = $this->getBuyerFormulaList($currentTime,$todayEndTime,\Our\ApiConst::one);
$isDefault = \Our\ApiConst::zero;
if($todayList){
$return[] = array('time'=>$todayUnixTime,'list'=>$todayList);
$return = array_merge($return,$todayList);
}else{
$isDefault = \Our\ApiConst::one;
}
$tommorowStartTime = $todayStartTime + \Our\ApiConst::oneDaySecond;
$tommorowEndTime = $todayEndTime + \Our\ApiConst::oneDaySecond;
$tommorowUnixTime = $todayUnixTime + \Our\ApiConst::oneDaySecond;
$tromorrowList = $this->getBuyerFormulaList($tommorowStartTime,$tommorowEndTime,$isDefault);
if($tommorowUnixTime){
$return[]= array('time'=>$tommorowUnixTime,'list'=>$tromorrowList);
if($tromorrowList){
$return = array_merge($return,$tromorrowList);
}
$isDefault = \Our\ApiConst::zero;
if(!($todayList&&$tromorrowList)){
if(!$return){
$isDefault = \Our\ApiConst::one;
}
$nextStartTime = $todayStartTime + \Our\ApiConst::oneDaySecond*2;
$nextEndTime = $todayEndTime + \Our\ApiConst::oneDaySecond*2;
$nextUnixTime = $todayUnixTime + \Our\ApiConst::oneDaySecond*2;
if($nextEndTime>$todayUnixTime*3){
$nextEndTime = $todayUnixTime*3;
}
$nextList = $this->getBuyerFormulaList($nextStartTime,$nextEndTime,$isDefault);
if($tommorowUnixTime){
$return[]= array('time'=>$nextUnixTime,'list'=>$nextList);
if($nextList){
$return = array_merge($return,$nextList);
}
if($return){
$returnList = array();
foreach($return as $key=>$value){
$dayList = array();
$dayList['time']= strtotime(date('Y-m-d',$value[0]['time']));
$dayList['list']= $value;
$returnList[] = $dayList;
}
return array('timeList'=>$returnList,'default'=>\Our\ApiConst::zero);
}
return $return;
}
......@@ -122,8 +136,8 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
* @return array
* @throws \Our\Exception
*/
public function getDeliveryFormulaForCartNew($store,$storeCarts,$distance,$deliveryFreeFlag=false){
$delivery_template_ids = array_unique(array_column($storeCarts,'delivery_template_id'));
public function getDeliveryFormulaForCartNew($store,$storeCarts,$distance,$deliveryFreeFlag=false,$checkFlag = false){
$delivery_template_ids = array_unique(array_column($storeCarts['storeCarts'],'delivery_template_id'));
$deliveryFormula = \Our\RedisHelper::cachedFunction(\Redis\Db6\DeliveryFormulaRedisModel::getInstance(),array(&$this, 'getOne'),array('*',array('store_id'=>$store['store_id'])),\Our\ApiConst::sevenDaySecond,array($store['store_id']));
if(!$deliveryFormula){
return false;
......@@ -146,23 +160,39 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
}
}
$formula = array();
$halfList = array();
$oneList = array();
$twoList = array();
$dayList = array();
$otherList = array();
foreach($distanceFormulaList as $tempFormuala){
$halfList[] = $tempFormuala['half']?$tempFormuala['half']:$tempFormuala['other'];
$oneList[] = $tempFormuala['one']?$tempFormuala['one']:$tempFormuala['other'];
$twoList[] = $tempFormuala['one']?$tempFormuala['two']:$tempFormuala['other'];
$dayList[] = $tempFormuala['day']?$tempFormuala['day']:$tempFormuala['other'];
$otherList[] = $tempFormuala['other'];
}
$formula['half'] = max($distanceFormulaList);
$formula['one'] = max($oneList);
$formula['two'] = max($twoList);
$formula['day'] = max($dayList);
$formula['other'] = max($otherList);
$formula['half'] = max(array_column($distanceFormulaList,'half'));
$formula['one'] = max(array_column($distanceFormulaList,'one'));
$formula['two'] = max(array_column($distanceFormulaList,'two'));
$formula['day'] = max(array_column($distanceFormulaList,'day'));
$formula['other'] = max(array_column($distanceFormulaList,'other'));
foreach($distanceFormulaList as &$tempFormuala){
if($formula['half']){
if(!$tempFormuala['half']){
$tempFormuala['half'] = $tempFormuala['one']?$tempFormuala['one']:($tempFormuala['two']?$tempFormuala['two']:($tempFormuala['day']?$tempFormuala['day']:$tempFormuala['other']));
}
}
if($formula['one']){
if(!$tempFormuala['one']){
$tempFormuala['one'] = $tempFormuala['two']?$tempFormuala['two']:($tempFormuala['day']?$tempFormuala['day']:$tempFormuala['other']);
}
}
if($formula['two']){
if(!$tempFormuala['two']){
$tempFormuala['two'] = $tempFormuala['day']?$tempFormuala['day']:$tempFormuala['other'];
}
}
if($formula['day']){
if(!$tempFormuala['day']){
$tempFormuala['day'] = $tempFormuala['other'];
}
}
}
$formula['half'] = max(array_column($distanceFormulaList,'half'));
$formula['one'] = max(array_column($distanceFormulaList,'one'));
$formula['two'] = max(array_column($distanceFormulaList,'two'));
$formula['day'] = max(array_column($distanceFormulaList,'day'));
$currentTime =TIMESTAMP;
$time = date('Y-m-d',$currentTime);
......@@ -170,52 +200,92 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if($store['store_dis_sta_time']&&$store['store_dis_end_time']){
$todayStartTime = strtotime($time.' '.$store['store_dis_sta_time']);
$todayEndTime = strtotime($time.' '.$store['store_dis_end_time']);
if($todayEndTime<=$todayStartTime){
$todayEndTime += \Our\ApiConst::oneDaySecond;
}
}else{
$todayStartTime = $time+\Our\ApiConst::deliveryStartTime;
$todayEndTime = $time+\Our\ApiConst::deliveryEndTime;
}
if($todayStartTime>$currentTime){
$currentTime = $todayStartTime;
$todayInterval = 0;
if($formula['half']){
$currentMinute = date('i',$currentTime);
$tenMinute =10;
$forthMinute = 40;
if($checkFlag){
$tenMinute =15;
$forthMinute = 45;
}
if($currentMinute>$tenMinute&&$currentMinute<30){
$currentTime = mktime(date('H',$currentTime),30,0,date('m',$currentTime),date('d',$currentTime),date('Y',$currentTime));
}else if($currentMinute>$forthMinute){
$currentTime = mktime(date('H',$currentTime),60,0,date('m',$currentTime),date('d',$currentTime),date('Y',$currentTime));
}
}else if($formula['one']){
$todayInterval = \Our\ApiConst::halfHour;
}else if($formula['two']){
$todayInterval = \Our\ApiConst::oneHour;
}else if($formula['day']){
$todayInterval = \Our\ApiConst::oneHour*2 ;
}else{
$todayInterval = \Our\ApiConst::oneDaySecond;
}
$defaultFee = $formula['half'];
$currentTime = $currentTime + $todayInterval;
$defaultFee = $formula['half']?$formula['half']:($formula['one']?$formula['one']:($formula['two']?$formula['two']:($formula['day']?$formula['day']:$formula['other'])));
$defaultFee = $defaultFee*\Our\ApiConst::hundred;
$return = array();
$formulaList = $this->getTodayFormulaList($currentTime,$todayEndTime,$formula,$deliveryFreeFlag);
$tommorowDefault = \Our\ApiConst::zero;
if(!$formulaList){
$tommorowDefault = \Our\ApiConst::one;
if($currentTime<$todayEndTime){
if($todayStartTime>$currentTime){
$currentTime = $todayStartTime;
}
$formulaList = $this->getTodayFormulaList($currentTime,$todayEndTime,$todayInterval,$formula,$deliveryFreeFlag);
if(!$formulaList){
$tommorowDefault = \Our\ApiConst::one;
}else{
$return = array_merge($return,$formulaList);
}
}else{
$defaultFee = $formula['other'];
$return[]= array('time'=>$todayUnixTime,'list'=>$formulaList);
$tommorowDefault = \Our\ApiConst::one;
}
$tommorowStartTime = $todayStartTime + \Our\ApiConst::oneDaySecond;
$tommorowEndTime = $todayEndTime + \Our\ApiConst::oneDaySecond;
$tommorowUnixTime = $todayUnixTime + \Our\ApiConst::oneDaySecond;
$tromorrowList = $this->getOtherDayFormulaList($tommorowStartTime,$tommorowEndTime,$formula['other'],$deliveryFreeFlag,$tommorowDefault);
if($tommorowUnixTime){
$return[]= array('time'=>$tommorowUnixTime,'list'=>$tromorrowList);
if($tromorrowList){
$return = array_merge($return,$tromorrowList);
}
$nextStartTime = $todayStartTime + \Our\ApiConst::oneDaySecond*2;
$nextEndTime = $todayEndTime + \Our\ApiConst::oneDaySecond*2;
$nextUnixTime = $todayUnixTime + \Our\ApiConst::oneDaySecond*2;
if($nextEndTime>$todayUnixTime + \Our\ApiConst::oneDaySecond*3){
$nextEndTime = $todayUnixTime + \Our\ApiConst::oneDaySecond*3;
}
$isDefault = \Our\ApiConst::zero;
if(!($formulaList&&$tromorrowList)){
if(!($return)){
$isDefault = \Our\ApiConst::one;
}
$nextList = $this->getOtherDayFormulaList($nextStartTime,$nextEndTime,$formula['other'],$deliveryFreeFlag,$isDefault);
if($tommorowUnixTime){
$return[]= array('time'=>$nextUnixTime,'list'=>$nextList);
if($nextList){
$return = array_merge($return,$nextList);
}
if($return){
return array('timeList'=>$return,'default'=>$defaultFee);
$returnList = array();
foreach($return as $key=>$value){
$dayList = array();
$dayList['time']= strtotime(date('Y-m-d',$value[0]['time']));
$dayList['list']= $value;
$returnList[] = $dayList;
}
return array('timeList'=>$returnList,'default'=>$defaultFee);
}
return $return;
}
public function getTodayFormulaList($beginTime,$endTime,$formulaPrice,$deliveryFreeFlag){
public function getTodayFormulaList($beginTime,$endTime,$todayInterval,$formulaPrice,$deliveryFreeFlag){
$formulaList = array();
$time = TIMESTAMP;
$initMinute = intval(date('i',$beginTime));
if($initMinute==0||$initMinute==30){
$startTime = $beginTime;
......@@ -227,12 +297,11 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
}
}
if($startTime+\Our\ApiConst::halfHour<$endTime){
$interval =\Our\ApiConst::zero;
$interval =$todayInterval;
for($i=$startTime;$i<$endTime;$i = $i+(\Our\ApiConst::halfHour)){
$interval += \Our\ApiConst::halfHour;
$temp = array();
$temp['time'] = $i;
$temp['interval'] = \Our\ApiConst::halfHour;
$temp['isDefault'] = \Our\ApiConst::zero;
if($interval==\Our\ApiConst::halfHour*1){//半小时内的价格
$temp['price'] = $formulaPrice['half'];
......@@ -247,8 +316,9 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if($deliveryFreeFlag){
$temp['price'] = \Our\ApiConst::zero;
}
$temp['price'] = $temp['price']?$temp['price']:\Our\ApiConst::zero;
$formulaList[] = $temp;
$index = strtotime(date('Y-m-d',$i));
$temp['price'] = $temp['price']?($temp['price']*\Our\ApiConst::hundred):\Our\ApiConst::zero;
$formulaList[$index][] = $temp;
}
}
return $formulaList;
......@@ -270,14 +340,14 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
for($i=$startTime;$i<$endTime;$i = $i+(\Our\ApiConst::halfHour)){
$temp = array();
$temp['time'] = $i;
$temp['interval'] = \Our\ApiConst::halfHour;
$temp['price'] = $price?$price:\Our\ApiConst::zero;
$temp['price'] = $price?($price*\Our\ApiConst::hundred):\Our\ApiConst::zero;
if($deliveryFreeFlag){
$temp['price'] = \Our\ApiConst::zero;
}
$temp['isDefault'] = $isDefault;
$isDefault = \Our\ApiConst::zero;
$formulaList[] = $temp;
$index = strtotime(date('Y-m-d',$i));
$formulaList[$index][] = $temp;
}
}
return $formulaList;
......@@ -307,11 +377,11 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
for($i=$startTime;$i<$endTime;$i = $i+(\Our\ApiConst::halfHour)){
$temp = array();
$temp['time'] = $i;
$temp['interval'] = \Our\ApiConst::halfHour;
$temp['isDefault'] = $isDefault;
$temp['price'] = \Our\ApiConst::zero;
$isDefault = \Our\ApiConst::zero;
$formulaList[] = $temp;
$index = strtotime(date('Y-m-d',$i));
$formulaList[$index][] = $temp;
}
}
return $formulaList;
......
......@@ -48,7 +48,7 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
return $this->db->fetchAll();
}
public function getOne($field,$where,$order = array('fav_time'=>'desc')){
public function getOne($field,$where,$order = array('fav_time'=>'desc','favid'=>'desc')){
$this->setDb($this->dbName);
if($order){
foreach($order as $key=>$value){
......
......@@ -310,6 +310,7 @@ class GoodsModel extends \DAO\AbstractModel {
if(isset($returnData[$temp['goods_commonid']]['is_transport'])){
continue;
}
$returnData[$temp['goods_commonid']]['delivery_template_id'] = $temp['delivery_template_id'];
$returnData[$temp['goods_commonid']]['is_transport'] = $temp['is_transport'];
$returnData[$temp['goods_commonid']]['transport_id'] = $temp['transport_id'];
$returnData[$temp['goods_commonid']]['goods_freight'] = $temp['goods_freight'];
......
......@@ -284,6 +284,8 @@ class CodeConfigModel
const notExsitOrder = 300112;
const alreadyExsitRefundGoods = 300113;
const notAllowDelete = 300114;
const emptyDeliveryTime = 300115;
const noExpressDeliveryForOrder1 = 30115;
const goodsNoStoreForCartOrOrder1 = 30116;
......@@ -302,6 +304,11 @@ class CodeConfigModel
const selfGoodsForStoreOrder = 30121;
const refundAddPointsLogError = 30122;
const wrongDeliveryTime = 300123;
const wrongBuyerTimeRangeForOrder =300124;
const emptyBuyerMobile = 300125;
const wrongBuyerMobile = 300126;
const leftAmountError = 300127;
//店铺相关错误码
//商品分类
......@@ -707,6 +714,12 @@ class CodeConfigModel
self::notExsitOrder => '订单不存在',
self::alreadyExsitRefundGoods => '退款订单已经存在',
self::notAllowDelete => '当前订单状态不允许删除',
self::emptyDeliveryTime => '配送时间或者自提时间不能为空',
self::wrongDeliveryTime => '配送时间格式错误',
self::wrongBuyerTimeRangeForOrder => '自提时间点错误',
self::emptyBuyerMobile => '自提人手机号码不能为空',
self::wrongBuyerMobile => '自提人手机号码格式错误',
self::leftAmountError => '没有达到店铺起送金额,不能下单',
self::platFormAreadyIn => '您已经申请过平台介入',
self::deleteError => '放入回收站失败,订单状态有误',
self::restoreError => '永久删除、从回收站还原失败,订单状态有误',
......@@ -764,7 +777,7 @@ class CodeConfigModel
self::emptyOrderForPay => '支付的订单不存在',
self::emptyOrderIdForPay => '订单ID不能为空',
self::noRightForOrder => '您没有该订单权限',
self::wrongPayForOrder => '该订单无需线上支付',
self::wrongPayForOrder => '订单状态发生改变,请刷新后重试',
self::newPaySnInsertFailed => '新订单支付参数生成失败',
self::updateOrderForPayFailed => '唤起支付时更新订单失败',
self::noOrderListForPaySn => '当前paySn没有找到对应订单列表',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment