优化代码

This commit is contained in:
iVampireSP.com 2022-11-20 20:32:49 +08:00
parent 3133463254
commit 3791eddce2
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
14 changed files with 171 additions and 147 deletions

View File

@ -4,13 +4,13 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Module; use App\Models\Module;
use Illuminate\Http\Request;
class HomeController extends Controller class HomeController extends Controller
{ {
// //
public function index() { public function index()
{
$modules = Module::paginate(10); $modules = Module::paginate(10);
return view('admin.index', compact('modules')); return view('admin.index', compact('modules'));

View File

@ -3,9 +3,7 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Transaction;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use function config;
class UserController extends Controller class UserController extends Controller
{ {

View File

@ -31,7 +31,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance isCachable()

View File

@ -28,7 +28,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Module isCachable()

View File

@ -22,13 +22,15 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken all($columns = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken all($columns = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken avg($column) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken avg($column)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken cache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken cache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken cachedValue(array $arguments, string $cacheKey) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken cachedValue(array $arguments, string
* $cacheKey)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken count($columns = '*') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken count($columns = '*')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken disableCache() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken disableCache()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken isCachable()
@ -49,7 +51,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereTokenableId($value) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereTokenableId($value)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereTokenableType($value) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereTokenableType($value)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereUpdatedAt($value) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken whereUpdatedAt($value)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken withCacheCooldownSeconds(?int $seconds = null) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken withCacheCooldownSeconds(?int
* $seconds = null)
* @mixin \Eloquent * @mixin \Eloquent
*/ */
class PersonalAccessToken extends SanctumPersonalAccessToken class PersonalAccessToken extends SanctumPersonalAccessToken

View File

@ -33,7 +33,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task isCachable()

View File

@ -6,34 +6,49 @@
use App\Exceptions\CommonException; use App\Exceptions\CommonException;
use App\Exceptions\User\BalanceNotEnoughException; use App\Exceptions\User\BalanceNotEnoughException;
use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Contracts\Cache\LockTimeoutException;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Cache;
use Laravel\Sanctum\HasApiTokens; use Laravel\Sanctum\HasApiTokens;
/** /**
* App\Models\User * App\Models\User
* *
* @property int $id * @property int
* @property string $name * $id
* @property string $email * @property string
* @property \Illuminate\Support\Carbon|null $email_verified_at * $name
* @property string|null $password * @property string
* @property float $balance * $email
* @property \Illuminate\Support\Carbon|null $banned_at 封禁时间 * @property \Illuminate\Support\Carbon|null
* @property string|null $banned_reason * $email_verified_at
* @property string|null $remember_token * @property string|null
* @property \Illuminate\Support\Carbon|null $created_at * $password
* @property \Illuminate\Support\Carbon|null $updated_at * @property float
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Host[] $hosts * $balance
* @property-read int|null $hosts_count * @property \Illuminate\Support\Carbon|null
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications * $banned_at 封禁时间
* @property-read int|null $notifications_count * @property string|null
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\PersonalAccessToken[] $tokens * $banned_reason
* @property-read int|null $tokens_count * @property string|null
* $remember_token
* @property \Illuminate\Support\Carbon|null
* $created_at
* @property \Illuminate\Support\Carbon|null
* $updated_at
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Host[]
* $hosts
* @property-read int|null
* $hosts_count
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[]
* $notifications
* @property-read int|null
* $notifications_count
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\PersonalAccessToken[]
* $tokens
* @property-read int|null
* $tokens_count
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User all($columns = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User all($columns = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User avg($column) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User avg($column)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User cache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User cache(array $tags = [])
@ -44,7 +59,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User exists()
* @method static \Database\Factories\UserFactory factory(...$parameters) * @method static \Database\Factories\UserFactory factory(...$parameters)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|User isCachable()
@ -109,7 +125,7 @@ protected static function boot()
// balance 四舍五入 // balance 四舍五入
if ($model->isDirty('balance')) { if ($model->isDirty('balance')) {
$model->balance = round($model->balance, 2); $model->balance = round($model->balance, 2, PHP_ROUND_HALF_DOWN);
} }
if ($model->isDirty('banned_at')) { if ($model->isDirty('banned_at')) {
@ -132,57 +148,57 @@ public function hosts(): HasMany
* @throws CommonException * @throws CommonException
* @throws BalanceNotEnoughException * @throws BalanceNotEnoughException
*/ */
public function toDrops($amount = 1) // public function toDrops($amount = 1)
{ // {
//
$cache_key = 'user_drops_' . $this->id; // $cache_key = 'user_drops_' . $this->id;
//
if ($amount === 0 || $amount === null) { // if ($amount === 0 || $amount === null) {
return $this; // return $this;
} // }
//
$rate = config('drops.rate'); // $rate = config('drops.rate');
//
//
$transactions = new Transaction(); // $transactions = new Transaction();
//
$drops = $transactions->getDrops($this->id); // $drops = $transactions->getDrops($this->id);
//
$total = 0; // $total = 0;
//
if ($drops < 0) { // if ($drops < 0) {
$amount += abs($drops) / $rate; // $amount += abs($drops) / $rate;
} // }
//
$total += $amount * $rate; // $total += $amount * $rate;
//
//
// amount 保留两位小数 // // amount 保留两位小数
$amount = round($amount, 2); // $amount = round($amount, 2);
//
$lock = Cache::lock("lock_" . $cache_key, 5); // $lock = Cache::lock("lock_" . $cache_key, 5);
try { // try {
$lock->block(5); // $lock->block(5);
//
$this->balance -= $amount; // $this->balance -= $amount;
$this->save(); // $this->save();
//
$transactions->increaseDrops($this->id, $total); // $transactions->increaseDrops($this->id, $total);
//
// $transactions // // $transactions
//
$transactions->addPayoutBalance($this->id, $amount, '自动转换为 Drops'); // $transactions->addPayoutBalance($this->id, $amount, '自动转换为 Drops');
//
// if user balance <= 0 // // if user balance <= 0
if ($this->balance < $amount) { // if ($this->balance < $amount) {
throw new BalanceNotEnoughException('余额不足'); // throw new BalanceNotEnoughException('余额不足');
} // }
} catch (LockTimeoutException) { // } catch (LockTimeoutException) {
throw new CommonException('暂时无法处理此请求,请稍后再试。'); // throw new CommonException('暂时无法处理此请求,请稍后再试。');
} finally { // } finally {
optional($lock)->release(); // optional($lock)->release();
} // }
//
return $this; // return $this;
} // }
} }

View File

@ -30,7 +30,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply isCachable()

View File

@ -31,13 +31,15 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder all($columns = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder all($columns = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder avg($column) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder avg($column)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder cache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder cache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder cachedValue(array $arguments, string $cacheKey) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder cachedValue(array $arguments, string
* $cacheKey)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder count($columns = '*') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder count($columns = '*')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder disableCache() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder disableCache()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder disableModelCaching() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder exists() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder exists()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder flushCache(array $tags = []) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder flushCache(array $tags = [])
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder
* getModelCacheCooldown(\Illuminate\Database\Eloquent\Model $instance)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder inRandomOrder($seed = '') * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder inRandomOrder($seed = '')
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder insert(array $values) * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder isCachable() * @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder isCachable()

View File

@ -8,6 +8,7 @@
class ModuleEarning extends Component class ModuleEarning extends Component
{ {
private Module $module; private Module $module;
/** /**
* Create a new component instance. * Create a new component instance.
* *