程序汪3万10天开发的口罩外包小项目(半外包)

我是程序汪

共 4983字,需浏览 10分钟

 ·

2021-11-08 18:24

本项目来自程序汪背后的私活小团队,开发了一个口罩项目,给粉丝分享一下解决方案,希望给想接私活的朋友一些经验参考


视频版本 在 B站【我是程序汪】


另一个口罩项目的案例,他是蓝牙直接跟硬件对接,本项目是通过MQTT中转对接硬件

程序汪8万接的共享口罩项目,开发周期1个月

目录

  • 一、项目构成

  • 二、开发人员

  • 三、项目背景

  • 四、小程序端

  • 五、后端系统

  • 最后  源码资料分享


项目构成

  • 系统基本构成:APP内嵌H5+ springBoot后台

  • 阿波罗Apache Apollo (MQTT息中转站

  • vue

  • mysql

安装命令

开发人员以及费用情况

  • 开发周期10天 

  • 开发人数 1人   

  • 整体费用是3万(不包含维护费)

  • 走的公司合同

  • 云服务器1台 4核16G配置  数据盘500G

  • 维护费用:项目总款的10% 一年


项目背景

疫情的原因导致口罩需求一直很旺盛,甲方爸爸打算开发一套口罩售卖机器(类似自助售卖机),这种项目其实也不新鲜了,程序汪以前就接到过这种口罩项目,别问我这个项目的意义啊,拿钱干活(程序汪属于干活型),整个口罩项目,我们只做软件部分,硬件和APP部分是另外的团队开发的,这是一个部分外包的项目


程序汪8万接的共享口罩项目,开发周期1个月

核心流程

APP扫自助售卖机二维码 -> 打开H5领取页面 -> 如没有领取记录,则选择领取商品的类型(口罩) -> 后台接收领取请求 -> 发送MQTT请求到服务端 ->  MQTT服务端分发请求给售卖机终端  -> 对应售卖机接收请求执行指令(出货)


APP(H5页面)

APP甲方提供了,我们只需要把开发好的H5页面 嵌套到APP里即可,一期功能非常简单,可以免费领取一只口罩





亮点(比较复杂的)

本项目其实是基于电商项目的二开,口罩也是一种商品,下单购买一个典型的购物流程,CRUD的功能我就不废话了,主意是和硬件接口的对接,我们采取的方案是利用Apache Apollo当MQTT的消息中转站


1.Apollo下载

下载地址:http://activemq.apache.org/apollo/download.html

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议





Apollo是一个多协议代理,支持STOMP,AMQP,MQTT,Openwire,SSL和WebSockets。就是在服务器端创建一个唯一订阅号,发送者可以向这个订阅号中发东西,然后接受者(即订阅了这个订阅号的人)都会收到这个订阅号发出来的消息。以此来完成消息的推送。服务器其实是一个消息中转站





MQTT接口文档说明


MQ 接口说明书

注意接口消息格式都是json

第三种:报文例子

topicName=ZHZN/869300032840849
&message={"c":2,
"f":"SZTEST001",
"t":"869300032840849",
"s":"AD1 23567",
"m":"1","mi":2}





MQTT口罩接口文档,也分享给大家学习参考下(网盘地址)

接: https://pan.baidu.com/s/1z7H4sRS5ujCo84-j9DZejQ 

密码: fshp



硬件部分

硬件部分不是程序汪这边负责的,硬件兄弟负责定制烧录,其实这种自动售卖机有市面上已经很多了。


                                            

                                    货道式售货机









后端系统

开源系统上新增了一些CRUD功能

基础对功能都是现成的 比如用户管理 权限 商品 订单等

  • 运营管理

  • 订单管理

  • 设备管理

  • 补货记录

  • 领取记录

  • 设备出库明细

  • 统计报表

  • 商品管理

  • 商品列表

  • 类目管理

  • 用户管理

  • 用户管理

  • 系统管理

  • 系统配置

  • 后台管理用户

  • 角色管理






PC端是参考的这个开源项目

Java版本 unimall 小程序 + App + 公众号H5



这里我把maven配置分享出来


  

   
   
    com.squareup.okhttp3
    okhttp
    3.10.0
   


   
   
    com.github.qcloudsms
    qcloudsms
    1.0.5
   


   
   
    com.aliyun
    aliyun-java-sdk-core
    4.1.1
   


   
   
    com.aliyun.oss
    aliyun-sdk-oss
    2.8.3
   


   
   
    com.baomidou
    mybatis-plus-boot-starter
    3.3.1
   


   
    com.baomidou
    mybatis-plus-annotation
    3.3.1
    compile
   


   
   
    mysql
    mysql-connector-java
    8.0.15
   


   
   
    com.alibaba
    druid
    1.1.8
   


   
   
    org.projectlombok
    lombok
    1.18.4
    provided
   


   
   
    com.alibaba
    fastjson
    1.2.31
   


   
   
    com.aliyun.opensearch
    aliyun-sdk-opensearch
    3.2.0
   


   
   
    com.github.binarywang
    weixin-java-pay
    3.3.0
    
     
      qrcode-utils
      com.github.binarywang
     

    

   


   
    xml-apis
    xml-apis
    1.4.01
   


  

 
          


常见的数据库表分享

-- ----------------------------
-- Table structure for hm_user_operate_log_copy
-- ----------------------------
DROP TABLE IF EXISTS `hm_user_operate_log_copy`;
CREATE TABLE `hm_user_operate_log_copy` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `imei` varchar(255) DEFAULT NULL,
  `equip_no` varchar(15) DEFAULT NULL,
  `type` varchar(20) DEFAULT '' COMMENT '商品的分类,对应分类表',
  `receive_type` int(11) DEFAULT '0' COMMENT '0-免费领取、1-积分兑换、2-购买',
  `del_status` int(11) DEFAULT '0' COMMENT '0-正常;1-逻辑删除',
  `gmt_update` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `gmt_create` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20183 DEFAULT CHARSET=utf8mb4 COMMENT='用户领取记录';

-- ----------------------------
-- Table structure for pay_callback_log
-- ----------------------------
DROP TABLE IF EXISTS `pay_callback_log`;
CREATE TABLE `pay_callback_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `response_body` text,
  `gmt_create` datetime DEFAULT NULL,
  `gmt_update` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='支付回调日志记录';

-- ----------------------------
-- Table structure for service_apply
-- ----------------------------
DROP TABLE IF EXISTS `service_apply`;
CREATE TABLE `service_apply` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `service_provider` varchar(100) DEFAULT NULL COMMENT '服务商名称',
  `phone` varchar(15) DEFAULT NULL COMMENT '联系电话',
  `suc_desc` text COMMENT '成功案例描述',
  `idcard_front` varchar(1000) DEFAULT NULL COMMENT '身份证正面图片URL',
  `idcard_back` varchar(1000) DEFAULT NULL COMMENT '身份证反面图片URL',
  `bust_photo` varchar(1000) DEFAULT NULL COMMENT '半身照URL',
  `audit_status` varchar(5) DEFAULT '0' COMMENT '审核状态 0-待审核,1-审核通过,2-驳回',
  `user_id` bigint(20) DEFAULT NULL,
  `open_id` varchar(255) DEFAULT NULL,
  `del_status` int(11) DEFAULT '0' COMMENT '0-正常;1-逻辑删除',
  `gmt_create` datetime DEFAULT NULL,
  `gmt_update` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='服务商申请表';
       

程序汪接的7个私活都在这里,经验整理

此项目参考资料:

  1. MQTT

    https://www.runoob.com/w3cnote/mqtt-intro.html

  2. 阿波罗 

    http://activemq.apache.org/apollo/download.html

  3. Vue

    https://cn.vuejs.org/

程序汪个人微信 itwang009 欢迎添加 围观朋友圈或进粉丝群

资源分享

MQTT口罩接口文档,也分享给大家学习参考下(网盘地址)

接: https://pan.baidu.com/s/1z7H4sRS5ujCo84-j9DZejQ 

密码: fshp


PC端的开源项目源码地址


Java版本 unimall 小程序 + App + 公众号H5


点下方原文链接观看B站视频版本

浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报