获取服务配置

This commit is contained in:
xuelijun
2025-08-15 18:27:57 +08:00
parent 7afa85b941
commit ce643990d8
26 changed files with 462 additions and 196 deletions

View File

@@ -2,12 +2,14 @@ package com.tashow.cloud.productapi.api.product.dto;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
import com.tashow.cloud.productapi.general.StringListTypeHandler;
import lombok.*; import lombok.*;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 特殊日期附加费用规则 DO * 特殊日期附加费用规则 DO
@@ -42,13 +44,15 @@ public class ProdAdditionalFeeDatesDO extends BaseDO {
*/ */
private Integer dateType; private Integer dateType;
/** /**
* 自定义日期时间段JSON格式存储 * 自定义日期时间段
*/ */
private String customTimeSlots; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> customTimeSlots;
/** /**
* 指定日期JSON格式存储 * 指定日期
*/ */
private String specificDates; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> specificDates;
/** /**
* 收费方式0''固定金额'':1''基准价上浮 * 收费方式0''固定金额'':1''基准价上浮
*/ */

View File

@@ -1,9 +1,12 @@
package com.tashow.cloud.productapi.api.product.dto; package com.tashow.cloud.productapi.api.product.dto;
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
import com.tashow.cloud.productapi.general.StringListTypeHandler;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
@@ -37,9 +40,10 @@ public class ProdAdditionalFeePeriodsDO extends BaseDO {
*/ */
private String name; private String name;
/** /**
* 特殊时段设置JSON格式存储 * 特殊时段设置
*/ */
private String specialTimeSlots; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> specialTimeSlots;
/** /**
* 收费方式0:'固定金额',1:'基准价上浮' * 收费方式0:'固定金额',1:'基准价上浮'
*/ */

View File

@@ -1,11 +1,15 @@
package com.tashow.cloud.productapi.api.product.dto; package com.tashow.cloud.productapi.api.product.dto;
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
import com.tashow.cloud.productapi.general.StringListTypeHandler;
import lombok.*; import lombok.*;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.util.List;
/** /**
* 商品紧急响应服务设置 DO * 商品紧急响应服务设置 DO
* *
@@ -31,17 +35,20 @@ public class ProdEmergencyResponseDO extends BaseDO {
*/ */
private Long prodId; private Long prodId;
/** /**
* 可响应时间段JSON格式存储 * 可响应时间段
*/ */
private String responseTimeSlots; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> responseTimeSlots;
/** /**
* 黑名自定义日期JSON格式存储 * 黑名自定义日期
*/ */
private String blacklistedDates; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> blacklistedDates;
/** /**
* 黑名单指定日期JSON格式存储 * 黑名单指定日期
*/ */
private String blackAppointDates; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> blackAppointDates;
/** /**
* 法定节假日是否开启0:关闭1开启 * 法定节假日是否开启0:关闭1开启
*/ */

View File

@@ -32,6 +32,11 @@ public class ProdEmergencyResponseIntervalsDO extends BaseDO {
* 关联的紧急响应服务配置ID * 关联的紧急响应服务配置ID
*/ */
private Long configId; private Long configId;
/**
* 商品ID
*/
private Long prodId;
/** /**
* 响应模式名称 * 响应模式名称
*/ */
@@ -39,7 +44,7 @@ public class ProdEmergencyResponseIntervalsDO extends BaseDO {
/** /**
* 响应时间(小时) * 响应时间(小时)
*/ */
private Integer responseHours; private BigDecimal responseHours;
/** /**
* 收费模式0固定收费 1浮动收费 * 收费模式0固定收费 1浮动收费
*/ */

View File

@@ -1,11 +1,16 @@
package com.tashow.cloud.productapi.api.product.dto; package com.tashow.cloud.productapi.api.product.dto;
import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO;
import com.tashow.cloud.productapi.api.product.vo.prodreservationconfig.TimeBookVO;
import com.tashow.cloud.productapi.general.StringListTypeHandler;
import lombok.*; import lombok.*;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.util.List;
/** /**
* 商品预约配置 DO * 商品预约配置 DO
* *
@@ -31,9 +36,10 @@ public class ProdReservationConfigDO extends BaseDO {
*/ */
private Long prodId; private Long prodId;
/** /**
* 预约时段设置JSON格式存储 * 预约时段设置
*/ */
private String reservationTimeSlots; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> reservationTimeSlots;
/** /**
* 需提前多少小时预约 * 需提前多少小时预约
*/ */
@@ -46,6 +52,12 @@ public class ProdReservationConfigDO extends BaseDO {
* 是否允许更改预约时间 1可以 0不可以 * 是否允许更改预约时间 1可以 0不可以
*/ */
private Integer allowChange; private Integer allowChange;
/**
* 时间段
*/
private Integer timeSlot;
/** /**
* 更改预约时间的时间规则如服务开始前1小时可更改 * 更改预约时间的时间规则如服务开始前1小时可更改
*/ */
@@ -55,9 +67,10 @@ public class ProdReservationConfigDO extends BaseDO {
*/ */
private Integer maxChangeTimes; private Integer maxChangeTimes;
/** /**
* 黑名自定义日期JSON格式存储 * 黑名自定义日期
*/ */
private String blacklistedDates; @TableField(typeHandler = StringListTypeHandler.class)
private List<String> blacklistedDates;
/** /**
* '是否开启黑名单自定义0关1开' * '是否开启黑名单自定义0关1开'
@@ -70,9 +83,11 @@ public class ProdReservationConfigDO extends BaseDO {
private Integer isBlackAppoint; private Integer isBlackAppoint;
/** /**
* 黑名单指定日期JSON格式存储 * 黑名单指定日期
*/ */
private String blackAppointDates; //private String blackAppointDates;
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> blackAppointDates;
/** /**
* 法定节假日是否开启0:关闭1开启 * 法定节假日是否开启0:关闭1开启
*/ */
@@ -82,4 +97,22 @@ public class ProdReservationConfigDO extends BaseDO {
*/ */
private Integer blackWeekend; private Integer blackWeekend;
/**
* 预约时间区间设置
*/
@TableField(exist=false)
private TimeBookVO timeBook;
public TimeBookVO getTimeBook() {
if (this.timeBook == null) {
this.timeBook = new TimeBookVO();
this.timeBook.setTimeSlot(this.timeSlot);
this.timeBook.setReservationTimeSlots(this.reservationTimeSlots);
}
return this.timeBook;
}
public void setTimeBook(TimeBookVO timeBook) {
this.timeBook = timeBook;
}
} }

View File

@@ -41,7 +41,7 @@ public class ProdWeightRangePricesDO extends BaseDO {
*/ */
private BigDecimal price; private BigDecimal price;
/** /**
* 是否启用该规则0否1是 * 是否收费0否1是
*/ */
private Integer isEnabled; private Integer isEnabled;

View File

@@ -10,6 +10,7 @@ import com.tashow.cloud.productapi.general.StringListTypeHandler;
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.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -41,22 +42,53 @@ public class ProdListVO {
*/ */
private String shopName; private String shopName;
/**
* 默认是1正常状态出售中, 0下架仓库中 2待审核
*/
private Integer status;
@Schema(description = "") /**
* 是否置灰0否1是
*/
private Integer isProhibit;
/** /**
* 服务区域地址名称集合 * 服务区域地址名称集合
*/ */
private List<String> areaNameList; private List<String> areaNameList;
/**
* 紧急服务最快响应时间(小时)
*/
private BigDecimal responseHours;
/**
* 服务时段
*/
private BigDecimal reservationTimeSlots;
/** /**
* 还剩多少天 * 还剩多少天
*/ */
private Long remainingDays; private Long remainingDays;
/**
* 审核备注
*/
private String processNotes;
/** /**
* 删除时间 * 删除时间
*/ */
@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;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
} }

View File

@@ -0,0 +1,71 @@
package com.tashow.cloud.productapi.api.product.vo.prod;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Schema(description = "商品服务配置 VO")
@Data
public class ProdRestoreListVO {
/**
* 产品ID
*/
@TableId
private Long prodId;
/**
* 商品名称
*/
private String prodName;
/**
* 分类名称
*/
private String categoryName;
/**
* 店铺id
*/
private Long shopId;
/**
* 店铺id
*/
private String shopName;
/**
* 服务区域地址名称集合
*/
private List<String> areaNameList;
/**
* 紧急服务最快响应时间(小时)
*/
private BigDecimal responseHours;
/**
* 服务时段
*/
private BigDecimal reservationTimeSlots;
/**
* 还剩多少天
*/
private Long remainingDays;
/**
* 删除时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date deleteTime;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}

View File

@@ -1,11 +1,13 @@
package com.tashow.cloud.productapi.api.product.vo.prod; package com.tashow.cloud.productapi.api.product.vo.prod;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse.ProdEmergencyInfoVO; 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.api.product.vo.prodserviceareas.ProdServiceAreasInfoVO;
import com.tashow.cloud.productapi.api.product.dto.*; import com.tashow.cloud.productapi.api.product.dto.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List; import java.util.List;
@Schema(description = "商品服务配置 VO") @Schema(description = "商品服务配置 VO")
@@ -15,6 +17,22 @@ public class ProdServiceVO {
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943") @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943")
private Long prodId; private Long prodId;
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@Schema(description = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
@Schema(description = "新建人")
private String creator;
@Schema(description = "修改人")
private String updater;
@Schema(description = "分类名称")
private String categoryName;
@Schema(description = "是否开启服务区域配置0关1开") @Schema(description = "是否开启服务区域配置0关1开")
private Integer regionSwitch; private Integer regionSwitch;

View File

@@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 特殊时段附加费用规则 Response VO") @Schema(description = "管理后台 - 特殊时段附加费用规则 Response VO")
@Data @Data
@@ -26,7 +27,7 @@ public class ProdAdditionalFeePeriodsRespVO {
@Schema(description = "特殊时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "特殊时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("特殊时段设置JSON格式存储") @ExcelProperty("特殊时段设置JSON格式存储")
private String specialTimeSlots; private List<String> specialTimeSlots;
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收费方式0:'固定金额',1:'基准价上浮'") @ExcelProperty("收费方式0:'固定金额',1:'基准价上浮'")

View File

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 特殊时段附加费用规则新增/修改 Request VO") @Schema(description = "管理后台 - 特殊时段附加费用规则新增/修改 Request VO")
@Data @Data
@@ -24,7 +25,7 @@ public class ProdAdditionalFeePeriodsSaveReqVO {
@Schema(description = "特殊时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "特殊时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "特殊时段设置JSON格式存储不能为空") @NotEmpty(message = "特殊时段设置JSON格式存储不能为空")
private String specialTimeSlots; private List<String> specialTimeSlots;
@Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "收费方式0:'固定金额',1:'基准价上浮'", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "收费方式0:'固定金额',1:'基准价上浮'不能为空") @NotNull(message = "收费方式0:'固定金额',1:'基准价上浮'不能为空")

View File

@@ -22,17 +22,17 @@ public class ProdEmergencyInfoVO {
*/ */
private Long prodId; private Long prodId;
/** /**
* 可响应时间段JSON格式存储 * 可响应时间段
*/ */
private String responseTimeSlots; private List<String> responseTimeSlots;
/** /**
* 黑名自定义日期JSON格式存储 * 黑名自定义日期
*/ */
private String blacklistedDates; private List<String> blacklistedDates;
/** /**
* 黑名单指定日期JSON格式存储 * 黑名单指定日期
*/ */
private String blackAppointDates; private List<String> blackAppointDates;
/** /**
* 法定节假日是否开启0:关闭1开启 * 法定节假日是否开启0:关闭1开启
*/ */

View File

@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 商品紧急响应服务设置分页 Request VO") @Schema(description = "管理后台 - 商品紧急响应服务设置分页 Request VO")
@Data @Data
@@ -17,14 +18,14 @@ public class ProdEmergencyResponsePageReqVO extends PageParam {
@Schema(description = "关联的商品ID", example = "29152") @Schema(description = "关联的商品ID", example = "29152")
private Long prodId; private Long prodId;
@Schema(description = "可响应时间段JSON格式存储") @Schema(description = "可响应时间段")
private String responseTimeSlots; private List<String> responseTimeSlots;
@Schema(description = "黑名自定义日期JSON格式存储") @Schema(description = "黑名自定义日期")
private String blacklistedDates; private List<String> blacklistedDates;
@Schema(description = "黑名单指定日期JSON格式存储") @Schema(description = "黑名单指定日期")
private String blackAppointDates; private List<String> blackAppointDates;
@Schema(description = "法定节假日是否开启0:关闭1开启") @Schema(description = "法定节假日是否开启0:关闭1开启")
private Integer blackHappy; private Integer blackHappy;

View File

@@ -1,10 +1,13 @@
package com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse; package com.tashow.cloud.productapi.api.product.vo.prodemergencyresponse;
import com.baomidou.mybatisplus.annotation.TableField;
import com.tashow.cloud.productapi.general.StringListTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 商品紧急响应服务设置新增/修改 Request VO") @Schema(description = "管理后台 - 商品紧急响应服务设置新增/修改 Request VO")
@Data @Data
@@ -17,14 +20,14 @@ public class ProdEmergencyResponseSaveReqVO {
@NotNull(message = "关联的商品ID不能为空") @NotNull(message = "关联的商品ID不能为空")
private Long prodId; private Long prodId;
@Schema(description = "可响应时间段JSON格式存储") @Schema(description = "可响应时间段")
private String responseTimeSlots; private List<String> responseTimeSlots;
@Schema(description = "黑名自定义日期JSON格式存储") @Schema(description = "黑名自定义日期")
private String blacklistedDates; private List<String>blacklistedDates;
@Schema(description = "黑名单指定日期JSON格式存储") @Schema(description = "黑名单指定日期")
private String blackAppointDates; private List<String> blackAppointDates;
@Schema(description = "法定节假日是否开启0:关闭1开启") @Schema(description = "法定节假日是否开启0:关闭1开启")
private Integer blackHappy; private Integer blackHappy;

View File

@@ -22,7 +22,7 @@ public class ProdEmergencyResponseIntervalsPageReqVO extends PageParam {
private String modeName; private String modeName;
@Schema(description = "响应时间(小时)") @Schema(description = "响应时间(小时)")
private Integer responseHours; private BigDecimal responseHours;
@Schema(description = "收费模式0固定收费 1浮动收费") @Schema(description = "收费模式0固定收费 1浮动收费")
private Integer chargeMode; private Integer chargeMode;

View File

@@ -27,7 +27,7 @@ public class ProdEmergencyResponseIntervalsRespVO {
@Schema(description = "响应时间(小时)", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "响应时间(小时)", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("响应时间(小时)") @ExcelProperty("响应时间(小时)")
private Integer responseHours; private BigDecimal responseHours;
@Schema(description = "收费模式0固定收费 1浮动收费", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "收费模式0固定收费 1浮动收费", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收费模式0固定收费 1浮动收费") @ExcelProperty("收费模式0固定收费 1浮动收费")

View File

@@ -25,7 +25,7 @@ public class ProdEmergencyResponseIntervalsSaveReqVO {
@Schema(description = "响应时间(小时)", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "响应时间(小时)", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "响应时间(小时)不能为空") @NotNull(message = "响应时间(小时)不能为空")
private Integer responseHours; private BigDecimal responseHours;
@Schema(description = "收费模式0固定收费 1浮动收费", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "收费模式0固定收费 1浮动收费", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "收费模式0固定收费 1浮动收费不能为空") @NotNull(message = "收费模式0固定收费 1浮动收费不能为空")

View File

@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 商品预约配置分页 Request VO") @Schema(description = "管理后台 - 商品预约配置分页 Request VO")
@Data @Data
@@ -17,8 +18,8 @@ public class ProdReservationConfigPageReqVO extends PageParam {
@Schema(description = "关联的商品ID", example = "19369") @Schema(description = "关联的商品ID", example = "19369")
private Long prodId; private Long prodId;
@Schema(description = "预约时段设置JSON格式存储") @Schema(description = "预约时段设置")
private String reservationTimeSlots; private List<String> reservationTimeSlots;
@Schema(description = "需提前多少小时预约") @Schema(description = "需提前多少小时预约")
private Integer advanceHours; private Integer advanceHours;
@@ -35,8 +36,8 @@ public class ProdReservationConfigPageReqVO extends PageParam {
@Schema(description = "允许更改预约时间的最大次数") @Schema(description = "允许更改预约时间的最大次数")
private Integer maxChangeTimes; private Integer maxChangeTimes;
@Schema(description = "黑名自定义日期JSON格式存储") @Schema(description = "黑名自定义日期")
private String blacklistedDates; private List<String> blacklistedDates;
/** /**
* '是否开启黑名单自定义0关1开' * '是否开启黑名单自定义0关1开'
@@ -48,8 +49,8 @@ public class ProdReservationConfigPageReqVO extends PageParam {
*/ */
private Integer isBlackAppoint; private Integer isBlackAppoint;
@Schema(description = "黑名单指定日期JSON格式存储") @Schema(description = "黑名单指定日期")
private String blackAppointDates; private List<String> blackAppointDates;
@Schema(description = "法定节假日是否开启0:关闭1开启") @Schema(description = "法定节假日是否开启0:关闭1开启")
private Boolean blackHappy; private Boolean blackHappy;

View File

@@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 商品预约配置 Response VO") @Schema(description = "管理后台 - 商品预约配置 Response VO")
@Data @Data
@@ -20,9 +21,9 @@ public class ProdReservationConfigRespVO {
@ExcelProperty("关联的商品ID") @ExcelProperty("关联的商品ID")
private Long prodId; private Long prodId;
@Schema(description = "预约时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "预约时段设置", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("预约时段设置JSON格式存储") @ExcelProperty("预约时段设置")
private String reservationTimeSlots; private List<String> reservationTimeSlots;
@Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("需提前多少小时预约") @ExcelProperty("需提前多少小时预约")
@@ -44,9 +45,9 @@ public class ProdReservationConfigRespVO {
@ExcelProperty("允许更改预约时间的最大次数") @ExcelProperty("允许更改预约时间的最大次数")
private Integer maxChangeTimes; private Integer maxChangeTimes;
@Schema(description = "黑名自定义日期JSON格式存储") @Schema(description = "黑名自定义日期")
@ExcelProperty("黑名自定义日期JSON格式存储") @ExcelProperty("黑名自定义日期")
private String blacklistedDates; private List<String> blacklistedDates;
/** /**
* '是否开启黑名单自定义0关1开' * '是否开启黑名单自定义0关1开'
@@ -58,9 +59,9 @@ public class ProdReservationConfigRespVO {
*/ */
private Integer isBlackAppoint; private Integer isBlackAppoint;
@Schema(description = "黑名单指定日期JSON格式存储") @Schema(description = "黑名单指定日期")
@ExcelProperty("黑名单指定日期JSON格式存储") @ExcelProperty("黑名单指定日期")
private String blackAppointDates; private List<String> blackAppointDates;
@Schema(description = "法定节假日是否开启0:关闭1开启") @Schema(description = "法定节假日是否开启0:关闭1开启")
@ExcelProperty("法定节假日是否开启0:关闭1开启") @ExcelProperty("法定节假日是否开启0:关闭1开启")

View File

@@ -6,6 +6,7 @@ import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 商品预约配置新增/修改 Request VO") @Schema(description = "管理后台 - 商品预约配置新增/修改 Request VO")
@Data @Data
@@ -18,9 +19,9 @@ public class ProdReservationConfigSaveReqVO {
@NotNull(message = "关联的商品ID不能为空") @NotNull(message = "关联的商品ID不能为空")
private Long prodId; private Long prodId;
@Schema(description = "预约时段设置JSON格式存储", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "预约时段设置", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "预约时段设置JSON格式存储不能为空") @NotEmpty(message = "预约时段设置不能为空")
private String reservationTimeSlots; private List<String> reservationTimeSlots;
@Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "需提前多少小时预约不能为空") @NotNull(message = "需提前多少小时预约不能为空")
@@ -40,8 +41,8 @@ public class ProdReservationConfigSaveReqVO {
@Schema(description = "允许更改预约时间的最大次数") @Schema(description = "允许更改预约时间的最大次数")
private Integer maxChangeTimes; private Integer maxChangeTimes;
@Schema(description = "黑名自定义日期JSON格式存储") @Schema(description = "黑名自定义日期")
private String blacklistedDates; private List<String> blacklistedDates;
/** /**
* '是否开启黑名单自定义0关1开' * '是否开启黑名单自定义0关1开'
@@ -53,8 +54,8 @@ public class ProdReservationConfigSaveReqVO {
*/ */
private Integer isBlackAppoint; private Integer isBlackAppoint;
@Schema(description = "黑名单指定日期JSON格式存储") @Schema(description = "黑名单指定日期")
private String blackAppointDates; private List<String> blackAppointDates;
@Schema(description = "法定节假日是否开启0:关闭1开启") @Schema(description = "法定节假日是否开启0:关闭1开启")
private Boolean blackHappy; private Boolean blackHappy;

View File

@@ -0,0 +1,23 @@
package com.tashow.cloud.productapi.api.product.vo.prodreservationconfig;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 商品预约配置 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TimeBookVO {
/**
* 预约时段设置
*/
private List<String> reservationTimeSlots;
/**
* 时间段
*/
private Integer timeSlot;
}

View File

@@ -134,16 +134,16 @@ public class ProdController {
@PermitAll @PermitAll
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得商品分页") @Operation(summary = "获得商品分页")
public CommonResult<PageResult<ProdDO>> getProdPage(ProdPageReqVO pageReqVO) { public CommonResult<PageResult<ProdListVO>> getProdPage(ProdPageReqVO pageReqVO) {
PageResult<ProdDO> pageResult = prodService.getProdPage(pageReqVO); PageResult<ProdListVO> pageResult = prodService.getProdPage(pageReqVO);
return success(pageResult); return success(pageResult);
} }
@PermitAll @PermitAll
@GetMapping("/getProdRecycleBinPageList") @GetMapping("/getProdRecycleBinPageList")
@Operation(summary = "获得商品回收站分页列表") @Operation(summary = "获得商品回收站分页列表")
public CommonResult<PageResult<ProdListVO>> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO) { public CommonResult<PageResult<ProdRestoreListVO>> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO) {
PageResult<ProdListVO> pageResult = prodService.getProdRecycleBinPageList(prodRecycleBinVO); PageResult<ProdRestoreListVO> pageResult = prodService.getProdRecycleBinPageList(prodRecycleBinVO);
return success(pageResult); return success(pageResult);
} }

View File

@@ -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.dto.*;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdRestoreListVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO;
import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO; import com.tashow.cloud.productapi.api.product.vo.sku.SkuRecycleBinVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -23,7 +24,7 @@ import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface ProdMapper extends BaseMapperX<ProdDO> { public interface ProdMapper extends BaseMapperX<ProdDO> {
IPage<ProdDO> getProdPageList(Page<?> page,@Param("createTime") String[] createTime IPage<ProdListVO> getProdPageList(Page<?> page,@Param("createTime") String[] createTime
, @Param("prodName") String prodName , @Param("prodName") String prodName
, @Param("shopId") Long shopId , @Param("shopId") Long shopId
, @Param("status") Integer status , @Param("status") Integer status
@@ -48,7 +49,7 @@ public interface ProdMapper extends BaseMapperX<ProdDO> {
, @Param("weightSwitch") Integer weightSwitch , @Param("weightSwitch") Integer weightSwitch
); );
IPage<ProdListVO> getProdRecycleBinPageList(Page<?> page, @Param("createTime") String[] createTime IPage<ProdRestoreListVO> getProdRecycleBinPageList(Page<?> page, @Param("deleteTime") String[] deleteTime
, @Param("prodName") String prodName); , @Param("prodName") String prodName);

View File

@@ -79,9 +79,9 @@ public interface ProdService {
* @param pageReqVO 分页查询 * @param pageReqVO 分页查询
* @return 商品分页 * @return 商品分页
*/ */
PageResult<ProdDO> getProdPage(ProdPageReqVO pageReqVO); PageResult<ProdListVO> getProdPage(ProdPageReqVO pageReqVO);
PageResult<ProdListVO> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO); PageResult<ProdRestoreListVO> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO);
/** /**
* 恢复商品 * 恢复商品

View File

@@ -22,6 +22,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import com.tashow.cloud.common.pojo.PageResult; import com.tashow.cloud.common.pojo.PageResult;
import com.tashow.cloud.common.pojo.PageParam; import com.tashow.cloud.common.pojo.PageParam;
import com.tashow.cloud.common.util.object.BeanUtils; import com.tashow.cloud.common.util.object.BeanUtils;
@@ -76,7 +77,7 @@ public class ProdServiceImpl implements ProdService {
//保存sku //保存sku
if (CollectionUtil.isNotEmpty(createReqVO.getSkuList())) { if (CollectionUtil.isNotEmpty(createReqVO.getSkuList())) {
List<SkuDO> skuList = createReqVO.getSkuList(); List<SkuDO> skuList = createReqVO.getSkuList();
for(SkuDO sku : skuList){ for (SkuDO sku : skuList) {
sku.setProdId(prod.getProdId()); sku.setProdId(prod.getProdId());
} }
skuMapper.insertBatch(skuList); skuMapper.insertBatch(skuList);
@@ -96,23 +97,23 @@ public class ProdServiceImpl implements ProdService {
@Override @Override
@Transactional @Transactional
public void createProdService(ProdServiceVO prodServiceVO) { public void createProdService(ProdServiceVO prodServiceVO) {
ProdDO prodDO = new ProdDO(); ProdDO prodDO = new ProdDO();
prodDO.setProdId(prodServiceVO.getProdId()); prodDO.setProdId(prodServiceVO.getProdId());
//服务区域设置 //服务区域设置
if(Objects.equals(prodServiceVO.getRegionSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getRegionSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setRegionSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setRegionSwitch(BaseEnum.YES_ONE.getKey());
//保存区域设置信息 //保存区域设置信息
ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class); ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class);
prodServiceOverAreaRules.setProdId(prodDO.getProdId()); prodServiceOverAreaRules.setProdId(prodDO.getProdId());
prodServiceOverAreaRulesMapper.insert(prodServiceOverAreaRules); prodServiceOverAreaRulesMapper.insert(prodServiceOverAreaRules);
//保存区域 //保存区域
List<String> areaNameList =prodServiceVO.getProdServiceAreasInfo().getAreaNameList(); List<String> areaNameList = prodServiceVO.getProdServiceAreasInfo().getAreaNameList();
for(String areaName : areaNameList){ for (String areaName : areaNameList) {
//查询区域信息 //查询区域信息
ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>() ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>()
.eq(ProdServiceAreasDO::getAreaName, areaName) .eq(ProdServiceAreasDO::getAreaName, areaName)
); );
if(prodServiceAreas != null){ if (prodServiceAreas != null) {
//插入关联表 //插入关联表
prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO() prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO()
.setProdId(prodDO.getProdId()) .setProdId(prodDO.getProdId())
@@ -122,49 +123,49 @@ public class ProdServiceImpl implements ProdService {
} }
} }
//预约设置设置 //预约设置设置
if(Objects.equals(prodServiceVO.getReservationSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getReservationSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setReservationSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setReservationSwitch(BaseEnum.YES_ONE.getKey());
ProdReservationConfigDO prodReservationConfigDO = prodServiceVO.prodReservationConfig; ProdReservationConfigDO prodReservationConfigDO = prodServiceVO.prodReservationConfig;
prodReservationConfigDO.setProdId(prodDO.getProdId()); prodReservationConfigDO.setProdId(prodDO.getProdId());
prodReservationConfigMapper.insert(prodReservationConfigDO); prodReservationConfigMapper.insert(prodReservationConfigDO);
} }
//紧急响应设置 //紧急响应设置
if(Objects.equals(prodServiceVO.getEmergencySwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getEmergencySwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setEmergencySwitch(BaseEnum.YES_ONE.getKey()); prodDO.setEmergencySwitch(BaseEnum.YES_ONE.getKey());
// 插入 // 插入
ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.prodEmergencyInfoVO, ProdEmergencyResponseDO.class); ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.prodEmergencyInfoVO, ProdEmergencyResponseDO.class);
prodEmergencyResponse.setProdId(prodDO.getProdId()); prodEmergencyResponse.setProdId(prodDO.getProdId());
prodEmergencyResponseMapper.insert(prodEmergencyResponse); prodEmergencyResponseMapper.insert(prodEmergencyResponse);
for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.prodEmergencyInfoVO.getProdEmergencyResponseIntervalsList()){ for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.prodEmergencyInfoVO.getProdEmergencyResponseIntervalsList()) {
prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId()); prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId());
prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals); prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals);
} }
} }
//接单上线设置 //接单上线设置
if(Objects.equals(prodServiceVO.getOrderLimitSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getOrderLimitSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setOrderLimitSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setOrderLimitSwitch(BaseEnum.YES_ONE.getKey());
ProductOrderLimitDO productOrderLimit = prodServiceVO.productOrderLimitVO; ProductOrderLimitDO productOrderLimit = prodServiceVO.productOrderLimitVO;
productOrderLimit.setProdId(prodDO.getProdId()); productOrderLimit.setProdId(prodDO.getProdId());
productOrderLimitMapper.insert(productOrderLimit); productOrderLimitMapper.insert(productOrderLimit);
} }
//特殊时段设置 //特殊时段设置
if(Objects.equals(prodServiceVO.getAdditionalSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getAdditionalSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setAdditionalSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setAdditionalSwitch(BaseEnum.YES_ONE.getKey());
for (ProdAdditionalFeeDatesDO prodAdditionalFeeDates : prodServiceVO.getProdAdditionalFeeDatesList()){ for (ProdAdditionalFeeDatesDO prodAdditionalFeeDates : prodServiceVO.getProdAdditionalFeeDatesList()) {
prodAdditionalFeeDates.setProdId(prodServiceVO.getProdId()); prodAdditionalFeeDates.setProdId(prodServiceVO.getProdId());
prodAdditionalFeeDatesMapper.insert(prodAdditionalFeeDates); prodAdditionalFeeDatesMapper.insert(prodAdditionalFeeDates);
} }
} }
//特殊日期设置 //特殊日期设置
if(Objects.equals(prodServiceVO.getAdditionalFeeSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getAdditionalFeeSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setAdditionalFeeSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setAdditionalFeeSwitch(BaseEnum.YES_ONE.getKey());
for (ProdAdditionalFeePeriodsDO prodAdditionalFeePeriods : prodServiceVO.getProdAdditionalFeePeriodsList()){ for (ProdAdditionalFeePeriodsDO prodAdditionalFeePeriods : prodServiceVO.getProdAdditionalFeePeriodsList()) {
prodAdditionalFeePeriods.setProdId(prodServiceVO.getProdId()); prodAdditionalFeePeriods.setProdId(prodServiceVO.getProdId());
prodAdditionalFeePeriodsMapper.insert(prodAdditionalFeePeriods); prodAdditionalFeePeriodsMapper.insert(prodAdditionalFeePeriods);
} }
} }
//体重设置 //体重设置
if(Objects.equals(prodServiceVO.getWeightSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getWeightSwitch(), BaseEnum.YES_ONE.getKey())) {
prodDO.setWeightSwitch(BaseEnum.YES_ONE.getKey()); prodDO.setWeightSwitch(BaseEnum.YES_ONE.getKey());
ProdWeightRangePricesDO prodWeightRangePrices = prodServiceVO.prodWeightConfig; ProdWeightRangePricesDO prodWeightRangePrices = prodServiceVO.prodWeightConfig;
prodWeightRangePrices.setProdId(prodDO.getProdId()); prodWeightRangePrices.setProdId(prodDO.getProdId());
@@ -179,23 +180,23 @@ public class ProdServiceImpl implements ProdService {
ProdDO prod = BeanUtils.toBean(prodServiceVO, ProdDO.class); ProdDO prod = BeanUtils.toBean(prodServiceVO, ProdDO.class);
//服务区域设置 //服务区域设置
if(Objects.equals(prodServiceVO.getRegionSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getRegionSwitch(), BaseEnum.YES_ONE.getKey())) {
ProdServiceOverAreaRulesDO overAreaRules= prodServiceOverAreaRulesMapper.selectOne(new LambdaQueryWrapper<ProdServiceOverAreaRulesDO>() ProdServiceOverAreaRulesDO overAreaRules = prodServiceOverAreaRulesMapper.selectOne(new LambdaQueryWrapper<ProdServiceOverAreaRulesDO>()
.eq(ProdServiceOverAreaRulesDO::getProdId, prodServiceVO.getProdId())); .eq(ProdServiceOverAreaRulesDO::getProdId, prodServiceVO.getProdId()));
if(overAreaRules==null){ if (overAreaRules == null) {
prod.setRegionSwitch(BaseEnum.YES_ONE.getKey()); prod.setRegionSwitch(BaseEnum.YES_ONE.getKey());
//保存区域设置信息 //保存区域设置信息
ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class); ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class);
prodServiceOverAreaRules.setProdId(prod.getProdId()); prodServiceOverAreaRules.setProdId(prod.getProdId());
prodServiceOverAreaRulesMapper.insert(prodServiceOverAreaRules); prodServiceOverAreaRulesMapper.insert(prodServiceOverAreaRules);
//保存区域 //保存区域
List<String> areaNameList =prodServiceVO.getProdServiceAreasInfo().getAreaNameList(); List<String> areaNameList = prodServiceVO.getProdServiceAreasInfo().getAreaNameList();
for(String areaName : areaNameList){ for (String areaName : areaNameList) {
//查询区域信息 //查询区域信息
ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>() ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>()
.eq(ProdServiceAreasDO::getAreaName, areaName) .eq(ProdServiceAreasDO::getAreaName, areaName)
); );
if(prodServiceAreas != null){ if (prodServiceAreas != null) {
//插入关联表 //插入关联表
prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO() prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO()
.setProdId(prod.getProdId()) .setProdId(prod.getProdId())
@@ -203,7 +204,7 @@ public class ProdServiceImpl implements ProdService {
); );
} }
} }
}else { } else {
//保存区域设置信息 //保存区域设置信息
ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class); ProdServiceOverAreaRulesDO prodServiceOverAreaRules = BeanUtils.toBean(prodServiceVO.getProdServiceAreasInfo(), ProdServiceOverAreaRulesDO.class);
prodServiceOverAreaRules.setProdId(prodServiceVO.getProdId()); prodServiceOverAreaRules.setProdId(prodServiceVO.getProdId());
@@ -211,13 +212,13 @@ public class ProdServiceImpl implements ProdService {
//先批量删除区域关联表 //先批量删除区域关联表
prodServiceAreaRelevanceMapper.deleteRelevance(prodServiceVO.getProdId()); prodServiceAreaRelevanceMapper.deleteRelevance(prodServiceVO.getProdId());
//保存区域 //保存区域
List<String> areaNameList =prodServiceVO.getProdServiceAreasInfo().getAreaNameList(); List<String> areaNameList = prodServiceVO.getProdServiceAreasInfo().getAreaNameList();
for(String areaName : areaNameList){ for (String areaName : areaNameList) {
//查询区域信息 //查询区域信息
ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>() ProdServiceAreasDO prodServiceAreas = prodServiceAreasMapper.selectOne(new LambdaQueryWrapper<ProdServiceAreasDO>()
.eq(ProdServiceAreasDO::getAreaName, areaName) .eq(ProdServiceAreasDO::getAreaName, areaName)
); );
if(prodServiceAreas == null){ if (prodServiceAreas != null) {
//插入关联表 //插入关联表
prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO() prodServiceAreaRelevanceMapper.insert(new ProdServiceAreaRelevanceDO()
.setProdId(prodServiceVO.getProdId()) .setProdId(prodServiceVO.getProdId())
@@ -229,87 +230,99 @@ public class ProdServiceImpl implements ProdService {
} }
//预约设置设置 //预约设置设置
if(Objects.equals(prodServiceVO.getReservationSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getReservationSwitch(), BaseEnum.YES_ONE.getKey())) {
ProdReservationConfigDO reservationConfig= prodReservationConfigMapper.selectOne(new LambdaQueryWrapper<ProdReservationConfigDO>() ProdReservationConfigDO reservationConfig = prodReservationConfigMapper.selectOne(new LambdaQueryWrapper<ProdReservationConfigDO>()
.eq(ProdReservationConfigDO::getProdId, prodServiceVO.getProdId())); .eq(ProdReservationConfigDO::getProdId, prodServiceVO.getProdId()));
if(reservationConfig==null){ if (reservationConfig == null) {
prod.setReservationSwitch(BaseEnum.YES_ONE.getKey()); prod.setReservationSwitch(BaseEnum.YES_ONE.getKey());
ProdReservationConfigDO prodReservationConfigDO = prodServiceVO.getProdReservationConfig(); ProdReservationConfigDO prodReservationConfigDO = prodServiceVO.getProdReservationConfig();
prodReservationConfigDO.setProdId(prod.getProdId()); prodReservationConfigDO.setProdId(prod.getProdId());
prodReservationConfigDO.setTimeBook(prodServiceVO.getProdReservationConfig().getTimeBook());
prodReservationConfigDO.setReservationTimeSlots(prodServiceVO.getProdReservationConfig().getReservationTimeSlots());
prodReservationConfigMapper.insert(prodReservationConfigDO); prodReservationConfigMapper.insert(prodReservationConfigDO);
}else { } else {
prodServiceVO.getProdReservationConfig().setTimeBook(prodServiceVO.getProdReservationConfig().getTimeBook());
prodServiceVO.getProdReservationConfig().setReservationTimeSlots(prodServiceVO.getProdReservationConfig().getReservationTimeSlots());
prodReservationConfigMapper.updateById(prodServiceVO.getProdReservationConfig()); prodReservationConfigMapper.updateById(prodServiceVO.getProdReservationConfig());
} }
} }
//紧急响应设置 //紧急响应设置
if(Objects.equals(prodServiceVO.getEmergencySwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getEmergencySwitch(), BaseEnum.YES_ONE.getKey())) {
ProdEmergencyResponseDO rmergencyResponse= prodEmergencyResponseMapper.selectOne(new LambdaQueryWrapper<ProdEmergencyResponseDO>() ProdEmergencyResponseDO rmergencyResponse = prodEmergencyResponseMapper.selectOne(new LambdaQueryWrapper<ProdEmergencyResponseDO>()
.eq(ProdEmergencyResponseDO::getProdId, prodServiceVO.getProdId())); .eq(ProdEmergencyResponseDO::getProdId, prodServiceVO.getProdId()));
if(rmergencyResponse==null){ if (rmergencyResponse == null) {
prod.setEmergencySwitch(BaseEnum.YES_ONE.getKey()); prod.setEmergencySwitch(BaseEnum.YES_ONE.getKey());
// 插入 // 插入
ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.prodEmergencyInfoVO, ProdEmergencyResponseDO.class); ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.getProdEmergencyInfoVO(), ProdEmergencyResponseDO.class);
prodEmergencyResponse.setProdId(prod.getProdId()); prodEmergencyResponse.setProdId(prod.getProdId());
prodEmergencyResponseMapper.insert(prodEmergencyResponse); prodEmergencyResponseMapper.insert(prodEmergencyResponse);
for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.prodEmergencyInfoVO.getProdEmergencyResponseIntervalsList()){ if(prodServiceVO.getProdEmergencyInfoVO().getProdEmergencyResponseIntervalsList()!=null){
prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId()); for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.getProdEmergencyInfoVO().getProdEmergencyResponseIntervalsList()) {
prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals); prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId());
prodEmergencyResponseIntervals.setProdId(prod.getProdId());
prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals);
}
} }
}else {
ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.prodEmergencyInfoVO, ProdEmergencyResponseDO.class); } else {
if(prodEmergencyResponse!=null){ ProdEmergencyResponseDO prodEmergencyResponse = BeanUtils.toBean(prodServiceVO.getProdEmergencyInfoVO(), ProdEmergencyResponseDO.class);
if (prodEmergencyResponse != null) {
prodEmergencyResponseMapper.updateById(prodEmergencyResponse); prodEmergencyResponseMapper.updateById(prodEmergencyResponse);
prodEmergencyResponseIntervalsMapper.deleteIntervals(prodEmergencyResponse.getId()); prodEmergencyResponseIntervalsMapper.deleteIntervals(prodEmergencyResponse.getId());
for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.prodEmergencyInfoVO.getProdEmergencyResponseIntervalsList()){ if(prodServiceVO.getProdEmergencyInfoVO().getProdEmergencyResponseIntervalsList()!=null) {
prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId()); for (ProdEmergencyResponseIntervalsDO prodEmergencyResponseIntervals : prodServiceVO.getProdEmergencyInfoVO().getProdEmergencyResponseIntervalsList()) {
prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals); prodEmergencyResponseIntervals.setConfigId(prodEmergencyResponse.getId());
prodEmergencyResponseIntervals.setProdId(prod.getProdId());
prodEmergencyResponseIntervalsMapper.insert(prodEmergencyResponseIntervals);
}
} }
} }
} }
} }
//接单上线设置 //接单上线设置
if(Objects.equals(prodServiceVO.getOrderLimitSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getOrderLimitSwitch(), BaseEnum.YES_ONE.getKey())) {
ProductOrderLimitDO orderLimit= productOrderLimitMapper.selectOne(new LambdaQueryWrapper<ProductOrderLimitDO>() ProductOrderLimitDO orderLimit = productOrderLimitMapper.selectOne(new LambdaQueryWrapper<ProductOrderLimitDO>()
.eq(ProductOrderLimitDO::getProdId, prodServiceVO.getProdId())); .eq(ProductOrderLimitDO::getProdId, prodServiceVO.getProdId()));
if(orderLimit==null){ if (orderLimit == null) {
prod.setOrderLimitSwitch(BaseEnum.YES_ONE.getKey()); prod.setOrderLimitSwitch(BaseEnum.YES_ONE.getKey());
ProductOrderLimitDO productOrderLimit = prodServiceVO.getProductOrderLimitVO(); ProductOrderLimitDO productOrderLimit = prodServiceVO.getProductOrderLimitVO();
productOrderLimit.setProdId(prod.getProdId()); productOrderLimit.setProdId(prod.getProdId());
productOrderLimitMapper.insert(productOrderLimit); productOrderLimitMapper.insert(productOrderLimit);
}else { } else {
productOrderLimitMapper.updateById(prodServiceVO.getProductOrderLimitVO()); productOrderLimitMapper.updateById(prodServiceVO.getProductOrderLimitVO());
} }
} }
//特殊时段设置 //特殊时段设置
if(Objects.equals(prodServiceVO.getAdditionalSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getAdditionalSwitch(), BaseEnum.YES_ONE.getKey())) {
for (ProdAdditionalFeeDatesDO prodAdditionalFeeDates : prodServiceVO.getProdAdditionalFeeDatesList()){ if (prodServiceVO.getProdAdditionalFeeDatesList() != null)
if(prodAdditionalFeeDates.getId()==null){ for (ProdAdditionalFeeDatesDO prodAdditionalFeeDates : prodServiceVO.getProdAdditionalFeeDatesList()) {
prodAdditionalFeeDates.setProdId(prodServiceVO.getProdId()); if (prodAdditionalFeeDates.getId() == null) {
prodAdditionalFeeDatesMapper.insert(prodAdditionalFeeDates); prodAdditionalFeeDates.setProdId(prodServiceVO.getProdId());
}else { prodAdditionalFeeDatesMapper.insert(prodAdditionalFeeDates);
prodAdditionalFeeDatesMapper.updateById(prodAdditionalFeeDates); } else {
prodAdditionalFeeDatesMapper.updateById(prodAdditionalFeeDates);
}
} }
}
} }
//特殊日期设置 //特殊日期设置
if(Objects.equals(prodServiceVO.getAdditionalFeeSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getAdditionalFeeSwitch(), BaseEnum.YES_ONE.getKey())) {
for (ProdAdditionalFeePeriodsDO prodAdditionalFeePeriods : prodServiceVO.getProdAdditionalFeePeriodsList()){ for (ProdAdditionalFeePeriodsDO prodAdditionalFeePeriods : prodServiceVO.getProdAdditionalFeePeriodsList()) {
if(prodAdditionalFeePeriods.getId()==null){ if (prodAdditionalFeePeriods.getId() == null) {
prodAdditionalFeePeriods.setProdId(prodServiceVO.getProdId()); prodAdditionalFeePeriods.setProdId(prodServiceVO.getProdId());
prodAdditionalFeePeriodsMapper.insert(prodAdditionalFeePeriods); prodAdditionalFeePeriodsMapper.insert(prodAdditionalFeePeriods);
}else { } else {
prodAdditionalFeePeriodsMapper.updateById(prodAdditionalFeePeriods); prodAdditionalFeePeriodsMapper.updateById(prodAdditionalFeePeriods);
} }
} }
} }
//体重设置 //体重设置
if(Objects.equals(prodServiceVO.getWeightSwitch(),BaseEnum.YES_ONE.getKey())){ if (Objects.equals(prodServiceVO.getWeightSwitch(), BaseEnum.YES_ONE.getKey())) {
if(prodServiceVO.getProdWeightConfig().getId()==null){ if (prodServiceVO.getProdWeightConfig().getId() == null) {
prod.setWeightSwitch(BaseEnum.YES_ONE.getKey()); prod.setWeightSwitch(BaseEnum.YES_ONE.getKey());
ProdWeightRangePricesDO prodWeightRangePrices = prodServiceVO.getProdWeightConfig(); ProdWeightRangePricesDO prodWeightRangePrices = prodServiceVO.getProdWeightConfig();
prodWeightRangePrices.setProdId(prod.getProdId()); prodWeightRangePrices.setProdId(prod.getProdId());
prodWeightRangePricesMapper.insert(prodWeightRangePrices); prodWeightRangePricesMapper.insert(prodWeightRangePrices);
}else { } else {
prodWeightRangePricesMapper.updateById(prodServiceVO.getProdWeightConfig()); prodWeightRangePricesMapper.updateById(prodServiceVO.getProdWeightConfig());
} }
} }
@@ -319,14 +332,14 @@ public class ProdServiceImpl implements ProdService {
@Override @Override
public ProdServiceVO getProdService(Long prodId) { public ProdServiceVO getProdService(Long prodId) {
ProdDO prodDO = prodMapper.selectById(prodId); ProdDO prodDO = prodMapper.selectById(prodId);
if(prodDO!= null&&prodDO.getRegionSwitch()==BaseEnum.YES_ONE.getKey()){ if (prodDO != null && prodDO.getRegionSwitch() == BaseEnum.YES_ONE.getKey()) {
return prodMapper.selectProdService(prodDO.getProdId(),prodDO.getRegionSwitch(), return prodMapper.selectProdService(prodDO.getProdId(), prodDO.getRegionSwitch(),
prodDO.getReservationSwitch(),prodDO.getEmergencySwitch(),prodDO.getOrderLimitSwitch(), prodDO.getReservationSwitch(), prodDO.getEmergencySwitch(), prodDO.getOrderLimitSwitch(),
prodDO.getAdditionalSwitch(),prodDO.getAdditionalFeeSwitch(),prodDO.getWeightSwitch()); prodDO.getAdditionalSwitch(), prodDO.getAdditionalFeeSwitch(), prodDO.getWeightSwitch());
}else { } else {
return prodMapper.selectProdServiceInfo(prodDO.getProdId(), return prodMapper.selectProdServiceInfo(prodDO.getProdId(),
prodDO.getReservationSwitch(),prodDO.getEmergencySwitch(),prodDO.getOrderLimitSwitch(), prodDO.getReservationSwitch(), prodDO.getEmergencySwitch(), prodDO.getOrderLimitSwitch(),
prodDO.getAdditionalSwitch(),prodDO.getAdditionalFeeSwitch(),prodDO.getWeightSwitch()); prodDO.getAdditionalSwitch(), prodDO.getAdditionalFeeSwitch(), prodDO.getWeightSwitch());
} }
@@ -365,19 +378,21 @@ public class ProdServiceImpl implements ProdService {
} }
@Override @Override
public PageResult<ProdDO> getProdPage(ProdPageReqVO pageReqVO) { public PageResult<ProdListVO> getProdPage(ProdPageReqVO pageReqVO) {
IPage<ProdDO> prodPageList = prodMapper.getProdPageList(MyBatisUtils.buildPage(pageReqVO), IPage<ProdListVO> prodPageList = prodMapper.getProdPageList(MyBatisUtils.buildPage(pageReqVO),
pageReqVO.getCreateTime(), pageReqVO.getProdName(), pageReqVO.getShopId(), pageReqVO.getStatus(), pageReqVO.getCategoryId()); pageReqVO.getCreateTime(), pageReqVO.getProdName(), pageReqVO.getShopId(), pageReqVO.getStatus(), pageReqVO.getCategoryId());
return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); return new PageResult<>(prodPageList.getRecords(), prodPageList.getTotal());
} }
@Override @Override
public PageResult<ProdListVO> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO){ public PageResult<ProdRestoreListVO> getProdRecycleBinPageList(ProdRecycleBinVO prodRecycleBinVO) {
IPage<ProdListVO> prodPageList = prodMapper.getProdRecycleBinPageList(MyBatisUtils.buildPage(prodRecycleBinVO), prodRecycleBinVO.getDeleteTime(), prodRecycleBinVO.getProdName()); IPage<ProdRestoreListVO> prodPageList = prodMapper.getProdRecycleBinPageList(MyBatisUtils.buildPage(prodRecycleBinVO), prodRecycleBinVO.getDeleteTime(), prodRecycleBinVO.getProdName());
for(ProdListVO prodPage : prodPageList.getRecords()){ for (ProdRestoreListVO prodPage : prodPageList.getRecords()) {
prodPage.setRemainingDays(DateUtils.getRemainingDays(prodPage.getDeleteTime())); if (prodPage.getDeleteTime() != null) {
prodPage.setRemainingDays(DateUtils.getRemainingDays(prodPage.getDeleteTime()));
}
} }
return new PageResult<>(prodPageList.getRecords(),prodPageList.getTotal()); return new PageResult<>(prodPageList.getRecords(), prodPageList.getTotal());
} }
@Override @Override

View File

@@ -50,6 +50,7 @@
<result property="reservationDateRange" column="rc_reservation_date_range"/> <result property="reservationDateRange" column="rc_reservation_date_range"/>
<result property="allowChange" column="rc_allow_change"/> <result property="allowChange" column="rc_allow_change"/>
<result property="changeTimeRule" column="rc_change_time_rule"/> <result property="changeTimeRule" column="rc_change_time_rule"/>
<result property="timeSlot" column="rc_time_slot"/>
<result property="maxChangeTimes" column="rc_max_change_times"/> <result property="maxChangeTimes" column="rc_max_change_times"/>
<result property="blacklistedDates" column="rc_blacklisted_dates"/> <result property="blacklistedDates" column="rc_blacklisted_dates"/>
<result property="isBlacklisted" column="rc_is_blacklisted"/> <result property="isBlacklisted" column="rc_is_blacklisted"/>
@@ -173,6 +174,7 @@
<result property="reservationDateRange" column="rc_reservation_date_range"/> <result property="reservationDateRange" column="rc_reservation_date_range"/>
<result property="allowChange" column="rc_allow_change"/> <result property="allowChange" column="rc_allow_change"/>
<result property="changeTimeRule" column="rc_change_time_rule"/> <result property="changeTimeRule" column="rc_change_time_rule"/>
<result property="timeSlot" column="rc_time_slot"/>
<result property="maxChangeTimes" column="rc_max_change_times"/> <result property="maxChangeTimes" column="rc_max_change_times"/>
<result property="blacklistedDates" column="rc_blacklisted_dates"/> <result property="blacklistedDates" column="rc_blacklisted_dates"/>
<result property="isBlacklisted" column="rc_is_blacklisted"/> <result property="isBlacklisted" column="rc_is_blacklisted"/>
@@ -233,26 +235,7 @@
<select id="getProdPageList" resultType="com.tashow.cloud.productapi.api.product.dto.ProdDO">
SELECT * FROM tz_prod
where deleted = 0
<if test="createTime != null and createTime.length == 2">
AND create_time BETWEEN #{createTime[0]} AND #{createTime[1]}
</if>
<if test="prodName != null">
AND prod_name = #{prodName}
</if>
<if test="shopId != null">
AND shop_id = #{shopId}
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="categoryId != null">
AND category_id = #{categoryId}
</if>
ORDER by create_time DESC
</select>
<!-- 动态SQL查询商品列表及其服务配置 (返回 List<ProdServiceVO>) --> <!-- 动态SQL查询商品列表及其服务配置 (返回 List<ProdServiceVO>) -->
@@ -265,6 +248,12 @@
p.reservation_switch, p.reservation_switch,
p.order_limit_switch, p.order_limit_switch,
p.weight_switch, p.weight_switch,
p.region_switch,
p.create_time,
p.update_time,
p.creator,
p.updater,
p.category_name,
<!-- 只有当 emergencySwitch 开启时,才查询紧急响应相关字段 --> <!-- 只有当 emergencySwitch 开启时,才查询紧急响应相关字段 -->
<if test="emergencySwitch != null and emergencySwitch == 1"> <if test="emergencySwitch != null and emergencySwitch == 1">
erc.id AS erc_record_id, erc.id AS erc_record_id,
@@ -328,6 +317,7 @@
rc.reservation_date_range AS rc_reservation_date_range, rc.reservation_date_range AS rc_reservation_date_range,
rc.allow_change AS rc_allow_change, rc.allow_change AS rc_allow_change,
rc.change_time_rule AS rc_change_time_rule, rc.change_time_rule AS rc_change_time_rule,
rc.time_slot AS rc_time_slot,
rc.max_change_times AS rc_max_change_times, rc.max_change_times AS rc_max_change_times,
rc.blacklisted_dates AS rc_blacklisted_dates, rc.blacklisted_dates AS rc_blacklisted_dates,
rc.is_blacklisted AS rc_is_blacklisted, rc.is_blacklisted AS rc_is_blacklisted,
@@ -405,6 +395,7 @@
p.reservation_switch, p.reservation_switch,
p.order_limit_switch, p.order_limit_switch,
p.weight_switch, p.weight_switch,
p.region_switch,
<!-- 只有当 emergencySwitch 开启时,才查询紧急响应相关字段 --> <!-- 只有当 emergencySwitch 开启时,才查询紧急响应相关字段 -->
<if test="emergencySwitch != null and emergencySwitch == 1"> <if test="emergencySwitch != null and emergencySwitch == 1">
erc.id AS erc_record_id, erc.id AS erc_record_id,
@@ -468,6 +459,7 @@
rc.reservation_date_range AS rc_reservation_date_range, rc.reservation_date_range AS rc_reservation_date_range,
rc.allow_change AS rc_allow_change, rc.allow_change AS rc_allow_change,
rc.change_time_rule AS rc_change_time_rule, rc.change_time_rule AS rc_change_time_rule,
rc.time_slot AS rc_time_slot,
rc.max_change_times AS rc_max_change_times, rc.max_change_times AS rc_max_change_times,
rc.blacklisted_dates AS rc_blacklisted_dates, rc.blacklisted_dates AS rc_blacklisted_dates,
rc.is_blacklisted AS rc_is_blacklisted, rc.is_blacklisted AS rc_is_blacklisted,
@@ -523,48 +515,64 @@
<!-- 结果映射:将数据库查询结果映射到 ProdServiceVO --> <!-- 结果映射:将数据库查询结果映射到 ProdServiceVO -->
<resultMap id="ProdRecycleBinMap" type="com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO"> <!-- 确保这是 ProdServiceVO 的正确包名 --> <resultMap id="ProdRecycleBinMap" type="com.tashow.cloud.productapi.api.product.vo.prod.ProdRestoreListVO"> <!-- 确保这是 ProdServiceVO 的正确包名 -->
<!-- 商品基本信息映射 --> <!-- 商品基本信息映射 -->
<id property="prodId" column="prod_id"/> <id property="prodId" column="prod_id"/>
<result property="prodName" column="prod_name"/> <result property="prodName" column="prod_name"/>
<result property="categoryName" column="category_name"/> <result property="categoryName" column="category_name"/>
<result property="shopId" column="shop_id"/> <result property="shopId" column="shop_id"/>
<result property="shopName" column="shop_name"/> <result property="shopName" column="shop_name"/>
<result property="responseHours" column="response_hours"/>
<result property="reservationTimeSlots" column="reservation_time_slots"/>
<result property="deleteTime" column="delete_time"/>
<result property="createTime" column="create_time"/>
<collection property="areaNameList" ofType="string"> <collection property="areaNameList" ofType="string">
<result column="sa_area_name"/> <result column="area_name"/>
</collection> </collection>
<!-- <association property="prodReservationConfig" javaType="com.tashow.cloud.productapi.api.product.dto.ProdReservationConfigDO">
<id property="id" column="rc_record_id"/>
<result property="prodId" column="rc_prod_id"/>
<result property="reservationTimeSlots" column="rc_reservation_time_slots"/>
<result property="advanceHours" column="rc_advance_hours"/>
<result property="reservationDateRange" column="rc_reservation_date_range"/>
<result property="allowChange" column="rc_allow_change"/>
<result property="changeTimeRule" column="rc_change_time_rule"/>
<result property="maxChangeTimes" column="rc_max_change_times"/>
<result property="blacklistedDates" column="rc_blacklisted_dates"/>
<result property="isBlacklisted" column="rc_is_blacklisted"/>
<result property="blackAppointDates" column="rc_black_appoint_dates"/>
<result property="isBlackAppoint" column="rc_is_black_appoint"/>
<result property="blackHappy" column="rc_black_happy"/>
<result property="blackWeekend" column="rc_black_weekend"/>
</association>-->
</resultMap> </resultMap>
<resultMap id="ProdListMap" type="com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO"> <!-- 确保这是 ProdServiceVO 的正确包名 -->
<!-- 商品基本信息映射 -->
<id property="prodId" column="prod_id"/>
<result property="prodName" column="prod_name"/>
<result property="categoryName" column="category_name"/>
<result property="shopId" column="shop_id"/>
<result property="shopName" column="shop_name"/>
<result property="status" column="status"/>
<result property="shopName" column="shop_name"/>
<result property="isProhibit" column="is_prohibit"/>
<result property="responseHours" column="response_hours"/>
<result property="processNotes" column="processNotes"/>
<result property="reservationTimeSlots" column="reservation_time_slots"/>
<result property="deleteTime" column="delete_time"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<collection property="areaNameList" ofType="string">
<result column="area_name"/>
</collection>
</resultMap>
<select id="getProdRecycleBinPageList" resultMap="ProdRecycleBinMap" > <select id="getProdRecycleBinPageList" resultMap="ProdRecycleBinMap" >
select tp.prod_id,tp.prod_name,tp.category_name,tp.shop_id,tsd.shop_name,tpsa.area_name select tp.prod_id,tp.prod_name,tp.category_name,tp.shop_id,tsd.shop_name,tpsa.area_name,min_eri.response_hours,
tprc.reservation_time_slots,tp.delete_time,tp.create_time
from tz_prod tp from tz_prod tp
left join tz_shop_detail tsd on tp.shop_id = tsd.shop_id left join tz_shop_detail tsd on tp.shop_id = tsd.shop_id
left join tz_prod_service_area_relevance tpsar on tp.prod_id = tpsar.prod_id left join tz_prod_service_area_relevance tpsar on tp.prod_id = tpsar.prod_id
left join tz_prod_service_areas tpsa on tpsar.area_id = tpsa.id left join tz_prod_service_areas tpsa on tpsar.area_id = tpsa.id
where deleted = 1 left join tz_prod_reservation_config tprc on tp.prod_id = tprc.prod_id
<if test="properties != null and properties != ''"> LEFT JOIN (
and tp.properties like concat('%', #{prodName}, '%') SELECT
prod_id,
MIN(response_hours) AS response_hours
FROM tz_prod_emergency_response_intervals
WHERE deleted = 0 -- 排除已删除的配置
GROUP BY prod_id
) min_eri ON tp.prod_id = min_eri.prod_id
where tp.deleted = 1
<if test="prodName != null and prodName != ''">
and tp.prod_ame like concat('%', #{prodName}, '%')
</if> </if>
<if test="deleteTime != null and deleteTime.length == 2"> <if test="deleteTime != null and deleteTime.length == 2">
AND tp.delete_time BETWEEN #{deleteTime[0]} AND #{deleteTime[1]} AND tp.delete_time BETWEEN #{deleteTime[0]} AND #{deleteTime[1]}
@@ -572,6 +580,42 @@
</select> </select>
<select id="getProdPageList" resultMap="ProdListMap" >
select tp.prod_id,tp.prod_name,tp.category_name,tp.shop_id,tsd.shop_name,tpsa.area_name,min_eri.response_hours,
tprc.reservation_time_slots,tp.delete_time,tp.create_time,tp.update_time,tp.status,tp.is_prohibit,
tp.process_notes processNotes
from tz_prod tp
left join tz_shop_detail tsd on tp.shop_id = tsd.shop_id
left join tz_prod_service_area_relevance tpsar on tp.prod_id = tpsar.prod_id
left join tz_prod_service_areas tpsa on tpsar.area_id = tpsa.id
left join tz_prod_reservation_config tprc on tp.prod_id = tprc.prod_id
LEFT JOIN (
SELECT
prod_id,
MIN(response_hours) AS response_hours
FROM tz_prod_emergency_response_intervals
WHERE deleted = 0 -- 排除已删除的配置
GROUP BY prod_id
) min_eri ON tp.prod_id = min_eri.prod_id
where tp.deleted = 0
<if test="createTime != null and createTime.length == 2">
AND tp.create_time BETWEEN #{createTime[0]} AND #{createTime[1]}
</if>
<if test="prodName != null">
AND tp.prod_name = #{prodName}
</if>
<if test="shopId != null">
AND tp.shop_id = #{shopId}
</if>
<if test="status != null">
AND tp.status = #{status}
</if>
<if test="categoryId != null">
AND tp.category_id = #{categoryId}
</if>
ORDER by tp.create_time DESC
</select>
<update id="batchRestoreProd"> <update id="batchRestoreProd">
UPDATE tz_prod UPDATE tz_prod
SET deleted = 0 SET deleted = 0