diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userShoppingCart/ShopCartResVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userShoppingCart/ShopCartResVO.java index 9cf832e57..fa70d2a25 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userShoppingCart/ShopCartResVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/userShoppingCart/ShopCartResVO.java @@ -34,6 +34,8 @@ public class ShopCartResVO { @Data @ApiModel(value = "档口优惠列表") public static class SCDetailVO { + @ApiModelProperty(value = "档口商品颜色尺寸ID") + private Long storeProdColorSizeId; @ApiModelProperty(value = "档口商品颜色ID") private Long storeProdColorId; @ApiModelProperty(value = "尺码") diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/AdvertRoundRecord.java b/xkt/src/main/java/com/ruoyi/xkt/domain/AdvertRoundRecord.java index 7ebfb9531..21d48a341 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/AdvertRoundRecord.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/AdvertRoundRecord.java @@ -31,6 +31,10 @@ public class AdvertRoundRecord extends XktBaseEntity { * 推广展示类型 时间范围 位置枚举 */ private Integer showType; + /** + * 展示类型 推广图、商品、推广图及商品 + */ + private Integer displayType; /** * 凭证日期 */ @@ -87,6 +91,10 @@ public class AdvertRoundRecord extends XktBaseEntity { * 竞价状态 */ private Integer biddingStatus; + /** + * 竞价状态 竞价成功 竞价失败的进入到 advert_round_record表中 + */ + private Integer biddingTempStatus; /** * 图片审核状态 */ @@ -94,7 +102,7 @@ public class AdvertRoundRecord extends XktBaseEntity { /** * 图片是否设置 0 未设置 1已设置 */ - private Integer picSet; + private Integer picSetType; /** * 推广图ID 对应sysFile.id */ diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShoppingCartDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShoppingCartDTO.java index 475c215ab..82ee4fc04 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShoppingCartDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/userShoppingCart/ShoppingCartDTO.java @@ -35,6 +35,8 @@ public class ShoppingCartDTO { @ApiModel(value = "档口优惠列表") @Accessors(chain = true) public static class SCDetailDTO { + @ApiModelProperty(value = "档口商品颜色尺寸ID") + private Long storeProdColorSizeId; @ApiModelProperty(value = "档口商品颜色ID") private Long storeProdColorId; @ApiModelProperty(value = "尺码") diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java index 0ce1a2f9a..d0e7ce7b5 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdminAdvertRoundServiceImpl.java @@ -192,23 +192,17 @@ public class AdminAdvertRoundServiceImpl implements IAdminAdvertRoundService { if (Objects.equals(advertRound.getSysIntercept(), AdSysInterceptType.INTERCEPT.getValue())) { throw new ServiceException("该推广位已被拦截,不可再次拦截!", HttpStatus.ERROR); } - // 若是 时间范围,则判断该推广位、该轮次是否有相同档口已出价或竞价成功,若是,则不可购买。若是位置枚举,则判断该位置 是否是相同档口已出价,若是,则不可购买。 - if (Objects.equals(advertRound.getShowType(), AdShowType.TIME_RANGE.getValue())) { - List timeRangeExistList = this.advertRoundMapper.selectList(new LambdaQueryWrapper() - .eq(AdvertRound::getAdvertId, advertRound.getAdvertId()).eq(AdvertRound::getRoundId, advertRound.getRoundId()) - .eq(AdvertRound::getStoreId, interceptDTO.getStoreId()).eq(AdvertRound::getDelFlag, Constants.UNDELETED)); - if (CollectionUtils.isNotEmpty(timeRangeExistList)) { - throw new ServiceException("档口" + interceptDTO.getStoreName() + "已出价该推广位,不可重复购买!", HttpStatus.ERROR); - } - } else { - List positionEnumExistList = this.advertRoundMapper.selectList(new LambdaQueryWrapper() - .eq(AdvertRound::getAdvertId, advertRound.getAdvertId()).eq(AdvertRound::getRoundId, advertRound.getRoundId()) - .eq(AdvertRound::getPosition, advertRound.getPosition()).eq(AdvertRound::getDelFlag, Constants.UNDELETED) - .eq(AdvertRound::getStoreId, interceptDTO.getStoreId())); + // 判断要给档口购买的推广位,该档口是否自己已购买 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(AdvertRound::getAdvertId, advertRound.getAdvertId()).eq(AdvertRound::getRoundId, advertRound.getRoundId()) + .eq(AdvertRound::getStoreId, interceptDTO.getStoreId()).eq(AdvertRound::getDelFlag, Constants.UNDELETED); + if (Objects.equals(advertRound.getShowType(), AdShowType.POSITION_ENUM.getValue())) { + queryWrapper.eq(AdvertRound::getPosition, advertRound.getPosition()); + } + List existList = this.advertRoundMapper.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(existList)) { + throw new ServiceException("档口" + interceptDTO.getStoreName() + "已出价该推广位,不可重复购买!", HttpStatus.ERROR); } - - - // 若该推广位已投放 if (Objects.equals(advertRound.getLaunchStatus(), AdLaunchStatus.LAUNCHING.getValue())) { // 若该广告位 为时间范围 且 为档口正常购买(也有可能为系统拦截),则均不可拦截该推广位 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java index ef58e910b..61d583694 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/AdvertRoundServiceImpl.java @@ -724,10 +724,9 @@ public class AdvertRoundServiceImpl implements IAdvertRoundService { private void record(AdvertRound failAdvert) { // 新增推广营销历史记录 将旧档口推广营销 置为竞价失败 AdvertRoundRecord record = BeanUtil.toBean(failAdvert, AdvertRoundRecord.class); - record.setId(null); - record.setAdvertRoundId(failAdvert.getId()); - // 置为竞价失败 - record.setBiddingStatus(AdBiddingStatus.BIDDING_FAIL.getValue()); + record.setId(null).setAdvertRoundId(failAdvert.getId()).setDisplayType(failAdvert.getDisplayType()) + // 置为竞价失败 + .setBiddingStatus(AdBiddingStatus.BIDDING_FAIL.getValue()); this.advertRoundRecordMapper.insert(record); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java index 60f3cdafb..ff1772066 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ShoppingCartServiceImpl.java @@ -295,12 +295,22 @@ public class ShoppingCartServiceImpl implements IShoppingCartService { // 商品价格map Map priceMap = priceList.stream().collect(Collectors .toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString(), x -> ObjectUtils.defaultIfNull(x.getPrice(), BigDecimal.ZERO))); + // 获取商品价格尺码 + List priceSizeList = this.prodColorSizeMapper.selectList(new LambdaQueryWrapper() + .in(StoreProductColorSize::getStoreProdId, shoppingCartList.stream().map(ShoppingCart::getStoreProdId).collect(Collectors.toList())) + .in(StoreProductColorSize::getStoreColorId, detailList.stream().map(ShoppingCartDetail::getStoreColorId).collect(Collectors.toList())) + .eq(StoreProductColorSize::getDelFlag, Constants.UNDELETED)); + // 商品价格尺码map + Map priceSizeMap = priceSizeList.stream().collect(Collectors + .toMap(x -> x.getStoreProdId().toString() + x.getStoreColorId().toString() + x.getSize(), StoreProductColorSize::getId)); return shoppingCartList.stream().map(x -> { ShoppingCartDTO shopCartDTO = BeanUtil.toBean(x, ShoppingCartDTO.class) .setStoreName(ObjectUtils.isNotEmpty(storeMap.get(x.getStoreId())) ? storeMap.get(x.getStoreId()).getStoreName() : ""); List shopCartDetailList = detailMap.get(x.getId()).stream().map(detail -> { final BigDecimal price = ObjectUtils.defaultIfNull(priceMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString()), BigDecimal.ZERO); - return BeanUtil.toBean(detail, ShoppingCartDTO.SCDetailDTO.class).setPrice(price).setAmount(price.multiply(BigDecimal.valueOf(detail.getQuantity()))); + return BeanUtil.toBean(detail, ShoppingCartDTO.SCDetailDTO.class).setPrice(price) + .setStoreProdColorSizeId(priceSizeMap.get(x.getStoreProdId().toString() + detail.getStoreColorId().toString() + detail.getSize())) + .setAmount(price.multiply(BigDecimal.valueOf(detail.getQuantity()))); }).collect(Collectors.toList()); return shopCartDTO.setDetailList(shopCartDetailList); }).collect(Collectors.toList());