diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkShopConsumerCoupon.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkShopConsumerCoupon.java index 80f77453..1bfefceb 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkShopConsumerCoupon.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkShopConsumerCoupon.java @@ -15,6 +15,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; /** * 消费赠券表 实体类。 @@ -26,6 +27,7 @@ import lombok.NoArgsConstructor; @Builder @NoArgsConstructor @AllArgsConstructor +@Accessors(chain = true) @Table("mk_shop_consumer_coupon") public class MkShopConsumerCoupon implements Serializable { diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopConsumerCouponService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopConsumerCouponService.java index a46ff1db..28e9b8d8 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopConsumerCouponService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopConsumerCouponService.java @@ -5,6 +5,8 @@ import com.czg.market.entity.MkShopConsumerCoupon; import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.service.IService; +import java.math.BigDecimal; + /** * 消费赠券表 服务层。 * @@ -14,8 +16,17 @@ import com.mybatisflex.core.service.IService; public interface MkShopConsumerCouponService extends IService { Page getConsumerCouponPage(MkShopConsumerCouponDTO param); + + /** + * 参加消费赠券 + */ + void receiveConsumerCoupon(Long shopId, Long orderId, BigDecimal orderAmount, Long userId, Long shopUserId); + MkShopConsumerCouponDTO getConsumerCouponById(Long id); + void addConsumerCoupon(MkShopConsumerCouponDTO param); + void updateConsumerCouponById(MkShopConsumerCouponDTO param); + void deleteConsumerCoupon(Long id); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java index ccc7dfd6..950d243f 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/dto/CheckOrderPay.java @@ -56,6 +56,11 @@ public class CheckOrderPay implements Serializable { * 手动优惠金额 */ private BigDecimal discountAmount; + /** + * 新客立减 + */ + private BigDecimal newCustomerDiscountId; + private BigDecimal newCustomerDiscountAmount; /** * 商品优惠券抵扣金额 @@ -114,6 +119,12 @@ public class CheckOrderPay implements Serializable { // } // return discountRatio.setScale(2, RoundingMode.UP); // } + /** + * 新客立减金额 + */ + public BigDecimal getNewCustomerDiscountAmount() { + return newCustomerDiscountAmount == null ? BigDecimal.ZERO : newCustomerDiscountAmount; + } public BigDecimal getOtherCouponDiscountAmount() { return otherCouponDiscountAmount == null ? BigDecimal.ZERO : otherCouponDiscountAmount; diff --git a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java index 3e44935b..2c2de396 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/order/entity/OrderInfo.java @@ -88,6 +88,11 @@ public class OrderInfo implements Serializable { */ private Integer pointsNum; + /** + * 新客立减金额 + */ + private BigDecimal newCustomerDiscountAmount; + /** * 商品优惠券抵扣金额 */ @@ -279,6 +284,10 @@ public class OrderInfo implements Serializable { return StrUtil.isBlank(refundRemark) ? "" : refundRemark + " "; } + public BigDecimal getNewCustomerDiscountAmount() { + return newCustomerDiscountAmount == null ? BigDecimal.ZERO : newCustomerDiscountAmount; + } + public BigDecimal getOriginAmount() { return originAmount == null ? BigDecimal.ZERO : originAmount; } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumerCouponServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumerCouponServiceImpl.java index fcf214c6..4d7e94de 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumerCouponServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkShopConsumerCouponServiceImpl.java @@ -1,12 +1,16 @@ package com.czg.service.market.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.ValidateException; +import com.czg.market.dto.MkCouponGiftDTO; import com.czg.market.dto.MkShopConsumerCouponDTO; +import com.czg.market.dto.MkShopCouponGiftDTO; import com.czg.market.entity.MkShopConsumerCoupon; -import com.czg.market.entity.ShopCoupon; +import com.czg.market.entity.MkShopCouponRecord; import com.czg.market.service.MkCouponGiftService; import com.czg.market.service.MkShopConsumerCouponService; +import com.czg.market.service.MkShopCouponRecordService; import com.czg.service.market.mapper.MkShopConsumerCouponMapper; import com.czg.utils.AssertUtil; import com.czg.utils.PageUtil; @@ -17,6 +21,9 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.util.List; + /** * 消费赠券表 服务层实现。 * @@ -28,6 +35,8 @@ public class MkShopConsumerCouponServiceImpl extends ServiceImpl getConsumerCouponPage(MkShopConsumerCouponDTO param) { @@ -43,6 +52,56 @@ public class MkShopConsumerCouponServiceImpl extends ServiceImpl giftCoupons = couponGiftService.getCouponGiftBySourceId(consumerCoupon.getId(), 3); + if (CollUtil.isEmpty(giftCoupons)) { + return; + } + MkCouponGiftDTO giftCoupon = giftCoupons.getFirst(); + if (consumerCoupon.getLeftNum() != -10086 && consumerCoupon.getLeftNum() >= consumerCoupon.getGiftNum()) { + if (consumerCoupon.getGetLimit() != -10086 && consumerCoupon.getGetLimit() <= consumerCoupon.getGiveNum()) { + long count = recordService.count(new QueryWrapper().eq(MkShopCouponRecord::getShopId, shopId) + .eq(MkShopCouponRecord::getShopUserId, shopUserId) + .eq(MkShopCouponRecord::getSourceId, consumerCoupon.getId())); + if (consumerCoupon.getGetLimit() >= count + giftCoupon.getNum()) { + MkShopCouponGiftDTO giftDTO = new MkShopCouponGiftDTO(); + giftDTO.setShopId(shopId); + giftDTO.setShopUserId(shopUserId); + giftDTO.setCouponId(giftCoupon.getCouponId()); + giftDTO.setSourceId(consumerCoupon.getId()); + giftDTO.setSourceFlowId(orderId); + giftDTO.setSource("消费赠券"); + //发放券 + recordService.receiveCoupon(giftDTO, giftCoupon.getNum(), false); + //更新优惠券信息 + consumerCoupon.setGiftNum(consumerCoupon.getGiftNum() + giftCoupon.getNum()); + if (consumerCoupon.getLeftNum() != -10086) { + consumerCoupon.setLeftNum(consumerCoupon.getLeftNum() - giftCoupon.getNum()); + } + updateById(new MkShopConsumerCoupon() + .setId(consumerCoupon.getId()) + .setLeftNum(consumerCoupon.getLeftNum()) + .setGiftNum(consumerCoupon.getGiftNum())); + } + } + } + } + @Override public MkShopConsumerCouponDTO getConsumerCouponById(Long id) { AssertUtil.isNull(id, "ID不能为空"); @@ -55,6 +114,9 @@ public class MkShopConsumerCouponServiceImpl extends ServiceImpl 0) { newTotalAmount = totalAmount.getPrice().subtract(param.getDiscountAmount()); @@ -721,7 +720,7 @@ public class OrderInfoServiceImpl extends ServiceImpl orderDetails, BigDecimalDTO totalAmount, BigDecimalDTO packAmount, - BigDecimalDTO tempAmount, boolean isAllPack, Integer userAllPack, boolean isVipPrice) { + BigDecimalDTO tempAmount, boolean isAllPack, Integer userAllPack, boolean isVipPrice) { for (OrderDetail orderDetail : orderDetails) { if (orderDetail.getDiscountSaleAmount() != null && orderDetail.getDiscountSaleAmount().compareTo(BigDecimal.ZERO) > 0) { orderDetail.setUnitPrice(orderDetail.getDiscountSaleAmount()); @@ -965,6 +964,10 @@ public class OrderInfoServiceImpl extends ServiceImpl 0) { + jsonObject.put("新客立减", orderInfo.getNewCustomerDiscountAmount()); + } if (orderInfo.getProductCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { jsonObject.put("商品券抵扣", orderInfo.getProductCouponDiscountAmount()); } @@ -1173,7 +1181,7 @@ public class OrderInfoServiceImpl extends ServiceImpl 0) { jsonObject.put("满减券抵扣", orderInfo.getFullCouponDiscountAmount()); } - if(orderInfo.getOtherCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0){ + if (orderInfo.getOtherCouponDiscountAmount().compareTo(BigDecimal.ZERO) > 0) { jsonObject.put("其它优惠券折扣", orderInfo.getOtherCouponDiscountAmount()); } if (orderInfo.getPointsDiscountAmount().compareTo(BigDecimal.ZERO) > 0) {