From af4d6aff5cd5f72be1d73322624c0f84cba81ea3 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Tue, 3 Nov 2020 18:18:09 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81-?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/v3/GoodsActivitySettingForm.php | 134 +++++++++++++++--- app/Libs/Redis/RedisKey.php | 2 +- 2 files changed, 118 insertions(+), 18 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index d032dd3..bd07456 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -10,6 +10,20 @@ use App\Libs\Redis\RedisKey; class GoodsActivitySettingForm extends Form { + protected $typeOptions = [ + 1 => '列表轮播', + 2 => '大图片', + ]; + protected $indexOptions = [ + 1 => '秒杀', + 2 => '团购', + 3 => '新品' + ]; + protected $indexOptionsValue = [ + 1 => 'flash_sale', + 2 => 'group_buy', + 3 => 'new_product' + ]; /** * Handle the form request. * @@ -20,18 +34,60 @@ class GoodsActivitySettingForm extends Form 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, + // $data = [ + // 'flash_sale' => $input['flash_sale'] ?? 0, + // 'group_buy' => $input['group_buy'] ?? 0, + // 'new_product' => $input['new_product'] ?? 0, + // ]; + + $activitySetting = [ + 'index_activity_type' => $input['index_activity_type'] ?? 1 + ]; + $setting = [ + 'buy_num_limit' => $input['buy_num_limit'] ?? 6, ]; + switch($activitySetting['index_activity_type']){ + case 1: + $setting = [ + 'banner' => $input['banner'] ?? '', + 'show_type' => $input['show_type'] ?? 1, + 'index_num' => $input['index_num'] ?? 6, + 'index_image' => $input['index_image'] ?? '', + 'index_url' => $input['index_url'] ?? '', + ]; + $data = [ + 'flash_sale' => $setting['buy_num_limit'] ?? 0, + ]; + break; + case 2: + $setting = [ + 'banner' => $input['banner'] ?? '', + ]; + $data = [ + 'group_buy' => $setting['buy_num_limit'] ?? 0, + ]; + break; + case 3: + $setting = [ + 'banner' => $input['banner'] ?? '', + ]; + $data = [ + 'new_product' => $setting['buy_num_limit'] ?? 0, + ]; + break; + default: + return $this->error('请选择正确的首页展示的活动类型!'); + break; + } + // var_dump($setting); + $activitySetting[$this->indexOptionsValue[$activitySetting['index_activity_type']]] = json_encode($setting); + dd([$activitySetting['index_activity_type'],json_decode($activitySetting[$this->indexOptionsValue[$activitySetting['index_activity_type']]])]); + + $res1 = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); - $res = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); - if($res){ + $res2 = Redis::hmset(RedisKey::ACTIVITY_TYPE_SETTING , $activitySetting); + + if($res1 && $res2){ return $this->success('修改成功','/goods_activity'); }else{ return $this->error('修改失败'); @@ -44,15 +100,59 @@ class GoodsActivitySettingForm extends Form public function form() { $data = Redis::hgetall(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS); + $setting = Redis::hgetall(RedisKey::ACTIVITY_TYPE_SETTING); + // dd([$data,$setting]); + + $limitData = [ + 1 => isset($data['flash_sale']) ? $data['flash_sale']:0, + 2 => isset($data['group_buy']) ? $data['group_buy']:0, + 3 => isset($data['new_product']) ? $data['new_product']:0, + ]; + $settingData = [ + 'index_activity_type' => isset($setting['index_activity_type']) ?? 1, + 1 => isset($setting['flash_sale']) ? json_decode($setting['flash_sale']) : [], + 2 => isset($setting['group_buy']) ? json_decode($setting['group_buy']) : [], + 3 => isset($setting['new_product']) ? json_decode($setting['new_product']) : [], + ]; - $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->select('index_activity_type','首页展示的活动类型') + ->when([1],function(Form $form) use($limitData,$settingData){ + $buyNumLimit = $limitData[1] ?? 0; + $sData = $settingData[1] ?? []; + $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); - $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); + $form->radio('show_type','展示形式') + ->when([1],function(Form $form) use($sData){ + $form->number('index_num','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); + }) + ->when([2],function(Form $form) use($sData){ + $form->image('index_image','首页大图')->value($sData['index_image'] ?? '')->autoUpload()->saveFullUrl()->width(3); + $form->url('index_url','跳转链接')->value($sData['index_url'] ?? '')->width(4); + }) + ->options($form->typeOptions) + ->value($sData['show_type'] ?? 1) + ->default(1); + + }) + ->when([2],function(Form $form) use($limitData,$settingData){ + $buyNumLimit = $limitData[2] ?? 0; + $sData = $settingData[1] ?? []; + $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); + }) + ->when([3],function(Form $form) use($limitData,$settingData){ + $buyNumLimit = $limitData[3] ?? 0; + $sData = $settingData[1] ?? []; + $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); + }) + ->options($this->indexOptions)->value($settingData['index_activity_type'] ?? 1)->default(1)->width(4); + + // $this->display(RedisKey::ACTIVITY_TYPE_SETTING , '设置')->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); } /** diff --git a/app/Libs/Redis/RedisKey.php b/app/Libs/Redis/RedisKey.php index 1ce5a70..19e221e 100644 --- a/app/Libs/Redis/RedisKey.php +++ b/app/Libs/Redis/RedisKey.php @@ -8,5 +8,5 @@ class RedisKey { const ACTIVITY_TYPE_LIMIT_NUMS = 'activity_type_limit_nums'; - + const ACTIVITY_TYPE_SETTING = 'activity_type_setting'; } From bb83a33196ae2de57f80118c083d7ba63c51f58e Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 4 Nov 2020 10:10:26 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=95=86=E5=93=81-?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/v3/GoodsActivitySettingForm.php | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index bd07456..6e068f0 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -33,55 +33,48 @@ class GoodsActivitySettingForm extends Form */ public function handle(array $input) { - // 获取外部传递参数 - // $data = [ - // 'flash_sale' => $input['flash_sale'] ?? 0, - // 'group_buy' => $input['group_buy'] ?? 0, - // 'new_product' => $input['new_product'] ?? 0, - // ]; - $activitySetting = [ 'index_activity_type' => $input['index_activity_type'] ?? 1 ]; - $setting = [ - 'buy_num_limit' => $input['buy_num_limit'] ?? 6, - ]; + switch($activitySetting['index_activity_type']){ case 1: $setting = [ - 'banner' => $input['banner'] ?? '', - 'show_type' => $input['show_type'] ?? 1, - 'index_num' => $input['index_num'] ?? 6, - 'index_image' => $input['index_image'] ?? '', - 'index_url' => $input['index_url'] ?? '', + 'buy_num_limit' => $input['buy_num_limit_1'] ?? 0, + 'banner' => $input['banner_1'] ?? '', + 'show_type' => $input['show_type_1'] ?? 0, + 'index_num' => $input['index_num_1'] ?? 6, + 'index_image' => $input['index_image_1'] ?? '', + 'index_url' => $input['index_url_1'] ?? '', ]; $data = [ - 'flash_sale' => $setting['buy_num_limit'] ?? 0, + 'flash_sale' => $setting['buy_num_limit'], ]; break; case 2: $setting = [ - 'banner' => $input['banner'] ?? '', + 'buy_num_limit' => $input['buy_num_limit_2'] ?? 0, + 'banner' => $input['banner_2'] ?? '' ]; $data = [ - 'group_buy' => $setting['buy_num_limit'] ?? 0, + 'group_buy' => $setting['buy_num_limit'], ]; break; case 3: $setting = [ - 'banner' => $input['banner'] ?? '', + 'buy_num_limit' => $input['buy_num_limit_3'] ?? 0, + 'banner' => $input['banner_3'] ?? '' ]; $data = [ - 'new_product' => $setting['buy_num_limit'] ?? 0, + 'new_product' => $setting['buy_num_limit'], ]; break; default: return $this->error('请选择正确的首页展示的活动类型!'); break; } - // var_dump($setting); + $activitySetting[$this->indexOptionsValue[$activitySetting['index_activity_type']]] = json_encode($setting); - dd([$activitySetting['index_activity_type'],json_decode($activitySetting[$this->indexOptionsValue[$activitySetting['index_activity_type']]])]); $res1 = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); @@ -101,7 +94,6 @@ class GoodsActivitySettingForm extends Form { $data = Redis::hgetall(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS); $setting = Redis::hgetall(RedisKey::ACTIVITY_TYPE_SETTING); - // dd([$data,$setting]); $limitData = [ 1 => isset($data['flash_sale']) ? $data['flash_sale']:0, @@ -109,26 +101,33 @@ class GoodsActivitySettingForm extends Form 3 => isset($data['new_product']) ? $data['new_product']:0, ]; $settingData = [ - 'index_activity_type' => isset($setting['index_activity_type']) ?? 1, - 1 => isset($setting['flash_sale']) ? json_decode($setting['flash_sale']) : [], - 2 => isset($setting['group_buy']) ? json_decode($setting['group_buy']) : [], - 3 => isset($setting['new_product']) ? json_decode($setting['new_product']) : [], + 'index_activity_type' => $setting['index_activity_type'] ?? 1, + 1 => isset($setting['flash_sale']) ? json_decode($setting['flash_sale'],true) : [], + 2 => isset($setting['group_buy']) ? json_decode($setting['group_buy'],true) : [], + 3 => isset($setting['new_product']) ? json_decode($setting['new_product'],true) : [], ]; $this->select('index_activity_type','首页展示的活动类型') ->when([1],function(Form $form) use($limitData,$settingData){ $buyNumLimit = $limitData[1] ?? 0; $sData = $settingData[1] ?? []; - $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); - $form->radio('show_type','展示形式') + $form->number('buy_num_limit_1','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner_1','banner')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['banner'] ?? '']; + })->width(3); + + $form->radio('show_type_1','展示形式') ->when([1],function(Form $form) use($sData){ - $form->number('index_num','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); + $form->number('index_num_1','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); }) ->when([2],function(Form $form) use($sData){ - $form->image('index_image','首页大图')->value($sData['index_image'] ?? '')->autoUpload()->saveFullUrl()->width(3); - $form->url('index_url','跳转链接')->value($sData['index_url'] ?? '')->width(4); + $form->image('index_image_1','首页大图')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['index_image'] ?? '']; + })->width(3); + $form->url('index_url_1','跳转链接')->value($sData['index_url'] ?? '')->width(4); }) ->options($form->typeOptions) ->value($sData['show_type'] ?? 1) @@ -137,22 +136,23 @@ class GoodsActivitySettingForm extends Form }) ->when([2],function(Form $form) use($limitData,$settingData){ $buyNumLimit = $limitData[2] ?? 0; - $sData = $settingData[1] ?? []; - $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); + $sData = $settingData[2] ?? []; + $form->number('buy_num_limit_2','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner_2','banner')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['banner'] ?? '']; + })->width(3); }) ->when([3],function(Form $form) use($limitData,$settingData){ $buyNumLimit = $limitData[3] ?? 0; - $sData = $settingData[1] ?? []; - $form->number('buy_num_limit','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner','banner')->value($sData['banner'] ?? '')->autoUpload()->saveFullUrl()->width(3); + $sData = $settingData[3] ?? []; + $form->number('buy_num_limit_3','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); + $form->image('banner_3','banner')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['banner'] ?? '']; + })->width(3); }) ->options($this->indexOptions)->value($settingData['index_activity_type'] ?? 1)->default(1)->width(4); - - // $this->display(RedisKey::ACTIVITY_TYPE_SETTING , '设置')->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); } /** From 4346f69b5c8da1b95f2e6bf11f183f367fb53522 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 4 Nov 2020 11:39:22 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8-?= =?UTF-8?q?=E8=AE=BE=E7=BD=AEform?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityController.php | 7 ++ .../Forms/v3/GoodsActivitySettingForm.php | 80 +++++++++++++++---- app/Admin/routes.php | 3 + 3 files changed, 74 insertions(+), 16 deletions(-) diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index 3c62395..bb916cb 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -324,4 +324,11 @@ class GoodsActivityController extends AdminController ->title('活动设置') ->body(new Card(new GoodsActivitySettingForm())); } + + public function ActivitySettingForm(Content $content) + { + return $content + ->title('商品活动设置') + ->body(new Card(new GoodsActivitySettingForm())); + } } diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index 6e068f0..dcd9c96 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -14,12 +14,17 @@ class GoodsActivitySettingForm extends Form 1 => '列表轮播', 2 => '大图片', ]; + protected $typeOptionsValue = [ + 1 => 'list', + 2 => 'image', + ]; protected $indexOptions = [ 1 => '秒杀', 2 => '团购', 3 => '新品' ]; protected $indexOptionsValue = [ + 0 => 'default', 1 => 'flash_sale', 2 => 'group_buy', 3 => 'new_product' @@ -34,16 +39,16 @@ class GoodsActivitySettingForm extends Form public function handle(array $input) { $activitySetting = [ - 'index_activity_type' => $input['index_activity_type'] ?? 1 + 'index_activity_type' => $this->indexOptionsValue[$input['index_activity_type']] ?? $this->indexOptionsValue[0] ]; switch($activitySetting['index_activity_type']){ - case 1: + case 'flash_sale': $setting = [ 'buy_num_limit' => $input['buy_num_limit_1'] ?? 0, 'banner' => $input['banner_1'] ?? '', - 'show_type' => $input['show_type_1'] ?? 0, - 'index_num' => $input['index_num_1'] ?? 6, + 'show_type' => $this->typeOptionsValue[$input['show_type_1']] ?? $this->typeOptionsValue[1], + 'index_num_limit' => $input['index_num_1'] ?? 6, 'index_image' => $input['index_image_1'] ?? '', 'index_url' => $input['index_url_1'] ?? '', ]; @@ -51,19 +56,27 @@ class GoodsActivitySettingForm extends Form 'flash_sale' => $setting['buy_num_limit'], ]; break; - case 2: + case 'group_buy': $setting = [ 'buy_num_limit' => $input['buy_num_limit_2'] ?? 0, - 'banner' => $input['banner_2'] ?? '' + 'banner' => $input['banner_2'] ?? '', + 'show_type' => $this->typeOptionsValue[$input['show_type_2']] ?? $this->typeOptionsValue[1], + 'index_num_limit' => $input['index_num_2'] ?? 6, + 'index_image' => $input['index_image_2'] ?? '', + 'index_url' => $input['index_url_2'] ?? '', ]; $data = [ 'group_buy' => $setting['buy_num_limit'], ]; break; - case 3: + case 'new_product': $setting = [ 'buy_num_limit' => $input['buy_num_limit_3'] ?? 0, - 'banner' => $input['banner_3'] ?? '' + 'banner' => $input['banner_3'] ?? '', + 'show_type' => $this->typeOptionsValue[$input['show_type_3']] ?? $this->typeOptionsValue[1], + 'index_num_limit' => $input['index_num_3'] ?? 6, + 'index_image' => $input['index_image_3'] ?? '', + 'index_url' => $input['index_url_3'] ?? '', ]; $data = [ 'new_product' => $setting['buy_num_limit'], @@ -73,8 +86,8 @@ class GoodsActivitySettingForm extends Form return $this->error('请选择正确的首页展示的活动类型!'); break; } - - $activitySetting[$this->indexOptionsValue[$activitySetting['index_activity_type']]] = json_encode($setting); + + $activitySetting[$activitySetting['index_activity_type']] = json_encode($setting); $res1 = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); @@ -95,23 +108,27 @@ class GoodsActivitySettingForm extends Form $data = Redis::hgetall(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS); $setting = Redis::hgetall(RedisKey::ACTIVITY_TYPE_SETTING); + $indexOptionsKey = array_flip($this->indexOptionsValue); + $typeOptionsKey = array_flip($this->typeOptionsValue); + $limitData = [ 1 => isset($data['flash_sale']) ? $data['flash_sale']:0, 2 => isset($data['group_buy']) ? $data['group_buy']:0, 3 => isset($data['new_product']) ? $data['new_product']:0, ]; + $settingData = [ - 'index_activity_type' => $setting['index_activity_type'] ?? 1, + 'index_activity_type' => $indexOptionsKey[$setting['index_activity_type']] ?? 1, 1 => isset($setting['flash_sale']) ? json_decode($setting['flash_sale'],true) : [], 2 => isset($setting['group_buy']) ? json_decode($setting['group_buy'],true) : [], 3 => isset($setting['new_product']) ? json_decode($setting['new_product'],true) : [], ]; $this->select('index_activity_type','首页展示的活动类型') - ->when([1],function(Form $form) use($limitData,$settingData){ + ->when([1],function(Form $form) use($limitData,$settingData,$typeOptionsKey){ $buyNumLimit = $limitData[1] ?? 0; $sData = $settingData[1] ?? []; - + $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_1','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); $form->image('banner_1','banner')->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ @@ -130,27 +147,58 @@ class GoodsActivitySettingForm extends Form $form->url('index_url_1','跳转链接')->value($sData['index_url'] ?? '')->width(4); }) ->options($form->typeOptions) - ->value($sData['show_type'] ?? 1) + ->value($typeOptionsKey[$showType] ?? 1) ->default(1); }) - ->when([2],function(Form $form) use($limitData,$settingData){ + ->when([2],function(Form $form) use($limitData,$settingData,$typeOptionsKey){ $buyNumLimit = $limitData[2] ?? 0; $sData = $settingData[2] ?? []; + $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_2','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); $form->image('banner_2','banner')->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); + $form->radio('show_type_2','展示形式') + ->when([1],function(Form $form) use($sData){ + $form->number('index_num_2','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); + }) + ->when([2],function(Form $form) use($sData){ + $form->image('index_image_2','首页大图')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['index_image'] ?? '']; + })->width(3); + $form->url('index_url_2','跳转链接')->value($sData['index_url'] ?? '')->width(4); + }) + ->options($form->typeOptions) + ->value($typeOptionsKey[$showType] ?? 1) + ->default(1); }) - ->when([3],function(Form $form) use($limitData,$settingData){ + ->when([3],function(Form $form) use($limitData,$settingData,$typeOptionsKey){ $buyNumLimit = $limitData[3] ?? 0; $sData = $settingData[3] ?? []; + $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_3','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); $form->image('banner_3','banner')->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); + + $form->radio('show_type_3','展示形式') + ->when([1],function(Form $form) use($sData){ + $form->number('index_num_3','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); + }) + ->when([2],function(Form $form) use($sData){ + $form->image('index_image_3','首页大图')->autoUpload()->saveFullUrl() + ->customFormat(function() use($sData){ + return [$sData['index_image'] ?? '']; + })->width(3); + $form->url('index_url_3','跳转链接')->value($sData['index_url'] ?? '')->width(4); + }) + ->options($form->typeOptions) + ->value($typeOptionsKey[$showType] ?? 1) + ->default(1); }) ->options($this->indexOptions)->value($settingData['index_activity_type'] ?? 1)->default(1)->width(4); } diff --git a/app/Admin/routes.php b/app/Admin/routes.php index bccdd3d..c14d48f 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -96,5 +96,8 @@ Route::group([ //普通商品统计 $router->resource('/goods_report', 'v3\GoodsReportController'); $router->any('/goods_report_export', 'v3\GoodsReportController@export'); + + // 活动商品设置 + $router->get('/goods_activity_setting', 'v3\GoodsActivityController@ActivitySettingForm'); }); From 99e736b7c4b2b45071e400a558dea83f985c3425 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 4 Nov 2020 11:47:33 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8--?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v3/GoodsActivityController.php | 3 +- app/Admin/Forms/v3/GoodsActivityLimitForm.php | 68 +++++++++++++++++++ .../Forms/v3/GoodsActivitySettingForm.php | 2 +- 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 app/Admin/Forms/v3/GoodsActivityLimitForm.php diff --git a/app/Admin/Controllers/v3/GoodsActivityController.php b/app/Admin/Controllers/v3/GoodsActivityController.php index bb916cb..4af0534 100644 --- a/app/Admin/Controllers/v3/GoodsActivityController.php +++ b/app/Admin/Controllers/v3/GoodsActivityController.php @@ -17,6 +17,7 @@ use Dcat\Admin\Form\NestedForm; use App\Models\v3\GoodsCategory as GoodsCategoryModel; use App\Admin\Common\Auth; use App\Admin\Extensions\Tools\GoodsActivityOnSale; +use App\Admin\Forms\v3\GoodsActivityLimitForm; use App\Admin\Forms\v3\GoodsActivitySettingForm; use Dcat\Admin\Admin; use Dcat\Admin\Layout\Content; @@ -322,7 +323,7 @@ class GoodsActivityController extends AdminController { return $content ->title('活动设置') - ->body(new Card(new GoodsActivitySettingForm())); + ->body(new Card(new GoodsActivityLimitForm())); } public function ActivitySettingForm(Content $content) diff --git a/app/Admin/Forms/v3/GoodsActivityLimitForm.php b/app/Admin/Forms/v3/GoodsActivityLimitForm.php new file mode 100644 index 0000000..0333920 --- /dev/null +++ b/app/Admin/Forms/v3/GoodsActivityLimitForm.php @@ -0,0 +1,68 @@ + $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(RedisKey::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 []; + } + +} diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index dcd9c96..1037224 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -94,7 +94,7 @@ class GoodsActivitySettingForm extends Form $res2 = Redis::hmset(RedisKey::ACTIVITY_TYPE_SETTING , $activitySetting); if($res1 && $res2){ - return $this->success('修改成功','/goods_activity'); + return $this->success('修改成功','/goods_activity_setting'); }else{ return $this->error('修改失败'); } From a7184e069fa9e5b1cf7b0b99e0436a128658c309 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Wed, 4 Nov 2020 14:22:39 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE---=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E4=B8=BAtext=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Forms/v3/GoodsActivitySettingForm.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index 1037224..c8b69c2 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -144,7 +144,7 @@ class GoodsActivitySettingForm extends Form ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3); - $form->url('index_url_1','跳转链接')->value($sData['index_url'] ?? '')->width(4); + $form->text('index_url_1','跳转链接')->value($sData['index_url'] ?? '')->width(4); }) ->options($form->typeOptions) ->value($typeOptionsKey[$showType] ?? 1) @@ -169,7 +169,7 @@ class GoodsActivitySettingForm extends Form ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3); - $form->url('index_url_2','跳转链接')->value($sData['index_url'] ?? '')->width(4); + $form->text('index_url_2','跳转链接')->value($sData['index_url'] ?? '')->width(4); }) ->options($form->typeOptions) ->value($typeOptionsKey[$showType] ?? 1) @@ -194,7 +194,7 @@ class GoodsActivitySettingForm extends Form ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3); - $form->url('index_url_3','跳转链接')->value($sData['index_url'] ?? '')->width(4); + $form->text('index_url_3','跳转链接')->value($sData['index_url'] ?? '')->width(4); }) ->options($form->typeOptions) ->value($typeOptionsKey[$showType] ?? 1) From 6a6a1bd933238a6c1693d672927c62398ef5c7c5 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 5 Nov 2020 11:29:06 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE--=E6=B7=BB=E5=8A=A0=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Forms/v3/GoodsActivitySettingForm.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index c8b69c2..2e477cd 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -86,7 +86,11 @@ class GoodsActivitySettingForm extends Form return $this->error('请选择正确的首页展示的活动类型!'); break; } - + if($setting['show_type'] == 'image' && empty($setting['index_image'])){ + return $this->error('请上传首页大图!'); + }else if($setting['show_type'] == 'image' && empty($setting['index_url'])){ + return $this->error('请填写跳转链接'); + } $activitySetting[$activitySetting['index_activity_type']] = json_encode($setting); $res1 = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); @@ -130,7 +134,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[1] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_1','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_1','banner')->autoUpload()->saveFullUrl() + $form->image('banner_1','banner')->required()->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); @@ -156,7 +160,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[2] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_2','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_2','banner')->autoUpload()->saveFullUrl() + $form->image('banner_2','banner')->required()->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); @@ -180,7 +184,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[3] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_3','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_3','banner')->autoUpload()->saveFullUrl() + $form->image('banner_3','banner')->required()->autoUpload()->saveFullUrl() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); From bf93fddb3cc0f081e5a3819324a43fac1929e062 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Thu, 5 Nov 2020 11:59:35 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE--=E5=90=8C=E6=AD=A5=E9=99=90=E5=88=B6?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E6=95=B0=E9=87=8F=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Forms/v3/GoodsActivityLimitForm.php | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivityLimitForm.php b/app/Admin/Forms/v3/GoodsActivityLimitForm.php index 0333920..034ff35 100644 --- a/app/Admin/Forms/v3/GoodsActivityLimitForm.php +++ b/app/Admin/Forms/v3/GoodsActivityLimitForm.php @@ -20,15 +20,36 @@ class GoodsActivityLimitForm extends Form 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, + 'flash_sale' => $input['flash_sale'] ?? 0, + 'group_buy' => $input['group_buy'] ?? 0, + 'new_product' => $input['new_product'] ?? 0, + ]; + $setData = [ + 'buy_num_limit' => 0, + 'banner' => '', + 'show_type' => 'list', + 'index_num_limit' => 6, + 'index_image' => '', + 'index_url' => '', + ]; + $setting = Redis::hgetall(RedisKey::ACTIVITY_TYPE_SETTING); + $settingData = [ + 'flash_sale' => isset($setting['flash_sale']) ? json_decode($setting['flash_sale'],true) : $setData, + 'group_buy' => isset($setting['group_buy']) ? json_decode($setting['group_buy'],true) : $setData, + 'new_product' => isset($setting['new_product']) ? json_decode($setting['new_product'],true) : $setData, + ]; + + $settingData['flash_sale']['buy_num_limit'] = $data['flash_sale']; + $settingData['group_buy']['buy_num_limit'] = $data['group_buy']; + $settingData['new_product']['buy_num_limit'] = $data['new_product']; + + $activitySetting = [ + 'flash_sale' => json_encode($settingData['flash_sale']), + 'group_buy' => json_encode($settingData['group_buy']), + 'new_product' => json_encode($settingData['new_product']), ]; + $res2 = Redis::hmset(RedisKey::ACTIVITY_TYPE_SETTING , $activitySetting); $res = Redis::hmset(RedisKey::ACTIVITY_TYPE_LIMIT_NUMS , $data); if($res){ From d412a5691a26dc085d155786e65ee96ddfb000e7 Mon Sep 17 00:00:00 2001 From: liangyuyan <1103300295@qq.com> Date: Fri, 6 Nov 2020 17:22:33 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=95=86=E5=93=81=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E4=BF=9D=E5=AD=98=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/v3/GoodsActivitySettingForm.php | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/app/Admin/Forms/v3/GoodsActivitySettingForm.php b/app/Admin/Forms/v3/GoodsActivitySettingForm.php index 2e477cd..1653f3b 100644 --- a/app/Admin/Forms/v3/GoodsActivitySettingForm.php +++ b/app/Admin/Forms/v3/GoodsActivitySettingForm.php @@ -41,15 +41,23 @@ class GoodsActivitySettingForm extends Form $activitySetting = [ 'index_activity_type' => $this->indexOptionsValue[$input['index_activity_type']] ?? $this->indexOptionsValue[0] ]; - + $imageUrl = config('filesystems.disks.oss.img_host'); switch($activitySetting['index_activity_type']){ case 'flash_sale': + $banner1 = $input['banner_1']; + $bLen = empty($banner1) ? 1 : strrpos($banner1,'http'); + $banner = $bLen !== false ? $banner1 : $imageUrl.'/'.$banner1 ; + + $image1 = $input['index_image_1']; + $iLen = empty($image1) ? 1 : strrpos($image1,'http'); + $image = $iLen !== false ? $image1 : $imageUrl.'/'.$image1 ; + $setting = [ 'buy_num_limit' => $input['buy_num_limit_1'] ?? 0, - 'banner' => $input['banner_1'] ?? '', + 'banner' => $banner, 'show_type' => $this->typeOptionsValue[$input['show_type_1']] ?? $this->typeOptionsValue[1], 'index_num_limit' => $input['index_num_1'] ?? 6, - 'index_image' => $input['index_image_1'] ?? '', + 'index_image' => $image, 'index_url' => $input['index_url_1'] ?? '', ]; $data = [ @@ -57,12 +65,20 @@ class GoodsActivitySettingForm extends Form ]; break; case 'group_buy': + $banner2 = $input['banner_2']; + $bLen = empty($banner2) ? 2 : strrpos($banner2,'http'); + $banner = $bLen !== false ? $banner2 : $imageUrl.'/'.$banner2 ; + + $image2 = $input['index_image_2']; + $iLen = empty($image2) ? 2 : strrpos($image2,'http'); + $image = $iLen !== false ? $image2 : $imageUrl.'/'.$image2 ; + $setting = [ 'buy_num_limit' => $input['buy_num_limit_2'] ?? 0, - 'banner' => $input['banner_2'] ?? '', + 'banner' => $banner, 'show_type' => $this->typeOptionsValue[$input['show_type_2']] ?? $this->typeOptionsValue[1], 'index_num_limit' => $input['index_num_2'] ?? 6, - 'index_image' => $input['index_image_2'] ?? '', + 'index_image' => $image, 'index_url' => $input['index_url_2'] ?? '', ]; $data = [ @@ -70,12 +86,20 @@ class GoodsActivitySettingForm extends Form ]; break; case 'new_product': + $banner3 = $input['banner_3']; + $bLen = empty($banner3) ? 3 : strrpos($banner3,'http'); + $banner = $bLen !== false ? $banner3 : $imageUrl.'/'.$banner3 ; + + $image3 = $input['index_image_3']; + $iLen = empty($image3) ? 3 : strrpos($image3,'http'); + $image = $iLen !== false ? $image3 : $imageUrl.'/'.$image3 ; + $setting = [ 'buy_num_limit' => $input['buy_num_limit_3'] ?? 0, - 'banner' => $input['banner_3'] ?? '', + 'banner' => $banner, 'show_type' => $this->typeOptionsValue[$input['show_type_3']] ?? $this->typeOptionsValue[1], 'index_num_limit' => $input['index_num_3'] ?? 6, - 'index_image' => $input['index_image_3'] ?? '', + 'index_image' => $image, 'index_url' => $input['index_url_3'] ?? '', ]; $data = [ @@ -134,7 +158,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[1] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_1','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_1','banner')->required()->autoUpload()->saveFullUrl() + $form->image('banner_1','banner')->required()->autoUpload() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); @@ -144,7 +168,7 @@ class GoodsActivitySettingForm extends Form $form->number('index_num_1','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); }) ->when([2],function(Form $form) use($sData){ - $form->image('index_image_1','首页大图')->autoUpload()->saveFullUrl() + $form->image('index_image_1','首页大图')->autoUpload() ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3); @@ -160,7 +184,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[2] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_2','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_2','banner')->required()->autoUpload()->saveFullUrl() + $form->image('banner_2','banner')->required()->autoUpload() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); @@ -169,7 +193,7 @@ class GoodsActivitySettingForm extends Form $form->number('index_num_2','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); }) ->when([2],function(Form $form) use($sData){ - $form->image('index_image_2','首页大图')->autoUpload()->saveFullUrl() + $form->image('index_image_2','首页大图')->autoUpload() ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3); @@ -184,7 +208,7 @@ class GoodsActivitySettingForm extends Form $sData = $settingData[3] ?? []; $showType = $sData['show_type'] ?? 'list'; $form->number('buy_num_limit_3','购买数量限制')->attribute('min', 0)->default(1)->value($buyNumLimit)->width(6)->help('同一活动类型的商品,单笔订单可购买商品个数'); - $form->image('banner_3','banner')->required()->autoUpload()->saveFullUrl() + $form->image('banner_3','banner')->required()->autoUpload() ->customFormat(function() use($sData){ return [$sData['banner'] ?? '']; })->width(3); @@ -194,7 +218,7 @@ class GoodsActivitySettingForm extends Form $form->number('index_num_3','首页显示数量')->value($sData['index_num'] ?? 6)->min(1)->default(6)->width(6); }) ->when([2],function(Form $form) use($sData){ - $form->image('index_image_3','首页大图')->autoUpload()->saveFullUrl() + $form->image('index_image_3','首页大图')->autoUpload() ->customFormat(function() use($sData){ return [$sData['index_image'] ?? '']; })->width(3);