jh-admin/addon/store/model/cashier/CashierTrade.php

253 lines
7.9 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\goods\GoodsData;
use addon\store\model\member\MemberOnceCard;
use addon\store\model\stock\Stock;
use addon\store\model\store\Store;
use addon\store\model\yuyue\Yuyue;
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 CashierTrade extends BaseModel
{
public function toSend($item,$order_info)
{
$action_type = $item[ 'trade_type' ];//操作类型
switch ( $action_type ) {
case 'oncecard'://卡项
$result = $this->toOncecard($item, $order_info);
break;
case ''://实物
$result = $this->toGoods($item, $order_info);
break;
case 'service'://服务
$result = $this->toService($item, $order_info);
break;
}
if (!empty($result)) {
if ($result[ 'code' ] < 0) {
return $result;
}
}
//累加销量
$goods_data_model = new GoodsData();
$goods_data_model->incGoodsSaleNum($item);
return $this->success();
}
/**
* 生成卡项
* @param $params
* @return array
*/
public function toOncecard($params, $order_info)
{
$member_oncecard_model = new MemberOnceCard();
$cashier_type = $order_info['cashier_type'];
$is_gift = $params['is_gift'];
if($cashier_type == 'online' || $is_gift){
$params['delivery_method'] = 'buy';
}
$num = $params['num'];
$i = 0;
$create_card_id_array = [];
while($i < $num){
$result = $member_oncecard_model->create($params);
if ($result[ 'code' ] < 0) {
return $result;
}
$create_card_id_array[] = $result['data'];
$i++;
}
if(!empty($create_card_id_array)){
$order_goods_id = $params['order_goods_id'];
$create_card_id = implode(',', $create_card_id_array);
$condition = array(
['order_goods_id', '=', $order_goods_id]
);
$data = array(
'create_card_id' => $create_card_id
);
model('store_cashier_order_goods')->update($data, $condition);
}
return $this->success();
}
/**
* 生成预约服务
* @param $order_info
* @return array
*/
public function toService($params, $order_info)
{
$extend = json_decode($params[ 'extend' ], true);
$member_oncecard_model = new MemberOnceCard();
$cashier_type = $order_info['cashier_type'];
$is_gift = $params['is_gift'];
if($cashier_type == 'online' || $is_gift){
$result = $member_oncecard_model->create($params);
if ($result[ 'code' ] < 0) {
return $result;
}
$create_card_id_array = [$result['data']];
if(!empty($create_card_id_array)){
$order_goods_id = $params['order_goods_id'];
$create_card_id = implode(',', $create_card_id_array);
$condition = array(
['order_goods_id', '=', $order_goods_id]
);
$data = array(
'create_card_id' => $create_card_id
);
model('store_cashier_order_goods')->update($data, $condition);
}
}
if (!empty($extend)) {
$order_id = $params[ 'order_id' ];
$order_condition = array (
[ 'order_id', '=', $order_id ]
);
$order_info = model('store_cashier_order')->getInfo($order_condition);
//去生成预约服务
$goods_id = $params[ 'goods_id' ];
$sku_id = $params[ 'sku_id' ];
$store_id = $params[ 'store_id' ];
$site_id = $params[ 'site_id' ];
$member_id = $params[ 'member_id' ];
$site_type = $order_info[ 'site_type' ];
$yuyue_goods_list = [
[
'sku_id' => $sku_id,
'goods_id' => $goods_id,
'servicer_id' => $extend[ 'servicer_id' ] ?? 0,
'card_id' => 0
]
];
$yuyue_model = new Yuyue();
$yuyue_data = array (
'date' => $extend[ 'date' ] ?? '',
'time' => $extend[ 'time' ] ?? '',
'remark' => $extend[ 'remark' ] ?? '',
'store_id' => $store_id,
'member_id' => $member_id,
'site_id' => $site_id,
'app_module' => $site_type,
'goods' => $yuyue_goods_list
);
$result = $yuyue_model->addYuyue($yuyue_data);
}
return $this->success();
}
/**
* 实物处理
* @param $params
* @param $order_info
* @return array
*/
public function toGoods($params, $order_info){
$cashier_type = $order_info['cashier_type'];
$is_gift = $params['is_gift'];
if($cashier_type == 'online' || $is_gift){
$member_oncecard_model = new MemberOnceCard();
$result = $member_oncecard_model->create($params);
if ($result[ 'code' ] < 0) {
return $result;
}
$create_card_id_array = [$result['data']];
if(!empty($create_card_id_array)){
$order_goods_id = $params['order_goods_id'];
$create_card_id = implode(',', $create_card_id_array);
$condition = array(
['order_goods_id', '=', $order_goods_id]
);
$data = array(
'create_card_id' => $create_card_id
);
model('store_cashier_order_goods')->update($data, $condition);
}
}else{
//扣除库存
$cashier_order_goods_model = new CashierOrderGoods();
$result = $cashier_order_goods_model->orderGoodsOutput($params);
}
return $result;
}
/**
*关闭收货相关的业务
* @param $params
*/
public function tradeClose($params)
{
$order_goods_id = $params[ 'order_goods_id' ];
$order_id = $params[ 'order_id' ];
$trade_type = $params[ 'trade_type' ];
$create_card_id = $params['create_card_id'] ?? '';
$refund_status = $params['refund_status'];
if(!empty($create_card_id)){
$create_card_id = explode(',', $create_card_id);
$member_oncecard_model = new MemberOnceCard();
$member_oncecard_model->memberOncecardClose($create_card_id);
}
//todo 考虑退次卡
$result = event('CashierTradeClose', $params, true);
if (empty($result)) {
switch ( $trade_type ) {
case 'oncecard'://卡项
break;
case 'service'://服务商品
break;
case ''://实物商品
break;
}
return $this->success();
} else {
return $result;
}
}
}