GiftCardGoodsSkuServiceImpl.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.cyksj.service.giftcard.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.cyksj.common.exception.BusinessRuntimeException;
  6. import com.cyksj.mapper.GiftCardGoodsSkuMapper;
  7. import com.cyksj.mapper.GoodsDonMapper;
  8. import com.cyksj.mapper.GoodsDonSkuMapper;
  9. import com.cyksj.model.entity.GiftCardGoodsSku;
  10. import com.cyksj.model.entity.GoodsDon;
  11. import com.cyksj.model.entity.GoodsDonSku;
  12. import com.cyksj.model.request.GiftCardGoodsSkuReq;
  13. import com.cyksj.service.giftcard.GiftCardGoodsSkuService;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import java.math.BigDecimal;
  17. import java.util.List;
  18. /*
  19. *项目名: netflix
  20. *文件名: GiftCardGoodsSkuServiceImpl
  21. *创建者: JavaZou
  22. *创建时间:2023/8/29 18:19
  23. */
  24. @Service
  25. @RequiredArgsConstructor
  26. public class GiftCardGoodsSkuServiceImpl extends ServiceImpl<GiftCardGoodsSkuMapper, GiftCardGoodsSku> implements GiftCardGoodsSkuService {
  27. private final GoodsDonSkuMapper goodsDonSkuMapper;
  28. private final GoodsDonMapper goodsDonMapper;
  29. @Override
  30. public void setOrUpdateGiftCardSku(GiftCardGoodsSku data) {
  31. if (data.getGoodsId() == null) {
  32. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡平台");
  33. }
  34. GoodsDon goodsDon = goodsDonMapper.selectById(data.getGoodsId());
  35. if (goodsDon == null) {
  36. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡平台");
  37. }
  38. if (goodsDon.getSpecialType() == null || goodsDon.getSpecialType() != GoodsDon.SpecialType.giftCard) {
  39. throw BusinessRuntimeException.getInstance("该{0}平台不是礼品卡特殊类型", goodsDon.getTitle());
  40. }
  41. BigDecimal cash = data.getCash();
  42. Integer gcType = data.getGcType();
  43. //礼品卡金额 与购买价格一致
  44. if (cash != null) {
  45. data.setPrice(cash);
  46. }
  47. BigDecimal price = data.getPrice();
  48. if (price == null || price.compareTo(BigDecimal.ZERO) == 0) {
  49. throw BusinessRuntimeException.getInstance("请输入正确的礼品卡配置价格");
  50. }
  51. Long gcSkuId = data.getGcSkuId();
  52. if (gcSkuId == null && cash == null) {
  53. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡类型");
  54. }
  55. if (gcSkuId != null && cash != null) {
  56. throw BusinessRuntimeException.getInstance("只能选择一种礼品卡类型");
  57. }
  58. if (cash != null) {
  59. if (cash.compareTo(BigDecimal.ZERO) == 0) {
  60. throw BusinessRuntimeException.getInstance("请输入正确的礼品卡现金类型金额");
  61. }
  62. gcType = 1;
  63. }
  64. //虚拟卡
  65. if (gcSkuId != null) {
  66. GoodsDonSku sku = goodsDonSkuMapper.selectById(gcSkuId);
  67. if (sku == null) {
  68. throw BusinessRuntimeException.getInstance("存在未有的虚拟卡规格,请重新选择");
  69. }
  70. if (!sku.getStatus()) {
  71. throw BusinessRuntimeException.getInstance("存在下架的虚拟卡规格,请重新选择");
  72. }
  73. gcType = 2;
  74. data.setGcGoodsId(sku.getGoodsId());
  75. }
  76. data.setGcType(gcType);
  77. if (gcType == 2 && data.getId() == null) {
  78. GiftCardGoodsSku one = this.getOne(Wrappers.lambdaQuery(GiftCardGoodsSku.class)
  79. .eq(GiftCardGoodsSku::getGcSkuId, gcSkuId).last("limit 1"));
  80. if (one != null) {
  81. return;
  82. }
  83. }
  84. this.saveOrUpdate(data);
  85. }
  86. @Override
  87. public void setGiftCardSku(GiftCardGoodsSkuReq req) {
  88. List<GiftCardGoodsSku> giftCardGoodsSkus = req.getConfigs();
  89. if (CollUtil.isEmpty(giftCardGoodsSkus)) {
  90. throw BusinessRuntimeException.getInstance("请输入对应数据");
  91. }
  92. giftCardGoodsSkus.forEach(giftCardSku -> {
  93. giftCardSku.setGoodsId(req.getGoodsId());
  94. setOrUpdateGiftCardSku(giftCardSku);
  95. });
  96. }
  97. }