Browse Source

Merge branch 'goods_copy'

master
liangyuyan 5 years ago
parent
commit
60e5fa874b
  1. 38
      app/Admin/Actions/Grid/v3/GoodsActivityCopy.php
  2. 41
      app/Admin/Controllers/v3/GoodsActivityController.php
  3. 135
      app/Admin/Forms/v3/GoodsActivityCopyForm.php
  4. 2
      app/Admin/Forms/v3/GoodsCopyForm.php

38
app/Admin/Actions/Grid/v3/GoodsActivityCopy.php

@ -0,0 +1,38 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\v3\GoodsActivityCopyForm;
use Dcat\Admin\Widgets\Lazy;
class GoodsActivityCopy extends RowAction
{
/**
* @return string
*/
protected $title = '复制';
public function render()
{
$form = GoodsActivityCopyForm::make()->payload(['id'=>$this->row->id,'name'=>$this->row->name]);
$modal = Modal::make()
->xl()
->title($this->title)
->body($form)
->button($this->title);
return $modal;
}
public function parameters()
{
return [
'id' => $this->row->id,
'name' => $this->row->name
];
}
}

41
app/Admin/Controllers/v3/GoodsActivityController.php

@ -2,6 +2,7 @@
namespace App\Admin\Controllers\v3; namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\v3\GoodsActivityCopy;
use App\Admin\Actions\Grid\v3\GoodsActivitySetting; use App\Admin\Actions\Grid\v3\GoodsActivitySetting;
use App\Admin\Repositories\v3\GoodsActivity; use App\Admin\Repositories\v3\GoodsActivity;
use Dcat\Admin\Form; use Dcat\Admin\Form;
@ -50,6 +51,7 @@ class GoodsActivityController extends AdminController
$grid->column('cover_img')->image('',50); $grid->column('cover_img')->image('',50);
$grid->column('name')->editable(); $grid->column('name')->editable();
$grid->column('price')->editable(); $grid->column('price')->editable();
$grid->column('goods_unit')->editable();
$grid->column('type_text'); $grid->column('type_text');
$grid->column('inventory')->editable(); $grid->column('inventory')->editable();
$grid->column('market_id')->display(function($marketId){ $grid->column('market_id')->display(function($marketId){
@ -88,8 +90,8 @@ class GoodsActivityController extends AdminController
}); });
// 每页10条 // 每页10条
$grid->paginate(10); $grid->paginate(10);
// $grid->tools([new GoodsActivitySetting()]);
// $grid->actions([new GoodsActivityCopy()]);
$grid->tools([new GoodsActivitySetting()]);
}); });
} }
@ -179,7 +181,7 @@ class GoodsActivityController extends AdminController
$form->text('name')->required()->maxLength(20); $form->text('name')->required()->maxLength(20);
$form->image('cover_img')->autoUpload()->required(); $form->image('cover_img')->autoUpload()->required();
$form->select('type')->options(GoodsActivityModel::$_TYPE)->default('flash_sale'); $form->select('type')->options(GoodsActivityModel::$_TYPE)->default('flash_sale');
$form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->help($form->model()->expire_time_text);
$form->datetime('expire_time')->required()->format('YYYY-MM-DD HH:mm:ss')->rules('after:now',['after'=>'活动结束时间必须大于当前时间!'])->help($form->model()->expire_time_text);
}); });
$form->column(6, function (Form $form) { $form->column(6, function (Form $form) {
$form->currency('price')->required()->floatTwo()->symbol('¥'); $form->currency('price')->required()->floatTwo()->symbol('¥');
@ -226,12 +228,21 @@ class GoodsActivityController extends AdminController
})->default(1); })->default(1);
$form->saving(function (Form $form){ $form->saving(function (Form $form){
$storeId = $form->input('store_id'); $storeId = $form->input('store_id');
$marketIds = $form->input('market_ids');
// $marketIds = $form->input('market_ids');
$tags = $form->input('tags'); $tags = $form->input('tags');
$spec = $form->input('spec'); $spec = $form->input('spec');
$detailsImgs = $form->input('details_imgs'); $detailsImgs = $form->input('details_imgs');
$goodsCategoryId = $form->input('goods_category_id'); $goodsCategoryId = $form->input('goods_category_id');
$onSale = $form->input('on_sale');
$expireTime = $form->model()->expire_time;
$OldInventory = $form->model()->inventory;
if(!empty($onSale) && $onSale == 1 && $expireTime <= time()){
return $form->error('活动结束时间必须大于当前时间,请修改后再上架!');
}else if(!empty($onSale) && $onSale == 1 && $OldInventory <= 0){
return $form->error('库存必须为大于0的数字');
}
$inventory = $form->input('inventory'); $inventory = $form->input('inventory');
// 规格 // 规格
if(!empty($inventory)){ if(!empty($inventory)){
@ -247,17 +258,17 @@ class GoodsActivityController extends AdminController
$form->market_ids = ["$info->market_id"]; $form->market_ids = ["$info->market_id"];
} }
$marketIdsArr = [];
if(!empty($marketIds)){
foreach($marketIds as $km => $marketId){
if(empty($marketId)){
unset($marketIds[$km]);
continue;
}
$marketIdsArr[] = $marketId;
}
}
$form->marketIds = json_encode($marketIdsArr);
// $marketIdsArr = [];
// if(!empty($marketIds)){
// foreach($marketIds as $km => $marketId){
// if(empty($marketId)){
// unset($marketIds[$km]);
// continue;
// }
// $marketIdsArr[] = $marketId;
// }
// }
// $form->marketIds = json_encode($marketIdsArr);
$tagsArr = []; $tagsArr = [];
if(!empty($tags)){ if(!empty($tags)){

135
app/Admin/Forms/v3/GoodsActivityCopyForm.php

@ -0,0 +1,135 @@
<?php
/**
* 活动商品复制表单
*/
namespace App\Admin\Forms\v3;
use Dcat\Admin\Models\Administrator;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\Store as StoreModel;
use App\Models\v3\GoodsActivity as GoodsModel;
use App\Models\v3\GoodsActivityBanners as GoodsBannerModel;
class GoodsActivityCopyForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['id'];
$storeIds= $input['store_ids'];
$expireTime = $input['expire_time'];
$timeLimitDays = $input['time_limit_days'];
$timeLimitNum = $input['time_limit_num'];
$canUseCoupon = $input['can_use_coupon'];
$type = $input['type'];
$inventory = $input['inventory'];
if($expireTime <= time()){
$this->error('活动结束时间必须大于当前时间!');
}
$goods = GoodsModel::find($goodsId);
$goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get();
$markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id');
foreach($storeIds as $key =>$storeId){
$marketId = $markets[$storeId]??0;
$model = new GoodsModel();
$model->expire_time = $expireTime;
$model->time_limit_days = $timeLimitDays;
$model->time_limit_num = $timeLimitNum;
$model->can_use_coupon = $canUseCoupon;
$model->type = $type;
$model->inventory = $inventory;
$model->store_id = $storeId;
$model->market_id = $marketId;
$model->market_ids = json_encode(["$marketId"]);
$model->category_id = $goods->category_id;
$model->name = $goods->name;
$model->cover_img = $goods->cover_img;
$model->goods_unit = $goods->goods_unit;
$model->tags = $goods->tags;
$model->spec = $goods->spec;
$model->details_imgs = $goods->details_imgs;
$model->content = $goods->content;
$model->details = $goods->details;
$model->price = $goods->price;
$model->original_price = $goods->original_price;
$model->vip_price = $goods->vip_price;
$model->start_num = $goods->start_num;
$model->restrict_num = $goods->restrict_num;
$model->is_infinite = $goods->is_infinite;
$model->on_sale = 0;
$model->sort = $goods->sort;
$model->remark = $goods->remark;
if($model->save() && !empty($goodsBanners)){
$goodsId = $model->getKey();
$banners = [];
foreach($goodsBanners as $kb => $vb){
$banners[] = [
'goods_id' => $goodsId,
'type' => $vb->type,
'path' => $vb->path,
'sort' => $vb->sort,
'created_at' => time(),
'updated_at' => time(),
];
GoodsBannerModel::insert($banners);
}
};
}
return $this->success('复制成功', '/goods_activity');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->payload['id'] ?? 0;
$name = $this->payload['name'] ?? '';
$this->hidden('id')->value($id);
$this->display('name')->value($name)->help('复制的活动商品默认下架状态,请核对信息后手动上架!');
$stores = StoreModel::getStoreArray();
$this->multipleSelect('store_ids','选择店铺')->required()->options($stores)->help('选择店铺,将当前商品复制到所选店铺。注意选择重复店铺问题!!!');
$this->number('inventory','库存')->required()->attribute('min', 1)->default(1);
$this->datetime('expire_time','活动结束时间')->required()->format('YYYY-MM-DD HH:mm:ss')->rules('after:now',['after'=>'活动结束时间必须大于当前时间!']);
$this->number('time_limit_days','限制的天数')->default(1)->help('A时间段内限购');
$this->number('time_limit_num','限制购买数量')->default(1)->help('A时间段内限购的数量');
$this->switch('can_use_coupon','可同时使用优惠券')->default(0);
$this->select('type','活动类型')->options(GoodsModel::$_TYPE)->default('flash_sale');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

2
app/Admin/Forms/v3/GoodsCopyForm.php

@ -76,7 +76,7 @@ class GoodsCopyForm extends Form
}; };
} }
return $this->success('修改成功', '/goods');
return $this->success('复制成功', '/goods');
} }
/** /**

Loading…
Cancel
Save