|
@@ -10,10 +10,10 @@ import com.xynet.marketing.entity.MemberCoupon;
|
|
|
import com.xynet.marketing.entity.MercCoupon;
|
|
|
import com.xynet.marketing.enums.*;
|
|
|
import com.xynet.marketing.mapper.MercCouponMapper;
|
|
|
-import com.xynet.marketing.service.MemberCouponService;
|
|
|
import com.xynet.marketing.service.MercProjectDeviceService;
|
|
|
import com.xynet.marketing.service.MercProjectGoodsService;
|
|
|
import com.xynet.marketing.service.factory.coupon.merc.MercCouponFactory;
|
|
|
+import com.xynet.marketing.service.impl.MemberCouponServiceImpl;
|
|
|
import com.xynet.marketing.utils.Emptys;
|
|
|
import com.xynet.marketing.utils.collections.map.JHashMap;
|
|
|
import com.xynet.marketing.utils.collections.map.JMap;
|
|
@@ -45,7 +45,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
|
|
|
private MercProjectDeviceService deviceService;
|
|
|
|
|
|
- private MemberCouponService memberCouponService;
|
|
|
+ private MemberCouponServiceImpl memberCouponService;
|
|
|
|
|
|
@Override
|
|
|
public Integer saveOrUpdate(JMap<String, Object> param) {
|
|
@@ -306,37 +306,36 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
LocalDateTime orderCreateTime = LocalDateTime.parse(param.getString("orderCreateTime"), formatter);
|
|
|
//查询会员优惠券信息
|
|
|
- Map<String, Object> memberCoupon = memberCouponService.obj(new JHashMap<String, Object>().set("id", memberCouponId));
|
|
|
+ MemberCoupon memberCoupon = memberCouponService.getById(memberCouponId);
|
|
|
if (!Emptys.check(memberCoupon)) {
|
|
|
throw new BusinessException("会员优惠券不存在!");
|
|
|
}
|
|
|
//判断券是否属于该用户
|
|
|
- JMap<String, Object> memberCouponJMap = new JHashMap<String, Object>(memberCoupon);
|
|
|
- if (!Objects.equals(thirdMemberId, memberCouponJMap.getString("thirdMemberId"))) {
|
|
|
+ if (!Objects.equals(thirdMemberId, memberCoupon.getThirdMemberId())) {
|
|
|
throw new BusinessException("会员优惠券不属于该用户!");
|
|
|
}
|
|
|
//判断券是否已使用
|
|
|
- if (!Objects.equals(memberCouponJMap.getString("status"), MemberCouponStatusEnum.UNUSED.getCode())) {
|
|
|
+ if (!Objects.equals(memberCoupon.getStatus(), MemberCouponStatusEnum.UNUSED.getCode())) {
|
|
|
throw new BusinessException("该券已失效!");
|
|
|
}
|
|
|
//查询商户券
|
|
|
- MercCoupon mercCoupon = getById(memberCouponJMap.getInt("couponId"));
|
|
|
- if (Emptys.check(mercCoupon.getValidStartDate()) && mercCoupon.getValidStartDate().isAfter(orderCreateTime.toLocalDate())) {
|
|
|
- throw new BusinessException("该券于!" + mercCoupon.getValidStartDate().toString() + "开始使用!");
|
|
|
+ //MercCoupon mercCoupon = getById(memberCouponJMap.getInt("couponId"));
|
|
|
+ if (Emptys.check(memberCoupon.getValidStartDate()) && memberCoupon.getValidStartDate().isAfter(orderCreateTime.toLocalDate())) {
|
|
|
+ throw new BusinessException("该券于" + memberCoupon.getValidStartDate().toString() + "开始使用!");
|
|
|
}
|
|
|
- if (Emptys.check(mercCoupon.getValidEndDate()) && mercCoupon.getValidEndDate().isBefore(orderCreateTime.toLocalDate())) {
|
|
|
- throw new BusinessException("该券于!" + mercCoupon.getValidEndDate().toString() + "结束!");
|
|
|
+ if (Emptys.check(memberCoupon.getValidEndDate()) && memberCoupon.getValidEndDate().isBefore(orderCreateTime.toLocalDate())) {
|
|
|
+ throw new BusinessException("该券于" + memberCoupon.getValidEndDate().toString() + "结束!");
|
|
|
}
|
|
|
//判断优惠券是可用于该设备
|
|
|
- if (!mercCoupon.getIsAllDevice()) {
|
|
|
- Boolean deviceCheck = deviceService.checkDeviceId(mercCoupon.getId(), deviceId, "coupon");
|
|
|
+ if (!memberCoupon.getIsAllDevice()) {
|
|
|
+ Boolean deviceCheck = deviceService.checkDeviceId(memberCoupon.getCouponId(), deviceId, "coupon");
|
|
|
if (!deviceCheck) {
|
|
|
throw new BusinessException("该券不可用于该设备!");
|
|
|
}
|
|
|
}
|
|
|
Map<String, Map<String, Object>> couponGoodsMap = new HashMap<>();
|
|
|
- if (!mercCoupon.getIsAllGoods()) {
|
|
|
- List<Map<String, Object>> couponGoods = goodsService.listByActId(mercCoupon.getId(), "coupon");
|
|
|
+ if (!memberCoupon.getIsAllGoods()) {
|
|
|
+ List<Map<String, Object>> couponGoods = goodsService.listByActId(memberCoupon.getCouponId(), "coupon");
|
|
|
couponGoodsMap = couponGoods.stream().collect(Collectors.toMap(i -> i.get("goodsId").toString(), i -> i));
|
|
|
}
|
|
|
int type1Amount = 0;
|
|
@@ -344,7 +343,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
JMap<String, Object> goods = goodsList.get(g);
|
|
|
//判断商品是否可以使用该优惠券
|
|
|
Map<String, Object> couponGoods = couponGoodsMap.get(goods.getString("goodsId"));
|
|
|
- if (!mercCoupon.getIsAllGoods() && !Emptys.check(couponGoods)) {
|
|
|
+ if (!memberCoupon.getIsAllGoods() && !Emptys.check(couponGoods)) {
|
|
|
continue;
|
|
|
}
|
|
|
//判断商品中是否有不能使用优惠券的促销活动
|
|
@@ -362,7 +361,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
break;
|
|
|
}
|
|
|
if (Objects.equals(promotion.getString("type"), PromotionTypeEnum.T_1.getCode())
|
|
|
- && Objects.equals(mercCoupon.getType(), CouponTypeEnum.T_1.getCode())
|
|
|
+ && Objects.equals(memberCoupon.getType(), CouponTypeEnum.T_1.getCode())
|
|
|
) {
|
|
|
break;
|
|
|
}
|
|
@@ -372,15 +371,15 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
}
|
|
|
//满足条件,计算价格
|
|
|
//折扣券
|
|
|
- if (Objects.equals(mercCoupon.getType(), CouponTypeEnum.T_2.getCode())) {
|
|
|
- JSONObject priceJson = JSONUtil.parseObj(mercCoupon.getPrice());
|
|
|
+ if (Objects.equals(memberCoupon.getType(), CouponTypeEnum.T_2.getCode())) {
|
|
|
+ JSONObject priceJson = JSONUtil.parseObj(memberCoupon.getPrice());
|
|
|
BigDecimal scalar = new BigDecimal(priceJson.getStr("scalar"));
|
|
|
goods.set("priceOnsale", scalar.multiply(goods.getBigDecimal("priceOnsale")).setScale(0, RoundingMode.CEILING).intValue());
|
|
|
goods.set("amount", scalar.multiply(goods.getBigDecimal("amount")).setScale(0, RoundingMode.CEILING).intValue());
|
|
|
- goods.set("msg", goods.getString("msg") + "【" + mercCoupon.getId() + "】【" + mercCoupon.getName() + "】" + priceJson.getStr("scalar").replace("0.", "") + "折券;");
|
|
|
+ goods.set("msg", goods.getString("msg") + "【" + memberCoupon.getCouponId() + "】【" + memberCoupon.getCouponName() + "】" + priceJson.getStr("scalar").replace("0.", "") + "折券;");
|
|
|
}
|
|
|
//满减券
|
|
|
- if (Objects.equals(mercCoupon.getType(), CouponTypeEnum.T_1.getCode())) {
|
|
|
+ if (Objects.equals(memberCoupon.getType(), CouponTypeEnum.T_1.getCode())) {
|
|
|
goods.set("canCouponType1", true);
|
|
|
//累计价格
|
|
|
type1Amount += goods.getInt("priceOnsale") * goods.getInt("num");
|
|
@@ -389,7 +388,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
//判断满减金额
|
|
|
Integer priceOnsaleType1 = 0;
|
|
|
if (type1Amount > 0) {
|
|
|
- JSONArray priceJson = JSONUtil.parseArray(mercCoupon.getPrice());
|
|
|
+ JSONArray priceJson = JSONUtil.parseArray(memberCoupon.getPrice());
|
|
|
for (int p = 0; p < priceJson.size(); p++) {
|
|
|
JSONObject priceObject = priceJson.getJSONObject(p);
|
|
|
//格式:[{"limit":200,"price":100,"isLoop":1}]
|
|
@@ -424,7 +423,7 @@ public class MercCouponFactoryBase extends ServiceImpl<MercCouponMapper, MercCou
|
|
|
goods.set("priceOnsale", priceOnsale);
|
|
|
goods.set("amount", goods.getInt("amount") - goodsYh);
|
|
|
String goodsYhStr = new BigDecimal(goodsYh).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP) + "元;";
|
|
|
- goods.set("msg", goods.getString("msg") + "满减券【" + mercCoupon.getId() + "】【" + mercCoupon.getName() + "】减:" + goodsYhStr);
|
|
|
+ goods.set("msg", goods.getString("msg") + "满减券【" + memberCoupon.getCouponId() + "】【" + memberCoupon.getCouponName() + "】减:" + goodsYhStr);
|
|
|
}
|
|
|
}
|
|
|
}
|