规格回收站bug1

This commit is contained in:
xuelijun
2025-08-25 15:39:41 +08:00
parent 27e51b6278
commit 40f0ecd162
8 changed files with 204 additions and 14 deletions

View File

@@ -1,9 +1,12 @@
package com.tashow.cloud.productapi.api.product.vo.sku; package com.tashow.cloud.productapi.api.product.vo.sku;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
@Data @Data
@@ -29,4 +32,140 @@ public class SkuRecycleBinVO {
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date deleteTime; private Date deleteTime;
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18784")
@ExcelProperty("商品ID")
private Long prodId;
@Schema(description = "别名")
@ExcelProperty("别名")
private String alias;
@Schema(description = "当前价格", example = "32405")
@ExcelProperty("价格")
private BigDecimal price;
/**
* 基准价
*/
private BigDecimal basePrice;
@Schema(description = "最低价格", example = "5040")
@ExcelProperty("最低价格")
private BigDecimal minPrice;
@Schema(description = "最高价格", example = "11547")
@ExcelProperty("最高价格")
private BigDecimal maxPrice;
@Schema(description = "成本价", example = "28062")
@ExcelProperty("成本价")
private BigDecimal originalPrice;
@Schema(description = "市场价", example = "11547")
@ExcelProperty("市场价")
private BigDecimal marketPrice;
@Schema(description = "单位")
@ExcelProperty("单位")
private String unit;
@Schema(description = "0:主服务1:待定", example = "1")
@ExcelProperty("0:主服务1:待定")
private Integer type;
@Schema(description = "概述")
@ExcelProperty("概述")
private String overview;
@Schema(description = "库存")
@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;
@Schema(description = "库存扣款时机0:付款扣1下单扣", example = "1")
@ExcelProperty("库存扣款时机0:付款扣1下单扣")
private Boolean stocksType;
@Schema(description = "sku编码")
@ExcelProperty("sku编码")
private String skuCode;
@Schema(description = "商品条形码", example = "14390")
@ExcelProperty("商品条形码")
private String modelId;
@Schema(description = "sku图片")
@ExcelProperty("sku图片")
private String pic;
@Schema(description = "商品名称", example = "芋艿")
@ExcelProperty("商品名称")
private String prodName;
@Schema(description = "版本号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("版本号")
private Integer version;
@Schema(description = "商品重量")
@ExcelProperty("商品重量")
private Double weight;
@Schema(description = "商品体积")
@ExcelProperty("商品体积")
private Double volume;
@Schema(description = "0 禁用 1 启用", example = "1")
@ExcelProperty("0 禁用 1 启用")
private Integer status;
@Schema(description = "0 正常 1 已被删除")
@ExcelProperty("0 正常 1 已被删除")
private Integer isDelete;
@Schema(description = "最小购买数量")
@ExcelProperty("最小购买数量")
private Integer moq;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
/**
* 是否上下架0下架1上架
*/
private Integer isShelf;
/**
* 是否默认规则0否1是
*/
private Integer isSpecs;
/**
* 服务内容
*/
private String serviceContent;
/**
* 规格id 多个用逗号分隔1,2,3
*/
private String propIds;
} }

View File

@@ -82,10 +82,7 @@ public class SkuController {
@Operation(summary = "修改属性下面规格值") @Operation(summary = "修改属性下面规格值")
@PermitAll @PermitAll
public CommonResult<Boolean> updatePropValue(@RequestParam("id") Long id,@RequestParam("propValue") String propValue) { public CommonResult<Boolean> updatePropValue(@RequestParam("id") Long id,@RequestParam("propValue") String propValue) {
ProdPropValueDO propValueDO = new ProdPropValueDO(); skuService.updatePropVal(id,propValue);
propValueDO.setId(id);
propValueDO.setPropValue(propValue);
prodPropValueMapper.updateById(propValueDO);
return success(true); return success(true);
} }
@@ -120,7 +117,7 @@ public class SkuController {
@PostMapping("/restorePropList") @PostMapping("/restorePropList")
@Operation(summary = "恢复规格") @Operation(summary = "恢复规格")
@Parameter(name = "ids", description = "skuids", required = true) @Parameter(name = "ids", description = "规格id集合", required = true)
@PermitAll @PermitAll
public CommonResult<Boolean> restorePropList(@RequestParam("ids") List<Long> ids) { public CommonResult<Boolean> restorePropList(@RequestParam("ids") List<Long> ids) {
skuService.restorePropList(ids); skuService.restorePropList(ids);

View File

@@ -42,4 +42,8 @@ public interface ProdPropValueMapper extends BaseMapperX<ProdPropValueDO> {
IPage<ProPropRecycleBinVO> getSKuPropRecycleBinList(Page<?> page, @Param("prodId") Long prodId,@Param("propValue")String propValue); IPage<ProPropRecycleBinVO> getSKuPropRecycleBinList(Page<?> page, @Param("prodId") Long prodId,@Param("propValue")String propValue);
List<ProdPropValueDO> getskuListByPropValueIds(@Param("ids")List<Long> ids); List<ProdPropValueDO> getskuListByPropValueIds(@Param("ids")List<Long> ids);
void restorePropValue(@Param("ids") List<Long> ids);
int getMaxPropValue(@Param("propId")Long propId);
} }

View File

@@ -23,7 +23,8 @@ public interface SkuMapper extends BaseMapperX<SkuDO> {
IPage<SkuDO> getSkuPageList(Page<?> page, @Param("prodId") Long prodId,@Param("skuId") Long skuId, @Param("properties")String properties); IPage<SkuDO> getSkuPageList(Page<?> page, @Param("prodId") Long prodId,@Param("skuId") Long skuId, @Param("properties")String properties);
List<SkuDO> getSkuListByName( @Param("propertiesName")String propertiesName); List<SkuDO> getSkuListByName( @Param("prodId")Long prodId , @Param("propertiesName")String propertiesName);
List<String> selectPropertiesByProdIdAndNotDeleted( @Param("prodId")Long prodId); List<String> selectPropertiesByProdIdAndNotDeleted( @Param("prodId")Long prodId);
List<String> selectPropertiesByProdIdShelf( @Param("prodId")Long prodId); List<String> selectPropertiesByProdIdShelf( @Param("prodId")Long prodId);

View File

@@ -58,6 +58,9 @@ public interface SkuService {
*/ */
void updateProp(SkuPropVO skuPropVO); void updateProp(SkuPropVO skuPropVO);
void updatePropVal(Long id, String propValue);
/** /**
* 删除规格值 * 删除规格值
* *

View File

@@ -65,7 +65,8 @@ public class SkuServiceImpl implements SkuService {
private ProdExtendService prodExtendService; private ProdExtendService prodExtendService;
@Resource @Resource
private ProdPropValueMapper prodPropValueMapper; private ProdPropValueMapper prodPropValueMapper;
@Resource
private ProdPropMapper prodPropMapper;
@Override @Override
public Long createSku(SkuSaveReqVO createReqVO) { public Long createSku(SkuSaveReqVO createReqVO) {
@@ -410,11 +411,39 @@ public class SkuServiceImpl implements SkuService {
prodPropService.updateProdPropAndValues(skuPropVO); prodPropService.updateProdPropAndValues(skuPropVO);
} }
@Override
public void updatePropVal(Long id, String propValue) {
ProdPropValueDO prodPropValueDO = prodPropValueMapper.selectById(id);
ProdPropDO prodPropDO =prodPropMapper.selectById(prodPropValueDO.getPropId());
List<SkuDO> skuDOList = skuMapper.getSkuListByName(prodPropDO.getProdId(),prodPropValueDO.getPropValue());
prodPropValueDO.setPropValue(propValue);
prodPropValueMapper.updateById(prodPropValueDO);
List<Long> skuids = 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.setProperties(prodPropValueDO.getPropValue());
skuDO.setSkuName(prodPropValueDO.getPropValue());
skuMapper.updateById(skuDO);
}
}
}
}
if (CollUtil.isNotEmpty(skuids)) {
skuMapper.batchSkuDeleted(skuids);
}
}
@Override @Override
public void deleteProp(Long id) { public void deleteProp(Long id) {
ProdPropValueDO prodPropValueDO = prodPropValueService.getById(id); ProdPropValueDO prodPropValueDO = prodPropValueService.getById(id);
ProdPropDO prodPropDO =prodPropMapper.selectById(prodPropValueDO.getPropId());
prodPropValueService.deleteProdPropValue(id); prodPropValueService.deleteProdPropValue(id);
List<SkuDO> skuDOList = skuMapper.getSkuListByName(prodPropValueDO.getPropValue()); List<SkuDO> skuDOList = skuMapper.getSkuListByName(prodPropDO.getProdId(),prodPropValueDO.getPropValue());
List<Long> skuids = new ArrayList<>(); List<Long> skuids = new ArrayList<>();
for (SkuDO skuDO : skuDOList) { for (SkuDO skuDO : skuDOList) {
if (skuDO.getProperties() != null) { if (skuDO.getProperties() != null) {
@@ -436,8 +465,9 @@ public class SkuServiceImpl implements SkuService {
ProdPropValueDO prodPropValueDO = prodPropValueService.getById(id); ProdPropValueDO prodPropValueDO = prodPropValueService.getById(id);
prodPropValueDO.setState(state); prodPropValueDO.setState(state);
prodPropValueService.updateById(prodPropValueDO); prodPropValueService.updateById(prodPropValueDO);
ProdPropDO prodPropDO =prodPropMapper.selectById(prodPropValueDO.getPropId());
if (Objects.equals(BaseEnum.NO_ZERO.getKey(), state)) { if (Objects.equals(BaseEnum.NO_ZERO.getKey(), state)) {
List<SkuDO> skuDOList = skuMapper.getSkuListByName(prodPropValueDO.getPropValue()); List<SkuDO> skuDOList = skuMapper.getSkuListByName(prodPropDO.getProdId(),prodPropValueDO.getPropValue());
List<SkuDO> skuDOList1 = new ArrayList<>(); List<SkuDO> skuDOList1 = new ArrayList<>();
for (SkuDO skuDO : skuDOList) { for (SkuDO skuDO : skuDOList) {
if (skuDO.getProperties() != null) { if (skuDO.getProperties() != null) {
@@ -775,12 +805,13 @@ public class SkuServiceImpl implements SkuService {
@Override @Override
public void restorePropList(List<Long> ids) { public void restorePropList(List<Long> ids) {
prodPropValueMapper.restorePropValue(ids);
List<ProdPropValueDO> prodPropValueDOList = prodPropValueMapper.getskuListByPropValueIds(ids); List<ProdPropValueDO> prodPropValueDOList = prodPropValueMapper.getskuListByPropValueIds(ids);
for (ProdPropValueDO prodPropValueDO : prodPropValueDOList) { for (ProdPropValueDO prodPropValueDO : prodPropValueDOList) {
prodPropValueDO.setState(BaseEnum.YES_ONE.getKey()); int maxPropValue =prodPropValueMapper.getMaxPropValue(prodPropValueDO.getPropId());
prodPropValueDO.setSort(maxPropValue+1);
prodPropValueService.updateById(prodPropValueDO); prodPropValueService.updateById(prodPropValueDO);
} }
} }

View File

@@ -47,6 +47,11 @@
</select> </select>
<select id="getMaxPropValue" resultType="int">
SELECT max(sort) FROM `tz_prod_prop_value` WHERE prop_id = #{propId} AND deleted = 0
</select>
<update id="batchMarkDeleted"> <update id="batchMarkDeleted">
@@ -103,4 +108,14 @@
</foreach> </foreach>
</select> </select>
<update id="restorePropValue">
UPDATE tz_prod_prop_value
SET is_expire = 1, deleted = 0
WHERE id IN
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper> </mapper>

View File

@@ -10,7 +10,7 @@
--> -->
<select id="getSkuRecycleBinPageList" resultType="com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO" > <select id="getSkuRecycleBinPageList" resultType="com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO" >
select sku_id, properties,sku_name, delete_time from tz_sku where prod_id = #{prodId} and deleted = 1 select * from tz_sku where prod_id = #{prodId} and deleted = 1
<if test="properties != null and properties != ''"> <if test="properties != null and properties != ''">
and properties like concat('%', #{properties}, '%') and properties like concat('%', #{properties}, '%')
</if> </if>
@@ -32,7 +32,7 @@
<select id="getSkuListByName" resultType="com.tashow.cloud.productapi.api.product.dto.SkuDO" > <select id="getSkuListByName" resultType="com.tashow.cloud.productapi.api.product.dto.SkuDO" >
select sku_id, properties, delete_time,deleted from tz_sku where deleted = 0 select sku_id, properties, delete_time,deleted from tz_sku where deleted = 0 and prod_id = #{prodId}
<if test="propertiesName != null and propertiesName != ''"> <if test="propertiesName != null and propertiesName != ''">
and properties like concat('%', #{propertiesName}, '%') and properties like concat('%', #{propertiesName}, '%')
</if> </if>