新增统计,小游戏,系统设置

This commit is contained in:
2026-06-11 13:49:20 +08:00
parent 3120c56620
commit 064ba727e0
11 changed files with 827 additions and 144 deletions

View File

@@ -2,34 +2,99 @@
namespace app\api\controller;
use Throwable;
use ba\Captcha;
use ba\ClickCaptcha;
use think\facade\Validate;
use app\admin\model\PromoReward;
use app\common\controller\Api;
use app\common\model\Config;
use app\common\service\Jk8Services;
use app\common\model\User;
use app\common\library\Email;
use app\common\controller\Frontend;
use PHPMailer\PHPMailer\Exception as PHPMailerException;
class External extends Frontend
class External extends Api
{
protected array $noNeedLogin = ['depositNotify'];
protected $jk8Services;
public function initialize(): void
{
parent::initialize();
$this->jk8Services = app(Jk8Services::class);
}
public function depositNotify(): void
public function depositNotify()
{
$appSecret = config('xyx')['app_secret'];
$appSecret = '4a01e8dfaa93b69723e937c04962af26';
$expireSeconds = 300;
$requestParams = $this->request->param();
try {
} catch (PHPMailerException) {
if (!isset($requestParams['sign']) || !isset($requestParams['timestamp'])) {
$this->success(__('Missing sign or timestamp'));
}
$this->success(__('Mail sent successfully~'));
$currentTime = time();
if (abs($currentTime - intval($requestParams['timestamp'])) > $expireSeconds) {
$this->success(__('Request has expired'));
}
$receivedSign = $requestParams['sign'];
unset($requestParams['sign']);
ksort($requestParams);
$stringToBeSigned = http_build_query($requestParams) . '&app_secret=' . $appSecret;
$calculatedSign = hash('sha256', $stringToBeSigned);
if (!hash_equals($calculatedSign, $receivedSign)) {
return json(['status'=> 'FAIL']);
}
$user = User::where('xyx_account', $requestParams['account'])->find();
// $transactionId = $this->jk8Services->setScore($user['jk_username'], $requestParams['prize_amount']);
$promoReward = new PromoReward;
$data = [
'user_id' => $user['id'],
'game_type' => $requestParams['game_id'],
'amount' => $requestParams['prize_amount'],
];
$promoReward->save($data);
return json(['status'=> 'OK']);
}
public function claimPrizeNotify()
{
$config = Config::whereIn('name', ['app_id', 'app_secret'])->where('group', 'basics')->column('value', 'name');
$appSecret = $config['app_secret'];
$expireSeconds = 300;
$requestParams = $this->request->param();
if (!isset($requestParams['sign']) || !isset($requestParams['timestamp'])) {
$this->success(__('Missing sign or timestamp'));
}
$currentTime = time();
if (abs($currentTime - intval($requestParams['timestamp'])) > $expireSeconds) {
$this->success(__('Request has expired'));
}
$receivedSign = $requestParams['sign'];
unset($requestParams['sign']);
ksort($requestParams);
$stringToBeSigned = http_build_query($requestParams) . '&app_secret=' . $appSecret;
$calculatedSign = hash('sha256', $stringToBeSigned);
if (!hash_equals($calculatedSign, $receivedSign)) {
return json(['status'=> 'FAIL']);
}
$user = User::where('xyx_account', $requestParams['account'])->find();
// $transactionId = $this->jk8Services->setScore($user['jk_username'], $requestParams['prize_amount']);
$promoReward = new PromoReward;
$data = [
'user_id' => $user['id'],
'game_type' => $requestParams['game_id'],
'amount' => $requestParams['prize_amount'],
];
$promoReward->save($data);
return json(['status'=> 'OK']);
}
}