Skip to content

Commit

Permalink
feat: 非空校验
Browse files Browse the repository at this point in the history
  • Loading branch information
lichong-a committed Sep 21, 2024
1 parent 9d9f219 commit 5416080
Show file tree
Hide file tree
Showing 11 changed files with 203 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.List;

/**
* @author 李冲
Expand All @@ -31,13 +32,15 @@ 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;
@Schema(description = "专栏封面文件ID")
private Long courseColumnCoverStorageId;
@Schema(description = "专栏简介文件ID")
private Long courseColumnDescriptionStorageId;
@Schema(description = "课程ID列表")
private List<Long> courseIds;

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,25 @@
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;
import org.funcode.portal.server.module.ielts.column.domain.vo.CourseColumnAddOrEditVo;
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 李冲
Expand All @@ -32,6 +39,7 @@
public class CourseColumnServiceImpl extends BaseServiceImpl<CourseColumn, Long> implements ICourseColumnService {

private final ICourseColumnRepository courseColumnRepository;
private final ICourseRepository courseRepository;
private final IStorageRepository storageRepository;

@Override
Expand Down Expand Up @@ -76,15 +84,22 @@ public Page<CourseColumn> 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<Long> courseIds = courseColumnAddOrEditVo.getCourseIds();
List<Course> courses = CollectionUtils.isEmpty(courseIds) ? Collections.emptyList() : courseRepository.findAllById(courseIds);
return CourseColumn.builder()
.id(courseColumnAddOrEditVo.getId())
.courseColumnCoverStorage(coverStorage)
.courseColumnDescriptionStorage(descriptionStorage)
.price(courseColumnAddOrEditVo.getPrice())
.status(courseColumnAddOrEditVo.getStatus())
.title(courseColumnAddOrEditVo.getTitle())
.courses(CollectionUtils.isEmpty(courses) ? Collections.emptySet() : new HashSet<>(courses))
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -83,12 +85,17 @@ public Page<Course> 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<Storage> 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<Long> courseAttachmentStorageIds = courseAddOrEditVo.getCourseAttachmentStorageIds();
List<Storage> courseAttachmentStorages = CollectionUtils.isEmpty(courseAttachmentStorageIds) ? Collections.emptyList() : storageRepository.findAllById(courseAttachmentStorageIds);
return Course.builder()
.id(courseAddOrEditVo.getId())
.title(courseAddOrEditVo.getTitle())
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<Long> courseIds;
Expand Down
Loading

0 comments on commit 5416080

Please sign in to comment.