【旅游景点项目日记 | 第一篇】项目服务架构、数据库表设计

在这里插入图片描述

Gitee仓库地址:travel-server:景点旅游项目服务端

文章目录

  • 1.项目服务架构
  • 2.数据库设计
    • 2.1用户服务—travel_ums
      • 2.1.1 ums_user—用户表
    • 2.2景点服务—travel_ams
      • 2.2.1 ams_attraction—景点表
      • 1.2.2 ams_resource_type—资源类型表
    • 2.3票务服务—trabel_bms
      • 2.3.1 bms_ticket—门票表
      • 2.3.2 bms_ticket_type—门票类型表
      • 2.3.3 bms_order—订单表
      • 2.3.4 bms_payment—支付表
      • 2.3.5 bms_comment—评分表
    • 2.4统计服务—travel_sms
      • 2.4.1 sms_statistics—统计表
      • 2.4.2 sms_click—点击表
      • 2.4.3 sms_like—点赞表
      • 2.4.4 sms_collection—收藏表
      • 2.4.5 sms_comment—评论表
      • 2.4.6 sms_sensitive_word—敏感词表
    • 2.5推荐服务 travel_rms
      • 2.5.1 rms_user_attractioin_tag—用户标签表
      • 2.5.2 rms_user_behavior_weight—用户行为权重表
      • 2.5.3 rms_user_attraction_behavior—用户景点行为表
    • 2.6活动服务
    • 2.7搜索服务

1.项目服务架构

经过分析,该个性化景点旅游推荐系统采用微服务架构,分为8大服务:用户服务、景点服务、票务服务、统计服务、推荐服务、活动服务、搜索服务以及第三方服务(OSS阿里云服务)

  1. 用户服务

    • 用户登录、注册

    • 用户每日签到

  2. 景点服务

    • 景点管理
    • 景点点赞、收藏、评论
  3. 票务服务

    • 订门票
    • 支付
    • 评分
  4. 统计服务

    • 排行榜(点击数/点赞数/收藏数/评论数)
    • 敏感词过滤
  5. 推荐服务

  6. 活动服务

    • 特色活动
  7. 搜索服务:

    • 景点的搜索和筛选功能,支持多维度的条件查询

其中,核心业务有

  • 景点的点赞收藏(RabbitMQ、Redis)
  • 购买门票(全局id、分布式锁)
  • 评论内容的敏感词过滤(基于DFA 有穷自动机算法)
  • 排行榜功能实现(Redis)

2.数据库设计

2.1用户服务—travel_ums

2.1.1 ums_user—用户表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
user_idint用户id,自增
usernamevarchar(20)用户名,唯一
phonevarchar(20)手机号码,唯一,非空
passwordvarchar(20)密码,非空
ageint年龄
sexint性别【0-男,1-女】
avatar_imagevarchar(200)头像图片
roleint角色【0-普通用户,1-管理员,2-超级管理员】
add_timedatetime添加时间
update_timedatetime修改时间

2.2景点服务—travel_ams

2.2.1 ams_attraction—景点表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
attraction_idint景点id,自增
attraction_namevarchar(20)景点名称
resource_type_idint景点资源类型id
quality_gradeint景点等级
province_cityvarchar(20)景点所在省份城市
locationvarchar(50)详细位置
open_hourvarchar(50)开放时间
phone电话
introductionvarchar(300)景点介绍
imagesvarchar(200)景点图片列表
stausint状态【1为显示,0为不显示】
add_timedatetime添加时间
update_timedatetime修改时间

1.2.2 ams_resource_type—资源类型表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
resource_type_idint资源类型id,自增
resource_typevarchar(20)资源类型【自然类、人文类、复合类、主题公园、社会类】
introductionvarchar(50)资源类型介绍
add_timedatetime添加时间
update_timedatetime修改时间

2.3票务服务—trabel_bms

2.3.1 bms_ticket—门票表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
ticket_idint门票id,自增
attraction_idint景点id
namevarchar(20)门票名称
type_idint门票类型【0为成人票、1为学生票、2为儿童票 】
introductionvarchar(50)门票介绍
pricedouble价格
statusint上架状态【1为上架,0为下架】
numint门票数量
add_timedatetime添加时间
update_timedatetime修改时间

2.3.2 bms_ticket_type—门票类型表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
ticket_type_idint门票类型id,自增
typevarchar(20)门票类型【成人票、学生票、儿童票 、老人票、团体票】
introductionvarchar(50)门票类型介绍
add_timedatetime添加时间
update_timedatetime修改时间

2.3.3 bms_order—订单表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
order_idint订单id,全局id
user_idint用户id
attraction_idint景点id
ticket_idint门票id
numint购买数量
pricedouble订单价格
statusint订单状态【0为待支付,1为已支付,2为已使用,3为已取消】
add_timedatetime添加时间
update_timedatetime修改时间

