mirror of
https://github.com/v2board/v2board.git
synced 2024-11-10 09:39:10 +08:00
update: fix coupon & server record rate issue
This commit is contained in:
parent
2073727a0a
commit
8702a3489b
@ -82,9 +82,9 @@ class DeepbworkController extends Controller
|
|||||||
Cache::put(CacheKey::get('SERVER_V2RAY_LAST_PUSH_AT', $server->id), time(), 3600);
|
Cache::put(CacheKey::get('SERVER_V2RAY_LAST_PUSH_AT', $server->id), time(), 3600);
|
||||||
$userService = new UserService();
|
$userService = new UserService();
|
||||||
foreach ($data as $item) {
|
foreach ($data as $item) {
|
||||||
$u = $item['u'] * $server->rate;
|
$u = $item['u'];
|
||||||
$d = $item['d'] * $server->rate;
|
$d = $item['d'];
|
||||||
$userService->trafficFetch($u, $d, $item['user_id'], $server, 'vmess');
|
$userService->trafficFetch($u, $d, $item['user_id'], $server->toArray(), 'vmess');
|
||||||
}
|
}
|
||||||
|
|
||||||
return response([
|
return response([
|
||||||
|
@ -74,9 +74,9 @@ class ShadowsocksTidalabController extends Controller
|
|||||||
Cache::put(CacheKey::get('SERVER_SHADOWSOCKS_LAST_PUSH_AT', $server->id), time(), 3600);
|
Cache::put(CacheKey::get('SERVER_SHADOWSOCKS_LAST_PUSH_AT', $server->id), time(), 3600);
|
||||||
$userService = new UserService();
|
$userService = new UserService();
|
||||||
foreach ($data as $item) {
|
foreach ($data as $item) {
|
||||||
$u = $item['u'] * $server->rate;
|
$u = $item['u'];
|
||||||
$d = $item['d'] * $server->rate;
|
$d = $item['d'];
|
||||||
$userService->trafficFetch($u, $d, $item['user_id'], $server, 'shadowsocks');
|
$userService->trafficFetch($u, $d, $item['user_id'], $server->toArray(), 'shadowsocks');
|
||||||
}
|
}
|
||||||
|
|
||||||
return response([
|
return response([
|
||||||
|
@ -79,9 +79,9 @@ class TrojanTidalabController extends Controller
|
|||||||
Cache::put(CacheKey::get('SERVER_TROJAN_LAST_PUSH_AT', $server->id), time(), 3600);
|
Cache::put(CacheKey::get('SERVER_TROJAN_LAST_PUSH_AT', $server->id), time(), 3600);
|
||||||
$userService = new UserService();
|
$userService = new UserService();
|
||||||
foreach ($data as $item) {
|
foreach ($data as $item) {
|
||||||
$u = $item['u'] * $server->rate;
|
$u = $item['u'];
|
||||||
$d = $item['d'] * $server->rate;
|
$d = $item['d'];
|
||||||
$userService->trafficFetch($u, $d, $item['user_id'], $server, 'trojan');
|
$userService->trafficFetch($u, $d, $item['user_id'], $server->toArray(), 'trojan');
|
||||||
}
|
}
|
||||||
|
|
||||||
return response([
|
return response([
|
||||||
|
@ -86,9 +86,9 @@ class VProxyController extends Controller
|
|||||||
Cache::put(CacheKey::get('SERVER_' . strtoupper($this->nodeType) . '_LAST_PUSH_AT', $this->nodeInfo->id), time(), 3600);
|
Cache::put(CacheKey::get('SERVER_' . strtoupper($this->nodeType) . '_LAST_PUSH_AT', $this->nodeInfo->id), time(), 3600);
|
||||||
$userService = new UserService();
|
$userService = new UserService();
|
||||||
foreach ($data as $item) {
|
foreach ($data as $item) {
|
||||||
$u = $item['u'] * $this->nodeInfo->rate;
|
$u = $item['u'];
|
||||||
$d = $item['d'] * $this->nodeInfo->rate;
|
$d = $item['d'];
|
||||||
$userService->trafficFetch($u, $d, $item['user_id'], $this->nodeInfo, $this->nodeType);
|
$userService->trafficFetch($u, $d, $item['user_id'], $this->nodeInfo->toArray(), $this->nodeType);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response([
|
return response([
|
||||||
|
@ -28,7 +28,7 @@ class StatUserJob implements ShouldQueue
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($u, $d, $userId, $server, $protocol, $recordType = 'd')
|
public function __construct($u, $d, $userId, array $server, $protocol, $recordType = 'd')
|
||||||
{
|
{
|
||||||
$this->onQueue('stat');
|
$this->onQueue('stat');
|
||||||
$this->u = $u;
|
$this->u = $u;
|
||||||
@ -52,14 +52,14 @@ class StatUserJob implements ShouldQueue
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data = StatUser::where('record_at', $recordAt)
|
$data = StatUser::where('record_at', $recordAt)
|
||||||
->where('server_rate', $this->server->rate)
|
->where('server_rate', $this->server['rate'])
|
||||||
->where('user_id', $this->userId)
|
->where('user_id', $this->userId)
|
||||||
->first();
|
->first();
|
||||||
if ($data) {
|
if ($data) {
|
||||||
try {
|
try {
|
||||||
$data->update([
|
$data->update([
|
||||||
'u' => $data['u'] + $this->u,
|
'u' => $data['u'] + ($this->u * $this->server['rate']),
|
||||||
'd' => $data['d'] + $this->d
|
'd' => $data['d'] + ($this->d * $this->server['rate'])
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
abort(500, '用户统计数据更新失败');
|
abort(500, '用户统计数据更新失败');
|
||||||
@ -67,7 +67,7 @@ class StatUserJob implements ShouldQueue
|
|||||||
} else {
|
} else {
|
||||||
if (!StatUser::create([
|
if (!StatUser::create([
|
||||||
'user_id' => $this->userId,
|
'user_id' => $this->userId,
|
||||||
'server_rate' => $this->server->rate,
|
'server_rate' => $this->server['rate'],
|
||||||
'u' => $this->u,
|
'u' => $this->u,
|
||||||
'd' => $this->d,
|
'd' => $this->d,
|
||||||
'record_type' => $this->recordType,
|
'record_type' => $this->recordType,
|
||||||
|
@ -27,7 +27,7 @@ class TrafficFetchJob implements ShouldQueue
|
|||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct($u, $d, $userId, $server, $protocol)
|
public function __construct($u, $d, $userId, array $server, $protocol)
|
||||||
{
|
{
|
||||||
$this->onQueue('traffic_fetch');
|
$this->onQueue('traffic_fetch');
|
||||||
$this->u = $u;
|
$this->u = $u;
|
||||||
@ -48,8 +48,8 @@ class TrafficFetchJob implements ShouldQueue
|
|||||||
if (!$user) return;
|
if (!$user) return;
|
||||||
|
|
||||||
$user->t = time();
|
$user->t = time();
|
||||||
$user->u = $user->u + $this->u;
|
$user->u = $user->u + ($this->u * $this->server['rate']);
|
||||||
$user->d = $user->d + $this->d;
|
$user->d = $user->d + ($this->d * $this->server['rate']);
|
||||||
if (!$user->save()) throw new \Exception('流量更新失败');
|
if (!$user->save()) throw new \Exception('流量更新失败');
|
||||||
$mailService = new MailService();
|
$mailService = new MailService();
|
||||||
$mailService->remindTraffic($user);
|
$mailService->remindTraffic($user);
|
||||||
|
@ -15,7 +15,9 @@ class CouponService
|
|||||||
|
|
||||||
public function __construct($code)
|
public function __construct($code)
|
||||||
{
|
{
|
||||||
$this->coupon = Coupon::where('code', $code)->first();
|
$this->coupon = Coupon::where('code', $code)
|
||||||
|
->lockForUpdate()
|
||||||
|
->first();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function use(Order $order):bool
|
public function use(Order $order):bool
|
||||||
@ -37,6 +39,7 @@ class CouponService
|
|||||||
}
|
}
|
||||||
if ($this->coupon->limit_use !== NULL) {
|
if ($this->coupon->limit_use !== NULL) {
|
||||||
$this->coupon->limit_use = $this->coupon->limit_use - 1;
|
$this->coupon->limit_use = $this->coupon->limit_use - 1;
|
||||||
|
if ($this->coupon->limit_use <= 0) return false;
|
||||||
if (!$this->coupon->save()) {
|
if (!$this->coupon->save()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ class UserService
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function trafficFetch(int $u, int $d, int $userId, object $server, string $protocol)
|
public function trafficFetch(int $u, int $d, int $userId, array $server, string $protocol)
|
||||||
{
|
{
|
||||||
TrafficFetchJob::dispatch($u, $d, $userId, $server, $protocol);
|
TrafficFetchJob::dispatch($u, $d, $userId, $server, $protocol);
|
||||||
StatServerJob::dispatch($u, $d, $server, $protocol, 'd');
|
StatServerJob::dispatch($u, $d, $server, $protocol, 'd');
|
||||||
|
Loading…
Reference in New Issue
Block a user