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'; }