• vue+element模仿商城,前后端分离实现,含数据库


    一.框架简述

    • 后端实现框架:SpringBoot+OAuth2+Spring Security+Redis+mybatis-plus+mysql+swagger搭建实现
    • 前端框架实现:vue+element实现的独立vue项目

     上一篇文章也写过:

    SpringBoot+OAuth2+Spring Security+Redis+mybatis-plus+mysql+swagger搭建实现https://blog.csdn.net/lucky_fang/article/details/127729768

    现在的框架其实是在这边文章的基础上的升级版,进行了完善和拓展,更加符合实际开发,区别还挺大。上一篇文章只是单纯的获取token,并且token由底层代码进行redis存储,也没有token续费,所以这一次优化了redis自定义存储,我们可以自定义存储token、用户信息和自定义清除redis登录关键缓存信息,并且增加了解析token获取用户信息和token续费功能,配合前端进行自动续费,这样登录过程中token过期了能及时刷新续费token。

    f4a65e11d2b54c7ea91558a80522fbc2.png

    二.首页

    38f3280337024a17a78d934b70edb1c9.png

     登录、注册、网站首页、查看订单(前端未实现,后端已实现单一订单,后续打算改造成合并订单,支持多商品下单~)

    1.登录

    1bba5d391c0e4ec889393ef4b98c0bc6.gif

     登录请求:

    账号密码登录

    8597fb86e5884238b48ca943996d1775.png

     接口返回:

    b4c4501c796f456f9d78c483b8fd91e3.png

     accessToken就是登录token,前端会存储在页面缓存,my_token,userInfo为当前登录用户信息,如果refreshTokenFlag为true,则前端需要把缓存token刷新为返回的refreshToken,即为token续费:

    36f62f7e735f4c1a96df83bb50e9bcec.png

    续费:

    4b6f9ffde72844979c6c9b1912c4f7bf.png

    登录和退出接口封装了直接的请求:

    cbc0f936f1694f5086f1424dcb25684c.png

     登录窗口和注册窗口封装为vue组件使用:

    39cbe39268184cb8ab70ee1c03f34384.png

     引用方法:

    3a5e72adf33c4ada9aa7b19c4cc77ab5.png

     登录调用:

    1. handleLogin() {//登录
    2. this.$refs.loginForm.validate(valid => {
    3. if (valid) {
    4. const loading = this.$loading({
    5. lock: true,
    6. text: '登录中,请稍后。。。',
    7. spinner: "el-icon-loading"
    8. });
    9. this.$store.dispatch('login',this.loginForm).then((res)=>{
    10. if(res.code === 200){
    11. this.$notify({
    12. title: '登录成功',
    13. message: res.data.userName+',欢迎您!',
    14. type: 'success'
    15. });
    16. this.box = false;
    17. // this.$router.push({path: '/'});
    18. }
    19. }).finally(() =>
    20. loading.close()
    21. );
    22. }
    23. });
    24. },

    退出类似:

    1. logoutFun(){//退出登录
    2. this.$confirm("确定退出登录?", {
    3. confirmButtonText: "确定",
    4. cancelButtonText: "取消",
    5. type: "warning"
    6. })
    7. .then(() => {
    8. this.$store.dispatch('logout').then((res)=>{
    9. if(res.code === 200){
    10. this.$notify({
    11. title: '退出成功',
    12. type: 'success'
    13. });
    14. }
    15. });
    16. })
    17. }

    页面缓存方法:

    import {setStore,getStore} from "@/utils/store";

    设置缓存:

    setStore({name: 'product', content: {productName: this.searchName}});

    根据key获取:

    let obj = getStore({name: 'product'});

    2.退出

    7b3015ed345d4896b9ffc4fbb1ccba6f.gif

     接口返回:

    aab322d153244138b990f2dbb589e84f.png

    3.注册

    1c87067a26494f3b87c3f48a7dc93b4e.png

    注册完成后,记住用户名、密码,去登录 

     4.商品分类

    接口返回,每个分类附带其下的商品数量: 

    c3dfa16b9d464a9d9ee785a117b31810.png

    5.商品列表

    接口返回,默认展示根据第一个分类id查询商品,第一个分类为iphone13:

    579a9dbe172b4317af6be9d92e440c5c.png

    6.商品搜索

    2dc0121e5aad423d8ba5dde39424a381.gif

    接口返回,根据名称搜索:

    698011a71b2f4073a6948ac860445ef3.png

    7.根据分类查询商品列表

    3ac908964f5b4005a91c985feaeba258.gif

    接口返回,分局分类id查询:

    11ebfca7fa86468abf17cb1fc9645f96.png

    三.商品详情

    bbb4761f070848db81a742710d231fa8.png

     太长了,长截图都截不完~~~~

    想到商品详情,就必然会用到富文本编辑器,用来自定义录入和编辑商品信息,这里运用了

    vue-quill-editor

    1abec5f766704d2aa73b7b5ad4be3017.png

    安装后,在main.js引入:

     a742d81661574f85b49091f800bf905f.png

     因为这种功能是管理后台的功能,这里只是安装了,略过~~~

    效果图如下,你也许会好奇商品详情下面介绍的内容也太多太高大上了,怎么做?

    简单,因为是富文本,但是作者有没有商品上传功能,所以手动去某东,某宝商品详情,直接把网页代码拷贝下来

    a3959afbf961406ca41090f64ca633de.png

    选择鼠标右键,copy下来,贴到数据库字段:

    65cac58bd47a49aabc7ef35409ead92a.png

     四.立即购买

    点击立即购买,跳转购物车页面,购物车记到本地缓存中,不在数据库

    aefeaa7e2491411a8f693dd0b7c26f13.gif

     往购买列表添加新商品:

    5c06a5b490074bd0a0be6fbc01855a14.gif

    五.下一篇完善版已更新

    vue+element模仿电商商城,前后端分离实现,下单微信扫码支付

    六. 其他就不一一细说了,这里就简单介绍一下

    感谢您的耐心看完

    源码并不复杂!

    需要源码的可私聊,作者原创。

    如果您有好的项目需求,而苦于实现,那非常欢迎留言,作者来把您的需求变成真实的产品!

  • 相关阅读:
    基于GA遗传优化的PID控制器控制参数整定matlab仿真
    【Nginx28】Nginx学习:代理模块(二)缓存与错误处理
    闭包:什么是闭包、闭包的作用、闭包的解决
    PDF内容太多分不清?这个PDF加页码的方法可以帮助你
    CLIPBERT(2021 CVPR)
    Oracle通过局域网进行连接访问的设置
    Spring自动注入
    卷积神经网络原理及其C++/Opencv实现(2)
    解决mvn常用指令build failure的问题
    Python FastApi 解决跨域及OPTIONS预请求处理
  • 原文地址:https://blog.csdn.net/lucky_fang/article/details/127792675