首页 文章详情

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

我是程序汪 | 268 2021-11-08 18:24 0 0 0
UniSMS (合一短信)

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


视频版本 在 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配置分享出来

<dependencyManagement>
  <dependencies>

   <!-- http客户端 -->
   <dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.10.0</version>
   </dependency>

   <!-- 良心云 sms -->
   <dependency>
    <groupId>com.github.qcloudsms</groupId>
    <artifactId>qcloudsms</artifactId>
    <version>1.0.5</version>
   </dependency>

   <!-- 阿里云 SMS -->
   <dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.1</version>
   </dependency>

   <!-- 阿里云对象存储 -->
   <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>2.8.3</version>
   </dependency>

   <!-- mybatis plus 依赖 -->
   <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1</version>
   </dependency>

   <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-annotation</artifactId>
    <version>3.3.1</version>
    <scope>compile</scope>
   </dependency>

   <!-- mysql -->
   <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.15</version>
   </dependency>

   <!-- 阿里巴巴 数据源 Druid -->
   <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.8</version>
   </dependency>

   <!-- lombok 工具 -->
   <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
   </dependency>

   <!-- 阿里巴巴 json 解析 -->
   <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.31</version>
   </dependency>

   <!-- 阿里云开放搜索 -->
   <dependency>
    <groupId>com.aliyun.opensearch</groupId>
    <artifactId>aliyun-sdk-opensearch</artifactId>
    <version>3.2.0</version>
   </dependency>

   <!-- 微信第三方封装Api -->
   <dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-pay</artifactId>
    <version>3.3.0</version>
    <exclusions>
     <exclusion>
      <artifactId>qrcode-utils</artifactId>
      <groupId>com.github.binarywang</groupId>
     </exclusion>
    </exclusions>
   </dependency>

   <dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
   </dependency>

  </dependencies>
 </dependencyManagement>          


常见的数据库表分享

-- ----------------------------
-- 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站视频版本

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter