Authored by hf

do add shopping cart action

... ... @@ -23,12 +23,13 @@ class CartData
* @param int $productSku 商品SKU
* @param int $buyNumber 购买数量
* @param int $goodsType 商品类型,0表示普通商品,1表示加价购商品
* @param int int $isEdit 是否是编辑商品SKU,0表示不是编辑
* @param int $isEdit 是否是编辑商品SKU,0表示不是编辑
* @param null|int $promotionId 促销id,默认null(加价购有关)
* @param null|int $uid 用户UID,可以不传
* @param string $shoppingKey 购物的凭证
* @return array 加入购物车接口返回的数据
*/
public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit = 0, $promotionId = null, $uid = null)
public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit = 0, $promotionId = null, $uid = null, $shoppingKey = '')
{
$param = Yohobuy::param();
$param['method'] = 'app.Shopping.add';
... ... @@ -38,8 +39,9 @@ class CartData
$param['edit_product_sku'] = $isEdit;
$param['selected'] = 'Y';
$param['promotion_id'] = $promotionId;
$param['shopping_key'] = $shoppingKey;
if ($uid !== null) {
if (!empty($uid)) {
$param['uid'] = $uid;
}
$param['client_secret'] = Sign::getSign($param);
... ...
... ... @@ -123,6 +123,17 @@ class Helpers
}
/**
* 从用户加入购物车的COOKIE取出购物车凭证
*
* @return string
*/
public static function getShoppingKeyByCookie()
{
$cookie = isset($_COOKIE['_spk']) ? $_COOKIE['_spk'] : '';
return $cookie;
}
/**
* 获取商品的ICON
*
* @param int $type
... ...
... ... @@ -10,16 +10,16 @@ use Plugin\Helpers;
*/
class ShoppingCartController extends AbstractAction
{
/*
* 购物车首页
*/
public function indexAction()
{
$this->setTitle('购物车');
$this->setNavHeader('购物车');
$shoppingKey = $this->getSession('shoppingKey');
$shoppingKey = Helpers::getShoppingKeyByCookie();
$uid = $this->getUid(true);
$data = array(
... ... @@ -32,6 +32,41 @@ class ShoppingCartController extends AbstractAction
}
/**
* 加入购物车
*
* @param string productSku 商品的SKU
* @param int buyNumber 购买数量
* @param int promotionId 促销ID, 加价购有关
* @param int goodsType 商品类型,0表示普通商品,1表示加价购商品
* @param int isEdit 是否是编辑商品SKU,0表示不是编辑
* @return json
*/
public function addAction()
{
$result = array();
if ($this->isAjax()) {
$shoppingKey = Helpers::getShoppingKeyByCookie();
$productSku = $this->post('productSku');
$buyNumber = $this->post('buyNumber', 1);
$goodsType = $this->post('goodsType', 0);
$promotionId = $this->post('promotionId', 0);
$isEdit = $this->post('isEdit', 0);
$uid = $this->getUid(true);
// 执行加入购物车操作
$result = CartModel::addToCart($productSku, $buyNumber, $goodsType, $isEdit, $promotionId, $uid, $shoppingKey);
// 设置加入购物车凭证到客户端浏览器
if (isset($result['data']['shopping_key'])) {
$this->setCookie('_spk', $shoppingKey);
}
}
$this->echoJson($result);
}
/**
* 移出购物车
*/
public function delAction()
... ... @@ -41,7 +76,7 @@ class ShoppingCartController extends AbstractAction
if ($this->isAjax()) {
$productId = $this->post('id', 0);
$uid = $this->getUid(true);
$shoppingKey = $this->getSession('shoppingKey');
$shoppingKey = Helpers::getShoppingKeyByCookie();
$result = CartModel::removeFromCart($uid, $productId, $shoppingKey);
}
... ... @@ -75,6 +110,7 @@ class ShoppingCartController extends AbstractAction
/*
* 获取购物车商品数据
*/
public function goodinfoAction()
{
$result = array();
... ... @@ -97,6 +133,7 @@ class ShoppingCartController extends AbstractAction
/*
* 获取购物车加价购商品数据
*/
public function giftinfoAction()
{
$result = array();
... ... @@ -122,14 +159,14 @@ class ShoppingCartController extends AbstractAction
$result = array();
if ($this->isAjax()) {
$shoppingKey = $this->getSession('shoppingKey');
$shoppingKey = Helpers::getShoppingKeyByCookie();
$uid = $this->getUid(true);
$params = array();
$params['old_product_sku']= $this->post('old_product_sku', 0);
$params['new_product_sku']= $this->post('new_product_sku', 0);
$params['buy_number']= $this->post('buy_number', 0);
$params['selected']= $this->post('selected', null);
$params['old_product_sku'] = $this->post('old_product_sku', 0);
$params['new_product_sku'] = $this->post('new_product_sku', 0);
$params['buy_number'] = $this->post('buy_number', 0);
$params['selected'] = $this->post('selected', null);
$result = CartModel::modifyCartProduct($uid, $params, $shoppingKey);
}
... ... @@ -270,6 +307,7 @@ class ShoppingCartController extends AbstractAction
/*
* 确认订单
*/
public function orderEnsureAction()
{
$data = array(
... ... @@ -342,8 +380,8 @@ class ShoppingCartController extends AbstractAction
/**
* 下单流程 选择地址
*/
public function selectAddressAction() {
public function selectAddressAction()
{
// 设置网站标题
$this->setTitle('选择地址');
$this->setNavHeader('选择地址', Helpers::url('/shoppingCart/orderEnsure'));
... ... @@ -356,14 +394,13 @@ class ShoppingCartController extends AbstractAction
'pageFooter' => true,
'address' => $address
));
}
/**
* 下单流程 选择优惠券
*/
public function selectCouponAction() {
public function selectCouponAction()
{
// 设置网站标题
$this->setTitle('选择优惠券');
$this->setNavHeader('选择优惠券', Helpers::url('/shoppingCart/orderEnsure'));
... ... @@ -376,6 +413,6 @@ class ShoppingCartController extends AbstractAction
'pageFooter' => true,
'address' => $address
));
}
}
... ...
... ... @@ -3,7 +3,6 @@
namespace Index;
use LibModels\Wap\Home\CartData;
use LibModels\Wap\Home\UserData;
use Plugin\Helpers;
use Plugin\Images;
... ... @@ -29,11 +28,11 @@ class CartModel
* @param null|int $uid 用户UID,可以不传
* @return array 加入购物车接口返回的数据
*/
public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit, $promotionId, $uid)
public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit, $promotionId, $uid, $shoppingKey)
{
$result = array('code' => 400, 'message' => '出错啦~~');
$addCart = CartData::addToCart($productSku, $buyNumber, $goodsType, $isEdit, $promotionId, $uid);
$addCart = CartData::addToCart($productSku, $buyNumber, $goodsType, $isEdit, $promotionId, $uid, $shoppingKey);
if ($addCart && isset($addCart['code'])) {
$result = $addCart;
}
... ... @@ -63,17 +62,16 @@ class CartModel
$cart = $cartData['data'];
/* 普通购物车 */
if(isset($cart['ordinary_cart_data'])) {
if (isset($cart['ordinary_cart_data'])) {
$result['commonGoodsCount'] = count($cart['ordinary_cart_data']['goods_list']);
$result['commonCart'] = self::procCartData($cart['ordinary_cart_data']);
}
/* 预售购物车 */
if(isset($cart['advance_cart_data'])) {
if (isset($cart['advance_cart_data'])) {
$result['presellGoodsCount'] = count($cart['advance_cart_data']['goods_list']);
$result['preSellCart'] = self::procCartData($cart['advance_cart_data']);
}
}
return $result;
... ... @@ -304,7 +302,7 @@ class CartModel
// 收货人有关信息
if (isset($payReturn['delivery_address']) && !empty($payReturn['delivery_address'])) {
$result['name'] = $payReturn['delivery_address']['consignee'];
$result['phoneNum'] = $payReturn['delivery_address']['mobile'] ?: $payReturn['delivery_address']['phone'];
$result['phoneNum'] = $payReturn['delivery_address']['mobile'] ? : $payReturn['delivery_address']['phone'];
$result['address'] = $payReturn['delivery_address']['address'];
}
... ... @@ -438,7 +436,6 @@ class CartModel
return $result;
}
/**
* 处理不同类型的购物车数据
*
... ...