Browse Source

Merge branch 'goods_copy'

master
liangyuyan 5 years ago
parent
commit
4526440c74
  1. 74
      app/Admin/Actions/Grid/v3/GoodsActivitySetting.php
  2. 35
      app/Admin/Controllers/v3/GoodsActivityController.php
  3. 2
      app/Admin/Controllers/v3/GoodsController.php
  4. 108
      app/Admin/Forms/GoodsNewCopyForm.php
  5. 73
      app/Admin/Forms/GoodsNewImageForm.php
  6. 68
      app/Admin/Forms/v3/GoodsActivitySettingForm.php
  7. 1
      app/Admin/routes.php
  8. 12
      app/Libs/Redis/RedisKey.php

74
app/Admin/Actions/Grid/v3/GoodsActivitySetting.php

@ -0,0 +1,74 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Traits\HasPermissions;
use Dcat\Admin\Tree\AbstractTool;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class GoodsActivitySetting extends AbstractTool
{
/**
* @return string
*/
protected $title = '活动设置';
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
return $this->response()
->success('跳转到设置页面' )
->redirect('/activity_setting');
}
/**
* @return string|void
*/
// public function href()
// {
// return admin_url('category/tie');
// }
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
// protected function actionScript()
// {
// return <<<JS
// function (data, target, action) {
// console.log('发起请求之前', data, target, action);
// // return false; 在这里return false可以终止执行后面的操作
// // 更改传递到接口的主键值
// action.options.key = 123;
// }
// JS;
// }
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
}

35
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\GoodsActivitySetting;
use App\Admin\Repositories\v3\GoodsActivity; use App\Admin\Repositories\v3\GoodsActivity;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
@ -14,7 +15,10 @@ use App\Models\v3\GoodsActivity as GoodsActivityModel;
use Dcat\Admin\Form\NestedForm; use Dcat\Admin\Form\NestedForm;
use App\Models\v3\GoodsCategory as GoodsCategoryModel; use App\Models\v3\GoodsCategory as GoodsCategoryModel;
use App\Admin\Common\Auth; use App\Admin\Common\Auth;
use App\Admin\Forms\v3\GoodsActivitySettingForm;
use Dcat\Admin\Admin; use Dcat\Admin\Admin;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Widgets\Card;
class GoodsActivityController extends AdminController class GoodsActivityController extends AdminController
{ {
@ -47,7 +51,7 @@ class GoodsActivityController extends AdminController
$grid->column('name')->editable(); $grid->column('name')->editable();
$grid->column('price')->editable(); $grid->column('price')->editable();
$grid->column('type_text'); $grid->column('type_text');
$grid->column('inventory')->editable();
$grid->column('market_id')->display(function($marketId){ $grid->column('market_id')->display(function($marketId){
$item = MarketModel::getMarketInfo($marketId,'name'); $item = MarketModel::getMarketInfo($marketId,'name');
return empty($item) ? '' : $item->name; return empty($item) ? '' : $item->name;
@ -60,10 +64,10 @@ class GoodsActivityController extends AdminController
$item = CategoryModel::getInfo($categoryId,'title'); $item = CategoryModel::getInfo($categoryId,'title');
return empty($item) ? '' : $item->title; return empty($item) ? '' : $item->title;
}); });
$grid->goods_category_id->display(function ($goodsCategoryId){
$item = GoodsCategoryModel::getInfo($goodsCategoryId,'title');
return empty($item) ? '' : $item->title;
});
// $grid->goods_category_id->display(function ($goodsCategoryId){
// $item = GoodsCategoryModel::getInfo($goodsCategoryId,'title');
// return empty($item) ? '' : $item->title;
// });
$grid->column('expire_time_text'); $grid->column('expire_time_text');
$grid->column('sort'); $grid->column('sort');
$grid->column('on_sale')->switch(); $grid->column('on_sale')->switch();
@ -84,6 +88,8 @@ class GoodsActivityController extends AdminController
}); });
// 每页10条 // 每页10条
$grid->paginate(10); $grid->paginate(10);
$grid->tools([new GoodsActivitySetting()]);
}); });
} }
@ -181,7 +187,7 @@ class GoodsActivityController extends AdminController
$form->currency('vip_price')->required()->floatTwo()->symbol('¥'); $form->currency('vip_price')->required()->floatTwo()->symbol('¥');
$form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等'); $form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等');
$form->radio('is_infinite')->options(['关闭','开启'])->default(1); $form->radio('is_infinite')->options(['关闭','开启'])->default(1);
$form->number('inventory')->required()->attribute('min', 1)->default(1);
$form->number('inventory')->required()->attribute('min', 0)->default(1);
$form->number('restrict_num')->attribute('min', 0)->default(1)->help('0表示不限购,单笔订单限购数量'); $form->number('restrict_num')->attribute('min', 0)->default(1)->help('0表示不限购,单笔订单限购数量');
$form->number('start_num')->attribute('min', 1)->default(1); $form->number('start_num')->attribute('min', 1)->default(1);
$form->number('time_limit_days')->help('A时间段内限购'); $form->number('time_limit_days')->help('A时间段内限购');
@ -225,6 +231,15 @@ class GoodsActivityController extends AdminController
$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');
$inventory = $form->input('inventory');
// 规格
if(!empty($inventory)){
if(!is_numeric($inventory) || $inventory < 0){
return $form->error('库存必须为大于等于0的数字');
}
}
if(!empty($storeId)){ if(!empty($storeId)){
// 商品所属市场,根据店铺查询市场 // 商品所属市场,根据店铺查询市场
$info = StoreModel::getStoreInfo($storeId,'market_id'); $info = StoreModel::getStoreInfo($storeId,'market_id');
@ -272,4 +287,12 @@ class GoodsActivityController extends AdminController
}); });
}); });
} }
public function SettingForm(Content $content)
{
return $content
->title('活动设置')
->body(new Card(new GoodsActivitySettingForm()));
}
} }

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

