diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/carousel/domain/vo/CarouselQueryVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/carousel/domain/vo/CarouselQueryVo.java index b5856ff..82c37a7 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/carousel/domain/vo/CarouselQueryVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/carousel/domain/vo/CarouselQueryVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.carousel.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import jakarta.validation.constraints.Size; import lombok.Data; import org.funcode.portal.server.common.domain.base.PageRequestVo; @@ -27,13 +34,29 @@ public class CarouselQueryVo { @Size(max = 100, message = "{ielts.domain.vo.CarouselQueryVo.title.Size}") @Schema(description = "轮播标题(模糊)") private String title; - @Schema(description = "创建时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtBegin; - @Schema(description = "创建时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtEnd; - @Schema(description = "更新时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtBegin; - @Schema(description = "更新时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtEnd; @Schema(description = "分页参数") private PageRequestVo pageRequestVo; diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnAddOrEditVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnAddOrEditVo.java index f632095..12ff723 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnAddOrEditVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnAddOrEditVo.java @@ -13,6 +13,7 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; +import java.util.List; /** * @author 李冲 @@ -31,7 +32,7 @@ public class CourseColumnAddOrEditVo { @Schema(description = "专栏标题") private String title; @Schema(description = "专栏状态(0:已下架;1:已上架;2:下架并静止播放)") - private int status; + private Integer status; @DecimalMin(value = "0.00", message = "{ielts.domain.vo.CourseColumnAddOrEditVo.price.DecimalMin}") @Schema(description = "价格") private BigDecimal price; @@ -39,5 +40,7 @@ public class CourseColumnAddOrEditVo { private Long courseColumnCoverStorageId; @Schema(description = "专栏简介文件ID") private Long courseColumnDescriptionStorageId; + @Schema(description = "课程ID列表") + private List courseIds; } diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnQueryVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnQueryVo.java index 05c211b..3496499 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnQueryVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/domain/vo/CourseColumnQueryVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.column.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import jakarta.validation.constraints.Size; import lombok.Data; import org.funcode.portal.server.common.domain.base.PageRequestVo; @@ -29,13 +36,29 @@ public class CourseColumnQueryVo { private String title; @Schema(description = "专栏状态(0:已下架;1:已上架;2:下架并静止播放)(精确)") private Integer status; - @Schema(description = "创建时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtBegin; - @Schema(description = "创建时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtEnd; - @Schema(description = "更新时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtBegin; - @Schema(description = "更新时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtEnd; @Schema(description = "分页参数") private PageRequestVo pageRequestVo; diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/service/impl/CourseColumnServiceImpl.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/service/impl/CourseColumnServiceImpl.java index 266e326..76185f0 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/service/impl/CourseColumnServiceImpl.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/column/service/impl/CourseColumnServiceImpl.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils; import org.funcode.portal.server.common.core.base.service.impl.BaseServiceImpl; import org.funcode.portal.server.common.domain.base.PageRequestVo; +import org.funcode.portal.server.common.domain.ielts.Course; import org.funcode.portal.server.common.domain.ielts.CourseColumn; import org.funcode.portal.server.common.domain.ielts.CourseColumn_; import org.funcode.portal.server.common.domain.ielts.Storage; @@ -16,11 +17,17 @@ import org.funcode.portal.server.module.ielts.column.domain.vo.CourseColumnQueryVo; import org.funcode.portal.server.module.ielts.column.repository.ICourseColumnRepository; import org.funcode.portal.server.module.ielts.column.service.ICourseColumnService; +import org.funcode.portal.server.module.ielts.course.repository.ICourseRepository; import org.funcode.portal.server.module.ielts.storage.repository.IStorageRepository; import org.springframework.data.domain.Page; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; /** * @author 李冲 @@ -32,6 +39,7 @@ public class CourseColumnServiceImpl extends BaseServiceImpl implements ICourseColumnService { private final ICourseColumnRepository courseColumnRepository; + private final ICourseRepository courseRepository; private final IStorageRepository storageRepository; @Override @@ -76,8 +84,14 @@ public Page findPage(PageRequestVo pageRequestVo) { } private CourseColumn transAddOrEditVoToCourseColumn(CourseColumnAddOrEditVo courseColumnAddOrEditVo) { - Storage coverStorage = storageRepository.getReferenceById(courseColumnAddOrEditVo.getCourseColumnCoverStorageId()); - Storage descriptionStorage = storageRepository.getReferenceById(courseColumnAddOrEditVo.getCourseColumnDescriptionStorageId()); + Storage coverStorage = courseColumnAddOrEditVo.getCourseColumnCoverStorageId() != null ? + storageRepository.getReferenceById(courseColumnAddOrEditVo.getCourseColumnCoverStorageId()) + : null; + Storage descriptionStorage = courseColumnAddOrEditVo.getCourseColumnDescriptionStorageId() != null ? + storageRepository.getReferenceById(courseColumnAddOrEditVo.getCourseColumnDescriptionStorageId()) + : null; + List courseIds = courseColumnAddOrEditVo.getCourseIds(); + List courses = CollectionUtils.isEmpty(courseIds) ? Collections.emptyList() : courseRepository.findAllById(courseIds); return CourseColumn.builder() .id(courseColumnAddOrEditVo.getId()) .courseColumnCoverStorage(coverStorage) @@ -85,6 +99,7 @@ private CourseColumn transAddOrEditVoToCourseColumn(CourseColumnAddOrEditVo cour .price(courseColumnAddOrEditVo.getPrice()) .status(courseColumnAddOrEditVo.getStatus()) .title(courseColumnAddOrEditVo.getTitle()) + .courses(CollectionUtils.isEmpty(courses) ? Collections.emptySet() : new HashSet<>(courses)) .build(); } } diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/domain/vo/CourseQueryVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/domain/vo/CourseQueryVo.java index bf3123a..baf8ea9 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/domain/vo/CourseQueryVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/domain/vo/CourseQueryVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.course.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import jakarta.validation.constraints.Size; import lombok.Data; import org.funcode.portal.server.common.domain.base.PageRequestVo; @@ -29,13 +36,29 @@ public class CourseQueryVo { private String title; @Schema(description = "课程状态(0:已下架;1:已上架;2:下架并静止播放)(精确)") private Integer status; - @Schema(description = "创建时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtBegin; - @Schema(description = "创建时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtEnd; - @Schema(description = "更新时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtBegin; - @Schema(description = "更新时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtEnd; @Schema(description = "分页参数") private PageRequestVo pageRequestVo; diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/service/impl/CourseServiceImpl.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/service/impl/CourseServiceImpl.java index 386f6f8..9db1a9b 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/service/impl/CourseServiceImpl.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/course/service/impl/CourseServiceImpl.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; +import org.funcode.portal.server.common.core.base.exception.BusinessException; import org.funcode.portal.server.common.core.base.service.impl.BaseServiceImpl; import org.funcode.portal.server.common.domain.base.PageRequestVo; import org.funcode.portal.server.common.domain.ielts.Course; @@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -83,12 +85,17 @@ public Page findPage(PageRequestVo pageRequestVo) { private Course transAddOrEditVoToCourse(CourseAddOrEditVo courseAddOrEditVo) { Long mediaStorageId = courseAddOrEditVo.getCourseMediaStorageId(); if (mediaStorageId == null) { - return null; + throw new BusinessException("media storage id is null"); } Storage mediaStorage = storageRepository.getReferenceById(mediaStorageId); - Storage coverStorage = storageRepository.getReferenceById(courseAddOrEditVo.getCourseCoverStorageId()); - Storage descriptionStorage = storageRepository.getReferenceById(courseAddOrEditVo.getCourseDescriptionStorageId()); - List courseAttachmentStorages = storageRepository.findAllById(courseAddOrEditVo.getCourseAttachmentStorageIds()); + Storage coverStorage = courseAddOrEditVo.getCourseCoverStorageId() != null ? + storageRepository.getReferenceById(courseAddOrEditVo.getCourseCoverStorageId()) + : null; + Storage descriptionStorage = courseAddOrEditVo.getCourseDescriptionStorageId() != null ? + storageRepository.getReferenceById(courseAddOrEditVo.getCourseDescriptionStorageId()) + : null; + List courseAttachmentStorageIds = courseAddOrEditVo.getCourseAttachmentStorageIds(); + List courseAttachmentStorages = CollectionUtils.isEmpty(courseAttachmentStorageIds) ? Collections.emptyList() : storageRepository.findAllById(courseAttachmentStorageIds); return Course.builder() .id(courseAddOrEditVo.getId()) .title(courseAddOrEditVo.getTitle()) @@ -97,7 +104,7 @@ private Course transAddOrEditVoToCourse(CourseAddOrEditVo courseAddOrEditVo) { .courseMediaStorage(mediaStorage) .courseCoverStorage(coverStorage) .courseDescriptionStorage(descriptionStorage) - .courseAttachmentStorages(CollectionUtils.isEmpty(courseAttachmentStorages) ? new HashSet<>() : new HashSet<>(courseAttachmentStorages)) + .courseAttachmentStorages(CollectionUtils.isEmpty(courseAttachmentStorages) ? Collections.emptySet() : new HashSet<>(courseAttachmentStorages)) .build(); } } diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeAddVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeAddVo.java index 6161c1d..9e6856c 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeAddVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeAddVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.redeem.code.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -24,7 +31,11 @@ @Schema(description = "兑换码新增VO") public class RedeemCodeAddVo { - @Schema(description = "过期时间(默认1天过期)") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "过期时间(默认1天过期)", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime expireTime; @Schema(description = "课程ID列表") private List courseIds; diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeQueryVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeQueryVo.java index 561e258..aee8bd4 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeQueryVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/domain/vo/RedeemCodeQueryVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.redeem.code.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import jakarta.validation.constraints.Size; import lombok.Data; import org.funcode.portal.server.common.domain.base.PageRequestVo; @@ -29,21 +36,53 @@ public class RedeemCodeQueryVo { @Size(max = 200, message = "{ielts.domain.vo.RedeemCodeQueryVo.code.Size}") @Schema(description = "兑换码code(模糊)") private String code; - @Schema(description = "过期时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "过期时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime expireTimeBegin; - @Schema(description = "过期时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "过期时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime expireTimeEnd; - @Schema(description = "兑换时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "兑换时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime redeemTimeBegin; - @Schema(description = "兑换时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "兑换时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime redeemTimeEnd; - @Schema(description = "创建时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtBegin; - @Schema(description = "创建时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtEnd; - @Schema(description = "更新时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtBegin; - @Schema(description = "更新时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtEnd; @Schema(description = "分页参数") private PageRequestVo pageRequestVo; diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/service/impl/RedeemCodeServiceImpl.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/service/impl/RedeemCodeServiceImpl.java index c05997c..b20f61e 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/service/impl/RedeemCodeServiceImpl.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/redeem/code/service/impl/RedeemCodeServiceImpl.java @@ -98,9 +98,9 @@ public RedeemCode addRedeemCode(RedeemCodeAddVo redeemCodeAddVo) { throw new BusinessException("过期时间不能小于当前时间"); } // 查找课程 - List courses = CollectionUtils.isEmpty(courseIds) ? new ArrayList<>() : courseRepository.findAllById(courseIds); + List courses = CollectionUtils.isEmpty(courseIds) ? Collections.emptyList() : courseRepository.findAllById(courseIds); // 查找专栏 - List courseColumns = CollectionUtils.isEmpty(courseColumnIds) ? new ArrayList<>() : courseColumnRepository.findAllById(courseColumnIds); + List courseColumns = CollectionUtils.isEmpty(courseColumnIds) ? Collections.emptyList() : courseColumnRepository.findAllById(courseColumnIds); // 生成随机兑换码 String code = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); RedeemCode redeemCode = RedeemCode.builder() diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageAddOrEditVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageAddOrEditVo.java index 551165f..009141a 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageAddOrEditVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageAddOrEditVo.java @@ -33,7 +33,7 @@ public class StorageAddOrEditVo { private String title; @Schema(description = "文件类型(0:图片;1:音频;2:视频;3:markdown)") - private int fileType; + private Integer fileType; @NotNull(message = "{ielts.domain.vo.StorageAddOrEditVo.file.NotNull}") @Schema(description = "文件") diff --git a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageQueryVo.java b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageQueryVo.java index 2f1890f..f5ec8c3 100644 --- a/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageQueryVo.java +++ b/module/ielts/src/main/java/org/funcode/portal/server/module/ielts/storage/domain/vo/StorageQueryVo.java @@ -5,7 +5,14 @@ package org.funcode.portal.server.module.ielts.storage.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import jakarta.validation.constraints.Size; import lombok.Data; import org.funcode.portal.server.common.domain.base.PageRequestVo; @@ -37,13 +44,29 @@ public class StorageQueryVo { @Size(max = 200, message = "{ielts.domain.vo.StorageQueryVo.versionId.Size}") @Schema(description = "版本ID(精确)") private String versionId; - @Schema(description = "创建时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtBegin; - @Schema(description = "创建时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "创建时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime createdAtEnd; - @Schema(description = "更新时间的开始时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的开始时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtBegin; - @Schema(description = "更新时间的结束时间") + @Temporal(TemporalType.TIMESTAMP) + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING) + @Schema(description = "更新时间的结束时间", type = "string", format = "date", example = "2024-01-01 01:01:00") private LocalDateTime updatedAtEnd; @Schema(description = "分页参数") private PageRequestVo pageRequestVo;