From 3fd16aa4d15eb13142bf953cea76793af6eb94bd Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Mon, 27 Dec 2021 16:43:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=91=E7=9A=84=E8=B4=A6?= =?UTF-8?q?=E6=88=B7=E7=9B=B8=E5=85=B3=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Services/OrderService.php | 1 + .../Controllers/Account/WalletController.php | 69 +++++++++++++++++++ .../DistributionPreIncomeLogResource.php | 24 +++++++ .../DistributionPreIncomeResource.php | 24 +++++++ .../Api/Http/Resources/WalletLogResource.php | 23 +++++++ app/Endpoint/Api/routes.php | 6 ++ app/Models/DistributionPreIncome.php | 9 +++ app/Models/User.php | 8 +++ app/Models/Wallet.php | 9 +++ app/Models/WalletLog.php | 10 +++ 10 files changed, 183 insertions(+) create mode 100644 app/Endpoint/Api/Http/Controllers/Account/WalletController.php create mode 100644 app/Endpoint/Api/Http/Resources/DistributionPreIncomeLogResource.php create mode 100644 app/Endpoint/Api/Http/Resources/DistributionPreIncomeResource.php create mode 100644 app/Endpoint/Api/Http/Resources/WalletLogResource.php diff --git a/app/Admin/Services/OrderService.php b/app/Admin/Services/OrderService.php index da51818d..451c34f2 100644 --- a/app/Admin/Services/OrderService.php +++ b/app/Admin/Services/OrderService.php @@ -45,6 +45,7 @@ class OrderService $orderService->paySuccess($order, [ 'pay_sn' => date('YmdHis').sprintf('%02d', mt_rand(1, 99)), 'pay_way' => Order::PAY_WAY_OFFLINE, + 'out_trade_no' => date('YmdHis').sprintf('%02d', mt_rand(1, 99)), 'pay_at' => now(), ]); diff --git a/app/Endpoint/Api/Http/Controllers/Account/WalletController.php b/app/Endpoint/Api/Http/Controllers/Account/WalletController.php new file mode 100644 index 00000000..e84a34f9 --- /dev/null +++ b/app/Endpoint/Api/Http/Controllers/Account/WalletController.php @@ -0,0 +1,69 @@ +json([ + 'distribution_pre' => $request->user()->distributionPreIncomes()->pending()->sum('total_revenue'), + 'wallet_balance'=> $request->user()->wallet?->balance ?? 0, + ]); + } + + /** + * 预收益明细 + * + * @param Request $request + * @return void + */ + public function distributionLogs(Request $request) + { + $perPage = PaginatorHelper::resolvePerPage('per_page', 20, 50); + $distributionLogs = $request->user()->distributionPreIncomes() + ->with('logs') + ->pending() + ->latest('id') + ->simplePaginate($perPage); + + return DistributionPreIncomeResource::collection($distributionLogs); + } + + /** + * 可提明细 + * + * @param Request $request + * @return void + */ + public function walletLogs(Request $request) + { + $perPage = PaginatorHelper::resolvePerPage('per_page', 20, 50); + $walletLogs = $request->user()->wallet()->logs() + ->latest('id') + ->simplePaginate($perPage); + + return WalletLogResource::collection($walletLogs); + } + + /** + * 余额明细 + * + * @return void + */ + public function balanceLogs(Request $request) + { + } +} diff --git a/app/Endpoint/Api/Http/Resources/DistributionPreIncomeLogResource.php b/app/Endpoint/Api/Http/Resources/DistributionPreIncomeLogResource.php new file mode 100644 index 00000000..bae219ee --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/DistributionPreIncomeLogResource.php @@ -0,0 +1,24 @@ + $this->remarks, + 'change_amount' => $this->change_amount, + 'change_revenue'=> $this->change_revenue, + 'created_at' => $this->created_at->toDateTimeString(), + ]; + } +} diff --git a/app/Endpoint/Api/Http/Resources/DistributionPreIncomeResource.php b/app/Endpoint/Api/Http/Resources/DistributionPreIncomeResource.php new file mode 100644 index 00000000..f225b2d1 --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/DistributionPreIncomeResource.php @@ -0,0 +1,24 @@ + $this->remarks, + 'logs' => DistributionPreIncomeLogResource::collection($this->whenLoaded('logs')), + 'created_at'=> $this->created_at->toDateTimeString(), + 'total_revenue' => $this->total_revenue, + ]; + } +} diff --git a/app/Endpoint/Api/Http/Resources/WalletLogResource.php b/app/Endpoint/Api/Http/Resources/WalletLogResource.php new file mode 100644 index 00000000..f05340c4 --- /dev/null +++ b/app/Endpoint/Api/Http/Resources/WalletLogResource.php @@ -0,0 +1,23 @@ + $this->remarks, + 'created_at' => $this->created_at->toDateTimeString(), + 'fee' => $this->fee_format, + ]; + } +} diff --git a/app/Endpoint/Api/routes.php b/app/Endpoint/Api/routes.php index eccd4561..888960e9 100644 --- a/app/Endpoint/Api/routes.php +++ b/app/Endpoint/Api/routes.php @@ -2,6 +2,7 @@ use App\Endpoint\Api\Http\Controllers\Account\ChangePasswordController; use App\Endpoint\Api\Http\Controllers\Account\UserController; +use App\Endpoint\Api\Http\Controllers\Account\WalletController; use App\Endpoint\Api\Http\Controllers\Account\WalletPasswordController; use App\Endpoint\Api\Http\Controllers\AdController; use App\Endpoint\Api\Http\Controllers\AfterSaleController; @@ -86,6 +87,11 @@ Route::group([ //安全密码 Route::post('wallet-password/reset', [WalletPasswordController::class, 'reset']);//重置或设置安全密码 + //我的账户 + Route::get('wallet', [WalletController::class, 'index']); + Route::get('wallet/distribution-logs', [WalletController::class, 'distributionLogs']); + Route::get('wallet/wallet-logs', [WalletController::class, 'walletLogs']); + //银行卡 Route::get('user-bank', [UserBankController::class, 'show']); Route::put('user-bank', [UserBankController::class, 'update']); diff --git a/app/Models/DistributionPreIncome.php b/app/Models/DistributionPreIncome.php index 0cbc5823..ff8c961e 100644 --- a/app/Models/DistributionPreIncome.php +++ b/app/Models/DistributionPreIncome.php @@ -42,6 +42,15 @@ class DistributionPreIncome extends Model self::TYPE_LEVEL_DIFF => '级差奖金', ]; + /** + * 待结算预收益 + * + */ + public function scopePending($query) + { + return $query->where('status', '=', 0); + } + /** * 此预收益的变更记录 */ diff --git a/app/Models/User.php b/app/Models/User.php index 712fb473..cdf69e88 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -188,6 +188,14 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac return $this->hasOne(Wallet::class, 'user_id'); } + /** + * 用户的预收益 + */ + public function distributionPreIncomes() + { + return $this->hasMany(DistributionPreIncome::class, 'user_id'); + } + /** * 禁用用户 * diff --git a/app/Models/Wallet.php b/app/Models/Wallet.php index fda2f692..e0dda954 100644 --- a/app/Models/Wallet.php +++ b/app/Models/Wallet.php @@ -42,6 +42,15 @@ class Wallet extends Model 'withdrawable' => 'bool', ]; + /** + * 资产日志 + * + */ + public function logs() + { + return $this->hasMany(WalletLog::class, 'wallet_id'); + } + /** * 设置此用户的安全密码 * diff --git a/app/Models/WalletLog.php b/app/Models/WalletLog.php index a41b7b1c..f515e87f 100644 --- a/app/Models/WalletLog.php +++ b/app/Models/WalletLog.php @@ -2,8 +2,18 @@ namespace App\Models; +use App\Helpers\Numeric; use Illuminate\Database\Eloquent\Model; class WalletLog extends Model { + /** + * 获取变动金额 + * + * @return string + */ + public function getFeeFormatAttribute() + { + return Numeric::trimTrailingZero(bcdiv($this->attributes['fee'], 100, 2)); + } }