尚硅谷电商毕设项目

项目介绍:

用户通过浏览器登录,浏览商品,添加进购物车,购买功能

后台管理员登录,对用户进行增加修改删除,商品进行增加修改删除,订单进行增加修改删除

项目亮点:

技术栈全面,使用了微服务,中间件

尚硅谷电商毕设项目_第1张图片

 尚硅谷电商毕设项目_第2张图片

 42个功能点表示差不多42套增删改查(实际上可能会多一些,可能需要写五六十套增删改查)

数据库E-R图

尚硅谷电商毕设项目_第3张图片

 总共11个服务,1个注册中心尚硅谷电商毕设项目_第4张图片

 用户把需求提交给网关服务,网关服务去注册中心中查找它需要调用的服务(也就是说注册中心能够帮助查找需要调用哪个服务)

数据库:

用户实体类user:

user_id,user_name,password,user_phonenumber

地址实体类address:

id,linkman(联系人),phone,address,user_id

轮播图实体类carousel:

carousel_id  轮播图id,img_path  图片地址,describes 描述,protect_id轮播图对应的商品id,priority优先级

商品表product

product_id  product_name  category_id  product_title

尚硅谷电商毕设项目_第5张图片

 类别表category   就两个字段   category_id和category_name

网关服务

将网关服务注册到nacos里面

在网关服务中需要进行配置

首先配置注册中心所在的服务器的地址

当用户访问/user/**路径的时候,就会把请求转发给user-service这个服务

 同理,当用户访问/product/**路径的时候,就会把请求转发给product-service这个服务

总共网关服务为指定什么时候访问其他十个服务

# 配置网关
spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: lb://user-service
          predicates:
            - Path=/user/**  # 访问user路径转发用户服务
       
        - id: product-service # 此名称随意定义
          uri: lb://product-service #使用负载均衡,调用服务名,这是服务名
          predicates:
            - Path=/product/** # 访问product相关,转发到product服务
       
        # 静态资源对应的服务
        - id: static-service
          uri: lb://static-service #静态资源处理以及oss上传服务!
          predicates:
            - Path=/public/**
        
        - id: carousel-service  # 轮播图服务
          uri: lb://carousel-service #静态资源处理以及oss上传服务!
          predicates:
            - Path=/carousel/**
            
        - id: category-service  # 类别服务
          uri: lb://category-service
          predicates:
            - Path=/category/**
            
        - id: search-service  # 类别服务
          uri: lb://search-service
          predicates:
            - Path=/search/**
            
        - id: collect-service  # 收藏服务
          uri: lb://collect-service
          predicates:
            - Path=/collect/**
            
        - id: cart-service  # 购物车服务
          uri: lb://cart-service
          predicates:
            - Path=/cart/**
             
        - id: order-service  # 订单服务
          uri: lb://order-service
          predicates:
            - Path=/order/**
            
        - id: admin-service  # 订单服务
          uri: lb://admin-service
          predicates:
            - Path=/admin/**

通用服务common:将一些通用实体类(比如商品表对应的实体类)声明到这个服务当中

尚硅谷电商毕设项目_第6张图片

请求显示访问网关服务,然后访问后台管理服务,再访问商品服务,最后访问数据库

这样后台管理服务和商品服务里都有商品实体类,就出现了冗余,我们将通用的实体类声明到通用服务中

尚硅谷电商毕设项目_第7张图片

 将多个服务(两个及两个服务以上)需要的,写到通用服务里面

除了实体类还有一些util工具类,比如Md5工具类和R工具类

用户服务:登录,注册,账号检查(数据库中是否有这个账号),地址添加,地址删除,地址展示(查看)一共六个功能

这个服务用到两张表:用户表和地址表,这两张表放在user库里面

尚硅谷电商毕设项目_第8张图片

 在bootstrap.yml配置文件中配置本服务名称和nacos的地址

spring:
  application:
    name: user-service
  cloud:
    nacos:
      server-addr: 124.221.70.206:8848
server:
  port: 3001

在application.yml配置文件中:

首先配置mysql数据库的地址

实现第一个功能:账号检查(查询数据库中是否存在这个账号)

请求url:/user/check

请求方式:post

前端发送的请求的数据类型是:json 格式是username:“要检查的账号”,比如username:“张三”

返回结果是json:

# 分析返回结果,如何根据数据库查询,返回对应的结果! 
{
  "code": "001", //001就是成功 可用的含义   004账号不可用
  //004是错误码
  "msg": "用户名不存在,可以注册"   //返回的提示语  固定的格式! 后台和前端约定的格式!
}

实现第二个功能:用户注册

请求url:user/register

请求方式:post

前端发送的请求的数据类型是:json 格式是username:“root”,password:“123456”,userPhoneNumber:“123456789”

返回结果:

{
  code: '001', 成功 / 004  失败
  msg: '注册成功'
}

往user表中插入一行数据,存密码的时候加盐处理然后再用md5加密处理

实现第三个功能;用户登录

请求url:user/login

请求方式:post

前端发送的请求的数据类型是:json 格式是username:“root”,password:“123456”,

实现第四个功能:展示地址列表功能(查询address表中user_id字段等于登录用户的user_id的所有行)

请求url:user/address/list

传入的参数是user_id,返回的是一个地址的集合,这个1用户添加过的所有地址的集合

尚硅谷电商毕设项目_第9张图片

实现第五个功能:添加地址功能(往address表中添加一行数据)

请求url:user/address/save

传入的参数是address,linkman,phone, user_id(就是登录的用户的id)

尚硅谷电商毕设项目_第10张图片

实现第六个功能:删除地址功能(往address表中删除一行数据)

请求url:user/address/remove

传入的参数是id,不是user_id,而是address表中的id字段那个id

尚硅谷电商毕设项目_第11张图片

静态资源服static 这个服务包含两个功能,静态资源存储功能和静态资源外部访问功能

将静态资源存放在这个服务里面

轮播图服务carousel    这里需要实现两个功能,轮播图展示功能和商品详情功能

/carouse/list  展示优先级前六的六张图片

商品服务 product这里需要实现的功能比较多,热门商品功能,类别商品功能,全部商品功能,单类别商品功能,商品详情功能,商品图片详情功能,商品搜索功能

(1)热门商品功能:根据传入的类别名称,查七条热门商品出来,比如你传入的类别是手机,那么就展示手机的七条热门商品

效果如下:

尚硅谷电商毕设项目_第12张图片

 url:/product/promo

尚硅谷电商毕设项目_第13张图片

 在商品服务中调用byname方法就会调用category类别服务的promo方法

尚硅谷电商毕设项目_第14张图片

 尚硅谷电商毕设项目_第15张图片

 查询多个类别的热门商品

尚硅谷电商毕设项目_第16张图片

 (2)商品详情和商品图片详情

商品详情:product/detail

尚硅谷电商毕设项目_第17张图片

商品图片详情    /product/pictures

类别服务 category

商品服务调用类别服务,传入category_name得到category_id,然后商品服务再去product数据库中查找这个category_id的七条热门数据出来

搜索服务search:使用elasticsearch技术实现商品搜索功能,相对mysql效率更高

 尚硅谷电商毕设项目_第18张图片

尚硅谷电商毕设项目_第19张图片

你可能感兴趣的:(springboot,springboot)