Quellcode durchsuchen

修改redis配置+接口调整

hxd vor 3 Monaten
Ursprung
Commit
f7572e4e53

+ 0 - 11
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/DeviceController.java

@@ -54,17 +54,6 @@ public class DeviceController {
         return ApiResult.success(deviceGateway.queryDeviceById(devId));
     }
 
-    @Operation(summary = "设备位置更新")
-    @PostMapping("/location")
-    public ApiResult<Boolean> location(@RequestBody @Valid DeviceLocationParams params) {
-        return ApiResult.success(deviceGateway.updateDeviceLocation(params));
-    }
-
-    @Operation(summary = "查询设备冲水次数")
-    @GetMapping("/wcTimes")
-    public ApiResult<WcTimesQueryRes> wcTimes(@RequestParam("deviceId") String deviceId) {
-        return ApiResult.success(deviceGateway.getWcTimes(Long.parseLong(deviceId), null));
-    }
 
     @GetMapping("/deviceRelations")
     @Operation(summary = "设备关系")

+ 4 - 9
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/RadarController.java

@@ -2,13 +2,15 @@ package com.hfln.portal.application.controller.wap;
 
 import cn.hfln.framework.catchlog.CatchAndLog;
 import cn.hfln.framework.dto.ApiResult;
-import com.hfln.portal.common.dto.data.room.RoomDto;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @CatchAndLog
@@ -68,11 +70,4 @@ public class RadarController {
         deviceGateway.getParam(clientId);
         return ApiResult.success();
     }
-
-    @GetMapping("/getRadarData")
-    @Operation(summary = "获取雷达数据")
-    public ApiResult<Void> getRadarData(@RequestParam String devId) {
-        deviceGateway.getInfo(devId);
-        return ApiResult.success();
-    }
 }

+ 11 - 4
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/ShareController.java

