fix(zy): 修复活动报名时间和状态逻辑

- 修复了活动报名时间判断逻辑,增加了对报名结束时间的判断
- 修改了活动报名状态的判断条件,提高了代码的可读性和准确性
- 优化了订单自动操作和支付后的处理流程,确保活动报名状态正确更新
- 新增了用户权限验证功能,确保只有管理员或裁判可以修改用户状态
This commit is contained in:
2025-05-31 21:22:44 +08:00
parent 2a1cec7909
commit 35725ffd2d
5 changed files with 76 additions and 28 deletions

View File

@@ -198,13 +198,15 @@ class Activity extends Base
if (empty($game)) {
$this->error('活动不存在');
}
if ($game['join_start_time'] > date('Y-m-d H:i:s')) {
$this->error('活动报名时间未开始');
$currentTime = date('Y-m-d H:i:s');
if ($game['join_start_time'] > $currentTime || $game['join_end_time'] < $currentTime) {
$this->error('不在报名时间');
}
if (empty($params['users']) || !is_array($params['users']) || empty($params['goods_list']) || !is_array($params['goods_list'])) {
$this->error('请核对报名人员');
}
if (GameJoin::get(['game_id' => $game['id'], 'act_id' => $game['act_id'], 'user_id' => $this->auth->id])) {
$join = GameJoin::where(['game_id' => $game['id'], 'user_id' => $this->auth->id])->where('status', '>', -1)->find();
if (!empty($join)) {
$this->error('您已报名此活动');
}
$order = GameJoin::where('game_id', $game['id'])->count();
@@ -241,8 +243,8 @@ class Activity extends Base
'act_id' => $game['act_id'],
'game_id' => $game['id'],
'user_id' => $this->auth->id,
'orer_id' => $order['id'],
'status' => 0,//待支付
'order_id' => $order['id'],
'status' => 0, //待支付
'users' => json_encode($params['users'] ?? [])
]);
foreach ($participant as &$p) {
@@ -256,6 +258,6 @@ class Activity extends Base
$this->error($e->getMessage(), $e);
}
$this->success('Success');
$this->success('Success', $order);
}
}