|
@@ -1,10 +1,13 @@
|
|
|
package com.xynet.marketing.service.factory.coupon.merc.impl.base;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xynet.marketing.entity.MemberCoupon;
|
|
|
import com.xynet.marketing.entity.MercCoupon;
|
|
|
+import com.xynet.marketing.enums.CouponSendTypeEnum;
|
|
|
import com.xynet.marketing.enums.CouponValidTypeEnum;
|
|
|
import com.xynet.marketing.mapper.MercCouponMapper;
|
|
|
import com.xynet.marketing.service.MemberCouponService;
|
|
@@ -20,6 +23,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
/**
|
|
@@ -93,6 +97,78 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void registerSend(JMap<String, Object> param) {
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ String thirdMemberId = param.getString("thirdMemberId");
|
|
|
+ //查找商家可赠送的优惠券
|
|
|
+ LambdaQueryWrapper<MercCoupon> lqw = new LambdaQueryWrapper<MercCoupon>()
|
|
|
+ .eq(MercCoupon::getMercId, param.getInt("mercId"))
|
|
|
+ .eq(MercCoupon::getStatus, true)
|
|
|
+ .eq(MercCoupon::getSendType, CouponSendTypeEnum.T_2.getCode())
|
|
|
+ .and(wrapper -> wrapper.isNull(MercCoupon::getSendStartDate)
|
|
|
+ .or()
|
|
|
+ .le(MercCoupon::getSendStartDate, today))
|
|
|
+ .and(wrapper -> wrapper.isNull(MercCoupon::getSendEndDate)
|
|
|
+ .or()
|
|
|
+ .ge(MercCoupon::getSendEndDate, today));
|
|
|
+ List<MercCoupon> list = list(lqw);
|
|
|
+ if (!Emptys.check(list)) {
|
|
|
+ throw new RuntimeException("没有可赠送的优惠券!");
|
|
|
+ }
|
|
|
+ list.forEach(mercCoupon -> {
|
|
|
+ //查询券是否已领取过了
|
|
|
+ JMap<String, Object> existParam = new JHashMap<String, Object>()
|
|
|
+ .set("mercId", mercCoupon.getMercId())
|
|
|
+ .set("thirdMemberId", thirdMemberId)
|
|
|
+ .set("couponId", mercCoupon.getId());
|
|
|
+ Map<String, Object> existNewMember = memberCouponService.obj(existParam);
|
|
|
+ if (!Emptys.check(existNewMember)) {
|
|
|
+ memberCouponService.saveOrUpdate(modelSave(mercCoupon, thirdMemberId, "新注册赠送", null));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void orderSend(JMap<String, Object> param) {
|
|
|
+ String thirdMemberId = param.getString("thirdMemberId");
|
|
|
+ LocalDate orderCreateTime = param.getTimestamp("orderCreateTime").toLocalDateTime().toLocalDate();
|
|
|
+ //查找商家可赠送的优惠券
|
|
|
+ LambdaQueryWrapper<MercCoupon> lqw = new LambdaQueryWrapper<MercCoupon>()
|
|
|
+ .eq(MercCoupon::getMercId, param.getInt("mercId"))
|
|
|
+ .eq(MercCoupon::getStatus, true)
|
|
|
+ .eq(MercCoupon::getSendType, CouponSendTypeEnum.T_3.getCode())
|
|
|
+ .and(wrapper -> wrapper.isNull(MercCoupon::getSendStartDate)
|
|
|
+ .or()
|
|
|
+ .le(MercCoupon::getSendStartDate, orderCreateTime))
|
|
|
+ .and(wrapper -> wrapper.isNull(MercCoupon::getSendEndDate)
|
|
|
+ .or()
|
|
|
+ .ge(MercCoupon::getSendEndDate, orderCreateTime));
|
|
|
+ List<MercCoupon> list = list(lqw);
|
|
|
+ if (!Emptys.check(list)) {
|
|
|
+ throw new RuntimeException("没有可赠送的优惠券!");
|
|
|
+ }
|
|
|
+ //TODO 判断设备条件
|
|
|
+ list.forEach(mercCoupon -> {
|
|
|
+ JSONObject sendConfig = JSONUtil.parseObj(mercCoupon.getSendConfig());
|
|
|
+ Float limitAmount = sendConfig.getFloat("limitAmount");
|
|
|
+ //判断支付金额是否 >= 优惠券最低金额
|
|
|
+ if (param.getInt("payMoney") >= limitAmount * 100) {
|
|
|
+ memberCouponService.saveOrUpdate(modelSave(mercCoupon, thirdMemberId, "购物后赠送", param.getString("orderId")));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void autoSend(JMap<String, Object> param) {
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ //获取自动赠送的列表
|
|
|
+ List<String> enumByAutoSend = CouponSendTypeEnum.getEnumByAutoSend(true);
|
|
|
+ //TODO 没完成
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public JMap<String, Object> modelSave(MercCoupon mercCoupon, String memberId, String remark, String createOrderId) {
|
|
|
LocalDate today = LocalDate.now();
|