vetlog:SpringBoot宠物管理系统源码案例


让您的宠物的历史记录井井有条。
特征

  • 您可以在平台上注册成为用户
  • 您可以注册您的宠物,以便维护兽医就诊日志
  • 您可以领养一些宠物
  • 你可以领养宠物


宠物登记
作为用户, 我想注册我的宠物 ,以便获得宠物记录
验收标准
宠物记录必须包含:

  • 爱称
  • 出生日期
  • 类型(猫、狗、鸟、啮齿动物、蜘蛛、蛇)
  • 品种(应按类型分类)
  • 如果已驱虫
  • 如果已经消毒了
  • 它已接种疫苗
  • 宠物的形象

除了:
  • 宠物需要一个唯一的ID

品种目录
作为一名兽医, 我想注册新品种 ,以便我可以从目录中获取品种
验收标准
宠物记录必须包含:

  • 姓名
  • 类型(猫、狗、鸟、啮齿动物、蜘蛛、蛇)

除了:
  • 兽医可以注册新品种
  • 兽医可以去除任何品种
  • 品种列表应显示为目录

用户注册
作为访客, 我想注册自己, 以便在平台中获得身份
验收标准
用户必须包含:

  • 电子邮件
  • 密码

除了:
  • 根据标准,电子邮件必须是有效的
  • 电子邮件应该是唯一的
  • 用户名应该是唯一的
  • 密码长度应至少为 8 个字符

用户验证
作为用户, 我想验证我的电子邮件 ,以便我知道 vetlog 可以联系我
验收标准
用户验证应该:

  • 注册后发送邮件给用户
  • 在确认电子邮件之前用户将无法登录

除了:
  • 电子邮件正文将包含验证链接


恢复密码链接
作为用户, 我希望收到恢复密码链接 ,以便我可以更改密码
验收标准
用户验证应该:

  • 登录页面中带有标签的链接:忘记密码?
  • 用户应在文本框中输入他的电子邮件
  • 用户将收到用于更改密码的 URL。

宠物日志登记
作为宠物主人, 我想注册我的宠物日志 ,以便我可以获得兽医就诊宠物的历史记录
验收标准
宠物记录必须包含:

  • 宠物症状
  • 宠物诊断
  • 处方药
  • 参观日期
  • 兽医的名字

列出宠物
作为宠物主人, 我想列出我的宠物 ,以便我可以看到它们的数据
验收标准
宠物清单必须包含:

  • 宠物的名字
  • 出生日期
  • 类型(猫、狗、鸟、啮齿动物、蜘蛛、蛇)
  • 品种(应按类型分类)
  • 如果已驱虫
  • 如果已经消毒了
  • 它已接种疫苗
  • 宠物的形象

列出要收养宠物
作为宠物主人, 我想列出我的宠物 ,以便我可以选择收养宠物
验收标准
宠物清单必须包含:

  • 宠物的名字
  • 出生日期
  • 品种(应按类型分类)
  • 如果已驱虫
  • 如果已经消毒了
  • 它已接种疫苗
  • 宠物的形象
  • 带有标签的按钮:供采用

添加领养宠物描述
作为宠物主人, 我想在收养时为我的宠物添加描述 ,以便我有更多机会为我的宠物找到家庭
验收标准
宠物清单必须包含:

  • 宠物的名字
  • 出生日期
  • 品种(应按类型分类)
  • 如果已驱虫
  • 如果已经消毒了
  • 它已接种疫苗
  • 宠物的形象
  • 用于添加描述的 1000 个字符的文本区域

收养宠物
作为收养宠物的用户, 我想知道其他用户是否有兴趣收养我的宠物 ,以便我可以联系其他用户并收养我的宠物
验收标准
宠物收养必须包含:

  • 致谢领养者的一封信
  • 宠物的形象
  • 宠物的名字
  • 用户的采用者手机
  • 带有标签的按钮:做吧!

除了
在此过程结束时,将向收养宠物的用户发送一封电子邮件,通知其他用户对该宠物及其电话感兴趣。

列出宠物日志
作为宠物主人, 我想查看我的宠物日志 ,以便我可以查看我的兽医就诊历史
验收标准
宠物日志记录必须包含:

  • 宠物症状
  • 宠物诊断
  • 处方药
  • 参观日期
  • 兽医的名字

