Browse Source

Merge branch 'index_share_1104'

# Conflicts:
#	app/Admin/routes.php
#	app/Libs/Redis/RedisKey.php
master
liangyuyan 5 years ago
parent
commit
3e2e24b3e0
  1. 34
      app/Admin/Actions/Grid/v3/ShareCardCreate.php
  2. 40
      app/Admin/Actions/Grid/v3/ShareCardDelete.php
  3. 39
      app/Admin/Actions/Grid/v3/ShareCardEdit.php
  4. 74
      app/Admin/Controllers/v3/ShareCardSettingController.php
  5. 10
      app/Admin/Controllers/v3/SystemConfigController.php
  6. 101
      app/Admin/Forms/v3/OfficialSubscribeInfoForm.php
  7. 61
      app/Admin/Forms/v3/ShareCardCreateForm.php
  8. 69
      app/Admin/Forms/v3/ShareCardEditForm.php
  9. 25
      app/Admin/Repositories/v3/ShareCardSetting.php
  10. 5
      app/Admin/routes.php
  11. 4
      app/Libs/Redis/RedisKey.php
  12. 15
      resources/lang/zh-CN/share-card-setting.php
  13. 3
      resources/lang/zh-CN/system-config.php

34
app/Admin/Actions/Grid/v3/ShareCardCreate.php

@ -0,0 +1,34 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\v3\ShareCardCreateForm;
class ShareCardCreate extends RowAction
{
/**
* @return string
*/
protected $title = '<button class="btn btn-primary btn-outline">添加</button>';
public function render()
{
$modal = Modal::make()
->xl()
->title('分享卡片添加')
->body(ShareCardCreateForm::make())
->button($this->title);
return $modal;
}
public function parameters()
{
return [
];
}
}

40
app/Admin/Actions/Grid/v3/ShareCardDelete.php

@ -0,0 +1,40 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Illuminate\Support\Facades\Redis;
use App\Libs\Redis\RedisKey;
use Illuminate\Http\Request;
class ShareCardDelete extends RowAction
{
/**
* @return string
*/
protected $title = ' 删除 ';
public function handle(Request $request)
{
$id = $request->get('id');
$res = Redis::hdel(RedisKey::PROGRAM_SHARE_CARD ,$id);
if($res !== false){
return $this->response()->success('删除成功!','/share_card_setting');
}else{
return $this->response()->error('删除失败!');
}
}
// 确认弹窗信息
public function confirm()
{
return '您确定要删除吗?';
}
public function parameters()
{
return [
'id' => $this->row->id ?? 0
];
}
}

39
app/Admin/Actions/Grid/v3/ShareCardEdit.php

@ -0,0 +1,39 @@
<?php
namespace App\Admin\Actions\Grid\v3;
use Dcat\Admin\Grid\RowAction;
use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\v3\ShareCardEditForm;
class ShareCardEdit extends RowAction
{
/**
* @return string
*/
protected $title = ' 编辑 ';
public function render()
{
$modal = Modal::make()
->xl()
->title('编辑')
->body(ShareCardEditForm::make()->payload([
'id'=>$this->row->id,
'title'=>$this->row->title,
'image'=>$this->row->image
]))
->button($this->title);
return $modal;
}
public function parameters()
{
return [
];
}
}

74
app/Admin/Controllers/v3/ShareCardSettingController.php

@ -0,0 +1,74 @@
<?php
namespace App\Admin\Controllers\v3;
use App\Admin\Actions\Grid\v3\ShareCardCreate;
use App\Admin\Actions\Grid\v3\ShareCardDelete;
use App\Admin\Actions\Grid\v3\ShareCardEdit;
use App\Admin\Repositories\v3\ShareCardSetting;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
class ShareCardSettingController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new ShareCardSetting(), function (Grid $grid) {
$grid->column('id');
$grid->column('title');
$grid->column('image')->image('',80);
$grid->tools([new ShareCardCreate()]);
$grid->actions([new ShareCardEdit(), new ShareCardDelete()]);
// 每页1条
$grid->paginate(10);
$grid->disableCreateButton();
$grid->disableBatchActions();
$grid->disableBatchDelete();
$grid->toolsWithOutline();
$grid->disableDeleteButton();
$grid->disableEditButton();
$grid->disableQuickEditButton();
$grid->disableViewButton();
// $grid->disableActions();
$grid->disableRowSelector();
$grid->disableFilter();
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new ShareCardSetting(), function (Show $show) {
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new ShareCardSetting(), function (Form $form) {
});
}
}

