GiftCardGoodsSkuServiceImpl.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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.redis.RedisService;
  14. import com.cyksj.service.giftcard.GiftCardGoodsSkuService;
  15. import lombok.RequiredArgsConstructor;
  16. import org.springframework.stereotype.Service;
  17. import java.math.BigDecimal;
  18. import java.util.List;
  19. import java.util.Set;
  20. /*
  21. *项目名: netflix
  22. *文件名: GiftCardGoodsSkuServiceImpl
  23. *创建者: JavaZou
  24. *创建时间:2023/8/29 18:19
  25. */
  26. @Service
  27. @RequiredArgsConstructor
  28. public class GiftCardGoodsSkuServiceImpl extends ServiceImpl<GiftCardGoodsSkuMapper, GiftCardGoodsSku> implements GiftCardGoodsSkuService {
  29. private final GoodsDonSkuMapper goodsDonSkuMapper;
  30. private final GoodsDonMapper goodsDonMapper;
  31. private final RedisService redisService;
  32. @Override
  33. public void setOrUpdateGiftCardSku(GiftCardGoodsSku data) {
  34. if (data.getGoodsId() == null) {
  35. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡平台");
  36. }
  37. GoodsDon goodsDon = goodsDonMapper.selectById(data.getGoodsId());
  38. if (goodsDon == null) {
  39. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡平台");
  40. }
  41. if (goodsDon.getSpecialType() == null || goodsDon.getSpecialType() != GoodsDon.SpecialType.giftCard) {
  42. throw BusinessRuntimeException.getInstance("该{0}平台不是礼品卡特殊类型", goodsDon.getTitle());
  43. }
  44. BigDecimal cash = data.getCash();
  45. Integer gcType = data.getGcType();
  46. BigDecimal price = data.getPrice();
  47. if (price == null || price.compareTo(BigDecimal.ZERO) <= 0) {
  48. throw BusinessRuntimeException.getInstance("请输入正确的礼品卡价格");
  49. }
  50. Long gcSkuId = data.getGcSkuId();
  51. if (gcSkuId == null && cash == null) {
  52. throw BusinessRuntimeException.getInstance("请选择对应的礼品卡类型");
  53. }
  54. if (gcSkuId != null && cash != null) {
  55. throw BusinessRuntimeException.getInstance("只能选择一种礼品卡类型");
  56. }
  57. if (cash != null) {
  58. if (cash.compareTo(BigDecimal.ZERO) <= 0) {
  59. throw BusinessRuntimeException.getInstance("请输入正确的礼品卡价格");
  60. }
  61. gcType = 1;
  62. }
  63. //虚拟卡
  64. if (gcSkuId != null) {
  65. GoodsDonSku sku = goodsDonSkuMapper.selectById(gcSkuId);
  66. if (sku == null) {
  67. throw BusinessRuntimeException.getInstance("存在未有的虚拟卡规格,请重新选择");
  68. }
  69. if (!sku.getStatus()) {
  70. throw BusinessRuntimeException.getInstance("存在下架的虚拟卡规格,请重新选择");
  71. }
  72. gcType = 2;
  73. data.setGcGoodsId(sku.getGoodsId());
  74. }
  75. data.setGcType(gcType);
  76. if (gcType == 2 && data.getId() == null) {
  77. GiftCardGoodsSku one = this.getOne(Wrappers.lambdaQuery(GiftCardGoodsSku.class)
  78. .eq(GiftCardGoodsSku::getGcSkuId, gcSkuId).last("limit 1"));
  79. if (one != null) {
  80. return;
  81. }
  82. }
  83. this.saveOrUpdate(data);
  84. //设置对应礼品卡平台 最低价格
  85. setGiftCardGoodsStat(goodsDon);
  86. }
  87. @Override
  88. public void setGiftCardSku(GiftCardGoodsSkuReq req) {
  89. List<GiftCardGoodsSku> giftCardGoodsSkus = req.getConfigs();
  90. if (CollUtil.isEmpty(giftCardGoodsSkus)) {
  91. throw BusinessRuntimeException.getInstance("请输入对应数据");
  92. }
  93. giftCardGoodsSkus.forEach(giftCardSku -> {
  94. giftCardSku.setGoodsId(req.getGoodsId());
  95. setOrUpdateGiftCardSku(giftCardSku);
  96. });
  97. }
  98. /**
  99. * 设置对应礼品卡平台 最低价格
  100. */
  101. @Override
  102. public void setGiftCardGoodsStat(GoodsDon goodsDon) {
  103. //设置对应礼品卡平台 最低价格
  104. BigDecimal minPrice = goodsDon.getMinPrice();
  105. GiftCardGoodsSku min = this.getOne(Wrappers.lambdaQuery(GiftCardGoodsSku.class)
  106. .eq(GiftCardGoodsSku::getGoodsId, goodsDon.getId())
  107. .eq(GiftCardGoodsSku::getStatus, true)
  108. .eq(GiftCardGoodsSku::getDeleted, true)
  109. .orderByAsc(GiftCardGoodsSku::getPrice).last("limit 1"));
  110. if (min != null) {
  111. if (minPrice == null || minPrice.compareTo(min.getPrice()) > 0) {
  112. goodsDon.setMinPrice(min.getPrice());
  113. goodsDonMapper.updateById(goodsDon);
  114. Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
  115. redisService.del(keys.toArray(String[]::new));
  116. }
  117. }
  118. }
  119. }