优化代码

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\Models\Module;
use Illuminate\Http\Request;
class HomeController extends Controller
{
//
public function index() {
public function index()
{
$modules = Module::paginate(10);
return view('admin.index', compact('modules'));

View File

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

View File

@ -31,7 +31,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Balance exists()
* @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 insert(array $values)
* @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 exists()
* @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 insert(array $values)
* @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 avg($column)
* @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 disableCache()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|PersonalAccessToken exists()
* @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 insert(array $values)
* @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 whereTokenableType($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
*/
class PersonalAccessToken extends SanctumPersonalAccessToken

View File

@ -33,7 +33,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task exists()
* @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 insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Task isCachable()

View File

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

View File

@ -30,7 +30,8 @@
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|Reply exists()
* @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 insert(array $values)
* @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 avg($column)
* @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 disableCache()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder disableModelCaching()
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder exists()
* @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 insert(array $values)
* @method static \GeneaLabs\LaravelModelCaching\CachedBuilder|WorkOrder isCachable()

View File

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