基于微信小程序的宠物医院平台-老师满意

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
进主页热门专栏推荐订阅⭐ 订阅收藏起来,防止下次找不到
🔎千套Java / PHP / nod.js / asp.net/ Python等项目实战更新中~
🔎百套小程序APP项目实战更新中~

有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

4 系统设计

4.1系统通用功能用例分析

系统的通用功能包括用户登录和密码修改,是三个角色共同需要使用的功能,用例分析如图4-1所示。

   图4-1系统通用功能用例分析图

4.2 系统设计主要功能

本系统采用自上往下的方法开发与实现,本课题要求实现一套宠物医院微信小程序,系统主要包括管理员、医生服务端模块和用户微信端模块的功能模块;

 (1)管理员用例图如下所示:

图4-2管理员用例图

(2)用户用例图如下所示:

图4-3用户用例图

(3)医生用例图如下所示:

图4-4医生用例图

通过市场调研及咨询研究,可以按照用户的角色权限使不同用户角色看到不一样的信息界面。现根据需求阶段的分析,我们可以大致确定系统需要包含的功能如下图4-5所示:

           图4-5宠物医院微信小程序结构功能图

4.3 数据库设计

4.3.1 数据库设计规范

数据可设计要遵循职责分离原则,即在设计时应该要考虑系统独立性,即每个系统之间互不干预不能混乱数据表和系统关系。

数据库命名也要遵循一定规范,否则容易混淆,数据库字段名要尽量做到与表名类似。

4.3.2 E-R图

4.3.3 数据表

本系统采用的是MySQL数据库存储数据,系统中使用到的主要数据表的具体展示部分如下所示。

表4-1:宠物资讯

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-2:地址

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

address

varchar

200

地址

name

varchar

200

收货人

phone

varchar

200

电话

isdefault

varchar

200

是否默认地址[是/否]

表4-3:科室

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

keshi

varchar

200

科室

表4-4:就诊记录

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

binglibianhao

varchar

200

病历编号

yonghuming

varchar

200

用户名

shouji

varchar

200

手机

zhenduanjieguo

varchar

200

诊断结果

yishengjianyi

varchar

200

医生建议

jiaofeijine

int

缴费金额

bingliziliao

longtext

4294967295

病例资料

yishenggonghao

varchar

200

医生工号

yishengxingming

varchar

200

医生姓名

ispay

varchar

200

是否支付

未支付

表4-5:挂号信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuyuedanhao

varchar

200

预约单号

yishenggonghao

varchar

200

医生工号

yishengxingming

varchar

200

医生姓名

guahaojine

varchar

200

挂号金额

guahaoshuliang

varchar

200

挂号数量

jiuzhenzhuangtai

varchar

200

就诊状态

yuyuejiuzhen

datetime

预约就诊

yonghuming

varchar

200

用户名

shouji

varchar

200

手机

zhengzhuangmiaoshu

longtext

4294967295

症状描述

shhf

longtext

4294967295

回复内容

ispay

varchar

200

是否支付

未支付

表4-6:坐诊信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yishenggonghao

varchar

200

医生工号

yishengxingming

varchar

200

医生姓名

yishengxingbie

varchar

200

医生性别

yishengzhaopian

longtext

4294967295

医生照片

yishengzhicheng

varchar

200

医生职称

keshi

varchar

200

科室

guahaojine

int

挂号金额

guahaoshuliang

int

挂号数量

zuozhenshijian

varchar

200

坐诊时间

yishenglvli

longtext

4294967295

医生履历

crossuserid

bigint

跨表用户id

crossrefid

bigint

跨表主键id

表4-7:服务预约

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fuwumingcheng

varchar

200

服务名称

fuwuleixing

varchar

200

服务类型

fuwutupian

longtext

4294967295

服务图片

fuwujiage

int

服务价格

yuyueshijian

datetime

预约时间

yuyuebeizhu

varchar

200

预约备注

yonghuming

varchar

200

用户名

shouji

varchar

200

手机

shhf

longtext

4294967295

回复内容

ispay

varchar

200

是否支付

未支付

表4-8:住院资料

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bingfangbianhao

varchar

200

病房编号

bingchuangbianhao

varchar

200

病床编号

zhuyuanqingkuang

varchar

200

住院情况

ruzhuriqi

date

入住日期

chongwumingcheng

varchar

200

宠物名称

chongwuzhonglei

varchar

200

宠物种类

chongwunianling

varchar

200

宠物年龄

chongwuxingbie

varchar

200

宠物性别

yonghu

varchar

200

用户

chuyuanriqi

date

出院日期

zhuyuanshuoming

varchar

200

住院说明

yishenggonghao

varchar

200

医生工号

表4-9:服务信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

