Browse Source

复制商品功能

master
liangyuyan 5 years ago
parent
commit
fbcd46d63b
  1. 32
      app/Admin/Actions/Grid/GoodsCopy.php
  2. 39
      app/Admin/Controllers/v3/GoodsController.php
  3. 19
      app/Admin/Controllers/v3/StoreController.php
  4. 61
      app/Admin/Forms/GoodsCopyForm.php

32
app/Admin/Actions/Grid/GoodsCopy.php

@ -0,0 +1,32 @@
<?php
namespace App\Admin\Actions\Grid;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Models\v3\Store as StoreModel;
use Dcat\Admin\Form;
use App\Models\v3\Goods as GoodsModel;
use App\Admin\Forms\GoodsCopyForm;
class GoodsCopy extends RowAction
{
/**
* @return string
*/
protected $title = '复制';
public function render()
{
$id = $this->getKey();
$modal = Modal::make()
->xl()
->title($this->title)
->body(GoodsCopyForm::make()->setKey($id))
->button($this->title);
return $modal;
}
}

39
app/Admin/Controllers/v3/GoodsController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers\v3; namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\GoodsCopy;
use App\Admin\Repositories\v3\Goods; use App\Admin\Repositories\v3\Goods;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
@ -12,6 +13,8 @@ use App\Models\v3\Store as StoreModel;
use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Form\NestedForm;
use App\Models\v3\Goods as GoodsModel; use App\Models\v3\Goods as GoodsModel;
use App\Models\v3\Market as MarketModel; use App\Models\v3\Market as MarketModel;
use Dcat\Admin\Grid\Displayers\Actions;
use Dcat\Admin\Layout\Content;
class GoodsController extends AdminController class GoodsController extends AdminController
{ {
@ -40,8 +43,9 @@ class GoodsController extends AdminController
$grid->sort->sortable(); $grid->sort->sortable();
$grid->on_sale->switch(); $grid->on_sale->switch();
$grid->actions([new GoodsCopy()]);
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
$filter->like('name');
}); });
$grid->model()->orderBy('id', 'desc'); $grid->model()->orderBy('id', 'desc');
@ -138,12 +142,14 @@ class GoodsController extends AdminController
// 店铺 // 店铺
$storeList = StoreModel::getStoreArray(); $storeList = StoreModel::getStoreArray();
//市场 //市场
$marketList = MarketModel::getMarket();
// $marketList = MarketModel::getMarketArray();
$form->column(6, function (Form $form) use($marketList,$storeList,$categoryList ){
$form->select('market_id')->required()->options($marketList);
$form->column(6, function (Form $form) use($storeList,$categoryList ){
// $form->select('market_id')->required()->options($marketList);
$form->select('category_id')->required()->options($categoryList); $form->select('category_id')->required()->options($categoryList);
$form->select('store_id')->required()->options($storeList); $form->select('store_id')->required()->options($storeList);
/* 多选店铺 */
$form->multipleSelect('store_ids','多选店铺')->options($storeList)->help('选择店铺后商品会同时添加到选择的店铺,注意重复店铺');
$form->text('name')->required()->maxLength(20); $form->text('name')->required()->maxLength(20);
$form->image('cover_img')->required(); $form->image('cover_img')->required();
$form->number('sort'); $form->number('sort');
@ -194,6 +200,31 @@ class GoodsController extends AdminController
$form->disableEditingCheck(); $form->disableEditingCheck();
$form->disableCreatingCheck(); $form->disableCreatingCheck();
}); });
$form->saving(function (Form $form){
$storeId = $form->input('store_id');
// 商品所属市场,根据店铺查询市场
$info = StoreModel::getStoreInfo($storeId,'market_id');
$form->market_id = $info->market_id;
$storeIds = $form->input('store_ids');
$form->deleteFiles('store_ids');
dd($storeIds);
});
$form->saved(function (Form $form){
if($form->isCreating()) {
// 添加到多店铺
// $storeIds = $form->input('store_ids');
// $form->deleteFiles('store_ids');
$goodsModel = new GoodsModel();
// 获取最终保存的数组
// $updates = $form->updates();
// dd($updates);
}
});
}); });
} }
} }

