提交 f5934210 编写于 作者: lakernote's avatar lakernote

枚举类参数和响应

上级 9419c339
package com.laker.admin.framework.ext.mvc;
/**
* @author: laker
* @date: 2022/11/25
**/
public interface IEnumConvert {
String getValue();
import java.io.Serializable;
/**
* @author laker
*/
public interface IEnum<T extends Serializable> {
T getValue();
}
......@@ -15,18 +15,18 @@ public class StringToEnumConvertFactory implements ConditionalGenericConverter {
@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
return IEnumConvert.class.isAssignableFrom(targetType.getObjectType()) && sourceType.getObjectType() == String.class;
return IEnum.class.isAssignableFrom(targetType.getObjectType()) && sourceType.getObjectType() == String.class;
}
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
return null;// NOSONAR
return null;
}
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
IEnumConvert[] enums = (IEnumConvert[]) targetType.getObjectType().getEnumConstants();
for (IEnumConvert anEnum : enums) {
IEnum[] enums = (IEnum[]) targetType.getObjectType().getEnumConstants();
for (IEnum anEnum : enums) {
if (Objects.equals(anEnum.getValue(), source)) {
return anEnum;
}
......
package com.laker.admin.module.enums;
import com.fasterxml.jackson.annotation.JsonValue;
import com.laker.admin.framework.ext.mvc.IEnumConvert;
import lombok.Getter;
@Getter
public enum DemoEnum implements IEnumConvert {
START(1, "start"), STOP(0, "stop");
DemoEnum(int code, String descp) {
this.code = code;
this.descp = descp;
}
private final int code;
private final String descp;
@Override
@JsonValue
public String getValue() {
return descp;
}
}
package com.laker.admin.module.enums;
import com.laker.admin.framework.ext.mvc.IEnumConvert;
import com.fasterxml.jackson.annotation.JsonValue;
import com.laker.admin.framework.ext.mvc.IEnum;
public enum Distance implements IEnumConvert {
public enum Distance implements IEnum<String> {
KILOMETER("km", 1000),
MILE("miles", 1609.34),
METER("meters", 1);
private String unit;
private final double meters;
......@@ -16,6 +17,7 @@ public enum Distance implements IEnumConvert {
}
@Override
@JsonValue
public String getValue() {
return unit;
}
......
package com.laker.admin.module.ext.controller;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.laker.admin.module.enums.DemoEnum;
import com.laker.admin.module.enums.DemoTypeEnum;
import com.laker.admin.module.ext.vo.qo.DemoQo;
import com.laker.admin.module.enums.Distance;
import com.laker.admin.module.ext.vo.qo.City;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -36,21 +36,21 @@ public class DemoController {
@GetMapping("/1")
@ApiOperation(value = "枚举 - querystring")
public void pageAll2(DemoEnum type) {
log.info(type.toString());
public void pageAll2(Distance distance) {
log.info(distance.toString());
}
@GetMapping("/2")
@ApiOperation(value = "实体 - querystring")
public void pageAll3(DemoQo type) {
log.info(type.toString());
public void pageAll3(City city) {
log.info(city.toString());
}
@PostMapping("/3")
@ApiOperation(value = "实体 - json")
public DemoQo pageAll4(@RequestBody DemoQo type) {
log.info(type.toString());
return type;
public City pageAll4(@RequestBody City city) {
log.info(city.toString());
return city;
}
}
\ No newline at end of file
package com.laker.admin.module.ext.vo.qo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.laker.admin.module.enums.Distance;
import lombok.Data;
@Data
public class City {
private String id;
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
private Distance distance;
}
package com.laker.admin.module.ext.vo.qo;
import com.laker.admin.module.enums.DemoEnum;
import com.laker.admin.module.enums.Distance;
import lombok.Data;
@Data
public class DemoQo {
private DemoEnum demo;
private Distance distance;
private String city;
private Integer value;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册