6
0
Fork 0

api 店铺商品

release
panliang 2022-05-16 14:32:02 +08:00
parent 713100d0ef
commit b00238f320
7 changed files with 75 additions and 54 deletions

View File

@ -2,9 +2,8 @@
namespace App\Admin\Controllers;
use App\Admin\Repositories\Tag;
use App\Exceptions\BizException;
use App\Models\Tag as TagModel;
use App\Models\Tag;
use App\Models\Taggable;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
@ -24,11 +23,7 @@ class TagController extends AdminController
{
return Grid::make(new Tag(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('type')->using([
TagModel::TYPE_ORDER =>'订单',
TagModel::TYPE_PACKAGE=>'货运',
TagModel::TYPE_AFTER_SALE=>'售后',
])->label();
$grid->column('type')->using(Tag::$typeMaps)->label();
$grid->column('name');
$grid->column('created_at')->sortable();
@ -52,11 +47,7 @@ class TagController extends AdminController
$grid->setResource('tags');
$grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('type')->select([
TagModel::TYPE_ORDER =>'订单',
TagModel::TYPE_PACKAGE =>'货运',
TagModel::TYPE_AFTER_SALE =>'售后',
])->width(3);
$filter->equal('type')->select(Tag::$typeMaps)->width(3);
});
});
}
@ -87,11 +78,7 @@ class TagController extends AdminController
protected function form()
{
return Form::make(new Tag(), function (Form $form) {
$types = [
TagModel::TYPE_ORDER =>'订单',
TagModel::TYPE_PACKAGE=>'货运',
TagModel::TYPE_AFTER_SALE =>'售后',
];
$types = Tag::$typeMaps;
$type = Request::Input('type', 0);
if ($types[$type]) {
$types = [

View File

@ -1,16 +0,0 @@
<?php
namespace App\Admin\Repositories;
use App\Models\Tag as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class Tag extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

View File

@ -4,7 +4,8 @@ namespace App\Endpoint\Api\Http\Controllers\Order;
use App\Endpoint\Api\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\{OrderPre, ProductSku, Store};
use App\Models\{OrderPre, ProductSku};
use App\Models\Store\Store;
use App\Services\OrderService;
use Illuminate\Support\Facades\DB;
use App\Exceptions\BizException;
@ -40,8 +41,19 @@ class OrderPreController extends Controller
$sku_id = $item['sku_id'];
// 验证商品是否属于该店铺
if (!$store->productSkus()->wherePivot('product_sku_id', $sku_id)->exists()) {
throw new BizException('商品未在该店铺出售, ' . $sku_id);
$store_product = $store->productSkus()->wherePivot('product_sku_id', $sku_id)->first();
if (!$store_product) {
throw new BizException('店铺未出售商品: ' . $store_product->name);
}
// 验证商品是否可销售
if (!$store_product->pivot->status) {
throw new BizException('店铺已下架商品: ' . $store_product->name);
}
// 验证商品库存(店铺库存)
if ($store_product->pivot->amount < $quantity) {
throw new BizException('店铺商品: ' . $store_product->name . ' 库存不足');
}
// 验证商品的购买数量 大于 发货数量

View File

@ -3,11 +3,10 @@
namespace App\Endpoint\Api\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Store;
use App\Endpoint\Api\Http\Resources\StoreResource;
use App\Endpoint\Api\Http\Resources\ProductSkuTinyResource;
use App\Models\Store\Store;
use App\Models\ProductSku;
use App\Helpers\Paginator;
use App\Endpoint\Api\Http\Resources\{StoreResource, StoreProductResource};
class StoreController extends Controller
{
@ -40,10 +39,15 @@ class StoreController extends Controller
$input['sort'] = '-id';
}
$fields = ['id', 'name', 'cover', 'sell_price', 'vip_price', 'market_price'];
$fields = ['product_skus.id', 'product_skus.name', 'product_skus.cover', 'product_skus.sell_price', 'product_skus.vip_price', 'product_skus.market_price', 'store_product_skus.amount'];
$skus = $store->productSkus()->select($fields)->filter($input)->online()->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
$skus = $store->productSkus()
->select($fields)
->filter($input)
->online()
->wherePivot('status', 1)
->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return ProductSkuTinyResource::collection($skus);
return StoreProductResource::collection($skus);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Endpoint\Api\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class StoreProductResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'cover' => (string) $this->cover,
'sell_price' => (string) $this->sell_price_format,
'vip_price' => (string) $this->vip_price_format,
'market_price' => (string) $this->market_price_format,
'amount' => (int) $this->pivot->amount
];
}
}

View File

@ -18,6 +18,13 @@ class Tag extends Model
protected $fillable = ['type', 'name'];
public static $typeMaps = [
self::TYPE_ORDER => '订单',
self::TYPE_PACKAGE => '货运',
self::TYPE_AFTER_SALE => '售后',
self::TYPE_STORE_STOCK => '店铺库存',
];
// /**
// * 标签下的订单
// *

View File

@ -243,13 +243,18 @@ class AdminMenuSeeder extends Seeder
'icon' => '',
'uri' => 'aftersale-tags?type=3',
],
[
'title' => '售后打款',
'icon' => '',
'uri' =>'finance-after-sales?state=5',
],
],
],
[
'title' => '财务管理',
'icon' => 'fa fa-jpy',
'uri'=> '',
'children'=>[
// [
// 'title' => '财务管理',
// 'icon' => 'fa fa-jpy',
// 'uri'=> '',
// 'children'=>[
// [
// 'title' => '可提账户',
// 'icon'=>'',
@ -270,13 +275,13 @@ class AdminMenuSeeder extends Seeder
// 'icon' => '',
// 'uri' =>'wallet-to-bank-logs',
// ],
[
'title' => '售后打款',
'icon' => '',
'uri' =>'finance-after-sales?state=5',
],
],
],
// [
// 'title' => '售后打款',
// 'icon' => '',
// 'uri' =>'finance-after-sales?state=5',
// ],
// ],
// ],
[
'title' => '系统管理',
'icon' => 'feather icon-settings',
@ -307,6 +312,7 @@ class AdminMenuSeeder extends Seeder
'icon' => '',
'uri' => 'settings',
],
['title' => '标签管理', 'icon' => '', 'uri' => 'tags']
],
],
];