Merge remote-tracking branch 'origin/SecondStage' into SecondStage

This commit is contained in:
sunzheng
2024-10-15 18:11:15 +08:00
3 changed files with 64 additions and 13 deletions
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@@ -29,8 +30,9 @@ public class LawsSysApiInfoController {
@PostMapping("/getStandardDataPage")
public Result<IPage<StandardData>> getStandardDataPage(@RequestBody StandardData standardData,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
return lawsSysApiInfoService.getStandardDataPage(standardData,pageNo,pageSize);
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
return lawsSysApiInfoService.getStandardDataPage(standardData,pageNo,pageSize,req);
}
@@ -39,8 +41,8 @@ public class LawsSysApiInfoController {
* @return
*/
@PostMapping("/getStandardDataList")
public Result<List<StandardData>> getStandardDataList(@RequestBody StandardData standardData) {
return lawsSysApiInfoService.getStandardDataList(standardData);
public Result<List<StandardData>> getStandardDataList(@RequestBody StandardData standardData,HttpServletRequest req) {
return lawsSysApiInfoService.getStandardDataList(standardData,req);
}
@@ -6,13 +6,15 @@ import com.jero.common.api.vo.Result;
import com.jero.modules.docking.api.entity.LawsSysApiInfo;
import com.jero.modules.docking.api.vo.StandardData;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
public interface ILawsSysApiInfoService extends IService<LawsSysApiInfo> {
Result<IPage<StandardData>> getStandardDataPage(StandardData standardData,Integer pageNo,Integer pageSize);
Result<IPage<StandardData>> getStandardDataPage(StandardData standardData,Integer pageNo,Integer pageSize,
HttpServletRequest req);
Result<List<StandardData>> getStandardDataList(StandardData standardData);
Result<List<StandardData>> getStandardDataList(StandardData standardData,HttpServletRequest req);
}
@@ -1,5 +1,6 @@
package com.jero.modules.docking.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -42,9 +44,12 @@ public class LawsSysApiInfoServiceImpl extends ServiceImpl<LawsSysApiInfoMapper,
@Override
public Result<IPage<StandardData>> getStandardDataPage(StandardData standardData,Integer pageNo,Integer pageSize) {
// todo 未添加其他系统访问校验
public Result<IPage<StandardData>> getStandardDataPage(StandardData standardData,Integer pageNo,Integer pageSize,
HttpServletRequest req) {
String msg = checkSysInfo(standardData.getAppKey(),standardData.getSecret(),req);
if(!StringUtils.isEmpty(msg)){
return Result.error(msg);
}
QueryWrapper<StandardData> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(standardData.getStandardNumber()),"standard_number",standardData.getStandardNumber());
queryWrapper.like(!StringUtils.isEmpty(standardData.getStandardName()),"standard_name",standardData.getStandardName());
@@ -55,7 +60,11 @@ public class LawsSysApiInfoServiceImpl extends ServiceImpl<LawsSysApiInfoMapper,
}
@Override
public Result<List<StandardData>> getStandardDataList(StandardData standardData) {
public Result<List<StandardData>> getStandardDataList(StandardData standardData,HttpServletRequest req) {
String msg = checkSysInfo(standardData.getAppKey(),standardData.getSecret(),req);
if(!StringUtils.isEmpty(msg)){
return Result.error(msg);
}
QueryWrapper<StandardData> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(standardData.getStandardNumber()),"standard_number",standardData.getStandardNumber());
queryWrapper.like(!StringUtils.isEmpty(standardData.getStandardName()),"standard_name",standardData.getStandardName());
@@ -64,11 +73,49 @@ public class LawsSysApiInfoServiceImpl extends ServiceImpl<LawsSysApiInfoMapper,
return Result.OK(lawsSysApiInfoMapper.getStandardData(queryWrapper, foreignStandardReturnUrl, enterpriseStandardReturnUrl));
}
public String checkSysInfo(String appKey,String secret){
public String checkSysInfo(String appKey,String secret,HttpServletRequest req){
if(StringUtils.isEmpty(appKey) || StringUtils.isEmpty(secret)){
return "参数异常";
}
LambdaQueryWrapper<LawsSysApiInfo> query = new LambdaQueryWrapper<>();
query.eq(LawsSysApiInfo::getAppKey,appKey);
query.eq(LawsSysApiInfo::getSecret,secret);
LawsSysApiInfo lawsSysApiInfo = getOne(query,false);
if(Objects.isNull(lawsSysApiInfo)){
return "非法请求";
}
if(!StringUtils.isEmpty(lawsSysApiInfo.getIp())
&& !Arrays.asList(lawsSysApiInfo.getIp().split(",")).contains(getClientIp(req))){
return "非法请求";
}
return null;
}
private String getClientIp(HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("HTTP_CLIENT_IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
// 如果X-Forwarded-For有多层代理,取第一个IP作为客户端真实IP
if (ipAddress != null && ipAddress.contains(",")) {
ipAddress = ipAddress.split(",")[0];
}
return ipAddress;
}
}