2.3.4 bms_payment—支付表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
payment_idint支付记录id,全局id
pricedouble支付金额
statusint支付状态【1为成功,0为失败】
add_timedatetime添加时间
update_timedatetime修改时间

2.3.5 bms_comment—评分表

字段名字段类型是否为主键是否有唯一约束是否为非空约束注释
comment_idint评论id
order_idint订单记录id
user_idint用户id
attraction_idint景点id
scoreint评分(0-10)
contentvarchar(50)评分内容
imagesvarchar(200)评分图片
add_timedatetime添加时间
update_timedatetime修改时间

2.4统计服务—travel_sms

2.4.1 sms_statistics—统计表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
statistics_idint统计id,自增
attraction_idint景点id
clicksint点击数
likesint点赞数
collectionsint收藏数
commentsint评论数
add_timedatetime添加时间
update_timedatetime修改时间

2.4.2 sms_click—点击表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
click_idint点击id,自增
user_idvarchar(20)用户id
attraction_idint景点id
clicksint点击数
add_timedatetime添加时间
update_timedatetime修改时间

2.4.3 sms_like—点赞表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
click_idint点赞id,自增
user_idvarchar(20)用户id
attraction_idvarchar(200)景点id列表
add_timedatetime添加时间
update_timedatetime修改时间

2.4.4 sms_collection—收藏表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
collection_idint收藏id,自增
user_idvarchar(20)景点名称
attraction_idvarchar(200)景点id列表
add_timedatetime添加时间
update_timedatetime修改时间

2.4.5 sms_comment—评论表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
comment_idint评论id,自增
user_idint用户id
attraction_idint景点id
commentvarchar(50)评论内容
add_timedatetime添加时间
update_timedatetime修改时间

2.4.6 sms_sensitive_word—敏感词表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
sensitive_word_idint敏感词id
sensitive_wordvarchar(200)敏感词
add_timedatetime添加时间
update_timedatetime修改时间

2.5推荐服务 travel_rms

2.5.1 rms_user_attractioin_tag—用户标签表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户标签id,自增
user_idint用户id
tagvarchar(50)标签【用户喜欢的资源类型id、主导功能id、质量等级id】
add_timedatetime添加时间
update_timedatetime修改时间

2.5.2 rms_user_behavior_weight—用户行为权重表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户行为权重id,自增
click_weightdouble点击权重
like_weightdouble点赞权重
collection_weightdouble收藏权重
comment_weightdouble评论权重
now_configint当前配置【1为当前配置,0为不是当前配置】
add_timedatetime添加时间
update_timedatetime修改时间

2.5.3 rms_user_attraction_behavior—用户景点行为表

字段名字段类型是否为主键是否有唯一约束是否有非空约束注释
idint用户景点行为id,自增
user_iddouble用户id
attraction_iddouble景点id
attraction_namedouble景点名称
weightdouble用户对该景点的权重
add_timedatetime添加时间
update_timedatetime修改时间

2.6活动服务

2.7搜索服务

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/494016.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端框架的简单介绍

html html-结构 盖房子之前先划三室二厅 (超文本标记语言)(可以实现一切的文本) css css-样式 在房里添家具 (层叠样式单)(化妆在脸上叠加) javascript(js) javascript(js)-交互(行为) 我点击你打开 供显示信息的元…

持续集成与版本控制的相关概念

目录 一、持续集成 1.1 持续集成基本概念 1.1.1 持续集成的含义 1.1.1.1 持续集成流程是依赖产品版本迭代和版本分支而产生的 1.1.1.2 持续集成流程中包含的内容 1.1.2 传统打包模式说明 1.1.2.1 传统打包模式概述 1.1.2.2 传统打包模式问题 1.1.3 持续集成模式 1.1.…

GIt的原理和使用(五)

目录 多人协作 多人协作一 准备工作 协作开发 多人协作二 准备工作 额外场景 申请单合并分支 更推荐写法 远程分支删除后,本地git branch -a依然能看到的解决办法 多人协作 多人协作一 目标:在远程master分支下的file.txt文件新增代码“aaa”…

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日,全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会,重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务,支持企业自有数据对模型进行定制、微调,同时可以与PS、Illustrator、Ex…

压测k8s服务资源不足怎么处理

副本 在Kubernetes(简称K8s)中,Pod是最小的调度单元,而Pod的副本则是指同一个Pod的多个实例。在实际应用中,经常需要创建多个Pod的副本来增加应用的容错性和可伸缩性。 k8s的pod副本的负载均衡 Kubernetes中的Pod副本…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成,我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求,调用智能合约的方法获取食品溯源信息,并将结果返回给前端。 通过前后端的整合,我们可以构建一个食品溯源系统&#xf…

Tensorflow CUPTI could not be loaded 解决

