文章目录

  • 项目运行的步骤
  • 项目源码地址
  • 模块说明
  • 商城项目基础篇总结
    • 项目知识点总结
    • 效果图展示
  • 商城项目高级篇总结
    • 项目知识点总结
    • 效果图展示
  • 项目中遇到的问题
    • 1. node版本与sass版本不对应
    • 2. 测试单元的 @Test 前面没有运行图标
    • 3. 前端category-cascader.vue报如下错误
    • 4. 后台启动程序报如下错误
    • 5. win10系统升级导致VirtualBox启动报错
    • 6. p100出现400页面找不到错误
    • 7. 通过在首页点击分类名称,跳转到检索页面,路径错误
    • 8. 引入seata依赖,启动项目报错
    • 9. 下单操作模拟远程服务异常,使用seata
    • 10. 控制台报seata的相关错误

项目相关学习笔记

  • 项目架构图:https://blog.csdn.net/weixin_45606067/article/details/110143227
  • 虚拟机中软件环境:https://blog.csdn.net/weixin_45606067/article/details/109629397
  • 高级篇笔记(1/2):https://blog.csdn.net/weixin_45606067/article/details/123940860
  • 高级篇笔记(2/2):https://blog.csdn.net/weixin_45606067/article/details/124472496

项目运行的步骤

环境

  • 安装虚拟机VMware中安装Centos7 或者 参考老师讲解的VirtualBox安装vagrant
  • 虚拟机中安装docker,rabbitmq,nginx,kibana,elasticsearch,redis,mysql
  • 本地安装idea(要有lombok插件),vscode,navicat,Redis Desktop Manager
  • 本地 JDK(1.8),maven(3.6.3),nacos(1.4.1),natapp【解决内网穿透】环境
  • 本地 node(12.19.0)、npm (6.14.8)环境

服务器

  1. 项目静态资源放在nginx中,位置/mydata/nginx/html/static
  2. 配置nginx的配置文件

nginx.conf文件【位置:/mydata/nginx/conf

gulimall.conf文件【位置:/mydata/nginx/conf/conf.d

后端

  1. 域名配置【host文件:C:\Windows\System32\drivers\etc
# 谷粒商城域名访问
192.168.187.100 gulimall.com
192.168.187.100 search.gulimall.com
192.168.187.100 item.gulimall.com
192.168.187.100 auth.gulimall.com
192.168.187.100 cart.gulimall.com
192.168.187.100 order.gulimall.com
192.168.187.100 member.gulimall.com
192.168.187.100 seckill.gulimall.com
# 测试单点登录
127.0.0.1 sso.com
127.0.0.1 client1.com
127.0.0.1 client2.com
  1. 将数据导入navicat中,确保数据能连接上。

  2. 拉取 gulimall-parent 项目到本地,导入idea中【保证maven依赖不报错,字符集都是UTF-8】

  3. 修改各模块中mysql,nacos,redis,rabbitmq地址等配置

  4. 修改 gulimall-order 模块中 支付宝相关的配置信息,主要是修改 alipay.notify_url地址为自己的natapp的【否则支付功能不好使】

  5. 修改 gulimall-third-party 模块中 阿里云oss,sms线管配置信息

  6. 启动各个模块,并查看控制台有没有报错

  7. 浏览器访问:http://gulimall.com

  8. 测试某个模块的接口 可使用swagger进行测试

前端:【管理端】

  1. 拉取 gulimall-vue 项目到本地,导入vscode
  2. 使用 npm install 安装依赖
  3. 使用 npm run dev启动项目
  4. 浏览器访问:http://localhost:8001/(账号密码:admin/admin)

项目源码地址

后端项目源码:https://gitee.com/StarSea007/gulimall-parent

前端项目源码:https://gitee.com/StarSea007/gulimall-vue

项目静态资源:https://github.com/StarSea99/gulimall-image

项目对应学习视频:https://www.bilibili.com/video/BV1np4y1C7Yf?p=1

后端接口文档:https://easydoc.net/s/78237135

主要包括如下:

  1. 项目中所需要的SQL文件;
  2. 学习项目中遇到的问题,及解决办法;
  3. 前面说到的知识点的详细步骤说明, 及注意事项。
  4. 各个阶段的学习笔记。


觉得对你有帮助可以 StarFork一下!!!!

模块说明

