yg校园易购电商系统(Go+Vue)

news2024/11/25 0:41:30

校园易购二手平台系统

在这里插入图片描述

GitHub项目地址:https://github.com/xzhHas/yg

文章目录

  • 校园易购二手平台系统
    • 一、技术栈简介
    • 二、快速开始
      • 1、安装本系统使用到的插件,这里推荐使用docker安装,此操作皆在ubuntu系统下操作,如果是其他系统只需要修改一下命令即可。
      • 2、前端的配置
      • 3、后端的配置
      • 4、启动
    • 三、数据库设计
    • 四、核心系统功能
      • 1 用户功能
      • 2 用户操作功能
      • 3 库存服务
      • 4 商品服务
      • 5 订单服务
      • 6 系统架构
    • 五、效果演示
        • 前台商城系统
        • 后端管理系统
    • 六、可能出现的问题
    • 七、最后

一、技术栈简介

采用微服务架构的方式来写这个系统的相关功能,包括用户服务、商品服务、库存服务等等。

  • Golang 1.22.3
  • Gin
  • Mysql 8.0
  • Redis
  • Nodejs 14.21.3(建议使用14.21.3下载,并且使用淘宝镜像)
  • Vue
  • gRPC
  • Consul
  • Nacos

二、快速开始

1、安装本系统使用到的插件,这里推荐使用docker安装,此操作皆在ubuntu系统下操作,如果是其他系统只需要修改一下命令即可。

1、docker安装Mysql8.0

2、docker安装Redis

3、docker安装Nacos

4、docker安装Consul

5、docker安装:Elasticsearch、kibana及ik的安装

搭建系统详解网址: https://blog.csdn.net/m0_73337964/article/details/139523540

2、前端的配置

采用vue搭建一套后台管理系统和一套电商系统。

1、获取vue所需要的依赖:

npm insatll

2、启动vue项目:

npm run dev

3、后端的配置

1、protobuf的配置

我已经把文件复制到docs/protobuf文件下了,把他们直接复制到你的go安装目录的bing文件夹下即可。

然后在每一个文件目录下的proto文件下,在终端输入(生成所需要的proto文件):

protoc --go_out=. --go-grpc_out=. *.proto

2、修改config-pro.yaml文件里面的信息为nacos的模式即可。

3、最后,在每一个还有main.go的目录下进行终端启动:

go mod tidy
go build
./xxx.exe

注:这里我是打算写一个脚本一键启动的,但是还没完成,后续会修改的。

4、启动

此时,前端和后端都已经启动了,就可以点开浏览器去测试一下了。

http://xxxxxxxx:8089

http://xxxxxx:8090

三、数据库设计

在这里插入图片描述

四、核心系统功能

1 用户功能

  • 登录
    • 图形验证码:采用Go语言的图形验证码库,防止恶意登录和暴力破解。通过Redis缓存验证码,提高了系统响应速度,使用户在高峰期依然能够快速登录。
  • 注册
    • 短信验证:使用阿里云SMS服务发送短信验证码,确保用户注册的真实性。利用Redis缓存短信验证码,提高验证过程的响应速度,降低了注册时的延迟。
  • JWT鉴权
    • 安全认证:采用JWT进行用户身份验证和授权,确保通信安全。无状态认证模式,减轻了服务器的负载,提高了系统的扩展性和响应速度。
  • 用户删除功能
    • 权限控制:只有管理员可以删除用户,确保操作的安全性和数据的完整性。
    • 逻辑删除:使用逻辑删除标记,保留数据以备审计和恢复,避免数据丢失。
  • 用户详细信息
    • 信息展示:展示用户的基本信息、历史订单和收藏商品等详细数据,为用户提供全面的个人信息视图。
    • 数据安全:对敏感信息进行加密和保护,确保用户隐私和数据安全。

2 用户操作功能

  • 订单地址
    • 地址管理:用户可以添加、修改和删除收货地址,方便用户随时更新地址信息,提高用户体验。
    • 默认地址:支持设置默认收货地址,简化用户下单流程,提高购物体验的便捷性。
  • 用户收藏记录
    • 商品收藏:用户可以收藏感兴趣的商品,方便日后查看和购买,提高用户粘性和回访率。
    • 收藏夹管理:支持批量管理收藏的商品,提升用户操作的便捷性和效率。
  • 客户的留言及评论
    • 留言板:用户可以在商品页面留言,询问商品详情或发布评论,增强用户互动。

3 库存服务

  • 库存管理
    • 实时库存更新:根据订单和退货情况实时更新库存数据,确保数据准确。通过RocketMQ处理库存更新请求,保证在高并发场景下系统的性能和可靠性。
    • 预警机制:当库存低于预设阈值时,自动触发预警。
    • 分布式锁:采用Redis分布式锁,防止超卖现象,确保库存操作的原子性和一致性,提高数据的准确性。
  • 订单超时管理
    • 订单过期:未支付订单超过设定时间自动取消,并恢复库存。通过消息队列发布延迟消息,确保订单超时处理的及时性。
    • 通知机制:订单即将过期时提醒用户,减少订单取消率,提升订单完成率和用户满意度。

