From 28625f193c8883bd09ee43380237e7258bd4cf5d Mon Sep 17 00:00:00 2001
From: aoshiguchen <1052045476@qq.com>
Date: Sat, 11 Mar 2023 17:13:58 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=8E=A5=E5=8F=A3=E6=94=B9?=
=?UTF-8?q?=E9=80=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_solon_plugin/orika-solon-plugin/pom.xml | 30 ++++
.../extend/orika/OrikaConfiguration.java | 19 +++
.../asgc/solon/extend/orika/XPluginImp.java | 33 +++++
.../asgc/solon/extend/orika/package-info.java | 0
.../fun.asgc.solon.extend.orika.properties | 2 +
.../core/db/mapper/SqlMapperInterceptor.java | 14 +-
.../asgc/neutrino/core/db/page/PageInfo.java | 123 ++++++++++++++++
.../asgc/neutrino/core/db/page/PageQuery.java | 27 ++--
neutrino-proxy-admin/README.md | 4 +-
.../src/components/FBATable/index.vue | 8 +-
.../src/views/log/clientConnectLog.vue | 12 +-
neutrino-proxy-admin/src/views/log/jobLog.vue | 12 +-
.../src/views/log/loginLog.vue | 12 +-
.../src/views/proxy/license.vue | 10 +-
.../src/views/proxy/portMapping.vue | 10 +-
.../src/views/system/jobManager.vue | 10 +-
.../src/views/system/portPool.vue | 10 +-
.../src/views/system/user.vue | 10 +-
neutrino-proxy-server/pom.xml | 19 +++
.../proxy/server/base/db/DbConfiguration.java | 27 +++-
.../proxy/server/base/db/MapperPlugin.java | 68 +++++----
.../server/base/db/MetaObjectHandlerImpl.java | 20 +++
.../MybatisSqlSessionFactoryBuilderImpl.java | 11 ++
.../server/base/db/SqlMapperInterceptor.java | 14 +-
.../proxy/server/base/page/PageInfo.java | 132 ++++++++++++++++++
.../proxy/server/base/page/PageQuery.java | 21 +--
.../base/rest/config/RestConfiguration.java | 75 ----------
.../ClientConnectRecordController.java | 6 +-
.../server/controller/JobInfoController.java | 6 +-
.../server/controller/JobLogController.java | 6 +-
.../server/controller/LicenseController.java | 6 +-
.../controller/PortMappingController.java | 6 +-
.../server/controller/PortPoolController.java | 6 +-
.../server/controller/ReportController.java | 6 +-
.../server/controller/UserController.java | 6 +-
.../controller/UserLoginRecordController.java | 6 +-
.../server/dal/ClientConnectRecordMapper.java | 9 +-
.../proxy/server/dal/FlowReportDayMapper.java | 7 +-
.../server/dal/FlowReportHourMapper.java | 6 +-
.../server/dal/FlowReportMinuteMapper.java | 6 +-
.../server/dal/FlowReportMonthMapper.java | 6 +-
.../proxy/server/dal/JobInfoMapper.java | 10 +-
.../proxy/server/dal/JobLogMapper.java | 11 +-
.../proxy/server/dal/LicenseMapper.java | 31 +++-
.../proxy/server/dal/PortMappingMapper.java | 28 +++-
.../proxy/server/dal/PortPoolMapper.java | 9 +-
.../server/dal/UserLoginRecordMapper.java | 9 +-
.../neutrino/proxy/server/dal/UserMapper.java | 25 +++-
.../proxy/server/dal/UserReportMapper.java | 6 +-
.../proxy/server/dal/UserTokenMapper.java | 21 ++-
.../dal/entity/ClientConnectRecordDO.java | 4 +
.../server/dal/entity/FlowReportDayDO.java | 4 +
.../server/dal/entity/FlowReportHourDO.java | 2 +
.../server/dal/entity/FlowReportMinuteDO.java | 4 +
.../server/dal/entity/FlowReportMonthDO.java | 4 +
.../proxy/server/dal/entity/JobInfoDO.java | 4 +
.../proxy/server/dal/entity/JobLogDO.java | 6 +-
.../proxy/server/dal/entity/LicenseDO.java | 4 +
.../server/dal/entity/PortMappingDO.java | 4 +
.../proxy/server/dal/entity/PortPoolDO.java | 4 +
.../proxy/server/dal/entity/UserDO.java | 4 +
.../server/dal/entity/UserLoginRecordDO.java | 4 +
.../proxy/server/dal/entity/UserTokenDO.java | 4 +
.../service/ClientConnectRecordService.java | 37 +++--
.../proxy/server/service/JobInfoService.java | 21 ++-
.../proxy/server/service/JobLogService.java | 28 ++--
.../proxy/server/service/LicenseService.java | 32 +++--
.../server/service/PortMappingService.java | 35 +++--
.../proxy/server/service/PortPoolService.java | 22 ++-
.../proxy/server/service/ReportService.java | 6 +-
.../service/UserLoginRecordService.java | 33 +++--
.../proxy/server/service/UserService.java | 32 +++--
.../src/main/resources/app.yml | 14 +-
.../mapper/ClientConnectRecordMapper.xml | 3 +
.../main/resources/mapper/JobInfoMapper.xml | 3 +
.../main/resources/mapper/LicenseMapper.xml | 5 +-
.../resources/mapper/PortMappingMapper.xml | 3 +
.../resources/mapper/UserReportMapper.xml | 3 +
.../main/resources/mapper/UserTokenMapper.xml | 3 +
.../mapper/bak/ClientConnectRecordMapper.xml | 7 +
.../resources/mapper/bak/JobInfoMapper.xml | 8 ++
.../resources/mapper/bak/LicenseMapper.xml | 12 ++
.../mapper/bak/PortMappingMapper.xml | 13 ++
.../resources/mapper/bak/UserReportMapper.xml | 14 ++
.../resources/mapper/bak/UserTokenMapper.xml | 12 ++
85 files changed, 995 insertions(+), 374 deletions(-)
create mode 100644 _solon_plugin/orika-solon-plugin/pom.xml
create mode 100644 _solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/OrikaConfiguration.java
create mode 100644 _solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java
create mode 100644 _solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java
create mode 100644 _solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties
create mode 100644 neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageInfo.java
create mode 100644 neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MetaObjectHandlerImpl.java
create mode 100644 neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MybatisSqlSessionFactoryBuilderImpl.java
create mode 100644 neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageInfo.java
rename neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/Page.java => neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageQuery.java (76%)
delete mode 100644 neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/config/RestConfiguration.java
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/ClientConnectRecordMapper.xml
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/JobInfoMapper.xml
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/LicenseMapper.xml
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/PortMappingMapper.xml
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/UserReportMapper.xml
create mode 100644 neutrino-proxy-server/src/main/resources/mapper/bak/UserTokenMapper.xml
diff --git a/_solon_plugin/orika-solon-plugin/pom.xml b/_solon_plugin/orika-solon-plugin/pom.xml
new file mode 100644
index 00000000..5cfd1276
--- /dev/null
+++ b/_solon_plugin/orika-solon-plugin/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+
+ org.noear
+ solon-parent
+ 2.2.1
+
+
+ fun.asgc
+ orika-solon-plugin
+ jar
+
+
+
+ org.noear
+ solon
+
+
+
+
+ ma.glasnost.orika
+ orika-core
+ 1.5.4
+
+
+
\ No newline at end of file
diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/OrikaConfiguration.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/OrikaConfiguration.java
new file mode 100644
index 00000000..cab233d0
--- /dev/null
+++ b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/OrikaConfiguration.java
@@ -0,0 +1,19 @@
+package fun.asgc.solon.extend.orika;
+
+import ma.glasnost.orika.MapperFacade;
+import ma.glasnost.orika.MapperFactory;
+import org.noear.solon.annotation.Bean;
+import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Inject;
+
+/**
+ * @author: aoshiguchen
+ * @date: 2023/3/11
+ */
+@Configuration
+public class OrikaConfiguration {
+ @Bean
+ public MapperFacade mapperFacade(@Inject MapperFactory factory) {
+ return factory.getMapperFacade();
+ }
+}
diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java
new file mode 100644
index 00000000..990eb077
--- /dev/null
+++ b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/XPluginImp.java
@@ -0,0 +1,33 @@
+package fun.asgc.solon.extend.orika;
+
+import ma.glasnost.orika.CustomConverter;
+import ma.glasnost.orika.Mapper;
+import ma.glasnost.orika.MapperFactory;
+import ma.glasnost.orika.impl.DefaultMapperFactory;
+import ma.glasnost.orika.metadata.ClassMapBuilder;
+import org.noear.solon.core.AopContext;
+import org.noear.solon.core.Plugin;
+
+/**
+ * @author: aoshiguchen
+ * @date: 2023/3/11
+ */
+public class XPluginImp implements Plugin {
+ @Override
+ public void start(AopContext context) throws Throwable {
+ DefaultMapperFactory factory = new DefaultMapperFactory.Builder().build();
+
+ context.subWrapsOfType(CustomConverter.class, bw -> {
+ factory.getConverterFactory().registerConverter(bw.raw());
+ });
+ context.subWrapsOfType(Mapper.class, bw -> {
+ factory.registerMapper(bw.raw());
+ });
+ context.subWrapsOfType(ClassMapBuilder.class, bw -> {
+ factory.registerClassMap((ClassMapBuilder extends Object, ? extends Object>) bw.raw());
+ });
+ context.wrapAndPut(MapperFactory.class, factory);
+ context.beanScan("fun.asgc.solon.extend.orika");
+ }
+
+}
diff --git a/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java b/_solon_plugin/orika-solon-plugin/src/main/java/fun/asgc/solon/extend/orika/package-info.java
new file mode 100644
index 00000000..e69de29b
diff --git a/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties b/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties
new file mode 100644
index 00000000..b43ff7ab
--- /dev/null
+++ b/_solon_plugin/orika-solon-plugin/src/main/resources/META-INF/solon/fun.asgc.solon.extend.orika.properties
@@ -0,0 +1,2 @@
+solon.plugin=fun.asgc.solon.extend.orika.XPluginImp
+solon.plugin.priority=1
\ No newline at end of file
diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/mapper/SqlMapperInterceptor.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/mapper/SqlMapperInterceptor.java
index 51cd392a..75aa296d 100644
--- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/mapper/SqlMapperInterceptor.java
+++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/mapper/SqlMapperInterceptor.java
@@ -26,7 +26,7 @@ import fun.asgc.neutrino.core.annotation.NonIntercept;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Invocation;
import fun.asgc.neutrino.core.aop.interceptor.Interceptor;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.core.db.template.JdbcTemplate;
import fun.asgc.neutrino.core.util.*;
@@ -66,14 +66,14 @@ public class SqlMapperInterceptor implements Interceptor {
res = jdbcTemplate.queryForListByMap(resultComponentType, sql, (Map)params);
}
} else {
- if (Page.class.isAssignableFrom(inv.getTargetMethod().getParameters()[0].getType())) {
+ if (PageInfo.class.isAssignableFrom(inv.getTargetMethod().getParameters()[0].getType())) {
// 分页查询 TODO 此处暂时临时处理,假设后面的参数是一个DO对象
- Page page = (Page) inv.getArgs()[0];
- int offset = (page.getCurrentPage() - 1) * page.getPageSize();
+ PageInfo pageInfo = (PageInfo) inv.getArgs()[0];
+ int offset = (pageInfo.getCurrent() - 1) * pageInfo.getSize();
long total = jdbcTemplate.queryForLongByModel(String.format("select count(1) from (%s) T", sql), inv.getArgs()[1]);
- List resultList = jdbcTemplate.queryForListByModel(resultComponentType, String.format("%s limit %s,%s", sql, offset, page.getPageSize()), inv.getArgs()[1]);
- page.setTotal(total);
- page.setRecords(resultList);
+ List resultList = jdbcTemplate.queryForListByModel(resultComponentType, String.format("%s limit %s,%s", sql, offset, pageInfo.getSize()), inv.getArgs()[1]);
+ pageInfo.setTotal(total);
+ pageInfo.setRecords(resultList);
} else {
Object params = getParams(inv);
if (null == params || params.getClass().isArray()) {
diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageInfo.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageInfo.java
new file mode 100644
index 00000000..7cfb80bf
--- /dev/null
+++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageInfo.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) 2022 aoshiguchen
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package fun.asgc.neutrino.core.db.page;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ *
+ * @author: aoshiguchen
+ * @date: 2022/8/6
+ */
+@Data
+public class PageInfo implements Serializable {
+ private static final long serialVersionUID = 8545996863226528797L;
+ private List records;
+ private Long total;
+ private Integer size;
+ private Integer current;
+
+ public PageInfo() {
+ this.records = Collections.emptyList();
+ this.total = 0L;
+ this.size = 10;
+ this.current = 1;
+ }
+
+ public PageInfo(Integer current, Integer size) {
+ this(current, size, 0L);
+ }
+
+ public PageInfo(Integer current, Integer size, Long total) {
+ this.records = Collections.emptyList();
+ this.total = 0L;
+ this.size = 10;
+ this.current = 1;
+ if ((long)current > 1L) {
+ this.current = current;
+ }
+
+ this.size = size;
+ this.total = total;
+ }
+
+ public Long getPages() {
+ if ((long)this.getSize() == 0L) {
+ return 0L;
+ } else {
+ Long pages = this.getTotal() / (long)this.getSize();
+ if (this.getTotal() % (long)this.getSize() != 0L) {
+ pages = pages + 1L;
+ }
+
+ return pages;
+ }
+ }
+
+ public Long getTotal() {
+ return this.total;
+ }
+
+ public Integer getSize() {
+ return this.size;
+ }
+
+ public boolean hasPrevious() {
+ return (long)this.current > 1L;
+ }
+
+ public boolean hasNext() {
+ return (long)this.current < this.getPages();
+ }
+
+ public List getRecords() {
+ return this.records;
+ }
+
+ public PageInfo setRecords(List records) {
+ this.records = records;
+ return this;
+ }
+
+ public PageInfo setTotal(Long total) {
+ this.total = total;
+ return this;
+ }
+
+ public PageInfo setSize(Integer size) {
+ this.size = size;
+ return this;
+ }
+
+ public Integer getCurrent() {
+ return this.current;
+ }
+
+ public PageInfo setCurrent(Integer current) {
+ this.current = current;
+ return this;
+ }
+}
diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageQuery.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageQuery.java
index 3b25d67e..c00288bc 100644
--- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageQuery.java
+++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/PageQuery.java
@@ -21,34 +21,23 @@
*/
package fun.asgc.neutrino.core.db.page;
+import lombok.Data;
+
+import java.io.Serializable;
+
/**
*
* @author: aoshiguchen
* @date: 2022/8/6
*/
-public class PageQuery {
+@Data
+public class PageQuery implements Serializable {
/**
* 当前页
*/
- private int currentPage = 1;
+ private int current = 1;
/**
* 分页大小
*/
- private int pageSize = 10;
-
- public int getCurrentPage() {
- return currentPage;
- }
-
- public void setCurrentPage(int currentPage) {
- this.currentPage = currentPage;
- }
-
- public int getPageSize() {
- return pageSize;
- }
-
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
+ private int size = 10;
}
diff --git a/neutrino-proxy-admin/README.md b/neutrino-proxy-admin/README.md
index 94768901..21f42887 100644
--- a/neutrino-proxy-admin/README.md
+++ b/neutrino-proxy-admin/README.md
@@ -62,7 +62,7 @@ You need to install [node](http://nodejs.org/) and [git](https://git-scm.com/) l
- Dynamic breadcrumb
- I18n
- Customizable theme
-- Tags-view(Tab page Support right-click operation)
+- Tags-view(Tab pageInfo Support right-click operation)
- Rich text editor
- Markdown editor
- JSON editor
@@ -73,7 +73,7 @@ You need to install [node](http://nodejs.org/) and [git](https://git-scm.com/) l
- Mock data
- Echarts
- Clipboard
-- 401/404 error page
+- 401/404 error pageInfo
- Error log
- Export excel
- Export zip
diff --git a/neutrino-proxy-admin/src/components/FBATable/index.vue b/neutrino-proxy-admin/src/components/FBATable/index.vue
index bd232ac3..b9907fd4 100644
--- a/neutrino-proxy-admin/src/components/FBATable/index.vue
+++ b/neutrino-proxy-admin/src/components/FBATable/index.vue
@@ -47,12 +47,12 @@
@@ -116,16 +116,16 @@ export default {
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
- this.listQuery.currentPage = 1
+ this.listQuery.size = val
+ this.listQuery.current = 1
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleShowClick(row) {
diff --git a/neutrino-proxy-admin/src/views/proxy/license.vue b/neutrino-proxy-admin/src/views/proxy/license.vue
index ab759ded..620a8b17 100644
--- a/neutrino-proxy-admin/src/views/proxy/license.vue
+++ b/neutrino-proxy-admin/src/views/proxy/license.vue
@@ -60,8 +60,8 @@
@@ -213,15 +213,15 @@
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
+ this.listQuery.size = val
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleModifyStatus(row, enable) {
diff --git a/neutrino-proxy-admin/src/views/proxy/portMapping.vue b/neutrino-proxy-admin/src/views/proxy/portMapping.vue
index ad46866a..2654131b 100644
--- a/neutrino-proxy-admin/src/views/proxy/portMapping.vue
+++ b/neutrino-proxy-admin/src/views/proxy/portMapping.vue
@@ -65,8 +65,8 @@
@@ -264,15 +264,15 @@
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
+ this.listQuery.size = val
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleModifyStatus(row, enable) {
diff --git a/neutrino-proxy-admin/src/views/system/jobManager.vue b/neutrino-proxy-admin/src/views/system/jobManager.vue
index 7370812c..ace4f5bc 100644
--- a/neutrino-proxy-admin/src/views/system/jobManager.vue
+++ b/neutrino-proxy-admin/src/views/system/jobManager.vue
@@ -51,8 +51,8 @@
@@ -171,15 +171,15 @@
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
+ this.listQuery.size = val
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleModifyStatus(row, enable) {
diff --git a/neutrino-proxy-admin/src/views/system/portPool.vue b/neutrino-proxy-admin/src/views/system/portPool.vue
index bd195521..e449ad88 100644
--- a/neutrino-proxy-admin/src/views/system/portPool.vue
+++ b/neutrino-proxy-admin/src/views/system/portPool.vue
@@ -43,8 +43,8 @@
@@ -173,15 +173,15 @@
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
+ this.listQuery.size = val
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleModifyStatus(row, enable) {
diff --git a/neutrino-proxy-admin/src/views/system/user.vue b/neutrino-proxy-admin/src/views/system/user.vue
index 8f3fc48d..9903bd23 100644
--- a/neutrino-proxy-admin/src/views/system/user.vue
+++ b/neutrino-proxy-admin/src/views/system/user.vue
@@ -50,8 +50,8 @@
@@ -197,15 +197,15 @@
})
},
handleFilter() {
- this.listQuery.currentPage = 1
+ this.listQuery.current = 1
this.getList()
},
handleSizeChange(val) {
- this.listQuery.pageSize = val
+ this.listQuery.size = val
this.getList()
},
handleCurrentChange(val) {
- this.listQuery.currentPage = val
+ this.listQuery.current = val
this.getList()
},
handleModifyStatus(row, enable) {
diff --git a/neutrino-proxy-server/pom.xml b/neutrino-proxy-server/pom.xml
index 668e6329..ce418d11 100644
--- a/neutrino-proxy-server/pom.xml
+++ b/neutrino-proxy-server/pom.xml
@@ -24,6 +24,25 @@
mybatis-plus-solon-plugin
2.2.1
+
+ org.noear
+ mybatis-pagehelper-solon-plugin
+ 2.2.1
+
+
+
+ ma.glasnost.orika
+ orika-core
+ 1.5.4
+
+
+ fun.asgc
+ orika-solon-plugin
+ 2.2.1
+ system
+ ${project.basedir}/../_solon_plugin/orika-solon-plugin/pom.xml
+
+
fun.asgc.neutrino
neutrino-proxy-core
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/DbConfiguration.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/DbConfiguration.java
index 616ae70c..ddf3a7ba 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/DbConfiguration.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/DbConfiguration.java
@@ -1,9 +1,14 @@
package fun.asgc.neutrino.proxy.server.base.db;
import com.alibaba.druid.pool.DruidDataSource;
+import com.baomidou.mybatisplus.core.MybatisConfiguration;
+import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import fun.asgc.neutrino.core.db.template.JdbcTemplate;
import fun.asgc.neutrino.proxy.server.base.rest.config.DbConfig;
import fun.asgc.neutrino.proxy.server.constant.DbTypeEnum;
+import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.annotation.Inject;
@@ -19,7 +24,7 @@ import javax.sql.DataSource;
@Configuration
public class DbConfiguration {
- @Bean(value = "dataSource", typed = true)
+ @Bean(value = "db", typed = true)
public DataSource dataSource(@Inject DbConfig dbConfig) {
DbTypeEnum dbTypeEnum = DbTypeEnum.of(dbConfig.getType());
if (DbTypeEnum.SQLITE == dbTypeEnum) {
@@ -45,7 +50,25 @@ public class DbConfiguration {
}
@Bean
- public JdbcTemplate jdbcTemplate(@Inject("dataSource") DataSource dataSource) {
+ public JdbcTemplate jdbcTemplate(@Inject("db") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
+
+ @Bean
+ public void db1_ext(@Db("db") GlobalConfig globalConfig) {
+ MetaObjectHandler metaObjectHandler = new MetaObjectHandlerImpl();
+ globalConfig.setMetaObjectHandler(metaObjectHandler);
+ }
+
+ @Bean
+ public void db1_ext2(@Db("db") MybatisConfiguration config){
+ config.getTypeHandlerRegistry().register("fun.asgc.neutrino.proxy.server.dal");
+ config.setDefaultEnumTypeHandler(null);
+ }
+
+ @Bean
+ public MybatisSqlSessionFactoryBuilder factoryBuilderNew(){
+ return new MybatisSqlSessionFactoryBuilderImpl();
+ }
+
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MapperPlugin.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MapperPlugin.java
index fa57133c..363c5f0c 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MapperPlugin.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MapperPlugin.java
@@ -1,7 +1,5 @@
package fun.asgc.neutrino.proxy.server.base.db;
-import fun.asgc.neutrino.core.aop.Aop;
-import fun.asgc.neutrino.proxy.server.dal.*;
import org.noear.solon.core.AopContext;
import org.noear.solon.core.Plugin;
@@ -12,39 +10,39 @@ import org.noear.solon.core.Plugin;
public class MapperPlugin implements Plugin {
@Override
public void start(AopContext context) throws Throwable {
- Aop.intercept(ClientConnectRecordMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(DataCleanMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(FlowReportDayMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(FlowReportHourMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(FlowReportMinuteMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(FlowReportMonthMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(JobInfoMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(JobLogMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(LicenseMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(PortMappingMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(PortPoolMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(UserConnectRecordMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(UserLoginRecordMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(UserMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(UserReportMapper.class, SqlMapperInterceptor.class);
- Aop.intercept(UserTokenMapper.class, SqlMapperInterceptor.class);
-
- context.wrapAndPut(ClientConnectRecordMapper.class, Aop.get(ClientConnectRecordMapper.class));
- context.wrapAndPut(DataCleanMapper.class, Aop.get(DataCleanMapper.class));
- context.wrapAndPut(FlowReportDayMapper.class, Aop.get(FlowReportDayMapper.class));
- context.wrapAndPut(FlowReportHourMapper.class, Aop.get(FlowReportHourMapper.class));
- context.wrapAndPut(FlowReportMinuteMapper.class, Aop.get(FlowReportMinuteMapper.class));
- context.wrapAndPut(FlowReportMonthMapper.class, Aop.get(FlowReportMonthMapper.class));
- context.wrapAndPut(JobInfoMapper.class, Aop.get(JobInfoMapper.class));
- context.wrapAndPut(JobLogMapper.class, Aop.get(JobLogMapper.class));
- context.wrapAndPut(LicenseMapper.class, Aop.get(LicenseMapper.class));
- context.wrapAndPut(PortMappingMapper.class, Aop.get(PortMappingMapper.class));
- context.wrapAndPut(PortPoolMapper.class, Aop.get(PortPoolMapper.class));
- context.wrapAndPut(UserConnectRecordMapper.class, Aop.get(UserConnectRecordMapper.class));
- context.wrapAndPut(UserLoginRecordMapper.class, Aop.get(UserLoginRecordMapper.class));
- context.wrapAndPut(UserMapper.class, Aop.get(UserMapper.class));
- context.wrapAndPut(UserReportMapper.class, Aop.get(UserReportMapper.class));
- context.wrapAndPut(UserTokenMapper.class, Aop.get(UserTokenMapper.class));
+// Aop.intercept(ClientConnectRecordMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(DataCleanMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(FlowReportDayMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(FlowReportHourMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(FlowReportMinuteMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(FlowReportMonthMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(JobInfoMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(JobLogMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(LicenseMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(PortMappingMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(PortPoolMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(UserConnectRecordMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(UserLoginRecordMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(UserMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(UserReportMapper.class, SqlMapperInterceptor.class);
+// Aop.intercept(UserTokenMapper.class, SqlMapperInterceptor.class);
+//
+// context.wrapAndPut(ClientConnectRecordMapper.class, Aop.get(ClientConnectRecordMapper.class));
+// context.wrapAndPut(DataCleanMapper.class, Aop.get(DataCleanMapper.class));
+// context.wrapAndPut(FlowReportDayMapper.class, Aop.get(FlowReportDayMapper.class));
+// context.wrapAndPut(FlowReportHourMapper.class, Aop.get(FlowReportHourMapper.class));
+// context.wrapAndPut(FlowReportMinuteMapper.class, Aop.get(FlowReportMinuteMapper.class));
+// context.wrapAndPut(FlowReportMonthMapper.class, Aop.get(FlowReportMonthMapper.class));
+// context.wrapAndPut(JobInfoMapper.class, Aop.get(JobInfoMapper.class));
+// context.wrapAndPut(JobLogMapper.class, Aop.get(JobLogMapper.class));
+// context.wrapAndPut(LicenseMapper.class, Aop.get(LicenseMapper.class));
+// context.wrapAndPut(PortMappingMapper.class, Aop.get(PortMappingMapper.class));
+// context.wrapAndPut(PortPoolMapper.class, Aop.get(PortPoolMapper.class));
+// context.wrapAndPut(UserConnectRecordMapper.class, Aop.get(UserConnectRecordMapper.class));
+// context.wrapAndPut(UserLoginRecordMapper.class, Aop.get(UserLoginRecordMapper.class));
+// context.wrapAndPut(UserMapper.class, Aop.get(UserMapper.class));
+// context.wrapAndPut(UserReportMapper.class, Aop.get(UserReportMapper.class));
+// context.wrapAndPut(UserTokenMapper.class, Aop.get(UserTokenMapper.class));
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MetaObjectHandlerImpl.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MetaObjectHandlerImpl.java
new file mode 100644
index 00000000..b3001eeb
--- /dev/null
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MetaObjectHandlerImpl.java
@@ -0,0 +1,20 @@
+package fun.asgc.neutrino.proxy.server.base.db;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+
+/**
+ * @author: aoshiguchen
+ * @date: 2023/3/10
+ */
+public class MetaObjectHandlerImpl implements MetaObjectHandler {
+ @Override
+ public void insertFill(MetaObject metaObject) {
+
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+
+ }
+}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MybatisSqlSessionFactoryBuilderImpl.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MybatisSqlSessionFactoryBuilderImpl.java
new file mode 100644
index 00000000..9da683f1
--- /dev/null
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/MybatisSqlSessionFactoryBuilderImpl.java
@@ -0,0 +1,11 @@
+package fun.asgc.neutrino.proxy.server.base.db;
+
+import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
+
+/**
+ * @author: aoshiguchen
+ * @date: 2023/3/10
+ */
+public class MybatisSqlSessionFactoryBuilderImpl extends MybatisSqlSessionFactoryBuilder {
+
+}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/SqlMapperInterceptor.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/SqlMapperInterceptor.java
index 8813bf2e..0ea54051 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/SqlMapperInterceptor.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/db/SqlMapperInterceptor.java
@@ -27,7 +27,7 @@ import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Invocation;
import fun.asgc.neutrino.core.aop.interceptor.Interceptor;
import fun.asgc.neutrino.core.db.mapper.SqlParser;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.core.db.template.JdbcTemplate;
import fun.asgc.neutrino.core.util.ArrayUtil;
import fun.asgc.neutrino.core.util.Assert;
@@ -71,14 +71,14 @@ public class SqlMapperInterceptor implements Interceptor {
res = jdbcTemplate.queryForListByMap(resultComponentType, sql, (Map)params);
}
} else {
- if (Page.class.isAssignableFrom(inv.getTargetMethod().getParameters()[0].getType())) {
+ if (PageInfo.class.isAssignableFrom(inv.getTargetMethod().getParameters()[0].getType())) {
// 分页查询 TODO 此处暂时临时处理,假设后面的参数是一个DO对象
- Page page = (Page) inv.getArgs()[0];
- int offset = (page.getCurrentPage() - 1) * page.getPageSize();
+ PageInfo pageInfo = (PageInfo) inv.getArgs()[0];
+ int offset = (pageInfo.getCurrent() - 1) * pageInfo.getSize();
long total = jdbcTemplate.queryForLongByModel(String.format("select count(1) from (%s) T", sql), inv.getArgs()[1]);
- List resultList = jdbcTemplate.queryForListByModel(resultComponentType, String.format("%s limit %s,%s", sql, offset, page.getPageSize()), inv.getArgs()[1]);
- page.setTotal(total);
- page.setRecords(resultList);
+ List resultList = jdbcTemplate.queryForListByModel(resultComponentType, String.format("%s limit %s,%s", sql, offset, pageInfo.getSize()), inv.getArgs()[1]);
+ pageInfo.setTotal(total);
+ pageInfo.setRecords(resultList);
} else {
Object params = getParams(inv);
if (null == params || params.getClass().isArray()) {
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageInfo.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageInfo.java
new file mode 100644
index 00000000..2195c275
--- /dev/null
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageInfo.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) 2022 aoshiguchen
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package fun.asgc.neutrino.proxy.server.base.page;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ *
+ * @author: aoshiguchen
+ * @date: 2022/8/6
+ */
+@Data
+public class PageInfo implements Serializable {
+ private static final long serialVersionUID = 8545996863226528797L;
+ private List records;
+ private Long total;
+ private Integer size;
+ private Integer current;
+
+ public PageInfo() {
+ this.records = Collections.emptyList();
+ this.total = 0L;
+ this.size = 10;
+ this.current = 1;
+ }
+
+ public PageInfo(Integer current, Integer size) {
+ this(current, size, 0L);
+ }
+
+ public PageInfo(Integer current, Integer size, Long total) {
+ this.records = Collections.emptyList();
+ this.total = 0L;
+ this.size = 10;
+ this.current = 1;
+ if ((long)current > 1L) {
+ this.current = current;
+ }
+
+ this.size = size;
+ this.total = total;
+ }
+
+ public Long getPages() {
+ if ((long)this.getSize() == 0L) {
+ return 0L;
+ } else {
+ Long pages = this.getTotal() / (long)this.getSize();
+ if (this.getTotal() % (long)this.getSize() != 0L) {
+ pages = pages + 1L;
+ }
+
+ return pages;
+ }
+ }
+
+ public Long getTotal() {
+ return this.total;
+ }
+
+ public Integer getSize() {
+ return this.size;
+ }
+
+ public boolean hasPrevious() {
+ return (long)this.current > 1L;
+ }
+
+ public boolean hasNext() {
+ return (long)this.current < this.getPages();
+ }
+
+ public List getRecords() {
+ return this.records;
+ }
+
+ public PageInfo setRecords(List records) {
+ this.records = records;
+ return this;
+ }
+
+ public PageInfo setTotal(Long total) {
+ this.total = total;
+ return this;
+ }
+
+ public PageInfo setSize(Integer size) {
+ this.size = size;
+ return this;
+ }
+
+ public Integer getCurrent() {
+ return this.current;
+ }
+
+ public PageInfo setCurrent(Integer current) {
+ this.current = current;
+ return this;
+ }
+
+ public static PageInfo of(List records, Long total, Integer current, Integer size) {
+ PageInfo pageInfo = new PageInfo();
+ pageInfo.setRecords(records);
+ pageInfo.setTotal(total);
+ pageInfo.setCurrent(current);
+ pageInfo.setSize(size);
+ return pageInfo;
+ }
+}
diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/Page.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageQuery.java
similarity index 76%
rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/Page.java
rename to neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageQuery.java
index e127262c..5a5e9b51 100644
--- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/db/page/Page.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/page/PageQuery.java
@@ -19,11 +19,11 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
-package fun.asgc.neutrino.core.db.page;
+package fun.asgc.neutrino.proxy.server.base.page;
import lombok.Data;
-import java.util.List;
+import java.io.Serializable;
/**
*
@@ -31,20 +31,13 @@ import java.util.List;
* @date: 2022/8/6
*/
@Data
-public class Page extends PageQuery {
+public class PageQuery implements Serializable {
/**
- * 数据总数
+ * 当前页
*/
- private Long total;
+ private int current = 1;
/**
- * 结果数据
+ * 分页大小
*/
- private List records;
-
- public static Page create(PageQuery pageQuery) {
- Page page = new Page();
- page.setPageSize(pageQuery.getPageSize());
- page.setCurrentPage(pageQuery.getCurrentPage());
- return page;
- }
+ private int size = 10;
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/config/RestConfiguration.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/config/RestConfiguration.java
deleted file mode 100644
index 3169ec15..00000000
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/base/rest/config/RestConfiguration.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Copyright (c) 2022 aoshiguchen
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package fun.asgc.neutrino.proxy.server.base.rest.config;
-
-import com.alibaba.druid.pool.DruidDataSource;
-import fun.asgc.neutrino.core.db.template.JdbcTemplate;
-import fun.asgc.neutrino.proxy.server.constant.DbTypeEnum;
-import org.noear.solon.annotation.Bean;
-import org.noear.solon.annotation.Configuration;
-import org.noear.solon.annotation.Inject;
-import org.sqlite.SQLiteConfig;
-import org.sqlite.SQLiteDataSource;
-
-import javax.sql.DataSource;
-
-/**
- * 系统配置
- *author: aoshiguchen
- * @date: 2022/8/1
- */
-@Configuration
-public class RestConfiguration {
- @Inject
- private DbConfig dbConfig;
-
- @Bean("dataSource")
- public DataSource dataSource() {
- DbTypeEnum dbTypeEnum = DbTypeEnum.of(dbConfig.getType());
- if (DbTypeEnum.SQLITE == dbTypeEnum) {
- SQLiteDataSource dataSource = new SQLiteDataSource();
- dataSource.setUrl(dbConfig.getUrl());
- dataSource.setJournalMode(SQLiteConfig.JournalMode.WAL.getValue());
- return dataSource;
- } else if (DbTypeEnum.MYSQL == dbTypeEnum) {
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(dbConfig.getDriverClass());
- dataSource.setUrl(dbConfig.getUrl());
- dataSource.setInitialSize(5);
- dataSource.setMinIdle(5);
- dataSource.setMaxActive(20);
- dataSource.setMaxWait(60000);
- dataSource.setPoolPreparedStatements(true);
- dataSource.setUsername(dbConfig.getUsername());
- dataSource.setPassword(dbConfig.getPassword());
- return dataSource;
- }
-
- return null;
- }
-
- @Bean
- public JdbcTemplate jdbcTemplate(@Inject("dataSource") DataSource dataSource) {
- return new JdbcTemplate(dataSource);
- }
-
-}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ClientConnectRecordController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ClientConnectRecordController.java
index 8bcd8c5e..b260b082 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ClientConnectRecordController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ClientConnectRecordController.java
@@ -21,8 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.ClientConnectRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.ClientConnectRecordListRes;
import fun.asgc.neutrino.proxy.server.service.ClientConnectRecordService;
@@ -46,7 +46,7 @@ public class ClientConnectRecordController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, ClientConnectRecordListReq req) {
+ public PageInfo page(PageQuery pageQuery, ClientConnectRecordListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return clientConnectRecordService.page(pageQuery, req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobInfoController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobInfoController.java
index b225d265..df3bb59b 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobInfoController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobInfoController.java
@@ -21,9 +21,9 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.RequestBody;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.annotation.OnlyAdmin;
import fun.asgc.neutrino.proxy.server.controller.req.JobInfoExecuteReq;
import fun.asgc.neutrino.proxy.server.controller.req.JobInfoListReq;
@@ -55,7 +55,7 @@ public class JobInfoController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, JobInfoListReq req) {
+ public PageInfo page(PageQuery pageQuery, JobInfoListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return jobInfoService.page(pageQuery, req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobLogController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobLogController.java
index cb0db7f2..c98e2ae5 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobLogController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/JobLogController.java
@@ -21,8 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.JobLogListReq;
import fun.asgc.neutrino.proxy.server.controller.res.JobLogListRes;
import fun.asgc.neutrino.proxy.server.service.JobLogService;
@@ -47,7 +47,7 @@ public class JobLogController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, JobLogListReq req) {
+ public PageInfo page(PageQuery pageQuery, JobLogListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return jobLogService.page(pageQuery, req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/LicenseController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/LicenseController.java
index 4ab23792..08cf1df1 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/LicenseController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/LicenseController.java
@@ -21,10 +21,10 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.RequestBody;
import fun.asgc.neutrino.core.web.annotation.RequestParam;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.annotation.OnlyAdmin;
import fun.asgc.neutrino.proxy.server.controller.req.LicenseCreateReq;
import fun.asgc.neutrino.proxy.server.controller.req.LicenseListReq;
@@ -50,7 +50,7 @@ public class LicenseController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, LicenseListReq req) {
+ public PageInfo page(PageQuery pageQuery, LicenseListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return licenseService.page(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortMappingController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortMappingController.java
index 426d471b..8514acfb 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortMappingController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortMappingController.java
@@ -22,10 +22,10 @@
package fun.asgc.neutrino.proxy.server.controller;
import fun.asgc.neutrino.core.annotation.NonIntercept;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.RequestBody;
import fun.asgc.neutrino.core.web.annotation.RequestParam;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.PortMappingCreateReq;
import fun.asgc.neutrino.proxy.server.controller.req.PortMappingListReq;
import fun.asgc.neutrino.proxy.server.controller.req.PortMappingUpdateEnableStatusReq;
@@ -49,7 +49,7 @@ public class PortMappingController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, PortMappingListReq req) {
+ public PageInfo page(PageQuery pageQuery, PortMappingListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return portMappingService.page(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortPoolController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortPoolController.java
index fd5141b9..cfdce91d 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortPoolController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/PortPoolController.java
@@ -21,10 +21,10 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.RequestBody;
import fun.asgc.neutrino.core.web.annotation.RequestParam;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.annotation.OnlyAdmin;
import fun.asgc.neutrino.proxy.server.controller.req.PortPoolCreateReq;
import fun.asgc.neutrino.proxy.server.controller.req.PortPoolListReq;
@@ -51,7 +51,7 @@ public class PortPoolController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, PortPoolListReq req) {
+ public PageInfo page(PageQuery pageQuery, PortPoolListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return portPoolService.page(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ReportController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ReportController.java
index f5727b59..23ecf1ae 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ReportController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/ReportController.java
@@ -21,7 +21,7 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.LicenseFlowReportReq;
import fun.asgc.neutrino.proxy.server.controller.req.UserFlowReportReq;
@@ -79,7 +79,7 @@ public class ReportController {
*/
@Get
@Mapping("/user/flow-report/page")
- public Page userFlowReportPage(PageQuery pageQuery, UserFlowReportReq req) {
+ public PageInfo userFlowReportPage(PageQuery pageQuery, UserFlowReportReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return reportService.userFlowReportPage(pageQuery, req);
@@ -93,7 +93,7 @@ public class ReportController {
*/
@Get
@Mapping("/license/flow-report/page")
- public Page licenseFlowReportPage(PageQuery pageQuery, LicenseFlowReportReq req) {
+ public PageInfo licenseFlowReportPage(PageQuery pageQuery, LicenseFlowReportReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return reportService.licenseFlowReportPage(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java
index 777d4ab0..494cfc8b 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserController.java
@@ -21,10 +21,10 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.web.annotation.RequestBody;
import fun.asgc.neutrino.core.web.annotation.RequestParam;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.SystemContextHolder;
import fun.asgc.neutrino.proxy.server.base.rest.annotation.OnlyAdmin;
import fun.asgc.neutrino.proxy.server.constant.ExceptionConstant;
@@ -54,7 +54,7 @@ public class UserController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, UserListReq req) {
+ public PageInfo page(PageQuery pageQuery, UserListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return userService.page(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserLoginRecordController.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserLoginRecordController.java
index c317f107..7907b93c 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserLoginRecordController.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/UserLoginRecordController.java
@@ -21,8 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.controller;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.UserLoginRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.UserLoginRecordListRes;
import fun.asgc.neutrino.proxy.server.service.UserLoginRecordService;
@@ -44,7 +44,7 @@ public class UserLoginRecordController {
@Get
@Mapping("/page")
- public Page page(PageQuery pageQuery, UserLoginRecordListReq req) {
+ public PageInfo page(PageQuery pageQuery, UserLoginRecordListReq req) {
ParamCheckUtil.checkNotNull(pageQuery, "pageQuery");
return userLoginRecordService.page(pageQuery, req);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/ClientConnectRecordMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/ClientConnectRecordMapper.java
index 7ebb6f69..0737b61d 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/ClientConnectRecordMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/ClientConnectRecordMapper.java
@@ -1,21 +1,24 @@
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.ClientConnectRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.ClientConnectRecordListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.ClientConnectRecordDO;
+import org.apache.ibatis.annotations.Mapper;
/**
* @author: aoshiguchen
* @date: 2022/11/23
*/
-public interface ClientConnectRecordMapper {
+@Mapper
+public interface ClientConnectRecordMapper extends BaseMapper {
void add(ClientConnectRecordDO clientConnectRecordDO);
@ResultType(ClientConnectRecordListRes.class)
@Select("select * from client_connect_record order by id desc")
- void page(Page page, ClientConnectRecordListReq req);
+ void page(PageInfo pageInfo, ClientConnectRecordListReq req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportDayMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportDayMapper.java
index 37eda4f9..84071d37 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportDayMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportDayMapper.java
@@ -21,19 +21,20 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
-import fun.asgc.neutrino.core.db.mapper.SqlMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.FlowReportDayDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
-
-public interface FlowReportDayMapper {
+@Mapper
+public interface FlowReportDayMapper extends BaseMapper {
@Select("select * from flow_report_day where license_id = :licenseId and date_str = :dateStr")
FlowReportDayDO findOne(@Param("licenseId") Integer licenseId, @Param("dateStr") String dateStr);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportHourMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportHourMapper.java
index bdc987c3..a1f6fd90 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportHourMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportHourMapper.java
@@ -21,18 +21,20 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.proxy.server.dal.entity.FlowReportHourDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
-
-public interface FlowReportHourMapper {
+@Mapper
+public interface FlowReportHourMapper extends BaseMapper {
@Select("select * from flow_report_hour where license_id = :licenseId and date_str = :dateStr")
FlowReportHourDO findOne(@Param("licenseId") Integer licenseId, @Param("dateStr") String dateStr);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMinuteMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMinuteMapper.java
index 7d979b87..d6e7d2c0 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMinuteMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMinuteMapper.java
@@ -21,18 +21,20 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.proxy.server.dal.entity.FlowReportMinuteDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
import java.util.Set;
-
-public interface FlowReportMinuteMapper {
+@Mapper
+public interface FlowReportMinuteMapper extends BaseMapper {
@Select("select * from flow_report_minute where license_id = :licenseId and date = :date")
FlowReportMinuteDO findOne(@Param("licenseId") Integer licenseId, @Param("date") String date);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMonthMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMonthMapper.java
index f60d9852..bc708ee7 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMonthMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/FlowReportMonthMapper.java
@@ -21,14 +21,16 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.proxy.server.dal.entity.FlowReportMonthDO;
+import org.apache.ibatis.annotations.Mapper;
-
-public interface FlowReportMonthMapper {
+@Mapper
+public interface FlowReportMonthMapper extends BaseMapper {
@Select("select * from flow_report_month where license_id = :licenseId and date_str = :dateStr")
FlowReportMonthDO findOne(@Param("licenseId") Integer licenseId, @Param("dateStr") String dateStr);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobInfoMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobInfoMapper.java
index a0ef1f2a..62dd9f72 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobInfoMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobInfoMapper.java
@@ -21,24 +21,26 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.core.db.annotation.Update;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.JobInfoListReq;
import fun.asgc.neutrino.proxy.server.controller.res.JobInfoListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.JobInfoDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
-
-public interface JobInfoMapper {
+@Mapper
+public interface JobInfoMapper extends BaseMapper {
@ResultType(JobInfoListRes.class)
@Select("select * from job_info")
- void page(Page page, JobInfoListReq req);
+ void page(PageInfo pageInfo, JobInfoListReq req);
@Select("select * from job_info where id = ?")
JobInfoDO findById(Integer id);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobLogMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobLogMapper.java
index af6f1d8a..cb22e8af 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobLogMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/JobLogMapper.java
@@ -21,15 +21,17 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.JobLogListReq;
import fun.asgc.neutrino.proxy.server.controller.res.JobLogListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO;
+import org.apache.ibatis.annotations.Mapper;
/**
*
@@ -38,17 +40,18 @@ import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface JobLogMapper {
+@Mapper
+public interface JobLogMapper extends BaseMapper {
@Insert("insert into job_log(`job_id`,`handler`,`param`,`code`,`msg`,`alarm_status`,`create_time`) values(:jobId,:handler,:param,:code,:msg,:alarmStatus,:createTime)")
void add(JobLogDO jobLog);
@ResultType(JobLogListRes.class)
@Select("select * from job_log order by create_time desc")
- void page(Page page, JobLogListReq req);
+ void page(PageInfo pageInfo, JobLogListReq req);
@ResultType(JobLogListRes.class)
@Select("select * from job_log where job_id = :jobId order by create_time desc")
- void pageByJobId(Page page, JobLogListReq req);
+ void pageByJobId(PageInfo pageInfo, JobLogListReq req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java
index 25838225..46baca89 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/LicenseMapper.java
@@ -21,6 +21,9 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
@@ -28,10 +31,11 @@ import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.core.db.annotation.Update;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.LicenseListReq;
import fun.asgc.neutrino.proxy.server.controller.res.LicenseListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.LicenseDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
@@ -44,14 +48,15 @@ import java.util.Set;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface LicenseMapper {
+@Mapper
+public interface LicenseMapper extends BaseMapper {
/**
* 查询license分页
- * @param page
+ * @param pageInfo
* @param req
*/
- void page(Page page, LicenseListReq req);
+ void page(PageInfo pageInfo, LicenseListReq req);
@ResultType(LicenseListRes.class)
@Select("select * from license where enable = 1")
@@ -75,7 +80,13 @@ public interface LicenseMapper {
void updateEnableStatus(@Param("id") Integer id, @Param("enable") Integer enable, @Param("updateTime") Date updateTime);
@Update("update `license` set is_online = :isOnline, update_time = :updateTime where id = :id")
- void updateOnlineStatus(@Param("id") Integer id, @Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime);
+ default void updateOnlineStatus(@Param("id") Integer id, @Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime) {
+ this.update(null, new LambdaUpdateWrapper()
+ .eq(LicenseDO::getId, id)
+ .set(LicenseDO::getIsOnline, isOnline)
+ .set(LicenseDO::getUpdateTime, updateTime)
+ );
+ }
@Update("update `license` set is_online = :isOnline, update_time = :updateTime")
void updateOnlineStatus(@Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime);
@@ -94,7 +105,9 @@ public interface LicenseMapper {
@ResultType(LicenseDO.class)
@Select("select * from `license` where id in (:ids)")
- List findByIds(@Param("ids")Set ids);
+ default List findByIds(@Param("ids")Set ids) {
+ return selectBatchIds(ids);
+ }
@ResultType(LicenseDO.class)
@Select("select * from `license` where user_id = :userId and name =:name limit 0,1")
@@ -105,5 +118,9 @@ public interface LicenseMapper {
LicenseDO checkRepeat(@Param("userId") Integer userId, @Param("name") String name, @Param("excludeIds") Set excludeIds);
@Select("select * from `license` where `key` = ?")
- LicenseDO findByKey(String licenseKey);
+ default LicenseDO findByKey(String licenseKey) {
+ return selectOne(new LambdaQueryWrapper()
+ .eq(LicenseDO::getKey, licenseKey)
+ );
+ }
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java
index db362d6d..3e510178 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortMappingMapper.java
@@ -21,6 +21,9 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
@@ -28,10 +31,12 @@ import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
import fun.asgc.neutrino.core.db.annotation.Update;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.constant.EnableStatusEnum;
import fun.asgc.neutrino.proxy.server.controller.req.PortMappingListReq;
import fun.asgc.neutrino.proxy.server.controller.res.PortMappingListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.PortMappingDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
@@ -44,11 +49,12 @@ import java.util.Set;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface PortMappingMapper {
+@Mapper
+public interface PortMappingMapper extends BaseMapper {
@ResultType(PortMappingListRes.class)
@Select("select * from port_mapping")
- void page(Page page, PortMappingListReq req);
+ void page(PageInfo pageInfo, PortMappingListReq req);
void add(PortMappingDO portMappingDO);
@@ -71,7 +77,12 @@ public interface PortMappingMapper {
@ResultType(PortMappingDO.class)
@Select("select * from port_mapping where license_id = ? and enable = 1")
- List findEnableListByLicenseId(Integer licenseId);
+ default List findEnableListByLicenseId(Integer licenseId) {
+ return this.selectList(new LambdaQueryWrapper()
+ .eq(PortMappingDO::getLicenseId, licenseId)
+ .eq(PortMappingDO::getEnable, EnableStatusEnum.ENABLE.getStatus())
+ );
+ }
@ResultType(PortMappingDO.class)
@Select("select * from port_mapping where server_port = :serverPort")
@@ -82,7 +93,14 @@ public interface PortMappingMapper {
List findListByLicenseId(Integer licenseId);
@Update("update `port_mapping` set is_online = :isOnline,update_time = :updateTime where license_id = :licenseId and server_port = :serverPort")
- void updateOnlineStatus(@Param("licenseId") Integer licenseId, @Param("serverPort") Integer serverPort, @Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime);
+ default void updateOnlineStatus(@Param("licenseId") Integer licenseId, @Param("serverPort") Integer serverPort, @Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime) {
+ this.update(null, new LambdaUpdateWrapper()
+ .eq(PortMappingDO::getLicenseId, licenseId)
+ .eq(PortMappingDO::getServerPort, serverPort)
+ .set(PortMappingDO::getIsOnline, isOnline)
+ .set(PortMappingDO::getUpdateTime, updateTime)
+ );
+ }
@Update("update `port_mapping` set is_online = :isOnline,update_time = :updateTime where license_id = :licenseId")
void updateOnlineStatus(@Param("licenseId") Integer licenseId, @Param("isOnline") Integer isOnline, @Param("updateTime") Date updateTime);
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java
index d1848bee..36842102 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/PortPoolMapper.java
@@ -21,14 +21,16 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.*;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.PortPoolListReq;
import fun.asgc.neutrino.proxy.server.controller.res.PortPoolListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.PortPoolDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
@@ -40,11 +42,12 @@ import java.util.List;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface PortPoolMapper {
+@Mapper
+public interface PortPoolMapper extends BaseMapper {
@ResultType(PortPoolListRes.class)
@Select("select * from port_pool")
- void page(Page page, PortPoolListReq req);
+ void page(PageInfo pageInfo, PortPoolListReq req);
@ResultType(PortPoolListRes.class)
@Select("select * from port_pool where enable = 1")
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserLoginRecordMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserLoginRecordMapper.java
index 14fb36c0..ab3ef0a7 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserLoginRecordMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserLoginRecordMapper.java
@@ -21,15 +21,17 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.Insert;
import fun.asgc.neutrino.core.db.annotation.ResultType;
import fun.asgc.neutrino.core.db.annotation.Select;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.UserLoginRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.UserLoginRecordListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.UserLoginRecordDO;
+import org.apache.ibatis.annotations.Mapper;
/**
*
@@ -38,7 +40,8 @@ import fun.asgc.neutrino.proxy.server.dal.entity.UserLoginRecordDO;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface UserLoginRecordMapper {
+@Mapper
+public interface UserLoginRecordMapper extends BaseMapper {
/**
* 新增用户登录日志
* @param userLoginRecord
@@ -49,5 +52,5 @@ public interface UserLoginRecordMapper {
@ResultType(UserLoginRecordListRes.class)
@Select("select * from user_login_record order by create_time desc")
- void page(Page page, UserLoginRecordListReq req);
+ void page(PageInfo pageInfo, UserLoginRecordListReq req);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserMapper.java
index 498b9a36..eddaf20b 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserMapper.java
@@ -21,14 +21,17 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.*;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.req.UserListReq;
import fun.asgc.neutrino.proxy.server.controller.res.UserListRes;
import fun.asgc.neutrino.proxy.server.dal.entity.UserDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
import java.util.List;
@@ -41,7 +44,8 @@ import java.util.Set;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface UserMapper {
+@Mapper
+public interface UserMapper extends BaseMapper {
/**
* 根据登录名查询用户记录
@@ -49,7 +53,12 @@ public interface UserMapper {
* @return
*/
@Select("select * from user where login_name = ?")
- UserDO findByLoginName(String loginName);
+ default UserDO findByLoginName(String loginName) {
+ return selectOne(new LambdaQueryWrapper()
+ .eq(UserDO::getLoginName, loginName)
+ .last("limit 1")
+ );
+ }
/**
* 根据id查询单条记录
@@ -57,15 +66,19 @@ public interface UserMapper {
* @return
*/
@Select("select * from user where id = ?")
- UserDO findById(Integer id);
+ default UserDO findById(Integer id) {
+ return selectById(id);
+ }
@ResultType(UserDO.class)
@Select("select * from user where id in (:ids)")
- List findByIds(@Param("ids") Set ids);
+ default List findByIds(@Param("ids") Set ids) {
+ return selectBatchIds(ids);
+ }
@ResultType(UserListRes.class)
@Select("select * from user")
- void page(Page page, UserListReq req);
+ void page(PageInfo pageInfo, UserListReq req);
@ResultType(UserListRes.class)
@Select("select * from user where enable = 1")
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserReportMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserReportMapper.java
index b6e4529e..bc468aa4 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserReportMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserReportMapper.java
@@ -3,8 +3,9 @@ package fun.asgc.neutrino.proxy.server.dal;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.proxy.server.controller.res.UserFlowReportRes;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
@@ -14,8 +15,9 @@ import java.util.Date;
*/
@Intercept(ignoreGlobal = true)
@Component
+@Mapper
public interface UserReportMapper {
- void userFlowReportPage(Page page, @Param("todayBegin") Date todayBegin, @Param("todayEnd") Date todayEnd);
+ void userFlowReportPage(PageInfo pageInfo, @Param("todayBegin") Date todayBegin, @Param("todayEnd") Date todayEnd);
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java
index 2433617d..8d85bee7 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/UserTokenMapper.java
@@ -21,12 +21,16 @@
*/
package fun.asgc.neutrino.proxy.server.dal;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import fun.asgc.neutrino.core.annotation.Component;
import fun.asgc.neutrino.core.annotation.Param;
import fun.asgc.neutrino.core.aop.Intercept;
import fun.asgc.neutrino.core.db.annotation.Delete;
import fun.asgc.neutrino.core.db.annotation.Update;
import fun.asgc.neutrino.proxy.server.dal.entity.UserTokenDO;
+import org.apache.ibatis.annotations.Mapper;
import java.util.Date;
@@ -37,7 +41,8 @@ import java.util.Date;
*/
@Intercept(ignoreGlobal = true)
@Component
-public interface UserTokenMapper {
+@Mapper
+public interface UserTokenMapper extends BaseMapper {
/**
* 新增用户token
* 支持注解 + xml配置2种方式
@@ -55,7 +60,12 @@ public interface UserTokenMapper {
* @return
*/
// @Select("select * from user_token where token = ? and expiration_time > ?")
- UserTokenDO findByAvailableToken(String token, Date date);
+ default UserTokenDO findByAvailableToken(String token, Date date) {
+ return selectOne(new LambdaQueryWrapper()
+ .eq(UserTokenDO::getToken, token)
+ .gt(UserTokenDO::getExpirationTime, date)
+ );
+ }
/**
* 根据token删除记录
@@ -65,7 +75,12 @@ public interface UserTokenMapper {
void deleteByToken(String token);
@Update("update user_token set expiration_time = :expirationTime where token = :token")
- void updateTokenExpirationTime(@Param("token") String token, @Param("expirationTime") Date expirationTime);
+ default void updateTokenExpirationTime(@Param("token") String token, @Param("expirationTime") Date expirationTime) {
+ update(null, new LambdaUpdateWrapper()
+ .eq(UserTokenDO::getToken, token)
+ .set(UserTokenDO::getExpirationTime, expirationTime)
+ );
+ }
/**
* 根据userId删除token
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/ClientConnectRecordDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/ClientConnectRecordDO.java
index 4a6fb795..c8bda8f5 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/ClientConnectRecordDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/ClientConnectRecordDO.java
@@ -1,5 +1,7 @@
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -16,8 +18,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("client_connect_record")
+@TableName("client_connect_record")
public class ClientConnectRecordDO {
@Id
+ @TableId
private Integer id;
private String ip;
private Integer licenseId;
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportDayDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportDayDO.java
index 7da73929..8475d86f 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportDayDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportDayDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -37,8 +39,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("flow_report_day")
+@TableName("flow_report_day")
public class FlowReportDayDO {
@Id
+ @TableId
private Integer id;
/**
* 用户ID
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportHourDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportHourDO.java
index c3ee3057..1e8ddae4 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportHourDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportHourDO.java
@@ -21,6 +21,7 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -39,6 +40,7 @@ import java.util.Date;
@Table("flow_report_hour")
public class FlowReportHourDO {
@Id
+ @TableId
private Integer id;
/**
* 用户ID
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMinuteDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMinuteDO.java
index 139e9363..ac855fc1 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMinuteDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMinuteDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -37,8 +39,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("flow_report_minute")
+@TableName("flow_report_minute")
public class FlowReportMinuteDO {
@Id
+ @TableId
private Integer id;
/**
* 用户ID
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMonthDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMonthDO.java
index 312e0dbb..3b37e70e 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMonthDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/FlowReportMonthDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -37,8 +39,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("flow_report_month")
+@TableName("flow_report_month")
public class FlowReportMonthDO {
@Id
+ @TableId
private Integer id;
/**
* 用户ID
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobInfoDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobInfoDO.java
index cb1c3577..c426d06a 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobInfoDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobInfoDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -38,8 +40,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("job_info")
+@TableName("job_info")
public class JobInfoDO {
@Id
+ @TableId
private Integer id;
private String cron;
private String desc;
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobLogDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobLogDO.java
index f54172ab..fa556e8b 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobLogDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/JobLogDO.java
@@ -21,7 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
-import fun.asgc.neutrino.core.annotation.Autowired;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
import lombok.ToString;
@@ -38,8 +39,9 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("job_log")
+@TableName("job_log")
public class JobLogDO {
- @Autowired
+ @TableId
private Integer id;
private Integer jobId;
private String handler;
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/LicenseDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/LicenseDO.java
index 46aa9f1f..29a64d59 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/LicenseDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/LicenseDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import fun.asgc.neutrino.proxy.server.constant.OnlineStatusEnum;
@@ -39,8 +41,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("license")
+@TableName("license")
public class LicenseDO {
@Id
+ @TableId
private Integer id;
/**
* 名称
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java
index 805fcc2d..219e143a 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortMappingDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import fun.asgc.neutrino.proxy.server.constant.OnlineStatusEnum;
@@ -39,8 +41,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("port_mapping")
+@TableName("port_mapping")
public class PortMappingDO {
@Id
+ @TableId
private Integer id;
/**
* licenseId
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortPoolDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortPoolDO.java
index a8bcd696..bb4a1405 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortPoolDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/PortPoolDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -38,8 +40,10 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("port_pool")
+@TableName("port_pool")
public class PortPoolDO {
@Id
+ @TableId
private Integer id;
/**
* 端口
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java
index c51eb48d..f49fee3d 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -36,8 +38,10 @@ import java.util.Date;
@ToString
@Data
@Table("user")
+@TableName("user")
public class UserDO {
@Id
+ @TableId
private Integer id;
/**
* 用户名
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserLoginRecordDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserLoginRecordDO.java
index 472361fb..6316fc80 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserLoginRecordDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserLoginRecordDO.java
@@ -12,6 +12,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -29,6 +31,7 @@ import java.util.Date;
@Data
@Accessors(chain = true)
@Table("user_login_record")
+@TableName("user_login_record")
public class UserLoginRecordDO {
/**
* 类型 - 登录
@@ -40,6 +43,7 @@ public class UserLoginRecordDO {
public static final Integer TYPE_LOGOUT = 2;
@Id
+ @TableId
private Integer id;
/**
* 用户ID
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserTokenDO.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserTokenDO.java
index 00a3385e..3d0334ab 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserTokenDO.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/entity/UserTokenDO.java
@@ -21,6 +21,8 @@
*/
package fun.asgc.neutrino.proxy.server.dal.entity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import fun.asgc.neutrino.core.db.annotation.Id;
import fun.asgc.neutrino.core.db.annotation.Table;
import lombok.Data;
@@ -38,9 +40,11 @@ import java.util.Date;
@Accessors(chain = true)
@Data
@Table("user_token")
+@TableName("user_token")
public class UserTokenDO {
@Id
+ @TableId
private Integer id;
/**
* token
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ClientConnectRecordService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ClientConnectRecordService.java
index 63777be3..b2b98d63 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ClientConnectRecordService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ClientConnectRecordService.java
@@ -21,9 +21,13 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import fun.asgc.neutrino.core.util.CollectionUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.SystemContextHolder;
import fun.asgc.neutrino.proxy.server.controller.req.ClientConnectRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.ClientConnectRecordListRes;
@@ -34,6 +38,7 @@ import fun.asgc.neutrino.proxy.server.dal.entity.ClientConnectRecordDO;
import fun.asgc.neutrino.proxy.server.dal.entity.LicenseDO;
import fun.asgc.neutrino.proxy.server.dal.entity.UserDO;
import lombok.extern.slf4j.Slf4j;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -50,6 +55,8 @@ import java.util.stream.Collectors;
@Slf4j
@Component
public class ClientConnectRecordService {
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private ClientConnectRecordMapper clientConnectRecordMapper;
@Inject
@@ -58,29 +65,29 @@ public class ClientConnectRecordService {
private UserMapper userMapper;
public void add(ClientConnectRecordDO clientConnectRecordDO) {
- clientConnectRecordMapper.add(clientConnectRecordDO);
+ clientConnectRecordMapper.insert(clientConnectRecordDO);
}
- public Page page(PageQuery pageQuery, ClientConnectRecordListReq req) {
- Page page = Page.create(pageQuery);
- clientConnectRecordMapper.page(page, req);
- if (CollectionUtil.isEmpty(page.getRecords())) {
- return page;
- }
- Set licenseIds = page.getRecords().stream().map(ClientConnectRecordListRes::getLicenseId).collect(Collectors.toSet());
- if (CollectionUtil.isEmpty(licenseIds)) {
- return page;
+ public PageInfo page(PageQuery pageQuery, ClientConnectRecordListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = clientConnectRecordMapper.selectList(new LambdaQueryWrapper()
+ .orderByDesc(ClientConnectRecordDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, ClientConnectRecordListRes.class);
+ if (CollectionUtils.isEmpty(list)) {
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
+ Set licenseIds = respList.stream().map(ClientConnectRecordListRes::getLicenseId).collect(Collectors.toSet());
List licenseList = licenseMapper.findByIds(licenseIds);
if (CollectionUtil.isEmpty(licenseList)) {
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
Set userIds = licenseList.stream().map(LicenseDO::getUserId).collect(Collectors.toSet());
List userList = userMapper.findByIds(userIds);
Map licenseMap = licenseList.stream().collect(Collectors.toMap(LicenseDO::getId, Function.identity()));
Map userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity()));
boolean isAdmin = SystemContextHolder.isAdmin();
- page.getRecords().forEach(item -> {
+ respList.forEach(item -> {
LicenseDO license = licenseMap.get(item.getLicenseId());
if (null == license) {
return;
@@ -97,6 +104,6 @@ public class ClientConnectRecordService {
item.setMsg("******");
}
});
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobInfoService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobInfoService.java
index 2acfdbec..75002bd7 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobInfoService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobInfoService.java
@@ -21,10 +21,13 @@
*/
package fun.asgc.neutrino.proxy.server.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import com.google.common.collect.Lists;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.util.CollectionUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.quartz.IJobSource;
import fun.asgc.neutrino.proxy.server.base.quartz.JobExecutor;
import fun.asgc.neutrino.proxy.server.base.quartz.JobInfo;
@@ -42,6 +45,7 @@ import fun.asgc.neutrino.proxy.server.dal.JobInfoMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.JobInfoDO;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
import lombok.extern.slf4j.Slf4j;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -57,13 +61,18 @@ import java.util.List;
@Slf4j
@Component
public class JobInfoService implements IJobSource {
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private JobInfoMapper jobInfoMapper;
- public Page page(PageQuery pageQuery, JobInfoListReq req) {
- Page page = Page.create(pageQuery);
- jobInfoMapper.page(page, req);
- return page;
+ public PageInfo page(PageQuery pageQuery, JobInfoListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = jobInfoMapper.selectList(new LambdaQueryWrapper()
+ .orderByAsc(JobInfoDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, JobInfoListRes.class);
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
public List findList() {
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobLogService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobLogService.java
index 7ca2edb2..de468919 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobLogService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/JobLogService.java
@@ -21,8 +21,11 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.quartz.IJobCallback;
import fun.asgc.neutrino.proxy.server.base.quartz.JobInfo;
import fun.asgc.neutrino.proxy.server.controller.req.JobLogListReq;
@@ -30,11 +33,13 @@ import fun.asgc.neutrino.proxy.server.controller.res.JobLogListRes;
import fun.asgc.neutrino.proxy.server.dal.JobLogMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.JobLogDO;
import lombok.extern.slf4j.Slf4j;
+import ma.glasnost.orika.MapperFactory;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.Date;
+import java.util.List;
/**
*
@@ -44,6 +49,8 @@ import java.util.Date;
@Slf4j
@Component
public class JobLogService implements IJobCallback {
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private JobLogMapper jobLogMapper;
@@ -70,15 +77,14 @@ public class JobLogService implements IJobCallback {
);
}
- public Page page(PageQuery pageQuery, JobLogListReq req) {
- Page page = Page.create(pageQuery);
-
- if(req.getJobId() != null && req.getJobId() > 0){
- jobLogMapper.pageByJobId(page, req);
- } else {
- jobLogMapper.page(page, req);
- }
- return page;
+ public PageInfo page(PageQuery pageQuery, JobLogListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = jobLogMapper.selectList(new LambdaQueryWrapper()
+ .eq(null != req.getJobId(), JobLogDO::getJobId, req.getJobId())
+ .orderByDesc(JobLogDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, JobLogListRes.class);
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/LicenseService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/LicenseService.java
index 41dc431b..b4916bcd 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/LicenseService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/LicenseService.java
@@ -21,10 +21,14 @@
*/
package fun.asgc.neutrino.proxy.server.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import com.google.common.collect.Sets;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.util.CollectionUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.SystemContextHolder;
import fun.asgc.neutrino.proxy.server.constant.EnableStatusEnum;
import fun.asgc.neutrino.proxy.server.constant.ExceptionConstant;
@@ -39,6 +43,7 @@ import fun.asgc.neutrino.proxy.server.dal.UserMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.LicenseDO;
import fun.asgc.neutrino.proxy.server.dal.entity.UserDO;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.Lifecycle;
@@ -54,7 +59,8 @@ import java.util.stream.Collectors;
*/
@Component
public class LicenseService implements Lifecycle {
-
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private LicenseMapper licenseMapper;
@Inject
@@ -62,14 +68,20 @@ public class LicenseService implements Lifecycle {
@Inject
private VisitorChannelService visitorChannelService;
- public Page page(PageQuery pageQuery, LicenseListReq req) {
- Page page = Page.create(pageQuery);
- licenseMapper.page(page, req);
- if (!CollectionUtil.isEmpty(page.getRecords())) {
- Set userIds = page.getRecords().stream().map(LicenseListRes::getUserId).collect(Collectors.toSet());
+ public PageInfo page(PageQuery pageQuery, LicenseListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = licenseMapper.selectList(new LambdaQueryWrapper()
+ .orderByAsc(LicenseDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, LicenseListRes.class);
+ if (CollectionUtils.isEmpty(list)) {
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
+ }
+ if (!CollectionUtil.isEmpty(respList)) {
+ Set userIds = respList.stream().map(LicenseListRes::getUserId).collect(Collectors.toSet());
List userList = userMapper.findByIds(userIds);
Map userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity()));
- for (LicenseListRes item : page.getRecords()) {
+ for (LicenseListRes item : respList) {
UserDO userDO = userMap.get(item.getUserId());
if (null != userDO) {
item.setUserName(userDO.getName());
@@ -77,7 +89,7 @@ public class LicenseService implements Lifecycle {
item.setKey(desensitization(item.getUserId(), item.getKey()));
}
}
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
public List list(LicenseListReq req) {
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java
index b5b09f70..e6b496ef 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortMappingService.java
@@ -21,10 +21,14 @@
*/
package fun.asgc.neutrino.proxy.server.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import com.google.common.collect.Sets;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.core.util.CollectionUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.SystemContextHolder;
import fun.asgc.neutrino.proxy.server.constant.EnableStatusEnum;
import fun.asgc.neutrino.proxy.server.constant.ExceptionConstant;
@@ -43,6 +47,7 @@ import fun.asgc.neutrino.proxy.server.dal.entity.PortMappingDO;
import fun.asgc.neutrino.proxy.server.dal.entity.PortPoolDO;
import fun.asgc.neutrino.proxy.server.dal.entity.UserDO;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.Lifecycle;
@@ -61,6 +66,8 @@ import java.util.stream.Collectors;
*/
@Component
public class PortMappingService implements Lifecycle {
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private PortMappingMapper portMappingMapper;
@Inject
@@ -72,25 +79,25 @@ public class PortMappingService implements Lifecycle {
@Inject
private VisitorChannelService visitorChannelService;
- public Page page(PageQuery pageQuery, PortMappingListReq req) {
- Page page = Page.create(pageQuery);
- portMappingMapper.page(page, req);
- if (CollectionUtil.isEmpty(page.getRecords())) {
- return page;
- }
- Set licenseIds = page.getRecords().stream().map(PortMappingListRes::getLicenseId).collect(Collectors.toSet());
- if (CollectionUtil.isEmpty(licenseIds)) {
- return page;
+ public PageInfo page(PageQuery pageQuery, PortMappingListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = portMappingMapper.selectList(new LambdaQueryWrapper()
+ .orderByAsc(PortMappingDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, PortMappingListRes.class);
+ if (CollectionUtils.isEmpty(list)) {
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
+ Set licenseIds = respList.stream().map(PortMappingListRes::getLicenseId).collect(Collectors.toSet());
List licenseList = licenseMapper.findByIds(licenseIds);
if (CollectionUtil.isEmpty(licenseList)) {
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
Set userIds = licenseList.stream().map(LicenseDO::getUserId).collect(Collectors.toSet());
List userList = userMapper.findByIds(userIds);
Map licenseMap = licenseList.stream().collect(Collectors.toMap(LicenseDO::getId, Function.identity()));
Map userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity()));
- page.getRecords().forEach(item -> {
+ respList.forEach(item -> {
LicenseDO license = licenseMap.get(item.getLicenseId());
if (null == license) {
return;
@@ -103,7 +110,7 @@ public class PortMappingService implements Lifecycle {
}
item.setUserName(user.getName());
});
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
public PortMappingCreateRes create(PortMappingCreateReq req) {
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java
index 01149d33..a587eef2 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/PortPoolService.java
@@ -21,8 +21,11 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.constant.EnableStatusEnum;
import fun.asgc.neutrino.proxy.server.constant.ExceptionConstant;
import fun.asgc.neutrino.proxy.server.controller.req.PortPoolCreateReq;
@@ -34,6 +37,7 @@ import fun.asgc.neutrino.proxy.server.controller.res.PortPoolUpdateEnableStatusR
import fun.asgc.neutrino.proxy.server.dal.PortPoolMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.PortPoolDO;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -47,16 +51,20 @@ import java.util.List;
*/
@Component
public class PortPoolService {
-
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private PortPoolMapper portPoolMapper;
@Inject
private VisitorChannelService visitorChannelService;
- public Page page(PageQuery pageQuery, PortPoolListReq req) {
- Page page = Page.create(pageQuery);
- portPoolMapper.page(page, req);
- return page;
+ public PageInfo page(PageQuery pageQuery, PortPoolListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = portPoolMapper.selectList(new LambdaQueryWrapper()
+ .orderByAsc(PortPoolDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, PortPoolListRes.class);
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
public List list(PortPoolListReq req) {
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ReportService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ReportService.java
index ee6cb43e..66fb225e 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ReportService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/ReportService.java
@@ -21,7 +21,7 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
+import fun.asgc.neutrino.core.db.page.PageInfo;
import fun.asgc.neutrino.core.db.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.LicenseFlowReportReq;
import fun.asgc.neutrino.proxy.server.controller.req.UserFlowReportReq;
@@ -48,7 +48,7 @@ public class ReportService {
* @param req
* @return
*/
- public Page userFlowReportPage(PageQuery pageQuery, UserFlowReportReq req) {
+ public PageInfo userFlowReportPage(PageQuery pageQuery, UserFlowReportReq req) {
// TODO
return null;
}
@@ -59,7 +59,7 @@ public class ReportService {
* @param req
* @return
*/
- public Page licenseFlowReportPage(PageQuery pageQuery, LicenseFlowReportReq req) {
+ public PageInfo licenseFlowReportPage(PageQuery pageQuery, LicenseFlowReportReq req) {
// TODO
return null;
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserLoginRecordService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserLoginRecordService.java
index c568127c..82f25986 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserLoginRecordService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserLoginRecordService.java
@@ -21,14 +21,20 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import fun.asgc.neutrino.core.util.CollectionUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.controller.req.UserLoginRecordListReq;
import fun.asgc.neutrino.proxy.server.controller.res.UserLoginRecordListRes;
import fun.asgc.neutrino.proxy.server.dal.UserLoginRecordMapper;
import fun.asgc.neutrino.proxy.server.dal.UserMapper;
import fun.asgc.neutrino.proxy.server.dal.entity.UserDO;
+import fun.asgc.neutrino.proxy.server.dal.entity.UserLoginRecordDO;
+import ma.glasnost.orika.MapperFactory;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -45,25 +51,34 @@ import java.util.stream.Collectors;
*/
@Component
public class UserLoginRecordService {
+ @Inject
+ private MapperFactory mapperFactory;
@Inject
private UserLoginRecordMapper userLoginRecordMapper;
@Inject
private UserMapper userMapper;
- public Page page(PageQuery pageQuery, UserLoginRecordListReq req) {
- Page page = Page.create(pageQuery);
- userLoginRecordMapper.page(page, req);
- if (!CollectionUtil.isEmpty(page.getRecords())) {
- Set userIds = page.getRecords().stream().map(UserLoginRecordListRes::getUserId).collect(Collectors.toSet());
+ public PageInfo page(PageQuery pageQuery, UserLoginRecordListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = userLoginRecordMapper.selectList(new LambdaQueryWrapper()
+ .orderByDesc(UserLoginRecordDO::getCreateTime)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, UserLoginRecordListRes.class);
+ if (CollectionUtils.isEmpty(list)) {
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
+ }
+
+ if (!CollectionUtil.isEmpty(respList)) {
+ Set userIds = respList.stream().map(UserLoginRecordListRes::getUserId).collect(Collectors.toSet());
List userList = userMapper.findByIds(userIds);
Map userMap = userList.stream().collect(Collectors.toMap(UserDO::getId, Function.identity()));
- for (UserLoginRecordListRes item : page.getRecords()) {
+ for (UserLoginRecordListRes item : respList) {
UserDO userDO = userMap.get(item.getUserId());
if (null != userDO) {
item.setUserName(userDO.getName());
}
}
}
- return page;
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
}
diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java
index 06f13826..53e9a624 100644
--- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java
+++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/service/UserService.java
@@ -21,9 +21,12 @@
*/
package fun.asgc.neutrino.proxy.server.service;
-import fun.asgc.neutrino.core.db.page.Page;
-import fun.asgc.neutrino.core.db.page.PageQuery;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
import fun.asgc.neutrino.core.util.DateUtil;
+import fun.asgc.neutrino.proxy.server.base.page.PageInfo;
+import fun.asgc.neutrino.proxy.server.base.page.PageQuery;
import fun.asgc.neutrino.proxy.server.base.rest.ServiceException;
import fun.asgc.neutrino.proxy.server.base.rest.SystemContextHolder;
import fun.asgc.neutrino.proxy.server.constant.EnableStatusEnum;
@@ -38,6 +41,8 @@ import fun.asgc.neutrino.proxy.server.dal.entity.UserLoginRecordDO;
import fun.asgc.neutrino.proxy.server.dal.entity.UserTokenDO;
import fun.asgc.neutrino.proxy.server.util.Md5Util;
import fun.asgc.neutrino.proxy.server.util.ParamCheckUtil;
+import ma.glasnost.orika.MapperFactory;
+import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -55,12 +60,14 @@ import java.util.UUID;
public class UserService {
private static final String DEFAULT_PASSWORD = "123456";
@Inject
+ private MapperFactory mapperFactory;
+ @Db
private UserMapper userMapper;
- @Inject
+ @Db
private UserTokenMapper userTokenMapper;
- @Inject
+ @Db
private UserLoginRecordMapper userLoginRecordMapper;
- @Inject
+ @Db
private VisitorChannelService visitorChannelService;
public LoginRes login(LoginReq req) {
@@ -77,7 +84,7 @@ public class UserService {
Date expirationTime = DateUtil.addDate(now, Calendar.HOUR, 1);
// 缓存token
- userTokenMapper.add(new UserTokenDO()
+ userTokenMapper.insert(new UserTokenDO()
.setToken(token)
.setUserId(userDO.getId())
.setExpirationTime(expirationTime)
@@ -86,7 +93,7 @@ public class UserService {
);
// 新增用户登录日志
- userLoginRecordMapper.add(new UserLoginRecordDO()
+ userLoginRecordMapper.insert(new UserLoginRecordDO()
.setUserId(userDO.getId())
.setIp(SystemContextHolder.getIp())
.setToken(token)
@@ -132,10 +139,13 @@ public class UserService {
userTokenMapper.updateTokenExpirationTime(token, expirationTime);
}
- public Page page(PageQuery pageQuery, UserListReq req) {
- Page page = Page.create(pageQuery);
- userMapper.page(page, req);
- return page;
+ public PageInfo page(PageQuery pageQuery, UserListReq req) {
+ Page result = PageHelper.startPage(pageQuery.getCurrent(), pageQuery.getSize());
+ List list = userMapper.selectList(new LambdaQueryWrapper()
+ .orderByAsc(UserDO::getId)
+ );
+ List respList = mapperFactory.getMapperFacade().mapAsList(list, UserListRes.class);
+ return PageInfo.of(respList, result.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
public List list(UserListReq req) {
diff --git a/neutrino-proxy-server/src/main/resources/app.yml b/neutrino-proxy-server/src/main/resources/app.yml
index e61f476a..3cc90636 100644
--- a/neutrino-proxy-server/src/main/resources/app.yml
+++ b/neutrino-proxy-server/src/main/resources/app.yml
@@ -36,4 +36,16 @@ solon.staticfiles.maxAge: 600
#添加静态目录映射。(按需选择)#v1.11.0 后支持
solon.staticfiles.mappings:
- path: "/"
- repository: "./neutrino-proxy-admin/dist/" #2.添加资源路径(仓库只能是目录)
\ No newline at end of file
+ repository: "./neutrino-proxy-admin/dist/" #2.添加资源路径(仓库只能是目录)
+
+mybatis.db:
+ typeAliases: #支持包名 或 类名(大写开头 或 *)//支持 ** 或 * 占位符
+ - "fun.asgc.neutrino.proxy.server.dal.entity"
+ mappers: #支持包名 或 类名(大写开头 或 *)或 xml(.xml结尾)//支持 ** 或 * 占位符
+ - "classpath:mapper/*.xml"
+ - "fun.asgc.neutrino.proxy.server.dal"
+ configuration: #扩展配置(要与 MybatisConfiguration 类的属性一一对应)
+ cacheEnabled: false
+ mapUnderscoreToCamelCase: true
+ globalConfig: #全局配置(要与 GlobalConfig 类的属性一一对应)
+ banner: true
\ No newline at end of file
diff --git a/neutrino-proxy-server/src/main/resources/mapper/ClientConnectRecordMapper.xml b/neutrino-proxy-server/src/main/resources/mapper/ClientConnectRecordMapper.xml
index c6b22539..49a3e65e 100644
--- a/neutrino-proxy-server/src/main/resources/mapper/ClientConnectRecordMapper.xml
+++ b/neutrino-proxy-server/src/main/resources/mapper/ClientConnectRecordMapper.xml
@@ -1,3 +1,6 @@
+
+
diff --git a/neutrino-proxy-server/src/main/resources/mapper/JobInfoMapper.xml b/neutrino-proxy-server/src/main/resources/mapper/JobInfoMapper.xml
index 10bbc771..4957d973 100644
--- a/neutrino-proxy-server/src/main/resources/mapper/JobInfoMapper.xml
+++ b/neutrino-proxy-server/src/main/resources/mapper/JobInfoMapper.xml
@@ -1,3 +1,6 @@
+
+
diff --git a/neutrino-proxy-server/src/main/resources/mapper/LicenseMapper.xml b/neutrino-proxy-server/src/main/resources/mapper/LicenseMapper.xml
index 9f53a5c4..367f28cd 100644
--- a/neutrino-proxy-server/src/main/resources/mapper/LicenseMapper.xml
+++ b/neutrino-proxy-server/src/main/resources/mapper/LicenseMapper.xml
@@ -1,6 +1,9 @@
+
+
-