Sfoglia il codice sorgente

api 开头需要appId 访问

wuweihao 2 anni fa
parent
commit
e6d54277cc
18 ha cambiato i file con 564 aggiunte e 184 eliminazioni
  1. 0 0
      720yun_fd_manage/gis_application/src/main/resources/application-locSit.properties
  2. 1 1
      720yun_fd_manage/gis_application/src/main/resources/application.properties
  3. 89 87
      720yun_fd_manage/gis_common/src/main/java/com/gis/common/config/WebMvcConfig.java
  4. 1 0
      720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ErrorEnum.java
  5. 15 0
      720yun_fd_manage/gis_common/src/main/java/com/gis/common/exception/BaseRuntimeException.java
  6. 155 0
      720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/EncryptUtils.java
  7. 0 56
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/IconEntity.java
  8. 31 0
      720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/SysAppEntity.java
  9. 0 17
      720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/IconMapper.java
  10. 18 0
      720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/SysAppMapper.java
  11. 94 0
      720yun_fd_manage/gis_service/src/main/java/com/gis/config/WebMvcConfig.java
  12. 91 0
      720yun_fd_manage/gis_service/src/main/java/com/gis/filter/ApiInterceptor.java
  13. 16 0
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/SysAppService.java
  14. 0 4
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/TestService.java
  15. 35 0
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/SysAppServiceImpl.java
  16. 10 11
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/TestServiceImpl.java
  17. 7 7
      720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/AgeController.java
  18. 1 1
      720yun_fd_manage/remark-m.md

720yun_fd_manage/gis_application/src/main/resources/application-loc.properties → 720yun_fd_manage/gis_application/src/main/resources/application-locSit.properties


+ 1 - 1
720yun_fd_manage/gis_application/src/main/resources/application.properties

@@ -1,6 +1,6 @@
 server.port=8001
 
-spring.profiles.active=loc
+spring.profiles.active=locSit
 
 
 # \uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\uFFFD

+ 89 - 87
720yun_fd_manage/gis_common/src/main/java/com/gis/common/config/WebMvcConfig.java

