增加 Drops
This commit is contained in:
parent
75b5803285
commit
a86dd0f956
64
app/Http/Controllers/Admin/Product/ProductController.php
Normal file
64
app/Http/Controllers/Admin/Product/ProductController.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Product;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ProductController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy($id)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
84
app/Http/Controllers/Admin/User/DropController.php
Normal file
84
app/Http/Controllers/Admin/User/DropController.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\User;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User\Drop;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DropController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Drop $drop)
|
||||
{
|
||||
$drop = $drop->simplePaginate(10);
|
||||
return $this->success($drop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
$request->validate([
|
||||
'amount' => 'integer|required|min:1|max:1000',
|
||||
]);
|
||||
|
||||
$data = [
|
||||
'payment' => 'admin',
|
||||
'amount' => $request->amount,
|
||||
'status' => 1,
|
||||
'user_id' => $request->route('user'),
|
||||
'type' => 'add',
|
||||
];
|
||||
|
||||
$drop = Drop::create($data);
|
||||
|
||||
return $this->success($drop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Drop $drop)
|
||||
{
|
||||
//
|
||||
$this->authorize('show', $drop);
|
||||
|
||||
return $drop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, Drop $drop)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy(Drop $drop)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
77
app/Http/Controllers/User/DropController.php
Normal file
77
app/Http/Controllers/User/DropController.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\User;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User\Drop;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class DropController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function index(Drop $drop)
|
||||
{
|
||||
$drop = $drop->simplePaginate(10);
|
||||
return $this->success($drop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
$request->validate([
|
||||
'payment' => 'required',
|
||||
'amount' => 'integer|required|min:1|max:1000',
|
||||
]);
|
||||
|
||||
$drop = Drop::create($request->all());
|
||||
|
||||
return $this->success($drop);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function show(Drop $drop)
|
||||
{
|
||||
//
|
||||
$this->authorize('show', $drop);
|
||||
|
||||
return $drop;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, Drop $drop)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param \App\Models\User\Drop $drop
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function destroy(Drop $drop)
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
50
app/Models/User/Drop.php
Normal file
50
app/Models/User/Drop.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\User;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Helpers\Lock;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
|
||||
class Drop extends Model
|
||||
{
|
||||
use HasFactory, Lock;
|
||||
|
||||
protected $fillable = [
|
||||
'payment', 'amount', 'user_id', 'type'
|
||||
];
|
||||
|
||||
// user
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
// before create
|
||||
public static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
self::creating(function ($drops) {
|
||||
// if not admin auth guard
|
||||
if (!auth()->guard('admin')->check()) {
|
||||
$drops->user_id = auth()->id();
|
||||
}
|
||||
|
||||
|
||||
$rate = Cache::get('drops_rate', 100);
|
||||
$drops->total = $drops->amount * $rate;
|
||||
});
|
||||
|
||||
// created
|
||||
self::created(function ($drops) {
|
||||
$drop = new self();
|
||||
$drop->await('user_drops_' . $drops->user_id, function () use ($drops) {
|
||||
$drops->user->drops += $drops->total;
|
||||
$drops->user->save();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
11
app/Models/User/Transcation.php
Normal file
11
app/Models/User/Transcation.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\User;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Transcation extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
}
|
31
app/Policies/User/Drop.php
Normal file
31
app/Policies/User/Drop.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Policies\User;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
|
||||
class Drop
|
||||
{
|
||||
use HandlesAuthorization;
|
||||
|
||||
/**
|
||||
* Create a new policy instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
// show
|
||||
public function show(User $user, Drop $drop)
|
||||
{
|
||||
// if not admin guard and not the same user
|
||||
if (!$user->isAdmin() && $user->is($drop)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
50
database/migrations/2022_08_12_081236_create_drops_table.php
Normal file
50
database/migrations/2022_08_12_081236_create_drops_table.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('drops', function (Blueprint $table) {
|
||||
$table->id();
|
||||
|
||||
// payment
|
||||
$table->string('payment')->index();
|
||||
|
||||
// amount
|
||||
$table->decimal('amount', 8, 2)->default(0);
|
||||
|
||||
// 汇率
|
||||
$table->integer('rate')->default(1);
|
||||
|
||||
// 实际收入
|
||||
$table->decimal('total', 8, 2)->default(1);
|
||||
|
||||
$table->boolean('status')->default(0)->index();
|
||||
|
||||
|
||||
$table->foreignIdFor(User::class)->index();
|
||||
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('drops');
|
||||
}
|
||||
};
|
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
use App\Models\User\Drop;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('transcations', function (Blueprint $table) {
|
||||
$table->id();
|
||||
|
||||
// remote transaction id
|
||||
$table->string('remote_id')->index();
|
||||
|
||||
// drops id
|
||||
$table->foreignIdFor(Drop::class)->index();
|
||||
|
||||
// payment
|
||||
$table->string('payment')->index();
|
||||
|
||||
// amount
|
||||
$table->decimal('amount', 8, 2)->default(0);
|
||||
|
||||
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('transcations');
|
||||
}
|
||||
};
|
@ -13,9 +13,9 @@
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('products', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
Schema::table('drops', function (Blueprint $table) {
|
||||
//
|
||||
$table->string('type')->index()->after('status');
|
||||
});
|
||||
}
|
||||
|
||||
@ -26,6 +26,8 @@ public function up()
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('products');
|
||||
Schema::table('drops', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
};
|
@ -7,6 +7,10 @@
|
||||
Route::apiResource('admins', Admin\Admin\AdminController::class);
|
||||
|
||||
Route::apiResource('users', Admin\User\UserController::class);
|
||||
Route::apiResource('users.drops', Admin\User\DropController::class);
|
||||
|
||||
Route::apiResource('drops', Admin\User\DropController::class);
|
||||
|
||||
|
||||
|
||||
// Route::resource('users.fields', v1\User\FieldsController::class)->only(['index']);
|
||||
|
@ -1,15 +1,13 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Admin;
|
||||
use App\Http\Controllers;
|
||||
use App\Http\Controllers\Admin\User\DropController;
|
||||
use App\Models\Admin\Admin;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::name('client.')->middleware(['api'])->group(function () {
|
||||
Route::apiResource('users', Admin\User\UserController::class);
|
||||
// Route::resource('users.fields', v1\User\FieldsController::class)->only(['index']);
|
||||
// Route::apiResource('users', Controllers\User\UserController::class);
|
||||
|
||||
// sub routes for clients
|
||||
Route::apiResource('clients', Admin\Client\ClientController::class);
|
||||
Route::apiResource('drops', DropController::class);
|
||||
|
||||
// clients.balance
|
||||
Route::apiResource('clients.balances', Admin\Client\BalanceController::class);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user