fuwumingcheng

varchar

200

服务名称

fuwuleixing

varchar

200

服务类型

fuwutupian

longtext

4294967295

服务图片

fuwujiage

int

服务价格

fuwuneirong

varchar

200

服务内容

fuwujieshao

longtext

4294967295

服务介绍

表4-10:用户

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yonghuming

varchar

200

用户名

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

shouji

varchar

200

手机

money

float

余额

0

表4-11:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-12:医生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yishenggonghao

varchar

200

医生工号

mima

varchar

200

密码

yishengxingming

varchar

200

医生姓名

yishengxingbie

varchar

200

医生性别

yishengzhaopian

longtext

4294967295

医生照片

yishengzhicheng

varchar

200

医生职称

lianxidianhua

varchar

200

联系电话

money

float

余额

0

表4-13:宠物资料

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

chongwumingcheng

varchar

200

宠物名称

chongwuzhonglei

varchar

200

宠物种类

chongwutupian

longtext

4294967295

宠物图片

chongwuxingbie

varchar

200

宠物性别

chongwunianling

varchar

200

宠物年龄

chongwushuoming

varchar

200

宠物说明

yonghuming

varchar

200

用户名

表4-14:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-15:宠物用品

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

shangpinmingcheng

varchar

200

商品名称

shangpinfenlei

varchar

200

商品分类

shangpintupian

longtext

4294967295

商品图片

shiyongchongwu

varchar

200

适用宠物

shangpinguige

varchar

200

商品规格

shangpinpinpai

varchar

200

商品品牌

neirongxiangqing

longtext

4294967295

内容详情

price

float

价格

表4-16:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

表4-17:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-18:反馈中心

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

adminid

bigint

管理员id

ask

longtext

4294967295

提问

reply

longtext

4294967295

回复

isreply

int

是否回复

表4-19:订单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

orderid

varchar

200

订单编号

tablename

varchar

200

商品表名

chongwuyongpin

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

longtext

4294967295

商品图片

buynumber

int

购买数量

price

float

价格

0

discountprice

float

折扣价格

0

total

float

总价格

0

discounttotal

float

折扣总价格

0

type

int

支付类型

1

status

varchar

200

状态

address

varchar

200

地址

tel

varchar

200

电话

consignee

varchar

200

收货人

remark

varchar

200

备注

logistics

longtext

4294967295

物流

表4-20:关于我们

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

subtitle

varchar

200

副标题

content

longtext

4294967295

内容

picture1

longtext

4294967295

图片1

picture2

longtext

4294967295

图片2

picture3

longtext

4294967295

图片3

表4-21:购物车表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tablename

varchar

200

商品表名

chongwuyongpin

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

longtext

4294967295

图片

buynumber

int

购买数量

price

float

单价

discountprice

float

会员价

5 系统实现

5.1用户微信端功能模块

当游客打开微信小程序的网址后,首先看到的就是微信小程序首页界面。在这里,游客能够看到宠物医院微信小程序的低部导航条显示首页、宠物用品、服务信息、购物车、我的等,如图5-1所示。

图5-1微信小程序首页界面图

   

当用户进入微信小程序进行相关操作前必须先注册登录,在注册页面填写用户名、密码、确认密码、姓名、性别、头像、手机等信息,然后点击注册,如图5-2所示。

图5-2用户注册界面图

用户登录,用户在登录页面通过填写账号、密码,完成登录,如图5-3所示。

图5-3用户登录界面图

购物车:用户将想要购买的商品加入购物车,加入购物车后可以增减数量、删除、点击购买,可一键清除失效商品,如图5-5所示。 

图5-5购物车界面图

用户点击我的页面,在我的页面可以对服务预约、挂号信息、就诊记录、宠物资料、住院资料、我的收藏管理、用户充值、反馈中心、购物车、我的订单,进行详细操作,如图5-6所示。

图5-6我的界面图

5.2 服务端管理员功能模块

管理员登录,通过登录页面输入用户名、密码、角色,进行登录操作,如图5-7所示。

图5-7管理员登录界面图

管理员登录进入宠物医院微信小程序可以查看系统首页、个人中心、科室管理、用户管理、医生管理、坐诊信息管理、宠物用品管理、服务信息管理、服务预约管理、挂号信息管理、就诊记录管理、宠物资料管理、住院资料管理、系统管理、订单管理等信息,进行相应操作,如图5-8所示。

图5-8管理员功能界面图

JAVA后端代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

进主页热门专栏推荐订阅⭐ 订阅收藏起来,防止下次找不到
🔎千套Java / PHP / nod.js / asp.net/ Python等项目实战更新中~
🔎百套小程序APP项目实战更新中~

👇下方有我的微信名片👇

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值