diff --git a/app/Console/Commands/GetUser.php b/app/Console/Commands/GetUser.php index 6f09740..23015ee 100644 --- a/app/Console/Commands/GetUser.php +++ b/app/Console/Commands/GetUser.php @@ -49,9 +49,6 @@ public function handle() $transaction = new Transaction(); - $drops = $transaction->getDrops($user->id); - - $this->warn('用户基本信息'); $this->info('用户 ID: ' . $user->id); @@ -59,9 +56,6 @@ public function handle() $this->info('邮箱: ' . $user->email); $this->info('余额:' . $user->balance . ' 元'); - $this->info('Drops:' . $drops); - - $this->warn('前 10 条充值记录'); $balances = Balance::where('user_id', $user->id)->whereNotNull('paid_at')->latest()->limit(10)->get(); @@ -77,7 +71,9 @@ public function handle() // 倒序 foreach (array_reverse($hosts->toArray()) as $host) { - $this->info('[' . $host['module']['name'] . '](' . $host['price'] . ' Drops) ' . $host['name']); + $this->info('[' . $host['module']['name'] . '](' . $host['price'] . ' 元) ' . $host['name']); } + + return 0; } } diff --git a/app/Console/Commands/UserAddDrops.php b/app/Console/Commands/UserAddDrops.php deleted file mode 100644 index 2a3e13b..0000000 --- a/app/Console/Commands/UserAddDrops.php +++ /dev/null @@ -1,60 +0,0 @@ -argument('user_id'); - $amount = $this->argument('amount'); - - $user = User::findOrFail($user_id); - - $transaction = new Transaction(); - - $current_drops = $transaction->getDrops($user->id); - - $this->info($user->name . ', 当前 ' . $current_drops . ' Drops'); - - $this->info($user->name . ', 当前余额: ' . $user->balance . ' 元'); - - $this->info('添加后 ' . $current_drops + $amount . ' Drops'); - - if (!$this->confirm('确认添加 ' . $amount . ' Drops?')) { - $this->info('已取消。'); - return 0; - } - - $transaction->increaseDrops($user->id, $amount, '管理员添加 Drops', 'console'); - - $this->info('添加成功。'); - - return CommandAlias::SUCCESS; - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 83ce741..98617af 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -29,7 +29,7 @@ protected function schedule(Schedule $schedule) $schedule->command('sanctum:prune-expired --hours=24')->daily(); // 扣费 - $schedule->job(new HostCost())->everyFiveMinutes(); + $schedule->job(new HostCost(now()->hour))->hourly()->withoutOverlapping()->onOneServer(); // 获取模块暴露的信息(服务器等) $schedule->job(new FetchModule())->withoutOverlapping()->everyMinute(); diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 5c0d3f6..f451f1f 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -55,16 +55,12 @@ public function edit(User $user) { // - $transaction = new Transaction(); - - $drops = $transaction->getDrops($user->id); - $hosts = Host::where('user_id', $user->id)->latest()->paginate(50, ['*'], 'hosts_page'); $workOrders = WorkOrder::where('user_id', $user->id)->latest()->paginate(50, ['*'], 'workOrders_page'); $balances = Balance::where('user_id', $user->id)->latest()->paginate(50, ['*'], 'balances_page'); - return view('admin.users.edit', compact('user', 'drops', 'hosts', 'workOrders', 'balances')); + return view('admin.users.edit', compact('user', 'hosts', 'workOrders', 'balances')); } /** @@ -79,9 +75,7 @@ public function update(Request $request, User $user) { // $request->validate([ - 'balance' => 'nullable|numeric|min:0.01|max:1000', - 'drops' => 'nullable|numeric|min:1|max:10000', ]); $transaction = new Transaction(); @@ -92,10 +86,6 @@ public function update(Request $request, User $user) $transaction->addAmount($user->id, 'console', $request->balance, '管理员汇入', true); } - if ($request->filled('drops')) { - $transaction->increaseDrops($user->id, $request->drops, '管理员汇入', 'console'); - } - if ($request->is_banned) { $user->banned_at = Carbon::now(); diff --git a/app/Http/Controllers/Api/HostController.php b/app/Http/Controllers/Api/HostController.php index 5a16812..2c532ae 100644 --- a/app/Http/Controllers/Api/HostController.php +++ b/app/Http/Controllers/Api/HostController.php @@ -62,14 +62,13 @@ public function usages(): JsonResponse { $month = now()->month; - $month_cache_key = 'user_' . auth()->id() . '_month_' . $month . '_hosts_drops'; - $hosts_drops = Cache::get($month_cache_key, []); + // $month_cache_key = 'user_' . auth()->id() . '_month_' . $month . '_hosts_drops'; + // $hosts_drops = Cache::get($month_cache_key, []); $month_cache_key = 'user_' . auth()->id() . '_month_' . $month . '_hosts_balances'; $hosts_balances = Cache::get($month_cache_key, []); return $this->success([ - 'drops' => $hosts_drops, 'balances' => $hosts_balances ]); } diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 6754edc..40181ba 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -12,14 +12,6 @@ class UserController extends Controller public function index(Request $request) { - $user = $request->user(); - - $transaction = new Transaction(); - - $user['drops'] = $transaction->getDrops($user['id']); - $user['drops_rate'] = config('drops.rate'); - - - return $this->success($user); + return $this->success($request->user()); } } diff --git a/app/Http/Controllers/Modules/HostController.php b/app/Http/Controllers/Modules/HostController.php index 79af7ff..e1a0dc5 100644 --- a/app/Http/Controllers/Modules/HostController.php +++ b/app/Http/Controllers/Modules/HostController.php @@ -103,12 +103,10 @@ public function update(Request $request, Host $host): JsonResponse // $this->validate($request, [ 'status' => 'sometimes|in:running,stopped,error,suspended,pending', - // 'managed_price' => 'sometimes|numeric|nullable', + 'managed_price' => 'sometimes|numeric|nullable', // 如果是立即扣费 'cost_once' => 'sometimes|numeric|nullable', - - 'cost_balance' => 'sometimes|numeric|nullable', ]); // if has cost_once @@ -118,13 +116,6 @@ public function update(Request $request, Host $host): JsonResponse return $this->updated(); } - if ($request->has('cost_balance')) { - $host->costBalance($request->cost_balance ?? 0); - - return $this->updated(); - } - - $update = $request->except(['module_id', 'user_id']); $host->update($update); diff --git a/app/Http/Controllers/Modules/UserController.php b/app/Http/Controllers/Modules/UserController.php index 3528830..dcfa311 100644 --- a/app/Http/Controllers/Modules/UserController.php +++ b/app/Http/Controllers/Modules/UserController.php @@ -49,9 +49,6 @@ public function show(User $user) { $transaction = new Transaction(); - $user['drops'] = $transaction->getDrops($user['id']); - $user['drops_rate'] = config('drops.rate'); - return $this->success($user); } diff --git a/app/Http/Controllers/Web/BalanceController.php b/app/Http/Controllers/Web/BalanceController.php index da94a15..2facdd9 100644 --- a/app/Http/Controllers/Web/BalanceController.php +++ b/app/Http/Controllers/Web/BalanceController.php @@ -18,18 +18,11 @@ class BalanceController extends Controller public function index(Request $request): View { - - $transaction = new Transaction(); - - $drops = $transaction->getDrops(); - $balance = $request->user()->balance; $balances = Balance::thisUser()->latest()->paginate(100); - $drops_rate = config('drops.rate'); - - return view('balances.index', compact('drops', 'balance', 'balances', 'drops_rate')); + return view('balances.index', compact('balance', 'balances')); } public function store(Request $request) diff --git a/app/Http/Controllers/Web/TransferController.php b/app/Http/Controllers/Web/TransferController.php index 7230781..c50a550 100644 --- a/app/Http/Controllers/Web/TransferController.php +++ b/app/Http/Controllers/Web/TransferController.php @@ -15,9 +15,8 @@ public function index(Request $request) { $user = $request->user(); $balance = $user->balance; - $drops = (new Transaction())->getDrops($user->id); - return view('transfer.search', compact('balance', 'drops')); + return view('transfer.search', compact('balance')); } public function transfer(Request $request) @@ -25,10 +24,8 @@ public function transfer(Request $request) $request->validate([ 'amount' => 'numeric|min:1|max:100', 'description' => 'nullable|string|max:100', - 'type' => 'string|in:balance,drops' ]); - $to = User::where('email', $request->to)->first(); if (!$to) { return back()->withErrors(['to' => '找不到用户。']); @@ -41,25 +38,12 @@ public function transfer(Request $request) $transaction = new Transaction(); - if ($request->type === 'balance') { - if ($user->balance < $request->amount) { - return back()->withErrors(['amount' => '您的余额不足。']); - } else { - $transaction->transfer($user, $to, $request->amount, $request->description); - } - } else if ($request->type === 'drops') { - $transaction = new Transaction(); - $drops = $transaction->getDrops($user->id); - if ($drops < $request->amount) { - return back()->withErrors(['amount' => '您的 Drops 不足。']); - } else { - if (!$transaction->transferDrops($user, $to, $request->amount, $request->description)) { - return back()->withErrors(['amount' => '转账失败。']); - } - } + if ($user->balance < $request->amount) { + return back()->withErrors(['amount' => '您的余额不足。']); + } else { + $transaction->transfer($user, $to, $request->amount, $request->description); } - return back()->with('success', '转账成功,已达对方账户。'); diff --git a/app/Jobs/HostCost.php b/app/Jobs/HostCost.php index d3d5522..9e779af 100644 --- a/app/Jobs/HostCost.php +++ b/app/Jobs/HostCost.php @@ -13,16 +13,17 @@ class HostCost implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels, Lock; - public $cache_key, $cache, $user; + public $hour, $cache, $user; /** * Create a new job instance. * * @return void */ - public function __construct() + public function __construct($hour) { // + $this->hour = $hour; } /** @@ -32,10 +33,8 @@ public function __construct() */ public function handle() { - // $this->cache = new Cache(); - // chunk hosts and load user - Host::whereIn('status', ['running', 'stopped'])->with('user')->chunk(1000, function ($hosts) { + Host::where('hour', $this->hour)->whereIn('status', ['running', 'stopped'])->with('user')->chunk(1000, function ($hosts) { foreach ($hosts as $host) { $host->cost(); } diff --git a/app/Models/Host.php b/app/Models/Host.php index ad6e9a7..8c1bf33 100644 --- a/app/Models/Host.php +++ b/app/Models/Host.php @@ -3,7 +3,6 @@ namespace App\Models; use App\Events\UserEvent; -use App\Exceptions\User\BalanceNotEnoughException; use App\Models\WorkOrder\WorkOrder; use GeneaLabs\LaravelModelCaching\Traits\Cachable; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -11,7 +10,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo as BelongsToAlias; use Illuminate\Database\Eloquent\Relations\HasMany as HasManyAlias; use Illuminate\Support\Facades\Cache; -use Illuminate\Support\Facades\Log; // use Illuminate\Database\Eloquent\SoftDeletes; @@ -140,87 +138,87 @@ public function safeDelete(): bool return true; } - public function cost($price = null, $auto = true): bool + // public function cost($price = null, $auto = true): bool + // { + // $this->load('user'); + // + // $transaction = new Transaction(); + // + // $drops = $transaction->getDrops($this->user_id); + // + // $real_price = $price ?? $this->price; + // + // if (!$price) { + // + // if ($this->managed_price) { + // $real_price = $this->managed_price; + // } + // } + // + // if ($real_price == 0) { + // return true; + // } + // + // $real_price = round($real_price ?? 0, 8); + // + // $amount = $price / config('drops.rate') + 1; + // + // // if drops <= price + // if ($drops < $real_price) { + // try { + // // 算出需要补充多少 Drops + // $need = $real_price - $drops; + // + // // 算出需要补充多少余额 + // $need_amount = $need / config('drops.rate') + 1; + // + // $this->user->toDrops($amount + $need_amount); + // } catch (BalanceNotEnoughException) { + // $this->update([ + // 'status' => 'suspended', + // ]); + // + // return false; + // } + // } else if ($this->status == 'suspended') { + // $this->update([ + // 'status' => 'stopped', + // ]); + // } + // + // $month = now()->month; + // + // $month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_drops'; + // $hosts_drops = Cache::get($month_cache_key, []); + // + // // 统计 Host 消耗的 Drops + // if (isset($hosts_drops[$this->id])) { + // $hosts_drops[$this->id] += $real_price; + // } else { + // $hosts_drops[$this->id] = $real_price; + // } + // + // Cache::put($month_cache_key, $hosts_drops, 604800); + // + // $transaction->reduceDrops($this->user_id, $this->id, $this->module_id, $auto, $real_price); + // + // $this->addLog('drops', $real_price); + // + // broadcast(new UserEvent($this->user_id, 'balances.drops.reduced', $this->user)); + // + // // 检测用户余额是否足够 + // if ($this->user->balance < 0) { + // $this->update([ + // 'status' => 'suspended', + // ]); + // } + // + // return true; + // } + + public function addLog($type = 'drops', float|null $amount = 0): bool { - $this->load('user'); - - $transaction = new Transaction(); - - $drops = $transaction->getDrops($this->user_id); - - $real_price = $price ?? $this->price; - - if (!$price) { - - if ($this->managed_price) { - $real_price = $this->managed_price; - } - } - - if ($real_price == 0) { - return true; - } - - $real_price = round($real_price ?? 0, 8); - - $amount = $price / config('drops.rate') + 1; - - // if drops <= price - if ($drops < $real_price) { - try { - // 算出需要补充多少 Drops - $need = $real_price - $drops; - - // 算出需要补充多少余额 - $need_amount = $need / config('drops.rate') + 1; - - $this->user->toDrops($amount + $need_amount); - } catch (BalanceNotEnoughException) { - $this->update([ - 'status' => 'suspended', - ]); - - return false; - } - } else if ($this->status == 'suspended') { - $this->update([ - 'status' => 'stopped', - ]); - } - - $month = now()->month; - - $month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_drops'; - $hosts_drops = Cache::get($month_cache_key, []); - - // 统计 Host 消耗的 Drops - if (isset($hosts_drops[$this->id])) { - $hosts_drops[$this->id] += $real_price; - } else { - $hosts_drops[$this->id] = $real_price; - } - - Cache::put($month_cache_key, $hosts_drops, 604800); - - $transaction->reduceDrops($this->user_id, $this->id, $this->module_id, $auto, $real_price); - - $this->addLog('drops', $real_price); - - broadcast(new UserEvent($this->user_id, 'balances.drops.reduced', $this->user)); - - // 检测用户余额是否足够 - if ($this->user->balance < 0) { - $this->update([ - 'status' => 'suspended', - ]); - } - - return true; - } - - public function addLog($type = 'drops', float $amount = 0): bool - { - if ($amount == 0) { + if ($amount === 0 || $amount === null) { return false; } @@ -230,24 +228,7 @@ public function addLog($type = 'drops', float $amount = 0): bool $cache_key = 'module_earning_' . $this->module_id; - - $rate = (int)config('drops.rate'); - $commission = (float)config('drops.commission'); - - - if ($type == 'drops') { - // 换成 余额 - - $amount = $amount / $rate; - } - - // $amount = round($amount, 2); - // Log::debug('addLog', [ - // 'amount' => $amount, - // 'rate' => $rate, - // 'commission' => $commission, - // ]); - + $commission = (float)config('billing.commission'); $should_amount = round($amount * $commission, 2); @@ -260,24 +241,15 @@ public function addLog($type = 'drops', float $amount = 0): bool $earnings[$current_year] = []; } - if ($type == 'drops') { - $drops = $amount; - } else { - $drops = 0; - } - - if (isset($earnings[$current_year][$current_month])) { $earnings[$current_year][$current_month]['balance'] += $amount; $earnings[$current_year][$current_month]['should_balance'] += $should_balance; - $earnings[$current_year][$current_month]['drops'] += $drops; } else { $earnings[$current_year][$current_month] = [ 'balance' => $amount, // 应得(交了手续费) 'should_balance' => $should_balance, - 'drops' => $drops ]; } @@ -295,8 +267,29 @@ public function addLog($type = 'drops', float $amount = 0): bool return true; } - public function costBalance($amount = 1): bool + public function cost($amount = null, $auto = true): bool { + + $this->load('user'); + + $real_price = $amount ?? $this->price; + + if (!$amount) { + if ($this->managed_price) { + $real_price = $this->managed_price; + } + } + + if ($real_price == 0) { + return true; + } + + $real_price = round($real_price ?? 0, 2); + + if ($real_price < 0.01) { + return true; + } + $transaction = new Transaction(); $month = now()->month; @@ -304,19 +297,24 @@ public function costBalance($amount = 1): bool $month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_balances'; $hosts_drops = Cache::get($month_cache_key, []); - // 统计 Host 消耗的 Drops + // 统计 Host 消耗的 Balance if (isset($hosts_drops[$this->id])) { - $hosts_drops[$this->id] += $amount; + $hosts_drops[$this->id] += $real_price; } else { - $hosts_drops[$this->id] = $amount; + $hosts_drops[$this->id] = $real_price; } Cache::put($month_cache_key, $hosts_drops, 604800); - $left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $amount); + $description = '模块发起的扣费。'; - $this->addLog('balance', $amount); + if ($auto) { + $description = '自动扣费。'; + } + $left = $transaction->reduceHostAmount($this->user_id, $this->id, $this->module_id, $real_price, $description); + + $this->addLog('balance', $real_price); broadcast(new UserEvent($this->user_id, 'balances.amount.reduced', $this->user)); diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index abe60ab..6abab4a 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -38,27 +38,16 @@ class Transaction extends Model // 入账 'income', - // 入账 Drops - 'income_drops', - // 出账 'outcome', - // 出账 Drops - 'outcome_drops', // 可用余额 'balances', 'balance', - // 可用 Drops - 'drops', - // 赠送金额 'gift', - // 赠送 Drops - 'gift_drops', - 'user_id', 'host_id', 'module_id', @@ -71,51 +60,12 @@ public function scopeThisUser($query) return $query->where('user_id', auth()->id()); } - public function increaseCurrentUserDrops($amount = 0) - { - return $this->increaseDrops(auth()->id(), $amount); - } - - public function increaseDrops($user_id, $amount, $description = null, $payment = null) - { - $cache_key = 'user_drops_' . $user_id; - - $current_drops = Cache::get($cache_key, [ - 'drops' => 0, - ]); - - $current_drops['drops'] += $amount; - - Cache::forever($cache_key, $current_drops); - - $this->addIncomeDrops($user_id, $amount, $description, $payment); - - return $current_drops['drops']; - } - - public function addIncomeDrops($user_id, $amount, $description, $payment = 'balance') - { - $data = [ - 'type' => 'income', - 'payment' => $payment, - 'description' => $description, - 'income' => 0, - 'income_drops' => (float)$amount, - 'outcome' => 0, - 'outcome_drops' => 0, - ]; - - return $this->addLog($user_id, $data); - } - private function addLog($user_id, $data) { $user = User::find($user_id); - $current = [ 'balance' => (float)$user->balance, - 'drops' => $this->getDrops($user_id), 'user_id' => intval($user_id), ]; @@ -128,73 +78,6 @@ private function addLog($user_id, $data) return $this->create($data); } - public function getDrops($user_id = null): float - { - // - if (!$user_id) { - $user_id = auth()->id(); - } - - $cache_key = 'user_drops_' . $user_id; - - $drops = Cache::get($cache_key, [ - 'drops' => 0, - ]); - - // 保留 8 位 - $drops['drops'] = round($drops['drops'], 8); - - return $drops['drops']; - } - - public function reduceDrops($user_id, $host_id, $module_id, $auto = 1, $amount = 0) - { - - $cache_key = 'user_drops_' . $user_id; - - $current_drops = Cache::get($cache_key, [ - 'drops' => 0, - ]); - - $current_drops['drops'] = $current_drops['drops'] - $amount; - - $current_drops['drops'] = round($current_drops['drops'], 5); - - Cache::forever($cache_key, $current_drops); - - if (!$auto) { - $description = '集成模块发起的扣费。'; - $this->addPayoutDrops($user_id, $amount, $description, $host_id, $module_id); - } - - } - - public function addPayoutDrops($user_id, $amount, $description, $host_id, $module_id) - { - $data = [ - 'type' => 'payout', - 'payment' => 'drops', - 'description' => $description, - 'income' => 0, - 'income_drops' => 0, - 'outcome' => 0, - 'outcome_drops' => (float)$amount, - 'host_id' => $host_id, - 'module_id' => $module_id, - ]; - - - // $amount = (double) $amount; - - // Log::debug($amount); - - // $month = now()->month; - - // Cache::increment('user_' . $user_id . '_month_' . $month . '_drops', $amount); - - return $this->addLog($user_id, $data); - } - public function reduceAmount($user_id, $amount = 0, $description = '扣除费用请求。') { @@ -223,9 +106,7 @@ public function addPayoutBalance($user_id, $amount, $description, $module_id = n 'payment' => 'balance', 'description' => $description, 'income' => 0, - 'income_drops' => 0, 'outcome' => (float)$amount, - 'outcome_drops' => 0 ]; if ($module_id) { @@ -290,9 +171,7 @@ public function addHostPayoutBalance($user_id, $host_id, $module_id, $amount, $d 'payment' => 'balance', 'description' => $description, 'income' => 0, - 'income_drops' => 0, 'outcome' => (float)$amount, - 'outcome_drops' => 0, 'host_id' => $host_id, 'module_id' => $module_id, ]; @@ -351,9 +230,7 @@ public function addIncomeBalance($user_id, $payment, $amount, $description) 'payment' => $payment, 'description' => $description, 'income' => (float)$amount, - 'income_drops' => 0, 'outcome' => 0, - 'outcome_drops' => 0, ]; return $this->addLog($user_id, $data); @@ -393,43 +270,4 @@ public function transfer(User $user, User $to, float $amount, string|null $descr return $user->balance; } - public function transferDrops(User $user, User $to, float $amount, string|null $description = null): bool - { - - $user_drops = $this->getDrops($user->id); - - // if drops not enough - if ($user_drops < $amount) { - return false; - } - - $description_new = "转账给 {$to->name}($to->email) {$amount} Drops, $description"; - - $this->reduceDropsWithoutHost($user->id, $amount, $description_new); - - $description_new = "收到来自 {$to->name}($to->email) 转来的 {$amount} Drops, $description"; - - - $this->increaseDrops($to->id, $amount, $description_new, 'transfer'); - - return true; - } - - public function reduceDropsWithoutHost($user_id, $amount = 0, $description = null) - { - - $cache_key = 'user_drops_' . $user_id; - - $current_drops = Cache::get($cache_key, [ - 'drops' => 0, - ]); - - $current_drops['drops'] = $current_drops['drops'] - $amount; - - $current_drops['drops'] = round($current_drops['drops'], 5); - - Cache::forever($cache_key, $current_drops); - - $this->addPayoutDrops($user_id, $amount, $description, null, null); - } } diff --git a/config/drops.php b/config/billing.php similarity index 69% rename from config/drops.php rename to config/billing.php index 4d66f8d..ee53989 100644 --- a/config/drops.php +++ b/config/billing.php @@ -1,7 +1,7 @@ 1000, + 'drops_rate' => 1000, // 提成 'commission' => 0.1, ]; diff --git a/resources/views/admin/hosts/edit.blade.php b/resources/views/admin/hosts/edit.blade.php index 22ff9e6..d8ca867 100644 --- a/resources/views/admin/hosts/edit.blade.php +++ b/resources/views/admin/hosts/edit.blade.php @@ -17,7 +17,7 @@ {{-- --}}
余额: {{ $user->balance }} 元, {{ $drops }} Drops
+余额: {{ $user->balance }} 元
注册时间: {{ $user->created_at }}
@@ -27,13 +27,11 @@您的余额: {{ $balance }} 元
-Drops: {{ $drops }}
将您的余额转入到其他莱云账号,并且无需对方确认。
-您有: {{ $balance }} 元,以及 {{ $drops }} Drops
+您有: {{ $balance }} 元。