package cn.iocoder.yudao.module.promotion.service.bargain; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.promotion.api.bargain.dto.BargainValidateJoinRespDTO; import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.recrod.BargainRecordPageReqVO; import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.record.AppBargainRecordCreateReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainRecordDO; import jakarta.annotation.Nullable; import java.util.Collection; import java.util.List; import java.util.Map; /** * 砍价记录 service 接口 * * @author HUIHUI */ public interface BargainRecordService { /** * 【会员】创建砍价记录(参与参加活动) * * @param userId 用户编号 * @param reqVO 创建信息 * @return 砍价记录编号 */ Long createBargainRecord(Long userId, AppBargainRecordCreateReqVO reqVO); /** * 更新砍价记录的砍价金额 * * 如果满足砍价成功的条件,则更新砍价记录的状态为成功 * * @param id 砍价记录编号 * @param whereBargainPrice 当前的砍价金额 * @param reducePrice 减少的砍价金额 * @param success 是否砍价成功 * @return 是否更新成功。注意,如果并发更新时,会更新失败 */ Boolean updateBargainRecordBargainPrice(Long id, Integer whereBargainPrice, Integer reducePrice, Boolean success); /** * 【下单前】校验是否参与砍价活动 *
* 如果校验失败,则抛出业务异常
*
* @param userId 用户编号
* @param bargainRecordId 砍价活动编号
* @param skuId SKU 编号
* @return 砍价信息
*/
BargainValidateJoinRespDTO validateJoinBargain(Long userId, Long bargainRecordId, Long skuId);
/**
* 更新砍价记录的订单编号
*
* 在砍价成功后,用户发起订单后,会记录该订单编号
*
* @param id 砍价记录编号
* @param orderId 订单编号
*/
void updateBargainRecordOrderId(Long id, Long orderId);
/**
* 获得砍价记录
*
* @param id 砍价记录编号
* @return 砍价记录
*/
BargainRecordDO getBargainRecord(Long id);
/**
* 获得用户在当前砍价活动中的最后一条砍价记录
*
* @param userId 用户编号
* @param activityId 砍价记录编号
* @return 砍价记录
*/
BargainRecordDO getLastBargainRecord(Long userId, Long activityId);
/**
* 获得砍价人数 Map
*
* @param activityIds 活动编号
* @param status 砍价记录状态
* @return 砍价人数 Map
*/
Map