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

校园易购二手平台系统

在这里插入图片描述

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.mzph.cn/diannao/26829.shtml

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

相关文章

学习笔记——网络管理与运维——概述(网络管理)

二、概述 1、什么是网络管理? 网络管理是通过对网络中设备的管理,保证设备工作正常,使通信网络正常地运行,以提供高效、可靠和安全的通信服务,是通信网络生命周期中的重要一环。 2、网络管理分类 网络管理(Network …

【代码随想录算法训练营第三十五天】 | 1005.K次取反后最大化的数组和 134.加油站 135.分发糖果

贪心章节的题目,做不出来看题解的时候,千万别有 “为什么这都没想到” 的感觉,想不出来是正常的,转变心态 “妙啊,又学到了新的思路” ,这样能避免消极的心态对做题效率的影响。 134. 加油站 按卡哥的思路…

redis 06 集群

1.节点,这里是把节点加到集群中的操作,跟主从结构不同 这里是在服务端使用命令: 例子: 2.启动节点 节点服务器 首先,先是服务器节点自身有一个属性来判断是不是可以使用节点功能 一般加入集群中的节点还是用r…

【Spine学习06】之IK约束绑定,制作人物待机动画,图表塞贝尔曲线优化动作

引入IK约束的概念: 约束目标父级 被约束骨骼子集 这样理解更好,约束目标可以控制被约束的两个骨骼运作 IK约束绑定过程中呢,如果直接绑定最下面的脚掌骨骼会发生偏移,所以在开始处理IK之前,需要先设置一个ROOT结点下的…

创新入门|生成式AI创新赋能优势解析,获取生成式AI知识的10大方法

生成式AI技术对员工和企业影响深远。对于员工而言,生成式AI能够提升工作效率,简化重复性任务,并为创意和决策提供支持。对于企业而言,生成式AI在产品创新、市场营销、客户服务和运营优化等方面发挥重要作用,帮助预测市…

OpenHarmony napi 编译 .so 并打包成 .har

一、前言 最近在搞公司标准产品适配OpenHarmony 平台, 按照行业上的常用方法,在Android 是将底层代码用c 封装成 xxx.so ,然后将其他一部分打包成 xxx.jar。 因此,在OpenHarmony 平台也是打算按照这个模式。正所谓,好…

JavaScript之函数

函数 使用 声明语法: function 函数名() {函数体 }命名规范: 小驼峰命名法前缀用动词 前缀词: 调用 函数名()函数传参 为了提高函数的灵活性 声明语法: function 函数名(参数列表) {函数体 }调用 函数名(参数)在函数声…

Python版本管理器-Miniconda

随着Python的版本更新,我们在开发Python软件的时候,对Python的版本选择越来越重要,但同时又要兼容已经开发好了的Python软件,因此选择一款合适的Python版本管理器对提高开发效率也越来越重要,今天就推荐一款Python的版…

深入理解指针(二)

目录 1. 数组名的理解 2. 使用指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. 二级指针 6. 指针数组 7. 指针数组模拟二维数组 1. 数组名的理解 有下面一段代码: #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p &arr[…

2024年6月14日 十二生肖 今日运势

小运播报&#xff1a;2024年6月14日&#xff0c;星期五&#xff0c;农历五月初九 &#xff08;甲辰年庚午月己酉日&#xff09;&#xff0c;法定工作日。今天世界献血日&#xff0c;捐献新鲜血液&#xff0c;挽救更多生命&#xff0c;每位献血者都是英雄&#xff01; 红榜生肖…

美创科技入选“2024网络安全提供商创新排行榜”

近日&#xff0c;DBC德本咨询公布了“2024网络安全提供商创新排行榜”&#xff0c;美创科技凭借近20年的数据安全创新耕耘&#xff0c;荣誉上榜。 此次&#xff0c;与360、华为、腾讯等互联网、网络安全头部厂商并肩上榜&#xff0c;是行业对美创的再次认可。 数据安全的发展离…

什么是基于风险的漏洞管理RBVM,及其优势

文章目录 一、什么是漏洞管理二、什么是基于风险的漏洞管理RBVM三、RBVM的基本流程四、RBVM的特点和优势 一、什么是漏洞管理 安全漏洞是网络或网络资产的结构、功能或实现中的任何缺陷或弱点&#xff0c;黑客可以利用这些缺陷或弱点发起网络攻击&#xff0c;获得对系统或数据…

【log4】log4cplus:使用详解(一)

1、源码下载 源码下载地址:https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/ 最新稳定版本为2.1.1(2023-11-17) github中有最新的源码:https://github.com/log4cplus/log4cplus 2、源码编译 1)解压后,进入源码目录中,执行配置命令: ./confi…

闪烁圆点加载动画

效果图: 完整代码: <!DOCTYPE html> <html> <head><meta charset="UTF-8" /><title>闪烁圆点加载动画</title><style type="text/css">body {background: #ECF0F1;display: flex;justify-content: center;al…

最实用的AI软件开发工具CodeFlying测评

就在上个月&#xff0c;OpenAI宣布GPT-4o支持免费试用&#xff0c;调用API价格降到5美元/百万token。 谷歌在得到消息后立马将Gemini 1.5 的价格下降到0.35美元/百万token。 Anthropic的API价格&#xff0c;直接干到了0.25美元/百万token。 国外尚且如此&#xff0c;那么国内…

高创新 | CEEMDAN-VMD-BiLSTM-Attention双重分解+双向长短期记忆神经网络+注意力机制多元时间序列预测

目录 效果一览基本介绍模型设计程序设计参考资料 效果一览 基本介绍 高创新 | CEEMDAN-VMD-BiLSTM-Attention双重分解双向长短期记忆神经网络注意力机制多元时间序列预测 本文提出一种基于CEEMDAN 的二次分解方法&#xff0c;通过样本熵重构CEEMDAN 分解后的序列&#xff0c;复…

Multimodal Dynamics:用于多模态融合背景下的分类

Multimodal Dynamics&#xff08;MD&#xff09;是可信赖的多模态分类算法&#xff0c;该算法动态评估不同样本的特征级和模态级信息量&#xff0c;从而可信赖地对多模态进行融合。 来自&#xff1a;Multimodal Dynamics: Dynamical Fusion for Trustworthy Multimodal Classi…

嵌入式linux中设备树使用of函数操作基本方法

各位开发者大家好,今天主要给大家分享一下,如何使用of操作函数,获取对应设备树节点先关的属性信息。 第一:of_find_property函数 of_find_property 函数用于在设备树中查找节点下具有指定名称的属性。如果找到了该属性,可以通过返回的属性结构体指针进行进一步的操作,比…

【Linux】进程_2

文章目录 五、进程2. 操作系统3. 进程 未完待续 五、进程 2. 操作系统 我们知道了操作系统是一个进行 软硬件 资源 管理 的 软件 。为什么要有操作系统呢&#xff1f;或者说&#xff0c;为什么要有操作系统的管理呢&#xff1f;操作系统的存在目的是为了对上提供一个良好的运行…

机器学习第四十三周周报 aGNN

文章目录 week43 aGNN摘要Abstract1. 题目2. Abstract3. 网络架构3.1 aGNN3.1.1 输入与输出模块3.1.2 嵌入层3.1.3编码器解码器模块&#xff1a;带有多头注意力层的GCN 3.2 可释性模型&#xff1a;SHAP 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 实验区域以及场…