6
0
Fork 0

添加我的账户相关记录接口

release
vine_liutk 2021-12-27 16:43:52 +08:00
parent 0a7460e983
commit 3fd16aa4d1
10 changed files with 183 additions and 0 deletions

View File

@ -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(),
]);

View File

@ -0,0 +1,69 @@
<?php
namespace App\Endpoint\Api\Http\Controllers\Account;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\DistributionPreIncomeResource;
use App\Endpoint\Api\Http\Resources\WalletLogResource;
use App\Helpers\Paginator as PaginatorHelper;
use Illuminate\Http\Request;
class WalletController extends Controller
{
/**
* 账户明细
*
* @param Request $request
* @return void
*/
public function index(Request $request)
{
return response()->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)
{
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class DistributionPreIncomeLogResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'remarks' => $this->remarks,
'change_amount' => $this->change_amount,
'change_revenue'=> $this->change_revenue,
'created_at' => $this->created_at->toDateTimeString(),
];
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class DistributionPreIncomeResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'remarks' => $this->remarks,
'logs' => DistributionPreIncomeLogResource::collection($this->whenLoaded('logs')),
'created_at'=> $this->created_at->toDateTimeString(),
'total_revenue' => $this->total_revenue,
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class WalletLogResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'remarks' => $this->remarks,
'created_at' => $this->created_at->toDateTimeString(),
'fee' => $this->fee_format,
];
}
}

View File

@ -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']);

View File

@ -42,6 +42,15 @@ class DistributionPreIncome extends Model
self::TYPE_LEVEL_DIFF => '级差奖金',
];
/**
* 待结算预收益
*
*/
public function scopePending($query)
{
return $query->where('status', '=', 0);
}
/**
* 此预收益的变更记录
*/

View File

@ -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');
}
/**
* 禁用用户
*

View File

@ -42,6 +42,15 @@ class Wallet extends Model
'withdrawable' => 'bool',
];
/**
* 资产日志
*
*/
public function logs()
{
return $this->hasMany(WalletLog::class, 'wallet_id');
}
/**
* 设置此用户的安全密码
*

View File

@ -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));
}
}