Shopping.php 8.11 KB
<?php

/**
 * Created by PhpStorm.
 * User: Ziy
 * Date: 14/8/24
 * Time: 下午3:38
 */
class YHMApi_App_V1_Shopping extends YHMApi_App_V1_Base
{
    /**
     * 提交订单
     * @param array $params
     * @param string $fields
     * @return array
     */
    static function commit(array $params, $fields = '*')
    {
        if (empty($params['product_sku'])) {
            return self::result(400, '请选择购买商品.');
        }
        if (empty($params['buyer_uid'])) {
            return self::result(400, '购买者不明确.');
        }
        if (empty($params['delivery_info_id'])) {
            return self::result(400, '送货信息不能为空.');
        }
        
       $goodsInfo = YHMProduct_Models_Goods_Client::getOneByProductSkc($params['product_sku']);
      // print_r($goodsInfo['status']);
        if ($goodsInfo['status']==0) {
          // return self::result(400, '商品已无效,请联系卖家.');
        }
       // exit();
        $orderRemark = (empty($params['order_remark']) ? '' : $params['order_remark']);
        $productSku = $params['product_sku'];
        
        $buyerUid = $params['buyer_uid'];
        $paymentID = empty($params['payment_id']) ? 1 : $params['payment_id'];
        $shippingFee = empty($params['shipping_fee']) ? 0 : $params['shipping_fee'];
        $deliveryInfoID = $params['delivery_info_id'];
        $buyNumber = empty($params['buy_number']) ? 1 : $params['buy_number'];
        $orderData = array(
            'buyer_uid' => $buyerUid,
            'buying_way' => 1,
            'shipping_fee' => $shippingFee,
            'last_shipping_fee' => $shippingFee,
            'payment_id' => $paymentID,
            'order_remark' => $orderRemark,
            'goods_list' => array(
                array(
                    'product_sku' => $productSku,
                    'buy_number' => $buyNumber
                )
            )
        );
        $deliveryInfo = YHMDelivery_Models_Delivery_Client::getDeliveryById($deliveryInfoID);
        if (empty($deliveryInfo)) {
            return self::result(400, '送货信息不能为空.');
        }

        $resultData = array();
        try {
            $ordinary = new YHMCart_Orders_Ordinary($buyerUid);
            $_orderData = $ordinary->initOrdersData($orderData);
            foreach ($_orderData as $orderKey => $lastOrderData) {
                $returnOrder = $ordinary->create($lastOrderData);
                $resultData['order_data'][] = array(
                    'order_code' => $returnOrder['order_code'],
                    'last_order_amount' => $returnOrder['last_order_amount']
                );
                YHMOrders_Models_Delivery_Client::addDelivery($returnOrder['order_code'], $deliveryInfo['delivery_name'], $deliveryInfo['mobile'], $deliveryInfo['area_code'], $deliveryInfo['address'], $deliveryInfo['zip_code']);
            }
        } catch (Exception $e) {
            return self::result($e->getCode(), $e->getMessage());
        }
        return self::result(200, '订单成功.', $resultData);
    }

