feat:迁移hard和wallet模块的定时任务
feat:增加订餐预约时间管理
This commit is contained in:
1 parent
03e1c65560
commit
940e457930
51 files changed
+1876
-942
No files matched your search
-47
@@ -1,47 +0,0 @@
|
||||
package com.bsd.pjcloud.hard.api.constant;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 硬件预约时间类型
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum HardApptTimeTypeEnum {
|
||||
|
||||
YESTERDAY("1", -1, "昨天"),
|
||||
TODAY("2", 0, "今天"),
|
||||
TOMORROW("3", 1, "明天"),
|
||||
AFTER_TOMORROW("4", 2, "后天"),
|
||||
;
|
||||
|
||||
private final String type;
|
||||
private final Integer day;
|
||||
private final String description;
|
||||
|
||||
public static HardApptTimeTypeEnum valueOfByType(String type) {
|
||||
if (ObjectUtil.isEmpty(type)) return null;
|
||||
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public static HardApptTimeTypeEnum valueOfByTypeOrToday(String type) {
|
||||
if (ObjectUtil.isEmpty(type)) {
|
||||
return HardApptTimeTypeEnum.TODAY;
|
||||
}
|
||||
return valueOfByType(type);
|
||||
}
|
||||
|
||||
public static HardApptTimeTypeEnum valueOfByDay(int day) {
|
||||
return Arrays.stream(values()).filter(value -> value.getDay() == day).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public static boolean isReservationDateType(String type) {
|
||||
HardApptTimeTypeEnum value = valueOfByType(type);
|
||||
return value != null && value.getDay() >= 0;
|
||||
}
|
||||
|
||||
}
|
||||
+4
-1
@@ -5,9 +5,12 @@ import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 动态时间窗预约规则入参:一条规则携带多个开放窗口,每窗口携带日期×餐段目标集合。
|
||||
*/
|
||||
@Data
|
||||
public class HardApptDto extends HardApptEntity {
|
||||
|
||||
private List<String> reserveTimeList;
|
||||
private List<HardApptWindowDto> windowList;
|
||||
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.bsd.pjcloud.hard.api.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 动态时间窗可预约目标项:目标用餐日期 × 餐段。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "动态时间窗可预约目标项")
|
||||
public class HardApptItemDto {
|
||||
|
||||
@Schema(description = "目标用餐日期")
|
||||
private LocalDate targetDate;
|
||||
|
||||
@Schema(description = "餐段字典值(daily_menu)")
|
||||
private String hourType;
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.bsd.pjcloud.hard.api.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 动态时间窗开放窗口:一次性绝对时间窗(支持跨天)及其可预约目标集合。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "动态时间窗开放窗口")
|
||||
public class HardApptWindowDto {
|
||||
|
||||
@Schema(description = "窗口ID;规则新增/整单重建时为空,窗口级编辑时必填")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "开始预约时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@Schema(description = "结束预约时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@Schema(description = "免审退款申请截止时间(闭区间);空则按开放预约结束时间处理,须在(start_time,end_time]范围内")
|
||||
private LocalDateTime autoRefundTime;
|
||||
|
||||
@Schema(description = "可预约目标集合(日期×餐段)")
|
||||
private List<HardApptItemDto> itemList;
|
||||
}
|
||||
-5
@@ -74,11 +74,6 @@ public class HardAppCreateDailyMenuReserveOrdersDto {
|
||||
*/
|
||||
private String hourType;
|
||||
|
||||
/**
|
||||
* 预约时间类型,沿用预约列表返回的协议值并参与预约有效性校验。
|
||||
*/
|
||||
private String apptTimeType;
|
||||
|
||||
/**
|
||||
* 实际用餐日期,精确到日,并用于同日同餐段重复预约校验。
|
||||
*/
|
||||
|
||||
+1
-4
@@ -58,10 +58,7 @@ public class HardAppCreateOrderDto {
|
||||
// 餐端;周期预约必传,动态时间窗由 apptId 对应规则确定
|
||||
private String hourType;
|
||||
|
||||
// 预约时间类型
|
||||
private String apptTimeType;
|
||||
|
||||
// 实际预约日期;新客户端必须传递,apptTimeType 仅用于兼容旧客户端
|
||||
// 实际预约日期;动态/周期预约均必须传递
|
||||
private LocalDate apptDate;
|
||||
|
||||
// 地址
|
||||
|
||||
-2
@@ -38,7 +38,5 @@ public class HardAppCreateReserveOrdersDto {
|
||||
|
||||
private String hourType;
|
||||
|
||||
private String apptTimeType;
|
||||
|
||||
private LocalDate apptDate;
|
||||
}
|
||||
+3
-52
@@ -7,18 +7,17 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* 设备预约管理
|
||||
* 动态时间窗预约规则(多窗口模型的规则头)。
|
||||
* 开放时间窗见 {@link HardApptWindowEntity},窗口内可预约明细见 {@link HardApptItemEntity}。
|
||||
*/
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("hard_appt")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "设备预约管理")
|
||||
@Schema(description = "动态时间窗预约规则")
|
||||
public class HardApptEntity extends Model<HardApptEntity> {
|
||||
|
||||
|
||||
@@ -35,54 +34,6 @@ public class HardApptEntity extends Model<HardApptEntity> {
|
||||
@Schema(description = "商户id")
|
||||
private Long mchId;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
@Schema(description = "标题")
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@Schema(description = "开始时间")
|
||||
private LocalTime startTime;
|
||||
|
||||
/**
|
||||
* 开始时间类型
|
||||
*/
|
||||
@Schema(description = "开始时间类型")
|
||||
private String startTimeType;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@Schema(description = "结束时间")
|
||||
private LocalTime endTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@Schema(description = "结束时间")
|
||||
private String endTimeType;
|
||||
|
||||
/**
|
||||
* 预约限制模式
|
||||
*/
|
||||
@Schema(description = "预约限制模式(TIME_WINDOW动态时间窗,WEEKLY_CYCLE按周集中预约)")
|
||||
private String reserveMode;
|
||||
|
||||
/**
|
||||
* 预约时间段
|
||||
*/
|
||||
@Schema(description = "预约时间段")
|
||||
private String hourType;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@Schema(description = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
|
||||
+20
-44
@@ -1,91 +1,67 @@
|
||||
package com.bsd.pjcloud.hard.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 设备预约时间管理
|
||||
* 动态时间窗窗口内的可预约明细:目标用餐日期 × 餐段。
|
||||
*/
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("hard_appt_time")
|
||||
@TableName("hard_appt_item")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "设备预约时间管理")
|
||||
public class HardApptTimeEntity extends Model<HardApptTimeEntity> {
|
||||
@Schema(description = "动态时间窗可预约明细(日期×餐段)")
|
||||
public class HardApptItemEntity extends Model<HardApptItemEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "编号")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 商户ID
|
||||
*/
|
||||
@Schema(description = "预约窗口ID(hard_appt_window.id)")
|
||||
private Long windowId;
|
||||
|
||||
@Schema(description = "商户ID")
|
||||
private Long mchId;
|
||||
|
||||
/**
|
||||
* appt_id
|
||||
*/
|
||||
@Schema(description = "appt_id")
|
||||
private Long apptId;
|
||||
@Schema(description = "目标用餐日期")
|
||||
private LocalDate targetDate;
|
||||
|
||||
/**
|
||||
* 预约时间类型(昨天、今天、明天、自定义)
|
||||
*
|
||||
* @see com.bsd.pjcloud.hard.api.constant.HardApptTimeTypeEnum
|
||||
*/
|
||||
@Schema(description = "预约时间类型(昨天、今天、明天、自定义)")
|
||||
private String type;
|
||||
@Schema(description = "餐段字典值(daily_menu)")
|
||||
private String hourType;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记")
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Schema(description = "租户ID")
|
||||
private Long tenantId;
|
||||
}
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.bsd.pjcloud.hard.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 动态时间窗预约的开放窗口:一次性绝对时间窗(支持跨天),订单 appt_id 指向本表。
|
||||
*/
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("hard_appt_window")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "动态时间窗预约开放窗口")
|
||||
public class HardApptWindowEntity extends Model<HardApptWindowEntity> {
|
||||
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "预约规则ID(hard_appt.id)")
|
||||
private Long apptId;
|
||||
|
||||
@Schema(description = "商户ID")
|
||||
private Long mchId;
|
||||
|
||||
@Schema(description = "开始预约时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@Schema(description = "结束预约时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@Schema(description = "免审退款申请截止时间(闭区间),空=开放预约结束时间;须在(start_time,end_time]范围内")
|
||||
private LocalDateTime autoRefundTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建人")
|
||||
private String createBy;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改人")
|
||||
private String updateBy;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记")
|
||||
private String delFlag;
|
||||
|
||||
@Schema(description = "租户ID")
|
||||
private Long tenantId;
|
||||
}
|
||||
-3
@@ -14,8 +14,5 @@ public class HardApptDateOptionsVo {
|
||||
/** 实际用餐日期。 */
|
||||
private LocalDate apptDate;
|
||||
|
||||
/** 当日期属于旧版今天/明天/后天范围时返回,用于平滑升级。 */
|
||||
private String apptTimeType;
|
||||
|
||||
private List<HardApptOptionVo> apptList;
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 动态时间窗可预约目标项展示:目标用餐日期 × 餐段。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "动态时间窗可预约目标项展示")
|
||||
public class HardApptItemVo {
|
||||
|
||||
@Schema(description = "目标用餐日期")
|
||||
private LocalDate targetDate;
|
||||
|
||||
@Schema(description = "餐段字典值(daily_menu)")
|
||||
private String hourType;
|
||||
}
|
||||
+23
-6
@@ -1,24 +1,41 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
|
||||
import com.bsd.pjcloud.hard.api.entity.HardApptEntity;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* App 订餐预约餐段选项。
|
||||
* App 订餐预约餐段选项。动态时间窗 id 为窗口 ID(订单 appt_id 提交该值);周期预约 apptRuleId 为规则 ID。
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class HardApptOptionVo extends HardApptEntity {
|
||||
@Schema(description = "App 订餐预约餐段选项")
|
||||
public class HardApptOptionVo {
|
||||
|
||||
/** 动态时间窗窗口ID;周期预约为 null。 */
|
||||
private Long id;
|
||||
|
||||
/** 周期预约规则ID;动态时间窗为 null。 */
|
||||
private Long apptRuleId;
|
||||
|
||||
/** 周期预约直接使用餐端名称;动态时间窗继续使用 hard_appt.title。 */
|
||||
/** 预约限制模式:TIME_WINDOW / WEEKLY_CYCLE。 */
|
||||
private String reserveMode;
|
||||
|
||||
/** 餐段编码(daily_menu)。 */
|
||||
private String hourType;
|
||||
|
||||
/** 餐段名称。 */
|
||||
private String hourTypeName;
|
||||
|
||||
/** 选项标题,默认取餐段名称。 */
|
||||
private String title;
|
||||
|
||||
/** 动态时间窗窗口起止时间;周期预约为 null。 */
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/** 动态时间窗窗口起止时间;周期预约为 null。 */
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/** 当前时刻是否允许提交该日期和餐段。 */
|
||||
private Boolean available;
|
||||
|
||||
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
|
||||
import com.bsd.pjcloud.hard.api.entity.HardApptEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class HardApptTimeCascadeVo {
|
||||
|
||||
private String apptTimeType;
|
||||
|
||||
private LocalDate apptTimeWeekStr;
|
||||
|
||||
private List<HardApptEntity> apptList;
|
||||
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HardApptTimeTypeVo {
|
||||
|
||||
private Long mchId;
|
||||
|
||||
private Long type;
|
||||
|
||||
}
|
||||
+4
-1
@@ -5,9 +5,12 @@ import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 动态时间窗预约规则展示:含全部开放窗口及窗口内可预约明细。
|
||||
*/
|
||||
@Data
|
||||
public class HardApptVo extends HardApptEntity {
|
||||
|
||||
private List<String> reserveTimeList;
|
||||
private List<HardApptWindowVo> windowList;
|
||||
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 动态时间窗开放窗口展示:一次性绝对时间窗及其可预约目标集合。
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "动态时间窗开放窗口展示")
|
||||
public class HardApptWindowVo {
|
||||
|
||||
@Schema(description = "窗口ID(订单 appt_id 指向该值)")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "开始预约时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@Schema(description = "结束预约时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@Schema(description = "免审退款申请截止时间(闭区间),空=开放预约结束时间")
|
||||
private LocalDateTime autoRefundTime;
|
||||
|
||||
@Schema(description = "可预约目标集合(日期×餐段)")
|
||||
private List<HardApptItemVo> itemList;
|
||||
}
|
||||
+3
-3
@@ -12,7 +12,7 @@ import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletInterface;
|
||||
import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletTypeInterface;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/** 硬件订单管理端展示对象,包含公共用户主资料、部门及身份信息。 */
|
||||
@@ -102,9 +102,9 @@ public class HardOrderVo extends HardOrderEntity implements BaseUserDeptInterfac
|
||||
|
||||
private String apptReserveMode;
|
||||
|
||||
private LocalTime apptStartTime;
|
||||
private LocalDateTime apptStartTime;
|
||||
|
||||
private LocalTime apptEndTime;
|
||||
private LocalDateTime apptEndTime;
|
||||
|
||||
/**
|
||||
* 外卖订单的期望送达配置,来源于 hard_take_out_appt;非外卖或历史未记录时为空。
|
||||
|
||||
Reference in new issue
Block a user