84 lines
3.5 KiB
PHP
84 lines
3.5 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
|
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\store\event;
|
|
|
|
use addon\cashier\model\order\CashierOrderPay;
|
|
use addon\communitybuy\model\Config as ConfigModel;
|
|
|
|
/**
|
|
* 订单项计算
|
|
*/
|
|
class OrderGoodsCalculate
|
|
{
|
|
public function handle($data)
|
|
{
|
|
$store_id = $data['store_id'] ?? 0;
|
|
$site_id = $data['site_id'] ?? 0;
|
|
$is_community = false;
|
|
if (addon_is_exit('communitybuy')) {
|
|
$config_model = new ConfigModel();
|
|
$trade_config = $config_model->getTradeConfig($site_id, 'shop')['data']['value'];
|
|
$is_community = isset($trade_config['is_community']) ? $trade_config['is_community'] : 0;
|
|
}
|
|
if ($store_id > 0 && !$is_community) {
|
|
$site_id = $data['site_id'];
|
|
//还需要判断配送方式(平台运营模式如果是 同城 门店自提的话 才有可能传入store_id)
|
|
$delivery_array = $data['delivery'] ?? [];
|
|
$delivery_type = $delivery_array['delivery_type'] ?? 'express';
|
|
$store_config_model = new \addon\store\model\Config();
|
|
$store_config = $store_config_model->getStoreBusinessConfig($site_id)['data']['value'] ?? [];
|
|
if ($store_config['store_business'] == 'shop' && !in_array($delivery_type, ['local', 'store'])) {
|
|
return null;
|
|
} elseif (!isset($store_config['open_store']) || !$store_config['open_store']) {
|
|
return null;
|
|
}
|
|
$goods_id = $data['goods_id'];
|
|
$goods_info = model('goods')->getInfo([['goods_id', '=', $goods_id]], 'sale_store');
|
|
$sale_store = $goods_info['sale_store'] ?? 'all';
|
|
if ($sale_store != 'all') {
|
|
$sale_store_ids = explode(',', $sale_store);
|
|
if (!in_array($store_id, $sale_store_ids)) {
|
|
$error = array(
|
|
'message' => '当前门店暂未销售此项商品'
|
|
);
|
|
$data['error'] = $error;
|
|
return (new CashierOrderPay())->success($data);
|
|
}
|
|
}
|
|
$sku_id = $data['sku_id'];
|
|
$store_sku_condition = array(
|
|
['sku_id', '=', $sku_id],
|
|
['store_id', '=', $store_id]
|
|
);
|
|
$store_sku_info = model('store_goods_sku')->getInfo($store_sku_condition);
|
|
if (!empty($store_sku_info)) {
|
|
$data['price'] = $store_sku_info['price'];
|
|
$data['stock'] = numberFormat($store_sku_info['stock']);
|
|
if ($store_sku_info['status'] != 1) {
|
|
$error = array(
|
|
'message' => '当前门店产品已下架'
|
|
);
|
|
}
|
|
} else {
|
|
$error = array(
|
|
'message' => '当前门店暂未销售此项商品'
|
|
);
|
|
}
|
|
if (!empty($error)) {
|
|
$data['error'] = $error;
|
|
}
|
|
return (new CashierOrderPay())->success($data);
|
|
}
|
|
}
|
|
}
|