Authored by 梁志锋

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohobuy into develop

@@ -27,176 +27,176 @@ class CartData @@ -27,176 +27,176 @@ class CartData
27 * @param null|int $promotionId 促销id,默认null(加价购有关) 27 * @param null|int $promotionId 促销id,默认null(加价购有关)
28 * @param null|int $uid 用户UID,可以不传 28 * @param null|int $uid 用户UID,可以不传
29 * @param string $shoppingKey 未登录用户唯一识别码,可以不传 29 * @param string $shoppingKey 未登录用户唯一识别码,可以不传
30 - * @return array 加入购物车接口返回的数据  
31 - */  
32 - public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit = 0, $promotionId = null, $uid = null, $shoppingKey = null)  
33 - {  
34 - $param = Yohobuy::param();  
35 - $param['method'] = 'app.Shopping.add';  
36 - $param['product_sku'] = $productSku;  
37 - $param['buy_number'] = $buyNumber;  
38 - $param['goods_type'] = $goodsType;  
39 - $param['edit_product_sku'] = $isEdit;  
40 - $param['selected'] = 'Y';  
41 - $param['promotion_id'] = $promotionId;  
42 -  
43 - if ($uid !== null) {  
44 - $param['uid'] = $uid;  
45 - }  
46 - if ($shoppingKey !== null) {  
47 - $param['shoppingKey'] = $shoppingKey;  
48 - }  
49 - $param['client_secret'] = Sign::getSign($param);  
50 -  
51 - return Yohobuy::get(Yohobuy::API_URL, $param);  
52 - }  
53 -  
54 - /**  
55 - * 购物车商品选择与取消接口  
56 - *  
57 - * @param int $uid 用户ID  
58 - * @param string $sku 商品sku列表  
59 - * @param string $shoppingKey 未登录用户唯一识别码  
60 - * @return array 购物车接口返回的数据  
61 - */  
62 - public static function selectGoods($uid, $sku, $shoppingKey)  
63 - {  
64 - $param = Yohobuy::param();  
65 - $param['method'] = 'app.Shopping.selected';  
66 - $param['product_sku_list'] = $sku;  
67 -  
68 - if (!empty($uid)) {  
69 - $param['uid'] = $uid;  
70 - }  
71 - if (!empty($shoppingKey)) {  
72 - $param['shopping_key'] = $shoppingKey;  
73 - }  
74 -  
75 - $param['client_secret'] = Sign::getSign($param);  
76 -  
77 - return Yohobuy::get(Yohobuy::API_URL, $param);  
78 - }  
79 -  
80 - /**  
81 - * 购物车数据  
82 - *  
83 - * @param int $uid 用户ID  
84 - * @param string $shoppingKey 未登录用户唯一识别码  
85 - * @return array 购物车接口返回的数据  
86 - */  
87 - public static function cartData($uid, $shoppingKey)  
88 - {  
89 - $param = Yohobuy::param();  
90 - $param['method'] = 'app.Shopping.cart';  
91 -  
92 - if (!empty($uid)) {  
93 - $param['uid'] = $uid;  
94 - }  
95 - if (!empty($shoppingKey)) {  
96 - $param['shopping_key'] = $shoppingKey;  
97 - }  
98 -  
99 - $param['client_secret'] = Sign::getSign($param);  
100 -  
101 - return Yohobuy::get(Yohobuy::API_URL, $param);  
102 - }  
103 -  
104 - /**  
105 - * 移出购物车  
106 - *  
107 - * @param int $uid 用户ID  
108 - * @param string $sku 商品sku列表  
109 - * @param string $shoppingKey 未登录用户唯一识别码  
110 - * @return array 接口返回的数据  
111 - */  
112 - public static function removeFromCart($uid, $sku, $shoppingKey)  
113 - {  
114 - $param = Yohobuy::param();  
115 - $param['method'] = 'app.Shopping.remove';  
116 - $param['product_sku_list'] = $sku;  
117 -  
118 - if (!empty($uid)) {  
119 - $param['uid'] = $uid;  
120 - }  
121 - if (!empty($shoppingKey)) {  
122 - $param['shopping_key'] = $shoppingKey;  
123 - }  
124 -  
125 - $param['client_secret'] = Sign::getSign($param);  
126 -  
127 - return Yohobuy::get(Yohobuy::API_URL, $param);  
128 - }  
129 -  
130 - /**  
131 - * 移入收藏夹  
132 - *  
133 - * @param int $uid 用户ID  
134 - * @param string $sku 商品sku列表  
135 - * @return array 接口返回的数据  
136 - */  
137 - public static function addToFav($uid, $sku)  
138 - {  
139 - $param = Yohobuy::param();  
140 - $param['method'] = 'app.Shopping.addfavorite';  
141 - $param['product_sku_list'] = $sku;  
142 - $param['uid'] = $uid;  
143 - $param['client_secret'] = Sign::getSign($param);  
144 -  
145 - return Yohobuy::get(Yohobuy::API_URL, $param);  
146 - }  
147 -  
148 - /**  
149 - * 获取购物车商品数据  
150 - *  
151 - * @param int $uid 用户ID  
152 - * @param int $skn 商品skn  
153 - * @return array 接口返回的数据  
154 - */  
155 - public static function cartProductData($uid, $skn)  
156 - {  
157 - $param = Yohobuy::param();  
158 - $param['method'] = 'app.product.data';  
159 - $param['product_skn'] = $skn;  
160 - $param['showcomment'] = 'N';  
161 - $param['uid'] = $uid;  
162 - $param['client_secret'] = Sign::getSign($param);  
163 -  
164 - return Yohobuy::get(Yohobuy::API_URL, $param);  
165 - }  
166 -  
167 - /**  
168 - * 获取加价购商品数据  
169 - *  
170 - * @param int $skn 商品skn  
171 - * @param int $promotionId 加价购商品促销ID  
172 - * @return array 接口返回的数据  
173 - */  
174 - public static function giftProductData($skn, $promotionId)  
175 - {  
176 - $param = Yohobuy::param();  
177 - $param['method'] = 'app.product.gift';  
178 - $param['product_skn'] = $skn;  
179 - $param['promotion_id'] = $promotionId;  
180 - $param['client_secret'] = Sign::getSign($param);  
181 -  
182 - return Yohobuy::get(Yohobuy::API_URL, $param);  
183 - }  
184 -  
185 - /**  
186 - * 增减购物车商品数量  
187 - *  
188 - * @param int $uid 用户ID  
189 - * @param string $sku 商品SKU  
190 - * @param int $increaseNum 增加的数目  
191 - * @param int $decreaseNum 减少的数目  
192 - * @param string $shoppingKey 未登录用户唯一识别码  
193 - * @return array 接口返回的数据  
194 - */  
195 - public static function modifyProductNum($uid, $sku, $increaseNum, $decreaseNum, $shoppingKey)  
196 - {  
197 - $param = Yohobuy::param();  
198 - $param['method'] = 'app.Shopping.increase';  
199 - $param['product_sku'] = $sku; 30 + * @return array 加入购物车接口返回的数据
  31 + */
  32 + public static function addToCart($productSku, $buyNumber, $goodsType, $isEdit = 0, $promotionId = null, $uid = null, $shoppingKey = null)
  33 + {
  34 + $param = Yohobuy::param();
  35 + $param['method'] = 'app.Shopping.add';
  36 + $param['product_sku'] = $productSku;
  37 + $param['buy_number'] = $buyNumber;
  38 + $param['goods_type'] = $goodsType;
  39 + $param['edit_product_sku'] = $isEdit;
  40 + $param['selected'] = 'Y';
  41 + $param['promotion_id'] = $promotionId;
  42 +
  43 + if (!empty($uid)) {
  44 + $param['uid'] = $uid;
  45 + }
  46 + if ($shoppingKey !== null) {
  47 + $param['shopping_key'] = $shoppingKey;
  48 + }
  49 + $param['client_secret'] = Sign::getSign($param);
  50 +
  51 + return Yohobuy::get(Yohobuy::API_URL, $param);
  52 + }
  53 +
  54 + /**
  55 + * 购物车商品选择与取消接口
  56 + *
  57 + * @param int $uid 用户ID
  58 + * @param string $sku 商品sku列表
  59 + * @param string $shoppingKey 未登录用户唯一识别码
  60 + * @return array 购物车接口返回的数据
  61 + */
  62 + public static function selectGoods($uid, $sku, $shoppingKey)
  63 + {
  64 + $param = Yohobuy::param();
  65 + $param['method'] = 'app.Shopping.selected';
  66 + $param['product_sku_list'] = $sku;
  67 +
  68 + if (!empty($uid)) {
  69 + $param['uid'] = $uid;
  70 + }
  71 + if (!empty($shoppingKey)) {
  72 + $param['shopping_key'] = $shoppingKey;
  73 + }
  74 +
  75 + $param['client_secret'] = Sign::getSign($param);
  76 +
  77 + return Yohobuy::get(Yohobuy::API_URL, $param);
  78 + }
  79 +
  80 + /**
  81 + * 购物车数据
  82 + *
  83 + * @param int $uid 用户ID
  84 + * @param string $shoppingKey 未登录用户唯一识别码
  85 + * @return array 购物车接口返回的数据
  86 + */
  87 + public static function cartData($uid, $shoppingKey)
  88 + {
  89 + $param = Yohobuy::param();
  90 + $param['method'] = 'app.Shopping.cart';
  91 +
  92 + if (!empty($uid)) {
  93 + $param['uid'] = $uid;
  94 + }
  95 + if (!empty($shoppingKey)) {
  96 + $param['shopping_key'] = $shoppingKey;
  97 + }
  98 +
  99 + $param['client_secret'] = Sign::getSign($param);
  100 +
  101 + return Yohobuy::get(Yohobuy::API_URL, $param);
  102 + }
  103 +
  104 + /**
  105 + * 移出购物车
  106 + *
  107 + * @param int $uid 用户ID
  108 + * @param string $sku 商品sku列表
  109 + * @param string $shoppingKey 未登录用户唯一识别码
  110 + * @return array 接口返回的数据
  111 + */
  112 + public static function removeFromCart($uid, $sku, $shoppingKey)
  113 + {
  114 + $param = Yohobuy::param();
  115 + $param['method'] = 'app.Shopping.remove';
  116 + $param['product_sku_list'] = $sku;
  117 +
  118 + if (!empty($uid)) {
  119 + $param['uid'] = $uid;
  120 + }
  121 + if (!empty($shoppingKey)) {
  122 + $param['shopping_key'] = $shoppingKey;
  123 + }
  124 +
  125 + $param['client_secret'] = Sign::getSign($param);
  126 +
  127 + return Yohobuy::get(Yohobuy::API_URL, $param);
  128 + }
  129 +
  130 + /**
  131 + * 移入收藏夹
  132 + *
  133 + * @param int $uid 用户ID
  134 + * @param string $sku 商品sku列表
  135 + * @return array 接口返回的数据
  136 + */
  137 + public static function addToFav($uid, $sku)
  138 + {
  139 + $param = Yohobuy::param();
  140 + $param['method'] = 'app.Shopping.addfavorite';
  141 + $param['product_sku_list'] = $sku;
  142 + $param['uid'] = $uid;
  143 + $param['client_secret'] = Sign::getSign($param);
  144 +
  145 + return Yohobuy::get(Yohobuy::API_URL, $param);
  146 + }
  147 +
  148 + /**
  149 + * 获取购物车商品数据
  150 + *
  151 + * @param int $uid 用户ID
  152 + * @param int $skn 商品skn
  153 + * @return array 接口返回的数据
  154 + */
  155 + public static function cartProductData($uid, $skn)
  156 + {
  157 + $param = Yohobuy::param();
  158 + $param['method'] = 'app.product.data';
  159 + $param['product_skn'] = $skn;
  160 + $param['showcomment'] = 'N';
  161 + $param['uid'] = $uid;
  162 + $param['client_secret'] = Sign::getSign($param);
  163 +
  164 + return Yohobuy::get(Yohobuy::API_URL, $param);
  165 + }
  166 +
  167 + /**
  168 + * 获取加价购商品数据
  169 + *
  170 + * @param int $skn 商品skn
  171 + * @param int $promotionId 加价购商品促销ID
  172 + * @return array 接口返回的数据
  173 + */
  174 + public static function giftProductData($skn, $promotionId)
  175 + {
  176 + $param = Yohobuy::param();
  177 + $param['method'] = 'app.product.gift';
  178 + $param['product_skn'] = $skn;
  179 + $param['promotion_id'] = $promotionId;
  180 + $param['client_secret'] = Sign::getSign($param);
  181 +
  182 + return Yohobuy::get(Yohobuy::API_URL, $param);
  183 + }
  184 +
  185 + /**
  186 + * 增减购物车商品数量
  187 + *
  188 + * @param int $uid 用户ID
  189 + * @param string $sku 商品SKU
  190 + * @param int $increaseNum 增加的数目
  191 + * @param int $decreaseNum 减少的数目
  192 + * @param string $shoppingKey 未登录用户唯一识别码
  193 + * @return array 接口返回的数据
  194 + */
  195 + public static function modifyProductNum($uid, $sku, $increaseNum, $decreaseNum, $shoppingKey)
  196 + {
  197 + $param = Yohobuy::param();
  198 + $param['method'] = 'app.Shopping.increase';
  199 + $param['product_sku'] = $sku;
200 200
201 if (!empty($increaseNum)) { 201 if (!empty($increaseNum)) {
202 $param['increase_number'] = $increaseNum; 202 $param['increase_number'] = $increaseNum;
@@ -570,6 +570,7 @@ class Helpers @@ -570,6 +570,7 @@ class Helpers
570 570
571 $oneGoods = array(); 571 $oneGoods = array();
572 foreach ($cartGoods as $key => $value) { 572 foreach ($cartGoods as $key => $value) {
  573 + $oneGoods = array();
573 $oneGoods['id'] = $value['product_sku']; 574 $oneGoods['id'] = $value['product_sku'];
574 $oneGoods['skn'] = $value['product_skn']; 575 $oneGoods['skn'] = $value['product_skn'];
575 $oneGoods['name'] = $value['product_name']; 576 $oneGoods['name'] = $value['product_name'];
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 {{#if advanceBuyPage}} 3 {{#if advanceBuyPage}}
4 {{# advanceBuy}} 4 {{# advanceBuy}}
5 <div class="advance-block" data-promotion-id="{{promotionId}}"> 5 <div class="advance-block" data-promotion-id="{{promotionId}}">
6 - <p class="title">{{title}}</p> 6 + <p class="title">{{promotionTitle}}</p>
7 {{#goods}} 7 {{#goods}}
8 {{> cart/gift-advance-good}} 8 {{> cart/gift-advance-good}}
9 {{/goods}} 9 {{/goods}}
@@ -70,10 +70,17 @@ @@ -70,10 +70,17 @@
70 70
71 {{#if yohoCoin}} 71 {{#if yohoCoin}}
72 <span class="desc">可抵¥{{yohoCoin}}</span> 72 <span class="desc">可抵¥{{yohoCoin}}</span>
  73 + {{#if useYohoCoin}}
73 <span class="coin-check"> 74 <span class="coin-check">
74 <em>- ¥ {{yohoCoin}}</em> 75 <em>- ¥ {{yohoCoin}}</em>
75 <i class="iconfont checkbox icon-cb-checked"></i> 76 <i class="iconfont checkbox icon-cb-checked"></i>
76 </span> 77 </span>
  78 + {{else}}
  79 + <span class="coin-check">
  80 + <em style="display: none;">- ¥ {{yohoCoin}}</em>
  81 + <i class="iconfont checkbox icon-checkbox"></i>
  82 + </span>
  83 + {{/if}}
77 {{^}} 84 {{^}}
78 <span class="not-used coin-check"> 85 <span class="not-used coin-check">
79 无YOHO币可用 86 无YOHO币可用
@@ -415,6 +415,7 @@ class CartModel @@ -415,6 +415,7 @@ class CartModel
415 $oneGoods['gift'] = true; 415 $oneGoods['gift'] = true;
416 } elseif ($single['goods_type'] == 'price_gift') { 416 } elseif ($single['goods_type'] == 'price_gift') {
417 $oneGoods['advanceBuy'] = true; 417 $oneGoods['advanceBuy'] = true;
  418 + $oneGoods['price'] = Helpers::transPrice($single['sale_price']);
418 } 419 }
419 420
420 $result['goods'][] = $oneGoods; 421 $result['goods'][] = $oneGoods;
@@ -440,7 +441,8 @@ class CartModel @@ -440,7 +441,8 @@ class CartModel
440 } 441 }
441 442
442 // 有货币 443 // 有货币
443 - $result['yohoCoin'] = (isset($orderCompute['use_yoho_coin']) && !empty($orderCompute['use_yoho_coin'])) ? $orderCompute['use_yoho_coin'] : $payReturn['yoho_coin']; 444 + $result['yohoCoin'] = $payReturn['yoho_coin'];
  445 + $result['useYohoCoin'] = isset($orderCompute['use_yoho_coin']) ? $orderCompute['use_yoho_coin'] : $payReturn['yoho_coin'];
444 446
445 // 订单数据 447 // 订单数据
446 if (isset($payReturn['shopping_cart_data']) && !empty($payReturn['shopping_cart_data'])) { 448 if (isset($payReturn['shopping_cart_data']) && !empty($payReturn['shopping_cart_data'])) {
@@ -662,16 +664,9 @@ class CartModel @@ -662,16 +664,9 @@ class CartModel
662 $colorNum += $one['storage_number']; 664 $colorNum += $one['storage_number'];
663 $sizeStorageStr .= $one['storage_number'] . '/'; 665 $sizeStorageStr .= $one['storage_number'] . '/';
664 666
665 - $sizeList[$val['color_id']][] = $oneSize; 667 + $sizeList[$val['product_skc']][] = $oneSize;
666 668
667 - $colorStorageGroup[$one['size_name']][$val['color_name']] = $one['storage_number'];  
668 - }  
669 -  
670 - // 统计尺码对应的各个颜色的库存量  
671 - foreach ($sizes as $colorId => $sizeArr) {  
672 - foreach ($sizeArr as $key => $value) {  
673 - $sizeList[$colorId][$key]['colorNumStr'] = implode('/', array_values($colorStorageGroup[ $sizeArr['name'] ]) );  
674 - } 669 + $colorStorageGroup[$val['product_skc']][$one['size_name']] = $one['storage_number'];
675 } 670 }
676 671
677 // 颜色 672 // 颜色
@@ -695,9 +690,24 @@ class CartModel @@ -695,9 +690,24 @@ class CartModel
695 $totalStorageNum += $colorNum; 690 $totalStorageNum += $colorNum;
696 } 691 }
697 692
  693 + // 遍历所有尺码,统计出该尺码的每个颜色的库存量,没有时添0,不能空着,因为JS中需要判断
  694 + foreach ($sizeList as $skc => $sizeArr) {
  695 + foreach ($sizeArr as $key => $value) {
  696 + $sizeStorageStr = '';
  697 + foreach ($colorStorageGroup as $colorArr) {
  698 + if (isset($colorArr[ $value['name'] ])) {
  699 + $sizeStorageStr .= $colorArr[ $value['name'] ] . '/';
  700 + } else {
  701 + $sizeStorageStr .= '0/';
  702 + }
  703 + }
  704 + $sizeList[$skc][$key]['colorNumStr'] = rtrim($sizeStorageStr, '/');
  705 + }
  706 + }
  707 +
698 // 格式化尺码对应的各个颜色分组 708 // 格式化尺码对应的各个颜色分组
699 foreach ($colors as $color) { 709 foreach ($colors as $color) {
700 - $sizes[]['size'] = $sizeList[$color['id']]; 710 + $sizes[]['size'] = $sizeList[$color['skcId']];
701 } 711 }
702 712
703 $data['thumbs'] = $thumbImageList; 713 $data['thumbs'] = $thumbImageList;
@@ -36,7 +36,7 @@ class IndexController extends AbstractAction @@ -36,7 +36,7 @@ class IndexController extends AbstractAction
36 public function indexAction() 36 public function indexAction()
37 { 37 {
38 $this->setTitle('购物车'); 38 $this->setTitle('购物车');
39 - $this->setNavHeader('购物车'); 39 + $this->setNavHeader('购物车', true, '');
40 40
41 $shoppingKey = Helpers::getShoppingKeyByCookie(); 41 $shoppingKey = Helpers::getShoppingKeyByCookie();
42 $uid = $this->getUid(true); 42 $uid = $this->getUid(true);
@@ -275,14 +275,20 @@ class IndexController extends AbstractAction @@ -275,14 +275,20 @@ class IndexController extends AbstractAction
275 $this->setNavHeader('确认订单', Helpers::url('/cart/index/index'), false); // 不显示右上角home按钮 275 $this->setNavHeader('确认订单', Helpers::url('/cart/index/index'), false); // 不显示右上角home按钮
276 276
277 // 购物车商品为空跳转到购物车页面 277 // 购物车商品为空跳转到购物车页面
  278 + $cartType = $this->get('cartType', 'ordinary');
  279 + $cartKey = 'commonCart';
  280 + if ($cartType === 'advance') {
  281 + $cartKey = 'preSellCart';
  282 + }
  283 +
278 $shoppingKey = Helpers::getShoppingKeyByCookie(); 284 $shoppingKey = Helpers::getShoppingKeyByCookie();
279 $uid = $this->getUid(true); 285 $uid = $this->getUid(true);
280 $cartGoods = CartModel::getCartData($uid, $shoppingKey); 286 $cartGoods = CartModel::getCartData($uid, $shoppingKey);
281 - if (empty($cartGoods) || isset($cartGoods['isEmptyCart'])) { 287 + if (isset($cartGoods['isEmptyCart']) || empty($cartGoods[$cartKey])) {
282 $this->go(Helpers::url('/cart/index/index')); 288 $this->go(Helpers::url('/cart/index/index'));
283 } 289 }
284 290
285 - $cartType = $this->get('cartType', 'ordinary'); 291 +
286 $cookieData = $this->getCookie('order-info', null); 292 $cookieData = $this->getCookie('order-info', null);
287 $uid = $this->getUid(true); 293 $uid = $this->getUid(true);
288 $data = array( 294 $data = array(
@@ -451,7 +457,7 @@ class IndexController extends AbstractAction @@ -451,7 +457,7 @@ class IndexController extends AbstractAction
451 457
452 // 设置加入购物车凭证到客户端浏览器 458 // 设置加入购物车凭证到客户端浏览器
453 if (!$shoppingKey && isset($result['data']['shopping_key'])) { 459 if (!$shoppingKey && isset($result['data']['shopping_key'])) {
454 - $this->setCookie('_spk', $result['data']['shopping_key']); 460 + $this->setCookie('_Spk', $result['data']['shopping_key']);
455 } 461 }
456 } 462 }
457 463