Quellcode durchsuchen

feat(coupon): 新增推荐新用户送券功能

- 在 CouponSendTypeEnum 中添加 REFERRER 类型
- 新增 sendByType 接口用于指定类型发送优惠券
- 实现 commonSend 方法支持通用发送逻辑
- 重构 registerSend 方法,使用 commonSend 实现
hechunping vor 4 Tagen
Ursprung
Commit
5fa49e0b09

+ 15 - 0
src/main/java/com/xynet/marketing/controller/inner/InnerCouponController.java

@@ -56,4 +56,19 @@ public class InnerCouponController {
         return R.ok(mercCouponFactory.orderSend(param));
     }
 
+    /**
+     * 指定类型-发送优惠券给会员
+     *
+     * @param param
+     * @param headers
+     * @return
+     */
+    @PostMapping("sendByType")
+    public R sendByType(@RequestBody JHashMap<String, Object> param, @RequestHeader Map<String, String> headers) {
+        MercCouponFactory mercCouponFactory = FactoryUtils.getService(MercCouponFactory.class, "merc_coupon_base");
+        Integer mercId = mercService.thirdMercIdToMercId(headers.get("provider-id"), param.getString("thirdMercId"));
+        param.put("mercId", mercId);
+        return R.ok(mercCouponFactory.commonSend(param));
+    }
+
 }

+ 2 - 1
src/main/java/com/xynet/marketing/enums/CouponSendTypeEnum.java

@@ -20,7 +20,8 @@ public enum CouponSendTypeEnum {
     EVERYONE("1", "每人必得", true),
     REGISTER("2", "新注册用户", false),
     SHOPPING("3", "购物后赠送", false),
-    DAY("4", "指定日期每日发放", true);
+    DAY("4", "指定日期每日发放", true),
+    REFERRER("5", "推荐新用户", false);
 
     private String code;
 

+ 8 - 0
src/main/java/com/xynet/marketing/service/factory/coupon/merc/MercCouponFactory.java

@@ -58,4 +58,12 @@ public interface MercCouponFactory {
      * @return
      */
     JMap<String, Object> goodsListPrice(JMap<String, Object> param);
+
+    /**
+     * 通用 指定类型 发放
+     *
+     * @param param
+     * @return
+     */
+    List<Map<String, Object>> commonSend(JMap<String, Object> param);
 }

+ 10 - 2
src/main/java/com/xynet/marketing/service/factory/coupon/merc/impl/base/MercCouponFactoryBase.java

@@ -102,7 +102,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
     }
 
     @Override
-    public List<Map<String, Object>> registerSend(JMap<String, Object> param) {
+    public List<Map<String, Object>> commonSend(JMap<String, Object> param) {
         List<Map<String, Object>> result = new ArrayList<>();
         LocalDate today = LocalDate.now();
         String thirdMemberId = param.getString("thirdMemberId");
@@ -110,7 +110,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
         LambdaQueryWrapper<MercCoupon> lqw = new LambdaQueryWrapper<MercCoupon>()
                 .eq(MercCoupon::getMercId, param.getInt("mercId"))
                 .eq(MercCoupon::getStatus, true)
-                .eq(MercCoupon::getSendType, CouponSendTypeEnum.REGISTER.getCode())
+                .eq(MercCoupon::getSendType, param.getString("sendType"))
                 .and(wrapper -> wrapper.isNull(MercCoupon::getSendStartDate)
                         .or()
                         .le(MercCoupon::getSendStartDate, today))
@@ -134,9 +134,17 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
                 memberCouponService.saveOrUpdate(memberCoupon);
             }
         });
+
+
         return result;
     }
 
+    @Override
+    public List<Map<String, Object>> registerSend(JMap<String, Object> param) {
+        param.set("sendType", CouponSendTypeEnum.REGISTER.getCode());
+        return commonSend(param);
+    }
+
     @Override
     public List<Map<String, Object>> orderSend(JMap<String, Object> param) {
         List<Map<String, Object>> result = new ArrayList<>();

+ 5 - 0
src/main/java/com/xynet/marketing/service/factory/coupon/merc/impl/v2/MercCouponFactoryV2.java

@@ -53,4 +53,9 @@ public class MercCouponFactoryV2 extends ServiceImpl<MercCouponMapper, MercCoupo
     public JMap<String, Object> goodsListPrice(JMap<String, Object> param) {
         return mercCouponFactoryBase.goodsListPrice(param);
     }
+
+    @Override
+    public List<Map<String, Object>> commonSend(JMap<String, Object> param) {
+        return mercCouponFactoryBase.commonSend(param);
+    }
 }