4 商品服务

  • 商品展示
    • 分类展示:展示热门商品、新品推荐、特价商品等分类信息,提升用户购物体验。
    • 高性能:利用缓存和异步加载技术,确保页面加载速度快。通过整合Sentinel,实现流量控制和熔断降级,确保系统在高并发情况下的稳定性,减少页面加载时间,提升用户体验。
  • 搜索功能
    • Elasticsearch集成:采用Elasticsearch实现高效的商品搜索和过滤功能,支持全文搜索、模糊搜索、筛选和排序等高级功能,提升搜索结果的相关性和准确性。

5 订单服务

  • 订单管理
    • 订单创建:用户下单后,生成订单记录并扣减库存。使用分布式事务管理确保订单创建和库存扣减的一致性,减少订单生成的延迟,提高订单处理效率。
    • 订单状态:支持订单状态的多种变更,如待支付、已支付、已发货、已完成、已取消等,通过消息队列实现订单状态的异步更新,减少订单状态变更的延迟。
  • 支付集成
    • 支付方式:采用支付宝支付。

6 系统架构

  • gRPC微服务
    • 高效通信:采用gRPC框架进行微服务间的通信,具有高性能和低延迟的特点,提升系统的响应速度。
    • 接口定义:使用Protocol Buffers定义服务接口和消息格式,确保跨语言的兼容性和高效的序列化性能。
    • 负载均衡:集成负载均衡机制,分散请求压力,提高系统的可用性和稳定性,减少系统响应时间。
  • 服务发现
    • Consul:使用Consul进行服务注册和发现,确保各微服务之间的互联互通,提高系统的可靠性和可扩展性。
    • **Nacos:**使用Nacos进行配置文件信息,做到了配置信息的动态更改,提高了实际操作的效率。
    • 健康检查:定期检查服务的健康状态,及时发现和处理故障服务,提高系统的稳定性和可靠性。

五、效果演示

前台商城系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

后端管理系统

在这里插入图片描述

在这里插入图片描述

六、可能出现的问题

1、在使用oss服务的时候可能出现服务未发现的问题,这是因为oos的回调服务必须是公网IP,如果你用的本地计算机,那么就需要内网穿透解决。

2、在使用阿里云支付的回调服务同上,也许哟啊内网穿透。

3、使用ubuntu系统,在本地可能无法访问虚拟机的IP地址或者连接不上,请修改虚拟机为桥接模式。

4、前端在npm insatll的时候报错,请看错误信息,出现错误的极大概率就是本地的微软运行库不全,那你自己在网上找一个修复一下就可了。

七、最后

感谢大家观看我这个小菜g的内容。

我的公共号也可以关注看一看,以后会发一些自己的学习资源以及自己的日常。0.o

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust基础学习-Rust宏

Rust中的宏是生成另一段代码的一段代码。可以根据输入生成代码,简化重复模式,使得代码更加简洁。比如我们一直在用的println!,vec!,panic!都是宏。 创建宏 可以使用macro_rules!创建一个宏: macro_rules! macro_name {(...) > {...} }这…

从中国迈向全球:一家造车新势力的扬帆出海

作为中国造车新势力的一员,哪吒汽车的出海之旅可以带给我们怎样的启示? 造车新势力的全球化布局 经常关注汽车市场的读者朋友,想必对哪吒汽车都不会感到陌生。作为合众新能源汽车有限公司旗下的汽车品牌,哪吒汽车自诞生以来一直致…

制作AI问答机器人:从0到1的完整指南

在数字化转型的浪潮中,企业正追求更高效、智能的客户服务解决方案。AI问答机器人以其快速响应、全天候服务和持续学习的能力,成为了提升客户满意度和加速业务发展的关键工具。本文将深入探讨如何制作一个企业级的AI问答机器人,并强调其功能体…

Docker大学生看了都会系列(八、Dokcerfile部署go项目)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 第三章 Docker常用命令 第四章 常用命令实战 第五章 Docker镜像详解 第六章 Docker容器数据卷 第七章 Dockerfile详解 第八章 Dokcerfile部署go项目 文章目录 一、前言二、环…

How to: Add and Customize the Ribbon Skin List and Skin Gallery

皮肤列表和皮肤库允许用户选择皮肤。本文介绍如何在功能区中显示“皮肤列表”或“皮肤库”并对其进行自定义。 DevExpress演示中心中的大多数应用程序都允许您选择皮肤。例如,运行XtraGrid演示并导航到皮肤功能区页面以更改当前皮肤。 在功能区UI中显示皮肤列表或…

Python YOLOv5 7.0 基于深度学习的口罩检测识别系统

目录 1,演示视频和资源下载 1.1 演示视频 1.2 资源下载 2,数据集 3,代码 3.1 带 PyQt5 UI 的检测程序,基于YOLOv5 7.0 3.1.1 根据训练结果进行检测 3.1.2 自动保存每张图片/每帧的检测结果 3.1.3 筛选查看每张图片/每帧检…

【Git教程】(二十一)与其他版本控制系统并行使用 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

