店滴开发者手册店滴开发者手册
首页
指南
插件
接口
智能设备
element后台
SDK
首页
指南
插件
接口
智能设备
element后台
SDK
  • 插件

    • 插件开发指南
    • 后台接口
    • 插件API开发指南
    • 后端
    • 目录结构
    • 配置
    • 接口文档
    • 插件模型开发指南
    • 插件搜索功能开发指南
    • 命令行

插件开发指南

1. 插件目录结构

插件是系统的扩展功能模块,位于 addons 目录下,每个插件是一个独立的目录。以下是插件的标准目录结构:

addons/
└─{插件标识}/            # 插件目录,使用唯一标识
    ├─config/            # 配置目录
    │  ├─admin.php       # 后台配置
    │  ├─api.php         # API配置
    │  └─menu.php        # 菜单配置
    ├─sql/               # SQL脚本目录
    │  └─up.sql          # 升级SQL脚本
    ├─admin.php          # 后台接口入口
    ├─api.php            # 手机端接口入口
    ├─console.php        # 控制台入口
    ├─frontend.php       # 页面端入口
    ├─install.php        # 安装入口
    ├─manifest.xml       # 模块配置
    ├─site.php           # 站点入口
    ├─uninstall.php      # 卸载入口
    └─upgrade.php        # 更新入口

1.1 核心文件说明

文件/目录用途必需
admin.php后台接口入口,处理后台管理相关请求否
api.php手机端接口入口,处理移动端API请求否
console.php控制台入口,处理命令行相关操作否
install.php插件安装入口,处理插件安装逻辑是
manifest.xml插件配置文件,定义插件基本信息是
upgrade.php插件升级入口,处理插件版本升级否
uninstall.php插件卸载入口,处理插件卸载逻辑否
config/配置目录,存放各种配置文件否
sql/SQL脚本目录,存放数据库相关脚本否

2. 插件配置文件 (manifest.xml)

manifest.xml 是插件的核心配置文件,包含了插件的基本信息和依赖关系。

2.1 配置示例

<manifest xmlns="https://www.dandicloud.com/" versionCode="1.0">
    <application>
        <title><![CDATA[多商户商城]]></title>
        <identifie><![CDATA[diandi_mall]]></identifie>
        <version><![CDATA[1.0.0]]></version>
        <type><![CDATA[buss]]></type>
        <ability><![CDATA[1]]></ability>
        <description><![CDATA[多商户商城]]></description>
        <author><![CDATA[wanchunsheng]]></author>
        <url><![CDATA[www.baidu.com]]></url>
    </application>
    <bindings>
        <menus>
        </menus>
    </bindings>
    <install><![CDATA[install.php]]></install>
    <uninstall><![CDATA[uninstall.php]]></uninstall>
    <upgrade><![CDATA[upgrade.php]]></upgrade>
</manifest>

2.2 配置项说明

配置项描述必需
title插件标题,显示在后台管理界面是
identifie插件唯一标识,必须与目录名一致是
version插件版本号,遵循语义化版本规范是
type插件类型,如 buss(业务插件)是
ability插件能力值,用于权限控制是
description插件描述,详细说明插件功能是
author插件作者是
url插件官方网站否
install安装入口文件是
uninstall卸载入口文件否
upgrade升级入口文件否

3. 插件安装流程

3.1 安装文件 (install.php)

插件安装文件需要继承 AddonsInstall 类,并设置插件标识。

<?php
namespace addons\diandi_mall;
use common\components\addons\AddonsInstall;

class install extends AddonsInstall
{
    public string $addons = 'diandi_mall';
}

3.2 安装流程

  1. 上传插件到 addons 目录
  2. 在后台管理界面点击「安装」按钮
  3. 系统自动执行以下操作:
    • 读取 manifest.xml 配置文件
    • 执行 install.php 中的安装逻辑
    • 导入 SQL 脚本(如果有)
    • 注册插件到系统

4. 插件升级流程

4.1 升级文件 (upgrade.php)

插件升级文件用于处理版本升级逻辑,确保插件能够平滑升级到新版本。

4.2 升级流程

  1. 更新插件文件到新版本
  2. 在后台管理界面点击「升级」按钮
  3. 系统自动执行以下操作:
    • 读取 manifest.xml 中的版本信息
    • 执行 upgrade.php 中的升级逻辑
    • 导入升级 SQL 脚本(如果有)
    • 更新系统中的插件版本信息

