package quant.rich.emoney.controller.api; import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.NonNull; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.protobuf.nano.MessageNano; import org.apache.commons.lang3.StringUtils; import org.reflections.Reflections; import lombok.extern.slf4j.Slf4j; import nano.BaseResponse.Base_Response; import quant.rich.emoney.entity.sqlite.ProtocolMatch; import quant.rich.emoney.exception.RException; import quant.rich.emoney.interfaces.IQueryableEnum; import quant.rich.emoney.pojo.dto.EmoneyConvertResult; import quant.rich.emoney.pojo.dto.EmoneyProtobufBody; import quant.rich.emoney.service.sqlite.ProtocolMatchService; @RestController @RequestMapping("/api/v1/common") @Slf4j public class CommonAbilityControllerV1 { @Autowired Reflections reflections; @GetMapping("/getIQueryableEnum") public Map getIQueryableEnum(String enumName) { Set> enums = reflections.getSubTypesOf(IQueryableEnum.class); Map map = new HashMap<>(); for (Class clazz : enums) { if (clazz.getSimpleName().equals(enumName) && clazz.isEnum()) { @SuppressWarnings({ "unchecked", "rawtypes" }) Class enumClass = (Class>) clazz; for (Enum e : enumClass.getEnumConstants()) { if (e instanceof IQueryableEnum iqe) { map.put(e.name(), iqe.getNote()); } } break; } } return map; } }