@@ -1,87 +1,89 @@
-package com.gis.common.config;
-
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.gis.common.constant.ConfigConstant;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.MediaType;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by owen on 2020/2/18 0018 12:01
- */
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
-
-    @Autowired
-    private CommonInterceptor commonInterceptor;
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    /**
-     * 配置全局跨域
-     * 开发、测试环境开启跨域, 正式环境不开启
-     */
-    @Override
-    public void addCorsMappings(CorsRegistry registry) {
-        String active = configConstant.active;
-        if ("dev".equals(active) || "sit".equals(active)){
-            registry.addMapping("/**")
-                    .allowedOrigins("*")
-                    .allowCredentials(true)
-                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
-                    .maxAge(3600);
-        }
-
-    }
-
-
-    /**
-     * 添加拦截器
-     */
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
-    }
-
-    /**
-     * fastJson相关设置
-     * Dto包含json,需要配置不然会异常
-     * @return
-     */
-    @Bean
-    public HttpMessageConverters customConverters() {
-
-        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
-        // 创建FastJson信息转换对象
-        FastJsonConfig fastJsonConfig = new FastJsonConfig();
-
-
-        // 设置全程返回时间
-        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
-        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
-        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-
-        fastJson.setFastJsonConfig(fastJsonConfig);
-
-        //3、中文乱码解决方案
-        List<MediaType> mediaTypeList = new ArrayList<>();
-        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
-        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
-
-        //4、将转换规则应用于转换对象
-        fastJson.setSupportedMediaTypes(mediaTypeList);
-
-        return new HttpMessageConverters(fastJson);
-    }
-}
+//package com.gis.common.config;
+//
+//import com.alibaba.fastjson.serializer.SerializerFeature;
+//import com.alibaba.fastjson.support.config.FastJsonConfig;
+//import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+//import com.gis.common.constant.ConfigConstant;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.http.MediaType;
+//import org.springframework.web.servlet.config.annotation.CorsRegistry;
+//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+///**
+// * Created by owen on 2020/2/18 0018 12:01
+// */
+//@Configuration
+//public class WebMvcConfig implements WebMvcConfigurer {
+//
+//    @Autowired
+//    private CommonInterceptor commonInterceptor;
+//
+//    @Autowired
+//    ConfigConstant configConstant;
+//
+//    /**
+//     * 配置全局跨域
+//     * 开发、测试环境开启跨域, 正式环境不开启
+//     */
+//    @Override
+//    public void addCorsMappings(CorsRegistry registry) {
+//        String active = configConstant.active;
+//        if ("dev".equals(active) || "sit".equals(active)){
+//            registry.addMapping("/**")
+//                    .allowedOrigins("*")
+//                    .allowCredentials(true)
+//                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
+//                    .maxAge(3600);
+//        }
+//
+//    }
+//
+//
+//    /**
+//     * 添加拦截器
+//     */
+//    @Override
+//    public void addInterceptors(InterceptorRegistry registry) {
+//        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
+//
+//    }
+//
+//
+//    /**
+//     * fastJson相关设置
+//     * Dto包含json,需要配置不然会异常
+//     * @return
+//     */
+//    @Bean
+//    public HttpMessageConverters customConverters() {
+//
+//        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
+//        // 创建FastJson信息转换对象
+//        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+//
+//
+//        // 设置全程返回时间
+//        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
+//        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
+//        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+//
+//        fastJson.setFastJsonConfig(fastJsonConfig);
+//
+//        //3、中文乱码解决方案
+//        List<MediaType> mediaTypeList = new ArrayList<>();
+//        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
+//        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
+//
+//        //4、将转换规则应用于转换对象
+//        fastJson.setSupportedMediaTypes(mediaTypeList);
+//
+//        return new HttpMessageConverters(fastJson);
+//    }
+//}

+ 1 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ErrorEnum.java