Git教程 与其他版本控制系统并行使用 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 初始部署版本库3.2 得到中央版本控制管理中的更新修改3.3 将修改提交传输到中央本版控制系统 在许多企业和组织中,会统一管理版本控制工具和相关的流程。其中的个人和小团队…

服务器数据恢复—服务器raid5上层zfs文件系统数据恢复案例

服务器数据恢复环境&故障: 一台某品牌X3650M3服务器,服务器中有一组raid5磁盘阵列,上层采用zfs文件系统。 服务器未知原因崩溃,工作人员排查故障后发现服务器的raid5阵列中有两块硬盘离线导致该阵列不可用,服务器内…

Scikit-Learn随机森林分类

Scikit-Learn随机森林分类 1、随机森林分类1.1、随机森林分类概述1.2、随机森林分类的优缺点2、Scikit-Learn随机森林分类2.1、Scikit-Learn随机森林分类API2.2、Scikit-Learn随机森林分类初体验(葡萄酒分类)2.3、Scikit-Learn随机森林分类实践(鸢尾花分类)2.4、参数调优与…

1.Vue2使用ElementUI-初识及环境搭建

目录 1.下载nodejs v16.x 2.设置淘宝镜像源 3.安装脚手架 4.创建一个项目 5.项目修改 代码地址:source-code: 源码笔记 1.下载nodejs v16.x 下载地址:Node.js — Download Node.js 2.设置淘宝镜像源 npm config set registry https://registry.…

获取东方财富网股票的实时数据股票的数据,并保存到Excel文件中

可以运行python文件获取东方财富网:【序号,代码,名称,最新价,涨跌幅,涨跌额,成交量,成交额,振幅,最高,最低,今开,昨收,量比,换手率,市盈率-动态,市净率,总市值,流通市值,涨速,5分钟涨跌,60日涨跌幅,年初至今涨跌幅,】数据,保存到Excel文件中。 import pandas as pd import re…

在Cisco Packet Tracer上配置NAT

目录 前言一、搭建网络拓扑1.1 配置PC机1.2 配置客户路由器1.3 配置ISP路由器 二、配置NAT2.1 在客户路由器中配置NAT2.2 测试是否配置成功 总结 前言 本篇文章是在了解NAT的原理基础上,通过使用Cisco Packet Tracer 网络模拟器实现模拟对NAT的配置,以加…

09.爬虫---正则解析爬取数据

09.正则解析爬取数据 1.目标网站2.具体实现3.正则表达式分析4.完整代码并存入表格 1.目标网站 直达目标网站 https://movie.douban.com/chart 2.具体实现 我们来拿取一下上面网页的代码如下: from urllib import requesturl https://movie.douban.com/chart headers {Us…

Java心跳检测机制

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 心跳检测的定义 心跳检测是一种监控机制,在Java编程和分布式系统中具有广泛的应用。心跳检测,顾名思义,就像心跳一样,是一种…

计算机网络-数制转换与子网划分

目录 一、了解数制 1、计算机的数制 2、二进制 3、八进制 4、十进制 5、十六进制 二、数制转换 1、二进制转十进制 2、八进制转十进制 3、十六进制转十进制 4、十进制转二进制 5、十进制转八进制 6、十进制转十六进制 三、子网划分 1、IP地址定义 2、IP的两种协…

【二】线控底盘

GB/T 43947-2024 低速线控底盘通用技术要求 线控协议 转向 功能子功能信号描述性能要求分辨率线控转向功能转向控制使能人工切自驾标志位上升沿0-1,有效-线控转向功能转向控制电机输出转向轴的转角。目标方向盘转角范围(deg) -500~500,右负,左正响应延…

easyexcel将csv转为excel处理数字问题

使用easyexcel可以将csv格式的文件转为.xlsx文件,但是csv中有很多数字,比如:"123","12.34","-111",默认情况下会将其作为字符串写入.xlsx文件,就如同下面一样,字符类型的数字…

transformers 阅读:BERT 模型

前言 想深入理解 BERT 模型&#xff0c;在阅读 transformers 库同时记录一下。 笔者小白&#xff0c;错误的地方请不吝指出。 Embedding 为了使 BERT 能处理大量下游任务&#xff0c;它的输入可以明确表示单一句子或句子对&#xff0c;例如<问题&#xff0c;答案>。 …

单元测试之CppTest测试框架

目录 1 背景2 设计3 实现4 使用4.1 主函数4.2 测试用例4.2.1 定义4.2.2 实现 4.3 运行 1 背景 前面文章CppTest实战演示中讲述如何使用CppTest库。其主函数如下&#xff1a; int main(int argc, char *argv[]) {Test::Suite mainSuite;Test::TextOutput output(Test::TextOut…

Vue.js ECharts使用

一、介绍 ECharts 是一个使用 JavaScript 实现的开源可视化库&#xff0c;涵盖各行业图表&#xff0c;满足各种需求。ECharts 提供了丰富的图表类型和交互能力&#xff0c;使用户能够通过简单的配置生成各种各样的图表&#xff0c;包括但不限于折线图、柱状图、散点图、饼图、雷…