CouponService.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.zsElectric.boot.business.service;
  2. import com.zsElectric.boot.business.model.entity.Coupon;
  3. import com.zsElectric.boot.business.model.form.CouponForm;
  4. import com.zsElectric.boot.business.model.form.applet.AppGainCouponForm;
  5. import com.zsElectric.boot.business.model.query.CouponQuery;
  6. import com.zsElectric.boot.business.model.query.applet.AppCouponQuery;
  7. import com.zsElectric.boot.business.model.vo.CouponVO;
  8. import com.baomidou.mybatisplus.core.metadata.IPage;
  9. import com.baomidou.mybatisplus.extension.service.IService;
  10. import com.zsElectric.boot.business.model.vo.applet.AppCouponStatusNumVO;
  11. import java.math.BigDecimal;
  12. /**
  13. * 优惠劵服务类
  14. *
  15. * @author zsElectric
  16. * @since 2025-12-19 09:58
  17. */
  18. public interface CouponService extends IService<Coupon> {
  19. /**
  20. *优惠劵分页列表
  21. *
  22. * @return {@link IPage<CouponVO>} 优惠劵分页列表
  23. */
  24. IPage<CouponVO> getCouponPage(CouponQuery queryParams);
  25. /**
  26. * 获取优惠劵表单数据
  27. *
  28. * @param id 优惠劵ID
  29. * @return 优惠劵表单数据
  30. */
  31. CouponForm getCouponFormData(Long id);
  32. /**
  33. * 新增优惠劵
  34. *
  35. * @param formData 优惠劵表单对象
  36. * @return 是否新增成功
  37. */
  38. boolean saveCoupon(CouponForm formData);
  39. /**
  40. * 修改优惠劵
  41. *
  42. * @param id 优惠劵ID
  43. * @param formData 优惠劵表单对象
  44. * @return 是否修改成功
  45. */
  46. boolean updateCoupon(Long id, CouponForm formData);
  47. /**
  48. * 删除优惠劵
  49. *
  50. * @param ids 优惠劵ID,多个以英文逗号(,)分割
  51. * @return 是否删除成功
  52. */
  53. boolean deleteCoupons(String ids);
  54. /**
  55. * 检查优惠券是否有效
  56. *
  57. * @param couponId 优惠券ID
  58. * @return 是否有效
  59. */
  60. boolean isValidCoupon(Long couponId);
  61. /**
  62. * 检查优惠券是否可以使用
  63. *
  64. * @param couponId 优惠券ID
  65. * @param orderAmount 订单金额
  66. * @return 是否可以使用
  67. */
  68. boolean canUseCoupon(Long couponId, BigDecimal orderAmount);
  69. /**
  70. * 使用优惠券
  71. *
  72. * @param couponId 优惠券ID
  73. * @param orderId 订单ID
  74. * @param orderAmount 订单金额
  75. * @return 实际优惠金额
  76. */
  77. BigDecimal useCoupon(Long couponId, Long orderId, BigDecimal orderAmount);
  78. /**
  79. * 过期优惠券处理
  80. *
  81. * @param couponId 优惠券ID
  82. * @return 是否处理成功
  83. */
  84. boolean expireCoupon(Long couponId);
  85. /**
  86. * 获取用户指定状态的优惠券列表
  87. *
  88. * @param userId 用户ID
  89. * @param status 优惠券状态
  90. * @return 优惠券列表
  91. */
  92. java.util.List<Coupon> getUserCouponsByStatus(Long userId, Integer status);
  93. /**
  94. * 根据模板ID和用户ID获取用户持有的优惠券
  95. *
  96. * @param templateId 模板ID
  97. * @param userId 用户ID
  98. * @return 优惠券列表
  99. */
  100. java.util.List<Coupon> getCouponsByTemplateAndUser(Long templateId, Long userId);
  101. IPage<CouponVO> getUserCouponPage(AppCouponQuery queryParams);
  102. AppCouponStatusNumVO getCouponStatusNum(Long userId);
  103. Boolean gainCoupon(AppGainCouponForm formData);
  104. }