10
app/Admin/Controllers/v3/SystemConfigController.php

@ -2,11 +2,14 @@
namespace App\Admin\Controllers\v3;
use App\Admin\Forms\v3\OfficialSubscribeInfoForm;
use App\Admin\Repositories\v3\SystemConfig;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Widgets\Card;
use App\Models\v3\SystemConfig as SystemConfigModel;
use App\Libs\SsdbClient;
use App\Constants\v3\SsdbKeys;
@ -117,4 +120,11 @@ class SystemConfigController extends AdminController
$form->disableCreatingCheck();
});
}
public function OfficialSubscribeInfoSettingForm(Content $content)
{
return $content
->title('关注公众号设置')
->body(new Card(new OfficialSubscribeInfoForm()));
}
}

101
app/Admin/Forms/v3/OfficialSubscribeInfoForm.php

@ -0,0 +1,101 @@
<?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;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use function Graze\GuzzleHttp\JsonRpc\json_decode;
class OfficialSubscribeInfoForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
$subscribed = [
'head_title' => $input['head_title'],
'logo' => $input['logo'],
'title' => $input['title'],
'sub_title' => $input['sub_title'],
'redirect_url' => $input['redirect_url'],
];
$notSubscribed = [
'head_title' => $input['not_head_title'],
'logo' => $input['not_logo'],
'title' => $input['not_title'],
'sub_title' => $input['not_sub_title'],
'redirect_url' => $input['not_redirect_url'],
];
$data = [
'subscribed' => json_encode($subscribed),
'not_subscribed' => json_encode($notSubscribed)
];
$res = Redis::hmset(RedisKey::OFFICIAL_SUBSCRIBE_INFO, $data);
if($res !== false){
return $this->success('修改成功','/official_subscribe_info');
}else{
return $this->error('修改失败');
}
}
/**
* Build a form here.
*/
public function form()
{
$data = Redis::hgetall(RedisKey::OFFICIAL_SUBSCRIBE_INFO);
$subscribed = isset($data['subscribed']) ? json_decode( $data['subscribed'],true):[];
$notSubscribed = isset($data['not_subscribed']) ? json_decode( $data['not_subscribed'],true):[];
$this->column(6,function(Form $form) use($subscribed){
$this->display( 'setting', ' ')->value('已关注公众号提示信息设置');
$this->text('head_title','顶部标题')->required()->value($subscribed['head_title']);
$this->image('logo','公众号logo连接')->required()->autoUpload()->saveFullUrl()
->customFormat(function() use($subscribed){
return [$subscribed['logo']];
});
$this->text('title','公众号名称或标题')->required()->value($subscribed['title']);
$this->text('sub_title','副标题,提示语')->required()->value($subscribed['sub_title']);
$this->text('redirect_url','跳转连接')->required()->value($subscribed['redirect_url']);
});
$this->column(6,function(Form $form) use($notSubscribed){
$this->display( 'setting', ' ')->value('未关注公众号提示信息设置');
$this->text('not_head_title','顶部标题')->required()->value($notSubscribed['head_title']);
$this->image('not_logo','公众号logo连接')->required()->autoUpload()->saveFullUrl()
->customFormat(function() use($notSubscribed){
return [$notSubscribed['logo']];
});
$this->text('not_title','公众号名称或标题')->required()->value($notSubscribed['title']);
$this->text('not_sub_title','副标题,提示语')->required()->value($notSubscribed['sub_title']);
$this->text('not_redirect_url','跳转连接')->required()->value($notSubscribed['redirect_url']);
});
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

61
app/Admin/Forms/v3/ShareCardCreateForm.php

@ -0,0 +1,61 @@
<?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 ShareCardCreateForm extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
$list = Redis::hgetall(RedisKey::PROGRAM_SHARE_CARD);
$id = count($list) + 1;
$data = [
'id' => $id,
'title' => $input['title'],
'image' => $input['image']
];
$data = json_encode($data);
$res = Redis::hset(RedisKey::PROGRAM_SHARE_CARD ,$id, $data);
if($res){
return $this->success('添加成功','/share_card_setting');
}else{
return $this->error('添加失败');
}
}
/**
* Build a form here.
*/
public function form()
{
$this->display('setting' , ' ')->value('小程序分享卡片设置');
$this->text('title','标题')->required();
$this->image('image','图片')->required()->autoUpload()->saveFullUrl()->width(3);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

69
app/Admin/Forms/v3/ShareCardEditForm.php

@ -0,0 +1,69 @@
<?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;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
class ShareCardEditForm extends Form implements LazyRenderable
{
use LazyWidget;
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
$id = $input['id'];
$data = [
'id' => $id,
'title' => $input['title'],
'image' => $input['image']
];
$data = json_encode($data);
$res = Redis::hset(RedisKey::PROGRAM_SHARE_CARD ,$id, $data);
if($res !== false){
return $this->success('修改成功','/share_card_setting');
}else{
return $this->error('修改失败');
}
}
/**
* Build a form here.
*/
public function form()
{
$id = $this->payload['id'] ?? 0;
$title = $this->payload['title'] ?? '';
$image = $this->payload['image'] ?? '';
$this->display('setting' , ' ')->value('小程序分享卡片设置');
$this->hidden('id')->value($id);
$this->text('title','标题')->required()->value($title);
$this->image('image','图片')->required()->autoUpload()
->customFormat(function() use($image){
return [$image];
})
->saveFullUrl()->width(3);
}
/**
* The data of the form.
*
* @return array
*/
public function default()
{
return [];
}
}