5. 插件卸载流程

5.1 卸载文件 (uninstall.php)

插件卸载文件用于处理插件卸载逻辑,确保插件能够干净地从系统中移除。

5.2 卸载流程

  1. 在后台管理界面点击「卸载」按钮
  2. 系统自动执行以下操作:
    • 执行 uninstall.php 中的卸载逻辑
    • 从系统中移除插件注册信息
    • 保留插件文件(不会自动删除)

6. 插件开发规范

6.1 命名规范

  • 插件目录名必须使用小写字母和下划线,如 diandi_mall
  • 插件标识必须与目录名一致
  • 类名和文件名遵循 PSR-4 命名规范

6.2 目录结构规范

  • 核心入口文件直接放在插件根目录
  • 配置文件放在 config 目录
  • SQL 脚本放在 sql 目录
  • 控制器和模型按照功能模块组织

6.3 代码规范

  • 遵循 PSR-2 代码风格规范
  • 使用命名空间,格式为 addons\\{插件标识}
  • 继承系统提供的基类和接口
  • 遵循系统的事件机制和钩子系统

7. 插件示例

7.1 基础插件结构

以下是一个基础插件的目录结构示例:

addons/
└─my_plugin/
    ├─config/
    │  ├─admin.php
    │  └─api.php
    ├─install.php
    ├─manifest.xml
    ├─admin.php
    ├─api.php
    └─upgrade.php

7.2 完整插件结构

以下是一个完整插件的目录结构示例(参考 diandi_mall):

addons/
└─diandi_mall/
    ├─config/
    │  ├─api.js
    │  └─api.php
    ├─sql/
    │  └─up.sql
    ├─admin.php
    ├─api.php
    ├─console.php
    ├─frontend.php
    ├─install.php
    ├─manifest.xml
    ├─site.php
    ├─uninstall.php
    └─upgrade.php

8. 常见问题

8.1 插件安装失败

可能原因:

  • manifest.xml 配置错误
  • install.php 文件不存在或有语法错误
  • SQL 脚本执行失败
  • 权限不足

解决方案:

  • 检查 manifest.xml 配置是否正确
  • 检查 install.php 文件是否存在且语法正确
  • 检查 SQL 脚本是否有语法错误
  • 确保系统有足够的权限

8.2 插件升级失败

可能原因:

  • 版本号配置错误
  • upgrade.php 文件不存在或有语法错误
  • 升级 SQL 脚本执行失败

解决方案:

  • 检查 manifest.xml 中的版本号配置
  • 检查 upgrade.php 文件是否存在且语法正确
  • 检查升级 SQL 脚本是否有语法错误

8.3 插件无法正常工作

可能原因:

  • 插件依赖的系统功能不存在
  • 插件代码有语法错误
  • 数据库表结构不完整

解决方案:

  • 检查插件是否与当前系统版本兼容
  • 检查插件代码是否有语法错误
  • 检查数据库表结构是否完整

9. 最佳实践

9.1 插件开发建议

  1. 模块化设计:将插件功能拆分为多个模块,便于维护和扩展
  2. 版本管理:使用语义化版本号,确保版本升级的兼容性
  3. 错误处理:完善的错误处理机制,提高插件的稳定性
  4. 性能优化:优化代码和数据库查询,提高插件性能
  5. 安全性:注意代码安全,防止 SQL 注入、XSS 等安全问题

9.2 插件发布建议

  1. 文档完善:提供详细的安装和使用文档
  2. 版本说明:明确标注插件的系统版本要求
  3. 更新日志:记录每次版本更新的内容和变更
  4. 技术支持:提供技术支持渠道,及时响应用户问题

10. 参考插件

系统中已有的插件可以作为开发参考:

  • diandi_mall:多商户商城插件,功能完整的电商系统
  • diandi_oa:办公自动化插件,包含考勤、审批等功能
  • diandi_agent:代理商管理插件,用于管理代理商体系
  • diandi_ai_card:AI 名片插件,用于生成和管理电子名片
  • diandi_equipment:设备管理插件,用于管理设备信息

11. 结语

插件开发是扩展系统功能的重要方式,通过遵循本文档的规范和最佳实践,可以开发出高质量、易维护的插件。希望本文档能够帮助开发者快速上手插件开发,为系统添加更多有价值的功能。

Next
后台接口