feat: #20220803 商品接口调整
This commit is contained in:
parent
2d59a6f9da
commit
ada42eaae6
@ -3,6 +3,7 @@
|
|||||||
namespace App\Http\Controllers\Goods;
|
namespace App\Http\Controllers\Goods;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Resources\GoodsResource;
|
||||||
use App\Http\Resources\GoodsSkuResource;
|
use App\Http\Resources\GoodsSkuResource;
|
||||||
use App\Models\Log as LogModel;
|
use App\Models\Log as LogModel;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@ -25,39 +26,35 @@ class GoodsController extends Controller
|
|||||||
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$goods = Goods::query()->filter()->get()->toArray();
|
$goods = Goods::query()->get(['id', 'title', 'img_url', 'type_id', 'brand_id', 'goods_code']);
|
||||||
$goodsIds = array_column($goods, 'id');
|
|
||||||
// 状态变更时间查询,日志
|
|
||||||
$day = date('Y-m-d'); //早上7点之前是昨天,7点之后是今天
|
|
||||||
$goodsSkus = GoodsSku::query()
|
|
||||||
->whereIn('goods_id', $goodsIds)
|
|
||||||
->filter()
|
|
||||||
->with(['goods' => function ($query) {
|
|
||||||
$query->with(['type:id,name', 'brand:id,name']);
|
|
||||||
}])
|
|
||||||
->with(['daily' => function ($query) use ($day){
|
|
||||||
$query->where('day', $day)->with(['daily:id,sku_id,day,arrived_today_num,loss_num,inventory']);
|
|
||||||
}])
|
|
||||||
->paginate();
|
|
||||||
|
|
||||||
return GoodsSkuResource::collection($goodsSkus);
|
return GoodsResource::collection($goods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$validator = Validator::make($request->all(), [
|
$goodsRules = [
|
||||||
'title' => ['required', 'string', 'max:255'],
|
'title' => ['required', 'string', 'max:255'],
|
||||||
'img_url' => ['required', 'string', 'max:255'],
|
'img_url' => ['required', 'string', 'max:255'],
|
||||||
'type_id' => ['required', 'integer', 'exists:goods_types,id'],
|
'type_id' => ['required', 'integer', 'exists:goods_types,id'],
|
||||||
'brand_id' => ['integer', 'exists:goods_brands,id'],
|
'brand_id' => ['integer', 'exists:goods_brands,id'],
|
||||||
'goods_code' => ['required', 'alpha_dash', 'max:32', 'unique:goods,goods_code'],
|
'goods_code' => ['required', 'alpha_dash', 'max:32', 'unique:goods,goods_code'],
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($useGoods = !empty($request->goods_id)) {
|
||||||
|
$goodsRules = [
|
||||||
|
'goods_id' => ['required', 'integer', 'exists:goods,id'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$skuRules = [
|
||||||
'skus' => ['required', 'array'],
|
'skus' => ['required', 'array'],
|
||||||
'skus.*.title' => ['required', 'string', 'max:255'],
|
'skus.*.title' => ['required', 'string', 'max:255'],
|
||||||
'skus.*.sku_code' => ['required', 'distinct', 'alpha_dash', 'max:32'],
|
'skus.*.sku_code' => ['required', 'distinct', 'alpha_dash', 'max:32'],
|
||||||
'skus.*.status' => ['required', 'integer', Rule::in([0, 1, 2])],
|
'skus.*.status' => ['required', 'integer', Rule::in([0, 1, 2])],
|
||||||
'skus.*.num' => ['required', 'integer', 'max:10'],
|
'skus.*.num' => ['required', 'integer'],
|
||||||
'skus.*.cost' => ['required', 'numeric', 'max:10'],
|
'skus.*.cost' => ['required', 'numeric'],
|
||||||
]);
|
];
|
||||||
|
$validator = Validator::make($request->all(), array_merge($goodsRules, $skuRules));
|
||||||
if ($validator->fails()) {
|
if ($validator->fails()) {
|
||||||
$this->setValidatorFailResponse($validator->getMessageBag()->getMessages());
|
$this->setValidatorFailResponse($validator->getMessageBag()->getMessages());
|
||||||
|
|
||||||
@ -65,6 +62,9 @@ class GoodsController extends Controller
|
|||||||
}
|
}
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
try {
|
try {
|
||||||
|
if ($useGoods) {
|
||||||
|
$goods = Goods::query()->find($request->goods_id);
|
||||||
|
} else {
|
||||||
$goods = new Goods();
|
$goods = new Goods();
|
||||||
$goods->title = $request->title;
|
$goods->title = $request->title;
|
||||||
$goods->img_url = $request->img_url;
|
$goods->img_url = $request->img_url;
|
||||||
@ -72,6 +72,7 @@ class GoodsController extends Controller
|
|||||||
$goods->brand_id = $request->brand_id;
|
$goods->brand_id = $request->brand_id;
|
||||||
$goods->goods_code = $request->goods_code;
|
$goods->goods_code = $request->goods_code;
|
||||||
$goods->save();
|
$goods->save();
|
||||||
|
}
|
||||||
$goodsSkus = [];
|
$goodsSkus = [];
|
||||||
foreach ($request->skus as $item) {
|
foreach ($request->skus as $item) {
|
||||||
$item['goods_id'] = $goods->id;
|
$item['goods_id'] = $goods->id;
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
namespace App\Http\Controllers\Goods;
|
namespace App\Http\Controllers\Goods;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Goods;
|
||||||
use App\Models\Log as LogModel;
|
use App\Models\Log as LogModel;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\GoodsSku;
|
use App\Models\GoodsSku;
|
||||||
@ -27,7 +28,22 @@ class GoodsSkusController extends Controller
|
|||||||
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
return new GoodsSkuResource(GoodsSku::query()->get(['id', 'title']));
|
$goods = Goods::query()->filter()->get()->toArray();
|
||||||
|
$goodsIds = array_column($goods, 'id');
|
||||||
|
// 状态变更时间查询,日志
|
||||||
|
$day = date('Y-m-d'); //早上7点之前是昨天,7点之后是今天
|
||||||
|
$goodsSkus = GoodsSku::query()
|
||||||
|
->whereIn('goods_id', $goodsIds)
|
||||||
|
->filter()
|
||||||
|
->with(['goods' => function ($query) {
|
||||||
|
$query->with(['type:id,name', 'brand:id,name']);
|
||||||
|
}])
|
||||||
|
->with(['daily' => function ($query) use ($day){
|
||||||
|
$query->where('day', $day)->with(['daily:id,sku_id,day,arrived_today_num,loss_num,inventory']);
|
||||||
|
}])
|
||||||
|
->paginate();
|
||||||
|
|
||||||
|
return GoodsSkuResource::collection($goodsSkus);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show($id)
|
public function show($id)
|
||||||
@ -55,11 +71,16 @@ class GoodsSkusController extends Controller
|
|||||||
public function batchUpdate(Request $request)
|
public function batchUpdate(Request $request)
|
||||||
{
|
{
|
||||||
$appendRules = [
|
$appendRules = [
|
||||||
'*.id' => [
|
'skus' => ['required', 'array'],
|
||||||
|
'skus.*.id' => [
|
||||||
'required',
|
'required',
|
||||||
Rule::exists('goods_skus', 'id'),
|
Rule::exists('goods_skus', 'id'),
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
$data = $request->all();
|
||||||
|
$this->validateUpdate($data, $appendRules);
|
||||||
|
GoodsSku::whereIn('id', array_column($data, 'id'))
|
||||||
|
->update($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateField($id, Request $request)
|
public function updateField($id, Request $request)
|
||||||
@ -138,12 +159,8 @@ class GoodsSkusController extends Controller
|
|||||||
Rule::in([0, 1, 2])
|
Rule::in([0, 1, 2])
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
// $validator = Validator::make($data, array_merge($rules, $appendRules))->validate();
|
||||||
$validator = Validator::make($data, array_merge($rules, $appendRules));
|
$validator = Validator::make($data, array_merge($rules, $appendRules));
|
||||||
if ($validator->fails()) {
|
|
||||||
$this->setValidatorFailResponse($validator->getMessageBag()->getMessages());
|
|
||||||
|
|
||||||
return response($this->res, $this->res['httpCode']);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
|
|||||||
@ -4,6 +4,7 @@ use App\Http\Controllers\Auth\LoginController;
|
|||||||
use App\Http\Controllers\Role\RolesController;
|
use App\Http\Controllers\Role\RolesController;
|
||||||
use App\Http\Controllers\UploadController;
|
use App\Http\Controllers\UploadController;
|
||||||
use App\Http\Controllers\Shop\ShopsController;
|
use App\Http\Controllers\Shop\ShopsController;
|
||||||
|
use App\Http\Controllers\Goods\GoodsSkusController;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@ -28,6 +29,7 @@ Route::middleware('auth:api')->group(function () {
|
|||||||
Route::resource('goods', 'Goods\GoodsController', ['only' => ['index', 'store']]);
|
Route::resource('goods', 'Goods\GoodsController', ['only' => ['index', 'store']]);
|
||||||
// 商品规格
|
// 商品规格
|
||||||
Route::resource('goods_skus', 'Goods\GoodsSkusController', ['only' => ['index', 'show', 'update', 'store']]);
|
Route::resource('goods_skus', 'Goods\GoodsSkusController', ['only' => ['index', 'show', 'update', 'store']]);
|
||||||
|
Route::patch('batch/goods_skus', [GoodsSkusController::class, 'batchUpdate'])->name('goods_sku.batch_update');
|
||||||
// 店铺
|
// 店铺
|
||||||
Route::resource('shops', 'Shop\ShopsController', ['only' => ['index', 'store', 'show', 'update', 'destroy']]);
|
Route::resource('shops', 'Shop\ShopsController', ['only' => ['index', 'store', 'show', 'update', 'destroy']]);
|
||||||
Route::get('shop_platforms', [ShopsController::class, 'getPlatList'])->name('plat.list');
|
Route::get('shop_platforms', [ShopsController::class, 'getPlatList'])->name('plat.list');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user