功能:新增用户积分流水系统
- 新建 user_currency_logs 流水表 (Migration) - App\Enums\CurrencySource 来源枚举(可扩展) - App\Models\UserCurrencyLog 流水模型 - App\Services\UserCurrencyService 统一积分变更服务 - FishingController:抛竿/收竿接入流水记录 - AutoSaveExp:自动存点接入流水记录 - Admin/UserManagerController:管理员调整接入流水记录 - LeaderboardController:新增今日三榜(经验/金币/魅力)+ 个人流水日志页 - Admin/CurrencyStatsController:后台活动统计页 - views:新增个人日志页、后台统计页;排行榜新增今日榜数据传递 - routes:新增个人日志路由 /my/currency-logs、后台路由 /admin/currency-stats
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* 文件功能:用户积分流水 Eloquent 模型
|
||||
* 对应表:user_currency_logs
|
||||
* 只读写,不允许 update(流水记录不可更改)
|
||||
*
|
||||
* @author ChatRoom Laravel
|
||||
* @version 1.0.0
|
||||
*/
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class UserCurrencyLog extends Model
|
||||
{
|
||||
/**
|
||||
* 只有 created_at,没有 updated_at(流水记录只写不改)
|
||||
*/
|
||||
public const UPDATED_AT = null;
|
||||
|
||||
/**
|
||||
* 允许批量赋值的字段
|
||||
*/
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
'username',
|
||||
'currency',
|
||||
'amount',
|
||||
'balance_after',
|
||||
'source',
|
||||
'remark',
|
||||
'room_id',
|
||||
];
|
||||
|
||||
/**
|
||||
* 字段类型转换
|
||||
*/
|
||||
protected $casts = [
|
||||
'amount' => 'integer',
|
||||
'balance_after'=> 'integer',
|
||||
'room_id' => 'integer',
|
||||
'created_at' => 'datetime',
|
||||
];
|
||||
|
||||
// ─── 关联 ─────────────────────────────────────────────────
|
||||
|
||||
/**
|
||||
* 关联用户(流水属于哪个用户)
|
||||
*/
|
||||
public function user(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
// ─── 作用域(Scope)快捷查询 ──────────────────────────────
|
||||
|
||||
/**
|
||||
* 按货币类型过滤
|
||||
*/
|
||||
public function scopeCurrency(Builder $query, string $currency): Builder
|
||||
{
|
||||
return $query->where('currency', $currency);
|
||||
}
|
||||
|
||||
/**
|
||||
* 今日数据
|
||||
*/
|
||||
public function scopeToday(Builder $query): Builder
|
||||
{
|
||||
return $query->whereDate('created_at', today());
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定日期数据
|
||||
*/
|
||||
public function scopeOnDate(Builder $query, string $date): Builder
|
||||
{
|
||||
return $query->whereDate('created_at', $date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 仅正向增加(用于排行榜,不算消耗)
|
||||
*/
|
||||
public function scopeGain(Builder $query): Builder
|
||||
{
|
||||
return $query->where('amount', '>', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按来源过滤
|
||||
*/
|
||||
public function scopeSource(Builder $query, string $source): Builder
|
||||
{
|
||||
return $query->where('source', $source);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user