gulimall
├── gulimall-auth -- 认证中心(社交登录、OAuth2.0、单点登录)
├── gulimall-cart -- 购物车服务
├── gulimall-common -- 工具类及通用代码
├── gulimall-coupon -- 优惠卷服务
├── gulimall-gateway -- 统一配置网关
├── gulimall-member -- 会员服务
├── gulimall-order -- 订单服务
├── gulimall-product -- 商品服务
├── gulimall-search -- 检索服务
├── gulimall-seckill -- 秒杀服务
├── gulimall-test-sso-client -- 测试单点登录客户端
├── gulimall-test-sso-server -- 测试单点登录服务端
├── gulimall-third-party -- 第三方服务
├── gulimall-ware -- 仓储服务
├── renren-fast -- 人人开源项目的管理端
└── renren-generator -- 人人开源项目的代码生成器

商城项目基础篇总结

项目知识点总结

1、分布式基础概念

  • 微服务、注册中心、配置中心、远程调用、Feign、 网关

2、基础开发

  • SpringBoot2.0、 SpringCloud、 Mybatis-Plus、 Vue组件化、 阿里云对象存储OSS、Element UI

3、环境

  • Vagrant、 Linux、 应用容器引擎Docker、 MySQL、 Redis、 逆向工程&人人开源

4、开发规范

  • 数据校验JSR303、全局异常处理、全局统一返回、全局跨域处理。
  • 枚举状态、业务状态码、VO与TO与PO划分、逻辑删除。
  • Lombok:@Data、 @Slf4j

效果图展示

  1. 登录页面

    用户名密码:admin/admin

  2. 分类维护

  3. 品牌管理

  4. 规格参数、属性分组、销售属性

  5. 发布商品

  6. 商品管理

  7. 商品库存、采购单

    其余的页面可以运行项目自行查看。

商城项目高级篇总结

项目知识点总结

1、SpringCloud Alibaba组件

  • Nacos【配置中心,注册中心】、Sentinel、Seata

2、SpringCloud组件

  • OpenFegin、Gateway、Sleuth + Zipkin 服务链路追踪

3、技术点

  • 搜索引擎ElasticSearch、消息队列RabbitMQ、分布式缓存Springsession

3、其他

  • 分布式锁redisson、模板引擎thymeleaf
  • Reactive&WebFlux 响应式编程、本地事务&分布式事务
  • 性能与压力测试、缓存与分布式锁
  • 异步&线程池、单点登录与社交登录
  • 商城业务(购物车,订单,秒杀)、支付宝支付
  • 定时任务与分布式调度

高并发重要的三点:缓存、异步、队排好

效果图展示

  1. 登录页

  2. 首页

  3. 搜索页

  4. 详情页

  5. 结算页

  6. 收银页

  7. 支付宝页

  8. 我的订单页

项目中遇到的问题

1. node版本与sass版本不对应


原因:前端项目安装依赖:Python27环境问题,node版本与sass版本不对应。
node环境与sass不兼容问题,详情查看:https://github.com/sass/node-sass

建议:node使用12.x 以下的版本,不支持14.x新版。

解决方法:卸载当前的node,重新去官网下载并安装即可。

我的环境如下:

C:\Users>node -v
v12.19.0C:\Users>npm -v
6.14.8

2. 测试单元的 @Test 前面没有运行图标

  1. IDEA内:File - Setting - Plugins:搜到JUnitGenerator2.0,安装,重启IDEA
  2. 在类上写两个注解:@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest
  3. 类名上必须用 public 修饰
  4. 在类中写的方法上加上 @Test 注解,运行标志出现,可以运行。

3. 前端category-cascader.vue报如下错误


关于pubsub、publish报错,无法发送查询品牌信息的请求:
1、npm install --save pubsub-js
2、在src下的main.js中引用:
① import PubSub from ‘pubsub-js’
② Vue.prototype.PubSub = PubSub

4. 后台启动程序报如下错误


com.alibaba.nacos.api.exception.NacosException: java.lang.reflect.InvocationTargetException Caused by: com.alibaba.nacos.api.exception.NacosException: endpoint is blank
报错原因:导入了nacos配置中心,而配置文件又没有配置。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

解决:

  1. 移除该依赖;
  2. 在application.yml中配置nacos配置中心

总结:此报错不影响项目的启动和正常运行,可以忽略。

