From b6a9c2d3a08645e154cd254ee3717611c07a2608 Mon Sep 17 00:00:00 2001
From: QAIU <736226400@qq.com>
Date: Thu, 7 Nov 2024 18:37:08 +0800
Subject: [PATCH] .
---
core/pom.xml | 6 -
.../java/cn/qaiu/vx/core/util/CommonUtil.java | 19 --
.../cn/qaiu/vx/core/util/JacksonConfig.java | 46 ++++
.../java/cn/qaiu/vx/core/util/ParamUtil.java | 25 +-
.../qaiu/vx/core/verticle/RouterVerticle.java | 3 +
web-front/src/components/DarkMode.vue | 13 +-
.../src/main/java/cn/qaiu/lz/AppMain.java | 1 +
.../java/cn/qaiu/lz/web/model/SysUser.java | 12 +
.../src/main/resources/http-tools/test.http | 2 +-
.../test/java/cn/qaiu/web/test/Test01.java | 219 ------------------
10 files changed, 82 insertions(+), 264 deletions(-)
create mode 100644 core/src/main/java/cn/qaiu/vx/core/util/JacksonConfig.java
delete mode 100644 web-service/src/test/java/cn/qaiu/web/test/Test01.java
diff --git a/core/pom.xml b/core/pom.xml
index ccb07bb..82d72ce 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -60,12 +60,6 @@
commons-lang3
${commons-lang3.version}
-
-
- com.melloware
- commons-beanutils2
- ${commons-beanutils2.version}
-
com.fasterxml.jackson.core
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
index fccfc68..27dff06 100644
--- a/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
+++ b/core/src/main/java/cn/qaiu/vx/core/util/CommonUtil.java
@@ -3,8 +3,6 @@ package cn.qaiu.vx.core.util;
import cn.qaiu.vx.core.annotaions.HandleSortFilter;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonObject;
-import org.apache.commons.beanutils2.ConvertUtils;
-import org.apache.commons.beanutils2.Converter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -99,23 +97,6 @@ public class CommonUtil {
return data;
}
- /**
- * 注册枚举转换器
- *
- * @param enums 枚举类
- */
- @SafeVarargs
- @SuppressWarnings({"unchecked", "rawtypes"})
- public static void enumConvert(Class extends Enum>... enums) {
- for (Class extends Enum> anEnum : enums) {
- ConvertUtils.register(new Converter() {
- public Object convert(Class type, Object value) {
- return Enum.valueOf(anEnum, (String) value);
- }
- }, anEnum);
- }
- }
-
/**
* 处理其他配置
*
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/JacksonConfig.java b/core/src/main/java/cn/qaiu/vx/core/util/JacksonConfig.java
new file mode 100644
index 0000000..b9508d3
--- /dev/null
+++ b/core/src/main/java/cn/qaiu/vx/core/util/JacksonConfig.java
@@ -0,0 +1,46 @@
+package cn.qaiu.vx.core.util;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+import io.vertx.core.json.jackson.DatabindCodec;
+import org.slf4j.LoggerFactory;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @author QAIU
+ * @date 2023/10/14 9:07
+ */
+public class JacksonConfig {
+
+ static {
+ // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
+ // Include.Include.ALWAYS 默认
+ // Include.NON_DEFAULT 属性为默认值不序列化
+ // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量
+ // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化
+ // objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ ObjectMapper objectMapper = DatabindCodec.mapper();
+ objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ JavaTimeModule javaTimeModule = new JavaTimeModule();
+ javaTimeModule.addDeserializer(LocalDateTime.class,
+ new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ javaTimeModule.addDeserializer(LocalDate.class,
+ new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+ javaTimeModule.addDeserializer(LocalTime.class,
+ new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
+ objectMapper.registerModule(javaTimeModule);
+ LoggerFactory.getLogger(JacksonConfig.class).info("Global JacksonConfig complete.");
+ }
+
+ public static void nothing() {}
+
+}
diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
index 60f8975..0b218c0 100644
--- a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
+++ b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java
@@ -1,11 +1,10 @@
package cn.qaiu.vx.core.util;
import io.vertx.core.MultiMap;
-import org.apache.commons.beanutils2.BeanUtils;
+import io.vertx.core.json.JsonObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
@@ -18,29 +17,21 @@ import java.util.Map;
public final class ParamUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(ParamUtil.class);
- public static Map multiMapToMap(MultiMap multiMap) {
+ public static Map multiMapToMap(MultiMap multiMap) {
if (multiMap == null) return null;
- Map map = new HashMap<>();
+ Map map = new HashMap<>();
for (Map.Entry entry : multiMap.entries()) {
map.put(entry.getKey(), entry.getValue());
}
return map;
}
- public static T multiMapToEntity(MultiMap multiMap, Class tClass) throws NoSuchMethodException {
- Map map = multiMapToMap(multiMap);
- T obj = null;
- try {
- obj = tClass.getDeclaredConstructor().newInstance();
- BeanUtils.populate(obj, map);
- } catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- LOGGER.error("实例化异常");
- } catch (InvocationTargetException e2) {
- e2.printStackTrace();
- LOGGER.error("map2bean转换异常");
+ public static T multiMapToEntity(MultiMap multiMap, Class tClass) {
+ Map map = multiMapToMap(multiMap);
+ if (map == null) {
+ return null;
}
- return obj;
+ return new JsonObject(map).mapTo(tClass);
}
public static MultiMap paramsToMap(String paramString) {
diff --git a/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java b/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java
index 5278ec1..4eefaf6 100644
--- a/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java
+++ b/core/src/main/java/cn/qaiu/vx/core/verticle/RouterVerticle.java
@@ -2,6 +2,7 @@ package cn.qaiu.vx.core.verticle;
import cn.qaiu.vx.core.handlerfactory.RouterHandlerFactory;
import cn.qaiu.vx.core.util.CommonUtil;
+import cn.qaiu.vx.core.util.JacksonConfig;
import cn.qaiu.vx.core.util.SharedDataUtil;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
@@ -30,6 +31,8 @@ public class RouterVerticle extends AbstractVerticle {
private HttpServer server;
static {
+ LOGGER.info(JacksonConfig.class.getSimpleName() + " >> ");
+ JacksonConfig.nothing();
LOGGER.info("To start listening to port {} ......", port);
}
diff --git a/web-front/src/components/DarkMode.vue b/web-front/src/components/DarkMode.vue
index 403c8e4..5318652 100644
--- a/web-front/src/components/DarkMode.vue
+++ b/web-front/src/components/DarkMode.vue
@@ -11,7 +11,7 @@
diff --git a/web-service/src/main/java/cn/qaiu/lz/AppMain.java b/web-service/src/main/java/cn/qaiu/lz/AppMain.java
index caf50c6..4850e87 100644
--- a/web-service/src/main/java/cn/qaiu/lz/AppMain.java
+++ b/web-service/src/main/java/cn/qaiu/lz/AppMain.java
@@ -28,6 +28,7 @@ public class AppMain {
}
/**
+ * 框架回调方法
* 初始化数据库/缓存等
*
* @param jsonObject 配置
diff --git a/web-service/src/main/java/cn/qaiu/lz/web/model/SysUser.java b/web-service/src/main/java/cn/qaiu/lz/web/model/SysUser.java
index 7ccfefc..33f1edc 100644
--- a/web-service/src/main/java/cn/qaiu/lz/web/model/SysUser.java
+++ b/web-service/src/main/java/cn/qaiu/lz/web/model/SysUser.java
@@ -2,11 +2,15 @@ package cn.qaiu.lz.web.model;
import cn.qaiu.db.ddl.Table;
import cn.qaiu.lz.common.ToJson;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
@Data
@DataObject
@NoArgsConstructor
@@ -16,9 +20,17 @@ public class SysUser implements ToJson {
private String username;
private String password;
+ private Integer age;
+ @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
+ private LocalDateTime createTime;
+
public SysUser(JsonObject json) {
this.id = json.getString("id");
this.username = json.getString("username");
this.password = json.getString("password");
+ this.age = json.getInteger("age");
+ if (json.getString("createTime") != null) {
+ this.createTime = LocalDateTime.parse(json.getString("createTime"));
+ }
}
}
diff --git a/web-service/src/main/resources/http-tools/test.http b/web-service/src/main/resources/http-tools/test.http
index 478fc53..3b70e83 100644
--- a/web-service/src/main/resources/http-tools/test.http
+++ b/web-service/src/main/resources/http-tools/test.http
@@ -181,7 +181,7 @@ GET http://127.0.0.1:6400/v2/linkInfo?url=https://www.123865.com/s/iaKtVv-6OECd.
GET http://127.0.0.1:6400/v2/linkInfo?url=https://pan.seeoss.com/s/nLNsQ&pwd=DcGe
###
-POST http://127.0.0.1:6400/v2/login?username=asd
+POST http://127.0.0.1:6400/v2/login?username=asd&age=12&password=123123&createTime=2011-12-03T10:15:30
diff --git a/web-service/src/test/java/cn/qaiu/web/test/Test01.java b/web-service/src/test/java/cn/qaiu/web/test/Test01.java
deleted file mode 100644
index 15460b2..0000000
--- a/web-service/src/test/java/cn/qaiu/web/test/Test01.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package cn.qaiu.web.test;
-
-import io.vertx.ext.web.RoutingContext;
-import org.apache.commons.beanutils2.BeanUtils;
-import org.apache.commons.beanutils2.ConvertUtils;
-import org.apache.commons.beanutils2.Converter;
-import org.apache.commons.lang3.time.DateFormatUtils;
-import org.apache.commons.lang3.time.DateUtils;
-import org.junit.Test;
-
-import java.lang.reflect.InvocationTargetException;
-import java.text.ParseException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- *
Create date 2021/4/29 15:27
- * @author QAIU
- */
-public class Test01 {
-
- public static class A {
- String name;
- String num;
- String num2;
- String num3;
-
- Integer num5;
- public Integer getNum5() {
- return num5;
- }
-
- public void setNum5(Integer num5) {
- this.num5 = num5;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getNum() {
- return num;
- }
-
- public void setNum(String num) {
- this.num = num;
- }
-
- public String getNum2() {
- return num2;
- }
-
- public void setNum2(String num2) {
- this.num2 = num2;
- }
-
- public String getNum3() {
- return num3;
- }
-
- public void setNum3(String num3) {
- this.num3 = num3;
- }
- }
-
-
- public static class B0{
- int num;
-
- public int getNum() {
- return num;
- }
-
- public void setNum(int num) {
- this.num = num;
- }
-
- }
-
- public static class B extends B0{
- String name;
-
- boolean flag;
- int num4;
- Date date;
- String dateStr;
-
- Integer num5;
-
- public Boolean getFlag() {
- return flag;
- }
-
- public void setFlag(Boolean flag) {
- this.flag = flag;
- }
-
- public Integer getNum5() {
- return num5;
- }
-
- public void setNum5(Integer num5) {
- this.num5 = num5;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public String getDateStr() {
- return dateStr;
- }
-
- public void setDateStr(String dateStr) {
- this.dateStr = dateStr;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getNum4() {
- return num4;
- }
-
- public void setNum4(int num4) {
- this.num4 = num4;
- }
-
- @Override
- public String toString() {
- return "B{" +
- "num=" + num +
- ", name='" + name + '\'' +
- ", flag=" + flag +
- ", num4=" + num4 +
- ", date=" + date +
- ", dateStr='" + dateStr + '\'' +
- ", num5=" + num5 +
- '}';
- }
- }
-
-
- public static T getParamsToBean(RoutingContext ctx, Class tClass) {
-// ObjectUtils.identityToString()
- return null;
- }
-
- @Test
- public void test01() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
-
- A a = new A();
- a.setName("asd");
- a.setNum("123");
- a.setNum2("123");
- a.setNum3("123");
- a.setNum5(9999);
- B b = new B();
- BeanUtils.copyProperties(b, a);
- System.out.println(b);
- a.setNum5(233);
- System.out.println(b);
- Map map = new HashMap<>();
- map.put("name", "小米");
- map.put("flag", "1");
- map.put("num", "553454344");
- map.put("num2", "123");
- map.put("num4", "q");
- map.put("dateStr", new Date());
- map.put("date", "2021-01-01");
- B b1 = new B();
-
- ConvertUtils.register(
- new Converter() {
- @Override
- public T convert(Class clazz, Object value) {
- //字符串转换为日期
- try {
- return (T) DateUtils.parseDate(value.toString(), "yyyy-MM-dd");
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- }, Date.class);
-
-
- ConvertUtils.register(
- new Converter() {
- @Override
- public T convert(Class clazz, Object value) {
- //日期->字符串
- try {
- return (T) DateFormatUtils.format((Date) value, "yyyy-MM-dd");
- }catch (Exception e){
- return (T)value;
- }
- }
- }, String.class);
-
- BeanUtils.populate(b1, map);
- System.out.println(b1);
- }
-
-}