调整地区
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 : 清理模型缓存
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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');;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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('您没有管理的区域无法查看');
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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 => '积分兑换',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -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%")
|
||||||
|
|||||||
@@ -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 [
|
||||||
|
|||||||
@@ -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
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user