当前位置: 首页 > news >正文

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

在这里插入图片描述

相关文章:

  • DevExpress Installed
  • 人邮学院明日科技web前端开发案例教程(慕课版)第六章习题
  • java kotlin python 日志记录
  • 再度牵手,制造升级 | 毅达科技IMS OS+通用产品集+行业套件项目正式启动!
  • 【乐吾乐3D可视化组态编辑器】用开关控制巡检车和路灯
  • 艾宾浩斯winform单词系统+mysql
  • VMware导入vmdk文件(亲测有效)
  • MATLAB数学建模——数据拟合
  • Vue2事件处理(v-on)
  • 算法:11. 盛最多水的容器
  • 再论企业上ERP和MES的抉择
  • ZCC5429 异步升压芯片
  • C语言调用so/dll动态库
  • JAVA代码审计之SQL注入代码审计
  • 【面试宝藏】Redis 常见面试题解析其二
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Cumulo 的 ClojureScript 模块已经成型
  • flutter的key在widget list的作用以及必要性
  • Go 语言编译器的 //go: 详解
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • python3 使用 asyncio 代替线程
  • Spring Boot MyBatis配置多种数据库
  • 通过npm或yarn自动生成vue组件
  • 一文看透浏览器架构
  • linux 淘宝开源监控工具tsar
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #if #elif #endif
  • #include
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (四) 虚拟摄像头vivi体验
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Mobi域名介绍
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 8.0 发布到 IIS
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET开发者必备的11款免费工具
  • .NET开源项目介绍及资源推荐:数据持久层
  • /etc/sudoer文件配置简析
  • @EnableWebSecurity 注解的用途及适用场景
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [Android]How to use FFmpeg to decode Android f...
  • [C#]使用C#部署yolov8的目标检测tensorrt模型