| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- namespace App\Http\Controllers\Api;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Redis;
- class WeightConfigController extends Controller
- {
- const REDIS_KEY_CONFIG = 'WeightConfig1234:config';
- const REDIS_KEY_CLICKS = 'WeightConfig1234:clicks';
- const REDIS_KEY_CLICKS_DAILY_PREFIX = 'WeightConfig1234:clicks:daily:';
- const VALID_IDS = [1, 2, 3, 4];
- public static function defaultConfig()
- {
- return [1 => 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]);
- }
- }
|