调整地区

This commit is contained in:
2023-01-29 09:48:54 +08:00
parent e17e9dc5ad
commit 70fd7e70be
11 changed files with 108 additions and 188 deletions

View File

@@ -11,7 +11,10 @@ use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form; use Encore\Admin\Form;
use Encore\Admin\Grid; use Encore\Admin\Grid;
use Exception; use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Modules\Mall\Models\Region; use Modules\Mall\Models\Region;
use Modules\User\Models\User;
class IndexController extends AdminController class IndexController extends AdminController
{ {
@@ -54,17 +57,17 @@ class IndexController extends AdminController
$grid->column('mobile', '联系方式'); $grid->column('mobile', '联系方式');
$grid->column('stock', '库存') $grid->column('stock', '库存')
->modal('变动记录', AreaStockAble::class); ->modal('变动记录', AreaStockAble::class);
// $grid->column('user.username', '管理员') $grid->column('user.username', '管理员')
// ->display(function () { ->display(function () {
// return $this->user->username."({$this->user->info->nickname})"; return $this->user->username."({$this->user->info->nickname})";
// }); });
$grid->column('all_address', '地址') $grid->column('all_address', '地址')
->display(function () { ->display(function () {
return $this->getFullAddress(); return $this->getFullAddress();
}); });
$grid->column('clerks', '操作员') // $grid->column('clerks', '操作员')
->belongsToMany(ClerksSelectAble::class); // ->belongsToMany(ClerksSelectAble::class);
$grid->column('created_at', '创建时间'); $grid->column('created_at', '创建时间');
@@ -87,18 +90,18 @@ class IndexController extends AdminController
$form->text('title', '地区名称')->required(); $form->text('title', '地区名称')->required();
$form->text('mobile', '联系方式')->required(); $form->text('mobile', '联系方式')->required();
// $form->select('user_id', '管理员') $form->select('user_id', '管理员')
// ->options(function ($userId) { ->options(function ($userId) {
// $user = User::find($userId); $user = User::find($userId);
// if ($user) { if ($user) {
// return [$user->id => $user->username.' ['.$user->info->nickname.']']; return [$user->id => $user->username.' ['.$user->info->nickname.']'];
// } }
// }) })
// ->value(request()->user_id ?? '') ->value(request()->user_id ?? '')
// ->ajax(route('admin.user.users.ajax')) ->ajax(route('admin.areas.users'))
// ->required(); ->required();
$form->belongsToMany('clerks', ClerksSelectAble::class, '关联操作员'); // $form->belongsToMany('clerks', ClerksSelectAble::class, '关联操作员');
if ($form->isCreating()) { if ($form->isCreating()) {
$form->number('stock', '库存(份)')->default(100)->help('1份2箱'); $form->number('stock', '库存(份)')->default(100)->help('1份2箱');
@@ -129,4 +132,17 @@ class IndexController extends AdminController
->default(1); ->default(1);
return $form; 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();
}
} }

View File

@@ -36,8 +36,7 @@ class HomeController extends Controller
if ($admin->id == 1) { if ($admin->id == 1) {
$this->getUserData(); $this->getUserData();
$this->getAreaData(); $this->getAreaData();
// $this->getUserStockData(); $this->getScoreData();
// $this->getUserStockOrderData();
} else { } else {
$this->content->row($this->setDivider('您没有权限查看数据')); $this->content->row($this->setDivider('您没有权限查看数据'));
} }
@@ -81,57 +80,6 @@ class HomeController extends Controller
return $this->content; 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: 区域数据 * Notes: 区域数据
* *
@@ -199,119 +147,63 @@ class HomeController extends Controller
return $this->content; 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: 玄尘 * @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('会员提货订单')); $this->content->row($this->setDivider('积分兑换订单'));
$lists = [
$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' => [ 'all' => [
'name' => '订单总数', 'name' => '兑换总数',
'color' => 'blue', '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' => '待发货', 'name' => '待发货',
'color' => 'green', 'color' => 'green',
'count' => Order::query() 'link' => '',
->where('type', Order::TYPE_SAMPLE) 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_PAID)->count()
->paid()
->count()
], ],
'deliverd' => [ 'delivered' => [
'name' => '已发货', 'name' => '待签收',
'color' => 'green', 'color' => 'green',
'count' => Order::query() 'link' => '',
->where('type', Order::TYPE_SAMPLE) 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_DELIVERED)->count()
->whereIn('state', [
Order::STATUS_DELIVERED,
])
->count(),
], ],
'signed' => [ 'sign' => [
'name' => '已签收', 'name' => '已签收',
'color' => 'green', 'color' => 'green',
'count' => Order::query() 'link' => '',
->where('type', Order::TYPE_SAMPLE) 'count' => Order::where('type', Order::TYPE_SCORE)->where('state', Order::STATUS_SIGNED)->count()
->whereIn('state', [
Order::STATUS_SIGNED,
])
->count()
], ],
]; ];
$this->content->row(function (Row $row) use ($users) { $this->content->row(function (Row $row) use ($lists) {
foreach ($users as $user) { foreach ($lists as $list) {
$row->column(2, function (Column $column) use ($user) { $row->column(2, function (Column $column) use ($list) {
$column->append(new InfoBox( $column->append(new InfoBox(
$user['name'], $list['name'],
'goods', 'goods',
$user['color'], $list['color'],
'/admin/stocks', $list['link'],
$user['count'], $list['count'],
)); ));
}); });
@@ -321,6 +213,7 @@ class HomeController extends Controller
return $this->content; return $this->content;
} }
/** /**
* Notes : 清理模型缓存 * Notes : 清理模型缓存
* *

View File

@@ -7,4 +7,5 @@ Route::group([
], function (Router $router) { ], function (Router $router) {
$router->resource('areas', 'IndexController'); $router->resource('areas', 'IndexController');
$router->resource('areas_codes', 'CodeController'); $router->resource('areas_codes', 'CodeController');
$router->get('areas_users', 'IndexController@users')->name('areas.users');;
}); });

View File

@@ -6,7 +6,6 @@ use App\Api\Controllers\Controller;
use App\Api\Resources\Area\AreaCodeCollection; use App\Api\Resources\Area\AreaCodeCollection;
use App\Api\Resources\Area\AreaResource; use App\Api\Resources\Area\AreaResource;
use App\Models\Area; use App\Models\Area;
use App\Models\AreaCode;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Jason\Api\Api; use Jason\Api\Api;
@@ -24,9 +23,10 @@ class IndexController extends Controller
{ {
$user = Api::user(); $user = Api::user();
$areas = Area::query() $areas = Area::query()
->whereHas('areaClerks', function ($q) { ->Manager(Api::userId())
$q->where('user_id', Api::userId()); // ->whereHas('areaClerks', function ($q) {
}) // $q->where('user_id', Api::userId());
// })
->get(); ->get();
return $this->success(AreaResource::collection($areas)); return $this->success(AreaResource::collection($areas));
@@ -42,9 +42,7 @@ class IndexController extends Controller
public function show() public function show()
{ {
$area = Area::query() $area = Area::query()
->whereHas('areaClerks', function ($q) { ->Manager(Api::userId())
$q->where('user_id', Api::userId());
})
->first(); ->first();
if (! $area) { if (! $area) {
@@ -80,9 +78,7 @@ class IndexController extends Controller
$status = $request->status ?? ''; $status = $request->status ?? '';
$area = Area::query() $area = Area::query()
->whereHas('areaClerks', function ($q) { ->Manager(Api::userId())
$q->where('user_id', Api::userId());
})
->first(); ->first();
if (! $area) { if (! $area) {
return $this->failed('您没有管理的区域无法查看'); return $this->failed('您没有管理的区域无法查看');
@@ -109,9 +105,7 @@ class IndexController extends Controller
public function generate(Request $request) public function generate(Request $request)
{ {
$area = Area::query() $area = Area::query()
->whereHas('areaClerks', function ($q) { ->Manager(Api::userId())
$q->where('user_id', Api::userId());
})
->first(); ->first();
if (! $area) { if (! $area) {
return $this->failed('您没有管理的区域无法查看'); return $this->failed('您没有管理的区域无法查看');

View File

@@ -5,9 +5,7 @@ namespace App\Api\Controllers\Data;
use App\Api\Controllers\Controller; use App\Api\Controllers\Controller;
use App\Api\Resources\Order\OrderDataCollection; use App\Api\Resources\Order\OrderDataCollection;
use App\Api\Resources\User\UserDataCollection; use App\Api\Resources\User\UserDataCollection;
use App\Api\Resources\User\UserDataResource;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Modules\Coupon\Http\Resources\User\UserBaseResource;
use Modules\Mall\Models\Order; use Modules\Mall\Models\Order;
use Modules\User\Models\User; use Modules\User\Models\User;

View File

@@ -3,6 +3,7 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@@ -147,4 +148,9 @@ class Area extends Model
return $exception->getMessage(); return $exception->getMessage();
} }
} }
public function scopeManager(Builder $query, $userid): Builder
{
return $query->where('user_id', $userid);
}
} }

View File

@@ -21,7 +21,7 @@ use Modules\Mall\Facades\Order as OrderFacade;
class StockOrderController extends AdminController class StockOrderController extends AdminController
{ {
protected $title = '免费领取订单'; protected $title = '提货订单';
protected function grid(): Grid protected function grid(): Grid
{ {

View File

@@ -99,7 +99,7 @@ class Order extends Model
const TYPE_MAP = [ const TYPE_MAP = [
self::TYPE_NORMAL => '正常', self::TYPE_NORMAL => '正常',
self::TYPE_SAMPLE => '免费领取', self::TYPE_SAMPLE => '提货',
self::TYPE_SCORE => '积分兑换', self::TYPE_SCORE => '积分兑换',
]; ];

View File

@@ -168,7 +168,7 @@ class IndexController extends AdminController
public function ajax(Request $request) public function ajax(Request $request)
{ {
$q = $request->get('q'); $q = $request->get('q');
dd(1);
return User::leftJoin('user_infos as info', 'users.id', '=', 'info.user_id') return User::leftJoin('user_infos as info', 'users.id', '=', 'info.user_id')
->where('username', 'like', "%$q%") ->where('username', 'like', "%$q%")
->orWhere('info.nickname', 'like', "%$q%") ->orWhere('info.nickname', 'like', "%$q%")

View File

@@ -43,7 +43,7 @@ class UserInfoResource extends JsonResource
'orders' => $this->getOrderCount(), 'orders' => $this->getOrderCount(),
], ],
'can' => [ 'can' => [
'area' => $this->areas()->exists(), 'area' => $this->area()->exists(),
], ],
'identityShow' => $this->when(true, function () use ($identity) { 'identityShow' => $this->when(true, function () use ($identity) {
return [ return [

View File

@@ -317,12 +317,24 @@ class User extends Authenticate
* @Date: 2023/1/28 9:32 * @Date: 2023/1/28 9:32
* @return BelongsToMany * @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( return $this->hasOne(Area::class);
Area::class,
(new AreaClerk())->getTable())->using(AreaClerk::class
);
} }