目录
1、技术介绍
1、管理员后台技术:
Web前端使用html css javascript layui框架进行开发
后端使用java ssm框架进行开发
数据库使用的是mysql
2、小程序用户端的技术:
微信开发者语言:js+json+wxss+wxml
3、项目整体采用的是mvc的思想模式进行开发。代码可读性高,便于理解。
2、需求架构图分析
公需小程序系统分为四个角色:小程序用户居民、小程序用户站点管理人员,社区管理人员,卫生急救部门,系统的总体功能架构图如下所示:
3、数据库表设计
数据库表目录
序号 | 表名 | 注释/说明 |
1 | admin | 管理员表(社区管理人员和卫生防疫部门) |
2 | appointment | 药品预约表 |
3 | citizen | 居民居住信息表 |
4 | community | 社区表 |
5 | family | 家人表 |
6 | give_record | 分发站点药品记录表 |
7 | health_department_drug | 卫生防疫部门库存表 |
8 | report | 上报记录表(上报紧缺药品富余药品) |
9 | site | 站点表 |
10 | site_drug | 站点药品库存表 |
11 | staff | 站点工作人员表 |
12 | user | 用户表(预约药品的居民) |
13 | zone | 小区表 |
管理员表(社区管理人员和卫生防疫部门)
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | admin_id | varchar | (64) | √ | 主键id | |
2 | name | varchar | (32) | √ | 登录名字 | |
3 | community_id | varchar | (64) | √ | 社区id | |
4 | phone | varchar | (11) | √ | 手机号码 | |
5 | password | varchar | (64) | √ | 登陆密码 | |
6 | role | int | √ | 角色,1:社区管理人员 2:卫生防疫部门 |
appointment 药品预约表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | appointment_id | varchar | (64) | √ | 预约id | |
2 | unit | int | √ | 剂量 | ||
3 | community_id | varchar | (64) | √ | 社区id | |
4 | site_id | varchar | (64) | √ | 站点id | |
5 | drug_id | varchar | (64) | √ | 药品id | |
6 | drug_name | varchar | (64) | √ | 药品名字 | |
7 | openid | varchar | (64) | √ | 预约者ID | |
8 | username | varchar | (64) | √ | 预约者名字 | |
9 | phone | varchar | (11) | √ | 手机号码 | |
10 | create_time | datetime | √ | 创建时间 | ||
11 | receive_time | datetime | √ | 取药时间 | ||
12 | receiver_name | varchar | (64) | √ | 领取人姓名 | |
13 | remark | varchar | (256) | √ | 用药信息 | |
14 | drug_user | varchar | (64) | √ | 用药人姓名 | |
15 | drug_user_age | int | √ | 用药人年龄 | ||
16 | drug_user_gender | int | √ | 性别 | ||
17 | code | varchar | (16) | √ | 领取码 | |
18 | image_url | varchar | (1024) | √ | ||
19 | status | int | √ | 状态。0:已删除。1:预约中。2:已领取。3:过期 |
citizen 居民居住信息表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | citizen_id | varchar | (64) | √ | ||
2 | community_id | varchar | (64) | √ | 所属社区ID | |
3 | community_name | varchar | (64) | √ | 所属社区名称 | |
4 | zone_id | varchar | (64) | √ | 所属小区ID | |
5 | zone_name | varchar | (64) | √ | 所属小区名称 | |
6 | name | varchar | (32) | √ | 姓名 | |
7 | phone | varchar | (11) | √ | 手机 | |
8 | id_card | varchar | (18) | √ | 身份证号码 | |
9 | room_number | varchar | (64) | √ | 门牌号 | |
10 | age | int | √ | 年龄 | ||
11 | gender | int | √ | 性别。0:女。1:男 |
community 社区表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | community_id | varchar | (64) | √ | ||
2 | community_name | varchar | (64) | √ | 社区名称 | |
3 | community_headcount | int | √ | 小区居民数 | ||
4 | address | varchar | (256) | √ | 社区居民委员会地址 | |
5 | phone | varchar | (11) | √ | 社区居民委员会电话 | |
6 | remark | varchar | (256) | √ | 备注 | |
7 | status | int | √ | 状态:0:已删除 1:正常中 |
family
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | family_id | varchar | (64) | √ | 主键id | |
2 | name | varchar | (64) | √ | 名字 | |
3 | id_card | varchar | (64) | √ | 身份证号 | |
4 | openid | varchar | (128) | √ | 用户openid |
give_record 分发站点药品记录表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | record_id | varchar | (64) | √ | 主键id | |
2 | drug_id | varchar | (64) | √ | 药品id | |
3 | site_id | varchar | (64) | √ | 站点id | |
4 | create_time | datetime | √ | 创建时间 | ||
5 | unit | int | √ | 单位数量 |
health_department_drug 卫生防疫部门库存表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | drug_id | varchar | (64) | √ | ||
2 | drug_name | varchar | (128) | √ | 药品名字 | |
3 | enterprise | varchar | (128) | √ | 生产企业 | |
4 | specification | varchar | (128) | √ | 规格 | |
5 | drug_usage | varchar | (64) | √ | 用法 | |
6 | approval_no | varchar | (128) | √ | 批准文号 | |
7 | disease | varchar | (128) | √ | 适用疾病 症状 | |
8 | quantity | int | √ | 库存数量 | ||
9 | status | int | √ | 状态。0:已下架。1:已上架 |
report 上报记录表(上报紧缺药品富余药品)
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | report_id | varchar | (64) | √ | 站点id | |
2 | staff_id | varchar | (64) | √ | 工作人员id | |
3 | create_time | datetime | √ | |||
4 | type | int | √ | 类型。0:紧缺。1:富余 | ||
5 | site_id | varchar | (64) | √ | 上报的站点 | |
6 | drug_id | varchar | (64) | √ | 上报的药品ID | |
7 | drug_name | varchar | (128) | √ | 上报的药品名称 |
site 站点表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | site_id | varchar | (64) | √ | ||
2 | community_id | varchar | (64) | √ | ||
3 | site_name | varchar | (64) | √ | 站点名称 | |
4 | address | varchar | (128) | √ | 站点地址 | |
5 | phone | varchar | (11) | √ | 站点联系电话 | |
6 | remark | varchar | (256) | √ | 备注 | |
7 | status | int | √ | 状态:0:已删除 1:正常中 |
site_drug 站点药品库存表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | drug_id | varchar | (64) | √ | ||
2 | site_id | varchar | (64) | √ | ||
3 | community_id | varchar | (64) | √ | ||
4 | drug_name | varchar | (128) | √ | ||
5 | enterprise | varchar | (128) | √ | 生产企业 | |
6 | specification | varchar | (128) | √ | 规格 | |
7 | drug_usage | varchar | (64) | √ | 用法 | |
8 | approval_no | varchar | (128) | √ | 批准文号 | |
9 | disease | varchar | (128) | √ | 适用疾病 症状 | |
10 | quantity | int | √ | 库存数量 | ||
11 | status | int | √ | 状态。0:已下架。1:已上架 |
staff 站点工作人员表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | staff_id | varchar | (64) | √ | 工作人员id | |
2 | site_id | varchar | (64) | √ | 站点id | |
3 | name | varchar | (32) | √ | 名字 | |
4 | phone | varchar | (11) | √ | 手机号 | |
5 | password | varchar | (64) | √ | 密码 |
user 用户表(预约药品的居民)
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | openid | varchar | (64) | √ | ||
2 | username | varchar | (32) | √ | ||
3 | phone | varchar | (11) | √ | ||
4 | id_card | varchar | (18) | √ | 身份证号码 | |
5 | password | varchar | (64) | √ |
zone 小区表
序号 | 列名 | 数据类型 | 长度 | 主键 | 允许空 | 列说明 |
1 | zone_id | varchar | (64) | √ | ||
2 | zone_name | varchar | (64) | √ | 小区名称 | |
3 | community_id | varchar | (64) | √ | 所属社区id | |
4 | community_name | varchar | (64) | √ | 所属社区 | |
5 | zone_headcount | int | √ | 小区居民数 | ||
6 | remark | varchar | (256) | √ | 备注 | |
7 | status | int | √ | 状态:0:已删除 1:正常中 |
4、前后端数据通讯方式介绍
小程序端和请求后端接口的方式介绍:
小程序HTTP 请求:小程序可以通过 HTTP 请求向后端服务器发送请求,请求数据或者请求更新界面。后端服务器可以通过响应来回复小程序的请求,从而让小程序更新界面,
代码实例如下:
wx.request({ //微信小程序发送请求的函数
url: url, //请求的后端api地址
method:"post", //请求方式
data:{ //西安后端接口传递的数据
},
dataType:"json", //数据传输的格式
success:(response) =>{ //请求成功的回调函数
console.log(response); //response 为请求返回的数据情况
}
})
后端接口RESTful API:REST(Representational State Transfer) 是一种基于 HTTP 协议的 Web API 设计原则,它允许客户端通过 HTTP 请求来获取、更新和删除数据。小程序可以使用 RESTful API 向后端服务器发送请求,从而获取、更新和删除数据,代码示例如下:
@RequestMapping(value = "/login", method = RequestMethod.POST) //路由规则
@ResponseBody
public Result login(Admin admin) { //方法体
}
5、小程序用户功能介绍
5.1、小程序导航页面展示(居民角色)
首页:选择附近的社区和站点,显示当前社区和站点下的可预约配送的药品信息。
药品预约:点击浏览预约的药品信息,填写用药人姓名,年龄,性别,病情证明,取药日期进行预约。
个人中心:微信授权登录,进行实名认证,绑定我的家人,查看我的预约药品情况,退出登录。
预约药品wxml代码如下:
<view class="cu-form-group">
<view class="title">用药人姓名</view>
<!-- <input model:value="{{drugUser}}" placeholder="" bindinput="bindDrugUser" maxlength='48'></input> -->
<picker bindchange="PickerChange2" value="{{index}}" range="{{nameList}}">
<view class="picker">
{{index==null?'选择家人':nameList[index]}}
</view>
</picker>
</view>
<view class="cu-form-group">
<view class="title">用药人年龄</view>
<input type="number" model:value="{{drugUserAge}}" placeholder="" bindinput="binddrugUserAge" maxlength='48'></input>
</view>
<view class="cu-form-group">
<view class="title">用药人性别</view>
<picker bindchange="PickerChange" value="{{gender}}" range="{{picker}}">
<view class="picker">
{{gender==null?'选择性别':picker[gender]}}
</view>
</picker>
</view>
<view class="cu-bar bg-white">
<view class="action">
病情证明
</view>
<view class="action">
{{imgList.length}}/1
</view>
</view>
<view class="cu-form-group">
<view class="grid col-4 grid-square flex-sub">
<view class="bg-img" wx:for="{{imgList}}" wx:key="{{index}}" bindtap="ViewImage" data-url="{{imgList[index]}}">
<image src='{{imgList[index]}}' mode='aspectFill'></image>
<view class="cu-tag bg-red" catchtap="DelImg" data-index="{{index}}">
<text class="cuIcon-close"></text>
</view>
</view>
<view class="solids" bindtap="ChooseImage" wx:if="{{imgList.length<1}}">
<text class="cuIcon-cameraadd"></text>
</view>
</view>
</view>
Js代码如下:
wx.uploadFile({
url: app.globalData.URL + '/appointment/'+_this.data.openid,
filePath: this.data.imgList[0],
name: 'image',
header: {
'Authorization': 'Deer ' + _this.data.token,
'Accept': 'application/json',
},
formData: {
unit: _this.data.unit,
communityId: _this.data.item.communityId,
siteId: _this.data.item.siteId,
drugId: _this.data.item.drugId,
drugName: _this.data.item.drugName,
drugUser: _this.data.nameList[_this.data.index],
idCard: _this.data.list[_this.data.index]['idCard'],
drugUserAge: _this.data.drugUserAge,
drugUserGender: _this.data.gender,
receiveTime: _this.data.date
},
success(res) {
var data = JSON.parse(res.data)
if (data.code == 20000) {
wx.showToast({
title: data.message,
icon: "none"
})
} else {
wx.showToast({
title: data.message,
icon: "none"
})
}
}
})
后台控制器接口代码如下:
@RequestMapping(value = "/{openid}", method = RequestMethod.POST)
public Result add(@PathVariable String openid, Appointment appointment, MultipartFile image) {
appointment.setOpenid(openid);
String fileUrl = null;
if (image.isEmpty()) {
return new Result(false, 20001, "病情证明图片不能为空", null);
}
fileUrl = fileService.fileUpload(image);
appointment.setImageUrl(fileUrl);
return appointmentService.add(appointment);
// return new Result(true, 20000, "预约成功");
}
5.2、小程序导航页面展示(站点工作人员角色)
用户使用账号密码登录;
查看当前站点的居民药品预约信息,进行药品确认发放;
对当前药品信息进行库存上报(上报紧缺,上报富余);
站点工作人员的个人中心可以进行站点管理,统计分析,退出登录操作;
5.3、社区管理人员web端
社区管理人员使用账号进行登录;社区管理;小区管理;居民管理;居民统计;药品统计;退出登录;
5.4、卫生急救部门web端
卫生急救部门管理人员使用账号进行登录;药品管理;药品分配;统计分析;退出登录;
6、项目的完整功能操作录屏
以上是对项目的简单的功能介绍,感兴趣的童鞋可以看以下详细的功能演示地址:
项目功能演示https://www.bilibili.com/video/BV16s4y1C7zy/?vd_source=1b00b299dfb4cd201f2c5966bf0978ac
以上就是对项目的整体介绍,感兴趣的伙伴可以私信我。谢谢