5. win10系统升级导致VirtualBox启动报错


错误原因:win10系统升级导致的。
解决方法:在window系统中找到对应的虚拟网卡,禁用设备并重新启用即可。

6. p100出现400页面找不到错误


原因:就是当初我们执行了一个sys_menus.sql文件,作用就是创建了很多菜单。就像我们第一次创建商品前端时,在菜单管理里面新建了商品管理的菜单,sys_menus.sql文件就是帮我们创建其余菜单。问题时sys_menus.sql少创建了‘规格维护’这个菜单,路由是product/attrupdate。由于没有创建菜单,前端路由自然就找不到页面,就报400错误。

解决方法1:和之前一样,在系统管理下的菜单管理新建‘规格维护’菜单即可,解决方法其实就是直接sql新建菜单:(不推荐)

INSERT INTO sys_menu (menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (76, 37, '规格维护', 'product/attrupdate', '', 2, 'log', 0);

解决方法2:在前端代码 src/router/index.js 文件中,定义 mainRoutes 时在 children 中定义一行路由(40 行):(推荐使用)

{ path: '/product-attrupdate', component: _import('modules/product/attrupdate'), name: 'attr-update', meta: { title: '规格维护', isTab: true } }

这样做可以避免左侧菜单栏出现一个多余的菜单。
原理是前端的路由是由 vue-router 负责的,在路由初始化时会从数据库查询定义的菜单并注册成路由,如果直接在前端注册成路由就不用先定义成菜单了。

7. 通过在首页点击分类名称,跳转到检索页面,路径错误

1)通过在首页点击分类名称,跳转到检索页面,并根据分类名称进行检索

在首页点击手机,页面却跳转到了 http://search.gmall.com/list.html?catalog3Id=225,路径错误

经过排查,发现是 catalogLoader.js 文件中的路径错了,进入linux的 /mydata/nginx/html/static/index/js文件夹下的catalogLoader.js文件,将文件中的请求路径改正确。

重启nginx服务在其访问就正常了。

2)通过在首页输入检索关键字,点击搜索跳转到检索页面,并根据检索关键字进行检索

在首页gulimall.com页面输入dada点击搜索,发现跳转的页面不正确

修改index.html 文件下 search() 方法的加载地址:

<script type="text/javascript">function search() {var keyword=$("#searchText").val()window.location.href = "http://search.gulimall.com/list.html?keyword=" + keyword;}
</script>

刷新项目在次访问就正常了。

8. 引入seata依赖,启动项目报错

如果我们将依赖放在gulimall-common服务中,那么再启动其他服务时就会报错:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.siro.gulimall.gateway.GulimallGatewayApplication]; nested exception is java.io.FileNotFoundException: class path resource [org/springframework/web/servlet/config/annotation/WebMvcConfigurer.class] cannot be opened because it does not exist


原因:是需要将两个配置文件依次放在这各个服务中,所以我们可将用到分布式事务的seata依赖放在该服务中,在gulimall-order和gulimall-ware服务中导入依赖:

<!--整合seata分布式事务-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId><exclusions><exclusion><groupId>io.seata</groupId><artifactId>seata-all</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>io.seata</groupId><artifactId>seata-all</artifactId><version>0.7.1</version>
</dependency>

如果seata依赖不识别,需要再pom文件中加入 :

<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

重新创新maven依赖,重启项目就好了。

9. 下单操作模拟远程服务异常,使用seata

使用 seata来解决分布式事务问题,下单操作的方法加上 @GlobalTransactional 注解,业务代码使用 int i = 10/0;模拟远程服务出问题。

原因:seata 0.7.1 不支持批量保存。需要改成循环遍历插入数据。

这是我找的对问题的详细说明:https://wenku.baidu.com/view/3b89e53dfc00bed5b9f3f90f76c66137ee064f28.html

如果想更新项目的依赖版本可以参照:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

10. 控制台报seata的相关错误

  1. 可以在报错的模块中,在主启动类上排除 GlobalTransactionAutoConfiguration自动配置类
  2. 删除掉项目中seata相关的代码【因为目前项目中没有用到,视频学习中用到了】

如果有收获! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

