限时折扣相关

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));
}
}
}
}