    /**
     * @param array $params
     * @param string $fields
     * @return array
     */
    static function confirm(array $params, $fields = '*')
    {
        if (empty($params['agreement_key'])) {
            return self::result(400, '非法购物.');
        }
        if (empty($params['product_sku'])) {
            return self::result(400, '请选择购买的商品.');
        }
        if (empty($params['buyer_uid'])) {
            return self::result(400, '购买者不能为空.');
        }
        if (empty($params['delivery_info_id'])) {
            return self::result(400, '送货信息不能为空.');
        }
        $deliveryInfo = YHMDelivery_Models_Delivery_Client::getDeliveryById($params['delivery_info_id']);
        if (empty($deliveryInfo)) {
            return self::result(400, '没有送货信息.');
        }
        $changePrice = YHMOrders_Models_Shopping_Client::getShoppingChangePrice($params['agreement_key'], $params['buyer_uid']);
        if (empty($changePrice)) {
            return self::result(400, '没有这个价格信息.');
        }
        if ($changePrice['buyer_uid'] == 'Y') {
            return self::result(400, '此商品购买已经失效.');
        }
        $orderRemark = (empty($params['order_remark']) ? '' : $params['order_remark']);
        $productSku = $params['product_sku'];
        $buyerUid = $params['buyer_uid'];
        $paymentID = empty($params['payment_id']) ? 1 : $params['payment_id'];
        $shippingFee = empty($params['shipping_fee']) ? 0 : $params['shipping_fee'];

        $buyNumber = empty($params['buy_number']) ? 1 : $params['buy_number'];
        $orderData = array(
            'buyer_uid' => $buyerUid,
            'buying_way' => 1,
            'shipping_fee' => $shippingFee,
            'last_shipping_fee' => $shippingFee,
            'payment_id' => $paymentID,
            'order_remark' => $orderRemark,
            'goods_list' => array(
                array(
                    'product_sku' => $productSku,
                    'buy_number' => $buyNumber
                )
            )
        );
        $resultData = array();
        try {
            $ordinary = new YHMCart_Orders_Ordinary($buyerUid);
            $_orderData = $ordinary->buyingPatterns('agreement')->setAgreement(array(
                'agreement_key' => $params['agreement_key'],
                'buyer_uid' => $params['buyer_uid']
            ))->initOrdersData($orderData);
            foreach ($_orderData as $orderKey => $lastOrderData) {
                $returnOrder = $ordinary->create($lastOrderData);
                $resultData['order_data'][] = array(
                    'order_code' => $returnOrder['order_code'],
                    'last_order_amount' => $returnOrder['last_order_amount']
                );
                YHMOrders_Models_Delivery_Client::addDelivery($returnOrder['order_code'], $deliveryInfo['delivery_name'], $deliveryInfo['mobile'], $deliveryInfo['area_code'], $deliveryInfo['address'], $deliveryInfo['zip_code']);
                YHMOrders_Models_Shopping_Client::updateShoppingChange($params['agreement_key'], $returnOrder['order_code']);
            }

        } catch (Exception $e) {
            return self::result($e->getCode(), $e->getMessage());
        }
        return self::result(200, '订单成功.', $resultData);
    }


    static function change(array $params, $fields = '*')
    {
        if (empty($params['buyer_uid'])) {
            return self::result(400, '缺少购买者.');
        }
        if (empty($params['product_skc'])) {
            return self::result(400, '缺少购买商品.');
        }
        if (empty($params['seller_uid'])) {
            return self::result(400, '缺少售卖者.');
        }
        if (empty($params['agreement_price'])) {
            return self::result(400, '缺少修改后的价格.');
        }
        if ($params['agreement_price'] < 0) {
            return self::result(500, '修改价格不能小于0');
        }
        $goodsInfo = YHMProduct_Models_Goods_Client::getOneByProductSkc($params['product_skc']);
        if (empty($goodsInfo)) {
            return self::result(400, '没有这个商品.');
        }
        if ($goodsInfo['uid'] != $params['seller_uid']) {
            return self::result(500, '此商品不是这个卖家的.');
        }
        $package = array(
            'buyer_uid' => $params['buyer_uid'],
            'store_id' => $goodsInfo['store_id'],
            'seller_uid' => $goodsInfo['uid'],
            'product_skc' => $goodsInfo['product_skc'],
            'sale_price' => $goodsInfo['sale_price'],
            'agreement_price' => $params['agreement_price'],
            'buy_number' => 1,
            'goods_type' => YHMConfig_Orderstatus::ORDER_GOODS_TYPE_MAIN,
        );
        $agreementKey = YHMUtils_Tools::makeAgreementKey($package);
        $package['agreement_key'] = $agreementKey;

        $agreementID = YHMOrders_Models_Shopping_Client::addShoppingChangePrice($package);
        $agreementData = array(
            'agreement_key' => $agreementKey,
            'agreement_id' => $agreementID
        );
        return self::result(200, '改价成功.', $agreementData);
    }
}