From 70fd7e70be86bbe4ab928ed58b2d5a5f66da1084 Mon Sep 17 00:00:00 2001 From: xuanchen <122383162@qq.com> Date: Sun, 29 Jan 2023 09:48:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=9C=B0=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Area/IndexController.php | 50 +++-- app/Admin/Controllers/HomeController.php | 187 ++++-------------- app/Admin/Routes/area.php | 1 + app/Api/Controllers/Area/IndexController.php | 20 +- app/Api/Controllers/Data/IndexController.php | 2 - app/Models/Area.php | 6 + .../Admin/StockOrderController.php | 2 +- modules/Mall/Models/Order.php | 2 +- .../Controllers/Admin/IndexController.php | 2 +- .../User/Http/Resources/UserInfoResource.php | 2 +- modules/User/Models/User.php | 22 ++- 11 files changed, 108 insertions(+), 188 deletions(-) diff --git a/app/Admin/Controllers/Area/IndexController.php b/app/Admin/Controllers/Area/IndexController.php index 164776c..87cf59d 100644 --- a/app/Admin/Controllers/Area/IndexController.php +++ b/app/Admin/Controllers/Area/IndexController.php @@ -11,7 +11,10 @@ use Encore\Admin\Controllers\AdminController; use Encore\Admin\Form; use Encore\Admin\Grid; use Exception; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Modules\Mall\Models\Region; +use Modules\User\Models\User; class IndexController extends AdminController { @@ -54,17 +57,17 @@ class IndexController extends AdminController $grid->column('mobile', '联系方式'); $grid->column('stock', '库存') ->modal('变动记录', AreaStockAble::class); -// $grid->column('user.username', '管理员') -// ->display(function () { -// return $this->user->username."({$this->user->info->nickname})"; -// }); + $grid->column('user.username', '管理员') + ->display(function () { + return $this->user->username."({$this->user->info->nickname})"; + }); $grid->column('all_address', '地址') ->display(function () { return $this->getFullAddress(); }); - $grid->column('clerks', '操作员') - ->belongsToMany(ClerksSelectAble::class); +// $grid->column('clerks', '操作员') +// ->belongsToMany(ClerksSelectAble::class); $grid->column('created_at', '创建时间'); @@ -87,18 +90,18 @@ class IndexController extends AdminController $form->text('title', '地区名称')->required(); $form->text('mobile', '联系方式')->required(); -// $form->select('user_id', '管理员') -// ->options(function ($userId) { -// $user = User::find($userId); -// if ($user) { -// return [$user->id => $user->username.' ['.$user->info->nickname.']']; -// } -// }) -// ->value(request()->user_id ?? '') -// ->ajax(route('admin.user.users.ajax')) -// ->required(); + $form->select('user_id', '管理员') + ->options(function ($userId) { + $user = User::find($userId); + if ($user) { + return [$user->id => $user->username.' ['.$user->info->nickname.']']; + } + }) + ->value(request()->user_id ?? '') + ->ajax(route('admin.areas.users')) + ->required(); - $form->belongsToMany('clerks', ClerksSelectAble::class, '关联操作员'); +// $form->belongsToMany('clerks', ClerksSelectAble::class, '关联操作员'); if ($form->isCreating()) { $form->number('stock', '库存(份)')->default(100)->help('1份2箱'); @@ -129,4 +132,17 @@ class IndexController extends AdminController ->default(1); return $form; } + + public function users(Request $request) + { + $q = $request->get('q'); + + return User::query() + ->whereDoesntHave('area') + ->leftJoin('user_infos as info', 'users.id', '=', 'info.user_id') + ->where('username', 'like', "%$q%") + ->orWhere('info.nickname', 'like', "%$q%") + ->select('id', DB::raw('CONCAT(username, " [", info.nickname, "]") as text')) + ->paginate(); + } } diff --git a/app/Admin/Controllers/HomeController.php b/app/Admin/Controllers/HomeController.php index f61d503..109b273 100644 --- a/app/Admin/Controllers/HomeController.php +++ b/app/Admin/Controllers/HomeController.php @@ -36,8 +36,7 @@ class HomeController extends Controller if ($admin->id == 1) { $this->getUserData(); $this->getAreaData(); -// $this->getUserStockData(); -// $this->getUserStockOrderData(); + $this->getScoreData(); } else { $this->content->row($this->setDivider('您没有权限查看数据')); } @@ -81,57 +80,6 @@ class HomeController extends Controller return $this->content; } - /** - * Notes: 用户水数量 - * - * @Author: 玄尘 - * @Date: 2022/9/1 13:35 - * @return mixed - */ - public function getUserStockData() - { - $this->content->row($this->setDivider('会员水库存数')); - - $all = UserStock::query()->sum('stock'); - $holds = UserStock::query()->sum('hold'); - $sy = bcsub($all, $holds); - - $users = [ - 'all' => [ - 'name' => '总数', - 'color' => 'blue', - 'count' => UserStock::query()->sum('stock') - ], - 'stock' => [ - 'name' => '已提货数', - 'color' => 'green', - 'count' => UserStock::query()->sum('hold') - ], - 'sy' => [ - 'name' => '待提货数', - 'color' => 'green', - 'count' => $sy - ], - ]; - - $this->content->row(function (Row $row) use ($users) { - foreach ($users as $user) { - $row->column(2, function (Column $column) use ($user) { - $column->append(new InfoBox( - $user['name'], - 'goods', - $user['color'], - '/admin/stocks', - $user['count'], - )); - - }); - } - }); - - return $this->content; - } - /** * Notes: 区域数据 * @@ -199,119 +147,63 @@ class HomeController extends Controller return $this->content; } - public function getUserFreeData() - { - $this->content->row($this->setDivider('会员水库存数')); - - $all = UserStock::query()->sum('stock'); - $holds = UserStock::query()->sum('hold'); - $sy = bcsub($all, $holds); - - $users = [ - 'all' => [ - 'name' => '总数', - 'color' => 'blue', - 'count' => UserStock::query()->sum('stock') - ], - 'stock' => [ - 'name' => '已提货数', - 'color' => 'green', - 'count' => UserStock::query()->sum('hold') - ], - 'sy' => [ - 'name' => '待提货数', - 'color' => 'green', - 'count' => $sy - ], - ]; - - $this->content->row(function (Row $row) use ($users) { - foreach ($users as $user) { - $row->column(2, function (Column $column) use ($user) { - $column->append(new InfoBox( - $user['name'], - 'goods', - $user['color'], - '/admin/stocks', - $user['count'], - )); - - }); - } - }); - - return $this->content; - } - /** - * Notes: 提货订单数量 + * Notes: 积分兑换信息 * * @Author: 玄尘 - * @Date: 2022/9/1 13:51 + * @Date: 2023/1/29 8:50 + * @return mixed */ - public function getUserStockOrderData() + public function getScoreData() { - $this->content->row($this->setDivider('会员提货订单')); - - - $deliver = OrderItem::query() - ->whereHas('order', function ($q) { - $q->paid(); - })->sum('qty'); - - $deliverd = OrderItem::query() - ->whereHas('order', function ($q) { - $q->whereIn('state', [ - Order::STATUS_SIGNED, - Order::STATUS_DELIVERED, - ]); - })->sum('qty'); - - $users = [ - 'all' => [ - 'name' => '订单总数', + $this->content->row($this->setDivider('积分兑换订单')); + $lists = [ + 'all' => [ + 'name' => '兑换总数', 'color' => 'blue', - 'count' => Order::query()->where('type', Order::TYPE_SAMPLE)->count() + 'link' => '', + 'count' => Order::where('type', Order::TYPE_SCORE)->whereIn('state', [ + Order::STATUS_INIT, + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + ])->count() ], - 'deliver' => [ + 'init' => [ + 'name' => '待支付', + 'color' => 'green', + 'link' => '', + 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_INIT)->count() + ], + 'paid' => [ 'name' => '待发货', 'color' => 'green', - 'count' => Order::query() - ->where('type', Order::TYPE_SAMPLE) - ->paid() - ->count() + 'link' => '', + 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_PAID)->count() ], - 'deliverd' => [ - 'name' => '已发货', + 'delivered' => [ + 'name' => '待签收', 'color' => 'green', - 'count' => Order::query() - ->where('type', Order::TYPE_SAMPLE) - ->whereIn('state', [ - Order::STATUS_DELIVERED, - ]) - ->count(), + 'link' => '', + 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_DELIVERED)->count() ], - 'signed' => [ + 'sign' => [ 'name' => '已签收', 'color' => 'green', - 'count' => Order::query() - ->where('type', Order::TYPE_SAMPLE) - ->whereIn('state', [ - Order::STATUS_SIGNED, - ]) - ->count() + 'link' => '', + 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_SIGNED)->count() ], ]; - $this->content->row(function (Row $row) use ($users) { - foreach ($users as $user) { - $row->column(2, function (Column $column) use ($user) { + $this->content->row(function (Row $row) use ($lists) { + foreach ($lists as $list) { + $row->column(2, function (Column $column) use ($list) { $column->append(new InfoBox( - $user['name'], + $list['name'], 'goods', - $user['color'], - '/admin/stocks', - $user['count'], + $list['color'], + $list['link'], + $list['count'], )); }); @@ -321,6 +213,7 @@ class HomeController extends Controller return $this->content; } + /** * Notes : 清理模型缓存 * diff --git a/app/Admin/Routes/area.php b/app/Admin/Routes/area.php index e2e6b2e..7c7ca50 100644 --- a/app/Admin/Routes/area.php +++ b/app/Admin/Routes/area.php @@ -7,4 +7,5 @@ Route::group([ ], function (Router $router) { $router->resource('areas', 'IndexController'); $router->resource('areas_codes', 'CodeController'); + $router->get('areas_users', 'IndexController@users')->name('areas.users');; }); diff --git a/app/Api/Controllers/Area/IndexController.php b/app/Api/Controllers/Area/IndexController.php index a0cc5bd..3c87047 100644 --- a/app/Api/Controllers/Area/IndexController.php +++ b/app/Api/Controllers/Area/IndexController.php @@ -6,7 +6,6 @@ use App\Api\Controllers\Controller; use App\Api\Resources\Area\AreaCodeCollection; use App\Api\Resources\Area\AreaResource; use App\Models\Area; -use App\Models\AreaCode; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Jason\Api\Api; @@ -24,9 +23,10 @@ class IndexController extends Controller { $user = Api::user(); $areas = Area::query() - ->whereHas('areaClerks', function ($q) { - $q->where('user_id', Api::userId()); - }) + ->Manager(Api::userId()) +// ->whereHas('areaClerks', function ($q) { +// $q->where('user_id', Api::userId()); +// }) ->get(); return $this->success(AreaResource::collection($areas)); @@ -42,9 +42,7 @@ class IndexController extends Controller public function show() { $area = Area::query() - ->whereHas('areaClerks', function ($q) { - $q->where('user_id', Api::userId()); - }) + ->Manager(Api::userId()) ->first(); if (! $area) { @@ -80,9 +78,7 @@ class IndexController extends Controller $status = $request->status ?? ''; $area = Area::query() - ->whereHas('areaClerks', function ($q) { - $q->where('user_id', Api::userId()); - }) + ->Manager(Api::userId()) ->first(); if (! $area) { return $this->failed('您没有管理的区域无法查看'); @@ -109,9 +105,7 @@ class IndexController extends Controller public function generate(Request $request) { $area = Area::query() - ->whereHas('areaClerks', function ($q) { - $q->where('user_id', Api::userId()); - }) + ->Manager(Api::userId()) ->first(); if (! $area) { return $this->failed('您没有管理的区域无法查看'); diff --git a/app/Api/Controllers/Data/IndexController.php b/app/Api/Controllers/Data/IndexController.php index fe64c31..10aaea1 100644 --- a/app/Api/Controllers/Data/IndexController.php +++ b/app/Api/Controllers/Data/IndexController.php @@ -5,9 +5,7 @@ namespace App\Api\Controllers\Data; use App\Api\Controllers\Controller; use App\Api\Resources\Order\OrderDataCollection; use App\Api\Resources\User\UserDataCollection; -use App\Api\Resources\User\UserDataResource; use Illuminate\Http\Request; -use Modules\Coupon\Http\Resources\User\UserBaseResource; use Modules\Mall\Models\Order; use Modules\User\Models\User; diff --git a/app/Models/Area.php b/app/Models/Area.php index 4f8938b..1b8647a 100644 --- a/app/Models/Area.php +++ b/app/Models/Area.php @@ -3,6 +3,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Str; @@ -147,4 +148,9 @@ class Area extends Model return $exception->getMessage(); } } + + public function scopeManager(Builder $query, $userid): Builder + { + return $query->where('user_id', $userid); + } } diff --git a/modules/Mall/Http/Controllers/Admin/StockOrderController.php b/modules/Mall/Http/Controllers/Admin/StockOrderController.php index d56dc03..227e887 100644 --- a/modules/Mall/Http/Controllers/Admin/StockOrderController.php +++ b/modules/Mall/Http/Controllers/Admin/StockOrderController.php @@ -21,7 +21,7 @@ use Modules\Mall\Facades\Order as OrderFacade; class StockOrderController extends AdminController { - protected $title = '免费领取订单'; + protected $title = '提货订单'; protected function grid(): Grid { diff --git a/modules/Mall/Models/Order.php b/modules/Mall/Models/Order.php index 2853c46..50cd893 100644 --- a/modules/Mall/Models/Order.php +++ b/modules/Mall/Models/Order.php @@ -99,7 +99,7 @@ class Order extends Model const TYPE_MAP = [ self::TYPE_NORMAL => '正常', - self::TYPE_SAMPLE => '免费领取', + self::TYPE_SAMPLE => '提货', self::TYPE_SCORE => '积分兑换', ]; diff --git a/modules/User/Http/Controllers/Admin/IndexController.php b/modules/User/Http/Controllers/Admin/IndexController.php index 4c164b4..b54905b 100644 --- a/modules/User/Http/Controllers/Admin/IndexController.php +++ b/modules/User/Http/Controllers/Admin/IndexController.php @@ -168,7 +168,7 @@ class IndexController extends AdminController public function ajax(Request $request) { $q = $request->get('q'); - + dd(1); return User::leftJoin('user_infos as info', 'users.id', '=', 'info.user_id') ->where('username', 'like', "%$q%") ->orWhere('info.nickname', 'like', "%$q%") diff --git a/modules/User/Http/Resources/UserInfoResource.php b/modules/User/Http/Resources/UserInfoResource.php index 7d03f3c..8c4233d 100644 --- a/modules/User/Http/Resources/UserInfoResource.php +++ b/modules/User/Http/Resources/UserInfoResource.php @@ -43,7 +43,7 @@ class UserInfoResource extends JsonResource 'orders' => $this->getOrderCount(), ], 'can' => [ - 'area' => $this->areas()->exists(), + 'area' => $this->area()->exists(), ], 'identityShow' => $this->when(true, function () use ($identity) { return [ diff --git a/modules/User/Models/User.php b/modules/User/Models/User.php index d4cc385..43841bc 100644 --- a/modules/User/Models/User.php +++ b/modules/User/Models/User.php @@ -317,12 +317,24 @@ class User extends Authenticate * @Date: 2023/1/28 9:32 * @return BelongsToMany */ - public function areas(): BelongsToMany +// public function areas(): BelongsToMany +// { +// return $this->belongsToMany( +// Area::class, +// (new AreaClerk())->getTable())->using(AreaClerk::class +// ); +// } + + /** + * Notes: 管理的区域 + * + * @Author: 玄尘 + * @Date: 2023/1/29 9:37 + * @return HasOne + */ + public function area(): HasOne { - return $this->belongsToMany( - Area::class, - (new AreaClerk())->getTable())->using(AreaClerk::class - ); + return $this->hasOne(Area::class); }