// Path: jbase-spring/src/main/java/com/jayqqaa12/jbase/spring/db/BaseModel.java
// @Data
// @ToString(callSuper = true)
// public abstract class BaseModel implements Serializable {
// 
//     @JSONField(serializeUsing = ToStringSerializer.class)
//     @Id
//     @JsonSerialize(using = JacksonToStringSerializer.class)
//     @TableId(type = IdType.ID_WORKER)
//     protected Long id;
// 
//     /**
//      * 加个方法方便链式调用
//      *
//      * @param id
//      * @return
//      */
//     public <T> T settId(Long id) {
//         this.id = id;
// 
//         return (T) this;
//     }
// 
// 
//     public enum Status {
//         CLOSE, OPEN;
// 
//         public static Status valueOf(int v) {
//             for (Status status : values()) {
//                 if (status.ordinal() == v) return status;
//             }
//             throw new IllegalStateException(" error param enum for status");
//         }
//     }
// 
//     public enum Deleted {
//         FALSE, TRUE;
// 
//         public static Deleted valueOf(int v) {
//             for (Deleted deleted : values()) {
//                 if (deleted.ordinal() == v) return deleted;
//             }
//             throw new IllegalStateException(" error param enum for deleted");
//         }
//     }
// 
// }


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.jayqqaa12.jbase.spring.db.BaseModel;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Type;
package com.jayqqaa12.jbase.spring.serialize.json;




/**
 * spring mvc 不能把字符串解析成 enum
 * 所以用这个转换一下字符串的
 */
@Slf4j
public class EnumDeserializer implements ObjectDeserializer {
    @Override
    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
        parser.parse();
        String input = parser.getInput();
        Integer value = JSON.parseObject(input)
                .getInteger((String) fieldName);

        if (value == null) return null;

// Path: jbase-spring/src/main/java/com/jayqqaa12/jbase/spring/db/BaseModel.java
// @Data
// @ToString(callSuper = true)
// public abstract class BaseModel implements Serializable {
// 
//     @JSONField(serializeUsing = ToStringSerializer.class)
//     @Id
//     @JsonSerialize(using = JacksonToStringSerializer.class)
//     @TableId(type = IdType.ID_WORKER)
//     protected Long id;
// 
//     /**
//      * 加个方法方便链式调用
//      *
//      * @param id
//      * @return
//      */
//     public <T> T settId(Long id) {
//         this.id = id;
// 
//         return (T) this;
//     }
// 
// 
//     public enum Status {
//         CLOSE, OPEN;
// 
//         public static Status valueOf(int v) {
//             for (Status status : values()) {
//                 if (status.ordinal() == v) return status;
//             }
//             throw new IllegalStateException(" error param enum for status");
//         }
//     }
// 
//     public enum Deleted {
//         FALSE, TRUE;
// 
//         public static Deleted valueOf(int v) {
//             for (Deleted deleted : values()) {
//                 if (deleted.ordinal() == v) return deleted;
//             }
//             throw new IllegalStateException(" error param enum for deleted");
//         }
//     }
// 
// }


// Path: jbase-spring/src/main/java/com/jayqqaa12/jbase/spring/serialize/json/EnumDeserializer.java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.jayqqaa12.jbase.spring.db.BaseModel;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Type;

package com.jayqqaa12.jbase.spring.serialize.json;




/**
 * spring mvc 不能把字符串解析成 enum
 * 所以用这个转换一下字符串的
 */
@Slf4j
public class EnumDeserializer implements ObjectDeserializer {
    @Override
    public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
        parser.parse();
        String input = parser.getInput();
        Integer value = JSON.parseObject(input)
                .getInteger((String) fieldName);

        if (value == null) return null;

        if (type == (BaseModel.Deleted.class)) {