@@ -25,14 +25,14 @@ public class ShareController {
     @Autowired
     private DeviceGateway deviceGateway;
 
-    @PostMapping("/device")
-    @Operation(summary = "分享设备")
+    @PostMapping("/deviceShare")
+    @Operation(summary = "个人分享设备")
     public ApiResult<Boolean> share(@RequestBody @Valid ShareParam param) {
         return ApiResult.success(deviceGateway.devShare(param));
     }
 
-    @PostMapping("/confirm")
-    @Operation(summary = "确认分享")
+    @PostMapping("/shareConfirm")
+    @Operation(summary = "设备分享确认")
     public ApiResult<Void> confirm(@RequestBody @Valid ShareConfirmParam param) {
         deviceGateway.shareConfirm(param);
         return ApiResult.success();
@@ -43,4 +43,11 @@ public class ShareController {
     public ApiResult<List<ShareDto>> queryDevShare(@Valid @RequestParam Long userId) {
         return ApiResult.success(deviceGateway.queryDevShare(userId));
     }
+
+    @PostMapping("/shareByUrl")
+    @Operation(summary = "通过链接分享设备")
+    public ApiResult<Void> shareByUrl(@Valid @RequestBody ShareParam shareParam) {
+        deviceGateway.shareByUrl(shareParam);
+        return ApiResult.success();
+    }
 }

+ 167 - 167
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/config/SaTokenConfigure.java

@@ -1,173 +1,173 @@
-//package com.hfln.portal.infrastructure.config;
-//
-//import cn.dev33.satoken.filter.SaServletFilter;
-//import cn.dev33.satoken.interceptor.SaInterceptor;
-//import cn.dev33.satoken.router.SaRouter;
-//import cn.dev33.satoken.stp.StpUtil;
-//import cn.dev33.satoken.util.SaResult;
-//import lombok.extern.slf4j.Slf4j;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-//
-//
-///**
-// * [Sa-Token 权限认证] 配置类
-// * @author click33
-// *
-// */
-//@Slf4j
-//@Configuration
-//public class SaTokenConfigure implements WebMvcConfigurer {
-//
-//	@Autowired
-//	private SaTokenConfigProperties saTokenConfigProperties;
-//
+package com.hfln.portal.infrastructure.config;
+
+import cn.dev33.satoken.filter.SaServletFilter;
+import cn.dev33.satoken.interceptor.SaInterceptor;
+import cn.dev33.satoken.router.SaRouter;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.dev33.satoken.util.SaResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+
+/**
+ * [Sa-Token 权限认证] 配置类
+ * @author click33
+ *
+ */
+@Slf4j
+@Configuration
+public class SaTokenConfigure implements WebMvcConfigurer {
+
+	@Autowired
+	private SaTokenConfigProperties saTokenConfigProperties;
+
+	/**
+	 * 注册 Sa-Token 拦截器打开注解鉴权功能
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 注册 Sa-Token 拦截器打开注解鉴权功能
+		registry.addInterceptor(new SaInterceptor(handle -> {
+			// SaManager.getLog().debug("----- 请求path={}  提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
+
+			// 指定一条 match 规则
+//            SaRouter
+//                .match("/user/**")    // 拦截的 path 列表,可以写多个
+//                .notMatch("/user/doLogin", "/user/doLogin2")     // 排除掉的 path 列表,可以写多个
+//                .check(r -> StpUtil.checkLogin());        // 要执行的校验动作,可以写完整的 lambda 表达式
+//
+//            // 权限校验 -- 不同模块认证不同权限
+//            SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
+//            SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
+//            SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
+//            SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
+//            SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment"));
+//
+//			// 甚至你可以随意的写一个打印语句
+//			SaRouter.match("/router/print", r -> System.out.println("----啦啦啦----"));
+//
+//			// 写一个完整的 lambda
+//			SaRouter.match("/router/print2", r -> {
+//				System.out.println("----啦啦啦2----");
+//				// ... 其它代码
+//			});
+
+			SaRouter
+					.match("/**")
+					.notMatch(saTokenConfigProperties.getIgnoreUrls())
+					.check(r -> StpUtil.checkLogin());
+
+			SaRouter.match("/admin/**", r -> StpUtil.checkRole("admin"));
+
+
+			/*
+			 * 相关路由都定义在 com.pj.cases.use.RouterCheckController 中
+			 */
+
+		}))
+		.addPathPatterns("/**")
+		.excludePathPatterns("/error");
+
+
+	}
+
+	/**
+     * 注册 [Sa-Token 全局过滤器]
+     */
+    @Bean
+    public SaServletFilter getSaServletFilter() {
+        return new SaServletFilter()
+
+        		// 指定 [拦截路由] 与 [放行路由]
+        		.addInclude("/**")//
+				.setExcludeList(saTokenConfigProperties.getIgnoreUrls())
+//				.addExclude("/favicon.ico")
+
+
+        		// 认证函数: 每次请求执行
+//        		.setAuth(obj -> {
+//        			// System.out.println("---------- sa全局认证 " + SaHolder.getRequest().getRequestPath());
+//        			// SaManager.getLog().debug("----- 请求path={}  提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
+//
+//                    // 权限校验 -- 不同模块认证不同权限
+//        			//		这里你可以写和拦截器鉴权同样的代码,不同点在于:
+//        			// 		校验失败后不会进入全局异常组件,而是进入下面的 .setError 函数
+//                    SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
+//                    SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
+//                    SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
+//                    SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
+//                    SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment"));
+//        		})
+
+        		// 异常处理函数:每次认证函数发生异常时执行此函数
+        		.setError(e -> {
+//        			System.out.println("---------- sa全局异常 ");
+					log.error("saServletFilter认证异常:", e);
+        			return SaResult.error(e.getMessage());
+        		})
+
+        		// 前置函数:在每次认证函数之前执行(BeforeAuth 不受 includeList 与 excludeList 的限制,所有请求都会进入)
+//        		.setBeforeAuth(r -> {
+//        			// ---------- 设置一些安全响应头 ----------
+//        			SaHolder.getResponse()
+//        			// 服务器名称
+//        			.setServer("sa-server")
+//        			// 是否可以在iframe显示视图: DENY=不可以 | SAMEORIGIN=同域下可以 | ALLOW-FROM uri=指定域名下可以
+//        			.setHeader("X-Frame-Options", "SAMEORIGIN")
+//        			// 是否启用浏览器默认XSS防护: 0=禁用 | 1=启用 | 1; mode=block 启用, 并在检查到XSS攻击时,停止渲染页面
+//        			.setHeader("X-XSS-Protection", "1; mode=block")
+//        			// 禁用浏览器内容嗅探
+//        			.setHeader("X-Content-Type-Options", "nosniff")
+//        			;
+//        		})
+        		;
+    }
+
 //	/**
-//	 * 注册 Sa-Token 拦截器打开注解鉴权功能
+//	 * CORS 跨域处理
 //	 */
