From 53e7443817d409f13dd3a70474fb1fbfda29c56d Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 19 Nov 2024 15:08:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=A7=B0=E9=87=8D=E5=95=86=E5=93=81=20=E5=92=8C=20=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/ysk/cashier/utils/ListUtil.java | 11 ++- .../ysk/cashier/pojo/product/TbProduct.java | 63 ++++++++++------ .../product/TbProductRepository.java | 2 +- .../productimpl/TbProductServiceImpl.java | 73 ++++++++++--------- .../cn/ysk/cashier/vo/ProductGroupVo.java | 34 +++++++++ .../java/cn/ysk/cashier/vo/TbProductVo.java | 38 +++++----- 6 files changed, 144 insertions(+), 77 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/vo/ProductGroupVo.java diff --git a/eladmin-common/src/main/java/cn/ysk/cashier/utils/ListUtil.java b/eladmin-common/src/main/java/cn/ysk/cashier/utils/ListUtil.java index ae821ec4..f42d52e4 100644 --- a/eladmin-common/src/main/java/cn/ysk/cashier/utils/ListUtil.java +++ b/eladmin-common/src/main/java/cn/ysk/cashier/utils/ListUtil.java @@ -102,10 +102,13 @@ public class ListUtil { } - public static String listChangeString(List listString){ - return listString.stream() - .map(Object::toString) - .collect(Collectors.joining(", ")); + public static String listToJsonString(List list) { + ObjectMapper objectMapper = new ObjectMapper(); + try { + return objectMapper.writeValueAsString(list); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } } public static String mapToString(Map map) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProduct.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProduct.java index 431002a4..04598356 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProduct.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/product/TbProduct.java @@ -50,11 +50,6 @@ public class TbProduct implements Serializable { @TableId(type = IdType.AUTO) private Integer id; - - @Column(name = "`merchant_id`") - @ApiModelProperty(value = "商户Id") - private String merchantId = "PLANT_ID"; - @Column(name = "`shop_id`") @ApiModelProperty(value = "店铺id") private String shopId; @@ -135,28 +130,16 @@ public class TbProduct implements Serializable { private Integer isPauseSale = 0; @Column(name = "`created_at`") - @ApiModelProperty(value = "createdAt") + @ApiModelProperty(value = "创建时间") private Long createdAt; @Column(name = "`updated_at`") - @ApiModelProperty(value = "updatedAt") + @ApiModelProperty(value = "更新时间") private Long updatedAt; - @Column(name = "`furnish_meal`") - @ApiModelProperty(value = "支持堂食") - private Integer furnishMeal = 0; - - @Column(name = "`furnish_express`") - @ApiModelProperty(value = "支持配送") - private Integer furnishExpress = 0; - - @Column(name = "`furnish_draw`") - @ApiModelProperty(value = "支持自提") - private Integer furnishDraw = 0; - - @Column(name = "`furnish_vir`") - @ApiModelProperty(value = "支持虚拟") - private Integer furnishVir = 0; + @Column(name = "`group_type`") + @ApiModelProperty(value = "套餐类型 0固定套餐 1可选套餐") + private Integer groupType; @Column(name = "`group_snap`") @ApiModelProperty(value = "套餐内容") @@ -194,6 +177,42 @@ public class TbProduct implements Serializable { @ApiModelProperty("库存警戒线") private Integer warnLine = 0; + @Column(name = "show_type") + @ApiModelProperty("堂食 table 自取 dine 配送 delivery 快递 express") + private String showType; + + @Column(name = "weight") + @ApiModelProperty("称重 价格/千克") + private BigDecimal weight; + + @Column(name = "is_temp_price") + @ApiModelProperty("是否允许临时改价") + private Integer isTempPrice = 0; + + @Column(name = "day_limit") + @ApiModelProperty("日销售上限") + private Integer dayLimit = 0; + + @Column(name = "single_order_limit") + @ApiModelProperty("每单销售上限") + private Integer singleOrderLimit = 0; + + @Column(name = "single_people_limit") + @ApiModelProperty("每人销售上限") + private Integer singlePeopleLimit = 0; + + @Column(name = "days") + @ApiModelProperty("周数组 周一,周二,周日") + private String days; + + @Column(name = "start_time") + @ApiModelProperty("可用开始时间") + private String startTime; + + @Column(name = "end_time") + @ApiModelProperty("可用结束时间") + private String endTime; + @Transient @TableField(exist = false) private TbProductSkuResult skuResult; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java index eb19aa14..845be3a5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/product/TbProductRepository.java @@ -24,7 +24,7 @@ public interface TbProductRepository extends JpaRepository, @Query("SELECT product from TbProduct product where product.id in :productIds order by product.sort") List findByIds(List productIds); - @Query(value = "update tb_product set status = -1 where id in :productIds",nativeQuery = true) + @Query(value = "update tb_product set status = -1 and is_del = 1 where id in :productIds",nativeQuery = true) @Modifying void updateByStatus(List productIds); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java index f069f840..fe562882 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/productimpl/TbProductServiceImpl.java @@ -2,6 +2,7 @@ package cn.ysk.cashier.service.impl.productimpl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.ysk.cashier.cons.domain.ViewConSku; import cn.ysk.cashier.cons.repository.ViewConSkuRepository; @@ -29,6 +30,7 @@ import cn.ysk.cashier.service.TbPlatformDictService; import cn.ysk.cashier.service.product.TbProductService; import cn.ysk.cashier.service.shop.TbCouponCategoryService; import cn.ysk.cashier.utils.*; +import cn.ysk.cashier.vo.ProductGroupVo; import cn.ysk.cashier.vo.TbProductNewVo; import cn.ysk.cashier.vo.TbProductVo; import com.alibaba.fastjson.JSONArray; @@ -304,9 +306,6 @@ public class TbProductServiceImpl implements TbProductService { public TbProductVo findByProductId(Integer id) throws Exception { TbProduct tbProduct = tbProductRepository.findById(id).orElseGet(TbProduct::new); - //单位 -// CompletableFuture tbShopUnits = CompletableFuture.supplyAsync(() -> -// tbShopUnitRepository.searchUnit(Integer.valueOf(StringUtils.isEmpty(tbProduct.getUnitId()) ? null : tbProduct.getUnitId()))); //sku CompletableFuture> tbProductSkus = CompletableFuture.supplyAsync(() -> tbProductSkuRepository.searchSku(tbProduct.getId().toString())); @@ -314,24 +313,20 @@ public class TbProductServiceImpl implements TbProductService { CompletableFuture tbProductSpec = CompletableFuture.supplyAsync(() -> tbProductSpecRepository.searchSpec(tbProduct.getSpecId())); -// Threads.call(tbShopUnits, tbProductSkus, tbProductSpec); Threads.call(tbProductSkus, tbProductSpec); //组装 TbProductVo tbProductVo = new TbProductVo(); -// tbProductVo.setStockNumber(tbProduct.getStockNumber() == null ? 0.00 : tbProduct.getStockNumber()); tbProductVo.setCategoryId(StringUtils.isNotBlank(tbProduct.getCategoryId()) ? Integer.valueOf(tbProduct.getCategoryId()) : null); - //单位 -// if (tbProduct.getUnitId() == null) { -// tbProductVo.setUnitId(null); -// tbProductVo.setUnitName(null); -// } - //套餐 - if (tbProduct.getGroupSnap() == null) { - tbProductVo.setGroupSnap(new JSONArray()); - } else { - tbProductVo.setGroupSnap(ListUtil.stringChangeList(tbProduct.getGroupSnap())); - } + BeanUtils.copyProperties(tbProduct, tbProductVo); + //套餐 + if(tbProduct.getType().equals("package")){ + if (tbProduct.getGroupSnap() == null) { + tbProductVo.setProGroupVo(null); + } else { + tbProductVo.setProGroupVo(JSONUtil.parseJSONStrTList(tbProduct.getGroupSnap(), ProductGroupVo.class)); + } + } tbProductVo.setStockNumber(Double.valueOf(tbProduct.getStockNumber())); if (!org.apache.commons.lang3.StringUtils.isBlank(tbProduct.getImages())) { tbProductVo.setImages(ListUtil.stringChangeList(tbProduct.getImages())); @@ -364,7 +359,7 @@ public class TbProductServiceImpl implements TbProductService { Optional skuResult = tbProductSkuResultRepository.findById(tbProductVo.getId()); tbProductVo.setSkuSnap(skuResult.get().getTagSnap()); } - if ("group".equals(tbProductVo.getTypeEnum())) { + if ("coupon".equals(tbProductVo.getType())) { if (StringUtils.isNotBlank(tbProduct.getGroupCategoryId())) { JSONArray objects = ListUtil.stringChangeList(tbProduct.getGroupCategoryId()); for (Object groupCategoryId : objects) { @@ -419,7 +414,7 @@ public class TbProductServiceImpl implements TbProductService { if (CollectionUtils.isEmpty(resources.getSkuList())) { throw new BadRequestException("商品规格不可为空"); } - if (!"group".equals(resources.getTypeEnum())) { + if (!"coupon".equals(resources.getType())) { if (resources.getCategoryId() == null) { throw new BadRequestException("必填内容未填写"); } @@ -437,11 +432,11 @@ public class TbProductServiceImpl implements TbProductService { product.setUpdatedAt(Instant.now().toEpochMilli()); List lowPrice = resources.getSkuList().stream().map(TbProductSku::getSalePrice).sorted().collect(Collectors.toList()); product.setLowPrice(lowPrice.get(0)); - if ("group".equals(resources.getTypeEnum())) { - //套餐内容 - if (!resources.getGroupSnap().isEmpty()) { - product.setGroupSnap(ListUtil.JSONArrayChangeString(resources.getGroupSnap())); - } + if ("coupon".equals(resources.getType())) { +// //套餐内容 +// if (!resources.getGroupSnap().isEmpty()) { +// product.setGroupSnap(ListUtil.JSONArrayChangeString(resources.getGroupSnap())); +// } if (!CollectionUtils.isEmpty(resources.getGroupCategoryId())) { List collect = resources.getGroupCategoryId().stream().map(TbCouponCategoryDto::getId).collect(Collectors.toList()); product.setGroupCategoryId(collect.toString()); @@ -452,6 +447,12 @@ public class TbProductServiceImpl implements TbProductService { } } } + if("package".equals(resources.getType())){ + //套餐内容 + if (!resources.getProGroupVo().isEmpty()) { + product.setGroupSnap(ListUtil.listToJsonString(resources.getProGroupVo())); + } + } TbProduct save = tbProductRepository.save(product); if (save.getId() == null) { @@ -478,7 +479,7 @@ public class TbProductServiceImpl implements TbProductService { productSkuResult.setTagSnap(resources.getSkuSnap()); productSkuResult.setId(save.getId()); tbProductSkuResultRepository.save(productSkuResult); - } else if ("group".equals(resources.getTypeEnum())) { + } else if ("coupon".equals(resources.getType())) { TbPurchaseNotice notices = resources.getNotices(); if (StringUtils.isBlank(notices.getDateUsed()) && StringUtils.isBlank(notices.getAvailableTime()) @@ -523,7 +524,7 @@ public class TbProductServiceImpl implements TbProductService { throw new BadRequestException("规格数据异常"); } } - if (!"group".equals(product.getTypeEnum())) { + if (!"coupon".equals(product.getType())) { if (resources.getCategoryId() == null) throw new BadRequestException("商品分类不可为空"); product.setGroupSnap(null); if (resources.getNotices() != null && resources.getNotices().getId() != null) { @@ -537,13 +538,13 @@ public class TbProductServiceImpl implements TbProductService { product.setStockNumber(resources.getStockNumber().intValue()); List lowPrices = resources.getSkuList().stream().map(TbProductSku::getSalePrice).sorted().collect(Collectors.toList()); product.setLowPrice(lowPrices.get(0)); - if ("group".equals(resources.getTypeEnum())) { - //套餐内容 - if (!resources.getGroupSnap().isEmpty()) { - product.setGroupSnap(ListUtil.JSONArrayChangeString(resources.getGroupSnap())); - } else { - throw new BadRequestException("套餐内容不可为空"); - } + if ("coupon".equals(resources.getType())) { +// //套餐内容 +// if (!resources.getGroupSnap().isEmpty()) { +// product.setGroupSnap(ListUtil.JSONArrayChangeString(resources.getGroupSnap())); +// } else { +// throw new BadRequestException("套餐内容不可为空"); +// } if (!CollectionUtils.isEmpty(resources.getGroupCategoryId())) { List collect = resources.getGroupCategoryId().stream().map(TbCouponCategoryDto::getId).collect(Collectors.toList()); product.setGroupCategoryId(collect.toString()); @@ -558,6 +559,12 @@ public class TbProductServiceImpl implements TbProductService { } else { product.setCategoryId(resources.getCategoryId().toString()); } + if("package".equals(resources.getType())){ + //套餐内容 + if (CollectionUtil.isNotEmpty(resources.getProGroupVo())) { + product.setGroupSnap(ListUtil.listToJsonString(resources.getProGroupVo())); + } + } TbProduct save = tbProductRepository.save(product); //sku @@ -581,7 +588,7 @@ public class TbProductServiceImpl implements TbProductService { tbProductSkuResultRepository.save(productSkuResult); } else { tbProductSkuResultRepository.deleteByIdN(save.getId()); - if ("group".equals(resources.getTypeEnum())) { + if ("coupon".equals(resources.getType())) { TbPurchaseNotice notices = resources.getNotices(); if (StringUtils.isBlank(notices.getDateUsed()) && StringUtils.isBlank(notices.getAvailableTime()) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/ProductGroupVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/ProductGroupVo.java new file mode 100644 index 00000000..ca49afc7 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/ProductGroupVo.java @@ -0,0 +1,34 @@ +package cn.ysk.cashier.vo; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class ProductGroupVo { + + private Integer count; + //选几个 + private Integer number; + //类别 + private String title; + + //食物 + private List goods=new ArrayList<>(); + + @Data + @JsonIgnoreProperties(ignoreUnknown = true) + public static class Food { + private Integer proId; + private String proName; + private Integer skuId; + private String skuName; + private BigDecimal price; + private String number; + private String unitName; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbProductVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbProductVo.java index b69c7560..0e38ad25 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbProductVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbProductVo.java @@ -25,8 +25,6 @@ public class TbProductVo { private Integer id; - private String merchantId; - private String shopId; private String name; @@ -47,24 +45,19 @@ public class TbProductVo { private String shortTitle; - private BigDecimal lowMemberPrice; - private String shareImg; private JSONArray images; private Integer sort; - private Integer limitNumber; - private Integer status; - private String failMsg; - private Integer isHot; private Integer isOnSale; + private String type; private String typeEnum; private Integer isDel; @@ -79,19 +72,11 @@ public class TbProductVo { private Long updatedAt; - private Integer furnishMeal; - private Double realSalesNumber; private Double stockNumber; - private Integer furnishExpress; - - private Integer furnishDraw; - - private Integer furnishVir; - - private JSONArray groupSnap; + private Integer groupType; private String unitName; @@ -115,9 +100,28 @@ public class TbProductVo { private Integer warnLine = 0; + private String showType; + + private BigDecimal weight; + + private Integer isTempPrice = 0; + + private Integer dayLimit = 0; + + private Integer singleOrderLimit = 0; + + private Integer singlePeopleLimit = 0; + + private String days; + + private String startTime; + + private String endTime; + private List conInfos; private TbPurchaseNotice notices=new TbPurchaseNotice(); private List groupCategoryId = new ArrayList<>(); private List tags = new ArrayList<>(); + private List proGroupVo; }