暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Springboot+Vue 的电商项目

射手座的程序员 2021-11-11
2431

介绍

Springboot2.1+花卷商城,一款基于 Springboot+Vue 的电商项目,前后端分离项目


软件架构

 Springboot + maven + mybatis + Vue 组成,B/S模式


软件截图

登录界面


个人中心



修改密码



我的订单



我的购物车



商品搜索



购买页面



商品评价



管理后台

由于数据安全性,想要进入后台需要我授予权限后才能访问


商品列表



商品分类



商品品牌



商品采购



订单列表



退货申请处理



退货原因设置



商品轮播图



用户列表



角色列表



安装教程

  1. yum 命令 安装 jdk1.8

    yum -y list java*		#查询要安装jdk的版本
    yum install -y java-1.8.0-openjdk.x86_64		#安装jdk1.8
    java -version		#查询jdk版本
    yum 命令 默认给安装到 usr/lib/jvm/
  2. 安装 mysql 5.7

  • 在一台Linux服务器上安装多个MySQL实例

  • mysql主从复制、读写分离

  • mysql 常见错误

    装完MySQL,却发现在本地登录可以,但是远程登录却报错Host is not allowed to connect to this MySQL server
    # https://blog.csdn.net/u012758088/article/details/78613812
  • 安装 redis

    • linux 安装redis 完整步骤

    使用说明

    1. Linux服务器部署(jar包)

    2. 需开启相应防火墙端口号

      9999	# 项目端口号   如需修改,请到Springboot-Mall后端项目的application.yml文件下修改
      3306 # mysql 主机端口
      3307 # mysql 从机端口
      3308 # mysql 从机端口
      6379 # redis 数据库
      994 # 网易163邮箱 服务端口
    3. 项目在数据库上采用 主从复制,读写分离原则

    • 主从复制 在mysql 设置

    • 读写分离 采用 shardingsphere 中间件

  • 第三方技术

    • 支付宝沙箱技术

    • OSS 存储

    • 网易邮箱服务

    • 阿里云短信服务

  • 本地开发 和 项目部署需要改三个地方

    • VUE 前端 需要改 ==/src/global/index.js== 文件 bindToGlobal中的 http (本地: 127,部署: 服务器IP)

    • Springboot 后端 需要改 ==/src/resources/config.properties== way 方式

    • Springboot 后端 需要改 ==/src/resources/application-redis.yml== Redis服务器地址

      (本地: 服务器IP,部署: 127.0.0.1)


    数据库文档

    数据库介绍

    数据库名

    目前数据库名为 qiu ,若需更改数据库名称时,需要将 数据库事件 中的数据库名一并更改。

    数据库编码

    字符集:utf8

    数据库排序规则:utf8_general_ci

    数据库表(18个)

    用户表(user)
    列名数据类型长度默认主键非空自增注释
    user_idint5
    用户ID
    account_numbervarchar30


    用户账号
    user_namevarchar30


    用户昵称
    passwordvarchar50


    用户密码
    user_sexvarchar6



    用户性别
    telephonevarchar11



    用户手机号
    creat_timetimestamp
    CURRENT_TIMESTAMP

    注册时间
    login_timetimestamp
    CURRENT_TIMESTAMP

    登录时间
    user_statetinyint11

    用户状态
    summaryvarchar50



    个人简介
    user_addressvarchar100



    用户地址
    avatar_urlvarchar200



    用户头像
    background_urlvarchar200



    背景图片
    角色表(role)
    列名数据类型长度默认主键非空自增注释
    role_idint5
    角色id
    role_namevarchar30


    角色名称
    role_describevarchar50


    角色描述
    role_statetinyint11

    是否启用
    用户角色表(user_role)
    列名数据类型长度默认主键非空自增注释
    user_idint5


    用户id
    role_idint5


    角色id

    花卷VIP表(vip)

    列名数据类型长度默认主键非空自增注释
    vip_idint6
    vip ID
    account_numbervarchar30


    用户帐号
    creat_timetimestamp
    CURRENT_TIMESTAMP

    充值时间
    overdue_timetimestamp
    CURRENT_TIMESTAMP

    过期时间
    商品表(product)


    列名数据类型长度默认主键非空自增注释
    product_idint5
    商品ID
    product_novarchar30


    商品编号
    product_namevarchar30


    商品名称
    product_typevarchar30


    商品类别
    product_describevarchar100


    副标题
    product_brandvarchar30


    品牌
    in_pricedouble



    进价
    out_pricedouble



    售价
    product_stockint6


    库存
    lowest_stockint6


    最低库存
    is_stockouttinyint10

    是否缺货
    is_newtinyint11

    是否新品
    is_saletinyint11

    是否上架
    sale_timetimestamp
    CURRENT_TIMESTAMP

    上架时间
    product_urlvarchar200


    商品图片
    商品类别表(product_type)
    列名数据类型长度默认主键非空自增注释
    type_idint5
    类别id
    type_namevarchar30


    类别名称
    type_describevarchar100


    类别描述
    type_url_leftvarchar200


    左侧宣传图
    type_url_topvarchar200


    横幅宣传图
    商品品牌表(product_brand)
    列名数据类型长度默认主键非空自增注释
    brand_idint5
    品牌ID
    brand_namevarchar30


    品牌名称
    brand_describevarchar100


    品牌描述
    规格表(specs)
    列名数据类型长度默认主键非空自增注释
    specs_idint5
    规格ID
    specs_namevarchar50


    规格类型
    product_typevarchar30


    商品类别
    商品规格表(product_specs)
    列名数据类型长度默认主键非空自增注释
    product_idint5


    商品id
    specs_idint5


    规格id
    供应商表(supplier)
    列名数据类型长度默认主键非空自增注释
    supplier_idint5
    供应商ID
    supplier_novarchar30


    供应商编号
    supplier_namevarchar30


    供应商名称
    product_typevarchar30


    商品类别
    principalvarchar30


    负责人
    contact_wayvarchar30


    联系方式
    statustinyint11

    是否可用
    采购表(purchase)
    列名数据类型长度默认主键非空自增注释
    purchase_idint5
    采购ID
    purchase_novarchar30


    采购编号
    purchase_numberint6


    进货数量
    purchase_timetimestamp
    CURRENT_TIMESTAMP

    进货时间
    receipt_timetimestamp
    CURRENT_TIMESTAMP

    收货时间
    product_novarchar30


    商品编号
    product_namevarchar30


    商品名称
    supplier_novarchar30


    供应商编号
    supplier_namevarchar30


    供应商名称
    account_numbervarchar30


    操作员编号
    user_namevarchar30


    操作员名称
    receipt_statustinyint1


    收货状态
    商品评价表(product_review)
    列名数据类型长度默认主键非空自增注释
    review_idint8
    用户评论ID
    account_numbervarchar30


    用户帐号
    product_novarchar30


    商品编号
    product_specsvarchar30



    商品规格
    order_novarchar30


    订单编号
    review_timetimestamp
    CURRENT_TIMESTAMP

    评论时间
    star_leveldouble



    商品评星
    product_reviewvarchar300


    商品评价
    轮播图表(banner)
    列名数据类型长度默认主键非空自增注释
    banner_idint5
    商品广告牌ID
    product_namevarchar30


    商品名称
    product_urlvarchar200


    商品链接
    banner_urlvarchar200


    广告宣传栏链接
    订单表(order)
    列名数据类型长度默认主键非空自增注释
    order_idint7
    订单ID
    order_novarchar30


    订单编号
    order_timetimestamp
    CURRENT_TIMESTAMP

    下单时间
    product_novarchar30


    商品编号
    product_specsvarchar30



    商品规格
    user_accountvarchar30


    用户账号
    user_namevarchar30


    用户名称
    contact_wayvarchar30


    联系方式
    pay_pricedouble



    商品金额
    pay_amountint6


    购买数量
    pay_typevarchar20


    支付方式
    order_fromvarchar20


    订单来源
    order_statevarchar20


    订单状态
    accept_addressvarchar100


    收货地址
    return_statetinyint10

    退货状态
    物流表(logistics)
    列名数据类型长度默认主键非空自增注释
    logistic_idint6
    物流ID
    order_novarchar30


    订单编号
    sendervarchar30


    发货人
    sender_telvarchar30


    发货人联系方式
    sender_addvarchar50


    发货人联系地址
    receivervarchar30


    收货人
    receiver_telvarchar30


    收货人联系方式
    receiver_addvarchar50


    收货人联系地址
    parcel_namevarchar30


    物流公司
    退货原因表(return_reason)
    列名数据类型长度默认主键非空自增注释
    reason_idint5
    退货ID
    reason_namevarchar30


    退货理由
    statustinyint11

    是否启用
    商品退货表(return_goods)
    列名数据类型长度默认主键非空自增注释
    return_idint5
    退货ID
    apply_timetimestamp
    CURRENT_TIMESTAMP

    申请时间
    order_novarchar30


    订单编号
    user_numbervarchar30


    用户账号
    user_namevarchar30


    用户名称
    return_pricedouble



    退款金额
    operator_numbervarchar30


    操作员账号
    operator_namevarchar30


    操作员名称
    deal_timetimestamp




    处理时间
    return_reasonvarchar30


    退货原因
    return_statevarchar20


    退货状态
    购物车表(shopping_cart)
    列名数据类型长度默认主键非空自增注释
    cart_idint8
    购物车ID
    account_numbervarchar30


    用户帐号
    product_idint5


    商品ID
    pay_amountint5


    购买数量
    product_specsvarchar100



    商品规格


    数据库触发器(2个)

    用户表插入触发器(user_insert)

    注册用户时,自动向 用户角色表添加信息,将新注册的用户权限设置为 普通用户

    CREATE
    TRIGGER `user_insert` AFTER INSERT ON `user`
    FOR EACH ROW BEGIN
    DECLARE roleId INT;
    SET roleId = (SELECT role_id FROM role WHERE role_name ='顾客');
    INSERT user_role VALUES(new.user_id,roleId);
    END;
    $$
    订单表删除触发器(order_delete)

    当用户取消未付款订单时,自动将订单购买数量加到商品库存上

    CREATE
    TRIGGER `order_delete` BEFORE DELETE ON `order`
    FOR EACH ROW BEGIN
    UPDATE product SET product_stock = product_stock + old.pay_amount WHERE product_no = old.product_no;
    END;
    $$

    数据库事件(1个)

    商品表定时事件(product_event)

    通过定时事件,每天定时检查

    ① 当商品上架时间超过15天后,自动取消新品状态,(商品新品状态保留15天)

    ② 当用户下单后,但并未付款,为其保留24小时付款时间,24小时超过后,商品收回,自动取消订单

    ③ 当VIP会员过期后,自动检查并从表中删除过期会员的信息

    DELIMITER $$


    CREATE EVENT `qiu`.`product_event`


    ON SCHEDULE EVERY 1 DAY


    STARTS '2021-1-7 02:00:00'
    #开始时间自行更改
    ON COMPLETION PRESERVE


    DO
    BEGIN
    UPDATE product SET is_new = 0 WHERE sale_time<(CURRENT_TIMESTAMP() + INTERVAL -15 DAY);#修改15天前的新品数据
    DELETE FROM qiu.`order` WHERE order_time < DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND order_state='待付款'; #清除24小时内未付款的订单信息
    DELETE FROM vip WHERE overdue_time <= CURDATE(); #清除 VIP表 会员过期的信息
    END$$


    DELIMITER ;

    检测事件是否开启

    show variables like 'event_scheduler';

    开启事件

    set global event_scheduler = on;

    开启执行事件

    alter event product_event on completion preserve enable;

    关闭执行事件

    alter event product_event on completion preserve disable;

    删除事件

    drop event event_name;


    喜欢的同学后台关注之后回复关键字111,即可获取源码哦!


    转发,在看,关注公众号,一起学习、成长


    文章转载自射手座的程序员,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论