新增微信图文
This commit is contained in:
parent
7152661210
commit
1c9e98ff2a
@ -8,3 +8,56 @@
|
|||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
// | Author: JaguarJack [ njphper@gmail.com ]
|
// | Author: JaguarJack [ njphper@gmail.com ]
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
namespace catchAdmin\wechat\controller;
|
||||||
|
|
||||||
|
use catchAdmin\wechat\repository\WechatGraphicRepository;
|
||||||
|
use catchAdmin\wechat\repository\WechatUsersRepository;
|
||||||
|
use catcher\base\CatchController;
|
||||||
|
use catcher\base\CatchRequest;
|
||||||
|
use catcher\CatchResponse;
|
||||||
|
use catcher\library\WeChat;
|
||||||
|
use catcher\Utils;
|
||||||
|
use think\facade\Console;
|
||||||
|
use think\Request;
|
||||||
|
|
||||||
|
class Graphic extends CatchController
|
||||||
|
{
|
||||||
|
protected $graphic;
|
||||||
|
|
||||||
|
public function __construct(WechatGraphicRepository $graphic)
|
||||||
|
{
|
||||||
|
$this->graphic = $graphic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* list
|
||||||
|
*
|
||||||
|
* @time 2020年06月27日
|
||||||
|
* @param CatchRequest $request
|
||||||
|
* @return \think\response\Json
|
||||||
|
*/
|
||||||
|
public function index(CatchRequest $request)
|
||||||
|
{
|
||||||
|
return CatchResponse::paginate($this->graphic->getList($request->param()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function read($id)
|
||||||
|
{
|
||||||
|
return CatchResponse::success($this->graphic->findBy($id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function save(CatchRequest $request)
|
||||||
|
{
|
||||||
|
return CatchResponse::success($this->graphic->storeBy($request->param()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update($id, Request $request)
|
||||||
|
{
|
||||||
|
return CatchResponse::success($this->graphic->updateBy($id, $request->param()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function delete($id)
|
||||||
|
{
|
||||||
|
return CatchResponse::success($this->graphic->deleteBy($id));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use think\migration\Migrator;
|
||||||
|
use think\migration\db\Column;
|
||||||
|
use Phinx\Db\Adapter\MysqlAdapter;
|
||||||
|
|
||||||
|
class WechatGraphic extends Migrator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Change Method.
|
||||||
|
*
|
||||||
|
* Write your reversible migrations using this method.
|
||||||
|
*
|
||||||
|
* More information on writing migrations is available here:
|
||||||
|
* http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
|
||||||
|
*
|
||||||
|
* The following commands can be used in this method and Phinx will
|
||||||
|
* automatically reverse them when rolling back:
|
||||||
|
*
|
||||||
|
* createTable
|
||||||
|
* renameTable
|
||||||
|
* addColumn
|
||||||
|
* renameColumn
|
||||||
|
* addIndex
|
||||||
|
* addForeignKey
|
||||||
|
*
|
||||||
|
* Remember to call "create()" or "update()" and NOT "save()" when working
|
||||||
|
* with the Table class.
|
||||||
|
*/
|
||||||
|
public function change()
|
||||||
|
{
|
||||||
|
$table = $this->table('wechat_graphic', ['engine' => 'InnoDB', 'collation' => 'utf8mb4_general_ci', 'comment' => '微信图文管理' ,'id' => 'id','signed' => true ,'primary_key' => ['id']]);
|
||||||
|
$table->addColumn('title', 'string', ['limit' => 255, 'comment' => '标题',]) ->addColumn('author', 'string', ['default' => 'admin', 'limit' => 20,'signed' => true,'comment' => '作者'])
|
||||||
|
->addColumn('parent_id', 'integer', ['default' => 0, 'limit' => MysqlAdapter::INT_REGULAR,'signed' => true,'comment' => '图文第一篇'])
|
||||||
|
->addColumn('cover', 'string', ['limit' => 255,'signed' => true,'comment' => '封面'])
|
||||||
|
->addColumn('content', 'text', ['comment' => '内容'])
|
||||||
|
->addColumn('creator_id', 'integer', ['limit' => MysqlAdapter::INT_REGULAR,'null' => false,'default' => 0,'signed' => true,'comment' => '创建人ID',])
|
||||||
|
->addColumn('created_at', 'integer', ['limit' => MysqlAdapter::INT_REGULAR,'null' => false,'default' => 0,'signed' => true,'comment' => '创建时间',])
|
||||||
|
->addColumn('updated_at', 'integer', ['limit' => MysqlAdapter::INT_REGULAR,'null' => false,'default' => 0,'signed' => true,'comment' => '更新时间',])
|
||||||
|
->addColumn('deleted_at', 'integer', ['limit' => MysqlAdapter::INT_REGULAR,'null' => false,'default' => 0,'signed' => true,'comment' => '软删除',])
|
||||||
|
->create();
|
||||||
|
}
|
||||||
|
}
|
146
catch/wechat/database/seeds/permissionSeed.php
Normal file
146
catch/wechat/database/seeds/permissionSeed.php
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use think\migration\Seeder;
|
||||||
|
|
||||||
|
class PermissionSeed extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run Method.
|
||||||
|
*
|
||||||
|
* Write your database seeder using this method.
|
||||||
|
*
|
||||||
|
* More information on writing seeders is available here:
|
||||||
|
* http://docs.phinx.org/en/latest/seeding.html
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
\catcher\Utils::importTreeData($this->getPermissions(), 'permissions', 'parent_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getPermissions()
|
||||||
|
{
|
||||||
|
return array (
|
||||||
|
0 =>
|
||||||
|
array (
|
||||||
|
'id' => 66,
|
||||||
|
'permission_name' => '微信管理',
|
||||||
|
'parent_id' => 0,
|
||||||
|
'level' => '',
|
||||||
|
'route' => '/wechat',
|
||||||
|
'icon' => 'wechat',
|
||||||
|
'module' => 'wechat',
|
||||||
|
'creator_id' => 1,
|
||||||
|
'method' => 'get',
|
||||||
|
'permission_mark' => 'wechat',
|
||||||
|
'component' => 'routeView',
|
||||||
|
'redirect' => '',
|
||||||
|
'hide_children_in_menu' => 2,
|
||||||
|
'keepalive' => 1,
|
||||||
|
'type' => 1,
|
||||||
|
'status' => 1,
|
||||||
|
'sort' => 1,
|
||||||
|
'created_at' => 1591603025,
|
||||||
|
'updated_at' => 1593044101,
|
||||||
|
'deleted_at' => 0,
|
||||||
|
'children' =>
|
||||||
|
array (
|
||||||
|
0 =>
|
||||||
|
array (
|
||||||
|
'id' => 67,
|
||||||
|
'permission_name' => '微信菜单',
|
||||||
|
'parent_id' => 66,
|
||||||
|
'level' => '66',
|
||||||
|
'route' => '/wechat/menus',
|
||||||
|
'icon' => 'table',
|
||||||
|
'module' => 'wechat',
|
||||||
|
'creator_id' => 1,
|
||||||
|
'method' => 'get',
|
||||||
|
'permission_mark' => 'menus',
|
||||||
|
'component' => 'menus',
|
||||||
|
'redirect' => '',
|
||||||
|
'hide_children_in_menu' => 2,
|
||||||
|
'keepalive' => 1,
|
||||||
|
'type' => 1,
|
||||||
|
'status' => 1,
|
||||||
|
'sort' => 1,
|
||||||
|
'created_at' => 1591603088,
|
||||||
|
'updated_at' => 1591603427,
|
||||||
|
'deleted_at' => 0,
|
||||||
|
),
|
||||||
|
1 =>
|
||||||
|
array (
|
||||||
|
'id' => 75,
|
||||||
|
'permission_name' => '用户管理',
|
||||||
|
'parent_id' => 66,
|
||||||
|
'level' => '66',
|
||||||
|
'route' => '/wechat/users',
|
||||||
|
'icon' => 'team',
|
||||||
|
'module' => 'wechat',
|
||||||
|
'creator_id' => 1,
|
||||||
|
'method' => 'get',
|
||||||
|
'permission_mark' => 'users',
|
||||||
|
'component' => 'pageView',
|
||||||
|
'redirect' => '',
|
||||||
|
'hide_children_in_menu' => 2,
|
||||||
|
'keepalive' => 1,
|
||||||
|
'type' => 1,
|
||||||
|
'status' => 1,
|
||||||
|
'sort' => 1,
|
||||||
|
'created_at' => 1592624761,
|
||||||
|
'updated_at' => 1592631716,
|
||||||
|
'deleted_at' => 0,
|
||||||
|
'children' =>
|
||||||
|
array (
|
||||||
|
0 =>
|
||||||
|
array (
|
||||||
|
'id' => 76,
|
||||||
|
'permission_name' => '微信用户',
|
||||||
|
'parent_id' => 75,
|
||||||
|
'level' => '66-75',
|
||||||
|
'route' => '/wechat/users',
|
||||||
|
'icon' => 'user',
|
||||||
|
'module' => 'wechat',
|
||||||
|
'creator_id' => 1,
|
||||||
|
'method' => 'get',
|
||||||
|
'permission_mark' => 'users',
|
||||||
|
'component' => 'wechatUsers',
|
||||||
|
'redirect' => '',
|
||||||
|
'hide_children_in_menu' => 2,
|
||||||
|
'keepalive' => 1,
|
||||||
|
'type' => 1,
|
||||||
|
'status' => 1,
|
||||||
|
'sort' => 1,
|
||||||
|
'created_at' => 1592624799,
|
||||||
|
'updated_at' => 1592624799,
|
||||||
|
'deleted_at' => 0,
|
||||||
|
),
|
||||||
|
1 =>
|
||||||
|
array (
|
||||||
|
'id' => 77,
|
||||||
|
'permission_name' => '微信标签',
|
||||||
|
'parent_id' => 75,
|
||||||
|
'level' => '66-75',
|
||||||
|
'route' => '/wechat/tags',
|
||||||
|
'icon' => 'tags',
|
||||||
|
'module' => 'wechat',
|
||||||
|
'creator_id' => 1,
|
||||||
|
'method' => 'get',
|
||||||
|
'permission_mark' => 'wechatTags',
|
||||||
|
'component' => 'wechatTags',
|
||||||
|
'redirect' => '',
|
||||||
|
'hide_children_in_menu' => 2,
|
||||||
|
'keepalive' => 1,
|
||||||
|
'type' => 1,
|
||||||
|
'status' => 1,
|
||||||
|
'sort' => 1,
|
||||||
|
'created_at' => 1592722634,
|
||||||
|
'updated_at' => 1592812960,
|
||||||
|
'deleted_at' => 0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
35
catch/wechat/model/WechatGraphic.php
Normal file
35
catch/wechat/model/WechatGraphic.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | CatchAdmin [Just Like ~ ]
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Copyright (c) 2017~2020 http://catchadmin.com All rights reserved.
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Licensed ( https://github.com/yanwenwu/catch-admin/blob/master/LICENSE.txt )
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
// | Author: JaguarJack [ njphper@gmail.com ]
|
||||||
|
// +----------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace catchAdmin\wechat\model;
|
||||||
|
|
||||||
|
use catcher\base\CatchModel as Model;
|
||||||
|
use catcher\traits\db\BaseOptionsTrait;
|
||||||
|
|
||||||
|
class WechatGraphic extends Model
|
||||||
|
{
|
||||||
|
protected $name = 'wechat_graphic';
|
||||||
|
|
||||||
|
protected $field = [
|
||||||
|
'id', //
|
||||||
|
'title', // 标题
|
||||||
|
'author', // 作者
|
||||||
|
'parent_id', // 图文第一篇
|
||||||
|
'cover', // 封面
|
||||||
|
'content', // 内容
|
||||||
|
'creator_id', // 创建人ID
|
||||||
|
'created_at', // 创建时间
|
||||||
|
'updated_at', // 更新时间
|
||||||
|
'deleted_at', // 软删除
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -8,3 +8,146 @@
|
|||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
// | Author: JaguarJack [ njphper@gmail.com ]
|
// | Author: JaguarJack [ njphper@gmail.com ]
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
|
namespace catchAdmin\wechat\repository;
|
||||||
|
|
||||||
|
use catcher\base\CatchRepository;
|
||||||
|
use catchAdmin\wechat\model\WechatGraphic;
|
||||||
|
use catcher\exceptions\FailedException;
|
||||||
|
|
||||||
|
class WechatGraphicRepository extends CatchRepository
|
||||||
|
{
|
||||||
|
protected $wechatGraphic;
|
||||||
|
|
||||||
|
public function __construct(WechatGraphic $graphic)
|
||||||
|
{
|
||||||
|
$this->wechatGraphic = $graphic;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function model()
|
||||||
|
{
|
||||||
|
return $this->wechatGraphic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取
|
||||||
|
*
|
||||||
|
* @time 2020年06月27日
|
||||||
|
* @param array $params
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getList(array $params)
|
||||||
|
{
|
||||||
|
// 父级
|
||||||
|
$list = $this->wechatGraphic
|
||||||
|
->where('parent_id', 0)
|
||||||
|
->paginate();
|
||||||
|
// 子级
|
||||||
|
$subList = $this->wechatGraphic
|
||||||
|
->whereIn('parent_id', $list->column('id'))
|
||||||
|
->select();
|
||||||
|
|
||||||
|
foreach ($list as &$item) {
|
||||||
|
$item->children = $subList->where('parent_id', $item->id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
*
|
||||||
|
* @time 2020年06月27日
|
||||||
|
* @param array $data
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function storeBy(array $data)
|
||||||
|
{
|
||||||
|
$creatorId = $data['creator_id'];
|
||||||
|
$articles = $data['articles'];
|
||||||
|
|
||||||
|
$first = array_shift($articles);
|
||||||
|
$first['creator_id'] = $creatorId;
|
||||||
|
$parentId = parent::storeBy($first);
|
||||||
|
|
||||||
|
foreach ($articles as &$article) {
|
||||||
|
$article['parent_id'] = $parentId;
|
||||||
|
$article['creator_id'] = $creatorId;
|
||||||
|
$article['created_at'] = $article['updated_at'] = time();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->wechatGraphic->insertAll($articles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查找
|
||||||
|
*
|
||||||
|
* @time 2020年06月28日
|
||||||
|
* @param int $id
|
||||||
|
* @param array|string[] $column
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function findBy(int $id, array $column = ['*'])
|
||||||
|
{
|
||||||
|
$field = ['id', 'title', 'author', 'cover', 'content'];
|
||||||
|
|
||||||
|
$article = [parent::findBy($id, $field)->toArray()];
|
||||||
|
|
||||||
|
return array_merge($article, $this->wechatGraphic->field($field)->where('parent_id', $id)->select()->toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新
|
||||||
|
*
|
||||||
|
* @time 2020年06月28日
|
||||||
|
* @param int $id
|
||||||
|
* @param array $data
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateBy(int $id, array $data)
|
||||||
|
{
|
||||||
|
$articles = $data['articles'];
|
||||||
|
$this->wechatGraphic->startTrans();
|
||||||
|
$updateStatus = true;
|
||||||
|
foreach ($articles as $article) {
|
||||||
|
$id = $article['id'];
|
||||||
|
unset($article['id']);
|
||||||
|
if ($this->wechatGraphic->where('id', $id)
|
||||||
|
->update($article) === false) {
|
||||||
|
$updateStatus = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$updateStatus) {
|
||||||
|
$this->wechatGraphic->rollback();
|
||||||
|
throw new FailedException('更新失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->wechatGraphic->commit();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
*
|
||||||
|
* @time 2020年06月28日
|
||||||
|
* @param int $id
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function deleteBy(int $id)
|
||||||
|
{
|
||||||
|
if (parent::deleteBy($id)) {
|
||||||
|
return $this->wechatGraphic
|
||||||
|
->where('parent_id', $id)
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
throw new FailedException('删除失败');
|
||||||
|
}
|
||||||
|
}
|
@ -28,6 +28,10 @@ $router->group('wechat', function () use ($router){
|
|||||||
$router->resource('', '\catchAdmin\wechat\controller\Menus');
|
$router->resource('', '\catchAdmin\wechat\controller\Menus');
|
||||||
$router->post('sync', '\catchAdmin\wechat\controller\Menus@sync');
|
$router->post('sync', '\catchAdmin\wechat\controller\Menus@sync');
|
||||||
});
|
});
|
||||||
|
// 图文管理
|
||||||
|
$router->group('official/graphic', function () use ($router){
|
||||||
|
$router->resource('', '\catchAdmin\wechat\controller\Graphic');
|
||||||
|
});
|
||||||
})->middleware('auth');
|
})->middleware('auth');
|
||||||
|
|
||||||
// 消息
|
// 消息
|
||||||
|
Loading…
x
Reference in New Issue
Block a user