diff --git a/agileboot-common/pom.xml b/agileboot-common/pom.xml
index d4b0064..a6bf8a8 100644
--- a/agileboot-common/pom.xml
+++ b/agileboot-common/pom.xml
@@ -161,6 +161,19 @@
1.6.2
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
diff --git a/agileboot-common/src/main/java/com/agileboot/common/core/base/BaseEntity.java b/agileboot-common/src/main/java/com/agileboot/common/core/base/BaseEntity.java
index 77f8557..4d7e2e2 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/core/base/BaseEntity.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/core/base/BaseEntity.java
@@ -7,12 +7,14 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import lombok.Data;
+import lombok.EqualsAndHashCode;
/**
* Entity基类
*
* @author valarchie
*/
+@EqualsAndHashCode(callSuper = true)
@Data
public class BaseEntity> extends Model {
diff --git a/agileboot-common/src/main/java/com/agileboot/common/core/page/PageDTO.java b/agileboot-common/src/main/java/com/agileboot/common/core/page/PageDTO.java
index 72a083e..e78fcec 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/core/page/PageDTO.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/core/page/PageDTO.java
@@ -5,6 +5,7 @@ import java.util.List;
import lombok.Data;
/**
+ * 分页模型类
* @author valarchie
*/
@Data
@@ -24,6 +25,7 @@ public class PageDTO {
this.total = (long) list.size();
}
+ @SuppressWarnings("rawtypes")
public PageDTO(Page page) {
this.rows = page.getRecords();
this.total = page.getTotal();
diff --git a/agileboot-common/src/main/java/com/agileboot/common/exception/error/ErrorCodeInterface.java b/agileboot-common/src/main/java/com/agileboot/common/exception/error/ErrorCodeInterface.java
index 0897c90..5eb732f 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/exception/error/ErrorCodeInterface.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/exception/error/ErrorCodeInterface.java
@@ -2,12 +2,27 @@ package com.agileboot.common.exception.error;
public interface ErrorCodeInterface {
+ /**
+ * @return 返回枚举名称
+ */
String name();
+ /**
+ * 返回错误码
+ * @return 错误码
+ */
int code();
+ /**
+ *
+ * @return 错误描述
+ */
String message();
+ /**
+ * i18n资源文件的key, 详见messages.properties文件
+ * @return key
+ */
default String i18nKey() {
return code() + "_" + name();
}
diff --git a/agileboot-common/src/main/java/com/agileboot/common/utils/ip/IpRegionUtil.java b/agileboot-common/src/main/java/com/agileboot/common/utils/ip/IpRegionUtil.java
index a42a2e3..cc72fb6 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/utils/ip/IpRegionUtil.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/utils/ip/IpRegionUtil.java
@@ -1,6 +1,7 @@
package com.agileboot.common.utils.ip;
/**
+ * IP地理位置工具类
* @author valarchie
*/
public class IpRegionUtil {
diff --git a/agileboot-common/src/main/java/com/agileboot/common/utils/jackson/JacksonException.java b/agileboot-common/src/main/java/com/agileboot/common/utils/jackson/JacksonException.java
index 0f43c90..0ac0924 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/utils/jackson/JacksonException.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/utils/jackson/JacksonException.java
@@ -4,6 +4,7 @@ package com.agileboot.common.utils.jackson;
* @author valarchie
*/
public class JacksonException extends RuntimeException {
+
public JacksonException() {
super();
}
diff --git a/agileboot-common/src/main/java/com/agileboot/common/utils/poi/CustomExcelUtil.java b/agileboot-common/src/main/java/com/agileboot/common/utils/poi/CustomExcelUtil.java
index 88deb9d..9d2fc4c 100644
--- a/agileboot-common/src/main/java/com/agileboot/common/utils/poi/CustomExcelUtil.java
+++ b/agileboot-common/src/main/java/com/agileboot/common/utils/poi/CustomExcelUtil.java
@@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
/**
+ * 自定义Excel 导入导出工具
* @author valarchie
*/
public class CustomExcelUtil {
diff --git a/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePickUtil.java b/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePickUtil.java
new file mode 100644
index 0000000..0eb2411
--- /dev/null
+++ b/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePickUtil.java
@@ -0,0 +1,52 @@
+package com.agileboot.common.utils.time;
+
+import cn.hutool.core.date.DateUtil;
+import java.util.Date;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author valarchie
+ */
+@Slf4j
+public class DatePickUtil {
+
+ /**
+ * 安全地获取日期的一天开始时间, date为null 则返回null
+ * DateUtil.beginOfDay(date) 如果传null 会NPE
+ * @param date
+ * @return
+ */
+ public static Date getBeginOfTheDay(Date date) {
+ if (date == null) {
+ return null;
+ }
+ try {
+ return DateUtil.beginOfDay(date);
+ } catch (Exception e) {
+ log.error("pick begin of the day failed, due to: ", e);
+ }
+ return null;
+ }
+
+ /**
+ * 安全地获取日期的一天结束时间, date为null 则返回null。 避免NPE
+ * DateUtil.endOfDay(date) 如果传null 会NPE
+ * @param date 23:59:59
+ * @return
+ */
+ public static Date getEndOfTheDay(Date date) {
+ if (date == null) {
+ return null;
+ }
+
+ try {
+ return DateUtil.endOfDay(date);
+ } catch (Exception e) {
+ log.error("pick end of the day failed, due to: ", e);
+ }
+ return null;
+ }
+
+
+
+}
diff --git a/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePicker.java b/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePicker.java
deleted file mode 100644
index 6c25e2d..0000000
--- a/agileboot-common/src/main/java/com/agileboot/common/utils/time/DatePicker.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.agileboot.common.utils.time;
-
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import java.util.Date;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author valarchie
- */
-@Slf4j
-public class DatePicker {
-
- public static Date getBeginOfTheDay(Object date) {
- if (date == null) {
- return null;
- }
- try {
- DateTime parse = DateUtil.parse(date.toString());
- return DateUtil.beginOfDay(parse);
- } catch (Exception e) {
- log.error("pick begin of day failed, due to: ", e);
- }
- return null;
- }
-
- public static Date getEndOfTheDay(Object date) {
- if (date == null) {
- return null;
- }
- try {
- DateTime parse = DateUtil.parse(date.toString());
- return DateUtil.endOfDay(parse);
- } catch (Exception e) {
- log.error("pick end of day failed, due to: ", e);
- }
- return null;
- }
-
-
-
-}
diff --git a/agileboot-common/src/test/java/com/agileboot/common/core/exception/ApiExceptionTest.java b/agileboot-common/src/test/java/com/agileboot/common/core/exception/ApiExceptionTest.java
index cc265e6..ea708ef 100644
--- a/agileboot-common/src/test/java/com/agileboot/common/core/exception/ApiExceptionTest.java
+++ b/agileboot-common/src/test/java/com/agileboot/common/core/exception/ApiExceptionTest.java
@@ -9,16 +9,21 @@ public class ApiExceptionTest {
@Test
public void testVarargsWithArrayArgs() {
String errorMsg = "these parameters are null: %s, %s, %s.";
-
Object[] array = new Object[] { "param1" , "param2" , "param3"};
- String format1 = String.format(errorMsg, array);
- String format2 = String.format(errorMsg, "param1", "param2", "param3");
+ String formatWithArray = String.format(errorMsg, array);
+ String formatWithVarargs = String.format(errorMsg, "param1", "param2", "param3");
- System.out.println(format1);
- System.out.println(format2);
+ Assert.assertEquals(formatWithVarargs, formatWithArray);
+ }
- Assert.assertEquals(format1, format2);
+ @Test
+ public void testVarargsWithNullArgs() {
+ String errorMsg = "these parameters are null: %s, %s, %s.";
+
+ String format = String.format(errorMsg, "param1", null, null);
+
+ Assert.assertEquals("these parameters are null: param1, null, null.", format);
}
}
diff --git a/agileboot-common/src/test/java/com/agileboot/common/utils/JacksonUtilTest.java b/agileboot-common/src/test/java/com/agileboot/common/utils/jackson/JacksonUtilTest.java
similarity index 97%
rename from agileboot-common/src/test/java/com/agileboot/common/utils/JacksonUtilTest.java
rename to agileboot-common/src/test/java/com/agileboot/common/utils/jackson/JacksonUtilTest.java
index 2d7647c..ece1f33 100644
--- a/agileboot-common/src/test/java/com/agileboot/common/utils/JacksonUtilTest.java
+++ b/agileboot-common/src/test/java/com/agileboot/common/utils/jackson/JacksonUtilTest.java
@@ -1,7 +1,6 @@
-package com.agileboot.common.utils;
+package com.agileboot.common.utils.jackson;
import cn.hutool.core.date.DateUtil;
-import com.agileboot.common.utils.jackson.JacksonUtil;
import java.math.BigDecimal;
import java.math.BigInteger;
import org.junit.Assert;
diff --git a/agileboot-common/src/test/java/com/agileboot/common/utils/Person.java b/agileboot-common/src/test/java/com/agileboot/common/utils/jackson/Person.java
similarity index 96%
rename from agileboot-common/src/test/java/com/agileboot/common/utils/Person.java
rename to agileboot-common/src/test/java/com/agileboot/common/utils/jackson/Person.java
index dc2b4d0..0c7cb6b 100644
--- a/agileboot-common/src/test/java/com/agileboot/common/utils/Person.java
+++ b/agileboot-common/src/test/java/com/agileboot/common/utils/jackson/Person.java
@@ -1,4 +1,4 @@
-package com.agileboot.common.utils;
+package com.agileboot.common.utils.jackson;
import java.math.BigDecimal;
import java.time.LocalDateTime;
diff --git a/agileboot-common/src/test/java/com/agileboot/common/utils/time/DatePickUtilTest.java b/agileboot-common/src/test/java/com/agileboot/common/utils/time/DatePickUtilTest.java
new file mode 100644
index 0000000..7d48468
--- /dev/null
+++ b/agileboot-common/src/test/java/com/agileboot/common/utils/time/DatePickUtilTest.java
@@ -0,0 +1,46 @@
+package com.agileboot.common.utils.time;
+
+import java.util.Calendar;
+import java.util.Date;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+class DatePickUtilTest {
+
+ @Test
+ void testGetBeginOfTheDay() {
+ Date beginOfTheDay = DatePickUtil.getBeginOfTheDay(new Date());
+
+ Calendar instance = Calendar.getInstance();
+ instance.setTime(beginOfTheDay);
+
+ Assertions.assertEquals(0, instance.get(Calendar.HOUR));
+ Assertions.assertEquals(0, instance.get(Calendar.MINUTE));
+ Assertions.assertEquals(0, instance.get(Calendar.SECOND));
+ }
+
+ @Test
+ void testGetBeginOfTheDayWhenNull() {
+ Assertions.assertDoesNotThrow(() -> DatePickUtil.getBeginOfTheDay(null)
+ );
+ }
+
+ @Test
+ void testGetEndOfTheDay() {
+ Date endOfTheDay = DatePickUtil.getEndOfTheDay(new Date());
+
+ Calendar instance = Calendar.getInstance();
+ instance.setTime(endOfTheDay);
+
+ Assertions.assertEquals(23, instance.get(Calendar.HOUR_OF_DAY));
+ Assertions.assertEquals(59, instance.get(Calendar.MINUTE));
+ Assertions.assertEquals(59, instance.get(Calendar.SECOND));
+ }
+
+ @Test
+ void testGetEndOfTheDayWhenNull() {
+ Assertions.assertDoesNotThrow(() -> DatePickUtil.getEndOfTheDay(null)
+ );
+ }
+
+}
diff --git a/agileboot-infrastructure/src/test/java/com/agileboot/orm/query/AbstractQueryTest.java b/agileboot-infrastructure/src/test/java/com/agileboot/orm/query/AbstractQueryTest.java
new file mode 100644
index 0000000..5161461
--- /dev/null
+++ b/agileboot-infrastructure/src/test/java/com/agileboot/orm/query/AbstractQueryTest.java
@@ -0,0 +1,62 @@
+package com.agileboot.orm.query;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import java.util.Date;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+class AbstractQueryTest {
+
+ private AbstractQuery query;
+
+ @BeforeEach
+ public void getNewQuery() {
+ query = new AbstractQuery() {
+ @Override
+ public QueryWrapper toQueryWrapper() {
+ return null;
+ }
+ };
+ }
+
+
+ @Test
+ void addTimeConditionWithNull() {
+ QueryWrapper