jh-admin/addon/store/model/cashier/CashierOrderGoods.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();
}
}