技术栈选择

前端技术栈

  • 微信小程序:使用WXML、WXSS、JavaScript开发,兼容微信生态。
  • UI框架:可选Vant Weapp或WeUI,提供标准化组件。
  • 图表库:ECharts-for-WeChat,用于统计报表展示。

后端技术栈

  • 服务器:Node.js(Express/Koa)或Java(Spring Boot)。
  • 数据库:MySQL或MongoDB,关系型数据库适合设备管理,非关系型适合日志存储。
  • 云服务:腾讯云开发(TCB)或自建API,集成微信登录和云存储。

辅助工具

  • 二维码生成:QRCode.js或后端库(如Python的qrcode)。
  • 消息推送:微信模板消息或订阅消息API。

详细功能设计

用户端功能

  • 扫码报修:通过扫描设备二维码自动填充设备信息(如设备ID、位置)。
  • 报修表单:提交故障类型、描述、图片上传(调用微信相机API)。
  • 进度查询:实时显示维修状态(待处理/处理中/已完成)。
  • 评价反馈:维修完成后对服务评分和评论。

管理端功能

  • 工单管理:分类查看、分配工单,支持按紧急度筛选。
  • 数据统计:按部门/设备类型生成故障率报表。
  • 设备管理:CRUD操作,批量导入设备信息(Excel解析)。
  • 通知推送:向维修人员发送微信通知(使用openid绑定账号)。

数据库设计

核心表结构

  • 设备表(equipment)

    CREATE TABLE equipment (
      id VARCHAR(32) PRIMARY KEY,  -- 设备唯一标识
      name VARCHAR(50),            -- 设备名称
      location VARCHAR(100),       -- 安装位置
      qr_code_url VARCHAR(255)     -- 二维码存储路径
    );
    

  • 报修工单表(repair_order)

    CREATE TABLE repair_order (
      order_id VARCHAR(32) PRIMARY KEY,
      equipment_id VARCHAR(32) FOREIGN KEY REFERENCES equipment(id),
      reporter_openid VARCHAR(100), -- 微信用户标识
      status ENUM('pending', 'processing', 'completed'),
      created_at DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    

关联表

  • 维修记录表(maintenance_log):关联工单ID、维修人员、处理耗时。
  • 评价表(feedback):关联工单ID、评分(1-5星)、文字评价。

系统测试设计

功能测试用例

  • 扫码报修流程:模拟扫描不同设备二维码,验证自动填充准确性。
  • 并发提交测试:使用JMeter模拟多用户同时报修,检查数据库锁和响应时间。

安全测试

  • SQL注入检测:输入特殊字符(如' OR 1=1 --)测试表单提交。
  • 权限校验:未登录用户直接访问管理API,预期返回401状态码。

性能优化

  • 二维码生成缓存:首次生成后存储至COS,避免重复计算。
  • 数据库索引:为equipment_id和status字段添加索引,加速查询。

源码结构示例

小程序端目录

/miniprogram
  /pages
    /index       -- 扫码首页
    /form        -- 报修表单页
  /utils
    api.js       -- 封装网络请求
    qrcode.js    -- 二维码解析逻辑

后端示例代码(Node.js)

// 工单状态更新API
router.post('/order/update', async (ctx) => {
  const { orderId, status } = ctx.request.body;
  await db.query('UPDATE repair_order SET status=? WHERE order_id=?', [status, orderId]);
  ctx.body = { code: 200 };
});

注意事项

  • 微信小程序需配置合法域名(HTTPS)。
  • 敏感操作(如工单删除)需增加管理员权限中间件。

更多推荐