MCPcopy
hub / github.com/2227324689/gpmall

github.com/2227324689/gpmall @main sqlite

repository ↗ · DeepWiki ↗
1,557 symbols 4,105 edges 455 files 691 documented · 44%
README

1566284996878

license issues constract us origin blog author Gpmall hits community

咕泡商城- 微服务架构实战

咕泡商城是咕泡学院 Java架构课程中,帮助学员对于技术更好落地的一个实战项目,项目基于springboot2.1.6.RELEASE+Dubbo2.7.3 来构建微服务。

业务模块划分,尽量贴合互联网公司的架构体系。所以,除了业务本身的复杂度不是很高之外,整体的架构基本和实际架构相差无几。

但实际上,真实的生产级的项目由于用户量以及业务的复杂度,会变得非常复杂。 所以我们会让更多的人参与进来,从需求、设计、解决方案等方面出发来对项目进行迭代,从而培养出一定的

实际解决方案的经验和能力。

应用架构图

1565533924343

项目演示地址

  • 商场系统演示地址:http://vip.istio.tech(暂时不可用)
  • 后台管理系统:开发中..

项目用到的技术

项目采用前后端分离开发,前端需要独立部署。目前核心的技术栈采用的是SpringBoot2.1.5.RELEASE+Dubbo2.7.2,

前端使用的技术

  • nodejs
  • axios
  • es6
  • vue
  • sass
  • Element UI
  • webpack
  • vue router
  • mockjs

后端使用的技术

后端的主要架构是基于springboot+dubbo+mybatis.

  • SpringBoot2.1.6
  • Mybatis
  • Dubbo2.7.2
  • Zookeeper
  • Mysql
  • Redis
  • Elasticsearch
  • Kafka
  • druid
  • Docker
  • mybatis generator
  • Sentinel

项目模块说明

db_script 本项目的数据库脚本 使用mysql 暂时未做分表处理,不过有考虑到分表的情况
gpmall-cashier 收银台,负责支付相关的交互逻辑 web项目 8083端口
gpmall-commons 公共的组件 jar 公共组件,很多地方都有引用,改动的时候要注意
gpmall-front 咕泡商城的前端项目 前端项目 使用vue、node、es等前端技术开发
gpmall-parent 父控文件,用来统一管理所有jar包 父控文件 用来统一管理所有项目的jar包的版本
gpmall-shopping 商品/购物车/首页渲染等交互 web项目 8081端口
gpmall-user 提供用户相关的交互,如登录、注册、个人中心等 web项目 8082端口
market-service 促销活动的Dubbo服务【暂时未联调完成,可以不启动】 dubbo服务 20884端口
pay-service 提供支付处理能力 dubbo服务 20883端口
shopping-service,提供购物车、推荐商品、商品等服务 dubbo服务 20881端口
user-service ,提供用户相关服务 dubbo服务 20880端口
order-service ,提供订单服务 dubbo服务 20882端口
comment-service , 商品评论服务 dubbo服务 20885端口
PRD 存放prd需求文档,有想参与设计的同学,可以提供prd需求
wiki 帮助文档,需要每一位同学贡献自己的一份力量

项目搭建方式

  1. 创建gpmall数据库,并把db_scrpit目录下的sql脚本导入。

  2. 按照下面顺序分别启动相关服务

  3. gpmall-parent , 这个是整个项目的父控文件,需要执行install安装到本地,如果自己搭建了nexus,可以deploy到nexus上

  4. gpmall-commons , 这个是整个项目的公共依赖,执行install安装到本地,如果自己搭建了nexus,可以deploy到nexus上

    注: 下列微服务,用到了mysql、redis、kafka等,需要提前安装好相关中间件,并且所有的服务配置的是host地址,建议用hostswitch工具统一维护

  5. user-service , 用户服务,把user-service-api模块,install到本地仓库,因为其他模块有依赖。然后启动服务。

  6. order-service , 订单服务, 把order-service-api模块,install到本地,给其他模块依赖

  7. shopping-service , 商品服务, 把shopping-service-api模块,install到本地,给其他模块依赖

  8. marking-service , 营销服务,暂时未开发功能。

  9. pay-service , 支付服务,代码已经写完并调试通过(但是用的是老的接口版本,如果是新的版本,需要改接口),还需要提供appid这些,不过这个项目不启动,并不影响前面的页面的功能

  10. comment-service , 评论服务,用于展示商品评论信息

    下面的服务为BFF,做服务聚合,分别依赖上面的微服务模块

  11. gpmall-shopping

  12. gpmall-user

  13. gpmall-cashier

  14. 前端工程 gpmall-front, 这个项目采用vue开发。

  15. 安装node环境

  16. 安装python2.7
  17. 在gpmall-front中执行npm install
  18. 再执行npm run dev运行, 如果后端的服务都正常启动,此时gpmall-front会把请求转发到服务端获取相关数据进行渲染。

项目开发进度

前台项目整体的规划有

  • 首页渲染,轮播、自定义展示板块
  • 商品查询、商品展示、商品详情
  • 个人中心、用户注册、个人信息修改、收获地址维护
  • 购物车、订单查询、下单、支付
  • 促销活动

1565235690613

后台规划

效果图

项目架构图

1565861422268

如何贡献

非常欢迎您对Gpmall的开发作出贡献! 你可以选择以下方式向Gpmall贡献:

<<<<<<< HEAD

=======

个人微信公众号

跟着Mic学架构

88aab362053f002aeff65bb3c957591fafb1c788

