package com.mzl.flower.service.coupon; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.dto.request.coupon.*; import com.mzl.flower.dto.response.coupon.CouponRecordVO; import com.mzl.flower.entity.coupon.CouponRecordDO; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** *

* 服务类 *

* * @author @TaoJie * @since 2024-08-27 */ public interface CouponRecordService extends IService { List getList(QueryCouponRecordDTO dto) ; boolean createCouponRecord(CreateCouponRecordDTO dto); boolean updateCouponRecord(CreateCouponRecordDTO dto); boolean deleteCouponRecord(String id); CouponRecordVO getCouponRecordById(String id); Page getPage(Page page, QueryCouponRecordDTO dto); /** * 会员定时任务 * 根据会员等级定时下发刷优惠券 * @return */ boolean grantVipCouponRecordList(); /** * 根据当月日期设置上个月的日期的优惠券过期 * @return */ boolean expiredCouponRecordLastMon(); Integer statisCouponTemplateCount(QueryCouponStatisticsBO queryCouponStatisticsBO); Integer statisCouponTemplateCurMonCount(QueryCouponStatisticsBO queryCouponStatisticsBO); Integer statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO); /** * 根据优惠券种类,优惠券ID,用户的ID查找优惠券的记录数量 * @param queryExistCouponDTO * @return */ Integer getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO); /** * 根据优惠券的ID来查找已经领取的优惠券的数量 * @param couponId * @return */ Integer getExistGainCouponRecordAmountById(String couponId); Integer getUserGainCouponRecordAmountById(String couponId,Long customerId); /** * * @param couponId * @param userId * @return */ Integer getUserGainCouponRecordAmountByUserId(String couponId,String userId); List getMineCouponRecordList(QueryMineCouponRecordDTO dto); /** * 检查优惠券是否到期 * @param dto */ void checkCouponExpired(QueryMineCouponRecordDTO dto); boolean checkCurMonVipCouponExists(String couponId, Long customId, LocalDateTime startDateTime,LocalDateTime endDateTime); /** * 优惠券的使用 * @param couponId 优惠券ID * @param orderId 订单的ID * @param orderMount 订单的金额 * @return */ boolean useCoupon(String couponId, String orderId, BigDecimal orderMount); /** * 优惠券退单 * @param orderId * @return */ boolean cancelCouponUsage(String orderId); /** * 根据订单号查找优惠券信息 * @param orderId * @return */ List getCouponListByOrderId(String orderId) ; CouponRecordDO getCouponByOrderId(String orderId) ; /** * 查看当前人员是否已经重复发过此优惠券 * @param couponId * @param customId * @return */ boolean checkUserCouponExists(String couponId, Long customId); }