Commit 1a84da12 authored by liuyuzhen's avatar liuyuzhen

购物车及相关修改

parent 76a9d011
......@@ -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);
}
......
......@@ -47,10 +47,10 @@ class OrderConfirmUtil {
private $couponCacheFlag = false;
public function addOrder($data,$memberId,$currentAddress,$newFlag=false){
$storeCartData = $this->checkPostData($data,$memberId,$currentAddress,$newFlag);
public function addOrder($data,$memberId,$currentAddress){
$storeCartData = $this->checkPostData($data,$memberId,$currentAddress);
//return $storeCartData;
if($newFlag){
if(CURRENTVERSION==\Our\NameConst::versionOne){
$storeCartData = $this->checkDeliveryTypeAndPaywayNew($storeCartData);
}else{
$storeCartData = $this->checkDeliveryTypeAndPayway($storeCartData);
......@@ -68,7 +68,7 @@ class OrderConfirmUtil {
* @throws \Error\OurExceptionModelfav
* @throws \Exception
*/
public function checkPostData($data,$memberId,$currentAddress,$newFlag=false){
public function checkPostData($data,$memberId,$currentAddress){
$dbName = \Our\DbNameConst::masterDBConnectName;
$this->memberId = $memberId;
$this->member = \DAO\MemberModel::getInstance()->getInfo($this->memberId);
......@@ -82,7 +82,7 @@ class OrderConfirmUtil {
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyParamForOrder);
}
if(isset($this->postData['storeId'])&&$this->postData['storeId']){//组合销售或者单品的立即购买
if($newFlag){
if(CURRENTVERSION==\Our\NameConst::versionOne){
$this->checkOneStoreDataNew($this->postData);
}else{
$this->checkOneStoreData($this->postData);
......@@ -104,7 +104,7 @@ class OrderConfirmUtil {
}else{
$this->cartCacheDeleteFlag = true;
foreach($this->postData as $temp){
if($newFlag){
if(CURRENTVERSION==\Our\NameConst::versionOne){
$this->checkOneStoreDataNew($temp);
}else{
$this->checkOneStoreData($temp);
......@@ -342,6 +342,9 @@ class OrderConfirmUtil {
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']));
......@@ -367,9 +370,8 @@ class OrderConfirmUtil {
}else{
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongBuyerTimeRangeForOrder);
}
//$deliveryFee = \Our\ApiConst::zero;
$deliveryFee = \Our\ApiConst::zero;
}
var_dump($deliveryFee);
if($deliveryFee!=$requestData['deliveryFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongStoreDeliveryFeeForOrder);
}
......
......@@ -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
......@@ -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,$storeCarts,$storeDistance,$deliveryFreeFlag,$checkFlag);
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;
}
......@@ -1244,7 +1245,7 @@ class CartServiceModel extends \Business\AbstractModel{
function addOrder($data,$memberId,$currentAddress){
$orderUtil =\Order\OrderConfirmUtil::getInstance();
$return = $orderUtil->addOrder($data,$memberId,$currentAddress,true);
$return = $orderUtil->addOrder($data,$memberId,$currentAddress);
//删除订单列表缓存
$orderDao=\DAO\Order\OrderModel::getInstance();
$orderDao->deleteOrderCache($memberId);
......
......@@ -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']]];
......
......@@ -81,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;
}
......@@ -291,7 +302,6 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
$interval += \Our\ApiConst::halfHour;
$temp = array();
$temp['time'] = $i;
$temp['interval'] = $i - $time;
$temp['isDefault'] = \Our\ApiConst::zero;
if($interval==\Our\ApiConst::halfHour*1){//半小时内的价格
$temp['price'] = $formulaPrice['half'];
......@@ -330,7 +340,6 @@ 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::hundred):\Our\ApiConst::zero;
if($deliveryFreeFlag){
$temp['price'] = \Our\ApiConst::zero;
......@@ -368,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;
......
......@@ -285,10 +285,7 @@ class CodeConfigModel
const alreadyExsitRefundGoods = 300113;
const notAllowDelete = 300114;
const emptyDeliveryTime = 300115;
const wrongDeliveryTime = 300116;
const wrongBuyerTimeRangeForOrder =300117;
const emptyBuyerMobile = 300118;
const wrongBuyerMobile = 300119;
const noExpressDeliveryForOrder1 = 30115;
const goodsNoStoreForCartOrOrder1 = 30116;
......@@ -307,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;
//店铺相关错误码
//商品分类
......@@ -717,6 +719,7 @@ class CodeConfigModel
self::wrongBuyerTimeRangeForOrder => '自提时间点错误',
self::emptyBuyerMobile => '自提人手机号码不能为空',
self::wrongBuyerMobile => '自提人手机号码格式错误',
self::leftAmountError => '没有达到店铺起送金额,不能下单',
self::platFormAreadyIn => '您已经申请过平台介入',
self::deleteError => '放入回收站失败,订单状态有误',
self::restoreError => '永久删除、从回收站还原失败,订单状态有误',
......
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