20, 2 => 30, 3 => 40, 4 => 10]; } public static function getConfig() { $raw = Redis::get(self::REDIS_KEY_CONFIG); if (!$raw) { return self::defaultConfig(); } $data = json_decode($raw, true); if (!is_array($data)) { return self::defaultConfig(); } $result = []; foreach (self::VALID_IDS as $id) { $result[$id] = isset($data[$id]) ? intval($data[$id]) : 0; } return $result; } public function getWeights(Request $request) { $config = self::getConfig(); return apiReturnSuc($config); } public function clickRecord(Request $request) { $id = intval($request->input('id')); if (!in_array($id, self::VALID_IDS)) { return apiReturnFail('invalid id'); } Redis::hincrby(self::REDIS_KEY_CLICKS, $id, 1); $dailyKey = self::REDIS_KEY_CLICKS_DAILY_PREFIX . date('Y-m-d'); Redis::hincrby($dailyKey, $id, 1); Redis::expire($dailyKey, 60 * 60 * 24 * 90); return apiReturnSuc(['id' => $id]); } }