-//	@Override
-//	public void addInterceptors(InterceptorRegistry registry) {
-//		// 注册 Sa-Token 拦截器打开注解鉴权功能
-//		registry.addInterceptor(new SaInterceptor(handle -> {
-//			// SaManager.getLog().debug("----- 请求path={}  提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
-//
-//			// 指定一条 match 规则
-////            SaRouter
-////                .match("/user/**")    // 拦截的 path 列表,可以写多个
-////                .notMatch("/user/doLogin", "/user/doLogin2")     // 排除掉的 path 列表,可以写多个
-////                .check(r -> StpUtil.checkLogin());        // 要执行的校验动作,可以写完整的 lambda 表达式
-////
-////            // 权限校验 -- 不同模块认证不同权限
-////            SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
-////            SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
-////            SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
-////            SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
-////            SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment"));
-////
-////			// 甚至你可以随意的写一个打印语句
-////			SaRouter.match("/router/print", r -> System.out.println("----啦啦啦----"));
-////
-////			// 写一个完整的 lambda
-////			SaRouter.match("/router/print2", r -> {
-////				System.out.println("----啦啦啦2----");
-////				// ... 其它代码
-////			});
-//
-//			SaRouter
-//					.match("/**")
-//					.notMatch(saTokenConfigProperties.getIgnoreUrls())
-//					.check(r -> StpUtil.checkLogin());
-//
-//			SaRouter.match("/admin/**", r -> StpUtil.checkRole("admin"));
-//
-//
-//			/*
-//			 * 相关路由都定义在 com.pj.cases.use.RouterCheckController 中
-//			 */
-//
-//		}))
-//		.addPathPatterns("/**")
-//		.excludePathPatterns("/error");
-//
-//
+//	@Bean
+//	public SaCorsHandleFunction corsHandle() {
+//		return (req, res, sto) -> {
+//			res.
+//					// 允许指定域访问跨域资源
+//							setHeader("Access-Control-Allow-Origin", "*")
+//					// 允许所有请求方式
+//					.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
+//					// 有效时间
+//					.setHeader("Access-Control-Max-Age", "3600")
+//					// 允许的header参数
+//					.setHeader("Access-Control-Allow-Headers", "*");
+//
+//			// 如果是预检请求,则立即返回到前端
+//			SaRouter.match(SaHttpMethod.OPTIONS)
+//					.free(r -> System.out.println("--------OPTIONS预检请求,不做处理"))
+//					.back();
+//		};
 //	}
-//
+
 //	/**
-//     * 注册 [Sa-Token 全局过滤器]
+//     * 重写 Sa-Token 框架内部算法策略
 //     */
-//    @Bean
-//    public SaServletFilter getSaServletFilter() {
-//        return new SaServletFilter()
-//
-//        		// 指定 [拦截路由] 与 [放行路由]
-//        		.addInclude("/**")//
-//				.setExcludeList(saTokenConfigProperties.getIgnoreUrls())
-////				.addExclude("/favicon.ico")
-//
-//
-//        		// 认证函数: 每次请求执行
-////        		.setAuth(obj -> {
-////        			// System.out.println("---------- sa全局认证 " + SaHolder.getRequest().getRequestPath());
-////        			// SaManager.getLog().debug("----- 请求path={}  提交token={}", SaHolder.getRequest().getRequestPath(), StpUtil.getTokenValue());
-////
-////                    // 权限校验 -- 不同模块认证不同权限
-////        			//		这里你可以写和拦截器鉴权同样的代码,不同点在于:
-////        			// 		校验失败后不会进入全局异常组件,而是进入下面的 .setError 函数
-////                    SaRouter.match("/admin/**", r -> StpUtil.checkPermission("admin"));
-////                    SaRouter.match("/goods/**", r -> StpUtil.checkPermission("goods"));
-////                    SaRouter.match("/orders/**", r -> StpUtil.checkPermission("orders"));
-////                    SaRouter.match("/notice/**", r -> StpUtil.checkPermission("notice"));
-////                    SaRouter.match("/comment/**", r -> StpUtil.checkPermission("comment"));
-////        		})
-//
-//        		// 异常处理函数:每次认证函数发生异常时执行此函数
-//        		.setError(e -> {
-////        			System.out.println("---------- sa全局异常 ");
-//					log.error("saServletFilter认证异常:", e);
-//        			return SaResult.error(e.getMessage());
-//        		})
-//
-//        		// 前置函数:在每次认证函数之前执行(BeforeAuth 不受 includeList 与 excludeList 的限制,所有请求都会进入)
-////        		.setBeforeAuth(r -> {
-////        			// ---------- 设置一些安全响应头 ----------
-////        			SaHolder.getResponse()
-////        			// 服务器名称
-////        			.setServer("sa-server")
-////        			// 是否可以在iframe显示视图: DENY=不可以 | SAMEORIGIN=同域下可以 | ALLOW-FROM uri=指定域名下可以
-////        			.setHeader("X-Frame-Options", "SAMEORIGIN")
-////        			// 是否启用浏览器默认XSS防护: 0=禁用 | 1=启用 | 1; mode=block 启用, 并在检查到XSS攻击时,停止渲染页面
-////        			.setHeader("X-XSS-Protection", "1; mode=block")
-////        			// 禁用浏览器内容嗅探
-////        			.setHeader("X-Content-Type-Options", "nosniff")
-////        			;
-////        		})
-//        		;
+//    @PostConstruct
+//    public void rewriteSaStrategy() {
+//    	// 重写Sa-Token的注解处理器,增加注解合并功能
+//    	SaAnnotationStrategy.instance.getAnnotation = (element, annotationClass) -> {
+//    		return AnnotatedElementUtils.getMergedAnnotation(element, annotationClass);
+//    	};
+//
+//		// 重写 SaCheckELRootMap 扩展函数,增加注解鉴权 EL 表达式可使用的根对象
+//		SaAnnotationStrategy.instance.checkELRootMapExtendFunction = rootMap -> {
+//			System.out.println("--------- 执行 SaCheckELRootMap 增强,目前已包含的的跟对象包括:" + rootMap.keySet());
+//			// 新增 stpUser 根对象,使之可以在表达式中通过 stpUser.checkLogin() 方式进行多账号体系鉴权
+//			rootMap.put("stpUser", StpUserUtil.getStpLogic());
+//		};
 //    }
