一、问题
35 个后台接口此前无任何可用界面:FastAdmin PC 后台 110 条菜单里 0 条业务菜单,
小程序端仅有 1 个 LOGO/图标设置页 → 后台功能实际上无处可操作。
二、方案(FastAdmin 原生机制)
- 用 `php think crud` 为 17 张业务表生成管理模块:
控制器 application/admin/controller/fc/*.php(继承 Backend)
模型 application/admin/model/Fc*.php
视图 application/admin/view/fc/*/{index,add,edit}.html
后台 JS public/assets/js/backend/fc/*.js
语言包 application/admin/lang/zh-cn/fc/*.php
- 菜单结构固化进安装器 application/admin/command/FcInstall.php 的 menu()(幂等):
同城业务 ├─ 内容管理 分类管理/轮播管理/信息管理/评价管理/举报处理
├─ 用户与商家 商家管理/会员管理/消息管理
├─ 交易管理 订单管理/会员套餐/资金流水/佣金明细/付费查看记录
├─ 分销管理 分销关系/提现审核
└─ 基础数据 服务区域/草稿箱
三、业务动作(一键操作,含列表页按钮)
- fc/post: audit(审核通过/驳回 + 分类信息量 + 站内信) / offline(下架)
- fc/merchant: audit(资质审核 + 同步用户身份 + 店铺状态)
- fc/withdraw: pay(打款/驳回 + 资金流水 + 拒绝须填原因)
- fc/order: refund(退款) / supplement(按订单号补单 + 流水)
- fc/comment: reply(回复) / top(置顶)
- fc/report: handle(标记已处理)
四、验证
- 后台登录后业务页 HTTP 200,controllername/jsname 正确解析
- 列表数据真实加载:分类 8 / 信息 6 / 订单 4 / 提现 3 / 商家 4
- 侧边栏 5 个中文分组菜单正常渲染
99 行
2.7 KiB
PHP
99 行
2.7 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller\fc;
|
|
|
|
use app\common\controller\Backend;
|
|
use think\Db;
|
|
|
|
/**
|
|
* 同城-评价
|
|
*
|
|
* @icon fa fa-circle-o
|
|
*/
|
|
class Comment extends Backend
|
|
{
|
|
|
|
/**
|
|
* FcComment模型对象
|
|
* @var \app\admin\model\FcComment
|
|
*/
|
|
protected $model = null;
|
|
|
|
public function _initialize()
|
|
{
|
|
parent::_initialize();
|
|
$this->model = new \app\admin\model\FcComment;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
|
|
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
|
|
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
|
|
*/
|
|
|
|
/**
|
|
* 回复评价
|
|
*/
|
|
public function reply()
|
|
{
|
|
$ids = $this->request->post('ids');
|
|
$reply = $this->request->post('reply');
|
|
if (trim((string)$reply) === '') {
|
|
$this->error('回复内容不能为空');
|
|
}
|
|
$ids = is_array($ids) ? $ids : explode(',', (string)$ids);
|
|
$ids = array_filter($ids);
|
|
if (!$ids) {
|
|
$this->error('请选择要回复的评价');
|
|
}
|
|
$comments = Db::name('fc_comment')->where('id', 'in', $ids)->select();
|
|
if (!$comments) {
|
|
$this->error('评价不存在');
|
|
}
|
|
foreach ($comments as $comment) {
|
|
Db::name('fc_comment')->where('id', $comment['id'])->update([
|
|
'reply' => $reply,
|
|
'replytime' => time(),
|
|
'updatetime' => time(),
|
|
]);
|
|
Db::name('fc_message')->insert([
|
|
'user_id' => $comment['user_id'],
|
|
'type' => 'interact',
|
|
'title' => '评价回复',
|
|
'content' => '您的评价已收到回复:' . $reply,
|
|
'isread' => 0,
|
|
'createtime' => time(),
|
|
]);
|
|
}
|
|
$this->success('回复成功');
|
|
}
|
|
|
|
/**
|
|
* 评价置顶/取消置顶
|
|
*/
|
|
public function top()
|
|
{
|
|
$ids = $this->request->post('ids');
|
|
$top = (int)$this->request->post('top');
|
|
if (!in_array($top, [0, 1])) {
|
|
$this->error('置顶状态错误');
|
|
}
|
|
$ids = is_array($ids) ? $ids : explode(',', (string)$ids);
|
|
$ids = array_filter($ids);
|
|
if (!$ids) {
|
|
$this->error('请选择要操作的评价');
|
|
}
|
|
Db::name('fc_comment')->where('id', 'in', $ids)->update([
|
|
'top' => $top,
|
|
'updatetime' => time(),
|
|
]);
|
|
$this->success($top === 1 ? '置顶成功' : '取消置顶成功');
|
|
}
|
|
|
|
|
|
|
|
}
|