@ -219,7 +219,7 @@ class GoodsController extends AdminController
$form->currency('vip_price')->required()->symbol('¥'); $form->currency('vip_price')->required()->symbol('¥');
$form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等'); $form->text('goods_unit')->help('如:斤,个,盒,500克,1000克,1500克等');
$form->radio('is_infinite')->options(['关闭','开启'])->default(1); $form->radio('is_infinite')->options(['关闭','开启'])->default(1);
$form->number('inventory')->required()->attribute('min', 1)->default(1);
$form->number('inventory')->required()->attribute('min', 0)->default(1);
$form->number('restrict_num')->attribute('min', 0)->default(0)->help('0表示不限购'); $form->number('restrict_num')->attribute('min', 0)->default(0)->help('0表示不限购');
$form->number('start_num')->attribute('min', 1)->default(1); $form->number('start_num')->attribute('min', 1)->default(1);
}); });

108
app/Admin/Forms/GoodsNewCopyForm.php

@ -1,108 +0,0 @@
<?php
namespace App\Admin\Forms;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\StoreNew as StoreModel;
use App\Models\v3\GoodsNew as GoodsModel;
use App\Models\v3\GoodsNewBanners as GoodsBannerModel;
use Illuminate\Support\Facades\DB;
class GoodsNewCopyForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['goods_id'];
$storeIds= $input['store_ids'];
$goods = GoodsModel::find($goodsId);
$goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get();
$markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id');
foreach($storeIds as $key =>$value){
$storeId = $value;
$model = new GoodsModel();
$model->store_id = $storeId;
$model->market_id = $markets[$storeId];
$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->inventory = $goods->inventory;
$model->on_sale = $goods->on_sale;
$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);
}
}else{
return $this->error('修改失败');
};
}
return $this->error('修改成功');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->getKey();
$goods = GoodsModel::select('name')->find($id);
$this->hidden('goods_id')->value($id);
$name = empty($goods->name)?'':$goods->name;
$this->display('name')->value($name);
$stores = StoreModel::getStoreArray();
$this->multipleSelect('store_ids','选择店铺')->required()->options($stores)->help('选择店铺,将当前商品复制到所选店铺。注意选择重复店铺问题!!!');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

