package com.xiaopeng.account.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.account.model.dto.ReceiveCouponDto; import com.xiaopeng.account.model.dto.SendCouponDto; import com.xiaopeng.account.model.query.XpUserCouponListQuery; import com.xiaopeng.account.model.vo.XpAppUserCouponListVo; import com.xiaopeng.account.model.vo.XpAppUserCouponTotalVo; import com.xiaopeng.account.model.vo.XpAppUserCouponVo; import com.xiaopeng.account.vo.UserCouponListVo; import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest; import com.xiaopeng.api.dto.account.UseUserCouponDto; import com.xiaopeng.api.model.account.XpAppUserCoupon; import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery; import com.xiaopeng.api.vo.account.NavigationCouponPickerVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import org.springframework.scheduling.annotation.Async; import java.math.BigDecimal; import java.util.List; /** *

* 用户优惠券 服务类 *

* * @author mitao * @since 2026-02-03 */ public interface IXpAppUserCouponService extends IService { PageInfo pageList(XpAppUserCouponPageListQuery query); List findListExpirationTime(String appUserId); boolean updateExpirationTime(List appUserIds); /** * 获取用户优惠券列表 * @param query * @param uid * @return */ XpAppUserCouponVo userCouponList(XpUserCouponListQuery query, String uid); /**+ * 获取用户优惠券数量total * @param uid * @return */ XpAppUserCouponTotalVo userCouponTotal(String uid); /** * 领取优惠券 * @param dto * @param uid * @return */ boolean receive(ReceiveCouponDto dto, String uid); /** * 根据时间规则筛选出优惠券 * @param couponList * @return */ List timeRule(List couponList); /** * 导航下单页:选券弹窗列表、气泡文案、最佳优惠标记 */ NavigationCouponPickerVo navigationCouponPicker(Long userId, NavigationCouponPickerRequest request); @Async("couponSendExecutor") boolean saveInfo(UseUserCouponDto dto); /** * 发送优惠券 * * @param dto * @return */ R send(SendCouponDto dto); /** * 获取用户优惠券数量 * @param uid * @return */ Integer getUserCouponNum(String uid); Boolean holding(Long couponId); /** * 获取可用优惠券 * @param orderMoney * @param uid * @return */ UserCouponListVo getUserCouponList(BigDecimal orderMoney, String uid); }