152 lines
4.7 KiB
PHP
152 lines
4.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\store\model\cashier;
|
|
|
|
|
|
use addon\memberrecharge\model\RechargeOrder;
|
|
use addon\store\model\member\MemberOnceCard;
|
|
use addon\store\model\stock\Stock;
|
|
use addon\store\model\store\Store;
|
|
use app\model\BaseModel;
|
|
use app\model\member\Member;
|
|
use app\model\member\MemberAccount;
|
|
use app\model\member\MemberLevelOrder;
|
|
use app\model\order\OrderCommon;
|
|
use app\model\order\OrderCreateTool;
|
|
use app\model\order\OrderGoods;
|
|
use app\model\site\Site;
|
|
use app\model\system\Pay;
|
|
use think\facade\Cache;
|
|
use think\facade\Queue;
|
|
|
|
/**
|
|
* 收银订单
|
|
*
|
|
* @author Administrator
|
|
*
|
|
*/
|
|
class CashierOrderGoods extends BaseModel
|
|
{
|
|
public function setOrderGoodsIsDecStock($condition){
|
|
$data = array(
|
|
'is_dec_stock' => 1
|
|
);
|
|
model('store_cashier_order_goods')->update($data, $condition);
|
|
return $this->success();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 实物商品出库
|
|
* @param $params
|
|
*/
|
|
public function orderGoodsOutput($params){
|
|
$order_goods_id = $params['order_goods_id'];
|
|
$order_goods_condition = array(
|
|
['order_goods_id', '=', $order_goods_id]
|
|
);
|
|
$info = model('store_cashier_order_goods')->getInfo($order_goods_condition);
|
|
if(empty($info)){
|
|
return $this->error();
|
|
}
|
|
$is_dec_stock = $info['is_dec_stock'];
|
|
if($is_dec_stock == 0){
|
|
//扣除库存
|
|
$stock_model = new Stock();
|
|
$goods_sku_list = array(
|
|
[
|
|
'goods_sku_id' => $params['sku_id'],
|
|
'goods_id' => $params['goods_id'],
|
|
'goods_num' => $params['num']
|
|
]
|
|
);
|
|
$stock_params = [
|
|
'site_id' => $params['site_id'],
|
|
'store_id' => $params['store_id'],
|
|
'goods_sku_list' => $goods_sku_list,
|
|
'is_dec_sale_stock' => 1
|
|
];
|
|
|
|
$result = $stock_model->sellOutput($stock_params);
|
|
if($result['code'] < 0){
|
|
return $result;
|
|
}
|
|
$this->setOrderGoodsIsDecStock($order_goods_condition);
|
|
}
|
|
return $this->success();
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取订单项的真实商品金额
|
|
* @param $order_goods_info
|
|
* @param $order_info
|
|
*/
|
|
public function getOrderGoodsRealMoney($order_goods_info)
|
|
{
|
|
$order_goods_id = $order_goods_info[ 'order_goods_id' ];
|
|
|
|
|
|
//计算当前订单项的优惠
|
|
$order_offset_model = new CashierOrderOffset();
|
|
$discount_money = $order_offset_model->getOrderGoodsOffsetMoney($order_goods_id);
|
|
$real_goods_money = $order_goods_info[ 'goods_money' ] - $discount_money;//真实商品金额
|
|
|
|
$real_goods_money = $real_goods_money < 0 ? 0 : $real_goods_money;
|
|
return $real_goods_money;
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* 订单项关闭
|
|
* @param $params
|
|
*/
|
|
public function orderGoodsClose($params)
|
|
{
|
|
$order_id = $params[ 'order_id' ];
|
|
$order_goods_id = $params[ 'order_goods_id' ];
|
|
//管理核销相关
|
|
$order_trade_model = new CashierTrade();
|
|
$order_common_model = new CashierOrderCommon();
|
|
$order_condition = array (
|
|
[ 'order_id', '=', $order_id ]
|
|
);
|
|
$order_info = $order_common_model->getOrderInfo($order_condition)[ 'data' ] ?? [];
|
|
if (empty($order_info))
|
|
return $this->error([], '订单不存在');
|
|
|
|
$order_goods_condition = array(
|
|
['order_goods_id', '=', $order_goods_id]
|
|
);
|
|
$order_goods_info = model('store_cashier_order_goods')->getInfo($order_goods_condition);
|
|
$status = $order_goods_info['order_goods_status'];
|
|
if($status == 'close'){
|
|
return $this->error([], '订单项不可以重复关闭');
|
|
}
|
|
$order_goods_data = array(
|
|
'order_goods_status' => 'close'
|
|
);
|
|
model('store_cashier_order_goods')->update($order_goods_data, $order_goods_condition);
|
|
|
|
$trade_result = $order_trade_model->tradeClose($order_goods_info);
|
|
if ($trade_result[ 'code' ] < 0)
|
|
return $trade_result;
|
|
|
|
// 订单项关闭
|
|
event('CashierOrderGoodsClose', ['order_goods_id' => $order_goods_id, 'order_id' => $order_id, 'site_id' => $params['site_id'] ]);
|
|
|
|
return $this->success();
|
|
}
|
|
|
|
} |