编辑宠物信息
作为用户, 我想编辑我的宠物的信息 ,以便我可以根据需要进行修改
验收标准
编辑宠物信息必须包含:

  • 宠物的名字
  • 出生日期
  • 类型(猫、狗、鸟、啮齿动物、蜘蛛、蛇)
  • 品种(应按类型分类)
  • 如果已驱虫
  • 如果已经消毒了
  • 它已接种疫苗
  • 宠物的形象

添加宠物医生
作为Vetlog 平台,我希望有两种用户类型,一个用户和一个兽医,以便用户可以注册宠物,兽医可以列出用户的宠物。
验收标准

  • 兽医应该能够在文本框中输入用户名,然后单击“搜索”按钮
  • 兽医应该能够列出该用户的所有注册宠物
  • 兽医应该能够注册其他用户的宠物日志

删除宠物
作为用户,我想删除宠物,以便我可以从我的宠物列表中删除任何宠物
验收标准

  • 用户可以列出宠物
  • 用户可以在列表中的每只宠物下方看到删除按钮
  • 用户可以点击删除按钮并得到系统的确认请求
  • 用户确认后应删除宠物

配置
在计算机的主目录: 中${home},创建一个名为: 的目录,然后在其中创建一个包含以下内容的.vetlog文件:application-development.yml

spring:
  datasource:
    url:  jdbc:mysql://localhost:3306/vetlog
    username:  username
    password:  password
    driverClassName: com.mysql.jdbc.Driver
    maxActive:  50
    maxIdle: 5
    minIdle: 25
    initialSize: 10
    validationQuery: SELECT 1
    testOnBorrow: true
    testOnReturn: false
    testWhileIdle: true
    timeBetweenEvictionRunsMillis: 5000
    minEvictableIdleTimeMillis: 60000
    maxWait: 10000
    template:
    cache: false
  jpa:
    generateDdl: true
    hibernate:
      DdlAuto: update
  profiles:
    include: development
  messages:
    basename: i18n/messages
  servlet:
    multipart:
      maxFileSize: 10MB
      maxRequestSize: 10MB
  cloud:
    gcp:
      projectId: vetlog-357216
      core:
        enabled: true
      credentials:
        location: classpath:vetlog.json
message: Hello Vetlog!
jmailer:
  url: https:
//jmailer.josdem.io/emailer/
  path: message
baseUrl: https:
//vetlog.org/
template:
  register:
    name: register.ftl
    path: recovery/activate/
  forgot:
    name: forgotPassword.ftl
    path: recovery/forgot/
  adoption:
    name: adoption.ftl
breedsByTypeUrl: https:
//vetlog.org/breed/list
imageBucket: vetlog-bucket
prescriptionBucket: prescription-bucket
gcpUrl: https:
//storage.googleapis.com/
defaultImage: default-image.png
token: jmailer-user-token
management:
  endpoints:
    web:
      exposure:
        include:
"health,info"

运行:
确保您有 NodeJS 依赖项:

cd ${PROJECT_HOME}/src/main/resources/static/assets/servizi-dog-theme
npm install

然后要运行该项目,您需要执行以下 Gradle 命令:

gradle -Dspring.config.location=$HOME/.vetlog/application-development.yml -Dflyway.user=${username} -Dflyway.password=${password} bootRun

${username}您是 MySQL vetlog 数据库用户吗
${password}你是MySQL vetlog数据库密码吗
注意:如果这是您第一次创建数据库,请确保运行此命令
gradle -Dflyway.user=${username} -Dflyway.password=${password} -Dflyway.baselineOnMigrate=true flywayMigrate -i` 

运行测试
gradle -Dspring.config.location=$HOME/.vetlog/application-development.yml jacocoTestReport sonarqube test

运行特定测试
gradle -Dspring.config.location=$HOME/.vetlog/application-development.yml test --tests ${testName}

${testName}是您要运行的测试名称

ER图

这是一个实体关系模型,描述 Vetlog 业务领域中相互关联的实体。

监视健康端点
https://vetlog.org/actuator/health

预期输出:

{
  "status": "UP"
}

信息端点
https://vetlog.org/actuator/info

预期输出:

{
  "build": {
   
"artifact": "vetlog-spring-boot",
   
"name": "vetlog-spring-boot",
   
"time": "${timeStamp}",
   
"version": "${currentVersion}",
   
"group": "com.jos.dem.vetlog"
  }
}

  • ${timeStamp}是建设时间
  • ${version}是最新版本