作者的个人博客

https://istio.tech

Extension points exported contracts — how you extend this code

TransHandler (Interface)
腾讯课堂搜索【咕泡学院】 官网:www.gupaoedu.com 风骚的Mic 老师 create-date: 2019/8/2-下午9:52 [7 implementers]
order-services/order-provider/src/main/java/com/gpmall/order/biz/handler/TransHandler.java
DistributedLock (Interface)
@author: zm @createDate: 2018/6/23$ 10:13$ @updateRemark: 修改内容 @description: [8 implementers]
gpmall-commons/commons-lock/src/main/java/com/gpmall/commons/lock/DistributedLock.java
ICartService (Interface)
腾讯课堂搜索【咕泡学院】 官网:www.gupaoedu.com 风骚的Mic 老师 create-date: 2019/7/23-18:57 [4 implementers]
shopping-service/shopping-api/src/main/java/com/gpmall/shopping/ICartService.java
IMemberService (Interface)
腾讯课堂搜索【咕泡学院】 官网:www.gupaoedu.com 风骚的Mic 老师 create-date: 2019/7/30-下午11:47 会员服务 [4 implementers]
user-service/user-api/src/main/java/com/gpmall/user/IMemberService.java
Validator (Interface)
数据验证接口类 @author [3 implementers]
pay-service/pay-provider/src/main/java/com/gpmall/pay/biz/abs/Validator.java
OrderCoreService (Interface)
腾讯课堂搜索【咕泡学院】 官网:www.gupaoedu.com 风骚的Mic 老师 create-date: 2019/7/30-上午9:13 订单相关业务 [2 implementers]
order-services/order-api/src/main/java/com/gpmall/order/OrderCoreService.java
ICommentReplyService (Interface)
@author hepengshuai @date 2019/8/21 20:46 商品评价回复服务接口 [2 implementers]
comment-service/comment-api/src/main/java/com/gpmall/comment/ICommentReplyService.java
EmailSender (Interface)
Administrator 2019/8/26 0026 14:43 [2 implementers]
gpmall-commons/commons-tool/src/main/java/com/gpmall/commons/tool/email/EmailSender.java

Core symbols most depended-on inside this repo

getCode
called by 217
pay-service/pay-api/src/main/java/com/gupaoedu/pay/IEnum.java
get
called by 101
gpmall-commons/commons-lock/src/main/java/com/gpmall/commons/lock/extension/Holder.java
setMsg
called by 76
gpmall-commons/commons-core/src/main/java/com/gpmall/commons/result/AbstractResponse.java
getMessage
called by 42
user-service/user-api/src/main/java/com/gpmall/user/constants/SysRetCodeConstants.java
setData
called by 39
gpmall-commons/commons-core/src/main/java/com/gpmall/commons/result/ResponseUtil.java
getMsg
called by 34
gpmall-commons/commons-core/src/main/java/com/gpmall/commons/result/AbstractResponse.java
getMessage
called by 33
comment-service/comment-api/src/main/java/com/gpmall/comment/constant/CommentRetCode.java
isEmpty
called by 33
gpmall-commons/commons-lock/src/main/java/com/gpmall/commons/lock/extension/ConcurrentHashSet.java

Shape

Method 1,031
Class 334
Function 109
Interface 71
Enum 12

Languages

Java93%
TypeScript7%

Modules by API surface

comment-service/comment-provider/src/main/java/com/gpmall/comment/dal/entitys/Comment.java39 symbols
shopping-service/shopping-provider/src/main/java/com/gpmall/shopping/dal/entitys/Item.java27 symbols
coupon-service/coupon-provider/src/main/java/com/gpmall/coupon/dal/entitys/SaleCoupon.java27 symbols
gpmall-front/src/router/index.js25 symbols
gpmall-front/src/api/goods.js25 symbols
search-service/search-provider/src/main/java/com/gpmall/search/entity/ItemDocument.java23 symbols
order-services/order-provider/src/main/java/com/gpmall/order/dal/entitys/OrderShipping.java23 symbols
coupon-service/coupon-provider/src/main/java/com/gpmall/coupon/dal/entitys/SaleRule.java23 symbols
shopping-service/shopping-provider/src/main/java/com/gpmall/shopping/dal/entitys/ItemCat.java22 symbols
comment-service/comment-provider/src/main/java/com/gpmall/comment/dal/entitys/CommentReply.java21 symbols
gpmall-front/static/geetest/gt.js20 symbols
coupon-service/coupon-provider/src/main/java/com/gpmall/coupon/dal/entitys/SaleCouponCode.java19 symbols

Dependencies from manifests, versioned

com.alibaba:druid
com.github.pagehelper:pagehelper
com.github.pagehelper:pagehelper-spring-boot-autoconfigure
com.github.pagehelper:pagehelper-spring-boot-starter
com.github.tedzhdz:wxpay-sdk3.0.10 · 1×
com.github.wxpay:wxpay-sdk3.0.9 · 1×
com.gpmall.comment:comment-api0.0.1-SNAPSHOT · 1×
com.gpmall.commons:commons-lock1.0-SNAPSHOT · 1×
com.gpmall.commons:commons-mq1.0-SNAPSHOT · 1×
com.gpmall.commons:commons-tool1.0-SNAPSHOT · 1×

Datastores touched

(mysql)Database · 1 repos
gpmallDatabase · 1 repos
old-gpmallDatabase · 1 repos

For agents

$ claude mcp add gpmall \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact