新增微信图文
This commit is contained in:
parent
7152661210
commit
1c9e98ff2a
@ -8,3 +8,56 @@
|
||||
// +----------------------------------------------------------------------
|
||||
// | 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 ]
|
||||
// +----------------------------------------------------------------------
|
||||
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->post('sync', '\catchAdmin\wechat\controller\Menus@sync');
|
||||
});
|
||||
// 图文管理
|
||||
$router->group('official/graphic', function () use ($router){
|
||||
$router->resource('', '\catchAdmin\wechat\controller\Graphic');
|
||||
});
|
||||
})->middleware('auth');
|
||||
|
||||
// 消息
|
||||
|
Loading…
x
Reference in New Issue
Block a user