文件
mashangyoujiu/Application/SmallProgramApi/Controller/ShoppingController.class.php

1221 行
52 KiB
PHP
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<?php
namespace SmallProgramApi\Controller;
use Common\Model\RetailGoodsModel;
use Common\Model\RetailShoppingModel;
use Common\Model\RetailGoodsGiftsActivityModel;
use LittleGift\Business\Goods;
use Think\Controller;
//[1.9.6]
class ShoppingController extends BaseController
{
public function _initialize()
{
parent::_initialize();
if (empty(self::$store_id)) {
$res['status'] = 0;
$res['msg'] = '缺少门店参数';
$this->ajaxReturn($res);
}
if (empty(self::$uid) || self::$user['login_state'] != 1) {
$res['status'] = -1;
$res['msg'] = '用户未登录';
$this->ajaxReturn($res);
}
}
/**
* 获取购物车列表
*/
public function getShoppingGoods_v1()
{
$uid = self::$uid;
$store_id = self::$store_id;
$XcxConfigModel = D('RetailStoreXcxConfig');
$promotion_status = $XcxConfigModel->getFindField(array($XcxConfigModel::STORE_ID => $store_id), $XcxConfigModel::PROMOTION_STATUS);
$ShoppingModel = D('RetailShopping');
$GoodsModel = D('RetailGoods');
$SkuGoodsModel = D('RetailSkuGoods');
$SkuListModel = D('RetailSkuList');
$skuFields = array(
$SkuGoodsModel::ID,
$SkuGoodsModel::RETAIL_PRICE,
$SkuGoodsModel::ONLINE_PRICE,
$SkuGoodsModel::SHOP_MEM_PRICE,
$SkuGoodsModel::SKU_ID_LIST,
$SkuGoodsModel::STATE,
$SkuGoodsModel::SKU_NUM,
$SkuGoodsModel::GOODS_IMG_ID,
$SkuGoodsModel::PLUS_PRICE,
);
$goods_list = $ShoppingModel->getShoppingGoods($uid, $store_id, '', '', '1');
foreach ($goods_list as &$val) {
// 普通购买
if (!$val[$GoodsModel::ONLINE_PRICE] || floatval($val[$GoodsModel::ONLINE_PRICE]) < 0.01) {
$val[$GoodsModel::ONLINE_PRICE] = $val[$GoodsModel::RETAIL_PRICE];
}
if (!$promotion_status) {
$val['h_status'] = 0;
}
if ($val['h_status'] == 1) {
$val[$GoodsModel::VIP_ONLINE_STATE] = 0; // 促销商品 不打折
$val['online_price'] = $val['act_price'];
}
$val['goods_img'] = $this->getGoodsImage($val[$GoodsModel::GOODS_IMG_ID]);
if ($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::SHOP_MEM_STATUS] = 2;
}
if ($val[$GoodsModel::PLUS_MEM_STATUS] == 1 && (!$val[$GoodsModel::PLUS_PRICE] || $val[$GoodsModel::PLUS_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::PLUS_MEM_STATUS] = 2;
}
$val['checked'] = true;
$val['error'] = 0;
if (!empty($val[$ShoppingModel::SKU_ID])) {
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
} else {
$sku = $SkuGoodsModel->getFind(array($SkuGoodsModel::ID => $val[$ShoppingModel::SKU_ID]), $skuFields);
if (empty($sku) || $sku[$SkuGoodsModel::STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
}
$sku_num = A('Api/Inventory')->goods_num(1, self::$store_id, $val[$ShoppingModel::GOODS_ID], $val[$ShoppingModel::SKU_ID]);
$sku['goods_num'] = $sku_num;
$name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $sku[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true);
$sku['name'] = implode(',', $name);
$sku['goods_img'] = $this->getGoodsImage($sku[$SkuGoodsModel::GOODS_IMG_ID]);
$val['goods_img'] = $sku['goods_img'];
if ($sku[$SkuGoodsModel::STATE] == 0) {
$val['goods_num'] = $sku_num;
if (!$val['h_status']) {
if (!$sku[$SkuGoodsModel::ONLINE_PRICE] || floatval($sku[$SkuGoodsModel::ONLINE_PRICE]) < 0.01) {
$sku[$SkuGoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::RETAIL_PRICE];
}
$val[$GoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::ONLINE_PRICE];
}
} else {
$val['goods_num'] = A('Api/Inventory')->goods_num(2, $store_id, $val[$ShoppingModel::GOODS_ID]);
}
if (!empty($sku[$SkuGoodsModel::SHOP_MEM_PRICE]) && $sku[$SkuGoodsModel::SHOP_MEM_PRICE] > 0) {
$val[$GoodsModel::SHOP_MEM_PRICE] = $sku[$SkuGoodsModel::SHOP_MEM_PRICE];
}
if (!empty($sku[$SkuGoodsModel::PLUS_PRICE]) && $sku[$SkuGoodsModel::PLUS_PRICE] > 0) {
$val[$GoodsModel::PLUS_PRICE] = $sku[$SkuGoodsModel::PLUS_PRICE];
}
$val['sku'] = $sku;
}
} else {
if (($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01)) || !$val[$GoodsModel::ONLINE_PRICE] || $val[$GoodsModel::ONLINE_PRICE] < 0.01) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
} else {
$val['goods_num'] = A('Api/Inventory')->goods_num(1, $store_id, $val[$ShoppingModel::GOODS_ID]);
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
}
}
$redis_key = 'retail_goods_' . $val[$ShoppingModel::GOODS_ID] . '_*';
$wait_pay_num = $this->getWaitNum($redis_key);
$val['wait_pay_num'] = $wait_pay_num;
$val['goods_num'] = round($val['goods_num'] - $wait_pay_num, 3);
if ($val['goods_num'] < $val[$ShoppingModel::NUM]) {
$val['msg'] = '库存不足';
$val['error'] = 1;
$val['checked'] = false;
}
$val['maxBuyNum'] = $val['goods_num'];
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 2 && empty($val[$ShoppingModel::SKU_ID]) || $val[$GoodsModel::ATTRIBUTE_STATE] == 1 && !empty($val[$ShoppingModel::SKU_ID])) {
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
}
}
$res['status'] = 1;
$res['msg'] = '查询成功';
$res['goods_list'] = $goods_list;
$vipInfo = $this->getVipInfo();
if (empty($vipInfo)) {
$vipInfo = self::$user;
$vipInfo['discount'] = 1;
}
$res['user_info'] = $vipInfo;
$this->ajaxBack($res);
}
/**
* 添加到购物车
*/
public function addShopping_v1()
{
$platform_type = self::$merchant['platform_type'] ? self::$merchant['platform_type'] : 1; //商户平台类型 1默认系统 2微礼平台
$goods_id = I('post.goods_id'); //商品id
$num = I('post.num'); //数量
$type = I('post.type') == 2 ? 2 : 1;//1添加购物车 2购买
$sku_id = I('post.sku_id'); //规格id
$fixed_num = I('post.fixed_num') == 1 ? 1 : 0;//是否属固定数量 0不是 1是(针对扫码购扫称重商品条码)
if (empty($goods_id)) {
$res['status'] = 0;
$res['msg'] = '缺少商品id';
$this->ajaxReturn($res);
}
if (empty($num)) {
$res['status'] = 0;
$res['msg'] = '缺少商品数量';
$this->ajaxReturn($res);
}
if (!verifyWeight($num, 2)) {
$res['status'] = 0;
$res['msg'] = '商品数量有误';
$this->ajaxReturn($res);
}
$ShoppingModel = D('RetailShopping');
$merchant_id = self::$merchant_id;
$uid = self::$uid;
$GoodsModel = new RetailGoodsModel();
$map = array(
$GoodsModel::ID => $goods_id,
$GoodsModel::MERCHANT_ID => $merchant_id,
$GoodsModel::STATUS => 0,
$GoodsModel::ONLINE_STATE => 1
);
$fields = array(
$GoodsModel::ID,
$GoodsModel::ATTRIBUTE_STATE,
$GoodsModel::SHOP_MEM_PRICE,
$GoodsModel::ONLINE_PRICE,
$GoodsModel::SHOP_MEM_STATUS,
'pricing_method',
'store_id',
);
if ($platform_type == 2) {
$fields[] = 'third_goods_code';
}
$goods = $GoodsModel->getFind($map, $fields);
if (empty($goods)) {
$res['status'] = 0;
$res['msg'] = '商品不存在';
$this->ajaxReturn($res);
}
$store_id = $goods['store_id'];
$item = array(
$ShoppingModel::GOODS_ID => $goods_id,
$ShoppingModel::STORE_ID => $store_id,
$ShoppingModel::UID => $uid,
$ShoppingModel::MERCHANT_ID => $merchant_id,
$ShoppingModel::NUM => $num,
$ShoppingModel::ADD_TIME => time(),
$ShoppingModel::CHANGE_STATE => $fixed_num ? 0 : 1
);
if (!empty($sku_id)) {
$item[$ShoppingModel::SKU_ID] = $sku_id;
}
if (!verifyWeight($num, $goods['pricing_method'])) {
$res['status'] = 0;
$res['msg'] = '商品数量有误';
$this->ajaxReturn($res);
}
if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 1) {
//无规格商品数量
if ($platform_type == 2) {
//第三方平台
$goods['goods_num'] = 0;
$ThirdGoodsClass = new Goods();
$result = $ThirdGoodsClass->goodsNumQuery([
'merchant_id' => self::$merchant_id,
'type' => 2,
'code_arr' => [$goods['third_goods_code']],
'Customer_Codes' => self::$store['third_code']
]);
if ($result['status'] == 1 && !empty($result['data'])) {
$goods['goods_num'] = $result['data'][0];
}
} else {
$goods['goods_num'] = A('Api/Inventory')->goods_num(1, $store_id, $goods_id);
}
}
$item[$ShoppingModel::TYPE] = 1;// 来源于加入购物车。
/**
* 规格商品
*/
if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 2) {
if (!empty($sku_id)) {
$SkuModel = D('RetailSkuGoods');
$map = array(
$SkuModel::ID => $sku_id,
$SkuModel::STATE => 0,
$SkuModel::GOODS_ID => $goods_id
);
$sku = $SkuModel->getFind($map);
if (empty($sku)) {
$res['status'] = 0;
$res['msg'] = '该商品设置有误,暂不能购买';
$this->ajaxReturn($res);
}
if ($platform_type == 2) {
//第三方平台
$goods['goods_num'] = 0;
$ThirdGoodsClass = new Goods();
$result = $ThirdGoodsClass->goodsNumQuery([
'merchant_id' => self::$merchant_id,
'type' => 2,
'code_arr' => [$sku['third_goods_code']],
'Customer_Codes' => self::$store['third_code']
]);
if ($result['status'] == 1 && !empty($result['data'])) {
$goods['goods_num'] = $result['data'][0];
}
} else {
$goods['goods_num'] = A('Api/Inventory')->goods_num(1, $store_id, $goods_id, $sku_id);
}
$goods[$GoodsModel::SHOP_MEM_PRICE] = $sku[$SkuModel::SHOP_MEM_PRICE];
$goods[$GoodsModel::ONLINE_PRICE] = $sku[$SkuModel::ONLINE_PRICE];
$item[$ShoppingModel::SKU_ID] = $sku_id;
} else if ($goods[$GoodsModel::PRICING_METHOD] != 2) {
$res['status'] = 2;
$res['msg'] = '该商品规格有变动,请重试';
$res['attribute_state'] = 2;
$this->ajaxReturn($res);
}
} else if (!empty($sku_id)) {
$res['status'] = 2;
$res['msg'] = '该商品规格有变动,请重试';
$res['attribute_state'] = 1;
$this->ajaxReturn($res);
}
if (round($goods['goods_num'] - $num) < 0) {
$res['status'] = 0;
$res['msg'] = '库存不足' . $num;
$this->ajaxReturn($res);
}
if (($goods[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$goods[$GoodsModel::SHOP_MEM_PRICE] || $goods[$GoodsModel::SHOP_MEM_PRICE] < 0.01)) || !$goods[$GoodsModel::ONLINE_PRICE] || $goods[$GoodsModel::ONLINE_PRICE] < 0.01) {
$res['status'] = 0;
$res['msg'] = '商品价格设置有误,请联系商家';
$this->ajaxReturn($res);
}
if ($type == 2) {
//立即购买
$item[$ShoppingModel::TYPE] = 2;
$id = $ShoppingModel->addOrder($item);
} else {
//加入购物车
$map = array(
$ShoppingModel::GOODS_ID => $goods_id,
$ShoppingModel::UID => $uid,
$ShoppingModel::STATE => 1,
$ShoppingModel::TYPE => 1,
$ShoppingModel::CHANGE_STATE => 1
);
if (!empty($sku_id)) {
$map[$ShoppingModel::SKU_ID] = $sku_id;
}
$oldOrder = $ShoppingModel->getFind($map);//该商品是否加过购物车
if (!empty($oldOrder)) {
$goods['goods_num'] = round($goods['goods_num'] - $oldOrder[$ShoppingModel::NUM], 3);
}
if (round($goods['goods_num'] - $num) < 0) {
$num = $goods['goods_num'];
}
if ($num <= 0) {
$res['status'] = 0;
$res['msg'] = '商品库存不足';
$this->ajaxReturn($res);
}
if (!empty($oldOrder)) {
$success = $ShoppingModel->toSetInc($map, $ShoppingModel::NUM, $num);
if ($success) {
$id = $oldOrder[$ShoppingModel::ID];
} else {
$id = 0;
}
} else {
$id = $ShoppingModel->addOrder($item);
}
}
if ($id) {
$res['id'] = $id;
$res['status'] = 1;
$res['msg'] = '加入成功';
} else {
$res['status'] = 0;
$res['msg'] = '加入失败';
}
$this->ajaxBack($res);
}
/**
* 获取商品规格
*/
public function getGoodsSku_v1()
{
$goods_id = I('post.goods_id');
if (empty($goods_id)) {
$result['status'] = 0;
$result['msg'] = '缺少参数商品id';
$this->ajaxReturn($result);
}
$GoodsModel = new RetailGoodsModel();
$map = array(
$GoodsModel::MERCHANT_ID => self::$merchant_id,
$GoodsModel::ONLINE_STATE => 1,
$GoodsModel::STATUS => 0,
$GoodsModel::ID => $goods_id
);
$goods = $GoodsModel->getFind($map);
if (!empty($goods)) {
if ($goods[$GoodsModel::ATTRIBUTE_STATE] != 2) {
$result['status'] = 2;
$result['msg'] = '该商品未启用规格';
return $result;
}
$data = $this->getGoodsSku($goods_id);
$result['goods_img'] = $this->getGoodsImage($goods[$GoodsModel::GOODS_IMG_ID]);
$result['goods_name'] = $goods['goods_name'];
$result['goods_num'] = A('Api/Inventory')->goods_num(2, $goods['store_id'], $goods_id);
$result['data'] = $data;
$result['status'] = 1;
$result['msg'] = '查询成功';
} else {
$result['status'] = 0;
$result['msg'] = '商品不存在或已下架';
}
$this->ajaxReturn($result);
}
/**
* 修改选择的商品规格
*/
public function changeSelectSku_v1()
{
$platform_type = self::$merchant['platform_type']; //商户平台类型 1默认系统 2微礼平台
$id = I('post.id');
$sku_id = I('post.sku_id');
if (empty($id) || empty($sku_id)) {
$result['status'] = 0;
$result['msg'] = '缺少参数';
$this->ajaxReturn($result);
}
$uid = self::$uid;
$ShoppingModel = new RetailShoppingModel();
$sMap = array(
$ShoppingModel::ID => $id,
$ShoppingModel::STORE_ID => self::$store_id,
$ShoppingModel::STATE => 1,
$ShoppingModel::TYPE => 1,
);
$shopping = $ShoppingModel->getFind($sMap);
if (empty($shopping)) {
$result['status'] = 0;
$result['msg'] = '请求购物车信息不存在';
$this->ajaxReturn($result);
}
$GoodsModel = new RetailGoodsModel();
$map = array(
$GoodsModel::ID => $shopping[$ShoppingModel::GOODS_ID],
$GoodsModel::STORE_ID => self::$store_id,
$GoodsModel::STATUS => 0,
$GoodsModel::ONLINE_STATE => 1,
);
$goods = $GoodsModel->getFind($map);
if (empty($goods)) {
$result['status'] = 0;
$result['msg'] = '商品不存在或已下架';
$this->ajaxReturn($result);
}
if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 1) {
$result['status'] = 0;
$result['msg'] = '商品规格已关闭';
$this->ajaxReturn($result);
}
$SkuModel = D('RetailSkuGoods');
$skuInfo = $SkuModel->getFind(array($SkuModel::ID => $sku_id, $SkuModel::STATE => 0));
if (empty($skuInfo)) {
$result['status'] = 0;
$result['msg'] = '规格不存在';
$this->ajaxReturn($result);
}
$skuInfo['goods_num'] = 0;
if ($platform_type == 2) {
$LittleClass = new Goods();
$thirdResult = $LittleClass->goodsNumQuery([
'merchant_id'=>self::$merchant_id,
'type' => 2,
'code_arr' => [$skuInfo['third_goods_code']],
'Customer_Codes' => self::$store['third_code']
]);
if ($thirdResult['status'] == 1 && !empty($thirdResult['data'])) {
$skuInfo['goods_num'] = $thirdResult['data'][0];
}
} else {
$skuInfo['goods_num'] = A('Api/Inventory')->goods_num(1, self::$store_id, $skuInfo[$SkuModel::GOODS_ID], $sku_id);
}
if ($sku_id == $shopping[$ShoppingModel::SKU_ID]) {
$result['status'] = 1;
$result['msg'] = '修改成功';
} else {
$otherMap = array(
$ShoppingModel::SKU_ID => $sku_id,
$ShoppingModel::UID => $uid,
$ShoppingModel::TYPE => 1,
$ShoppingModel::STATE => 1,
$ShoppingModel::ID => array('neq', $id)
);
$otherShop = $ShoppingModel->getFind($otherMap);
if (!empty($otherShop)) {
//购物车里有相同规格的商品
if (round($shopping[$ShoppingModel::NUM] + $otherShop[$ShoppingModel::NUM], 3) <= round($skuInfo['goods_num'], 3)) {
$num = round($shopping[$ShoppingModel::NUM] + $otherShop[$ShoppingModel::NUM]);
} else {
$num = round($skuInfo['goods_num'], 3);
}
} else {
if (round($skuInfo['goods_num'], 3) >= $shopping[$ShoppingModel::NUM]) {
$num = $shopping[$ShoppingModel::NUM];
} else {
$num = round($skuInfo['goods_num'], 3);
}
}
if ($num > 0) {
$update = $ShoppingModel->updateOrder($sMap, array($ShoppingModel::SKU_ID => $sku_id, $ShoppingModel::NUM => $num));
} else {
$update = false;
}
if ($update) {
$ShoppingModel->deleteOrder($otherMap);//删除旧数据
$result['num'] = $num;
$result['status'] = 2;
$result['msg'] = '修改成功';
} else {
$result['status'] = 0;
$result['msg'] = '修改失败 ';
}
}
$this->ajaxReturn($result);
}
/**
* 修改购物车数量
*/
public function changeCartNum_v1()
{
$platform_type = self::$merchant['platform_type']; //商户平台类型 1默认系统 2微礼平台
$id = I('post.id');
$num = I('post.num');
if (empty($id) || empty($num) || $num < 0) {
$result['status'] = 0;
$result['msg'] = '参数有误';
$this->ajaxReturn($result);
}
$uid = self::$uid;
$merchant_id = self::$merchant_id;
$ShoppingModel = D('RetailShopping');
$sMap = array(
$ShoppingModel::UID => $uid,
$ShoppingModel::MERCHANT_ID => $merchant_id,
$ShoppingModel::ID => $id,
$ShoppingModel::STATE => 1
);
$order = $ShoppingModel->getFind($sMap);
if (empty($order)) {
$result['status'] = 0;
$result['msg'] = '信息有误';
$this->ajaxReturn($result);
}
$GoodsModel = D('RetailGoods');
$map = array(
$GoodsModel::ID => $order[$ShoppingModel::GOODS_ID],
$GoodsModel::STORE_ID => self::$store_id,
$GoodsModel::STATUS => 0,
$GoodsModel::ONLINE_STATE => 1
);
$goods = $GoodsModel->getFind($map);
if (empty($goods)) {
$result['status'] = 0;
$result['msg'] = '商品已下架';
$this->ajaxReturn($result);
}
if (!empty($order[$ShoppingModel::SKU_ID])) {
if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 1) {
$result['status'] = 0;
$result['msg'] = '商品已失效';
$this->ajaxReturn($result);
}
$SkuModel = D('RetailSkuGoods');
$map = array(
$SkuModel::GOODS_ID => $order[$ShoppingModel::GOODS_ID],
$SkuModel::ID => $order[$ShoppingModel::SKU_ID],
$SkuModel::STATE => 0
);
$sku = $SkuModel->getFind($map);
if (empty($sku)) {
$result['status'] = 0;
$result['msg'] = '商品规格已失效';
$this->ajaxReturn($result);
}
if ($platform_type == 2) {
$third_code = $sku['third_goods_code'];
} else {
$goods['goods_num'] = A('Api/Inventory')->goods_num(1, self::$store_id, $order[$ShoppingModel::GOODS_ID], $order[$ShoppingModel::SKU_ID]);
}
} else {
if ($platform_type == 2) {
$third_code = $goods['third_goods_code'];
} else {
$goods['goods_num'] = A('Api/Inventory')->goods_num(1, self::$store_id, $order[$ShoppingModel::GOODS_ID]);
}
}
if ($platform_type == 2) {
//第三方平台
$goods['goods_num'] = 0;
$ThirdGoodsClass = new Goods();
$thirdResult = $ThirdGoodsClass->goodsNumQuery([
'merchant_id' => self::$merchant_id,
'type' => 2,
'code_arr' => [$third_code],
'Customer_Codes' => self::$store['third_code']
]);
if ($thirdResult['status'] == 1 && !empty($thirdResult['data'])) {
$goods['goods_num'] = $thirdResult['data'][0];
}
}
if (round($goods['goods_num'] - $num, 3) < 0) {
$num = floor($goods['goods_num']);
}
$update = $ShoppingModel->updateOrder($sMap, array($ShoppingModel::NUM => $num));
if ($update !== false) {
$result['num'] = $num;
$result['status'] = 1;
$result['msg'] = '修改成功';
} else {
$result['status'] = 0;
$result['msg'] = '修改失败';
}
$this->ajaxReturn($result);
}
/**
* 删除购物车商品
*/
public function deleteShopping_v1()
{
$id = I('post.id');
if (empty($id) || !is_string($id)) {
$result['status'] = 0;
$result['msg'] = '参数值有误';
$this->ajaxReturn($result);
}
$id = htmlspecialchars_decode($id);
$id = json_decode($id, true);
if (empty($id)) {
$result['status'] = 0;
$result['msg'] = '参数值有误';
$this->ajaxReturn($result);
}
foreach ($id as $value) {
if (!is_numeric($value)) {
$result['status'] = 0;
$result['msg'] = '参数值有误';
$this->ajaxReturn($result);
}
}
$ShoppingModel = new RetailShoppingModel();
$map = array(
$ShoppingModel::MERCHANT_ID => self::$merchant_id,
$ShoppingModel::UID => self::$uid,
$ShoppingModel::ID => array('in', $id)
);
$delete = $ShoppingModel->updateOrder($map, array($ShoppingModel::STATE => 0));
if ($delete) {
$res['status'] = 1;
$res['msg'] = '删除成功';
} else {
$res['status'] = 0;
$res['msg'] = '删除失败';
}
$this->ajaxReturn($res);
}
/**
* 扫码购
*/
public function scavenging_v1()
{
$code = I('post.goods_code');
if (empty($code)) {
$res['status'] = 0;
$res['msg'] = '缺少参数';
$this->ajaxReturn($res);
}
$store_id = self::$store_id;
$merchant_id = self::$merchant_id;
$num = 1;
$GoodsModel = new RetailGoodsModel();
$map = array(
'store_id' => $store_id,
'merchant_id' => $merchant_id,
'status' => 0,
'online_state' => 1,
'advance_sale_status' => 0,
);
$canChangeCarNum = 1;//是否可以修改购物车数量 1可以 0不可以
if (preg_match("/^\d{18}$/", $code)) {
$goods_number = substr($code, 2, 5);
$num = substr($code, 12, 5);
$num = round($num / 1000, 3);
$map[$GoodsModel::GOODS_NUMBER] = $goods_number;
$canChangeCarNum = 0;
} else {
$map[$GoodsModel::GOODS_CODE] = $code;
}
$SkuGoodsModel = D('RetailSkuGoods');
$goodsFields = array(
$GoodsModel::ID,
$GoodsModel::ID . ' as goods_id',
$GoodsModel::GOODS_NAME,
$GoodsModel::SELL_NUM,
$GoodsModel::FICTITIOUS_NUM,
$GoodsModel::COMPANY,
$GoodsModel::SPECIFICATIONS,
$GoodsModel::SHOP_MEM_STATUS,
$GoodsModel::SHOP_MEM_PRICE,
$GoodsModel::PLUS_MEM_STATUS,
$GoodsModel::PLUS_PRICE,
$GoodsModel::ATTRIBUTE_STATE,
$GoodsModel::GOODS_IMG_ID,
$GoodsModel::RETAIL_PRICE,
$GoodsModel::ONLINE_PRICE,
);
$goods = $GoodsModel->getFind($map, $goodsFields);
$promotion_status = 0;
$promotion_price = 0;
if ($goods) {
$StoreXcxConfigModel = D('RetailStoreXcxConfig');
$promotion_status = $StoreXcxConfigModel->getFindField(array($StoreXcxConfigModel::STORE_ID => $store_id), $StoreXcxConfigModel::PROMOTION_STATUS);
//判断是否开启促销
if ($promotion_status == 1) {
$HostModel = D('RetailHost');
$time = time();
$hMap = array(
$HostModel::GOODS_ID => $goods[$GoodsModel::ID],
$HostModel::START_TIME => array('elt', $time),
$HostModel::END_TIME => array('gt', $time),
$HostModel::STATUS => 1,
$HostModel::TYPE => 2,
);
$promotion_price = $HostModel->getOrderFindField($hMap, $HostModel::ACT_PRICE, $HostModel::ACT_PRICE . ' asc');
}
//商品条码
if (!$goods[$GoodsModel::ONLINE_PRICE] || floatval($goods[$GoodsModel::ONLINE_PRICE]) < 0.01) {
$goods[$GoodsModel::ONLINE_PRICE] = $goods[$GoodsModel::RETAIL_PRICE];
}
if ($goods[$GoodsModel::SHOP_MEM_STATUS] == 1 && !$goods[$GoodsModel::SHOP_MEM_PRICE] || $goods[$GoodsModel::SHOP_MEM_STATUS] == 2) {
$goods[$GoodsModel::SHOP_MEM_PRICE] = 0;
$goods[$GoodsModel::SHOP_MEM_STATUS] = 2;
}
if ($goods[$GoodsModel::ATTRIBUTE_STATE] == 2) {
$goodsSku = $SkuGoodsModel->getFind(array($SkuGoodsModel::STATE => 0, $SkuGoodsModel::GOODS_ID => $goods[$GoodsModel::ID]));
if (empty($goodsSku)) {
$goods[$GoodsModel::ATTRIBUTE_STATE] = 1;
}
}
$goods['goods_num'] = A('Api/Inventory')->goods_num(2, $store_id, $goods[$GoodsModel::ID]);
$redis_key = 'retail_goods_' . $goods[$GoodsModel::ID] . '_*';
$wait_pay_num = $this->getWaitNum($redis_key);
$value['goods_num'] = round($goods['goods_num'] - $wait_pay_num, 3);
$goods['goods_img'] = $this->getGoodsImage($goods[$GoodsModel::GOODS_IMG_ID]);
$res['status'] = 1;
$res['msg'] = '查找成功';
$res['goods'] = $goods;
} else {
//规格条码
$map = array(
$SkuGoodsModel::STATE => 0,
$SkuGoodsModel::STORE_ID => $store_id,
$SkuGoodsModel::SKU_CODE => $code
);
$skuGoods = $SkuGoodsModel->getFind($map);
if (!empty($skuGoods)) {
$map = array(
$GoodsModel::ID => $skuGoods[$SkuGoodsModel::GOODS_ID],
$GoodsModel::STATUS => 0,
$GoodsModel::STORE_ID => $store_id,
$GoodsModel::MERCHANT_ID => $merchant_id,
$GoodsModel::ONLINE_STATE => 1,
);
$goods = $GoodsModel->getFind($map);
if (!empty($goods)) {
if (!$goods[$GoodsModel::ONLINE_PRICE] || floatval($goods[$GoodsModel::ONLINE_PRICE]) < 0.01) {
$goods[$GoodsModel::ONLINE_PRICE] = $goods[$GoodsModel::RETAIL_PRICE];
}
$goods['goods_img'] = $this->getGoodsImage($goods[$GoodsModel::GOODS_IMG_ID]);
$goods['goods_id'] = $goods[$GoodsModel::ID];
$goods['goods_num'] = A('Api/Inventory')->goods_num(2, $store_id, $goods[$GoodsModel::ID]);
$redis_key = 'retail_goods_' . $goods[$GoodsModel::ID] . '_*';
$wait_pay_num = $this->getWaitNum($redis_key);
$value['goods_num'] = round($goods['goods_num'] - $wait_pay_num, 3);
$res['goods'] = $goods;
$res['skuSelect'] = explode(',', $skuGoods['sku_id_list']);
$res['status'] = 1;
$res['msg'] = '查找成功';
} else {
$res['status'] = 0;
$res['msg'] = '暂无该商品';
}
} else {
$res['status'] = 0;
$res['msg'] = '暂无该商品';
}
}
$res['canChangeCarNum'] = $canChangeCarNum;
$res['num'] = $num;
$res['act_price'] = $promotion_price;
$res['promotion_status'] = $promotion_status;
$this->ajaxReturn($res);
}
/**
* 套餐加入购物车
*/
public function addMealShopping()
{
$groupId = I('post.groupId');
$merchant_id = self::$merchant_id;
$store_id = self::$store_id;
$uid = self::$uid;
$time = time();
$MealPlusGoodsModel = D('RetailMealPlusGoods');
$where[$MealPlusGoodsModel::GROUP_ID] = $groupId;
$where[$MealPlusGoodsModel::STATUS] = 1;
$groupGoodsIds = $MealPlusGoodsModel->getFindField($where, $MealPlusGoodsModel::GOODS_ID, true);
$groupGoodsIds = $groupGoodsIds ? $groupGoodsIds : array(0);
$GoodsModel = D('RetailGoods');
$map['g.' . $GoodsModel::ID] = array('in', $groupGoodsIds);
$map['g.' . $GoodsModel::ONLINE_STATE] = 1;
$map['g.' . $GoodsModel::STATUS] = 0;
$map['s.goods_num'] = array('gt', 0);
$field = "g.id,g.attribute_state";
$goodsInfo = $GoodsModel->getGoodsList($map, $field);
if (count($goodsInfo) != count($groupGoodsIds)) {
$res['status'] = 0;
$res['msg'] = '该套餐已下架,请选择其他商品';
$this->ajaxReturn($res);
exit;
}
//判断条件
foreach ($goodsInfo as $key => &$val) {
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 2) {
$SkuGoodsModel = D('RetailSkuGoods');
$wap['k.' . $SkuGoodsModel::GOODS_ID] = $val[$GoodsModel::ID];
$wap['k.' . $SkuGoodsModel::STATUS] = 1;
$wap['k.' . $SkuGoodsModel::STATE] = 0;
$wap['s.goods_num'] = array('gt', 0);
$field = 'k.' . $SkuGoodsModel::ID;
$order = 'k.' . $SkuGoodsModel::ID . ' asc';
$skuId = $SkuGoodsModel->getSkuGoodsFields($wap, $field, $order);
if (!$skuId) {
$res['status'] = 0;
$res['msg'] = '该套餐已下架,请选择其他商品';
$this->ajaxReturn($res);
exit;
}
$val['sku_id'] = $skuId;
}
}
$ShoppingModel = D('RetailShopping');
$tap[$ShoppingModel::UID] = $uid;
$tap[$ShoppingModel::MERCHANT_ID] = $merchant_id;
$tap[$ShoppingModel::STORE_ID] = $store_id;
$tap[$ShoppingModel::TYPE] = 1;
$tap[$ShoppingModel::STATE] = 1;
$shopGoodsIds = $ShoppingModel->getFindField($tap, $ShoppingModel::GOODS_ID, true); //当前购物车存在的商品
$content[$ShoppingModel::UID] = $uid;
$content[$ShoppingModel::NUM] = 1;
$content[$ShoppingModel::MERCHANT_ID] = $merchant_id;
$content[$ShoppingModel::STORE_ID] = $store_id;
$content[$ShoppingModel::ADD_TIME] = $time;
$content[$ShoppingModel::TYPE] = 1;
$content[$ShoppingModel::CHANGE_STATE] = 1;
foreach ($goodsInfo as $key => &$val) {
if ($shopGoodsIds) {
if (in_array($val[$GoodsModel::ID], $shopGoodsIds)) {
continue;
}
}
$content[$ShoppingModel::GOODS_ID] = $val[$GoodsModel::ID];
$content[$ShoppingModel::NUM] = 1;
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 2) {
$content[$ShoppingModel::SKU_ID] = $val['sku_id'];
}
$ShoppingModel->addOrder($content);
}
$res['status'] = 1;
$res['msg'] = '添加成功';
$this->ajaxReturn($res);
}
/**
* 获取购物车列表
*/
public function getShoppingGoods_v2()
{
$uid = self::$uid;
$store_id = self::$store_id;
$XcxConfigModel = D('RetailStoreXcxConfig');
$promotion_status = $XcxConfigModel->getFindField(array($XcxConfigModel::STORE_ID => $store_id), $XcxConfigModel::PROMOTION_STATUS);
$ShoppingModel = D('RetailShopping');
$GoodsModel = D('RetailGoods');
$SkuGoodsModel = D('RetailSkuGoods');
$SkuListModel = D('RetailSkuList');
$skuFields = array(
$SkuGoodsModel::ID,
$SkuGoodsModel::RETAIL_PRICE,
$SkuGoodsModel::ONLINE_PRICE,
$SkuGoodsModel::SHOP_MEM_PRICE,
$SkuGoodsModel::SKU_ID_LIST,
$SkuGoodsModel::STATE,
$SkuGoodsModel::SKU_NUM,
$SkuGoodsModel::GOODS_IMG_ID,
$SkuGoodsModel::PLUS_PRICE,
);
$goods_list = $ShoppingModel->getShoppingGoods_v1($uid, $store_id, '', '', '1');
foreach ($goods_list as &$val) {
// 普通购买
if (!$val[$GoodsModel::ONLINE_PRICE] || floatval($val[$GoodsModel::ONLINE_PRICE]) < 0.01) {
$val[$GoodsModel::ONLINE_PRICE] = $val[$GoodsModel::RETAIL_PRICE];
}
if (!$promotion_status) {
$val['promotion_status'] = 0;
}
if ($val['promotion_status'] == 1) {
$val[$GoodsModel::VIP_ONLINE_STATE] = 0; // 促销商品 不打折
}
$val['goods_img'] = $this->getGoodsImage($val[$GoodsModel::GOODS_IMG_ID]);
if ($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::SHOP_MEM_STATUS] = 2;
}
if ($val[$GoodsModel::PLUS_MEM_STATUS] == 1 && (!$val[$GoodsModel::PLUS_PRICE] || $val[$GoodsModel::PLUS_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::PLUS_MEM_STATUS] = 2;
}
$val['checked'] = true;
$val['error'] = 0;
if (!empty($val[$ShoppingModel::SKU_ID])) {
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
} else {
$sku = $SkuGoodsModel->getFind(array($SkuGoodsModel::ID => $val[$ShoppingModel::SKU_ID]), $skuFields);
if (empty($sku) || $sku[$SkuGoodsModel::STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
}
$sku_num = A('Api/Inventory')->goods_num(1, self::$store_id, $val[$ShoppingModel::GOODS_ID], $val[$ShoppingModel::SKU_ID]);
$sku['goods_num'] = $sku_num;
$name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $sku[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true);
$sku['name'] = implode(',', $name);
$sku['goods_img'] = $this->getGoodsImage($sku[$SkuGoodsModel::GOODS_IMG_ID]);
$val['goods_img'] = $sku['goods_img'];
$val[$GoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::ONLINE_PRICE];
if ($sku[$SkuGoodsModel::STATE] == 0) {
$val['goods_num'] = $sku_num;
if (!$val['promotion_status']) {
if (!$sku[$SkuGoodsModel::ONLINE_PRICE] || floatval($sku[$SkuGoodsModel::ONLINE_PRICE]) < 0.01) {
$sku[$SkuGoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::RETAIL_PRICE];
}
$val[$GoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::ONLINE_PRICE];
}
} else {
$val['goods_num'] = A('Api/Inventory')->goods_num(2, $store_id, $val[$ShoppingModel::GOODS_ID]);
}
if (!empty($sku[$SkuGoodsModel::SHOP_MEM_PRICE]) && $sku[$SkuGoodsModel::SHOP_MEM_PRICE] > 0) {
$val[$GoodsModel::SHOP_MEM_PRICE] = $sku[$SkuGoodsModel::SHOP_MEM_PRICE];
}
if (!empty($sku[$SkuGoodsModel::PLUS_PRICE]) && $sku[$SkuGoodsModel::PLUS_PRICE] > 0) {
$val[$GoodsModel::PLUS_PRICE] = $sku[$SkuGoodsModel::PLUS_PRICE];
}
$val['sku'] = $sku;
}
} else {
if (($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01)) || !$val[$GoodsModel::ONLINE_PRICE] || $val[$GoodsModel::ONLINE_PRICE] < 0.01) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
} else {
$val['goods_num'] = A('Api/Inventory')->goods_num(1, $store_id, $val[$ShoppingModel::GOODS_ID]);
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
}
}
$redis_key = 'retail_goods_' . $val[$ShoppingModel::GOODS_ID] . '_*';
$wait_pay_num = $this->getWaitNum($redis_key);
$val['wait_pay_num'] = $wait_pay_num;
$val['goods_num'] = round($val['goods_num'] - $wait_pay_num, 3);
if ($val['goods_num'] < $val[$ShoppingModel::NUM]) {
$val['msg'] = '库存不足';
$val['error'] = 1;
$val['checked'] = false;
}
$val['maxBuyNum'] = $val['goods_num'];
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 2 && empty($val[$ShoppingModel::SKU_ID]) || $val[$GoodsModel::ATTRIBUTE_STATE] == 1 && !empty($val[$ShoppingModel::SKU_ID])) {
$val['msg'] = '商品失效';
$val['error'] = 1;
$val['checked'] = false;
}
}
$res['status'] = 1;
$res['msg'] = '查询成功';
$res['goods_list'] = $goods_list;
$vipInfo = $this->getVipInfo();
if (empty($vipInfo)) {
$vipInfo = self::$user;
$vipInfo['discount'] = 1;
}
$res['user_info'] = $vipInfo;
$this->ajaxBack($res);
}
/**
* 获取用户购物车商品数量
*/
public function getShopCarGoodsCount()
{
$uid = self::$uid;
$store_id = self::$store_id;
$ShoppingModel = D('RetailShopping');
$GoodsModel = D('RetailGoods');
$map = array(
's.' . $ShoppingModel::UID => $uid,
's.' . $ShoppingModel::TYPE => 1,
's.' . $ShoppingModel::STORE_ID => $store_id,
's.' . $ShoppingModel::STATE => 1,
'g.' . $GoodsModel::STATUS => 0,
'g.' . $GoodsModel::ONLINE_STATE => 1,
);
$count = M('retail_shopping as s')
->join('ls_retail_goods as g on g.id=s.goods_id')
->where($map)
->count();
$res['status'] = 1;
$res['msg'] = '获取成功';
$res['count'] = intval($count);
$this->ajaxReturn($res);
}
/**
* 获取购物车列表 快递发货版
*/
public function getShoppingGoods_v3()
{
$platform_type = self::$merchant['platform_type'] ? self::$merchant['platform_type'] : 1;
$page = I('post.page') ? I('post.page') : 1;
$limit = I('post.limit') ? I('post.limit') : 10;
$uid = self::$uid;
$store_id = self::$store_id;
$XcxConfigModel = D('RetailStoreXcxConfig');
$promotion_status = $XcxConfigModel->getFindField(array($XcxConfigModel::STORE_ID => $store_id), $XcxConfigModel::PROMOTION_STATUS);
$ShoppingModel = D('RetailShopping');
$GoodsModel = D('RetailGoods');
$SkuGoodsModel = D('RetailSkuGoods');
$SkuListModel = D('RetailSkuList');
//免配送费门槛金额
$delivery_cost = self::$store['delivery_cost'];
$delivery_status = self::$store['delivery_status'];
$skuFields = array(
$SkuGoodsModel::ID,
$SkuGoodsModel::RETAIL_PRICE,
$SkuGoodsModel::ONLINE_PRICE,
$SkuGoodsModel::SHOP_MEM_PRICE,
$SkuGoodsModel::SKU_ID_LIST,
$SkuGoodsModel::STATE,
$SkuGoodsModel::SKU_NUM,
$SkuGoodsModel::GOODS_IMG_ID,
$SkuGoodsModel::PLUS_PRICE,
);
if ($platform_type == 2) {
$skuFields[] = 'third_goods_code';
}
$goods_list = $ShoppingModel->getShoppingGoods_v2($uid, $store_id, '', $page, $limit);
if ($platform_type == 2) {
//第三平台
$code_arr = [];
}
foreach ($goods_list as &$val) {
//处理配送方式
$val['delivery_set'] = $this->handleDelivery($val['delivery_type']);
// 普通购买
if (!$val[$GoodsModel::ONLINE_PRICE] || floatval($val[$GoodsModel::ONLINE_PRICE]) < 0.01) {
$val[$GoodsModel::ONLINE_PRICE] = $val[$GoodsModel::RETAIL_PRICE];
}
if (!$promotion_status) {
$val['promotion_status'] = 0;
}
if ($val['promotion_status'] == 1) {
$val[$GoodsModel::VIP_ONLINE_STATE] = 0; // 促销商品 不打折
}
$val['goods_img'] = $this->getGoodsImage($val[$GoodsModel::GOODS_IMG_ID]);
if ($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::SHOP_MEM_STATUS] = 2;
}
if ($val[$GoodsModel::PLUS_MEM_STATUS] == 1 && (!$val[$GoodsModel::PLUS_PRICE] || $val[$GoodsModel::PLUS_PRICE] < 0.01) && !$val[$ShoppingModel::SKU_ID]) {
$val[$GoodsModel::PLUS_MEM_STATUS] = 2;
}
$val['checked'] = false;
$val['error'] = 0;
if (!empty($val[$ShoppingModel::SKU_ID])) {
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
} else {
$sku = $SkuGoodsModel->getFind(array($SkuGoodsModel::ID => $val[$ShoppingModel::SKU_ID]), $skuFields);
if (empty($sku) || $sku[$SkuGoodsModel::STATE] == 1) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
}
if ($platform_type == 2) {
//第三方平台
$sku_num = 0;
$code_arr[$val['id']] = $sku['third_goods_code'];
} else {
$sku_num = A('Api/Inventory')->goods_num(1, self::$store_id, $val[$ShoppingModel::GOODS_ID], $val[$ShoppingModel::SKU_ID]);
}
$sku['goods_num'] = $sku_num;
$name = $SkuListModel->getFindField(array($SkuListModel::ID => array('in', $sku[$SkuGoodsModel::SKU_ID_LIST])), $SkuListModel::NAME, true);
$sku['name'] = implode(',', $name);
$sku['goods_img'] = $this->getGoodsImage($sku[$SkuGoodsModel::GOODS_IMG_ID]);
$val['goods_img'] = $sku['goods_img'];
$val[$GoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::ONLINE_PRICE];
if ($sku[$SkuGoodsModel::STATE] == 0) {
$val['goods_num'] = $sku_num;
if (!$val['promotion_status']) {
if (!$sku[$SkuGoodsModel::ONLINE_PRICE] || floatval($sku[$SkuGoodsModel::ONLINE_PRICE]) < 0.01) {
$sku[$SkuGoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::RETAIL_PRICE];
}
$val[$GoodsModel::ONLINE_PRICE] = $sku[$SkuGoodsModel::ONLINE_PRICE];
}
}
if (!empty($sku[$SkuGoodsModel::SHOP_MEM_PRICE]) && $sku[$SkuGoodsModel::SHOP_MEM_PRICE] > 0) {
$val[$GoodsModel::SHOP_MEM_PRICE] = $sku[$SkuGoodsModel::SHOP_MEM_PRICE];
}
if (!empty($sku[$SkuGoodsModel::PLUS_PRICE]) && $sku[$SkuGoodsModel::PLUS_PRICE] > 0) {
$val[$GoodsModel::PLUS_PRICE] = $sku[$SkuGoodsModel::PLUS_PRICE];
}
$val['sku'] = $sku;
}
} else {
if (($val[$GoodsModel::SHOP_MEM_STATUS] == 1 && (!$val[$GoodsModel::SHOP_MEM_PRICE] || $val[$GoodsModel::SHOP_MEM_PRICE] < 0.01)) || !$val[$GoodsModel::ONLINE_PRICE] || $val[$GoodsModel::ONLINE_PRICE] < 0.01) {
$val[$GoodsModel::GOODS_NUM] = 0;
$val[$ShoppingModel::NUM] = 0;
$val['msg'] = '商品失效';
$val['error'] = 1;
} else {
if ($platform_type == 2) {
$code_arr[$val['id']] = $val['third_goods_code'];
$val['goods_num'] = 0;
$val['wait_pay_num'] = 0;
$val['maxBuyNum'] = 0;
} else {
$val['goods_num'] = A('Api/Inventory')->goods_num(1, $store_id, $val[$ShoppingModel::GOODS_ID]);
}
$val[$ShoppingModel::NUM] = round($val[$ShoppingModel::NUM], 3);
}
}
if ($platform_type == 1) {
$redis_key = 'retail_goods_' . $val[$ShoppingModel::GOODS_ID] . '_*';
$wait_pay_num = $this->getWaitNum($redis_key);
$val['wait_pay_num'] = $wait_pay_num;
$val['goods_num'] = round($val['goods_num'] - $wait_pay_num, 3);
if ($val['goods_num'] < $val[$ShoppingModel::NUM]) {
$val['msg'] = '库存不足';
$val['error'] = 1;
}
$val['maxBuyNum'] = $val['goods_num'];
}
if ($val[$GoodsModel::ATTRIBUTE_STATE] == 2 && empty($val[$ShoppingModel::SKU_ID]) || $val[$GoodsModel::ATTRIBUTE_STATE] == 1 && !empty($val[$ShoppingModel::SKU_ID])) {
$val['msg'] = '商品失效';
$val['error'] = 1;
}
}
if ($platform_type == 2 && !empty($code_arr)) {
//第三方平台
$ThirdGoodsClass = new Goods();
$thirdResult = $ThirdGoodsClass->goodsNumQuery([
'merchant_id' => self::$merchant_id,
'type' => 2,
'code_arr' => $code_arr,
'Customer_Codes' => self::$store['third_code']
]);
if ($thirdResult['status'] == 1 && !empty($thirdResult['data'])) {
$goods_stock = $thirdResult['data'];
foreach ($goods_list as &$val) {
if (!empty($goods_stock[$val['id']])) {
if (!empty($val[$ShoppingModel::SKU_ID])) {
$val['goods_num'] = $goods_stock[$val['id']];
$val['sku']['goods_num'] = $goods_stock[$val['id']];
} else {
$val['goods_num'] = $goods_stock[$val['id']];
}
if ($val['goods_num'] < $val[$ShoppingModel::NUM]) {
$val['msg'] = '库存不足';
$val['error'] = 1;
}
} else {
$val['msg'] = '库存不足';
$val['error'] = 1;
}
}
} else {
$this->ajaxReturn([
'status' => 0,
'msg' => $thirdResult['message']
]);
}
}
$res['status'] = 1;
$res['msg'] = '查询成功';
$res['data'] = $goods_list;
$res['vip'] = $this->getVipInfo();
$res['delivery_cost'] = $delivery_cost;
$res['delivery_status'] = $delivery_status;
$this->ajaxReturn($res);
}
}