You've already forked FrameTour-BE
feat(pricing): 添加券码管理和使用功能
- 新增券码批次配置和券码实体 - 实现券码创建、领取、使用等接口 - 添加券码状态和优惠类型枚举 - 优化价格计算逻辑,支持券码优惠 - 新增优惠检测和应用相关功能
This commit is contained in:
@@ -44,7 +44,7 @@ public interface PriceCouponClaimRecordMapper extends BaseMapper<PriceCouponClai
|
||||
"WHERE id = #{id}")
|
||||
int updateCouponStatus(@Param("id") Long id,
|
||||
@Param("status") CouponStatus status,
|
||||
@Param("useTime") java.time.LocalDateTime useTime,
|
||||
@Param("useTime") java.util.Date useTime,
|
||||
@Param("orderId") String orderId,
|
||||
@Param("scenicId") String scenicId);
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.ycwl.basic.pricing.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ycwl.basic.pricing.entity.PriceVoucherBatchConfig;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 券码批次配置Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface PriceVoucherBatchConfigMapper extends BaseMapper<PriceVoucherBatchConfig> {
|
||||
|
||||
/**
|
||||
* 根据景区ID和推客ID查询有效的批次列表
|
||||
* @param scenicId 景区ID
|
||||
* @param brokerId 推客ID
|
||||
* @return 批次列表
|
||||
*/
|
||||
List<PriceVoucherBatchConfig> selectActiveBatchesByScenicAndBroker(@Param("scenicId") Long scenicId,
|
||||
@Param("brokerId") Long brokerId);
|
||||
|
||||
/**
|
||||
* 更新批次的已领取数量
|
||||
* @param batchId 批次ID
|
||||
* @param increment 增量(可为负数)
|
||||
* @return 影响行数
|
||||
*/
|
||||
int updateClaimedCount(@Param("batchId") Long batchId, @Param("increment") Integer increment);
|
||||
|
||||
/**
|
||||
* 更新批次的已使用数量
|
||||
* @param batchId 批次ID
|
||||
* @param increment 增量(可为负数)
|
||||
* @return 影响行数
|
||||
*/
|
||||
int updateUsedCount(@Param("batchId") Long batchId, @Param("increment") Integer increment);
|
||||
|
||||
/**
|
||||
* 获取批次统计信息
|
||||
* @param batchId 批次ID
|
||||
* @return 统计信息
|
||||
*/
|
||||
PriceVoucherBatchConfig selectBatchStats(@Param("batchId") Long batchId);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.ycwl.basic.pricing.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ycwl.basic.pricing.entity.PriceVoucherCode;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 券码Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface PriceVoucherCodeMapper extends BaseMapper<PriceVoucherCode> {
|
||||
|
||||
/**
|
||||
* 根据券码查询券码信息
|
||||
* @param code 券码
|
||||
* @return 券码信息
|
||||
*/
|
||||
PriceVoucherCode selectByCode(@Param("code") String code);
|
||||
|
||||
/**
|
||||
* 根据faceId和scenicId统计已领取的券码数量
|
||||
* @param faceId 用户faceId
|
||||
* @param scenicId 景区ID
|
||||
* @return 数量
|
||||
*/
|
||||
Integer countByFaceIdAndScenicId(@Param("faceId") Long faceId, @Param("scenicId") Long scenicId);
|
||||
|
||||
/**
|
||||
* 查询用户在指定景区的可用券码列表
|
||||
* @param faceId 用户faceId
|
||||
* @param scenicId 景区ID
|
||||
* @return 券码列表
|
||||
*/
|
||||
List<PriceVoucherCode> selectAvailableVouchersByFaceIdAndScenicId(@Param("faceId") Long faceId,
|
||||
@Param("scenicId") Long scenicId);
|
||||
|
||||
/**
|
||||
* 根据批次ID获取可领取的券码(未领取状态)
|
||||
* @param batchId 批次ID
|
||||
* @param limit 限制数量
|
||||
* @return 券码列表
|
||||
*/
|
||||
List<PriceVoucherCode> selectUnclaimedVouchersByBatchId(@Param("batchId") Long batchId,
|
||||
@Param("limit") Integer limit);
|
||||
|
||||
/**
|
||||
* 领取券码(更新状态为已领取)
|
||||
* @param id 券码ID
|
||||
* @param faceId 用户faceId
|
||||
* @param claimedTime 领取时间
|
||||
* @return 影响行数
|
||||
*/
|
||||
int claimVoucher(@Param("id") Long id,
|
||||
@Param("faceId") Long faceId,
|
||||
@Param("claimedTime") LocalDateTime claimedTime);
|
||||
|
||||
/**
|
||||
* 使用券码(更新状态为已使用)
|
||||
* @param code 券码
|
||||
* @param usedTime 使用时间
|
||||
* @param remark 使用备注
|
||||
* @return 影响行数
|
||||
*/
|
||||
int useVoucher(@Param("code") String code,
|
||||
@Param("usedTime") LocalDateTime usedTime,
|
||||
@Param("remark") String remark);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询券码列表(支持分页)
|
||||
* @param batchId 批次ID
|
||||
* @return 券码列表
|
||||
*/
|
||||
List<PriceVoucherCode> selectByBatchId(@Param("batchId") Long batchId);
|
||||
|
||||
/**
|
||||
* 查询用户的券码列表
|
||||
* @param faceId 用户faceId
|
||||
* @param scenicId 景区ID(可选)
|
||||
* @return 券码列表
|
||||
*/
|
||||
List<PriceVoucherCode> selectUserVouchers(@Param("faceId") Long faceId,
|
||||
@Param("scenicId") Long scenicId);
|
||||
|
||||
/**
|
||||
* 根据批次ID查询第一个可用的券码
|
||||
* @param batchId 批次ID
|
||||
* @return 可用券码
|
||||
*/
|
||||
PriceVoucherCode findFirstAvailableByBatchId(@Param("batchId") Long batchId);
|
||||
}
|
||||
Reference in New Issue
Block a user