diff --git a/plusone-basic/plusone-basic-infrastructure/src/main/java/xyz/zhouxy/plusone/jdbc/BeanPropertyParamSource.java b/plusone-basic/plusone-basic-infrastructure/src/main/java/xyz/zhouxy/plusone/jdbc/BeanPropertyParamSource.java index bcb72b0..4af7f99 100644 --- a/plusone-basic/plusone-basic-infrastructure/src/main/java/xyz/zhouxy/plusone/jdbc/BeanPropertyParamSource.java +++ b/plusone-basic/plusone-basic-infrastructure/src/main/java/xyz/zhouxy/plusone/jdbc/BeanPropertyParamSource.java @@ -3,6 +3,9 @@ package xyz.zhouxy.plusone.jdbc; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.lang.Nullable; +import xyz.zhouxy.plusone.commons.exception.IWithCode; +import xyz.zhouxy.plusone.commons.exception.IWithIntCode; + /** * 扩展了 {@link BeanPropertySqlParameterSource},在将 POJO 转换为 * {@link org.springframework.jdbc.core.namedparam.SqlParameterSource} 时, @@ -17,17 +20,23 @@ import org.springframework.lang.Nullable; */ public class BeanPropertyParamSource extends BeanPropertySqlParameterSource { - public BeanPropertyParamSource(Object object) { - super(object); - } + public BeanPropertyParamSource(Object object) { + super(object); + } - @Override - @Nullable - public Object getValue(String paramName) throws IllegalArgumentException { - Object value = super.getValue(paramName); - if (value instanceof Enum) { - return ((Enum) value).ordinal(); - } - return value; - } + @Override + @Nullable + public Object getValue(String paramName) throws IllegalArgumentException { + Object value = super.getValue(paramName); + if (value instanceof Enum e) { + if (value instanceof IWithCode c) { + return c.getCode(); + } + if (value instanceof IWithIntCode c) { + return c.getCode(); + } + return e.ordinal(); + } + return value; + } } diff --git a/plusone-system/plusone-system-domain/src/main/java/xyz/zhouxy/plusone/system/domain/model/menu/Menu.java b/plusone-system/plusone-system-domain/src/main/java/xyz/zhouxy/plusone/system/domain/model/menu/Menu.java index e415593..3eabc13 100644 --- a/plusone-system/plusone-system-domain/src/main/java/xyz/zhouxy/plusone/system/domain/model/menu/Menu.java +++ b/plusone-system/plusone-system-domain/src/main/java/xyz/zhouxy/plusone/system/domain/model/menu/Menu.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; import lombok.ToString; +import xyz.zhouxy.plusone.commons.exception.IWithIntCode; import xyz.zhouxy.plusone.constant.EntityStatus; import xyz.zhouxy.plusone.domain.AggregateRoot; import xyz.zhouxy.plusone.domain.IWithOrderNumber; @@ -129,12 +130,28 @@ public class Menu extends AggregateRoot implements IWithOrderNumber, IWith this.version = version; } - public enum MenuType { - MENU_LIST, MENU_ITEM; + public enum MenuType implements IWithIntCode { + MENU_LIST(0), MENU_ITEM(1); + + private final int code; + + private MenuType(int code) { + this.code = code; + } @JsonValue - public int value() { - return ordinal(); + @Override + public int getCode() { + return code; + } + + public static MenuType valueOf(int code) { + for (MenuType value : values()) { + if (value.code == code) { + return value; + } + } + throw new EnumConstantNotPresentException(MenuType.class, Integer.toString(code)); } } }