get()->toArray(); return $this->success($list); } public function userSign(Request $request) { $user = $request->user()->toArray(); $config = SignConfig::query()->get()->keyBy('day')->toArray(); $info = UserSign::query()->where('user_id', $user['id'])->first(); $info = $info ? $info->toArray() : []; if ($info && date('Y-m-d', strtotime($info['last_sign'])) == date('Y-m-d')) { return $this->error('今天已经签到过了'); } $series_days = $info ? $info['series_days'] + 1 : 1; $continuity_days = 1; $sign_reward = $config[$continuity_days]['number']; // 连续签到 if ($info && date('Y-m-d', strtotime($info['last_sign']) + 86400) == date('Y-m-d')) { $continuity_days = $info['continuity_days'] + 1; $sign_reward = $config[$continuity_days]['number']; } UserSign::query()->where('user_id', $user['id'])->updateOrCreate(['user_id' => $user['id']], [ 'series_days' => $series_days, 'continuity_days' => $continuity_days, 'last_sign' => date('Y-m-d H:i:s'), ]); UserSignLog::query()->create([ 'user_id' => $user['id'], 'sign_reward' => $sign_reward, 'sign_time' => date('Y-m-d H:i:s'), ]); User::query()->where('id', $user['id'])->increment('amount', $sign_reward); return $this->success(); } public function userSignInfo(Request $request) { $user = $request->user()->toArray(); $log = UserSign::query()->where('user_id', $user['id'])->first(); if (!$log) { return $this->success(); } if (strtotime(date('Y-m-d', strtotime($log->last_sign))) < strtotime(date('Y-m-d', strtotime('-1 days')))) { $log->continuity_days = 0; $log->save(); } $log->is_sign = date('Y-m-d', strtotime($log->last_sign)) == date('Y-m-d'); return $this->success($log->toArray()); } }