使用conda在指定环境安装cudatoolkit和cudnn后出现 CUPTI could not be loaded问题 conda install cudatoolkit11.0.3 conda install cudnn8.0.5.39 将本机C:\Program Files\NVIDIA Corporation\Nsight Systems xxxx\target-windows-x64 包含cupti的文件均复制到 D:\xxx\cond…

mysql高阶之(视图)

目录 视图概念 视图概念 视图是基于一个或多个表的SQL查询结果的虚拟表。视图并不实际存储数据,而是保存了查询的定义。当你查询视图时,数据库引擎会按照视图的定义执行底层的SQL查询。 (一)视图作用 视图的主要作用时一张表或多…

如何用Flask中的Blueprints构建大型Web应用

本文分享自华为云社区《构建大型Web应用Flask中的Blueprints指南》,作者: 柠檬味拥抱。 什么是Blueprints? 什么是Blueprints? Blueprints是Flask中的一种模式,用于将应用程序分解为可重用的模块。每个蓝图实际上是…

AES加密解密算法

一,AES算法概述 AES属于分组加密,算法明文长度固定为128位(单位是比特bit,1bit就是1位,128位等于16字节) 而密钥长度可以是128、192、256位 当密钥为128位时,需要循环10轮完成加密&#xff0…

鸿蒙雄起!风口就在当下,你如何抉择?

近年来,华为自主研发的鸿蒙操作系统(HarmonyOS)引起了广泛的关注和讨论。鸿蒙系统不仅标志着华为在软件领域的一次重大突破,也预示着全球智能设备市场格局的潜在变化。本文将深入探讨鸿蒙系统的兴起、其在市场上的表现以及对程序员…

html页面使用@for(){},@if(){},利用jquery 获取当前class在列表中的下标

基于以前的项目进行修改优化,前端代码根据List元素在html里进行遍历显示 原先的代码: 其中,noticeGuide.Id是标识noticeGuide的唯一值,但是不是从0开始的【是数据库自增字段】 但是在页面初始化加载的时候,我们只想…

搜维尔科技:【应急演练】【工业仿真】救援模拟演练可视化仿真项目实施

安全救援综合演练系统是一套面向公共安全事故、预案管理、应急救援模拟演练的虚拟仿真解决方案,它为警察、消防以及专门的应急救援保障部门提供一个综合的应急救援培训和仿真演练平台。平台主要通过设计不同的事故模型和特定的灾难场景,定制不同的应急救…

鸿蒙OS开发实例:【工具类封装-emitter组件间通信】

import Emitter from ohos.events.emitter; import pasteboard from ohos.pasteboard; MyEmitterUtil 是一个针对 HarmonyOS 的事件驱动编程封装类,主要用于组件间的通信和数据传递。 使用要求: DevEco Studio 3.1.1 Release 或更高版本API 版本&…

苍穹外卖02(新增员工,重复内容异常处理器,绑定当前用户ThreadLocal,日期格式问题,分页查询,启用禁用,编辑员工)

目录 一、员工管理-新增员工 1.需求分析和设计 2.代码开发 3 功能测试 接口文档测试 前后端联调测试 4 代码完善一:增加异常处理器 5 代码完善二:绑定当前用户名 (1) 准备ThreadLocal工具类 (2) 修改拦截器代码 (3) Service里获取当前用户 小…

servlet开发详解

一、什么是servlet,干什么用的??? tomcat作为一个web服务器,也称作servlet容器。servlet只有放在web服务器中才能运行,不能独立运行。tomcat这个容器要做三件事:接收请求、处理请求和响应请求。…

图形界面开发-framebuffer技术

https://www.linuxidc.com/Linux/2012-05/61024.htm 1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接…

SPU赋能PSI:探秘隐私集合求交核心技术与高级调度架构实践

1.SPU实现的PSI介绍 1.PSI的定义和种类 隐私集合求交(Private Set Intersection, PSI)是一种在密码学和安全多方计算(MPC)领域中的关键技术,允许两个或多个参与者在不泄露各自输入集合中非交集部分的前提下&#xff…

基于单片机防丢失设备的设计和实践

摘要:防止老人或者小孩走丢走失,还可以放在汽车里,利用GPS系统,设计实现了基于单片机的防丢失设备。设备利用液晶显示屏显示信息,并实时发送位置短信到手机传输当前位置的纬度和经度坐标,实现了定位与监测功能。测试结果表明,利用该设备和手机可以同时观察老人或小孩携带…

Manacher算法学习笔记(洛谷题单 Part 5.3 Manacher)

0.随便说说 字符串学的太差了,每次字符串算法都是学完了就忘,正好上场 c f d i v 1 B cfdiv1B cfdiv1B考了一个 M a n a c h e r Manacher Manacher,就先复习它了。 1.一些概念 子串 ( s u b s t r i n g ) (substring) (substring)&#…