# group-buy **Repository Path**: packagejava/group-buy ## Basic Information - **Project Name**: group-buy - **Description**: 基于 Spring Boot 开发的拼团服务,采用领域驱动设计(DDD)架构,旨在提供一个高效、灵活且可扩展的拼团活动解决方案。该服务涵盖了拼团活动管理、试算服务、交易订单服务和交易结算服务等核心功能,通过多种设计模式和技术框架的应用,确保系统的高可用性和可维护性。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-19 - **Last Updated**: 2025-05-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README ## 一、项目概述 基于 Spring Boot 开发的拼团服务,采用领域驱动设计(DDD)架构,旨在提供一个高效、灵活且可扩展的拼团活动解决方案。该服务涵盖了拼团活动管理、试算服务、交易订单服务和交易结算服务等核心功能,通过多种设计模式和技术框架的应用,确保系统的高可用性和可维护性。 ## 二、项目架构 ### 2.1 分层架构 项目采用典型的分层架构,各模块职责明确,便于开发和维护: - **api**:对外暴露的 RPC 接口层,负责与外部系统进行交互。 - **app**:服务的启动模块,包含项目的启动类和配置信息。 - **domain**:领域层,包含核心业务逻辑和实体类,是业务规则的主要实现地。 - **infrastructure**:基础设施层,提供数据库访问、缓存服务、动态配置等基础支持。 - **trigger**:适配层,负责事件的触发和处理,如定时任务、回调通知等。 - **types**:公共类型定义和常量配置,为项目中的各个模块提供统一的类型和常量定义。 ### 2.2 模块依赖关系 各模块之间通过 Maven 进行依赖管理,具体依赖关系如下: - `group-buy` 为父模块,管理所有子模块的版本和依赖。 - `group-buy-api`、`group-buy-app`、`group-buy-domain`、`group-buy-trigger`、`group-buy-infrastructure` 和 `group-buy-types` 为子模块,相互协作完成拼团服务的各项功能。 ## 三、核心功能模块 ### 3.1 拼团活动管理 通过 `GroupBuyActivityEntity` 和 `GroupBuyActivityDiscountVO` 等类,对拼团活动的基本信息(如活动 ID、名称、折扣、拼团方式、时间范围等)进行管理。 ### 3.2 试算服务 用户可以对拼团优惠进行试算,得到拼团可获得的优惠信息。试算过程采用责任链模式,由 `IGroupBuyService` 接口和 `IGroupBuyServiceImpl` 类提供服务,具体处理逻辑由 `DefaultActivityStrategyFactory` 和各个处理节点(如 `MarketNode`、`CrowdNode`、`ErrorNode`)完成。 ### 3.3 交易订单服务 - **查询未支付订单**:通过 `ITradeLockOrderService` 接口的 `queryNoPayMarketPayOrderByOutTradeNo` 方法,查询未被支付消费完成的营销优惠订单。 - **查询拼团进度**:通过 `ITradeLockOrderService` 接口的 `queryGroupBuyProgress` 方法,查询拼团的进度。 - **锁定营销预支付订单**:通过 `ITradeLockOrderService` 接口的 `lockMarketPayOrder` 方法,在商品下单前对营销预支付订单进行锁定。 ### 3.4 交易结算服务 处理拼团交易的结算,包括结算规则过滤、拼团组队信息处理、拼团交易结算和回调通知等功能。通过 `ITradeSettlementOrderService` 接口和 `TradeSettlementOrderService` 类实现,结算规则过滤使用责任链模式,由 `BusinessLinkedList` 和 `TradeSettlementRuleFilterFactory` 完成。 ## 四、设计模式应用 ### 4.1 策略模式 在折扣计算模块中使用,通过定义 `IDiscountCalculator` 接口和 `AbstractDiscountCalculator` 抽象类,为不同的折扣计算策略提供统一接口,具体策略如 `ZJCalculator`(直减)、`MJCalculator`(满减)等实现 `AbstractDiscountCalculator` 类。 ### 4.2 责任链模式 在试算服务和交易结算模块中使用,将请求沿着处理者链传递,直到有处理者能处理该请求。 - **试算服务处理链**:通过 `StrategyHandler` 接口和多个处理节点(如 `MarketNode`、`CrowdNode`、`ErrorNode`)形成处理链。 - **交易结算处理链**:通过 `BusinessLinkedList` 和多个过滤器(如 `SCRuleFilter`、`OutTradeNoRuleFilter` 等)形成过滤链。 ## 五、依赖技术 项目使用了以下主要技术和框架: - **Spring Boot**:用于构建微服务架构,简化应用的配置和开发过程。 - **MyBatis**:进行数据库操作,提供灵活的 SQL 映射支持。 - **Redis**:提供分布式锁、缓存等功能。