@@ -12,6 +12,7 @@ public enum ErrorEnum {
 
     // 200X -> 系统类
 //    FAILURE_SYS_2001(2001, "对象不存在"),
+    FAILURE_SYS_2020(2020, "appId为空"),
 
     // 201X -> 权限问题类
 //    FAILURE_SYS_2011(2011, "没有操作权限"),

+ 15 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/exception/BaseRuntimeException.java

@@ -1,6 +1,7 @@
 package com.gis.common.exception;
 
 import cn.hutool.core.util.StrUtil;
+import com.gis.common.constant.ErrorEnum;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
@@ -63,6 +64,20 @@ public class BaseRuntimeException extends RuntimeException{
 
     }
 
+    public static void isBlank(Object obj, ErrorEnum errorEnum){
+        Integer code = errorEnum.code();
+        String msg = errorEnum.message();
+        if (obj == null){
+            getExc(code, msg);
+            return;
+        }
+
+        if (obj instanceof String && StrUtil.isBlank(obj.toString())){
+            getExc(code, msg);
+        }
+
+    }
+
 
 
 

+ 155 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/util/EncryptUtils.java

@@ -0,0 +1,155 @@
+package com.gis.common.util;
+
+/**
+ * Created by owen on 2022/1/14.
+ * 字符串加密,生产appId
+ */
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.DigestUtils;
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESKeySpec;
+import javax.crypto.spec.IvParameterSpec;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 加密
+ * @author by owen
+ * @date 2022-5-11
+ */
+@Slf4j
+public class EncryptUtils {
+
+    private static String strParam = "Passw0rd";
+
+    private static Cipher cipher;
+
+    private static IvParameterSpec iv = new IvParameterSpec(strParam.getBytes(StandardCharsets.UTF_8));
+
+    private static DESKeySpec getDesKeySpec(String source) throws Exception {
+        if (source == null || source.length() == 0) {
+            return null;
+        }
+        cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+        String strKey = "Passw0rd";
+        return new DESKeySpec(strKey.getBytes(StandardCharsets.UTF_8));
+    }
+
+    /**
+     * 对称加密
+     */
+    public static String desEncrypt(String source) throws Exception {
+        DESKeySpec desKeySpec = getDesKeySpec(source);
+        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+        cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
+        return byte2hex(
+                cipher.doFinal(source.getBytes(StandardCharsets.UTF_8))).toUpperCase();
+    }
+
+    /**
+     * 对称解密
+     */
+    public static String desDecrypt(String source) throws Exception {
+        byte[] src = hex2byte(source.getBytes());
+        DESKeySpec desKeySpec = getDesKeySpec(source);
+        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+        cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
+        byte[] retByte = cipher.doFinal(src);
+        return new String(retByte);
+    }
+
+    private static String byte2hex(byte[] inStr) {
+        String stmp;
+        StringBuilder out = new StringBuilder(inStr.length * 2);
+        for (byte b : inStr) {
+            stmp = Integer.toHexString(b & 0xFF);
+            if (stmp.length() == 1) {
+                // 如果是0至F的单位字符串,则添加0
+                out.append("0").append(stmp);
+            } else {
+                out.append(stmp);
+            }
+        }
+        return out.toString();
+    }
+
+    private static byte[] hex2byte(byte[] b) {
+        int size = 2;
+        if ((b.length % size) != 0) {
+            throw new IllegalArgumentException("长度不是偶数");
+        }
+        byte[] b2 = new byte[b.length / 2];
+        for (int n = 0; n < b.length; n += size) {
+            String item = new String(b, n, 2);
+            b2[n / 2] = (byte) Integer.parseInt(item, 16);
+        }
+        return b2;
+    }
+
+    /**
+     * 解密appId
+     * @param appId
+     * @return
+     */
+    public static String getType(String appId){
+        try {
+            String projectIdStr = EncryptUtils.desDecrypt(appId);
+            log.info("appId : {},  info: {}", appId, projectIdStr);
+            String[] split = projectIdStr.split(":");
+            return split[0];
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+
+    }
+
+    /**
+     * 创建appId
+     * @param type type 应用前缀 类如: api
+     * @param identifier 允许为空
+     * @return
+     */
+    public static String createAppId(String type, String identifier){
+        String str = type + ":" + identifier;
+        try {
+            return desEncrypt(str);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
+
+    /**
+     * 密码加密
+     * @param password
+     * @return
+     */
+    public static String encryptPassword(String password) {
+        return DigestUtils.md5DigestAsHex(password.getBytes());
+    }
+
+
+    public static void main(String[] args) throws Exception {
+        // 4814145A145D580BD13FB29276F43DE2387C61954A22E2D6
+//        String str = "8.135.106.227:biguiyuan";
+
+        // CBFA2F1815E8828F9E28D73B5D6A57836BFECEDEBEDA387F
+//        String str = "221.4.210.172:biguiyuan";
+
+        System.out.println(createAppId("4dkk_v4", "api"));
+
+
+//        System.out.println(desEncrypt(str));
+        System.out.println(desDecrypt("CBFA2F1815E8828F9E28D73B5D6A57836BFECEDEBEDA387F"));
+    }
+}

+ 0 - 56
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/IconEntity.java

@@ -1,56 +0,0 @@
-package com.gis.domain.entity;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-import java.io.Serializable;
-
-/**
- * 热点图标
- */
-
-@Data
-@Table(name = "tb_icon")
-public class IconEntity extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 2744429162237851630L;
-//    @ApiModelProperty(value = "名称")
-//    private String name;
-
-//    @ApiModelProperty(value = "存放地址")
-//    private String filePath;
-
-    @ApiModelProperty(value = "oss存放地址")
-    private String ossPath;
-
-//    @ApiModelProperty(value = "状态 1:切图中, 2:失败, 3:完成")
-//    private Integer status;
-
-//    @ApiModelProperty(value = "类型, 全景图:pano, 图片:image, 音频:audio, 视频:video")
-//    private String type;
-
-//    @ApiModelProperty(value = "创建人")
-//    private String userId;
-
-//    @ApiModelProperty(value = "封面图")
-//    private String icon;
-
-//    @ApiModelProperty(value = "预览图(全景图使用)")
-//    private String previewIcon;
-
-    @ApiModelProperty(value = "文件名")
-    private String fileName;
-
-
-
-
-
-
-
-
-
-
-}

+ 31 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/SysAppEntity.java

@@ -0,0 +1,31 @@
+package com.gis.domain.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 授权应用appId
+ */
+@Data
+@Entity
+@Table(name = "sys_app")
+public class SysAppEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = -853504493430501111L;
+
+    @ApiModelProperty(value = "AppId")
+    private String appId;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "应用类型")
+    private String type;
+
+
+
+}

+ 0 - 17
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/IconMapper.java

@@ -1,17 +0,0 @@
-package com.gis.mapper;
-
-
-import com.gis.domain.entity.IconEntity;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Component;
-
-
-
-@Component
-@Mapper
-public interface IconMapper extends IBaseMapper<IconEntity, Long> {
-
-
-
-
-}

+ 18 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/SysAppMapper.java

@@ -0,0 +1,18 @@
+package com.gis.mapper;
+
+
+import com.gis.domain.entity.SysAppEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+
+@Component
+@Mapper
+public interface SysAppMapper extends IBaseMapper<SysAppEntity, Long> {
+
+    @Select("select type from sys_app where is_delete=0 and app_id=#{appId}")
+    List<String> findByType(String appId);
+}

+ 94 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/config/WebMvcConfig.java

@@ -0,0 +1,94 @@
+package com.gis.config;
+
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.support.config.FastJsonConfig;
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
+import com.gis.common.config.CommonInterceptor;
+import com.gis.common.constant.ConfigConstant;
+import com.gis.filter.ApiInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by owen on 2020/2/18 0018 12:01
+ */
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+    @Autowired
+    private CommonInterceptor commonInterceptor;
+
+    @Autowired
+    ApiInterceptor apiInterceptor;
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    /**
+     * 配置全局跨域
+     * 开发、测试环境开启跨域, 正式环境不开启
+     */
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        String active = configConstant.active;
+        if ("dev".equals(active) || "sit".equals(active)){
+            registry.addMapping("/**")
+                    .allowedOrigins("*")
+                    .allowCredentials(true)
+                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
+                    .maxAge(3600);
+        }
+
+    }
+
+
+    /**
+     * 添加拦截器
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(commonInterceptor).addPathPatterns("/**");
+        registry.addInterceptor(apiInterceptor).addPathPatterns("/api/**");
+    }
+
+
+    /**
+     * fastJson相关设置
+     * Dto包含json,需要配置不然会异常
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters customConverters() {
+
+        FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
+        // 创建FastJson信息转换对象
+        FastJsonConfig fastJsonConfig = new FastJsonConfig();
+
+
+        // 设置全程返回时间
+        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm");
+        // 设置返回值为null是时输出,不写的话,null 字段 不返回。也可以设置返回空串, 可以同时设置多个
+        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+
+        fastJson.setFastJsonConfig(fastJsonConfig);
+
+        //3、中文乱码解决方案
+        List<MediaType> mediaTypeList = new ArrayList<>();
+        mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
+        mediaTypeList.add(MediaType.valueOf("text/html;charset=UTF-8"));
+
+        //4、将转换规则应用于转换对象
+        fastJson.setSupportedMediaTypes(mediaTypeList);
+
+        return new HttpMessageConverters(fastJson);
+    }
+}

+ 91 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/filter/ApiInterceptor.java

@@ -0,0 +1,91 @@
+package com.gis.filter;
+
+import cn.hutool.core.util.StrUtil;
+import com.gis.common.constant.ErrorEnum;
+import com.gis.common.exception.BaseRuntimeException;
+import com.gis.common.util.EncryptUtils;
+import com.gis.common.util.RedisUtil;
+import com.gis.service.SysAppService;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Created by owen on 2022/5/15.
+ * 规则:
+ * 1. projectId -> 加密出appId
+ * 2. 应用携带appId到header key=appId
+ * 3. 校验 -> 解密出projectId -> 查询ip百名单
+ */
+@Slf4j
+@Component
+public class ApiInterceptor implements HandlerInterceptor {
+
+    @Autowired
+    SysAppService appService;
+
+    private long startTime;
+
+    // redis key
+    static final String APP_KEY = "appId_720:";
+
+    @Autowired
+    RedisUtil redisUtil;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        startTime = System.currentTimeMillis();
+
+        // 设置链路id, 在logback-spring.xml里用
+        MDC.put("TRACE_ID", startTime + "");
+
+        String requestURI = request.getRequestURI();
+        String remoteAddr = request.getRemoteAddr();
+        log.info("请求ip: {}, 请求路径: {}", remoteAddr, requestURI);
+
+        // 只拦截/api 前缀
+        if (!requestURI.startsWith("/api/")){
+            return true;
+        }
+
+        String appId = request.getHeader("appId");
+        BaseRuntimeException.isBlank(appId, ErrorEnum.FAILURE_SYS_2020);
+        log.info("appId: {}", appId);
+
+        // 内网访问,直接放行
+//        if (remoteAddr.startsWith("192.168") || remoteAddr.startsWith("127.0.0") || remoteAddr.startsWith("localhost")) {
+//            return true;
+//        }
+
+        String appKey = APP_KEY + appId;
+        // redis存在,直接放行
+        if (redisUtil.hasKey(appKey)) {
+            log.info("redis存在直接放行");
+            return true;
+        }
+
+
+        // 解密appId
+        String type = EncryptUtils.getType(appId);
+
+        // 这里使用一个appId对应多个ip的规则
+        List<String> ips= appService.findByType(appId);
+        if (!ips.contains(type)) {
+            String errorMsg = StrUtil.format("此类型: {} 没有登记, 拒绝访问", remoteAddr);
+            log.error(errorMsg);
+            BaseRuntimeException.getExc(null, errorMsg);
+            return false;
+        }
+        redisUtil.set(appKey, appId, 5, TimeUnit.MINUTES);
+
+        return true;
+    }
+
+}

