diff --git a/src/main/java/run/halo/app/model/dto/TagDTO.java b/src/main/java/run/halo/app/model/dto/TagDTO.java index a58a2103f..aab99345c 100644 --- a/src/main/java/run/halo/app/model/dto/TagDTO.java +++ b/src/main/java/run/halo/app/model/dto/TagDTO.java @@ -4,6 +4,7 @@ import java.util.Date; import lombok.Data; import run.halo.app.model.dto.base.OutputConverter; import run.halo.app.model.entity.Tag; +import run.halo.app.model.support.HaloConst; /** * Tag output dto. @@ -21,6 +22,8 @@ public class TagDTO implements OutputConverter { private String slug; + private String color = HaloConst.DEFAULT_TAG_COLOR; + private String thumbnail; private Date createTime; diff --git a/src/main/java/run/halo/app/model/entity/Tag.java b/src/main/java/run/halo/app/model/entity/Tag.java index 4dae125fd..25c9e3b17 100644 --- a/src/main/java/run/halo/app/model/entity/Tag.java +++ b/src/main/java/run/halo/app/model/entity/Tag.java @@ -16,6 +16,7 @@ import org.hibernate.annotations.GenericGenerator; * Tag entity * * @author ryanwang + * @author guqing * @date 2019-03-12 */ @Data @@ -50,6 +51,12 @@ public class Tag extends BaseEntity { @Column(name = "slug", unique = true) private String slug; + /** + * Tag color. + */ + @Column(name = "color", length = 25) + private String color; + /** * Cover thumbnail of the tag. */ diff --git a/src/main/java/run/halo/app/model/params/TagParam.java b/src/main/java/run/halo/app/model/params/TagParam.java index 8be796ae7..40676e0fe 100644 --- a/src/main/java/run/halo/app/model/params/TagParam.java +++ b/src/main/java/run/halo/app/model/params/TagParam.java @@ -1,11 +1,13 @@ package run.halo.app.model.params; +import io.swagger.annotations.ApiModelProperty; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import lombok.Data; import org.apache.commons.lang3.StringUtils; import run.halo.app.model.dto.base.InputConverter; import run.halo.app.model.entity.Tag; +import run.halo.app.model.support.HaloConst; import run.halo.app.utils.SlugUtils; /** @@ -13,6 +15,7 @@ import run.halo.app.utils.SlugUtils; * * @author johnniang * @author ryanwang + * @author guqing * @date 2019-03-20 */ @Data @@ -25,6 +28,13 @@ public class TagParam implements InputConverter { @Size(max = 255, message = "标签别名的字符长度不能超过 {max}") private String slug; + @Size(max = 24, message = "颜色值字符长度不能超过 {max}") + @ApiModelProperty(value = "标签颜色,支持多种颜色模式," + + "例如 Hex: #cfd3d7,颜色名称:LightGrey,RGB: rgb(207, 211, 215)," + + "RGBA: rgb(207, 211, 215, 0.5)等", name = "color", + example = "#e23d66") + private String color; + @Size(max = 1023, message = "封面图链接的字符长度不能超过 {max}") private String thumbnail; @@ -37,6 +47,10 @@ public class TagParam implements InputConverter { thumbnail = ""; } + if (StringUtils.isBlank(color)) { + this.color = HaloConst.DEFAULT_TAG_COLOR; + } + return InputConverter.super.convertTo(); } @@ -49,6 +63,10 @@ public class TagParam implements InputConverter { thumbnail = ""; } + if (StringUtils.isBlank(color)) { + this.color = HaloConst.DEFAULT_TAG_COLOR; + } + InputConverter.super.update(tag); } } diff --git a/src/main/java/run/halo/app/model/support/HaloConst.java b/src/main/java/run/halo/app/model/support/HaloConst.java index c6724281e..9843b9769 100644 --- a/src/main/java/run/halo/app/model/support/HaloConst.java +++ b/src/main/java/run/halo/app/model/support/HaloConst.java @@ -8,6 +8,7 @@ import org.springframework.http.HttpHeaders; * Halo constants. * * @author ryanwang + * @author guqing * @date 2017/12/29 */ public class HaloConst { @@ -58,6 +59,11 @@ public class HaloConst { */ public static final String DEFAULT_ERROR_PATH = "common/error/error"; + /** + * Default tag color. + */ + public static final String DEFAULT_TAG_COLOR = "#cfd3d7"; + /** * Path separator. */ @@ -67,6 +73,7 @@ public class HaloConst { * Post password template name. */ public static final String POST_PASSWORD_TEMPLATE = "post_password"; + /** * Suffix of freemarker template file. */