|
@@ -12,23 +12,78 @@
|
|
|
|
|
|
defined('InShopNC') or exit('Access Invalid!');
|
|
|
|
|
|
-class member_cartControl extends mbMemberControl
|
|
|
+class cartControl extends mobileControl
|
|
|
{
|
|
|
public function __construct()
|
|
|
{
|
|
|
parent::__construct();
|
|
|
}
|
|
|
|
|
|
+ public function listOp()
|
|
|
+ {
|
|
|
+ $model_cart = Model('cart');
|
|
|
+ $logic_buy_1 = logic('buy_1');
|
|
|
+
|
|
|
+ //购物车列表
|
|
|
+ if($_SESSION['is_login'] == 1) {
|
|
|
+ $cart_list = $model_cart->listCart('db',array('buyer_id'=>$_SESSION['member_id']));
|
|
|
+ } else {
|
|
|
+ $cart_list = $model_cart->listCart('Session',array('buyer_id'=>$_SESSION['member_id']));
|
|
|
+ }
|
|
|
+
|
|
|
+ //购物车列表 [得到最新商品属性及促销信息]
|
|
|
+ $cart_list = $logic_buy_1->getGoodsCartList($cart_list);
|
|
|
+
|
|
|
+ //购物车商品以店铺ID分组显示,并计算商品小计,店铺小计与总价由JS计算得出
|
|
|
+ $store_cart_list = array();
|
|
|
+ foreach ($cart_list as $cart) {
|
|
|
+ $cart['goods_total'] = ncPriceFormat($cart['goods_price'] * $cart['goods_num']);
|
|
|
+ $cart['goods_image'] = cthumb($cart['goods_image'], $cart['store_id']);
|
|
|
+ $store_cart_list[$cart['store_id']][] = $cart;
|
|
|
+ }
|
|
|
+
|
|
|
+ //店铺信息
|
|
|
+ $store_list = Model('store')->getStoreMemberIDList(array_keys($store_cart_list));
|
|
|
+ //取得店铺级活动 - 可用的满即送活动
|
|
|
+ $mansong_rule_list = $logic_buy_1->getMansongRuleList(array_keys($store_cart_list));
|
|
|
+ //取得哪些店铺有满免运费活动
|
|
|
+ $free_freight_list = $logic_buy_1->getFreeFreightActiveList(array_keys($store_cart_list));
|
|
|
+
|
|
|
+ if(in_array($_SESSION['client_type'],array('android', 'ios','ajax'))) {
|
|
|
+ $data = $this->format_cart($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list);
|
|
|
+ self::outsuccess($data);
|
|
|
+ } else {
|
|
|
+ $data = $this->format_cart($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list);
|
|
|
+ self::outsuccess($data);
|
|
|
+ //self::outsuccess($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function format_cart($store_cart_list,$store_list,$mansong_rule_list,$free_freight_list)
|
|
|
+ {
|
|
|
+ $ret = array();
|
|
|
+ foreach($store_cart_list as $key => $val) {
|
|
|
+ $store_goods = array();
|
|
|
+ $store_goods['store_info'] = $store_list[$key];
|
|
|
+ $store_goods['free_freight'] = $free_freight_list[$key];
|
|
|
+ $store_goods['mansong_rule'] = $mansong_rule_list[$key];
|
|
|
+
|
|
|
+ $store_goods['goods_info'] = array();
|
|
|
+ foreach($val as $index => $goods) {
|
|
|
+ array_push($store_goods['goods_info'],$goods);
|
|
|
+ }
|
|
|
+
|
|
|
+ array_push($ret,$store_goods);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $ret;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 购物车列表
|
|
|
*/
|
|
|
public function cart_listOp()
|
|
|
{
|
|
|
- $token = trim($_GET['key']);
|
|
|
- if (false == $this->checkToken($token)) {
|
|
|
- return joutput_error($this->err_code);
|
|
|
- }
|
|
|
-
|
|
|
$page = trim($_GET['page']);
|
|
|
$curpage = trim($_GET['curpage']);
|
|
|
if (!isset($_GET['page'])) {
|
|
@@ -41,8 +96,7 @@ class member_cartControl extends mbMemberControl
|
|
|
$model_cart = Model('cart');
|
|
|
$model_goods = Model('goods');
|
|
|
|
|
|
-// $condition = array('buyer_id' => trim($_GET['buyer_id']));
|
|
|
- $condition = array('buyer_id' => $this->member_info['member_id']);
|
|
|
+ $condition = array('buyer_id' => $_SESSION['member_id']);
|
|
|
$cart_list = $model_cart->getCartList($condition, $this->page);
|
|
|
$page_count = $model_cart->gettotalpage();
|
|
|
$model_cart->cls();
|
|
@@ -79,64 +133,123 @@ class member_cartControl extends mbMemberControl
|
|
|
$cart_list[$key]['goods_sum'] = ncPriceFormat($value['goods_price'] * $value['goods_num']);
|
|
|
}
|
|
|
|
|
|
- joutput_data(array('cart_list' => $cart_list, 'mobile_page' => mobile_page($page_count)));
|
|
|
+ self::outsuccess(array('cart_list' => $cart_list, 'mobile_page' => mobile_page($page_count)));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 购物车添加
|
|
|
*/
|
|
|
- public function cart_addOp()
|
|
|
+ public function addOp()
|
|
|
{
|
|
|
- $token = trim($_GET['key']);
|
|
|
- if (false == $this->checkToken($token)) {
|
|
|
- return joutput_error($this->err_code);
|
|
|
- }
|
|
|
-
|
|
|
- $goods_id = intval($_POST['goods_id']);
|
|
|
- $quantity = intval($_POST['quantity']);
|
|
|
- if ($goods_id <= 0 || $quantity <= 0) {
|
|
|
- return joutput_error(errcode::ErrInputParam);
|
|
|
- }
|
|
|
-
|
|
|
$model_goods = Model('goods');
|
|
|
- $model_cart = Model('cart');
|
|
|
$logic_buy_1 = Logic('buy_1');
|
|
|
|
|
|
- $goods_info = $model_goods->getGoodsOnlineInfoAndPromotionById($goods_id);
|
|
|
+ if (is_numeric($_GET['goods_id']) && is_numeric($_POST['quantity']))
|
|
|
+ {
|
|
|
+ $goods_id = intval($_POST['goods_id']);
|
|
|
+ $quantity = intval($_POST['quantity']);
|
|
|
|
|
|
- //验证是否可以购买
|
|
|
- if (empty($goods_info)) {
|
|
|
- return joutput_error(errcode::ErrGoodsOff, '商品已下架或不存在');
|
|
|
- }
|
|
|
+ if ($goods_id <= 0 || $quantity <= 0) {
|
|
|
+ return self::outerr(errcode::ErrInputParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ $goods_info = $model_goods->getGoodsOnlineInfoAndPromotionById($goods_id);
|
|
|
+ //抢购
|
|
|
+ $logic_buy_1->getGroupbuyInfo($goods_info);
|
|
|
+ //限时折扣
|
|
|
+ $logic_buy_1->getXianshiInfo($goods_info, $quantity);
|
|
|
|
|
|
- //抢购
|
|
|
- $logic_buy_1->getGroupbuyInfo($goods_info);
|
|
|
+ $ret = $this->check_goods($goods_info, $quantity);
|
|
|
+ if(is_array($ret)) {
|
|
|
+ return self::outerr($ret['code'],$ret['msg']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ elseif (is_numeric($_GET['bl_id']))
|
|
|
+ {
|
|
|
+ //优惠套装加入购物车(单套)
|
|
|
+ if ($_SESSION['is_login'] != 1) {
|
|
|
+ return self::outerr(errcode::ErrUnLogin);
|
|
|
+ }
|
|
|
+ $bl_id = intval($_GET['bl_id']);
|
|
|
+ if ($bl_id <= 0) return ;
|
|
|
+ $model_bl = Model('p_bundling');
|
|
|
+ $bl_info = $model_bl->getBundlingInfo(array('bl_id'=>$bl_id));
|
|
|
+ if (empty($bl_info) || $bl_info['bl_state'] == '0') {
|
|
|
+ return self::outerr(errcode::ErrBLUnExist);
|
|
|
+ }
|
|
|
|
|
|
- //限时折扣
|
|
|
- $logic_buy_1->getXianshiInfo($goods_info, $quantity);
|
|
|
+ //检查每个商品是否符合条件,并重新计算套装总价
|
|
|
+ $bl_goods_list = $model_bl->getBundlingGoodsList(array('bl_id'=>$bl_id));
|
|
|
+ $goods_id_array = array();
|
|
|
+ $bl_amount = 0;
|
|
|
+ foreach ($bl_goods_list as $goods) {
|
|
|
+ $goods_id_array[] = $goods['goods_id'];
|
|
|
+ $bl_amount += $goods['bl_goods_price'];
|
|
|
+ }
|
|
|
+ $model_goods = Model('goods');
|
|
|
+ $goods_list = $model_goods->getGoodsOnlineListAndPromotionByIdArray($goods_id_array);
|
|
|
+ foreach ($goods_list as $goods) {
|
|
|
+ $this->check_goods($goods,1);
|
|
|
+ }
|
|
|
|
|
|
- if ($goods_info['store_id'] == $this->member_info['store_id']) {
|
|
|
- return joutput_error(errcode::ErrCanNotBuyOwn);
|
|
|
+ //优惠套装作为一条记录插入购物车,图片取套装内的第一个商品图
|
|
|
+ $goods_info = array();
|
|
|
+ $goods_info['store_id'] = $bl_info['store_id'];
|
|
|
+ $goods_info['goods_id'] = $goods_list[0]['goods_id'];
|
|
|
+ $goods_info['goods_name'] = $bl_info['bl_name'];
|
|
|
+ $goods_info['goods_price'] = $bl_amount;
|
|
|
+ $goods_info['goods_num'] = 1;
|
|
|
+ $goods_info['goods_image'] = $goods_list[0]['goods_image'];
|
|
|
+ $goods_info['store_name'] = $bl_info['store_name'];
|
|
|
+ $goods_info['bl_id'] = $bl_id;
|
|
|
+ $quantity = 1;
|
|
|
}
|
|
|
- if (intval($goods_info['goods_storage']) < 1 || intval($goods_info['goods_storage']) < $quantity) {
|
|
|
- return joutput_error(errcode::ErrStorageShort);
|
|
|
+
|
|
|
+ //已登录状态,存入数据库,未登录时,存入COOKIE
|
|
|
+ if($_SESSION['member_id']) {
|
|
|
+ $save_type = 'db';
|
|
|
+ $goods_info['buyer_id'] = $_SESSION['member_id'];
|
|
|
+ } else {
|
|
|
+ $save_type = 'Session';
|
|
|
}
|
|
|
|
|
|
- $param = array();
|
|
|
- $param['buyer_id'] = $this->member_info['member_id'];
|
|
|
- $param['store_id'] = $goods_info['store_id'];
|
|
|
- $param['goods_id'] = $goods_info['goods_id'];
|
|
|
- $param['goods_name'] = $goods_info['goods_name'];
|
|
|
- $param['goods_price'] = $goods_info['goods_price'];
|
|
|
- $param['goods_image'] = $goods_info['goods_image'];
|
|
|
- $param['store_name'] = $goods_info['store_name'];
|
|
|
-
|
|
|
- $result = $model_cart->addCart($param, 'db', $quantity);
|
|
|
- if ($result) {
|
|
|
- joutput_data(array('result' => '1'));
|
|
|
+ $model_cart = Model('cart');
|
|
|
+ $insert = $model_cart->addCart($goods_info, $save_type , $quantity);
|
|
|
+ if ($insert) { //todo 此处返回结果有变化
|
|
|
+ $data = array('result' => 1, 'num' => $model_cart->cart_goods_num, 'amount' => ncPriceFormat($model_cart->cart_all_price));
|
|
|
+ return self::outsuccess($data);
|
|
|
} else {
|
|
|
- return joutput_error(errcode::ErrAddCart);
|
|
|
+ return self::outerr(errcode::ErrAddCart);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查商品是否符合加入购物车条件
|
|
|
+ * @param unknown $goods
|
|
|
+ * @param number $quantity
|
|
|
+ */
|
|
|
+ private function check_goods($goods_info, $quantity)
|
|
|
+ {
|
|
|
+ if(empty($quantity)) {
|
|
|
+ return array('code' => errcode::ErrInputParam, 'msg' => errcode::msg(errcode::ErrInputParam));
|
|
|
+ }
|
|
|
+ if(empty($goods_info)) {
|
|
|
+ return array('code' => errcode::ErrGoodsOff, 'msg'=> '商品已下架或不存在');
|
|
|
+ }
|
|
|
+ if ($goods_info['store_id'] == $_SESSION['store_id']) {
|
|
|
+ return array('code' => errcode::ErrCanNotBuyOwn, 'msg'=> errcode::msg(errcode::ErrCanNotBuyOwn));
|
|
|
+ }
|
|
|
+ if(intval($goods_info['goods_storage']) < 1) {
|
|
|
+ return array('code' => errcode::ErrGoodsOutofStock, 'msg' => errcode::msg(errcode::ErrGoodsOutofStock));
|
|
|
}
|
|
|
+ if(intval($goods_info['goods_storage']) < $quantity) {
|
|
|
+ return array('code' => errcode::ErrStorageShort, 'msg' => errcode::msg(errcode::ErrStorageShort));
|
|
|
+ }
|
|
|
+ if ($goods_info['is_virtual'] || $goods_info['is_fcode'] || $goods_info['is_presell']) {
|
|
|
+ return array('code' => errcode::ErrGoodsSpecial, 'msg' => errcode::msg(errcode::ErrGoodsSpecial));
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
public function cart_editOp()
|