谷粒商城【商城系统】完整总结相关推荐

  1. php移动商城源码,GitHub - longmix/shopmallmobile: 商城系统源代码移动商城版本,完整的服务器调用,商品展示/用户中心/订单/支付/购物车/功能齐全...

    免费商城软件源代码 商城系统源代码是延誉宝电商系统的移动商城版本,包含了完整的服务器调用,商品展示/用户中心/订单/支付/购物车/功能齐全. 与网上下载的各类代码和二次开发复杂商城不同,延誉宝免费商城 ...

  2. 【计算机毕业设计】512网上商城购物系统

    一.系统截图(需要演示视频可以私聊) 摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,网上商城购物系统当然也不能排除在外.网上商城 ...

  3. cms php 带商城系统下载,开源免费PHP商城CMS系统集合

    随着互联网商业的兴起,世面上商城系统越来越多,国内外各类商城cms系统数不胜数.但是真正用得舒服的并不是很多,国内的很多商城系统不仅功能不足,而且还价格昂贵.本文就收集了几款免费开源的商城cms,以备 ...

  4. 网上商城购物系统(2)

    详细内容请看☟☟☟ 网上商城购物系统(1) 这是前面的完整的语句 -----------------------------创建表----------------------------------- ...

  5. [附源码]Python计算机毕业设计SSM化妆品网上商城数据分析系统(程序+LW)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  6. [附源码]JAVA+ssm网上商城比价系统(程序+Lw)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. 亿级商城促销系统架构设计与实践

    作者:vivo互联网官方商城开发团队-Liu JianZhu 一.前言 随着商城业务渠道不断扩展,促销玩法不断增多,原商城v2.0架构已经无法满足不断增加的活动玩法,需要进行促销系统的独立建设,与商城 ...

  8. 天猫商城在线购物系统

    天猫商城在线购物系统 本博文对Gitee开源项目 SpringBoot迷你天猫商城(Mini-Tmall)中的商品管理和商品分类管理进行讲解. 在此也感谢开源项目作者@贤趣项目小组 在此附上原项目链接 ...

  9. JAVA计算机毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署 本源码技术栈: 项目 ...

  10. 商城购物系统【用户登录注册,购物页面,购物车页面,订单页面】

    商城购物系统 文章目录 商城购物系统 前言 一.使用Mysql数据库建立需要用的商品表,用户表 二.利用html+cs+js对前台进行设计 效果如下 2.对商品页与购物车页进行设计 总结 前言 这学期 ...

最新文章

  1. [ZZ]知名互联网公司Python的16道经典面试题及答案
  2. [转载]TFS与Project、Excel同步
  3. 学习笔记(23):Python网络编程并发编程-开启线程的两种方式
  4. 福建省计算机初级职称,2019福建助理工程师职称评定条件材料及审核管理制度...
  5. 复杂语境下的实体关系抽取
  6. 许昌市襄县机器人_襄城县机器人自动码垛机生产工厂批发销售
  7. php预处理的fetch函数,php 预编译查询始终fetch不到数据解决方案
  8. cve-2014-7911安卓提权漏洞分析
  9. [刘阳Java]_Spring相关配置介绍_第5讲
  10. 2022年下半年系统集成项目管理工程师(软考中级)报名条件
  11. STM32示波器设计
  12. [转]centos安装oracle
  13. 2022卡塔尔世界杯赛程直播北京时间_足球世界杯对阵表图完整全部
  14. 【HCIE-BigData-Data Mining课程笔记(三)】预备知识-Python基础
  15. 扎克伯格“致敬”微信,但Facebook Pay能像微信支付一样成功吗?
  16. 台式机通过笔记本的WIFI上网
  17. 如何成为一个区块链开发人员_成为开发人员是社会工作
  18. 什么是字节码?采用字节码的最大好处是什么?
  19. node快速搭建后台
  20. 计算机是如何执行程序的(转)

热门文章

  1. 【Python】所有常用Python库和功能查询表
  2. java游戏txt_java游戏泡泡龙
  3. 五镜头无人机倾斜摄影POS编辑小程序
  4. FontForge 修改,删除,设计字体
  5. [转载] 高大上的 CSS 效果:Shape Blobbing
  6. XPT2046 四线电阻式触摸屏
  7. 特斯拉阀:被遗忘的天才之阀
  8. P4556 [Vani有约会] 树上差分 + 线段树合并
  9. mysql-proxy之奇虎360 Atlas 安装实现mysql读写分离
  10. Android studio 快速“Gradle的依赖缓存可能损坏”问题