// +---------------------------------------------------------------------- declare (strict_types = 1); namespace addon\docs; use think\facade\Db; use ywxapp\AddonBase; /** * 文档中心插件 * * 菜单与建表/种子数据由框架统一处理: * - 菜单:addon/docs/menu.json * - 数据:addon/docs/install.sql(框架 importsql 白名单执行 CREATE TABLE / INSERT) * * @author ywxapp */ class Addon extends addon { /** * 安装钩子 */ public function install() { return true; } /** * 卸载钩子 * * 框架 AddonService::deleteMenu() 只清理 admin_power, * 这里补清 user_rule 中本插件的前端菜单(按 name 前缀),避免残留。 * 采用物理删除,防止软删除后唯一键 name 冲突导致重装失败。 */ public function uninstall() { Db::execute("DELETE FROM wxapp_user_rule WHERE name LIKE 'docs:%'"); Db::execute("DELETE FROM wxapp_user_rule WHERE name LIKE 'docs/%'"); Db::execute("DELETE FROM wxapp_admin_power WHERE addon='docs'"); return true; } /** * 启用钩子:清理目录树缓存 */ public function enabled() { \think\facade\Cache::tag('docs_tree')->clear(); return true; } /** * 禁用钩子:清理目录树缓存 */ public function disabled() { \think\facade\Cache::tag('docs_tree')->clear(); return true; } }