Cart.php 7.43 KB
<?php

namespace Index;

use LibModels\Wap\Home\CartData;
use Plugin\Helpers;
use Plugin\Images;

/**
 *
 * @name CartModel
 * @package models/Index
 * @copyright yoho.inc
 * @version 1.0 (2015-11-09 14:05:09)
 * @author Gtskk (tttt6399998@126.com)
 */
class CartModel
{

	/**
	 * @param integer $uid 用户ID
	 * @return array|mixed 处理之后的购物车数据
	 */
	public static function getCartData($uid)
	{
		$result = array(
			'cartNav' => true,
			'showLoginInfo' => true
		);

		// 调用接口获取购物车的数据
		$cartData = CartData::cartData($uid);

		// 处理普通购物车和预售购物车的数据
		if (isset($cartData['data']) && !empty($cartData['data'])) {
			$cart = $cartData['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'])) {
				$result['presellGoodsCount'] = count($cart['advance_cart_data']['goods_list']);
				$result['preSellCart'] = self::procCartData($cart['advance_cart_data']);
			}

		}

		return $result;
	}

	/**
	 * 移出购物车
	 *
	 * @param int $uid 用户ID
	 * @param string $sku 商品sku列表
	 * @return array 接口返回的数据
	 */
	public static function removeFromCart($uid, $sku)
	{
		$result = array('code' => 400, 'message' => '出错啦~');

		// 处理sku
		$sku_list = json_encode(array($sku => 1));

		$remove = CartData::removeFromCart($uid, $sku_list);
		if ($remove && isset($remove['code'])) {
			$result['code'] = $remove['code'];
			$result['message'] = $remove['message'];
		}

		return $result;
	}

	/**
	 * 移入收藏夹
	 *
	 * @param int $uid 用户ID
	 * @param string $sku 商品sku列表
	 * @return array 接口返回的数据
	 */
	public static function addToFav($uid, $sku)
	{
		$result = array('code' => 400, 'message' => '出错啦~');

		// 处理sku
		$sku_list = json_encode(array($sku => 1));

		$add = CartData::addToFav($uid, $sku_list);
		if ($add && isset($add['code'])) {
			$result['code'] = $add['code'];
			$result['message'] = $add['message'];
		}

		return $result;
	}

	/**
	 * 处理购物车商品数据
	 *
	 * @param int $uid 用户ID
	 * @param int $skn 商品skn
	 * @param int $num 购买数目
	 * @return array 接口返回的数据
	 */
	public static function cartProductData($uid, $skn, $num)
	{
		$result = array('code' => 400, 'message' => '出错啦~');

		$product = CartData::cartProductData($uid, $skn);
		if (isset($product['code']) && $product['code'] === 200) {
			$result['code'] = 200;
			$data = array();
			$productData = $product['data'];

			// 品牌信息
			if (isset($productData['brand_info']) && !empty($productData['brand_info'])) {
				$data['thumb'] = Helpers::getImageUrl($productData['brand_info']['brand_ico'], 120, 120);
			}

			$data['name'] = $productData['product_name'];
			$data['price'] = $productData['market_price'];
			$data['salePrice'] = $productData['sales_price'];
			$data['storage'] = $productData['storage_sum'];
			$data['num'] = $num;

			// 商品选择
			if (isset($productData['goods_list'])) {
				$goodsList = $productData['goods_list'];

				$colors = array();
				$oneColor = array();
				$sizes = array();
				$oneSize = array();
				foreach ($goodsList as $val) {
					// 颜色
					$oneColor = array();
					$oneColor['id'] = $val['color_id'];
					$oneColor['name'] = $val['color_name'];

					// 尺码
					foreach ($val['size_list'] as $one) {
						$oneSize = array();
						$oneSize['id'] = $one['size_id'];
						$oneSize['name'] = $one['size_name'];
					}
					$sizes[] = $oneSize;

					$oneColor['sizes'] = $sizes;
					$colors[] = $oneColor;
				}

				$data['colors'] = $colors;
			}

			$result['data'] = $data;
		}

		return $result;
	}

	/**
	 * 修改购物车商品数据
	 *
	 * @param int $uid 用户ID
	 * @param string $param 要更改的数据
	 * @return array 接口返回的数据
	 */
	public static function modifyCartProduct($uid, $param)
	{
		$result = array('code' => 400, 'message' => '出错啦~');

		// 处理要更改的数据
		$swapData = json_encode(array($param));

		$modify = CartData::modifyCartProduct($uid, $swapData);
		if ($modify && isset($modify['code'])) {
			$result['code'] = $modify['code'];
			$result['message'] = $modify['message'];
		}

		return $result;
	}

	/**
	 * 调用购物车结算接口返回的数据处理
	 *
	 * @param int $uid 用户ID
	 * @param string $cartType 购物车类型,ordinary表示普通购物车
	 * @return array 接口返回的数据
	 */
	public static function cartPay($uid, $cartType)
	{
		$result = array();

		$pay = CartData::cartPay($uid, $cartType);
		if ($pay && isset($pay['code']) && $pay['code'] === 200) {
			$result = $pay['data'];
		}

		return $result;
	}

	/**
	 * 购物车结算--支付方式和配送方式选择以及是否使用YOHO币接口返回的数据处理
	 *
	 * @param int $uid 用户ID
	 * @param string $cartType 购物车类型,ordinary表示普通购物车
	 * @param string $deliveryWay 配送方式,1表示普通快递,2表示顺丰速运
	 * @param string $paymentType 支付方式,1表示在线支付,2表示货到付款
	 * @return array 接口返回的数据
	 */
	public static function paymentTypeAndDelivery($uid, $cartType, $deliveryWay, $paymentType)
	{
		$result = array();

		$pay = CartData::paymentTypeAndDelivery($uid, $cartType, $deliveryWay, $paymentType);
		if ($pay && isset($pay['code']) && $pay['code'] === 200) {
			$result = $pay['data'];
		}

		return $result;
	}

	/**
	 * 购物车结算--输入优惠券代码返回的结果处理
	 *
	 * @param int $uid 用户ID
	 * @param string $couponCode 优惠券代码
	 * @return array 接口返回的数据
	 */
	public static function getCoupon($uid, $couponCode)
	{
		$result = array('code' => 400, 'message' => '出错啦~');

		$coupon = CartData::getCoupon($uid, $couponCode);
		if ($coupon && isset($coupon['code']) && $coupon['code'] === 200) {
			$result['code'] = $coupon['code'];
			$result['message'] = $coupon['message'];
		}

		return $result;
	}


	/**
	 * 处理不同类型的购物车数据
	 *
	 * @param array $data 不同类型购物车数据
	 * @return array $result 处理之后的不同类型购物车数据
	 */
	private static function procCartData($data)
	{
		$result = array();

		$oneGoods = array();
		// 购买的商品列表
		foreach ($data['goods_list'] as $value) {
			$oneGoods['id'] = $value['product_sku'];
			$oneGoods['skn'] = $value['product_skn'];
			$oneGoods['name'] = $value['product_name'];
			$oneGoods['thumb'] = Images::getImageUrl($value['goods_images'], 120, 120);
			$oneGoods['color'] = $value['color_name'];
			$oneGoods['size'] = $value['size_name'];
			$oneGoods['appearDate'] = '12月'; // 目前app接口没有返回该数据
			$oneGoods['price'] = $value['real_price'];
			$oneGoods['count'] = $value['buy_number'];
			$oneGoods['lowStocks'] = true;

			$result['goods'][] = $oneGoods;
		}
		// 赠品
		count($data['gift_list']) && $result['freebieOrAdvanceBuy'] = true;
		$result['freebie'] = $data['gift_list'];
		// 加价购
		$result['advanceBuy'] = $data['price_gift'];
		// 结算数据
		$result['price'] = $data['shopping_cart_data']['order_amount'];
		$result['activityPrice'] = $data['shopping_cart_data']['discount_amount'];
		$result['count'] = $data['shopping_cart_data']['goods_count'];
		$result['sumPrice'] = $data['shopping_cart_data']['order_amount'];

		return $result;
	}

}