+ 16 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/SysAppService.java

@@ -0,0 +1,16 @@
+package com.gis.service;
+
+
+import com.gis.domain.entity.SysAppEntity;
+
+import java.util.List;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface SysAppService extends IBaseService<SysAppEntity, Long> {
+
+
+    List<String> findByType(String appId);
+}

+ 0 - 4
720yun_fd_manage/gis_service/src/main/java/com/gis/service/TestService.java

@@ -2,10 +2,6 @@ package com.gis.service;
 
 
 import com.gis.common.util.Result;
-import com.gis.domain.entity.IconEntity;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
 
 
 /**

+ 35 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/SysAppServiceImpl.java

@@ -0,0 +1,35 @@
+package com.gis.service.impl;
+
+import com.gis.domain.entity.SysAppEntity;
+import com.gis.domain.entity.SysUserEntity;
+import com.gis.mapper.IBaseMapper;
+import com.gis.mapper.SysAppMapper;
+import com.gis.mapper.SysUserMapper;
+import com.gis.service.SysAppService;
+import com.gis.service.SysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:16
+ */
+@Service
+public class SysAppServiceImpl extends IBaseServiceImpl<SysAppEntity, Long> implements SysAppService {
+
+    @Autowired
+    private SysAppMapper entityMapper;
+
+    @Override
+    public IBaseMapper<SysAppEntity, Long> getBaseMapper() {
+        return this.entityMapper;
+    }
+
+
+    @Override
+    public List<String> findByType(String appId) {
+        return entityMapper.findByType(appId);
+    }
+}

