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

举报
bug菌 发表于 2025/03/20 22:37:25 2025/03/20
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8 🎉 前言:构建一个完整的电商微服务系统  在微服务架构中,电商平台通...

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,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,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

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

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

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

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。