You've already forked FrameTour-BE
refactor(order): 重构重复购买检查和定价逻辑
- 引入商品类型能力配置,替代硬编码的商品类型判断 - 实现策略模式处理不同商品类型的重复购买检查 - 抽象定价模式,支持固定价格和数量计价等不同方式 - 新增策略工厂自动注册各类检查器实现 - 添加缓存机制提升商品类型配置查询性能 - 解耦订单服务与具体商品类型的紧耦合关系 - 提高代码可维护性和扩展性,便于新增商品类型
This commit is contained in:
47
src/main/resources/mapper/ProductTypeCapabilityMapper.xml
Normal file
47
src/main/resources/mapper/ProductTypeCapabilityMapper.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.ycwl.basic.product.mapper.ProductTypeCapabilityMapper">
|
||||
|
||||
<!-- 结果映射 -->
|
||||
<resultMap id="BaseResultMap" type="com.ycwl.basic.product.capability.ProductTypeCapability">
|
||||
<id column="id" property="id" jdbcType="BIGINT"/>
|
||||
<result column="product_type" property="productType" jdbcType="VARCHAR"/>
|
||||
<result column="display_name" property="displayName" jdbcType="VARCHAR"/>
|
||||
<result column="category" property="category" jdbcType="VARCHAR"/>
|
||||
<result column="pricing_mode" property="pricingMode" jdbcType="VARCHAR"/>
|
||||
<result column="supports_tier_pricing" property="supportsTierPricing" jdbcType="BOOLEAN"/>
|
||||
<result column="allow_duplicate_purchase" property="allowDuplicatePurchase" jdbcType="BOOLEAN"/>
|
||||
<result column="duplicate_check_strategy" property="duplicateCheckStrategy" jdbcType="VARCHAR"/>
|
||||
<result column="can_use_coupon" property="canUseCoupon" jdbcType="BOOLEAN"/>
|
||||
<result column="can_use_voucher" property="canUseVoucher" jdbcType="BOOLEAN"/>
|
||||
<result column="can_use_one_price" property="canUseOnePrice" jdbcType="BOOLEAN"/>
|
||||
<result column="can_use_bundle" property="canUseBundle" jdbcType="BOOLEAN"/>
|
||||
<result column="metadata" property="metadata" jdbcType="VARCHAR"
|
||||
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result column="is_active" property="isActive" jdbcType="BOOLEAN"/>
|
||||
<result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/>
|
||||
<result column="updated_at" property="updatedAt" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 基础列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, product_type, display_name, category,
|
||||
pricing_mode, supports_tier_pricing,
|
||||
allow_duplicate_purchase, duplicate_check_strategy,
|
||||
can_use_coupon, can_use_voucher, can_use_one_price, can_use_bundle,
|
||||
metadata, is_active, created_at, updated_at
|
||||
</sql>
|
||||
|
||||
<!-- 根据商品类型代码查询 -->
|
||||
<select id="selectByProductType" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM product_type_capability
|
||||
WHERE product_type = #{productType}
|
||||
AND is_active = TRUE
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user