0
点赞
收藏
分享

微信扫一扫

实战:搭建电商微服务系统

🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门springboot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

🎉 前言:构建一个完整的电商微服务系统

  在微服务架构中,电商平台通常包含多个独立的服务,每个服务负责不同的业务功能。例如,用户服务、商品服务、订单服务、支付服务等,每个服务都能独立运行并负责其对应的业务逻辑。微服务架构使得系统更易扩展和维护,而且每个服务的功能可以独立开发、部署和升级。

  本篇文章将通过实战示例,带你一步步搭建一个简单的电商微服务系统。我们将实现以下几个主要功能模块:

  • 用户服务(用户注册、登录、认证)
  • 商品服务(商品查询、商品管理)
  • 订单服务(下单、支付)
  • 购物车服务(管理购物车商品)
  • 支付服务(支付宝/微信支付集成)
  • 物流服务(查询物流信息)

通过这些服务的结合,我们将构建一个简化版的电商系统。接下来,我们将分步实现每个服务的功能。

🎯 1. 架构设计

在构建电商微服务系统时,我们采用以下架构:

  1. 用户服务:处理用户的注册、登录、认证等功能。
  2. 商品服务:负责商品的展示和管理。
  3. 订单服务:处理用户的下单和支付逻辑。
  4. 购物车服务:管理用户购物车中的商品。
  5. 支付服务:集成支付宝和微信支付。
  6. 物流服务:提供物流信息查询服务。

🛠 1.1 技术栈选择

  • Spring Boot:用于快速构建微服务。
  • Spring Cloud:用于服务注册、发现和负载均衡。
  • Spring Data JPA:用于与数据库交互。
  • MySQL:用于存储数据。
  • Nacos:作为服务注册与配置中心。
  • RabbitMQ:用于微服务之间的消息通信。
  • Redis:用于缓存购物车数据。
  • Feign:用于服务间调用。
  • JWT:用于用户认证。

🏗 2. 用户服务

2.1 功能需求

用户服务主要包括以下几个功能:

  • 用户注册:用户可以通过邮箱注册账号。
  • 用户登录:用户使用账号密码登录。
  • JWT认证:登录成功后,生成一个 JWT 令牌用于后续的身份验证。

🛠 2.2 创建 Spring Boot 项目

首先,创建一个 Spring Boot 项目,并添加以下依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>

📜 2.3 用户服务的功能实现

2.3.1 用户注册

用户通过邮箱注册账号,并保存到数据库中。

@RestController
@RequestMapping(/user)
public class UserController {

@Autowired
private UserService userService;

@PostMapping(/register)
public ResponseEntity<String> register(@RequestBody User user) {
if (userService.registerUser(user)) {
return ResponseEntity.ok(Registration successful);
} else {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(Registration failed);
}
}
}

2.3.2 用户登录与JWT生成

用户登录成功后,生成一个 JWT 令牌,用于后续的身份验证。

public String login(User user) {
// 验证用户的用户名和密码
if (userService.authenticate(user)) {
String token = JWT.create()
.withClaim(username, user.getUsername())
.withExpiresAt(new Date(System.currentTimeMillis() + 3600000)) // 1小时过期
.sign(Algorithm.HMAC256(secret));
return token;
}
return null;
}

🏗 3. 商品服务

3.1 功能需求

商品服务提供商品查询和管理功能:

  • 查询商品:通过商品名称或类别查询商品。
  • 管理商品:管理员可以添加、删除或更新商品信息。

🛠 3.2 创建商品服务

商品服务也是一个 Spring Boot 项目,使用 Spring Data JPA 来操作 MySQL 数据库。

3.2.1 商品查询

public List<Product> getProducts(String category, String name) {
return productRepository.findByCategoryAndName(category, name);
}

3.2.2 商品管理

@PostMapping(/add)
public ResponseEntity<String> addProduct(@RequestBody Product product) {
productService.addProduct(product);
return ResponseEntity.ok(Product added successfully);
}

🏗 4. 订单服务

4.1 功能需求

订单服务负责用户下单和支付的业务逻辑。

  • 下单:用户选择商品后生成订单。
  • 支付:通过支付服务完成支付。

🛠 4.2 创建订单服务

订单服务包括订单的创建、查询和更新状态。

public class OrderService {

@Autowired
private OrderRepository orderRepository;

public Order createOrder(User user, List<Product> products) {
Order order = new Order();
order.setUser(user);
order.setProducts(products);
order.setStatus(PENDING);
return orderRepository.save(order);
}
}

🏗 5. 支付服务

5.1 功能需求

支付服务集成了支付宝和微信支付,用户可以通过这两种方式进行支付。

🛠 5.2 集成支付宝支付

5.2.1 支付请求

public String generateAlipayPaymentRequest(Order order) {
// 通过支付宝 SDK 生成支付请求
AlipayRequest request = new AlipayRequest();
request.setOrderId(order.getId());
request.setAmount(order.getTotalPrice());
// 返回支付链接
return alipayClient.createPaymentUrl(request);
}

5.2.2 支付回调

支付宝支付成功后,系统将收到支付回调并更新订单状态。

public void handlePaymentCallback(String paymentResult) {
if (SUCCESS.equals(paymentResult)) {
orderService.updateOrderStatus(orderId, PAID);
}
}

🏗 6. 购物车服务

6.1 功能需求

购物车服务允许用户将商品添加到购物车、查看购物车商品以及删除商品。

🛠 6.2 创建购物车服务

public class CartService {

@Autowired
private RedisTemplate<String, CartItem> redisTemplate;

public void addToCart(String userId, Product product, int quantity) {
CartItem cartItem = new CartItem(product, quantity);
redisTemplate.opsForList().leftPush(userId, cartItem);
}

public List<CartItem> getCart(String userId) {
return redisTemplate.opsForList().range(userId, 0, -1);
}
}

🏗 7. 物流服务

7.1 功能需求

物流服务提供订单物流查询功能,用户可以查询订单的配送状态。

🛠 7.2 创建物流服务

public class LogisticsService {

@Autowired
private LogisticsRepository logisticsRepository;

public LogisticsInfo getLogisticsInfo(String orderId) {
return logisticsRepository.findLogisticsByOrderId(orderId);
}
}

🎯 8. 总结

通过本篇文章,我们实现了一个简化版的电商微服务系统,包含了用户服务、商品服务、订单服务、支付服务、购物车服务和物流服务等模块。每个服务都独立部署,并通过 API 接口相互通信,整个系统采用微服务架构实现,易于扩展和维护。

我们使用了 Spring BootSpring CloudMySQLRedisJWT 等技术,搭建了一个具有基本电商功能的微服务系统。未来,我们可以根据需求扩展系统,添加更多功能,例如:

  • 多支付方式的支持。
  • 更复杂的商品搜索功能。
  • 更强的服务治理和监控功能。

通过这样的微服务架构,我们能够为电商平台提供更加灵活、可扩展的解决方案。

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

<div align="center"><img width="780" height="" src="https://i-blog.csdnimg.cn/direct/f7f3d1c620174b5ebd4d74b7255a33ad.png"/></div>

-End-

举报

相关推荐

0 条评论