19
app/Admin/Controllers/v3/StoreController.php

@ -128,6 +128,7 @@ class StoreController extends AdminController
*/ */
protected function form() protected function form()
{ {
// dd(StoreModel::pluck('admin_id'));
return Form::make(new Store(), function (Form $form) { return Form::make(new Store(), function (Form $form) {
// 查询市场经理 // 查询市场经理
$mmList = MminfoModel::getMmInfoArray(); $mmList = MminfoModel::getMmInfoArray();
@ -137,6 +138,14 @@ class StoreController extends AdminController
$categoryList = CategoryModel::getCategoryArray([['parent_id','=',0]]); $categoryList = CategoryModel::getCategoryArray([['parent_id','=',0]]);
// 用户 // 用户
$userList = UserModel::getUserArray(); $userList = UserModel::getUserArray();
// 绑定了店铺的用户
$userHas = StoreModel::pluck('admin_id')->toArray();
foreach($userList as $ku => $uv){
if($ku != 0 && in_array($ku,$userHas)){
unset($userList[$ku]);
}
}
$form->column(6, function (Form $form) use($mmList,$marketList,$categoryList){ $form->column(6, function (Form $form) use($mmList,$marketList,$categoryList){
$form->hidden('id'); $form->hidden('id');
@ -171,10 +180,12 @@ class StoreController extends AdminController
$form->image('fm_img')->required(); $form->image('fm_img')->required();
$form->select('admin_id')->options($userList)->required();/*需要优化 一个用户只能绑定一家店铺*/ $form->select('admin_id')->options($userList)->required();/*需要优化 一个用户只能绑定一家店铺*/
$form->select('user_id')->options($userList)->required();/*需要优化 一个用户只能绑定一家店铺*/ $form->select('user_id')->options($userList)->required();/*需要优化 一个用户只能绑定一家店铺*/
$form->time('time1')->format('HH:mm');
$form->timeRange('time1','time2','营业时间段一')->required();
$form->timeRange('time3','time4','营业时间段二')->format('HH:mm')
->rules('after:time2',['after'=>'选择的时间必须比时间段一结束时间大']);
$form->time('time1','时间段一开始')->format('HH:mm');
$form->time('time2','时间段一结束')->format('HH:mm')->rules('after:time1',['after'=>'选择的时间必须比时间段一开始时间晚']);
$form->time('time3','时间段二开始')->format('HH:mm')->rules('after:time2',['after'=>'选择的时间必须比时间段一结束时间晚']);
$form->time('time4','时间段二结束')->format('HH:mm')->rules('after:time3',['after'=>'选择的时间必须比时间段二开始时间晚']);
// $form->timeRange('time1','time2','营业时间段一')->required();
// $form->timeRange('time3','time4','营业时间段二')->rules('after:time2',['after'=>'选择的时间必须比时间段一结束时间大']);
}); });
$form->column(12, function (Form $form) { $form->column(12, function (Form $form) {
$form->map('lat','lng','地址'); $form->map('lat','lng','地址');

61
app/Admin/Forms/GoodsCopyForm.php

@ -0,0 +1,61 @@
<?php
namespace App\Admin\Forms;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\Store as StoreModel;
use App\Models\v3\Goods as GoodsModel;
use App\Models\v3\GoodsBanners as GoodsBannerModel;
class GoodsCopyForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['goods_id'];
$storeIds= $input['store_ids'];
// dd($storeIds);
$goods = GoodsModel::find($goodsId);
$goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get();
foreach($storeIds as $key =>$value){
$model = new GoodsModel();
$model = $goods;
dd($model->toArray());
$model->store_id = $value;
$model->name = $goods->name;
}
return $this->success('修改成功', '/goods');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->getKey();
$this->text('goods_id')->value($id);
$stores = StoreModel::getStoreArray();
$this->multipleSelect('store_ids','选择店铺')->required()->options($stores);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}
Loading…
Cancel
Save