原生编译第一阶段:项目成功启动

This commit is contained in:
songyinyin
2023-10-20 19:29:38 +08:00
parent 543ea25fb0
commit 7dce301bef
55 changed files with 675 additions and 421 deletions
@@ -1,18 +1,10 @@
package org.dromara.neutrinoproxy.server;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.solonplugins.job.annotation.EnableJob;
import org.noear.solon.Solon;
import org.noear.solon.SolonApp;
import org.noear.solon.annotation.SolonMain;
import org.noear.solon.web.cors.CrossFilter;
import org.slf4j.LoggerFactory;
import java.util.List;
/**
*
@@ -28,25 +20,6 @@ public class ProxyServer {
Solon.start(ProxyServer.class, args, app -> {
// 跨域支持。加-1 优先级更高
app.filter(-1, new CrossFilter().allowedOrigins("*"));
// 设置日志级别
setLogLevel(app);
});
}
private static void setLogLevel(SolonApp app) {
String loggerLevel = app.cfg().get("neutrino.proxy.logger.level");
if (StringUtils.isBlank(loggerLevel)) {
return;
}
try {
Level level = Level.toLevel(loggerLevel);
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
for (Logger logger : loggerContext.getLoggerList()) {
logger.setLevel(level);
}
} catch (Exception e) {
log.error("logger level set failed", e);
}
}
}
@@ -0,0 +1,114 @@
package org.dromara.neutrinoproxy.server.base;
import org.apache.ibatis.io.DefaultVFS;
import org.apache.ibatis.io.JBoss6VFS;
import org.dromara.neutrinoproxy.server.base.proxy.ProxyConfig;
import org.dromara.neutrinoproxy.server.base.rest.ResponseBody;
import org.dromara.neutrinoproxy.server.dal.ClientConnectRecordMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportDayMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportHourMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportMinuteMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportMonthMapper;
import org.dromara.neutrinoproxy.server.dal.JobInfoMapper;
import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
import org.dromara.neutrinoproxy.server.dal.PortPoolMapper;
import org.dromara.neutrinoproxy.server.dal.UserLoginRecordMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
import org.dromara.neutrinoproxy.server.dal.UserTokenMapper;
import org.dromara.neutrinoproxy.server.service.ClientConnectRecordService;
import org.dromara.neutrinoproxy.server.service.JobInfoService;
import org.dromara.neutrinoproxy.server.service.JobLogService;
import org.dromara.neutrinoproxy.server.service.LicenseService;
import org.dromara.neutrinoproxy.server.service.PortGroupService;
import org.dromara.neutrinoproxy.server.service.PortMappingService;
import org.dromara.neutrinoproxy.server.service.PortPoolService;
import org.dromara.neutrinoproxy.server.service.ReportService;
import org.dromara.neutrinoproxy.server.service.UserLoginRecordService;
import org.dromara.neutrinoproxy.server.service.UserService;
import org.dromara.solonplugins.job.JobBean;
import org.noear.solon.Solon;
import org.noear.solon.SolonApp;
import org.noear.solon.annotation.Component;
import org.noear.solon.aot.RuntimeNativeMetadata;
import org.noear.solon.aot.RuntimeNativeRegistrar;
import org.noear.solon.aot.hint.MemberCategory;
import org.noear.solon.core.AppContext;
import org.noear.solon.core.util.ResourceUtil;
import org.noear.solon.core.wrap.ParamWrap;
import java.lang.reflect.Type;
import java.util.Collection;
/**
* @author songyinyin
* @since 2023/10/20 11:24
*/
@Component
public class NeutrinoRuntimeNativeRegistrar implements RuntimeNativeRegistrar {
@Override
public void register(AppContext context, RuntimeNativeMetadata metadata) {
// 使用 MP lambda 的类,需要注册序列化
metadata.registerLambdaSerialization(ClientConnectRecordService.class);
metadata.registerLambdaSerialization(JobInfoService.class);
metadata.registerLambdaSerialization(JobLogService.class);
metadata.registerLambdaSerialization(LicenseService.class);
metadata.registerLambdaSerialization(PortGroupService.class);
metadata.registerLambdaSerialization(PortMappingService.class);
metadata.registerLambdaSerialization(PortPoolService.class);
metadata.registerLambdaSerialization(ReportService.class);
metadata.registerLambdaSerialization(UserLoginRecordService.class);
metadata.registerLambdaSerialization(UserService.class);
metadata.registerLambdaSerialization(LicenseMapper.class);
metadata.registerLambdaSerialization(ClientConnectRecordMapper.class);
metadata.registerLambdaSerialization(FlowReportDayMapper.class);
metadata.registerLambdaSerialization(FlowReportHourMapper.class);
metadata.registerLambdaSerialization(FlowReportMinuteMapper.class);
metadata.registerLambdaSerialization(FlowReportMonthMapper.class);
metadata.registerLambdaSerialization(JobInfoMapper.class);
metadata.registerLambdaSerialization(PortMappingMapper.class);
metadata.registerLambdaSerialization(PortPoolMapper.class);
metadata.registerLambdaSerialization(UserLoginRecordMapper.class);
metadata.registerLambdaSerialization(UserMapper.class);
metadata.registerLambdaSerialization(UserTokenMapper.class);
// mybatis
metadata.registerReflection(JBoss6VFS.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
metadata.registerReflection(DefaultVFS.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
Collection<Class<?>> classes = ResourceUtil.scanClasses("org.dromara.neutrinoproxy.server.dal.entity.*");
for (Class<?> clazz : classes) {
metadata.registerReflection(clazz, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
Solon.context().methodForeach(method -> {
ParamWrap[] paramWraps = method.getParamWraps();
for (ParamWrap paramWrap : paramWraps) {
Class<?> paramType = paramWrap.getType();
metadata.registerReflection(paramType, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
Type genericType = paramWrap.getGenericType();
metadata.registerReflection(genericType.getTypeName(), MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
}
Class<?> returnType = method.getReturnType();
metadata.registerReflection(returnType, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
});
metadata.registerReflection(ResponseBody.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerSerialization(ResponseBody.class);
metadata.registerReflection(ProxyConfig.Protocol.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerReflection(ProxyConfig.Server.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerReflection(ProxyConfig.Tunnel.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerReflection(ProxyConfig.Tcp.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerReflection(ProxyConfig.Udp.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS);
metadata.registerReflection(JobBean.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
}
}
@@ -24,16 +24,17 @@ package org.dromara.neutrinoproxy.server.base.db;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.jfinal.plugin.activerecord.Db;
import lombok.extern.slf4j.Slf4j;
import org.dromara.neutrinoproxy.core.util.Assert;
import org.dromara.neutrinoproxy.core.util.FileUtil;
import org.dromara.neutrinoproxy.server.constant.DbTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.event.AppLoadEndEvent;
import org.noear.solon.core.event.EventListener;
import org.noear.wood.DbContext;
import org.noear.wood.annotation.Db;
import java.util.List;
@@ -51,6 +52,9 @@ public class DBInitialize implements EventListener<AppLoadEndEvent> {
private DbTypeEnum dbTypeEnum;
@Db
DbContext dbContext;
@Init
public void init() throws Throwable {
Assert.notNull(dbConfig.getType(), "neutrino.data.db.type不能为空!");
@@ -83,7 +87,7 @@ public class DBInitialize implements EventListener<AppLoadEndEvent> {
sql += "\r\n" + line.trim();
if (sql.endsWith(";")) {
log.debug("init database table sql:{}", sql);
Db.update(sql);
dbContext.exe(sql);
sql = "";
}
}
@@ -101,8 +105,8 @@ public class DBInitialize implements EventListener<AppLoadEndEvent> {
for (String tableName : initDataTableNameList) {
// 表里没有数据的时候,才进行初始化操作
int count = Db.queryInt(String.format("select count(1) from `%s`", tableName));
if (count > 0) {
Object result = dbContext.exe(String.format("select count(1) from `%s`", tableName));
if (result != null && ((Number) result).intValue() > 0) {
continue;
}
List<String> lines = FileUtil.readContentAsStringList(String.format("classpath:/sql/%s/%s.data.sql", dbConfig.getType(), tableName));
@@ -117,7 +121,7 @@ public class DBInitialize implements EventListener<AppLoadEndEvent> {
sql += "\r\n" + line.trim();
if (sql.endsWith(";")) {
log.debug("init database data[table={}] sql:{}", tableName, sql);
Db.update(sql);
dbContext.exe(sql);
sql = "";
}
}
@@ -12,8 +12,6 @@ import org.dromara.neutrinoproxy.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;
@@ -27,11 +25,8 @@ public class DbConfiguration {
@Bean(value = "db", typed = true)
public DataSource dataSource(@Inject DbConfig dbConfig) {
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;
if (DbTypeEnum.H2 == dbTypeEnum) {
return newHikariDataSource(dbConfig, "org.h2.Driver");
} else if (DbTypeEnum.MYSQL == dbTypeEnum) {
String driver = "com.mysql.cj.jdbc.Driver";
try {
@@ -68,7 +63,7 @@ public class DbConfiguration {
@Bean
public void db1_ext2(@Db("db") MybatisConfiguration config) {
config.getTypeHandlerRegistry().register("fun.asgc.neutrino.proxy.server.dal");
config.getTypeHandlerRegistry().register("org.dromara.neutrinoproxy.server.dal.entity");
config.setDefaultEnumTypeHandler(null);
MybatisPlusInterceptor plusInterceptor = new MybatisPlusInterceptor();
@@ -48,7 +48,10 @@ public class ProxyConfiguration implements LifecycleBean {
@Bean("tcpServerBossGroup")
public NioEventLoopGroup tcpServerBossGroup(@Inject ProxyConfig proxyConfig) {
return new NioEventLoopGroup(proxyConfig.getServer().getTcp().getBossThreadCount());
ProxyConfig.Server server = proxyConfig.getServer();
System.out.println("==> server:" + server);
ProxyConfig.Tcp tcp = server.getTcp();
return new NioEventLoopGroup(tcp.getBossThreadCount());
}
@Bean("tcpServerWorkerGroup")
@@ -79,12 +82,12 @@ public class ProxyConfiguration implements LifecycleBean {
}
@Bean("udpServerBossGroup")
private NioEventLoopGroup udpServerBossGroup(@Inject ProxyConfig proxyConfig) {
public NioEventLoopGroup udpServerBossGroup(@Inject ProxyConfig proxyConfig) {
return new NioEventLoopGroup(proxyConfig.getServer().getUdp().getBossThreadCount());
}
@Bean("udpServerWorkerGroup")
private NioEventLoopGroup udpServerWorkerGroup(@Inject ProxyConfig proxyConfig) {
public NioEventLoopGroup udpServerWorkerGroup(@Inject ProxyConfig proxyConfig) {
return new NioEventLoopGroup(proxyConfig.getServer().getUdp().getWorkThreadCount());
}
@@ -1,7 +1,7 @@
package org.dromara.neutrinoproxy.server.base.rest.interceptor;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.noear.snack.ONode;
import org.noear.solon.annotation.Component;
import org.noear.solon.core.handle.Action;
import org.noear.solon.core.handle.Context;
@@ -33,8 +33,8 @@ public class VisitLogInterceptor implements RouterInterceptor {
long elapsedTime = now.getTime() - startTime.getTime();
log.debug("\n-----------------------------------------------------------------interface request log\n{} url:{} elapsed time:{}\nrequest:{}\nresponse:{}\nclient ip:{}\n",
ctx.method(), ctx.path(), getElapsedTimeStr(elapsedTime),
JSONObject.toJSONString(ctx.paramMap()),
JSONObject.toJSONString(JSONObject.toJSONString(ctx.result)),
ONode.serialize(ctx.paramMap()),
ONode.serialize(ctx.result),
ctx.realIp()
);
}
@@ -37,7 +37,7 @@ import java.util.stream.Stream;
@Getter
@AllArgsConstructor
public enum DbTypeEnum {
SQLITE("sqlite"),
H2("h2"),
MYSQL("mysql"),
MARIADB("mariadb"),
;
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.log.ClientConnectRecordListRes;
import java.util.Date;
@@ -34,4 +35,17 @@ public class ClientConnectRecordDO {
* 创建时间
*/
private Date createTime;
public ClientConnectRecordListRes toRes() {
ClientConnectRecordListRes res = new ClientConnectRecordListRes();
res.setId(id);
res.setIp(ip);
res.setLicenseId(licenseId);
res.setType(type);
res.setMsg(msg);
res.setCode(code);
res.setErr(err);
res.setCreateTime(createTime);
return res;
}
}
@@ -29,6 +29,7 @@ import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.controller.res.system.JobInfoListRes;
import java.util.Date;
@@ -64,4 +65,19 @@ public class JobInfoDO {
* 更新时间
*/
private Date updateTime;
public JobInfoListRes toRes() {
JobInfoListRes res = new JobInfoListRes();
res.setId(id);
res.setCron(cron);
res.setDesc(desc);
res.setAlarmEmail(alarmEmail);
res.setAlarmDing(alarmDing);
res.setHandler(handler);
res.setParam(param);
res.setEnable(enable);
res.setCreateTime(createTime);
res.setUpdateTime(updateTime);
return res;
}
}
@@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.log.JobLogListRes;
import java.util.Date;
@@ -52,4 +53,17 @@ public class JobLogDO {
* 创建时间
*/
private Date createTime;
public JobLogListRes toRes() {
JobLogListRes res = new JobLogListRes();
res.setId(id);
res.setJobId(jobId);
res.setHandler(handler);
res.setParam(param);
res.setCode(code);
res.setMsg(msg);
res.setAlarmStatus(alarmStatus);
res.setCreateTime(createTime);
return res;
}
}
@@ -30,6 +30,7 @@ import org.dromara.neutrinoproxy.server.constant.OnlineStatusEnum;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseListRes;
import java.util.Date;
@@ -76,4 +77,17 @@ public class LicenseDO {
* 更新时间
*/
private Date updateTime;
public LicenseListRes toRes() {
LicenseListRes res = new LicenseListRes();
res.setId(id);
res.setName(name);
res.setKey(key);
res.setUserId(userId);
res.setIsOnline(isOnline);
res.setEnable(enable);
res.setCreateTime(createTime);
res.setUpdateTime(updateTime);
return res;
}
}
@@ -29,6 +29,7 @@ import org.dromara.neutrinoproxy.server.constant.OnlineStatusEnum;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingListRes;
import java.util.Date;
@@ -99,4 +100,24 @@ public class PortMappingDO {
* 更新时间
*/
private Date updateTime;
public PortMappingListRes toRes() {
PortMappingListRes res = new PortMappingListRes();
res.setId(id);
res.setLicenseId(licenseId);
res.setProtocal(protocal);
res.setSubdomain(subdomain);
res.setServerPort(serverPort);
res.setClientIp(clientIp);
res.setClientPort(clientPort);
res.setDescription(description);
res.setIsOnline(isOnline);
res.setProxyResponses(proxyResponses);
res.setProxyTimeoutMs(proxyTimeoutMs);
res.setEnable(enable);
res.setCreateTime(createTime);
res.setUpdateTime(updateTime);
return res;
}
}
@@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolListRes;
import java.util.Date;
@@ -64,4 +65,15 @@ public class PortPoolDO {
* 更新时间
*/
private Date updateTime;
public PortPoolListRes toRes() {
PortPoolListRes res = new PortPoolListRes();
res.setId(id);
res.setGroupId(groupId);
res.setPort(port);
res.setEnable(enable);
res.setCreateTime(createTime);
res.setUpdateTime(updateTime);
return res;
}
}
@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import org.dromara.neutrinoproxy.server.controller.res.system.UserListRes;
import java.util.Date;
@@ -36,7 +37,7 @@ import java.util.Date;
*/
@ToString
@Data
@TableName("user")
@TableName("`user`")
public class UserDO {
@TableId(type = IdType.AUTO)
private Integer id;
@@ -64,4 +65,15 @@ public class UserDO {
* 更新时间
*/
private Date updateTime;
public UserListRes toRes() {
UserListRes res = new UserListRes();
res.setId(id);
res.setName(name);
res.setLoginName(loginName);
res.setEnable(enable);
res.setCreateTime(createTime);
res.setUpdateTime(updateTime);
return res;
}
}
@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.dromara.neutrinoproxy.server.controller.res.log.UserLoginRecordListRes;
import java.util.Date;
@@ -62,4 +63,14 @@ public class UserLoginRecordDO {
* 创建时间
*/
private Date createTime;
public UserLoginRecordListRes toRes() {
UserLoginRecordListRes res = new UserLoginRecordListRes();
res.setId(id);
res.setUserId(userId);
res.setIp(ip);
res.setType(type);
res.setCreateTime(createTime);
return res;
}
}
@@ -1,14 +1,19 @@
package org.dromara.neutrinoproxy.server.job;
import com.alibaba.fastjson.JSONObject;
import org.dromara.neutrinoproxy.core.util.DateUtil;
import org.dromara.neutrinoproxy.server.dal.*;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.neutrinoproxy.core.util.DateUtil;
import org.dromara.neutrinoproxy.server.dal.ClientConnectRecordMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportDayMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportHourMapper;
import org.dromara.neutrinoproxy.server.dal.FlowReportMinuteMapper;
import org.dromara.neutrinoproxy.server.dal.JobLogMapper;
import org.dromara.neutrinoproxy.server.dal.UserLoginRecordMapper;
import org.dromara.solonplugins.job.IJobHandler;
import org.dromara.solonplugins.job.annotation.JobHandler;
import org.noear.snack.ONode;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -108,7 +113,7 @@ public class DataCleanJob implements IJobHandler {
public static JobParams getParams(String s) {
try {
if (StringUtils.isNotBlank(s)) {
return JSONObject.parseObject(s, JobParams.class);
return ONode.deserialize(s, JobParams.class);
}
} catch (Exception e) {
// ignore
@@ -1,11 +1,13 @@
package org.dromara.neutrinoproxy.server.proxy.handler;
import com.alibaba.fastjson.JSONObject;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOption;
import lombok.extern.slf4j.Slf4j;
import org.dromara.neutrinoproxy.core.*;
import org.dromara.neutrinoproxy.core.Constants;
import org.dromara.neutrinoproxy.core.ExceptionEnum;
import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
@@ -16,6 +18,7 @@ import org.dromara.neutrinoproxy.server.proxy.domain.ProxyAttachment;
import org.dromara.neutrinoproxy.server.service.LicenseService;
import org.dromara.neutrinoproxy.server.service.UserService;
import org.dromara.neutrinoproxy.server.util.ProxyUtil;
import org.noear.snack.ONode;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -36,7 +39,7 @@ public class UdpProxyMessageConnectHandler implements ProxyMessageHandler {
@Override
public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) {
final ProxyMessage.UdpBaseInfo udpBaseInfo = JSONObject.parseObject(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
final ProxyMessage.UdpBaseInfo udpBaseInfo = ONode.deserialize(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
final String licenseKey = new String(proxyMessage.getData());
log.info("[UDP connect]info:{} licenseKey:{}", proxyMessage.getInfo(), licenseKey);
@@ -1,7 +1,5 @@
package org.dromara.neutrinoproxy.server.proxy.handler;
import com.alibaba.fastjson.JSONObject;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
@@ -12,9 +10,8 @@ import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
import org.dromara.neutrinoproxy.core.dispatcher.Match;
import org.dromara.neutrinoproxy.server.proxy.domain.VisitorChannelAttachInfo;
import org.dromara.neutrinoproxy.server.service.FlowReportService;
import org.dromara.neutrinoproxy.server.util.ProxyUtil;
import org.noear.snack.ONode;
import org.noear.solon.Solon;
import org.noear.solon.annotation.Component;
@@ -30,7 +27,7 @@ import java.net.InetSocketAddress;
public class UdpProxyMessageTransferHandler implements ProxyMessageHandler {
@Override
public void handle(ChannelHandlerContext ctx, ProxyMessage proxyMessage) {
final ProxyMessage.UdpBaseInfo udpBaseInfo = JSONObject.parseObject(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
final ProxyMessage.UdpBaseInfo udpBaseInfo = ONode.deserialize(proxyMessage.getInfo(), ProxyMessage.UdpBaseInfo.class);
log.debug("[UDP transfer]info:{} data:{}", proxyMessage.getInfo(), new String(proxyMessage.getData()));
Channel visitorChannel = ctx.channel().attr(Constants.NEXT_CHANNEL).get();
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
@@ -19,7 +18,6 @@ import org.dromara.neutrinoproxy.server.dal.entity.ClientConnectRecordDO;
import org.dromara.neutrinoproxy.server.dal.entity.LicenseDO;
import org.dromara.neutrinoproxy.server.dal.entity.UserDO;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.List;
import java.util.Map;
@@ -34,8 +32,6 @@ import java.util.stream.Collectors;
@Slf4j
@Component
public class ClientConnectRecordService {
@Inject
private MapperFacade mapperFacade;
@Db
private ClientConnectRecordMapper clientConnectRecordMapper;
@Db
@@ -52,7 +48,7 @@ public class ClientConnectRecordService {
.eq(null != req.getLicenseId(), ClientConnectRecordDO::getLicenseId, req.getLicenseId())
.orderByDesc(ClientConnectRecordDO::getId)
);
List<ClientConnectRecordListRes> respList = mapperFacade.mapAsList(pageResult.getRecords(), ClientConnectRecordListRes.class);
List<ClientConnectRecordListRes> respList = pageResult.getRecords().stream().map(ClientConnectRecordDO::toRes).collect(Collectors.toList());
if (CollectionUtils.isEmpty(pageResult.getRecords())) {
return PageInfo.of(respList, pageResult.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
@@ -41,6 +40,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: aoshiguchen
@@ -49,8 +49,6 @@ import java.util.Map;
@Slf4j
@Component
public class JobInfoService implements IJobSource {
@Inject
private MapperFacade mapperFacade;
@Db
private JobInfoMapper jobInfoMapper;
@Inject
@@ -81,7 +79,7 @@ public class JobInfoService implements IJobSource {
Page<JobInfoDO> page = jobInfoMapper.selectPage(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()), new LambdaQueryWrapper<JobInfoDO>()
.orderByAsc(JobInfoDO::getId)
);
List<JobInfoListRes> respList = mapperFacade.mapAsList(page.getRecords(), JobInfoListRes.class);
List<JobInfoListRes> respList = page.getRecords().stream().map(JobInfoDO::toRes).collect(Collectors.toList());
return PageInfo.of(respList, page);
}
@@ -23,23 +23,22 @@ package org.dromara.neutrinoproxy.server.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.controller.req.log.JobLogListReq;
import org.dromara.neutrinoproxy.server.controller.res.log.JobLogListRes;
import org.dromara.neutrinoproxy.server.dal.JobLogMapper;
import org.dromara.neutrinoproxy.server.dal.entity.JobLogDO;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.solonplugins.job.IJobCallback;
import org.dromara.solonplugins.job.JobInfo;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@@ -49,8 +48,6 @@ import java.util.List;
@Slf4j
@Component
public class JobLogService implements IJobCallback {
@Inject
private MapperFacade mapperFacade;
@Db
private JobLogMapper jobLogMapper;
@@ -82,7 +79,7 @@ public class JobLogService implements IJobCallback {
.eq(null != req.getJobId(), JobLogDO::getJobId, req.getJobId())
.orderByDesc(JobLogDO::getId)
);
List<JobLogListRes> respList = mapperFacade.mapAsList(page.getRecords(), JobLogListRes.class);
List<JobLogListRes> respList = page.getRecords().stream().map(JobLogDO::toRes).collect(Collectors.toList());
return PageInfo.of(respList, page);
}
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import com.google.common.collect.Sets;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.db.DBInitialize;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
@@ -19,7 +18,11 @@ import org.dromara.neutrinoproxy.server.controller.req.proxy.LicenseCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.LicenseListReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.LicenseUpdateEnableStatusReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.LicenseUpdateReq;
import org.dromara.neutrinoproxy.server.controller.res.proxy.*;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseCreateRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseDetailRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.LicenseUpdateRes;
import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
@@ -32,7 +35,12 @@ import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.bean.LifecycleBean;
import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -44,8 +52,6 @@ import java.util.stream.Collectors;
*/
@Component
public class LicenseService implements LifecycleBean {
@Inject
private MapperFacade mapperFacade;
@Db
private LicenseMapper licenseMapper;
@Db
@@ -64,7 +70,7 @@ public class LicenseService implements LifecycleBean {
.eq(req.getEnable() != null, LicenseDO::getEnable, req.getEnable())
.orderByAsc(Arrays.asList(LicenseDO::getUserId, LicenseDO::getId))
);
List<LicenseListRes> respList = mapperFacade.mapAsList(page.getRecords(), LicenseListRes.class);
List<LicenseListRes> respList = page.getRecords().stream().map(LicenseDO::toRes).collect(Collectors.toList());
if (CollectionUtils.isEmpty(page.getRecords())) {
return PageInfo.of(respList, page);
}
@@ -92,7 +98,7 @@ public class LicenseService implements LifecycleBean {
}
private List<LicenseListRes> assembleConvertLicenses(List<LicenseDO> list) {
List<LicenseListRes> licenseList = mapperFacade.mapAsList(list, LicenseListRes.class);
List<LicenseListRes> licenseList = list.stream().map(LicenseDO::toRes).collect(Collectors.toList());
if (!CollectionUtil.isEmpty(licenseList)) {
Set<Integer> userIds = licenseList.stream().map(LicenseListRes::getUserId).collect(Collectors.toSet());
List<UserDO> userList = userMapper.findByIds(userIds);
@@ -2,6 +2,7 @@ package org.dromara.neutrinoproxy.server.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.base.rest.ServiceException;
@@ -20,10 +21,7 @@ import org.dromara.neutrinoproxy.server.dal.PortPoolMapper;
import org.dromara.neutrinoproxy.server.dal.entity.PortGroupDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortPoolDO;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.Date;
import java.util.List;
@@ -35,9 +33,6 @@ import java.util.Objects;
@Component
public class PortGroupService {
@Inject
private MapperFacade mapperFacade;
@Db
private PortGroupMapper portGroupMapper;
@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import com.google.common.collect.Sets;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.db.DBInitialize;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
@@ -22,7 +21,11 @@ import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingCreateRe
import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingListReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingUpdateEnableStatusReq;
import org.dromara.neutrinoproxy.server.controller.req.proxy.PortMappingUpdateReq;
import org.dromara.neutrinoproxy.server.controller.res.proxy.*;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingCreateRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingDetailRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingListRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.proxy.PortMappingUpdateRes;
import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
import org.dromara.neutrinoproxy.server.dal.PortPoolMapper;
@@ -38,7 +41,11 @@ import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
import org.noear.solon.core.bean.LifecycleBean;
import java.util.*;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -48,8 +55,6 @@ import java.util.stream.Collectors;
*/
@Component
public class PortMappingService implements LifecycleBean {
@Inject
private MapperFacade mapperFacade;
@Db
private PortMappingMapper portMappingMapper;
@Db
@@ -82,7 +87,7 @@ public class PortMappingService implements LifecycleBean {
Page<PortMappingDO> page = new Page<>(pageQuery.getCurrent(), pageQuery.getSize());
List<PortMappingDO> list = portMappingMapper.selectPortMappingByCondition(page, req);
List<PortMappingListRes> respList = mapperFacade.mapAsList(list, PortMappingListRes.class);
List<PortMappingListRes> respList = list.stream().map(PortMappingDO::toRes).collect(Collectors.toList());
if (CollectionUtils.isEmpty(list)) {
return PageInfo.of(respList, page.getTotal(), pageQuery.getCurrent(), pageQuery.getSize());
}
@@ -4,26 +4,34 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.base.rest.ServiceException;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.ExceptionConstant;
import org.dromara.neutrinoproxy.server.controller.req.system.*;
import org.dromara.neutrinoproxy.server.controller.res.system.*;
import org.dromara.neutrinoproxy.server.controller.req.system.AvailablePortListReq;
import org.dromara.neutrinoproxy.server.controller.req.system.PortPoolCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.system.PortPoolListReq;
import org.dromara.neutrinoproxy.server.controller.req.system.PortPoolUpdateEnableStatusReq;
import org.dromara.neutrinoproxy.server.controller.req.system.PortPoolUpdateGroupReq;
import org.dromara.neutrinoproxy.server.controller.req.system.PortPoolUpdateReq;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolCreateRes;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolListRes;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolUpdateGroupRes;
import org.dromara.neutrinoproxy.server.controller.res.system.PortPoolUpdateRes;
import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.PortGroupMapper;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
import org.dromara.neutrinoproxy.server.dal.PortPoolMapper;
import org.dromara.neutrinoproxy.server.dal.entity.LicenseDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortGroupDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortMappingDO;
import org.dromara.neutrinoproxy.server.dal.entity.PortPoolDO;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.dal.entity.PortGroupDO;
import org.dromara.neutrinoproxy.server.util.PortAvailableUtil;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -34,7 +42,9 @@ import java.util.Objects;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import static org.dromara.neutrinoproxy.server.constant.ExceptionConstant.*;
import static org.dromara.neutrinoproxy.server.constant.ExceptionConstant.PORT_CANNOT_REPEAT;
import static org.dromara.neutrinoproxy.server.constant.ExceptionConstant.PORT_GROUP_NAME_DOES_NOT_EXIST;
import static org.dromara.neutrinoproxy.server.constant.ExceptionConstant.PORT_RANGE_FAIL;
/**
*
@@ -44,8 +54,6 @@ import static org.dromara.neutrinoproxy.server.constant.ExceptionConstant.*;
@Slf4j
@Component
public class PortPoolService {
@Inject
private MapperFacade mapperFacade;
@Db
private PortPoolMapper portPoolMapper;
@Inject
@@ -68,7 +76,9 @@ public class PortPoolService {
List<PortPoolDO> list = portPoolMapper.selectList(new LambdaQueryWrapper<PortPoolDO>()
.eq(PortPoolDO::getEnable, EnableStatusEnum.ENABLE.getStatus())
);
return mapperFacade.mapAsList(this.filterUsedPorts(list), PortPoolListRes.class);
List<PortPoolDO> resultList = this.filterUsedPorts(list);
return resultList.stream().map(PortPoolDO::toRes).collect(Collectors.toList());
}
private List<PortPoolDO> filterUsedPorts(List<PortPoolDO> list) {
@@ -149,7 +159,7 @@ public class PortPoolService {
public List<PortPoolListRes> portListByGroupId(String groupId) {
List<PortPoolDO> portPoolDOList = portPoolMapper.getByGroupId(groupId);
List<PortPoolListRes> portPoolListReList = mapperFacade.mapAsList(portPoolDOList, PortPoolListRes.class);
List<PortPoolListRes> portPoolListReList = portPoolDOList.stream().map(PortPoolDO::toRes).collect(Collectors.toList());
return portPoolListReList;
}
@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.core.util.DateUtil;
import org.dromara.neutrinoproxy.server.base.db.DbConfig;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
@@ -14,7 +16,11 @@ import org.dromara.neutrinoproxy.server.controller.req.report.LicenseFlowMonthRe
import org.dromara.neutrinoproxy.server.controller.req.report.LicenseFlowReportReq;
import org.dromara.neutrinoproxy.server.controller.req.report.UserFlowMonthReportReq;
import org.dromara.neutrinoproxy.server.controller.req.report.UserFlowReportReq;
import org.dromara.neutrinoproxy.server.controller.res.report.*;
import org.dromara.neutrinoproxy.server.controller.res.report.HomeDataView;
import org.dromara.neutrinoproxy.server.controller.res.report.LicenseFlowMonthReportRes;
import org.dromara.neutrinoproxy.server.controller.res.report.LicenseFlowReportRes;
import org.dromara.neutrinoproxy.server.controller.res.report.UserFlowMonthReportRes;
import org.dromara.neutrinoproxy.server.controller.res.report.UserFlowReportRes;
import org.dromara.neutrinoproxy.server.dal.LicenseMapper;
import org.dromara.neutrinoproxy.server.dal.PortMappingMapper;
import org.dromara.neutrinoproxy.server.dal.ReportMapper;
@@ -23,13 +29,16 @@ import org.dromara.neutrinoproxy.server.dal.entity.PortMappingDO;
import org.dromara.neutrinoproxy.server.service.bo.FlowBO;
import org.dromara.neutrinoproxy.server.service.bo.SingleDayFlowBO;
import org.dromara.neutrinoproxy.server.util.FormatUtil;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.*;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -39,8 +48,6 @@ import java.util.stream.Collectors;
@Slf4j
@Component
public class ReportService {
@Inject
private MapperFacade mapperFacade;
@Db
private ReportMapper reportMapper;
@Db
@@ -76,17 +83,17 @@ public class ReportService {
// 今日流量
Date now = new Date();
FlowBO todayFlow = reportMapper.homeTodayFlow(DateUtil.getDayBegin(now), now);
homeDataView.setTodayFlow(mapperFacade.map(todayFlow, HomeDataView.TodayFlow.class));
homeDataView.setTodayFlow(todayFlow.todayFlow());
// 总流量
FlowBO totalFlow = reportMapper.homeTotalFlow(DateUtil.getMonthBegin(now), DateUtil.getDayBegin(now), now);
homeDataView.setTotalFlow(mapperFacade.map(totalFlow, HomeDataView.TotalFlow.class));
homeDataView.setTotalFlow(totalFlow.totalFlow());
// 最近n日流量
Integer days = Constants.HOME_FLOW_DAYS;
List<SingleDayFlowBO> last7dFlowList = reportMapper.homeLast7dFlowList(DateUtil.getDayBegin(DateUtil.addDate(now, Calendar.DATE, -(days - 1))), DateUtil.getDayBegin(now), now);
homeDataView.setLast7dFlow(new HomeDataView.Last7dFlow());
homeDataView.getLast7dFlow().setDataList(mapperFacade.mapAsList(last7dFlowList, HomeDataView.SingleDayFlow.class));
homeDataView.getLast7dFlow().setDataList(last7dFlowList.stream().map(SingleDayFlowBO::toSingleDayFlow).collect(Collectors.toList()));
// 数据处理
fillHomeDataView(homeDataView, now);
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
import org.dromara.neutrinoproxy.server.controller.req.log.UserLoginRecordListReq;
@@ -12,10 +13,7 @@ import org.dromara.neutrinoproxy.server.dal.UserLoginRecordMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
import org.dromara.neutrinoproxy.server.dal.entity.UserDO;
import org.dromara.neutrinoproxy.server.dal.entity.UserLoginRecordDO;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
import java.util.List;
import java.util.Map;
@@ -30,8 +28,6 @@ import java.util.stream.Collectors;
*/
@Component
public class UserLoginRecordService {
@Inject
private MapperFacade mapperFacade;
@Db
private UserLoginRecordMapper userLoginRecordMapper;
@Db
@@ -42,7 +38,7 @@ public class UserLoginRecordService {
.eq(null != req.getUserId(), UserLoginRecordDO::getUserId, req.getUserId())
.orderByDesc(UserLoginRecordDO::getCreateTime)
);
List<UserLoginRecordListRes> respList = mapperFacade.mapAsList(page.getRecords(), UserLoginRecordListRes.class);
List<UserLoginRecordListRes> respList = page.getRecords().stream().map(UserLoginRecordDO::toRes).collect(Collectors.toList());
if (CollectionUtils.isEmpty(page.getRecords())) {
return PageInfo.of(respList, page);
}
@@ -3,6 +3,7 @@ package org.dromara.neutrinoproxy.server.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.solon.plugins.pagination.Page;
import org.apache.ibatis.solon.annotation.Db;
import org.dromara.neutrinoproxy.core.util.DateUtil;
import org.dromara.neutrinoproxy.server.base.page.PageInfo;
import org.dromara.neutrinoproxy.server.base.page.PageQuery;
@@ -10,8 +11,20 @@ import org.dromara.neutrinoproxy.server.base.rest.ServiceException;
import org.dromara.neutrinoproxy.server.base.rest.SystemContextHolder;
import org.dromara.neutrinoproxy.server.constant.EnableStatusEnum;
import org.dromara.neutrinoproxy.server.constant.ExceptionConstant;
import org.dromara.neutrinoproxy.server.controller.req.system.*;
import org.dromara.neutrinoproxy.server.controller.res.system.*;
import org.dromara.neutrinoproxy.server.controller.req.system.LoginReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserCreateReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserInfoReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserListReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserUpdateEnableStatusReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserUpdatePasswordReq;
import org.dromara.neutrinoproxy.server.controller.req.system.UserUpdateReq;
import org.dromara.neutrinoproxy.server.controller.res.system.LoginRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserCreateRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserInfoRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserListRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserUpdateEnableStatusRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserUpdatePasswordRes;
import org.dromara.neutrinoproxy.server.controller.res.system.UserUpdateRes;
import org.dromara.neutrinoproxy.server.dal.UserLoginRecordMapper;
import org.dromara.neutrinoproxy.server.dal.UserMapper;
import org.dromara.neutrinoproxy.server.dal.UserTokenMapper;
@@ -20,8 +33,6 @@ import org.dromara.neutrinoproxy.server.dal.entity.UserLoginRecordDO;
import org.dromara.neutrinoproxy.server.dal.entity.UserTokenDO;
import org.dromara.neutrinoproxy.server.util.Md5Util;
import org.dromara.neutrinoproxy.server.util.ParamCheckUtil;
import ma.glasnost.orika.MapperFacade;
import org.apache.ibatis.solon.annotation.Db;
import org.noear.solon.annotation.Component;
import org.noear.solon.annotation.Inject;
@@ -29,6 +40,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
/**
*
@@ -38,8 +50,7 @@ import java.util.UUID;
@Component
public class UserService {
private static final String DEFAULT_PASSWORD = "123456";
@Inject
private MapperFacade mapperFacade;
@Db
private UserMapper userMapper;
@Db
@@ -122,7 +133,7 @@ public class UserService {
Page<UserDO> page = userMapper.selectPage(new Page<>(pageQuery.getCurrent(), pageQuery.getSize()), new LambdaQueryWrapper<UserDO>()
.orderByAsc(UserDO::getId)
);
List<UserListRes> respList = mapperFacade.mapAsList(page.getRecords(), UserListRes.class);
List<UserListRes> respList = page.getRecords().stream().map(UserDO::toRes).collect(Collectors.toList());
return PageInfo.of(respList, page);
}
@@ -131,7 +142,7 @@ public class UserService {
.eq(UserDO::getEnable, EnableStatusEnum.ENABLE.getStatus())
.orderByAsc(UserDO::getId)
);
return mapperFacade.mapAsList(userDOList, UserListRes.class);
return userDOList.stream().map(UserDO::toRes).collect(Collectors.toList());
}
public UserInfoRes info(UserInfoReq req) {
@@ -1,6 +1,7 @@
package org.dromara.neutrinoproxy.server.service.bo;
import lombok.Data;
import org.dromara.neutrinoproxy.server.controller.res.report.HomeDataView;
/**
* @author: aoshiguchen
@@ -16,4 +17,18 @@ public class FlowBO {
* 下行流量字节数
*/
private Long downFlowBytes;
public HomeDataView.TodayFlow todayFlow() {
HomeDataView.TodayFlow todayFlow = new HomeDataView.TodayFlow();
todayFlow.setUpFlowBytes(upFlowBytes);
todayFlow.setDownFlowBytes(downFlowBytes);
return todayFlow;
}
public HomeDataView.TotalFlow totalFlow() {
HomeDataView.TotalFlow totalFlow = new HomeDataView.TotalFlow();
totalFlow.setUpFlowBytes(upFlowBytes);
totalFlow.setDownFlowBytes(downFlowBytes);
return totalFlow;
}
}
@@ -1,6 +1,7 @@
package org.dromara.neutrinoproxy.server.service.bo;
import lombok.Data;
import org.dromara.neutrinoproxy.server.controller.res.report.HomeDataView;
import java.util.Date;
@@ -23,4 +24,12 @@ public class SingleDayFlowBO {
* 下行流量字节数
*/
private Long downFlowBytes;
public HomeDataView.SingleDayFlow toSingleDayFlow() {
HomeDataView.SingleDayFlow singleDayFlow = new HomeDataView.SingleDayFlow();
singleDayFlow.setDate(date);
singleDayFlow.setUpFlowBytes(upFlowBytes);
singleDayFlow.setDownFlowBytes(downFlowBytes);
return singleDayFlow;
}
}