Cart.php 7.1 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();

        // 提示登录
        if (!$uid) {
            $result['showLoginInfo'] = true;
        }
        
        // 普通购物车和预售购物车的数据总数
        $result['cartNav']['commonGoodsCount'] = '0';
        $result['cartNav']['presellGoodsCount'] = '0';
        
        // 调用接口获取购物车的数据
        $cartData = CartData::cartData($uid);

        // 处理普通购物车和预售购物车的数据
        
        /* 普通购物车 */
        if (!empty($cartData['data']['ordinary_cart_data']['goods_list'])) {
            $result['cartNav']['commonGoodsCount'] = count($cartData['data']['ordinary_cart_data']['goods_list']);
            $result['commonCart'] = self::procCartData($cartData['data']['ordinary_cart_data']);
        }

        /* 预售购物车 */
        if (!empty($cartData['data']['advance_cart_data']['goods_list'])) {
            $result['cartNav']['presellGoodsCount'] = count($cartData['data']['advance_cart_data']['goods_list']);
            $result['preSellCart'] = self::procCartData($cartData['data']['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::addToFav($uid, $swapData);
        if ($modify && isset($modify['code'])) {
            $result['code'] = $modify['code'];
            $result['message'] = $modify['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;
    }

}