feat: 包结构调整,整合ip2region解析ip的所在区域

This commit is contained in:
Ray.Hao
2024-06-27 14:47:50 +08:00
parent a0530dc380
commit d13adf233d
32 changed files with 90 additions and 42 deletions

View File

@@ -1,7 +1,10 @@
package com.youlai.system.common.result;
/**
* @author haoxr
* 响应码接口
*
* @author Ray
* @since 2022/2/18
**/
public interface IResultCode {

View File

@@ -9,8 +9,8 @@ import java.util.List;
/**
* 分页响应结构体
*
* @author haoxr
* @since 2022/2/18 23:29
* @author Ray
* @since 2022/2/18
*/
@Data
public class PageResult<T> implements Serializable {

View File

@@ -7,7 +7,7 @@ import java.io.Serializable;
/**
* 统一响应结构体
*
* @author haoxr
* @author Ray
* @since 2022/1/30
**/
@Data

View File

@@ -7,9 +7,11 @@ import java.io.Serializable;
/**
* 响应码枚举
* <p>
* 参考阿里巴巴开发手册响应码规范
*
* @author haoxr
* @since 2020-06-23
* @author Ray
* @since 2020/6/23
**/
@AllArgsConstructor
@NoArgsConstructor
@@ -103,7 +105,7 @@ public enum ResultCode implements IResultCode, Serializable {
}
public static ResultCode getValue(String code){
public static ResultCode getValue(String code) {
for (ResultCode value : values()) {
if (value.getCode().equals(code)) {
return value;

View File

@@ -3,12 +3,20 @@ package com.youlai.system.common.util;
import cn.hutool.core.util.StrUtil;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.lionsoul.ip2region.xdb.Searcher;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* IP工具类
* IP工具类
* <p>
* 获取客户端IP地址和IP地址对应的地理位置信息
* <p>
* 使用Nginx等反向代理软件 则不能通过request.getRemoteAddr()获取IP地址
* 如果使用了多级反向代理的话X-Forwarded-For的值并不止一个而是一串IP地址X-Forwarded-For中第一个非unknown的有效IP字符串则为真实IP地址
* </p>
*
* @author Ray
* @since 2.10.0
@@ -16,10 +24,13 @@ import java.net.UnknownHostException;
@Slf4j
public class IPUtils {
private static final String DB_PATH = "src/main/resources/data/ip2region.xdb";
/**
* 获取IP地址
* 使用Nginx等反向代理软件 则不能通过request.getRemoteAddr()获取IP地址
* 如果使用了多级反向代理的话X-Forwarded-For的值并不止一个而是一串IP地址X-Forwarded-For中第一个非unknown的有效IP字符串则为真实IP地址
*
* @param request HttpServletRequest对象
* @return 客户端IP地址
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = null;
@@ -51,7 +62,7 @@ public class IPUtils {
log.error("IPUtils ERROR, {}", e.getMessage());
}
//使用代理则获取第一个IP地址
// 使用代理则获取第一个IP地址
if (StrUtil.isNotBlank(ip) && ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
@@ -59,14 +70,15 @@ public class IPUtils {
return ip;
}
private static boolean checkIp(String ip) {
String unknown = "unknown";
return StrUtil.isEmpty(ip) || ip.isEmpty() || unknown.equalsIgnoreCase(ip);
return StrUtil.isEmpty(ip) || unknown.equalsIgnoreCase(ip);
}
/**
* 获取本机的IP地址
*
* @return 本机IP地址
*/
private static String getLocalAddr() {
try {
@@ -77,5 +89,28 @@ public class IPUtils {
return null;
}
/**
* 根据IP地址获取地理位置信息
*
* @param ip IP地址
* @return 地理位置信息
*/
public static String getRegion(String ip) {
Searcher searcher = null;
try {
searcher = Searcher.newWithFileOnly(DB_PATH);
return searcher.search(ip);
} catch (Exception e) {
log.error("IpRegionUtil ERROR, {}", e.getMessage());
return null;
} finally {
if (searcher != null) {
try {
searcher.close();
} catch (IOException e) {
log.error("IpRegionUtil close ERROR, {}", e.getMessage());
}
}
}
}
}

View File

@@ -1,6 +1,6 @@
package com.youlai.system.controller;
import com.youlai.system.common.enums.LogTypeEnum;
import com.youlai.system.enums.LogTypeEnum;
import com.youlai.system.common.result.Result;
import com.youlai.system.model.dto.CaptchaResult;
import com.youlai.system.model.dto.LoginResult;

View File

@@ -22,7 +22,7 @@ import org.mapstruct.Mappings;
public interface UserConverter {
@Mappings({
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.system.common.enums.GenderEnum.class))")
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.system.enums.GenderEnum.class))")
})
UserPageVO bo2PageVo(UserBO bo);

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
/**
* EasyCaptcha 验证码类型枚举

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.youlai.system.common.base.IBaseEnum;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.enums;
package com.youlai.system.enums;
import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.exception;
package com.youlai.system.exception;
import com.youlai.system.common.result.IResultCode;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.common.exception;
package com.youlai.system.exception;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonProcessingException;

View File

@@ -1,6 +1,6 @@
package com.youlai.system.model.bo;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.enums.MenuTypeEnum;
import lombok.Data;
import java.util.List;

View File

@@ -26,7 +26,7 @@ public class SysLog implements Serializable {
/**
* 日志类型
*
* @see com.youlai.system.common.enums.LogTypeEnum
* @see com.youlai.system.enums.LogTypeEnum
*/
private Integer type;

View File

@@ -2,7 +2,7 @@ package com.youlai.system.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.enums.MenuTypeEnum;
import lombok.Getter;
import lombok.Setter;

View File

@@ -1,6 +1,6 @@
package com.youlai.system.model.form;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.enums.MenuTypeEnum;
import com.youlai.system.common.model.KeyValue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.youlai.system.model.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.enums.MenuTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

View File

@@ -9,8 +9,8 @@ import com.alibaba.excel.context.AnalysisContext;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.GenderEnum;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.enums.GenderEnum;
import com.youlai.system.enums.StatusEnum;
import com.youlai.system.converter.UserConverter;
import com.youlai.system.model.dto.UserImportDTO;
import com.youlai.system.model.entity.SysDept;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
import com.youlai.system.plugin.mybatis.annotation.DataPermission;
import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.common.enums.DataScopeEnum;
import com.youlai.system.enums.DataScopeEnum;
import com.youlai.system.security.util.SecurityUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;

View File

@@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWTUtil;
import cn.hutool.jwt.RegisteredPayload;
import com.youlai.system.common.constant.SecurityConstants;
import com.youlai.system.common.exception.BusinessException;
import com.youlai.system.exception.BusinessException;
import com.youlai.system.common.result.ResultCode;
import com.youlai.system.plugin.norepeat.annotation.PreventRepeatSubmit;
import jakarta.servlet.http.HttpServletRequest;

View File

@@ -1,6 +1,6 @@
package com.youlai.system.plugin.syslog.annotation;
import com.youlai.system.common.enums.LogTypeEnum;
import com.youlai.system.enums.LogTypeEnum;
import java.lang.annotation.*;

View File

@@ -2,7 +2,6 @@ package com.youlai.system.plugin.syslog.aspect;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.extra.servlet.ServletUtil;
import com.youlai.system.common.util.IPUtils;
import com.youlai.system.model.entity.SysLog;
import com.youlai.system.plugin.syslog.annotation.LogAnnotation;

View File

@@ -9,7 +9,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;
import com.youlai.system.common.constant.SecurityConstants;
import com.youlai.system.common.enums.CaptchaTypeEnum;
import com.youlai.system.enums.CaptchaTypeEnum;
import com.youlai.system.model.dto.CaptchaResult;
import com.youlai.system.model.dto.LoginResult;
import com.youlai.system.config.property.CaptchaProperties;

View File

@@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.enums.StatusEnum;
import com.youlai.system.converter.DeptConverter;
import com.youlai.system.mapper.SysDeptMapper;
import com.youlai.system.model.entity.SysDept;

View File

@@ -11,8 +11,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.enums.MenuTypeEnum;
import com.youlai.system.enums.StatusEnum;
import com.youlai.system.common.model.KeyValue;
import com.youlai.system.common.model.Option;
import com.youlai.system.converter.MenuConverter;