|
@@ -1,18 +1,27 @@
|
|
package com.xynet.marketing.service.factory.coupon.merc.impl.base;
|
|
package com.xynet.marketing.service.factory.coupon.merc.impl.base;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.xynet.marketing.entity.MemberCoupon;
|
|
import com.xynet.marketing.entity.MercCoupon;
|
|
import com.xynet.marketing.entity.MercCoupon;
|
|
|
|
+import com.xynet.marketing.enums.CouponValidTypeEnum;
|
|
import com.xynet.marketing.mapper.MercCouponMapper;
|
|
import com.xynet.marketing.mapper.MercCouponMapper;
|
|
|
|
+import com.xynet.marketing.service.MemberCouponService;
|
|
import com.xynet.marketing.service.MercProjectDeviceService;
|
|
import com.xynet.marketing.service.MercProjectDeviceService;
|
|
import com.xynet.marketing.service.MercProjectGoodsService;
|
|
import com.xynet.marketing.service.MercProjectGoodsService;
|
|
import com.xynet.marketing.service.factory.coupon.merc.MercCouponFactory;
|
|
import com.xynet.marketing.service.factory.coupon.merc.MercCouponFactory;
|
|
import com.xynet.marketing.utils.Emptys;
|
|
import com.xynet.marketing.utils.Emptys;
|
|
|
|
+import com.xynet.marketing.utils.collections.map.JHashMap;
|
|
import com.xynet.marketing.utils.collections.map.JMap;
|
|
import com.xynet.marketing.utils.collections.map.JMap;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 优惠券工厂-基类
|
|
* 优惠券工厂-基类
|
|
*
|
|
*
|
|
@@ -28,6 +37,8 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
|
|
|
private MercProjectDeviceService deviceService;
|
|
private MercProjectDeviceService deviceService;
|
|
|
|
|
|
|
|
+ private MemberCouponService memberCouponService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Integer saveOrUpdate(JMap<String, Object> param) {
|
|
public Integer saveOrUpdate(JMap<String, Object> param) {
|
|
MercCoupon save = BeanUtil.copyProperties(param, MercCoupon.class);
|
|
MercCoupon save = BeanUtil.copyProperties(param, MercCoupon.class);
|
|
@@ -49,14 +60,61 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
//保存商品
|
|
//保存商品
|
|
if (!save.getIsAllGoods()) {
|
|
if (!save.getIsAllGoods()) {
|
|
//删除原来的商品
|
|
//删除原来的商品
|
|
- goodsService.saveBatchByActId(save.getId(), "coupon", param.getList("goodsList"));
|
|
|
|
|
|
+ goodsService.saveBatchByActId(save.getId(), "coupon", param.getListMap("goodsList"));
|
|
}
|
|
}
|
|
//保存设备
|
|
//保存设备
|
|
if (!save.getIsAllDevice()) {
|
|
if (!save.getIsAllDevice()) {
|
|
- deviceService.saveBatchByActId(save.getId(), "coupon", param.getList("deviceList"));
|
|
|
|
|
|
+ deviceService.saveBatchByActId(save.getId(), "coupon", param.getListMap("deviceList"));
|
|
}
|
|
}
|
|
|
|
|
|
return save.getId();
|
|
return save.getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void mercSend(JMap<String, Object> param) {
|
|
|
|
+ List<Object> thirdMemberIdList = param.getList("thirdMemberIdList");
|
|
|
|
+ if (!Emptys.check(thirdMemberIdList)) {
|
|
|
|
+ throw new RuntimeException("会员列表不能为空!");
|
|
|
|
+ }
|
|
|
|
+ LambdaQueryWrapper<MercCoupon> lqw = new LambdaQueryWrapper<MercCoupon>()
|
|
|
|
+ .eq(MercCoupon::getMercId, param.getInt("mercId"))
|
|
|
|
+ .in(MercCoupon::getId, param.getList("couponIdList"));
|
|
|
|
+ List<MercCoupon> couponList = list(lqw);
|
|
|
|
+ if (!Emptys.check(couponList)) {
|
|
|
|
+ throw new RuntimeException("没有可以赠送的优惠券!");
|
|
|
|
+ }
|
|
|
|
+ if (thirdMemberIdList.size() > 20) {
|
|
|
|
+ throw new RuntimeException("一次最多赠送20个用户!");
|
|
|
|
+ }
|
|
|
|
+ couponList.forEach(coupon -> {
|
|
|
|
+ thirdMemberIdList.forEach(memberId -> {
|
|
|
|
+ memberCouponService.saveOrUpdate(modelSave(coupon, memberId.toString(), param.getString("remark"), null));
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
|
|
+ public JMap<String, Object> modelSave(MercCoupon mercCoupon, String memberId, String remark, String createOrderId) {
|
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
|
+ //有效时间
|
|
|
|
+ boolean isDays = Objects.equals(mercCoupon.getValidType(), CouponValidTypeEnum.T_1.getCode());
|
|
|
|
+ LocalDate validStartDate = isDays ? today : mercCoupon.getValidStartDate();
|
|
|
|
+ LocalDate validEndDate = isDays ? today.plusDays(mercCoupon.getValidDay() - 1) : mercCoupon.getValidEndDate();
|
|
|
|
+ MemberCoupon memberCoupon = new MemberCoupon()
|
|
|
|
+ .setMercId(mercCoupon.getMercId())
|
|
|
|
+ .setThirdMemberId(memberId)
|
|
|
|
+ .setCouponId(mercCoupon.getId())
|
|
|
|
+ .setCouponName(mercCoupon.getName())
|
|
|
|
+ .setIsAllDevice(mercCoupon.getIsAllDevice())
|
|
|
|
+ .setIsAllGoods(mercCoupon.getIsAllGoods())
|
|
|
|
+ .setValidStartDate(validStartDate)
|
|
|
|
+ .setValidEndDate(validEndDate)
|
|
|
|
+ .setUseMinPrice(mercCoupon.getUseMinPrice())
|
|
|
|
+ .setType(mercCoupon.getType())
|
|
|
|
+ .setPrice(mercCoupon.getPrice())
|
|
|
|
+ .setCreateDate(today)
|
|
|
|
+ .setCreateOrderId(createOrderId)
|
|
|
|
+ .setRemark(remark);
|
|
|
|
+ return new JHashMap<>(BeanUtil.beanToMap(memberCoupon));
|
|
}
|
|
}
|
|
}
|
|
}
|