-//
-////	/**
-////	 * CORS 跨域处理
-////	 */
-////	@Bean
-////	public SaCorsHandleFunction corsHandle() {
-////		return (req, res, sto) -> {
-////			res.
-////					// 允许指定域访问跨域资源
-////							setHeader("Access-Control-Allow-Origin", "*")
-////					// 允许所有请求方式
-////					.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
-////					// 有效时间
-////					.setHeader("Access-Control-Max-Age", "3600")
-////					// 允许的header参数
-////					.setHeader("Access-Control-Allow-Headers", "*");
-////
-////			// 如果是预检请求,则立即返回到前端
-////			SaRouter.match(SaHttpMethod.OPTIONS)
-////					.free(r -> System.out.println("--------OPTIONS预检请求,不做处理"))
-////					.back();
-////		};
-////	}
-//
-////	/**
-////     * 重写 Sa-Token 框架内部算法策略
-////     */
-////    @PostConstruct
-////    public void rewriteSaStrategy() {
-////    	// 重写Sa-Token的注解处理器,增加注解合并功能
-////    	SaAnnotationStrategy.instance.getAnnotation = (element, annotationClass) -> {
-////    		return AnnotatedElementUtils.getMergedAnnotation(element, annotationClass);
-////    	};
-////
-////		// 重写 SaCheckELRootMap 扩展函数,增加注解鉴权 EL 表达式可使用的根对象
-////		SaAnnotationStrategy.instance.checkELRootMapExtendFunction = rootMap -> {
-////			System.out.println("--------- 执行 SaCheckELRootMap 增强,目前已包含的的跟对象包括:" + rootMap.keySet());
-////			// 新增 stpUser 根对象,使之可以在表达式中通过 stpUser.checkLogin() 方式进行多账号体系鉴权
-////			rootMap.put("stpUser", StpUserUtil.getStpLogic());
-////		};
-////    }
-//
-//
-//
-//}
+
+
+
+}

+ 11 - 5
portal-service-server/src/main/resources/bootstrap-local.yml

@@ -18,17 +18,23 @@ spring:
     # 数据库索引
     database: 5
     # 连接超时时间
-    timeout: 10s
+    timeout: 30s
+    #TCP连接建立超时
+    connect-timeout: 10s
     lettuce:
       pool:
         # 连接池中的最小空闲连接
-        min-idle: 0
+        min-idle: 2
         # 连接池中的最大空闲连接
-        max-idle: 8
+        max-idle: 10
         # 连接池的最大数据库连接数
-        max-active: 8
+        max-active: 16
         # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
+        max-wait: 5000ms
+        # 连接空闲超时
+      shutdown-timeout: 100ms
+      # Redis命令执行最大耗时(含网络传输)。若超过该时间将抛出超时异常。
+      command-timeout: 30ms
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     url: jdbc:mysql://8.130.28.21:3306/lnxx_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai