获得SKU回收站分页列表
This commit is contained in:
@@ -3,6 +3,7 @@ package com.tashow.cloud.common.util.date;
|
|||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
|
||||||
import java.time.*;
|
import java.time.*;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@@ -27,6 +28,9 @@ public class DateUtils {
|
|||||||
|
|
||||||
public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
|
public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
|
|
||||||
|
// 默认数据保留天数
|
||||||
|
private static final long RETENTION_DAYS = 90;
|
||||||
/**
|
/**
|
||||||
* 将 LocalDateTime 转换成 Date
|
* 将 LocalDateTime 转换成 Date
|
||||||
*
|
*
|
||||||
@@ -146,4 +150,36 @@ public class DateUtils {
|
|||||||
return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now().minusDays(1));
|
return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now().minusDays(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据删除时间,计算还剩多少天被彻底删除(默认保留 90 天)
|
||||||
|
*
|
||||||
|
* @param deleteTime 删除时间
|
||||||
|
* @return 剩余天数(>=0),0 表示已过期
|
||||||
|
*/
|
||||||
|
public static long getRemainingDays(Date deleteTime) {
|
||||||
|
if (deleteTime == null) {
|
||||||
|
throw new IllegalArgumentException("删除时间不能为 null");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将 Date 转换为 LocalDateTime
|
||||||
|
LocalDateTime deleteDateTime = deleteTime.toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime();
|
||||||
|
|
||||||
|
// 当前时间
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
|
||||||
|
// 到期时间 = 删除时间 + 保留天数
|
||||||
|
LocalDateTime expireTime = deleteDateTime.plusDays(RETENTION_DAYS);
|
||||||
|
|
||||||
|
// 如果当前时间已经超过到期时间,剩余天数为 0
|
||||||
|
if (now.isAfter(expireTime)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算剩余天数(向下取整,不进位)
|
||||||
|
return ChronoUnit.DAYS.between(now, expireTime);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.tashow.cloud.product.service.ProdExtendService;
|
|||||||
import com.tashow.cloud.product.service.ProdPropService;
|
import com.tashow.cloud.product.service.ProdPropService;
|
||||||
import com.tashow.cloud.product.service.ProdPropValueService;
|
import com.tashow.cloud.product.service.ProdPropValueService;
|
||||||
import com.tashow.cloud.product.service.SkuService;
|
import com.tashow.cloud.product.service.SkuService;
|
||||||
|
import com.tashow.cloud.product.vo.prod.ProdPageReqVO;
|
||||||
import com.tashow.cloud.product.vo.prod.ProdServiceVO;
|
import com.tashow.cloud.product.vo.prod.ProdServiceVO;
|
||||||
import com.tashow.cloud.product.vo.prodprop.ProdPropRespVO;
|
import com.tashow.cloud.product.vo.prodprop.ProdPropRespVO;
|
||||||
import com.tashow.cloud.product.vo.sku.*;
|
import com.tashow.cloud.product.vo.sku.*;
|
||||||
@@ -150,6 +151,13 @@ public class SkuController {
|
|||||||
return success(BeanUtils.toBean(sku, SkuRespVO.class));
|
return success(BeanUtils.toBean(sku, SkuRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PermitAll
|
||||||
|
@GetMapping("/getSkuRecycleBinPageList")
|
||||||
|
@Operation(summary = "获得SKU回收站分页列表")
|
||||||
|
public CommonResult<PageResult<SkuRecycleBinVO>> getSkuRecycleBinPageList(@Valid SkuPageReqVO pageReqVO) {
|
||||||
|
PageResult<SkuRecycleBinVO> pageResult = skuService.getSkuRecycleBinPageList(pageReqVO);
|
||||||
|
return success(pageResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/createSkuExtend")
|
@PostMapping("/createSkuExtend")
|
||||||
|
|||||||
@@ -163,5 +163,8 @@ public class SkuDO extends BaseDO {
|
|||||||
@TableField(exist=false)
|
@TableField(exist=false)
|
||||||
private Integer isExist;
|
private Integer isExist;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime delete_time;
|
||||||
}
|
}
|
||||||
@@ -2,11 +2,18 @@ package com.tashow.cloud.product.mapper;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.tashow.cloud.common.pojo.PageResult;
|
import com.tashow.cloud.common.pojo.PageResult;
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX;
|
import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX;
|
import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.tashow.cloud.product.dto.ProdDO;
|
||||||
import com.tashow.cloud.product.dto.SkuDO;
|
import com.tashow.cloud.product.dto.SkuDO;
|
||||||
|
import com.tashow.cloud.product.vo.prod.ProdPageReqVO;
|
||||||
|
import com.tashow.cloud.product.vo.sku.SkuRecycleBinVO;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单品SKU Mapper
|
* 单品SKU Mapper
|
||||||
@@ -16,5 +23,5 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface SkuMapper extends BaseMapperX<SkuDO> {
|
public interface SkuMapper extends BaseMapperX<SkuDO> {
|
||||||
|
|
||||||
|
IPage<SkuRecycleBinVO> getSkuRecycleBinPageList(Page<?> page, @Param("prodId") Long prodId, @Param("properties")String properties);
|
||||||
}
|
}
|
||||||
@@ -74,6 +74,10 @@ public interface SkuService {
|
|||||||
*/
|
*/
|
||||||
SkuDO getSku(Long id);
|
SkuDO getSku(Long id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PageResult<SkuRecycleBinVO> getSkuRecycleBinPageList(SkuPageReqVO pageReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得单品SKU分页
|
* 获得单品SKU分页
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -3,12 +3,16 @@ package com.tashow.cloud.product.service.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.tashow.cloud.common.util.date.DateUtils;
|
||||||
|
import com.tashow.cloud.mybatis.mybatis.core.util.MyBatisUtils;
|
||||||
import com.tashow.cloud.product.dto.*;
|
import com.tashow.cloud.product.dto.*;
|
||||||
import com.tashow.cloud.product.mapper.*;
|
import com.tashow.cloud.product.mapper.*;
|
||||||
import com.tashow.cloud.product.service.ProdExtendService;
|
import com.tashow.cloud.product.service.ProdExtendService;
|
||||||
import com.tashow.cloud.product.service.ProdPropService;
|
import com.tashow.cloud.product.service.ProdPropService;
|
||||||
import com.tashow.cloud.product.service.ProdPropValueService;
|
import com.tashow.cloud.product.service.ProdPropValueService;
|
||||||
import com.tashow.cloud.product.service.SkuService;
|
import com.tashow.cloud.product.service.SkuService;
|
||||||
|
import com.tashow.cloud.product.vo.prod.ProdPageReqVO;
|
||||||
import com.tashow.cloud.product.vo.sku.*;
|
import com.tashow.cloud.product.vo.sku.*;
|
||||||
import com.tashow.cloud.productapi.enums.BaseEnum;
|
import com.tashow.cloud.productapi.enums.BaseEnum;
|
||||||
import com.tashow.cloud.productapi.enums.ErrorCodeConstants;
|
import com.tashow.cloud.productapi.enums.ErrorCodeConstants;
|
||||||
@@ -457,6 +461,16 @@ public class SkuServiceImpl implements SkuService {
|
|||||||
return skuMapper.selectById(id);
|
return skuMapper.selectById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SkuRecycleBinVO> getSkuRecycleBinPageList(SkuPageReqVO pageReqVO){
|
||||||
|
IPage<SkuRecycleBinVO> prodPageList = skuMapper.getSkuRecycleBinPageList(MyBatisUtils.buildPage(pageReqVO), pageReqVO.getProdId(), pageReqVO.getProperties());
|
||||||
|
for(SkuRecycleBinVO prodPage : prodPageList.getRecords()){
|
||||||
|
prodPage.setRemainingDays(DateUtils.getRemainingDays(prodPage.getDeleteTime()));
|
||||||
|
}
|
||||||
|
return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<SkuDO> getSkuPage(SkuPageReqVO pageReqVO) {
|
public PageResult<SkuDO> getSkuPage(SkuPageReqVO pageReqVO) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -19,103 +19,7 @@ public class SkuPageReqVO extends PageParam {
|
|||||||
@Schema(description = "商品ID", example = "18784")
|
@Schema(description = "商品ID", example = "18784")
|
||||||
private Long prodId;
|
private Long prodId;
|
||||||
|
|
||||||
@Schema(description = "销售属性组合字符串 格式是p1:v1;p2:v2")
|
@Schema(description = "销售属性组合字符串")
|
||||||
private String properties;
|
private String properties;
|
||||||
|
|
||||||
@Schema(description = "别名")
|
|
||||||
private String alias;
|
|
||||||
|
|
||||||
@Schema(description = "当前价格", example = "32405")
|
|
||||||
private BigDecimal price;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 基准价
|
|
||||||
*/
|
|
||||||
private BigDecimal basePrice;
|
|
||||||
|
|
||||||
@Schema(description = "最低价格", example = "5040")
|
|
||||||
private BigDecimal minPrice;
|
|
||||||
|
|
||||||
@Schema(description = "最高价格", example = "11547")
|
|
||||||
private BigDecimal maxPrice;
|
|
||||||
|
|
||||||
@Schema(description = "成本价", example = "28062")
|
|
||||||
private BigDecimal originalPrice;
|
|
||||||
|
|
||||||
@Schema(description = "市场价", example = "11547")
|
|
||||||
private BigDecimal marketPrice;
|
|
||||||
|
|
||||||
@Schema(description = "单位")
|
|
||||||
private String unit;
|
|
||||||
|
|
||||||
@Schema(description = "0:主服务1:待定", example = "1")
|
|
||||||
private Integer type;
|
|
||||||
|
|
||||||
@Schema(description = "概述")
|
|
||||||
private String overview;
|
|
||||||
|
|
||||||
@Schema(description = "库存")
|
|
||||||
private Integer stocks;
|
|
||||||
|
|
||||||
@Schema(description = "预警库存")
|
|
||||||
private Integer warnStocks;
|
|
||||||
|
|
||||||
@Schema(description = "库存扣款时机0:付款扣1:下单扣", example = "1")
|
|
||||||
private Boolean stocksType;
|
|
||||||
|
|
||||||
@Schema(description = "sku编码")
|
|
||||||
private String skuCode;
|
|
||||||
|
|
||||||
@Schema(description = "商品条形码", example = "14390")
|
|
||||||
private String modelId;
|
|
||||||
|
|
||||||
@Schema(description = "sku图片")
|
|
||||||
private String pic;
|
|
||||||
|
|
||||||
@Schema(description = "sku名称", example = "张三")
|
|
||||||
private String skuName;
|
|
||||||
|
|
||||||
@Schema(description = "商品名称", example = "芋艿")
|
|
||||||
private String prodName;
|
|
||||||
|
|
||||||
@Schema(description = "版本号")
|
|
||||||
private Integer version;
|
|
||||||
|
|
||||||
@Schema(description = "商品重量")
|
|
||||||
private Double weight;
|
|
||||||
|
|
||||||
@Schema(description = "商品体积")
|
|
||||||
private Double volume;
|
|
||||||
|
|
||||||
@Schema(description = "0 禁用 1 启用", example = "1")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
@Schema(description = "0 正常 1 已被删除")
|
|
||||||
private Integer isDelete;
|
|
||||||
|
|
||||||
@Schema(description = "最小购买数量")
|
|
||||||
private Integer moq;
|
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
|
||||||
private LocalDateTime[] createTime;
|
|
||||||
/**
|
|
||||||
* 是否上下架0下架1上架
|
|
||||||
*/
|
|
||||||
private Integer isShelf;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否默认规则0否1是
|
|
||||||
*/
|
|
||||||
private Integer isSpecs;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 服务内容
|
|
||||||
*/
|
|
||||||
private String serviceContent;
|
|
||||||
/**
|
|
||||||
* 规格id 多个用逗号分隔(1,2,3)
|
|
||||||
*/
|
|
||||||
private String propIds;
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.tashow.cloud.product.vo.sku;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.tashow.cloud.product.dto.ProdPropDO;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SkuRecycleBinVO {
|
||||||
|
@Schema(description = "单品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32230")
|
||||||
|
private Long skuId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否显示失效规格值 0否1是
|
||||||
|
*/
|
||||||
|
private String properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 还剩多少天
|
||||||
|
*/
|
||||||
|
private Long remainingDays;
|
||||||
|
/**
|
||||||
|
* 删除时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date deleteTime;
|
||||||
|
}
|
||||||
@@ -9,4 +9,10 @@
|
|||||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<select id="getSkuRecycleBinPageList" resultType="com.tashow.cloud.product.vo.sku.SkuRecycleBinVO" >
|
||||||
|
select sku_id, properties, delete_time from tz_sku where prod_id = #{prodId} and deleted = 1
|
||||||
|
<if test="properties != null and properties != ''">
|
||||||
|
and properties like concat('%', #{properties}, '%')
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user