73
app/Admin/Forms/GoodsNewImageForm.php

@ -1,73 +0,0 @@
<?php
namespace App\Admin\Forms;
use App\Models\v3\GoodsBanners;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use App\Models\v3\GoodsNew as GoodsModel;
use App\Models\v3\GoodsNewBanners as GoodsBannerModel;
use Illuminate\Support\Facades\DB;
class GoodsNewImageForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$goodsId = $input['goods_id'];
$coverImg= $input['cover_img'];
$bannerImg= $input['img_banner'];
if($goodsId > 0 && !empty($coverImg)){
$data = ['cover_img' => $coverImg];
GoodsModel::where('id',$goodsId)->update($data);
}
if($goodsId > 0 && !empty($bannerImg)){
$banner = GoodsBannerModel::where('goods_id',$goodsId)->first();
if(empty($banner)){
$banner = new GoodsBanners();
$banner->goods_id = $goodsId;
$banner->type = 1;
$banner->created_at = time();
}
$banner->path = $bannerImg;
$banner->updated_at = time();
$banner->save();
}
return $this->error('修改成功');
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->getKey();
$goods = GoodsModel::select('name')->find($id);
$goodName = empty($goods->name)?'':$goods->name;
$this->hidden('goods_id')->value($id);
$this->display('name','商品名称')->value($goodName);
$this->image('cover_img','封面图')->url('ops/files');
$this->image('img_banner','轮播图')->url('ops/files');
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

68
app/Admin/Forms/v3/GoodsActivitySettingForm.php

@ -0,0 +1,68 @@
<?php
namespace App\Admin\Forms\v3;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Redis;
use App\Libs\Redis\RedisKey;
class GoodsActivitySettingForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// 获取外部传递参数
$flashSale = $input['flash_sale'];
$groupBuy= $input['group_buy'];
$newProduct= $input['new_product'];
$data = [
'flash_sale' => $flashSale,
'group_buy' => $groupBuy,
'new_product' => $newProduct,
];
$res = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data);
if($res){
return $this->success('修改成功','/goods_activity');
}else{
return $this->error('修改失败');
}
}
/**
* Build a form here.
*/
public function form()
{
$data = Redis::hgetall('activity_type_limit_nums');
$flashSale = isset($data['flash_sale'])?$data['flash_sale']:0;
$groupBuy= isset($data['group_buy'])?$data['group_buy']:0;
$newProduct= isset($data['new_product'])?$data['new_product']:0;
$this->display(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , '设置')->value('同一活动类型的商品,单笔订单可购买商品种数');
$this->number('flash_sale','秒杀')->attribute('min', 0)->default(1)->value($flashSale);
$this->number('group_buy','团购')->attribute('min', 0)->default(1)->value($groupBuy);
$this->number('new_product','新品')->attribute('min', 0)->default(1)->value($newProduct);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

1
app/Admin/routes.php

@ -59,6 +59,7 @@ Route::group([
$router->resource('/goods', 'v3\GoodsController'); $router->resource('/goods', 'v3\GoodsController');
$router->resource('/goods_activity', 'v3\GoodsActivityController'); $router->resource('/goods_activity', 'v3\GoodsActivityController');
$router->resource('/goods_new', 'v3\GoodsNewController'); $router->resource('/goods_new', 'v3\GoodsNewController');
$router->get('/activity_setting', 'v3\GoodsActivityController@SettingForm');
// 平台管理 // 平台管理
$router->resource('/banners', 'v3\BannersController'); $router->resource('/banners', 'v3\BannersController');

12
app/Libs/Redis/RedisKey.php

@ -0,0 +1,12 @@
<?php
namespace App\Libs\Redis;
/**
* @Constants
*/
class RedisKey
{
const ACTIVITY_TYPE_LIMIT_NUMS = 'activity_type_limit_nums';
}
Loading…
Cancel
Save