+ 10 - 11
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/TestServiceImpl.java

@@ -9,7 +9,6 @@ import com.gis.common.constant.ConfigConstant;
 import com.gis.common.util.AliyunOssUtil;
 import com.gis.common.util.FileUtils;
 import com.gis.common.util.Result;
-import com.gis.domain.entity.IconEntity;
 import com.gis.domain.entity.WorkEntity;
 import com.gis.service.TestService;
 import com.gis.service.WorkService;
@@ -52,16 +51,16 @@ public class TestServiceImpl implements TestService {
 
 
 
-    public Result upload(MultipartFile file) {
-        Map<String, Object>  map = fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, configConstant.ossDomain, "icon/");
-        IconEntity entity = new IconEntity();
-        entity.setFileName((String) map.get("fileName"));
-        Object ossUrl = map.get("ossUrl");
-        entity.setOssPath(ossUrl.toString());
-
-
-        return Result.success(ossUrl);
-    }
+//    public Result upload(MultipartFile file) {
+//        Map<String, Object>  map = fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, configConstant.ossDomain, "icon/");
+//        IconEntity entity = new IconEntity();
+//        entity.setFileName((String) map.get("fileName"));
+//        Object ossUrl = map.get("ossUrl");
+//        entity.setOssPath(ossUrl.toString());
+//
+//
+//        return Result.success(ossUrl);
+//    }
 
     @Override
     public Result batchReplaceSomeData(String isBatch) {

+ 7 - 7
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/AgeController.java

@@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.*;
  * Created by owen on 2022/6/28 0028 16:56
  *
  */
-@Api(tags = "提供四维看看接口")
+@Api(tags = "提供四维看看接口 请求头需要appId")
 @RestController
-@RequestMapping("/manage/age")
+@RequestMapping("/api/age")
 public class AgeController {
 
     @Autowired
@@ -32,19 +32,19 @@ public class AgeController {
      * @param param
      * @return
      */
-    @ApiOperation(value = "场景-列表", notes = "超级管理员权限token")
+    @ApiOperation(value = "场景-列表")
     @PostMapping("/list")
     public Result<WorkEntity> list(@RequestBody PageDto param) {
-        Integer isAdmin = iBaseService.getIsAdmin();
-        BaseRuntimeException.isTrue(isAdmin != 1, 3100, "非法用户");
+//        Integer isAdmin = iBaseService.getIsAdmin();
+//        BaseRuntimeException.isTrue(isAdmin != 1, 3100, "非法用户");
         return workService.search(param, true);
     }
 
     @ApiOperation(value = "场景-删除")
     @PostMapping("/remove/{id}")
     public Result remove( @PathVariable String id) {
-        Integer isAdmin = iBaseService.getIsAdmin();
-        BaseRuntimeException.isTrue(isAdmin != 1, 3100, "非法用户");
+//        Integer isAdmin = iBaseService.getIsAdmin();
+//        BaseRuntimeException.isTrue(isAdmin != 1, 3100, "非法用户");
         return workService.remove(id);
     }
 

+ 1 - 1
720yun_fd_manage/remark-m.md

@@ -53,7 +53,7 @@
     web: https://test.4dkankan.com/panorama/material.html
     13112311178    11111111Aa
     15015980188 Hao123456
-    doc: http://120.25.146.52:8001/doc.html
+    doc: https://test.4dkankan.com/qjkankan/doc.html
     rabbitMQ: http://120.25.146.52:15672/ guest  guest
     
     #2022-3-19 使用自动部署