diff --git a/flyfish-common/src/main/java/com/flyfish/framework/enums/NamedEnum.java b/flyfish-common/src/main/java/com/flyfish/framework/enums/NamedEnum.java new file mode 100644 index 0000000..161f37c --- /dev/null +++ b/flyfish-common/src/main/java/com/flyfish/framework/enums/NamedEnum.java @@ -0,0 +1,11 @@ +package com.flyfish.framework.enums; + +/** + * 带有名称字段的枚举 + * + * @author wangyu + */ +public interface NamedEnum { + + String getName(); +} diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java new file mode 100644 index 0000000..0686a8f --- /dev/null +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/base/NameLikeQo.java @@ -0,0 +1,74 @@ +package com.flyfish.framework.domain.base; + +import com.flyfish.framework.builder.CriteriaBuilder; +import com.flyfish.framework.domain.base.BaseQo; +import com.flyfish.framework.domain.base.Domain; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.util.StringUtils; + +import java.util.Collection; + +/** + * 基于名字模糊匹配的查询实体 + */ +@Getter +@Setter +public abstract class NameLikeQo extends BaseQo { + + protected String name; + + protected String code; + + protected String createTimeStart; + + protected String createTimeEnd; + + protected String modifyTimeStart; + + protected String modifyTimeEnd; + + protected String creatorId; + + protected String modifierId; + + protected Boolean enable; + + protected Collection ids; + + protected String excludeId; + + /** + * 排序参数 + */ + private String sort; + + /** + * 去重字段 + */ + private String distinct; + + @Override + public CriteriaBuilder criteriaBuilder() { + return CriteriaBuilder.accept(this) + .with("name", CriteriaBuilder.Builders.LIKE) + .with("enable", "code", "creatorId", "modifierId") + .with("ids", "id", CriteriaBuilder.Builders.IN) + .with("excludeId", "id", Criteria::ne) + .with("createTimeStart", "createTime", CriteriaBuilder.Builders.DATE_GTE) + .with("createTimeEnd", "createTime", CriteriaBuilder.Builders.DATE_LTE) + .with("modifyTimeStart", "modifyTime", CriteriaBuilder.Builders.DATE_GTE) + .with("modifyTimeEnd", "modifyTime", CriteriaBuilder.Builders.DATE_LTE); + } + + + @Override + public Sort sorts() { + if (StringUtils.isEmpty(sort)) { + return super.sorts(); + } + return Sort.by(Sort.Order.desc(sort)); + } +}