25
app/Admin/Repositories/v3/ShareCardSetting.php

@ -0,0 +1,25 @@
<?php
namespace App\Admin\Repositories\v3;
use Dcat\Admin\Grid\Model as GridModel;
use Dcat\Admin\Repositories\Repository;
use Illuminate\Support\Facades\Redis;
use App\Libs\Redis\RedisKey;
class ShareCardSetting extends Repository
{
public function get(GridModel $model)
{
$data = Redis::hgetall(RedisKey::PROGRAM_SHARE_CARD);
foreach($data as &$value){
$value = json_decode($value,true);
}
return $model->makePaginator(
count($data),
$data
);
}
}

5
app/Admin/routes.php

@ -99,5 +99,8 @@ Route::group([
// 活动商品设置
$router->get('/goods_activity_setting', 'v3\GoodsActivityController@ActivitySettingForm');
});
// 分享小卡片设置
$router->resource('/share_card_setting', 'v3\ShareCardSettingController');
// 关注公众号设置
$router->any('/official_subscribe_info', 'v3\SystemConfigController@OfficialSubscribeInfoSettingForm');});

4
app/Libs/Redis/RedisKey.php

@ -9,4 +9,8 @@ class RedisKey
const ACTIVITY_TYPE_LIMIT_NUMS = 'activity_type_limit_nums';
const ACTIVITY_TYPE_SETTING = 'activity_type_setting';
const PROGRAM_SHARE_CARD = 'program_share_card';
const OFFICIAL_SUBSCRIBE_INFO = 'official:subscribe_info';
}

15
resources/lang/zh-CN/share-card-setting.php

@ -0,0 +1,15 @@
<?php
return [
'labels' => [
'ShareCardSetting' => '分享设置',
'shareCardSetting' => '分享设置',
'share_card_setting' => '分享设置',
],
'fields' => [
'title' => '标题',
'image' => '图片',
'share_card' => ' '
],
'options' => [
],
];

3
resources/lang/zh-CN/system-config.php

@ -14,7 +14,8 @@ return [
'desc' => '配置简介',
'sort' => '排序',
'status' => '状态',
'status_text' => '状态'
'status_text' => '状态',
'share_card' => ' '
],
'options' => [
],

Loading…
Cancel
Save