253 lines
7.9 KiB
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;
|
|
}
|
|
|
|
}
|
|
} |