限时折扣相关

This commit is contained in:
2025-12-22 13:36:17 +08:00
parent 1b33e116ab
commit 8545b23065
3 changed files with 108 additions and 29 deletions

View File

@@ -783,6 +783,10 @@ class Base extends Model
}
}
$res = Db::execute($sql);
// 顺便修改限时折扣
(new static())->delTimeInfo($message);
$message['table_code'] = $message['new_table_code'];
(new static())->setTimeInfo($message);
Db::commit();
return $res;
}catch (Exception $e) {
@@ -918,6 +922,63 @@ class Base extends Model
}
}
// 获取限时折扣
public function getTimeInfo($message)
{
$redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
$time_dis_info = Redis::get($redis_str);
if($time_dis_info) {
$time_dis_info = json_decode($time_dis_info, true);
}else {
if(!empty($message['time_dis_info'])) {
$time_dis_info = !is_array($message['time_dis_info'])?json_decode($message['time_dis_info'], true):$message['time_dis_info'];
}else {
$time_dis_info = null;
}
}
return $time_dis_info;
}
// 限时折扣修改
public function setTimeInfo($message)
{
$redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
if(empty($message['data'])) {
$res = Redis::del($redis_str);
}else {
$res = Redis::setEx($redis_str, '86400', json_encode($message['data']));
// 将桌号存入redis 以便及时删除
$time_discount_info = Redis::get('time_discount:info');
if($time_discount_info) {
$arr_time_discount_info = explode(',', $time_discount_info);
if(!in_array($redis_str, $arr_time_discount_info)) {
$time_discount_info = array_merge($arr_time_discount_info, [$redis_str]);
Redis::set('time_discount:info', implode(',', $time_discount_info));
}
}else {
Redis::set('time_discount:info', $redis_str);
}
}
return $res;
}
// 限时折扣删除
public function delTimeInfo($message)
{
$redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
Redis::del($redis_str);
$time_discount_info = Redis::get('time_discount:info');
if($time_discount_info) {
$arr_time_discount_info = explode(',', $time_discount_info);
$result = array_search($redis_str, $arr_time_discount_info);
if($result !== false) {
unset($time_discount_info[$result]);
Redis::set('time_discount:info', implode(',', $time_discount_info));
}
}
}
}

View File

@@ -61,17 +61,18 @@ class Shopping extends Base
// 绑定桌码和 client_id
Gateway::bindUid($client_id, $table_code);
// 限时折扣
$redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
$time_dis_info = Redis::get($redis_str);
if($time_dis_info) {
$time_dis_info = json_decode($time_dis_info, true);
}else {
if(!empty($message['time_dis_info'])) {
$time_dis_info = !is_array($message['time_dis_info'])?json_decode($message['time_dis_info'], true):$message['time_dis_info'];
}else {
$time_dis_info = null;
}
}
// $redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
// $time_dis_info = Redis::get($redis_str);
// if($time_dis_info) {
// $time_dis_info = json_decode($time_dis_info, true);
// }else {
// if(!empty($message['time_dis_info'])) {
// $time_dis_info = !is_array($message['time_dis_info'])?json_decode($message['time_dis_info'], true):$message['time_dis_info'];
// }else {
// $time_dis_info = null;
// }
// }
$time_dis_info = (new Base())->getTimeInfo($message);
if(!empty($message['one_more_order'])) {
// 再来一单
if(empty($message['order_id']) || empty($message['user_id'])) {
@@ -361,6 +362,23 @@ class Shopping extends Base
]
];
self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]);
// 直接回馈初始化后的内容
$car = Db::query("
SELECT * FROM `tb_cashier_cart` WHERE
`shop_id`={$message['shop_id']} AND
`table_code`='{$message['new_table_code']}'
");
$snd_data = [
'msg' => '购物车初始化',
'operate_type' => 'init',
'msg_id' => $rand,
'type' => 'shopping',
'table_code' => $message['table_code'],
'data' => $car,
'time_dis_info' => (new Base())->getTimeInfo($message)
];
self::gateway_query('sendToClient', [$client_id, json_encode($snd_data)]);
}catch (\ba\Exception $e) {
Log::info('修改购物车时转桌[error]->>>>>' . $e->getMessage());
}

View File

@@ -135,29 +135,29 @@ class Events
Gateway::sendToClient($client_id, json_encode(['msg' => '桌码或shop_id不能为空']));
return;
}
$redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
if(empty($message['data'])) {
$res = Redis::del($redis_str);
}else {
$res = Redis::set($redis_str, json_encode($message['data']));
// 将桌号存入redis 以便及时删除
$time_discount_info = Redis::get('time_discount:info');
if($time_discount_info) {
$arr_time_discount_info = explode(',', $time_discount_info);
if(!in_array($redis_str, $arr_time_discount_info)) {
$time_discount_info = array_merge($arr_time_discount_info, [$redis_str]);
Redis::set('time_discount:info', implode(',', $time_discount_info));
}
}else {
Redis::set('time_discount:info', $redis_str);
}
}
// $redis_str = Base::get_shopping_save_uid($message['shop_id'], $message['table_code']) . ':time_discount';
// if(empty($message['data'])) {
// $res = Redis::del($redis_str);
// }else {
// $res = Redis::set($redis_str, json_encode($message['data']));
// // 将桌号存入redis 以便及时删除
// $time_discount_info = Redis::get('time_discount:info');
// if($time_discount_info) {
// $arr_time_discount_info = explode(',', $time_discount_info);
// if(!in_array($redis_str, $arr_time_discount_info)) {
// $time_discount_info = array_merge($arr_time_discount_info, [$redis_str]);
// Redis::set('time_discount:info', implode(',', $time_discount_info));
// }
// }else {
// Redis::set('time_discount:info', $redis_str);
// }
// }
$snd_data = [
'msg' => '折扣修改',
'operate_type' => $message['operate_type'],
'msg_id' => '',
'type' => 'time_discount',
'status' => $res,
'status' => (new Base())->setTimeInfo($message),
'data' => $message['data'],
];
Gateway::sendToClient($client_id, json_encode($snd_data));