From 257dc16c94afb4a488cb639bd53f5a8aab40e7e1 Mon Sep 17 00:00:00 2001 From: xuelijun <977662702@qq.com> Date: Wed, 13 Aug 2025 09:18:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productapi/api/product/dto/ProdDO.java | 14 +- .../api/product/dto/ProdPropValueDO.java | 7 + .../productapi/api/product/dto/SkuDO.java | 14 +- .../api/product/vo/prod/ProdListVO.java | 74 ++++++ .../api/product/vo/prod/ProdPageReqVO.java | 100 +------- .../api/product/vo/prod/ProdRecycleBinVO.java | 22 ++ .../api/product/vo/prod/ProdRespVO.java | 5 + .../api/product/vo/prod/ProdSaveReqVO.java | 9 +- .../vo/prodprop/ProdPropSaveReqVO.java | 1 + .../api/product/vo/sku/SkuPageReqVO.java | 3 + .../api/product/vo/sku/SkuRespVO.java | 13 + .../api/product/vo/sku/SkuSaveReqVO.java | 9 + .../controller/admin/ProdController.java | 66 ++++- .../controller/admin/SkuController.java | 32 ++- .../cloud/product/mapper/ProdMapper.java | 11 +- .../product/mapper/ProdPropValueMapper.java | 5 + .../cloud/product/mapper/SkuMapper.java | 7 +- .../cloud/product/service/ProdService.java | 3 + .../cloud/product/service/SkuService.java | 32 +++ .../service/impl/ProdPropServiceImpl.java | 4 +- .../product/service/impl/ProdServiceImpl.java | 22 +- .../product/service/impl/SkuServiceImpl.java | 230 +++++++++++++++++- .../resources/mapper/product/ProdMapper.xml | 32 ++- .../mapper/product/ProdPropValueMapper.xml | 43 ++++ .../resources/mapper/product/SkuMapper.xml | 32 +++ 25 files changed, 669 insertions(+), 121 deletions(-) create mode 100644 tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdListVO.java create mode 100644 tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRecycleBinVO.java diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdDO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdDO.java index ac92c84..3cfe1e0 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdDO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdDO.java @@ -8,6 +8,7 @@ import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; import com.tashow.cloud.productapi.general.StringListTypeHandler; import lombok.*; +import java.util.Date; import java.util.List; /** @@ -111,9 +112,15 @@ public class ProdDO extends BaseDO { */ private Integer status; /** - * 商品分类 + * 商品分类id */ private Long categoryId; + + /** + * 商品分类名称 + */ + private String categoryName; + /** * 销量 */ @@ -163,4 +170,9 @@ public class ProdDO extends BaseDO { */ private Integer top; + /** + * 删除时间 + */ + private Date deleteTime; + } \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdPropValueDO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdPropValueDO.java index 3b8c1bb..c8cccd5 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdPropValueDO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/ProdPropValueDO.java @@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.util.Date; + /** * 属性规则 DO * @@ -59,4 +62,8 @@ public class ProdPropValueDO { @TableField(exist=false) private Integer isExist; + /** + * 删除时间 + */ + private Date deleteTime; } \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/SkuDO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/SkuDO.java index fa430d0..cb11aaa 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/SkuDO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/dto/SkuDO.java @@ -87,9 +87,21 @@ public class SkuDO extends BaseDO { */ private String overview; /** - * 库存(-1代表无限库存) + * 库存 */ private Integer stocks; + + + /** + * 总库存是0 无线库存是1 + */ + private Integer stocksFlg; + + /** + * 锁定库存数 + */ + @TableField(exist=false) + private Integer stocksLockNum; /** * 预警库存 */ diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdListVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdListVO.java new file mode 100644 index 0000000..e636c7a --- /dev/null +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdListVO.java @@ -0,0 +1,74 @@ +package com.tashow.cloud.productapi.api.product.vo.prod; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.tashow.cloud.productapi.api.product.dto.*; +import com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse.ProdEmergencyInfoVO; +import com.tashow.cloud.productapi.api.product.vo.prodserviceareas.ProdServiceAreasInfoVO; +import com.tashow.cloud.productapi.general.StringListTypeHandler; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "商品服务配置 VO") +@Data +public class ProdListVO { + + /** + * 产品ID + */ + @TableId + private Long prodId; + /** + * 商品名称 + */ + private String prodName; + /** + * 商品简称 + */ + private String abbreviation; + + /** + * 店铺id + */ + private Long shopId; + + + /** + * 是否置灰0否1是 + */ + private Integer isProhibit; + + /** + * 审核备注 + */ + private String processNotes; + /** + * 详细描述 + */ + private String content; + /** + * 商品编号 + */ + private String prodNumber; + /** + * 商品主图 + */ + private String pic; + /** + * 商品轮播图片,以,分割 + */ + private String imgs; + /** + * 商品轮播图片,以,分割 + */ + private String whiteImg; + + /** + * 默认是1,正常状态(出售中), 0:下架(仓库中) 2:待审核 + */ + private Integer status; + + +} \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdPageReqVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdPageReqVO.java index faa0880..33e3e6f 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdPageReqVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdPageReqVO.java @@ -21,110 +21,22 @@ public class ProdPageReqVO extends PageParam { @Schema(description = "商品名称", example = "赵六") private String prodName; - @Schema(description = "商品简称") - private String abbreviation; - - @Schema(description = "seo标题", example = "李四") - private String seoShortName; - - @Schema(description = "seo搜索") - private String seoSearch; - - @Schema(description = "关键词") - private String keyword; - @Schema(description = "店铺id", example = "10843") private Long shopId; - @Schema(description = "简要描述,卖点等") - private String brief; - - @Schema(description = "品牌") - private String brand; - - @Schema(description = "详细描述") - private String content; - - - @Schema(description = "'是否置灰0否1是'") - private Integer isProhibit; - - @Schema(description = "审核备注") - private String processNotes; - /** - * 标签 - */ - public List tag; - - @Schema(description = "商品编号") - private String prodNumber; - - @Schema(description = "商品主图") - private String pic; - - @Schema(description = "商品轮播图片,以,分割") - private String imgs; - - /** - * 视频 - */ - private String video; - - /** - * 商品轮播图片,以,分割 - */ - private String whiteImg; - @Schema(description = "默认是1,正常状态(出售中), 0:下架(仓库中) 2:待审核", example = "2") private Integer status; @Schema(description = "商品分类", example = "14895") private Long categoryId; - @Schema(description = "销量") - private Integer soldNum; - - @Schema(description = "分享图") - private String shareImage; - - @Schema(description = "分享话术") - private String shareContent; - - @Schema(description = "是否开启区域0关1开") - private Integer regionSwitch; - - @Schema(description = "是否特殊时段0关1开") - private Integer additionalSwitch; - - @Schema(description = "是否特殊日期(节假日周末什么的)0关1开") - private Integer additionalFeeSwitch; - - @Schema(description = "是否紧急响应服务0关1开") - private Integer emergencySwitch; - - @Schema(description = "是否预约0关1开") - private Integer reservationSwitch; - - @Schema(description = "是否接单上线0关1开") - private Integer orderLimitSwitch; - - @Schema(description = "是否开启体重配置0关1开") - private Integer weightSwitch; + /** + * 商品分类名称 + */ + private String categoryName; @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - - @Schema(description = "创建人") - private String createBy; - - @Schema(description = "修改人") - private String updateBy; - - @Schema(description = "版本 乐观锁") - private Integer version; - - @Schema(description = "展示的权重") - private Integer top; + //@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] createTime; } \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRecycleBinVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRecycleBinVO.java new file mode 100644 index 0000000..4fcbc6b --- /dev/null +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRecycleBinVO.java @@ -0,0 +1,22 @@ +package com.tashow.cloud.productapi.api.product.vo.prod; + +import com.tashow.cloud.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "商品回收站分页查询") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProdRecycleBinVO extends PageParam { + + @Schema(description = "商品名称", example = "18784") + private String prodName; + + @Schema(description = "删除时间") + //@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private String[] deleteTime; + +} \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRespVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRespVO.java index a2d6298..dd4be2d 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRespVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdRespVO.java @@ -84,6 +84,11 @@ public class ProdRespVO { @ExcelProperty("商品分类") private Long categoryId; + /** + * 商品分类名称 + */ + private String categoryName; + @Schema(description = "销量") @ExcelProperty("销量") private Integer soldNum; diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdSaveReqVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdSaveReqVO.java index 9331648..2d271ad 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdSaveReqVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prod/ProdSaveReqVO.java @@ -15,8 +15,8 @@ public class ProdSaveReqVO { @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943") private Long prodId; - @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @NotEmpty(message = "商品名称不能为空") + //@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + //@NotEmpty(message = "商品名称不能为空") private String prodName; @Schema(description = "商品简称") @@ -31,6 +31,11 @@ public class ProdSaveReqVO { @Schema(description = "关键词") private String keyword; + /** + * 商品分类名称 + */ + private String categoryName; + @Schema(description = "店铺id", example = "10843") private Long shopId; diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prodprop/ProdPropSaveReqVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prodprop/ProdPropSaveReqVO.java index aa2122d..43cc4e5 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prodprop/ProdPropSaveReqVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/prodprop/ProdPropSaveReqVO.java @@ -11,6 +11,7 @@ import java.util.List; @Schema(description = "管理后台 - 商品属性新增/修改 Request VO") @Data public class ProdPropSaveReqVO { + private Long id; @Schema(description = "属性id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14271") private Long propId; diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuPageReqVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuPageReqVO.java index 22bdfbb..662c667 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuPageReqVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuPageReqVO.java @@ -18,4 +18,7 @@ public class SkuPageReqVO extends PageParam { @Schema(description = "销售属性组合字符串") private String properties; + @Schema(description = "skuID", example = "18784") + private Long skuId; + } \ No newline at end of file diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuRespVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuRespVO.java index ecebf18..762ed29 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuRespVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuRespVO.java @@ -2,6 +2,7 @@ package com.tashow.cloud.productapi.api.product.vo.sku; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -70,6 +71,18 @@ public class SkuRespVO { @ExcelProperty("库存") private Integer stocks; + + @Schema(description = "总库存是0 无线库存是1") + @ExcelProperty("总库存是0 无线库存是1") + private Integer stocksFlg; + + /** + * 锁定库存数 + */ + @Schema(description = "锁定库存数") + @ExcelProperty("锁定库存数") + private Integer stocksLockNum; + @Schema(description = "预警库存") @ExcelProperty("预警库存") private Integer warnStocks; diff --git a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuSaveReqVO.java b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuSaveReqVO.java index 2c31958..4f2b605 100644 --- a/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuSaveReqVO.java +++ b/tashow-feign/tashow-product-api/src/main/java/com/tashow/cloud/productapi/api/product/vo/sku/SkuSaveReqVO.java @@ -1,5 +1,6 @@ package com.tashow.cloud.productapi.api.product.vo.sku; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -55,6 +56,14 @@ public class SkuSaveReqVO { @Schema(description = "库存") private Integer stocks; + @Schema(description = "总库存是0 无线库存是1") + private Integer stocksFlg; + /** + * 锁定库存数 + */ + @Schema(description = "锁定库存数") + private Integer stocksLockNum; + @Schema(description = "预警库存") private Integer warnStocks; diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/ProdController.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/ProdController.java index 4349071..ab29443 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/ProdController.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/ProdController.java @@ -2,11 +2,17 @@ package com.tashow.cloud.product.controller.admin; import com.tashow.cloud.common.pojo.CommonResult; import com.tashow.cloud.common.pojo.PageResult; +import com.tashow.cloud.product.mapper.ProdMapper; import com.tashow.cloud.productapi.api.product.dto.ProdDO; import com.tashow.cloud.product.service.ProdService; +import com.tashow.cloud.productapi.api.product.dto.SkuDO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; +import com.tashow.cloud.productapi.api.product.vo.prod.ProdRecycleBinVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdSaveReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuPageReqVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO; +import com.tashow.cloud.productapi.enums.BaseEnum; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -16,6 +22,9 @@ import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; +import java.util.List; + import static com.tashow.cloud.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 商品") @@ -26,7 +35,8 @@ public class ProdController { @Resource private ProdService prodService; - + @Resource + private ProdMapper prodMapper; @PostMapping("/create") @Operation(summary = "创建商品") @PermitAll @@ -62,23 +72,59 @@ public class ProdController { } -/* @PutMapping("/update") + @PutMapping("/update") @Operation(summary = "更新商品") - @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:update')") - public CommonResult updateProd(@Valid @RequestBody ProdSaveReqVO updateReqVO) { + @PermitAll + public CommonResult updateProd(@RequestBody ProdSaveReqVO updateReqVO) { prodService.updateProd(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除商品") + @PermitAll @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:delete')") public CommonResult deleteProd(@RequestParam("id") Long id) { prodService.deleteProd(id); return success(true); } + + + + @DeleteMapping("/deleteSkuList") + @Operation(summary = "批量删除商品") + @Parameter(name = "ids", description = "商品id", required = true) + @PermitAll + public CommonResult deleteSkuList(@RequestParam("ids") List ids) { + for(Long id:ids){ + ProdDO prod = new ProdDO(); + prod.setProdId(id); + prod.setDeleted(BaseEnum.YES_ONE.getKey()); + prod.setDeleteTime(new Date()); + // 删除 + prodMapper.deleteById(prod); + } + return success(true); + } + + @DeleteMapping("/updateSkuShelfList") + @Operation(summary = "批量上下架") + @Parameter(name = "status", description = "默认是1,正常状态(出售中), 0:下架(仓库中) 2:待审核", required = true) + @PermitAll + public CommonResult updateSkuShelfList(@RequestParam("ids") List ids,@RequestParam("status") Integer status) { + for(Long id:ids){ + ProdDO prod = new ProdDO(); + prod.setProdId(id); + prod.setStatus(status); + prodMapper.updateBatch(prod); + } + return success(true); + } + + + +/* @GetMapping("/get") @Operation(summary = "获得商品") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -91,8 +137,16 @@ public class ProdController { @PermitAll @GetMapping("/page") @Operation(summary = "获得商品分页") - public CommonResult> getProdPage(@Valid ProdPageReqVO pageReqVO) { + public CommonResult> getProdPage(ProdPageReqVO pageReqVO) { PageResult pageResult = prodService.getProdPage(pageReqVO); return success(pageResult); } + + @PermitAll + @GetMapping("/getProdRecycleBinPageList") + @Operation(summary = "获得商品回收站分页列表") + public CommonResult> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO) { + PageResult pageResult = prodService.getProdRecycleBinPageList(prodRecycleBinVO); + return success(pageResult); + } } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/SkuController.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/SkuController.java index e0c3ba5..f71b525 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/SkuController.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/admin/SkuController.java @@ -26,7 +26,7 @@ import static com.tashow.cloud.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 单品SKU") @RestController -@RequestMapping("/tz/sku") +@RequestMapping("/product/sku") @Validated public class SkuController { @@ -84,6 +84,16 @@ public class SkuController { return success(true); } + + @PutMapping("/disableProp") + @Operation(summary = "禁用规格值") + @PermitAll + public CommonResult disableProp(@RequestParam("id") Long id) { + skuService.disableProp(id); + return success(true); + } + + @DeleteMapping("/delete") @Operation(summary = "删除单品SKU") @Parameter(name = "id", description = "编号", required = true) @@ -98,13 +108,14 @@ public class SkuController { @Parameter(name = "ids", description = "编号", required = true) @PermitAll public CommonResult deleteSkuList(@RequestParam("id") List ids) { - for(Long id:ids){ + /*for(Long id:ids){ SkuDO sku = new SkuDO(); sku.setSkuId(id); sku.setDeleteTime(new Date()); // 删除 skuMapper.deleteById(sku); - } + }*/ + skuService.deleteSkus(ids); return success(true); } @@ -115,10 +126,7 @@ public class SkuController { @Parameter(name = "isShelf", description = "是否上下架(0下架 1上架)", required = true) @PermitAll public CommonResult updateSkuShelf(@RequestParam("id") Long id,@RequestParam("isShelf") Integer isShelf) { - SkuDO sku = new SkuDO(); - sku.setSkuId(id); - sku.setIsShelf(isShelf); - skuMapper.updateBatch(sku); + skuService.updatSkuIsShelf(id,isShelf); return success(true); } @@ -134,6 +142,7 @@ public class SkuController { sku.setIsShelf(isShelf); skuMapper.updateBatch(sku); } + skuService.updatSkuIsShelfs(ids,isShelf); return success(true); } @@ -155,6 +164,15 @@ public class SkuController { return success(pageResult); } + @PermitAll + @GetMapping("/getSkuPageList") + @Operation(summary = "获得SKU分页列表") + public CommonResult> getSkuPageList(@Valid SkuPageReqVO pageReqVO) { + PageResult pageResult = skuService.getSkuPageList(pageReqVO); + return success(pageResult); + } + + /* @PermitAll @GetMapping("/getSkuRecycleBinPageList") @Operation(summary = "获得SKU回收站分页列表") diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java index 12f8186..9ec8cf9 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java @@ -10,6 +10,7 @@ import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX; import com.tashow.cloud.productapi.api.product.dto.*; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -21,7 +22,11 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface ProdMapper extends BaseMapperX { - IPage getProdPageList(Page page, ProdPageReqVO reqVO); + IPage getProdPageList(Page page,@Param("createTime") String[] createTime + , @Param("prodName") String prodName + , @Param("shopId") Long shopId + , @Param("status") Integer status + , @Param("categoryId") Long categoryId); ProdServiceVO selectProdService(@Param("prodId") Long prodId , @Param("regionSwitch") Integer regionSwitch @@ -41,4 +46,8 @@ public interface ProdMapper extends BaseMapperX { , @Param("additionalFeeSwitch") Integer additionalFeeSwitch , @Param("weightSwitch") Integer weightSwitch ); + + IPage getProdRecycleBinPageList(Page page,@Param("createTime") String[] createTime + , @Param("prodName") String prodName); + } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdPropValueMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdPropValueMapper.java index 20a24b5..9695049 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdPropValueMapper.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdPropValueMapper.java @@ -24,4 +24,9 @@ public interface ProdPropValueMapper extends BaseMapperX { */ void insertPropValues(@Param("propId") Long propId, @Param("prodPropValues") List prodPropValues); + List selectSalesValuesByProdId(@Param("prodId") Long prodId); + + List selectSalesValuesByState(@Param("prodId") Long prodId); + + void batchMarkDeleted(@Param("ids") List ids); } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuMapper.java index c51590b..f30230b 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuMapper.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuMapper.java @@ -20,6 +20,11 @@ public interface SkuMapper extends BaseMapperX { IPage getSkuRecycleBinPageList(Page page, @Param("prodId") Long prodId, @Param("properties")String properties); - List getSkuListByName( @Param("propertiesName")String propertiesName); + IPage getSkuPageList(Page page, @Param("prodId") Long prodId,@Param("skuId") Long skuId, @Param("properties")String properties); + + List getSkuListByName( @Param("propertiesName")String propertiesName); + List selectPropertiesByProdIdAndNotDeleted( @Param("prodId")Long prodId); + + List selectPropertiesByProdIdShelf( @Param("prodId")Long prodId); } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java index e9ed3fa..d5c6470 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java @@ -4,8 +4,10 @@ import java.util.*; import com.tashow.cloud.productapi.api.product.dto.ProdDO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; +import com.tashow.cloud.productapi.api.product.vo.prod.ProdRecycleBinVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdSaveReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO; import jakarta.validation.*; import com.tashow.cloud.common.pojo.PageResult; import com.tashow.cloud.common.pojo.PageParam; @@ -82,4 +84,5 @@ public interface ProdService { */ PageResult getProdPage(ProdPageReqVO pageReqVO); + PageResult getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO); } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java index a9b39e5..bb11c78 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java @@ -63,6 +63,13 @@ public interface SkuService { */ void deleteProp(Long id); + /** + * 禁用规格值 + * + * @param id 删除规格值 + */ + void disableProp(Long id); + SkuPropInfoVO getSKuPropList(Long prodId); @@ -74,6 +81,29 @@ public interface SkuService { */ void deleteSku(Long id); + /** + * 批量删除删SKU + * + * @param ids + */ + void deleteSkus(List ids); + + + /** + * 删除单品SKU + * + * @param id 编号 + */ + void updatSkuIsShelf(Long id,Integer isShelf); + + /** + * 批量删除删SKU + * + * @param ids + */ + void updatSkuIsShelfs(List ids,Integer isShelf); + + /** * 获得单品SKU * @@ -86,6 +116,8 @@ public interface SkuService { PageResult getSkuRecycleBinPageList(SkuPageReqVO pageReqVO); + + PageResult getSkuPageList(SkuPageReqVO pageReqVO); /** * 获得单品SKU分页 * diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdPropServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdPropServiceImpl.java index 492f8e8..0b5a7c2 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdPropServiceImpl.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdPropServiceImpl.java @@ -65,7 +65,7 @@ public class ProdPropServiceImpl extends ServiceImpl return; } for (ProdPropValueDO prodPropValueDO : createReqVO.getProdPropValues()){ - prodPropValueDO.setPropId(prodProp.getPropId()); + prodPropValueDO.setPropId(prodProp.getId()); prodPropValueMapper.insert(prodPropValueDO); } } @@ -90,7 +90,7 @@ public class ProdPropServiceImpl extends ServiceImpl } for (ProdPropValueDO prodPropValueDO : createReqVO.getProdPropValues()){ if(Objects.equals(BaseEnum.YES_ONE.getKey(),prodPropValueDO.getIsExist())){ - prodPropValueDO.setPropId(prodProp.getPropId()); + prodPropValueDO.setPropId(prodProp.getId()); prodPropValueMapper.insert(prodPropValueDO); }else { prodPropValueMapper.updateById(prodPropValueDO); diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java index e55ebc0..241312c 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.tashow.cloud.common.util.date.DateUtils; import com.tashow.cloud.mybatis.mybatis.core.util.MyBatisUtils; import com.tashow.cloud.productapi.api.product.dto.*; import com.tashow.cloud.product.mapper.*; @@ -11,8 +12,11 @@ import com.tashow.cloud.product.service.ProdPropService; import com.tashow.cloud.product.service.ProdService; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; +import com.tashow.cloud.productapi.api.product.vo.prod.ProdRecycleBinVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdSaveReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuPageReqVO; +import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO; import com.tashow.cloud.productapi.enums.BaseEnum; import lombok.val; import org.springframework.stereotype.Service; @@ -271,8 +275,12 @@ public class ProdServiceImpl implements ProdService { public void deleteProd(Long id) { // 校验存在 validateProdExists(id); + ProdDO prod = new ProdDO(); + prod.setProdId(id); + prod.setDeleted(BaseEnum.YES_ONE.getKey()); + prod.setDeleteTime(new Date()); // 删除 - prodMapper.deleteById(id); + prodMapper.deleteById(prod); } private void validateProdExists(Long id) { @@ -288,7 +296,17 @@ public class ProdServiceImpl implements ProdService { @Override public PageResult getProdPage(ProdPageReqVO pageReqVO) { - IPage prodPageList = prodMapper.getProdPageList(MyBatisUtils.buildPage(pageReqVO), pageReqVO); + IPage prodPageList = prodMapper.getProdPageList(MyBatisUtils.buildPage(pageReqVO), + pageReqVO.getCreateTime(), pageReqVO.getProdName(), pageReqVO.getShopId(), pageReqVO.getStatus(), pageReqVO.getCategoryId()); + return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); + } + + @Override + public PageResult getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO){ + IPage prodPageList = prodMapper.getProdRecycleBinPageList(MyBatisUtils.buildPage(prodRecycleBinVO), prodRecycleBinVO.getDeleteTime(), prodRecycleBinVO.getProdName()); + for(SkuRecycleBinVO prodPage : prodPageList.getRecords()){ + prodPage.setRemainingDays(DateUtils.getRemainingDays(prodPage.getDeleteTime())); + } return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); } diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java index d52879c..90f954b 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java @@ -59,6 +59,9 @@ public class SkuServiceImpl implements SkuService { private ProdPropValueService prodPropValueService; @Resource private ProdExtendService prodExtendService; + @Resource + private ProdPropValueMapper prodPropValueMapper; + @Override public Long createSku(SkuSaveReqVO createReqVO) { @@ -413,11 +416,39 @@ public class SkuServiceImpl implements SkuService { ProdPropValueDO prodPropValueDO =prodPropValueService.getById(id); prodPropValueService.deleteProdPropValue(id); List skuDOList = skuMapper.getSkuListByName(prodPropValueDO.getPropValue()); + List skuDOList1 = new ArrayList<>(); for(SkuDO skuDO : skuDOList){ if(skuDO.getProperties()!=null){ String[] split = skuDO.getProperties().split(","); + for (String s : split){ + if(s.equals(prodPropValueDO.getPropValue())){ + skuDOList1.add(skuDO); + } + } } } + skuMapper.deleteByIds(skuDOList1); + } + + @Override + public void disableProp(Long id) { + ProdPropValueDO prodPropValueDO =prodPropValueService.getById(id); + prodPropValueDO.setState(BaseEnum.YES_ONE.getKey()); + prodPropValueService.updateById(prodPropValueDO); + List skuDOList = skuMapper.getSkuListByName(prodPropValueDO.getPropValue()); + List skuDOList1 = new ArrayList<>(); + for(SkuDO skuDO : skuDOList){ + if(skuDO.getProperties()!=null){ + String[] split = skuDO.getProperties().split(","); + for (String s : split){ + if(s.equals(prodPropValueDO.getPropValue())){ + skuDO.setIsShelf(BaseEnum.NO_ZERO.getKey()); + skuDOList1.add(skuDO); + } + } + } + } + skuMapper.updateBatch(skuDOList1); } @Override @@ -425,14 +456,14 @@ public class SkuServiceImpl implements SkuService { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProdPropDO::getProdId,prodId); wrapper.eq(ProdPropDO::getState, BaseEnum.YES_ONE.getKey()) - .orderByDesc(ProdPropDO::getSort); + .orderByAsc(ProdPropDO::getSort); List list = prodPropService.list(wrapper); list.forEach(prop -> { List values = prodPropValueService.list( new LambdaQueryWrapper() .eq(ProdPropValueDO::getPropId, prop.getId()) - .orderByDesc(ProdPropValueDO::getSort) + .orderByAsc(ProdPropValueDO::getSort) ); /* LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(ProdPropValueDO::getPropId,prop.getPropId()); @@ -454,16 +485,203 @@ public class SkuServiceImpl implements SkuService { } @Override + @Transactional(rollbackFor = Exception.class) public void deleteSku(Long id) { // 校验存在 validateSkuExists(id); SkuDO sku = new SkuDO(); sku.setSkuId(id); sku.setDeleteTime(new Date()); + + SkuDO prodSku = skuMapper.selectById( id); + // Step 1: 获取该商品下所有未删除的 SKU 的 properties + List activeProperties = skuMapper.selectPropertiesByProdIdAndNotDeleted(prodSku.getProdId()); + + // Step 2: 提取所有正在被使用的属性值(去重) + Set currentlyUsedValues = new HashSet<>(); + for (String props : activeProperties) { + if (props != null && !props.trim().isEmpty()) { + String[] values = props.split(","); + for (String v : values) { + currentlyUsedValues.add(v.trim()); + } + } + } // 删除 skuMapper.deleteById(sku); + // Step 3: 查询该商品下所有 rule=1 的属性值(销售属性) + List allPropValues = prodPropValueMapper.selectSalesValuesByProdId(prodSku.getProdId()); + // Step 4: 遍历每个属性值,检查是否还在被使用 + for (ProdPropValueDO pv : allPropValues) { + String value = pv.getPropValue().trim(); + // 如果当前属性值不在“活跃使用”列表中,说明没有未删除的 SKU 使用它 + if (!currentlyUsedValues.contains(value)) { + // 可以安全删除该属性值 + // 可以安全禁用该属性值 + ProdPropValueDO prodPropValueDO = new ProdPropValueDO(); + prodPropValueDO.setId(pv.getId()); + prodPropValueDO.setIsExpire(BaseEnum.YES_ONE.getKey()); + prodPropValueDO.setDeleteTime(new Date()); + prodPropValueMapper.updateById(prodPropValueDO); + } + } } + + @Transactional(rollbackFor = Exception.class) + public void deleteSkus(List ids) { + if (ids == null || ids.isEmpty()) { + return; + } + + // Step 1: 查询这些 SKU 的基本信息(主要是 prod_id) + List skuList = skuMapper.selectByIds(ids); + if (skuList.isEmpty()) { + return; + } + + Long prodId = skuList.get(0).getProdId(); + // 校验是否属于同一个商品(可选) + boolean allSameProd = skuList.stream().allMatch(s -> s.getProdId().equals(prodId)); + if (!allSameProd) { + throw new IllegalArgumentException("批量删除的 SKU 必须属于同一个商品"); + } + + + // Step 3: 获取该商品下【当前仍然未删除】的 SKU 的 properties + List activeProperties = skuMapper.selectPropertiesByProdIdAndNotDeleted(prodId); + + for(Long id:ids){ + SkuDO sku = new SkuDO(); + sku.setSkuId(id); + sku.setDeleteTime(new Date()); + // 删除 + skuMapper.deleteById(sku); + } + // Step 4: 提取所有仍在使用的属性值(去重 + trim) + Set currentlyUsedValues = new HashSet<>(); + for (String props : activeProperties) { + if (props != null && !props.trim().isEmpty()) { + String[] values = props.split(","); + for (String v : values) { + currentlyUsedValues.add(v.trim()); + } + } + } + + // Step 5: 查询该商品下所有 rule=1 的销售属性值(未删除的) + List allPropValues = prodPropValueMapper.selectSalesValuesByProdId(prodId); + + // Step 6: 收集需要删除的属性值 ID + List valueIdsToDelete = new ArrayList<>(); + for (ProdPropValueDO pv : allPropValues) { + String value = pv.getPropValue().trim(); + if (!currentlyUsedValues.contains(value)) { + valueIdsToDelete.add(pv.getId()); + } + } + // Step 7: 批量删除无用的属性值 + if (!valueIdsToDelete.isEmpty()) { + prodPropValueMapper.batchMarkDeleted(valueIdsToDelete); + } + } + + @Override + public void updatSkuIsShelf(Long id, Integer isShelf) { + // 校验存在 + validateSkuExists(id); + + SkuDO prodSku = skuMapper.selectById( id); + // Step 1: 获取该商品下所有未禁用的 SKU 的 properties + List activeProperties = skuMapper.selectPropertiesByProdIdShelf(prodSku.getProdId()); + SkuDO sku = new SkuDO(); + sku.setSkuId(id); + sku.setIsShelf(isShelf); + skuMapper.updateById(sku); + // Step 2: 提取所有正在被使用的属性值(去重) + Set currentlyUsedValues = new HashSet<>(); + for (String props : activeProperties) { + if (props != null && !props.trim().isEmpty()) { + String[] values = props.split(","); + for (String v : values) { + currentlyUsedValues.add(v.trim()); + } + } + } + // Step 3: 查询该商品下所有 rule=1 的属性值(销售属性) + List allPropValues = prodPropValueMapper.selectSalesValuesByState(prodSku.getProdId()); + // Step 4: 遍历每个属性值,检查是否还在被使用 + for (ProdPropValueDO pv : allPropValues) { + String value = pv.getPropValue().trim(); + // 如果当前属性值不在“活跃使用”列表中,说明没有未删除的 SKU 使用它 + if (!currentlyUsedValues.contains(value)) { + // 可以安全禁用该属性值 + ProdPropValueDO prodPropValueDO = new ProdPropValueDO(); + prodPropValueDO.setId(pv.getId()); + prodPropValueDO.setState(BaseEnum.NO_ZERO.getKey()); + prodPropValueMapper.updateById(prodPropValueDO); + } + } + } + + @Override + public void updatSkuIsShelfs(List ids, Integer isShelf) { + if (ids == null || ids.isEmpty()) { + return; + } + + // Step 1: 查询这些 SKU 的基本信息(主要是 prod_id) + List skuList = skuMapper.selectByIds(ids); + if (skuList.isEmpty()) { + return; + } + + Long prodId = skuList.get(0).getProdId(); + // 校验是否属于同一个商品(可选) + boolean allSameProd = skuList.stream().allMatch(s -> s.getProdId().equals(prodId)); + if (!allSameProd) { + throw new IllegalArgumentException("批量删除的 SKU 必须属于同一个商品"); + } + + + // Step 3: 获取该商品下【当前仍然未禁用】的 SKU 的 properties + List activeProperties = skuMapper.selectPropertiesByProdIdShelf(prodId); + + for(Long id:ids){ + SkuDO sku = new SkuDO(); + sku.setSkuId(id); + sku.setIsShelf(isShelf); + skuMapper.updateBatch(sku); + } + // Step 4: 提取所有仍在使用的属性值(去重 + trim) + Set currentlyUsedValues = new HashSet<>(); + for (String props : activeProperties) { + if (props != null && !props.trim().isEmpty()) { + String[] values = props.split(","); + for (String v : values) { + currentlyUsedValues.add(v.trim()); + } + } + } + + // Step 5: 查询该商品下所有 rule=1 的销售属性值(未删除的) + List allPropValues = prodPropValueMapper.selectSalesValuesByState(prodId); + + // Step 6: 收集需要删除的属性值 ID + List valueIdsToDelete = new ArrayList<>(); + for (ProdPropValueDO pv : allPropValues) { + String value = pv.getPropValue().trim(); + if (!currentlyUsedValues.contains(value)) { + valueIdsToDelete.add(pv.getId()); + } + } + // Step 7: 批量删除无用的属性值 + if (!valueIdsToDelete.isEmpty()) { + prodPropValueMapper.batchMarkDeleted(valueIdsToDelete); + } + } + + private void validateSkuExists(Long id) { if (skuMapper.selectById(id) == null) { throw exception(ErrorCodeConstants.SKU_NOT_EXISTS); @@ -484,6 +702,14 @@ public class SkuServiceImpl implements SkuService { return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); } + @Override + public PageResult getSkuPageList(SkuPageReqVO pageReqVO){ + IPage prodPageList = skuMapper.getSkuPageList(MyBatisUtils.buildPage(pageReqVO), pageReqVO.getProdId(), pageReqVO.getSkuId(),pageReqVO.getProperties()); + + return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); + } + + @Override public PageResult getSkuPage(SkuPageReqVO pageReqVO) { diff --git a/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdMapper.xml b/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdMapper.xml index 322fa66..1f8290c 100644 --- a/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdMapper.xml +++ b/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdMapper.xml @@ -233,8 +233,25 @@ - + SELECT * FROM tz_prod + where deleted = 0 + + AND create_time BETWEEN #{createTime[0]} AND #{createTime[1]} + + + AND prod_name = #{prodName} + + + AND shop_id = #{shopId} + + + AND status = #{status} + + + AND category_id = #{categoryId} + + ORDER by create_time DESC @@ -502,4 +519,15 @@ ORDER BY p.prod_id + + + \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdPropValueMapper.xml b/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdPropValueMapper.xml index 83dde24..269d0aa 100644 --- a/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdPropValueMapper.xml +++ b/tashow-module/tashow-module-product/src/main/resources/mapper/product/ProdPropValueMapper.xml @@ -14,4 +14,47 @@ (#{propId},#{prodPropValue.propValue}) + + + + + + + + + + + + + UPDATE tz_prod_prop_value + SET is_expire = 1, delete_time = NOW() + WHERE id IN + + #{ids} + + \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuMapper.xml b/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuMapper.xml index 746575d..35b464d 100644 --- a/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuMapper.xml +++ b/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuMapper.xml @@ -17,6 +17,20 @@ + + + + + + + + + + \ No newline at end of file