From aea81128444acb8ca9a90bc7ef04758bf2cd284d Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 23 八月 2023 14:44:22 +0800 Subject: [PATCH] 重构minio和mqtt配置信息获取 重构minio工具类 区分生产环境和开发环境配置信息 --- ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java | 33 + ruoyi-admin/src/main/resources/application-prod-druid.yml | 58 +++ ard-work/src/main/resources/templates/test.html | 2 ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java | 75 +++ ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java | 53 +- ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java | 157 ++++--- ruoyi-admin/src/main/resources/application.yml | 131 ++---- /dev/null | 61 --- ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java | 7 ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java | 5 ruoyi-admin/src/main/resources/application-prod.yml | 101 +++++ ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java | 20 ruoyi-admin/src/main/resources/application-dev-druid.yml | 58 +++ ard-work/src/main/java/com/ruoyi/utils/spring/SpringUtils.java | 158 ++++++++ ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java | 4 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java | 15 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 41 +- ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java | 4 ruoyi-admin/src/main/resources/application-dev.yml | 101 +++++ 19 files changed, 775 insertions(+), 309 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java index c594b93..6c2d3a8 100644 --- a/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java +++ b/ard-work/src/main/java/com/ruoyi/app/position/controller/ArdAppPositionController.java @@ -46,7 +46,8 @@ private IArdAppPositionService ardAppPositionService; @Autowired private ISysUserService sysUserService; - + @Autowired + private MinioUtils minioUtil; /** * 鏌ヨapp浣嶇疆鍒楄〃 @@ -200,7 +201,7 @@ @ApiOperation("涓婁紶鏂囦欢") public AjaxResult uploadFile(MultipartFile file,String type) { - String url = MinioUtils.putObjectAndGetUrl("app",type, file); + String url = minioUtil.putObjectAndGetUrl("app",type, file); return AjaxResult.success(url); } } diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java index fd602a2..af4c67b 100644 --- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java @@ -120,20 +120,7 @@ ardCameras.setCreateTime(DateUtils.getNowDate()); ardCameras.setUserId(SecurityUtils.getUserId()); redisCache.setCacheObject(getCacheKey(ardCameras.getId()), ardCameras); - int i = ardCamerasMapper.insertArdCameras(ardCameras); - if (i > 0) { -// //鍒犻櫎褰撳墠鐩告満鐨勬墍鏈夐�氶亾 -// ardChannelMapper.deleteArdChannelByDeviceId(ardCameras.getId()); -// //鑾峰彇鐩告満閫氶亾 -// List<ArdChannel> ipChannelList = hikClientService.getCameraChannelList(ardCameras); -// if (ipChannelList.size() > 0) { -// for (ArdChannel channel : ipChannelList) { -// channel.setId(IdUtils.simpleUUID()); -// ardChannelMapper.insertArdChannel(channel); -// } -// } - } - return i; + return ardCamerasMapper.insertArdCameras(ardCameras); } /** diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java deleted file mode 100644 index 7433fed..0000000 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/config/MinioClientSingleton.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.ruoyi.device.hiksdk.config; - -import io.minio.MinioClient; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; - -import java.io.IOException; -import java.util.Properties; - -/** - * @Description: - * @ClassName: MinioClientSingleton - * @Author: 鍒樿嫃涔� - * @Date: 2023骞�05鏈�18鏃�9:32 - * @Version: 1.0 - **/ - -@Slf4j(topic = "minio") -@Component -public class MinioClientSingleton { - - public static String domainUrl; - private static String accessKey; - private static String secretKey; - - private volatile static MinioClient minioClient; - - static { - domainUrl = getYmlNew("minio.endpoint"); - accessKey = getYmlNew("minio.accessKey"); - secretKey = getYmlNew("minio.secretKey"); - log.debug("minio淇℃伅锛�" + domainUrl + "(" + accessKey + "/" + secretKey + ")"); - } - - /** - * 鑾峰彇minio瀹㈡埛绔疄渚� - * - * @return {@link MinioClient} - */ - public static MinioClient getMinioClient() { - if (minioClient == null) { - synchronized (MinioClientSingleton.class) { - if (minioClient == null) { - minioClient = MinioClient.builder() - .endpoint(domainUrl) - .credentials(accessKey, secretKey) - .build(); - } - } - } - return minioClient; - } - - /*yml閰嶇疆淇℃伅鑾峰彇*/ - public static String getYmlNew(String key) { - Resource resource = new ClassPathResource("application-ard.yml"); - Properties properties = null; - try { - YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); - yamlFactory.setResources(resource); - properties = yamlFactory.getObject(); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - return properties.get(key).toString(); - } - -} - diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java index 1471f3a..771c21f 100644 --- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/service/impl/HikClientServiceImpl.java @@ -1,16 +1,13 @@ package com.ruoyi.device.hiksdk.service.impl; -import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.annotation.SdkOperate; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.IArdCamerasService; import com.ruoyi.device.channel.domain.ArdChannel; -import com.ruoyi.device.channel.service.IArdChannelService; import com.ruoyi.device.hiksdk.common.GlobalVariable; import com.ruoyi.device.camera.domain.ArdCameras; -import com.ruoyi.device.hiksdk.config.MinioClientSingleton; import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil; import com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ruoyi.device.hiksdk.service.IHikClientService; @@ -22,7 +19,7 @@ import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Base64; @@ -33,7 +30,6 @@ import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; import static com.ruoyi.device.hiksdk.util.hikSdkUtil.HCNetSDK.*; @@ -48,8 +44,12 @@ @Service public class HikClientServiceImpl implements IHikClientService { + @Value("${minio.endpoint}") + private static String endpoint; @Resource - IArdCamerasService ardCamerasService; + private IArdCamerasService ardCamerasService; + @Resource + private MinioUtils minioUtil; private static HCNetSDK hCNetSDK; @@ -1155,9 +1155,9 @@ InputStream input = new ByteArrayInputStream(array); String url = ""; try { - boolean b = MinioUtils.uploadObject(BucketName, ObjectName, input, input.available(), ContentType); + boolean b = minioUtil.uploadObject(BucketName, ObjectName, input, input.available(), ContentType); if (b) { - url = MinioUtils.getBucketObjectUrl(BucketName, ObjectName); + url = minioUtil.getBucketObjectUrl(BucketName, ObjectName); log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } } catch (IOException ex) { @@ -1341,9 +1341,9 @@ FileInputStream stream = new FileInputStream(path); String time = new SimpleDateFormat("yyyyMMdd").format(new Date()); String recordName = cameraId + "/" + time + "/" + ObjectName + ".mp4"; - boolean b = MinioUtils.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); + boolean b = minioUtil.uploadObject(BucketName, recordName, stream, stream.available(), ContentType); if (b) { - url = MinioClientSingleton.domainUrl + "/" + BucketName + "/" + recordName; + url = endpoint + "/" + BucketName + "/" + recordName; log.debug("涓婁紶鏂囦欢鎴愬姛!" + url); } return url; diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java index e8b45ba..36eede2 100644 --- a/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java +++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/WebrtcService.java @@ -47,8 +47,8 @@ // 鍚姩鍚庡彴杩涚▼ CmdUtils.commandStart(processName, cmd, null); // 鍚姩cmd绐楀彛 -// String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; -// CmdUtils.commandStart(command); +// String[] command = {"cmd", "/c", "start", exePath, "-H127.0.0.1:8000", "-o"}; +// CmdUtils.commandStart(command); } } } diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java new file mode 100644 index 0000000..2a3989f --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioConfig.java @@ -0,0 +1,75 @@ +package com.ruoyi.storage.minio.utils; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +/** + * @Description: + * @ClassName: MinioClientSingleton + * @Author: 鍒樿嫃涔� + * @Date: 2023骞�05鏈�18鏃�9:32 + * @Version: 1.0 + **/ +@Slf4j(topic = "minio") +@Component +public class MinioConfig { + @Value("${minio.endpoint}") + private String endpoint; + @Value("${minio.accessKey}") + private String accessKey; + @Value("${minio.secretKey}") + private String secretKey; + +// private volatile static MinioClient minioClient; + + @Bean + public io.minio.MinioClient getMinioClient() { + return io.minio.MinioClient.builder() + .endpoint(endpoint) + .credentials(accessKey, secretKey) + .build(); + } + +// /** +// * 鑾峰彇minio瀹㈡埛绔疄渚� +// * +// * @return {@link MinioClient} +// */ +// public static MinioClient getMinioClient() { +// if (minioClient == null) { +// synchronized (MinioClientSingleton.class) { +// if (minioClient == null) { +// minioClient = MinioClient.builder() +// .endpoint(endpoint) +// .credentials(accessKey, secretKey) +// .build(); +// } +// } +// } +// return minioClient; +// } + // static { +// domainUrl = getYmlNew("minio.endpoint"); +// accessKey = getYmlNew("minio.accessKey"); +// secretKey = getYmlNew("minio.secretKey"); +// log.debug("minio淇℃伅锛�" + domainUrl + "(" + accessKey + "/" + secretKey + ")"); +// } + /*yml閰嶇疆淇℃伅鑾峰彇*/ +// public static String getYmlNew(String key) { +// Resource resource = new ClassPathResource("application-prod.yml"); +// Properties properties = null; +// try { +// YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); +// yamlFactory.setResources(resource); +// properties = yamlFactory.getObject(); +// } catch (Exception e) { +// e.printStackTrace(); +// return null; +// } +// return properties.get(key).toString(); +// } + +} + diff --git a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java index c063b73..ff3e870 100644 --- a/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java +++ b/ard-work/src/main/java/com/ruoyi/storage/minio/utils/MinioUtils.java @@ -2,13 +2,14 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.uuid.IdUtils; -import com.ruoyi.device.hiksdk.config.MinioClientSingleton; import io.minio.*; import io.minio.http.Method; import io.minio.messages.*; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.*; import java.util.*; import java.util.concurrent.TimeUnit; @@ -22,19 +23,23 @@ **/ @SuppressWarnings("ALL") @Slf4j(topic = "minio") +@Component public class MinioUtils { + + @Resource + MinioClient minioClient; /** * 鍒ゆ柇妗舵槸鍚﹀瓨鍦� */ - public static boolean exitsBucket(String bucketName) { + public boolean exitsBucket(String bucketName) { boolean found = false; try { if (StringUtils.isEmpty(bucketName)) { return false; } BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build(); - found = MinioClientSingleton.getMinioClient().bucketExists(bucketExistsArgs); + found = minioClient.bucketExists(bucketExistsArgs); } catch (Exception ex) { log.error("minio鍒ゆ柇妗跺瓨鍦ㄥ紓甯革細", ex.getMessage()); @@ -45,14 +50,14 @@ /** * 鍒涘缓妗�,骞惰缃《绛栫暐涓哄叕鍏� */ - public static boolean createBucket(String bucketName) { + public boolean createBucket(String bucketName) { try { if (StringUtils.isEmpty(bucketName)) { return false; } /*鍒涘缓妗�*/ MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build(); - MinioClientSingleton.getMinioClient().makeBucket(makeBucketArgs); + minioClient.makeBucket(makeBucketArgs); /*璁剧疆绛栫暐*/ String sb = "{\"Version\":\"2012-10-17\"," + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + @@ -72,7 +77,7 @@ queueConfiguration.setQueue("arn:minio:sqs::_:mqtt"); //璁剧疆浜嬩欢 - List<EventType> events=new ArrayList<>(); + List<EventType> events = new ArrayList<>(); events.add(EventType.OBJECT_REMOVED_ANY); events.add(EventType.OBJECT_CREATED_ANY); queueConfiguration.setEvents(events); @@ -82,8 +87,8 @@ SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder() .bucket(bucketName) .config(config).build(); - MinioClientSingleton.getMinioClient().setBucketPolicy(setBucketPolicyArgs); - MinioClientSingleton.getMinioClient().setBucketNotification(setBucketNotificationArgs); + minioClient.setBucketPolicy(setBucketPolicyArgs); + minioClient.setBucketNotification(setBucketNotificationArgs); return true; } catch (Exception ex) { @@ -97,11 +102,11 @@ * * @param bucket 妗跺悕绉� */ - public static boolean removeBucket(String bucket) { + public boolean removeBucket(String bucket) { try { boolean found = exitsBucket(bucket); if (found) { - Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder().bucket(bucket).build()); + Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucket).build()); for (Result<Item> result : myObjects) { Item item = result.get(); //鏈夊璞℃枃浠讹紝鍒欏垹闄ゅけ璐� @@ -110,7 +115,7 @@ } } // 鍒犻櫎`bucketName`瀛樺偍妗讹紝娉ㄦ剰锛屽彧鏈夊瓨鍌ㄦ《涓虹┖鏃舵墠鑳藉垹闄ゆ垚鍔熴�� - MinioClientSingleton.getMinioClient().removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); + minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); found = exitsBucket(bucket); return !found; } @@ -125,9 +130,9 @@ * * @return */ - public static List<Bucket> getListBuckets() { + public List<Bucket> getListBuckets() { try { - return MinioClientSingleton.getMinioClient().listBuckets(); + return minioClient.listBuckets(); } catch (Exception e) { e.printStackTrace(); } @@ -143,7 +148,7 @@ * @param expires 澶辨晥鏃堕棿锛堜互绉掍负鍗曚綅锛夛紝榛樿鏄�7澶╋紝涓嶅緱澶т簬涓冨ぉ * @return */ - public static String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { + public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { String url = ""; if (exitsBucket(bucketName)) { try { @@ -153,7 +158,7 @@ .object(objectName) .expiry(expires, timeUnit) .build(); - url = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); } catch (Exception ex) { log.error("minio鐢熸垚澶辨晥url寮傚父", ex.getMessage()); } @@ -171,7 +176,7 @@ * @鍒涘缓鏃堕棿 2023/5/18 12:16 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static String putObjectAndGetUrl(String bucketName, MultipartFile file) { + public String putObjectAndGetUrl(String bucketName, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } @@ -200,7 +205,7 @@ .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -209,7 +214,7 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { @@ -226,7 +231,7 @@ * @鍒涘缓鏃堕棿 2023/5/18 12:16 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { + public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } @@ -255,7 +260,7 @@ .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -264,7 +269,7 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { @@ -280,12 +285,12 @@ * @param objectName 瀵硅薄鍚嶇О * @return boolean */ - public static boolean removeObject(String bucket, String objectName) { + public boolean removeObject(String bucket, String objectName) { try { boolean exsit = exitsBucket(bucket); if (exsit) { RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build(); - MinioClientSingleton.getMinioClient().removeObject(removeObjectArgs); + minioClient.removeObject(removeObjectArgs); return true; } } catch (Exception e) { @@ -300,7 +305,7 @@ * @param objectNames 瀵硅薄鍚嶇О * @return boolean */ - public static boolean removeObjects(String bucket, List<String> objectNames) { + public boolean removeObjects(String bucket, List<String> objectNames) { if (exitsBucket(bucket)) { try { List<DeleteObject> objects = new LinkedList<>(); @@ -308,7 +313,7 @@ objects.add(new DeleteObject(str)); } RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build(); - Iterable<Result<DeleteError>> results = MinioClientSingleton.getMinioClient().removeObjects(removeObjectsArgs); + Iterable<Result<DeleteError>> results = minioClient.removeObjects(removeObjectsArgs); /*鍒犻櫎瀹岄亶鍘嗙粨鏋滐紝鍚﹀垯鍒犱笉鎺�*/ for (Result<DeleteError> result : results) { DeleteError error = result.get(); @@ -329,13 +334,37 @@ * @param bucket 妗跺悕绉� * @return {@link List}<{@link String}> */ - public static List<String> getBucketObjectName(String bucket) { + public List<String> getBucketObjectName(String bucket) { boolean exsit = exitsBucket(bucket); if (exsit) { List<String> listObjetcName = new ArrayList<>(); try { ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().bucket(bucket).build(); - Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs); + Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs); + for (Result<Item> result : myObjects) { + Item item = result.get(); + listObjetcName.add(item.objectName()); + } + return listObjetcName; + } catch (Exception ex) { + log.error("minio鑾峰彇妗朵笅瀵硅薄寮傚父锛�" + ex.getMessage()); + } + } + return null; + } + + /** + * 鑾峰彇鍗曚釜妗朵腑鐨勬墍鏈夋枃浠跺璞″悕绉� + * @param [bucket,prefix] + * @return {@link List}<{@link String}> + */ + public List<String> getBucketObjectName(String bucket, String prefix) { + boolean exsit = exitsBucket(bucket); + if (exsit) { + List<String> listObjetcName = new ArrayList<>(); + try { + ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix(prefix).bucket(bucket).build(); + Iterable<Result<Item>> myObjects = minioClient.listObjects(listObjectsArgs); for (Result<Item> result : myObjects) { Item item = result.get(); listObjetcName.add(item.objectName()); @@ -355,7 +384,7 @@ * @param objectName 瀵硅薄鍚� (鏂囦欢澶瑰悕 + 鏂囦欢鍚�) * @return */ - public static String getBucketObjectUrl(String bucketName, String objectName) { + public String getBucketObjectUrl(String bucketName, String objectName) { try { if (!exitsBucket(bucketName)) { return ""; @@ -366,7 +395,9 @@ .object(objectName) .method(Method.GET) .build(); - return MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + return ObjectUrl; } catch (Exception ex) { log.error("minio鑾峰彇瀵硅薄URL寮傚父" + ex.getMessage()); } @@ -382,7 +413,7 @@ * @param size 饧も缉 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { + public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -393,7 +424,7 @@ .stream(stream, size, -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃stream)寮傚父" + ex.getMessage()); @@ -409,7 +440,7 @@ * @param file 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, File file, String contextType) { + public boolean uploadObject(String bucketName, String objectName, File file, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -421,7 +452,7 @@ .stream(fileInputStream, file.length(), -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -437,7 +468,7 @@ * @param MultipartFile 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { + public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -449,7 +480,7 @@ .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -465,7 +496,7 @@ * @param MultipartFile 饨備欢 * @param contextType 绫诲瀷 Image/jpeg 娴忚鍣ㄥ彲浠ョ洿鎺ユ墦寮�锛屽惁鍒欎笅杞� */ - public static boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { + public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -482,7 +513,7 @@ .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); + minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minio涓婁紶鏂囦欢(閫氳繃File)寮傚父" + ex.getMessage()); @@ -498,7 +529,7 @@ * @param localFilePathName * @return */ - public static boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { + public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); @@ -514,7 +545,7 @@ .filename(localFilePathName) .contentType(contextType) .build(); - ObjectWriteResponse objectWriteResponse = MinioClientSingleton.getMinioClient().uploadObject(uploadObjectArgs); + ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(uploadObjectArgs); return true; } catch (Exception e) { log.error("minio upload object file error " + e.getMessage()); @@ -530,42 +561,28 @@ * @鍒涘缓鏃堕棿 2023/2/6 10:32 * @淇敼浜哄拰鍏跺畠淇℃伅 */ - public static Iterable<Result<Item>> getObjectsByBucket(String bucketName) { - Iterable<Result<Item>> listObjects = MinioClientSingleton.getMinioClient().listObjects(ListObjectsArgs.builder() + public Iterable<Result<Item>> getObjectsByBucket(String bucketName) { + Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() .bucket(bucketName) .recursive(true) .build()); return listObjects; } - public static void main(String[] args) { - // /*鍒犻櫎妗�*/ - // boolean b = removeBucket("lsy"); - // log.info(String.valueOf(b)); - // /*鍒涘缓妗�*/ - // boolean lsy = createBucket("lsy"); - // log.info(String.valueOf(lsy)); - // /*鍒ゆ柇妗舵槸鍚﹀瓨鍦�*/ - // boolean pic = exitsBucket("lsy"); - // log.info(String.valueOf(pic)); - /*鏌ヨ鎵�鏈夋《*/ - // List<Bucket> listBuckets = getListBuckets(); - // for (Bucket bucket : listBuckets) { - // log.info(bucket.name()); - // } - String bucket = "lsy"; - String filename = UUID.randomUUID().toString().replace("-", "") + "pic.jpeg"; - String fileFullPath = "C:\\Users\\Administrator\\Desktop\\寰俊鎴浘_20230518102605.png"; - // uploadObject(bucket, filename, fileFullPath, "Image/jpeg"); - // String url = getObjectWithExpired(bucket, filename, 10, SECONDS); - // System.out.println(url); - boolean b = removeBucket(bucket); - System.out.println(b); - // boolean b = uploadObjectBylocalPath(bucket, filename, fileFullPath); - // System.out.println(b); - //String url = getObjectWithExpired(bucket, filename, 10000); - // - //String url = getBucketObject(bucket, filename); - // System.out.println(url); package com.example.minio; + /** + * @鎻忚堪 鑾峰彇妗朵腑鎵�鏈夊璞� + * @鍙傛暟 [bucketName,prefix] + * @杩斿洖鍊� java.lang.Iterable<io.minio.Result < io.minio.messages.Item>> + * @鍒涘缓浜� 鍒樿嫃涔� + * @鍒涘缓鏃堕棿 2023/2/6 10:32 + * @淇敼浜哄拰鍏跺畠淇℃伅 + */ + public Iterable<Result<Item>> getObjectsByBucket(String bucketName, String prefix) { + Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() + .bucket(bucketName) + .prefix(prefix) + .recursive(true) + .build()); + return listObjects; } } \ No newline at end of file diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java index 51d7958..83789ea 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.sy.service.impl; -import java.awt.geom.Point2D; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; @@ -24,7 +23,7 @@ import com.ruoyi.sy.mapper.ArdSyCarDayMapper; import com.ruoyi.utils.tools.GisTool; import com.ruoyi.utils.websocket.util.WebSocketUtils; -import com.ruoyi.device.hiksdk.config.MinioClientSingleton; +import com.ruoyi.storage.minio.utils.MinioConfig; import com.ruoyi.storage.minio.utils.MinioUtils; import com.ruoyi.sy.domain.ArdSyUser; import com.ruoyi.sy.gps31.PositionContainer; @@ -83,7 +82,8 @@ RedisCache redisCache; @Resource private ArdSyCarDayMapper ardSyCarDayMapper; - + @Resource + private MinioUtils minioUtil; private Map<Integer, Map<String, String>> logInMap = new HashMap(); private Map<String, Timer> userCarTimerMap = new HashMap(); @@ -147,7 +147,7 @@ objectNames.add(ardSyCar.getCarPicture().split("/sycar/")[1]); } } - MinioUtils.removeObjects("sycar", objectNames); + minioUtil.removeObjects("sycar", objectNames); return ardSyCarMapper.deleteArdSyCarByIds(ids); } @@ -264,12 +264,12 @@ @Override public List<Map<String, String>> getAllCarModel() { - boolean exsit = MinioUtils.exitsBucket("sycar"); + boolean exsit = minioUtil.exitsBucket("sycar"); if (exsit) { List<Map<String, String>> listObjetcName = new ArrayList<>(); try { - ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build(); - Iterable<Result<Item>> myObjects = MinioClientSingleton.getMinioClient().listObjects(listObjectsArgs); + // ListObjectsArgs listObjectsArgs = ListObjectsArgs.builder().prefix("carmodel/").bucket("sycar").build(); + Iterable<Result<Item>> myObjects = minioUtil.getObjectsByBucket("sycar","carmodel"); for (Result<Item> result : myObjects) { Item item = result.get(); Map<String, String> map = new HashMap(); @@ -332,16 +332,16 @@ if (ardSyCarr.getCarPicture() != null || !ardSyCarr.getCarPicture().equals("")) { String objectName = ardSyCarr.getCarPicture().split("/sycar/")[1]; objectNames.add(objectName); - MinioUtils.removeObjects("sycar", objectNames); + minioUtil.removeObjects("sycar", objectNames); } } //鍒ゆ柇鏂囦欢鏄惁涓虹┖ if (null == carPicture || 0 == carPicture.getSize()) { return ""; } - boolean exsit = MinioUtils.exitsBucket("sycar"); + boolean exsit = minioUtil.exitsBucket("sycar"); if (!exsit) { - boolean bucket = MinioUtils.createBucket("sycar"); + boolean bucket = minioUtil.createBucket("sycar"); } //鏂囦欢鍚� String originalFilename = carPicture.getOriginalFilename(); @@ -350,14 +350,15 @@ try { InputStream inputStream = carPicture.getInputStream(); /*涓婁紶瀵硅薄*/ - PutObjectArgs putObjectArgs = PutObjectArgs - .builder() - .bucket("sycar") - .object(fileName) - .stream(inputStream, carPicture.getSize(), -1) - .contentType(carPicture.getContentType()) - .build(); - MinioClientSingleton.getMinioClient().putObject(putObjectArgs); +// PutObjectArgs putObjectArgs = PutObjectArgs +// .builder() +// .bucket("sycar") +// .object(fileName) +// .stream(inputStream, carPicture.getSize(), -1) +// .contentType(carPicture.getContentType()) +// .build(); +// MinioConfig.getMinioClient().putObject(putObjectArgs); + minioUtil.uploadObject("sycar",fileName,inputStream,carPicture.getSize(),carPicture.getContentType()); inputStream.close(); /*鑾峰彇url*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs @@ -366,8 +367,8 @@ .object(fileName) .method(Method.GET) .build(); - String presignedObjectUrl = MinioClientSingleton.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); - String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); + //String presignedObjectUrl = MinioConfig.getMinioClient().getPresignedObjectUrl(getPresignedObjectUrlArgs); + String ObjectUrl = minioUtil.getBucketObjectUrl("sycar", fileName); if (id != null && !id.equals("")) {//id涓洪潪蹇呰 ArdSyCar ardSyCar = new ArdSyCar(); ardSyCar.setId(id); diff --git a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java index 7a69f81..7c1e365 100644 --- a/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java +++ b/ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java @@ -8,32 +8,23 @@ * @Version: 1.0 **/ -import com.ruoyi.app.position.domain.ArdAppPosition; -import com.ruoyi.utils.websocket.util.WebSocketUtils; import lombok.extern.slf4j.Slf4j; - -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; import java.sql.*; -import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; @Slf4j public class ReadAccessDatabase { public static void main(String[] args) { -// // 澶氫釜鏁版嵁搴撴枃浠惰矾寰� -// String[] dbPaths = { -// "D:\\mdb\\閬撹矾涓績绾�.mdb", -// "D:\\mdb\\闃查鏋�-鐏屾湪.mdb", -// // 娣诲姞鏇村鐨勬暟鎹簱鏂囦欢璺緞 -// }; -// -// // 閬嶅巻姣忎釜鏁版嵁搴撴枃浠� -// for (String dbPath : dbPaths) { -// readDataFromAccessDatabase(dbPath); -// } + // 澶氫釜鏁版嵁搴撴枃浠惰矾寰� + String[] dbPaths = { + "D:\\Workspaces\\ard\\瀹夌憺杈惧伐浣滆祫鏂橽\mdb\\閬撹矾涓績绾�.mdb" +// "D:\\Workspaces\\ard\\瀹夌憺杈惧伐浣滆祫鏂橽\mdb\\闃查鏋�-鐏屾湪.mdb", + // 娣诲姞鏇村鐨勬暟鎹簱鏂囦欢璺緞 + }; + + // 閬嶅巻姣忎釜鏁版嵁搴撴枃浠� + for (String dbPath : dbPaths) { + readDataFromAccessDatabase(dbPath); + } } public static void readDataFromAccessDatabase(String dbPath) { @@ -54,16 +45,16 @@ if (!tableName.equals("閬撹矾涓績绾�")) { continue; } - System.out.println("琛ㄥ悕: " + tableName); + log.info("琛ㄥ悕: " + tableName); // 鑾峰彇琛ㄧ殑瀛楁鍏冩暟鎹� - // ResultSet column = metaData.getColumns(null, null, tableName, null); + ResultSet column = metaData.getColumns(null, null, tableName, null); // 閬嶅巻瀛楁 -// while (column.next()) { -// String columnName = column.getString("COLUMN_NAME"); -// System.out.println("瀛楁鍚�: " + columnName); -// } -// column.close(); + while (column.next()) { + String columnName = column.getString("COLUMN_NAME"); + log.info("瀛楁鍚�: " + columnName); + } + column.close(); // 鎵ц鏌ヨ鎿嶄綔 String sql = "SELECT * FROM " + tableName; // 鏇挎崲涓轰綘瑕佹煡璇㈢殑琛ㄥ悕 Statement statement = connection.createStatement(); @@ -72,12 +63,12 @@ while (resultSet.next()) { // 璇诲彇姣忎竴琛屾暟鎹� String id = resultSet.getString(1); // 鏍规嵁琛ㄤ腑鐨勫垪鍚嶈幏鍙栨暟鎹� - String name = resultSet.getString("缂栧彿"); - + String no = resultSet.getString("缂栧彿"); + String name = resultSet.getString("閬撹矾鍚嶇О"); // 鍙互鏍规嵁鍏蜂綋鐨勮〃缁撴瀯缁х画鑾峰彇鍏朵粬瀛楁鐨勬暟鎹� // 鍦ㄨ繖閲屽鐞嗚幏鍙栧埌鐨勬暟鎹紝渚嬪杈撳嚭鍒版帶鍒跺彴鎴栦繚瀛樺埌闆嗗悎涓� - System.out.println("ID: " + id + ", Name: " + name); + log.info("ID: " + id + ", No: " + no+ ", Name: " + name); } // 鍏抽棴杩炴帴 resultSet.close(); @@ -89,5 +80,7 @@ e.printStackTrace(); } } + + } diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java index 37a4a18..00f5496 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java +++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumer.java @@ -3,6 +3,7 @@ import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @@ -18,12 +19,30 @@ @Slf4j(topic = "mqtt") public class MqttConsumer implements ApplicationRunner { + @Value("${mqtt.enabled}") + private Boolean MQTT_ENABLED; + @Value("${mqtt.topic}") + private String MQTT_TOPIC; + @Value("${mqtt.host}") + private String MQTT_HOST; + @Value("${mqtt.clientId}") + private String MQTT_CLIENT_ID; + @Value("${mqtt.username}") + private String MQTT_USER_NAME; + @Value("${mqtt.password}") + private String MQTT_PASSWORD; + @Value("${mqtt.timeout}") + private int MQTT_TIMEOUT; + @Value("${mqtt.keepalive}") + private int MQTT_KEEP_ALIVE; + private static MqttClient client; + @Override public void run(ApplicationArguments args) { log.debug("鍒濆鍖栧苟鍚姩mqtt......"); - if(PropertiesUtil.MQTT_ENABLED) + if(MQTT_ENABLED) { this.connect(); } @@ -38,7 +57,7 @@ getClient(); // 2 璁剧疆閰嶇疆 MqttConnectOptions options = getOptions(); - String[] topic = PropertiesUtil.MQTT_TOPIC.split(","); + String[] topic = MQTT_TOPIC.split(","); // 3 娑堟伅鍙戝竷璐ㄩ噺 int[] qos = getQos(topic.length); // 4 鏈�鍚庤缃� @@ -54,7 +73,7 @@ public void getClient() { try { if (null == client) { - client = new MqttClient(PropertiesUtil.MQTT_HOST, PropertiesUtil.MQTT_CLIENT_ID, new MemoryPersistence()); + client = new MqttClient(MQTT_HOST, MQTT_CLIENT_ID, new MemoryPersistence()); } log.debug("--鍒涘缓mqtt瀹㈡埛绔�"); } catch (Exception e) { @@ -68,12 +87,12 @@ public MqttConnectOptions getOptions() { MqttConnectOptions options = new MqttConnectOptions(); //璁剧疆鐢ㄦ埛鍚嶅瘑鐮� - options.setUserName(PropertiesUtil.MQTT_USER_NAME); - options.setPassword(PropertiesUtil.MQTT_PASSWORD.toCharArray()); + options.setUserName(MQTT_USER_NAME); + options.setPassword(MQTT_PASSWORD.toCharArray()); // 璁剧疆瓒呮椂鏃堕棿 - options.setConnectionTimeout(PropertiesUtil.MQTT_TIMEOUT); + options.setConnectionTimeout(MQTT_TIMEOUT); // 璁剧疆浼氳瘽蹇冭烦鏃堕棿 - options.setKeepAliveInterval(PropertiesUtil.MQTT_KEEP_ALIVE); + options.setKeepAliveInterval(MQTT_KEEP_ALIVE); // 鏄惁娓呴櫎session options.setCleanSession(true); log.debug("--鐢熸垚mqtt閰嶇疆瀵硅薄"); diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java index 09fa6c9..8504a14 100644 --- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java +++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java @@ -92,10 +92,10 @@ if (null != topic && null != qos) { if (client.isConnected()) { client.subscribe(topic, qos); - log.info("mqtt杩炴帴鎴愬姛锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID); + log.info("mqtt杩炴帴鎴愬姛" ); log.info("--璁㈤槄涓婚:锛�" + Arrays.toString(topic)); } else { - log.info("mqtt杩炴帴澶辫触锛屽鎴风ID锛�" + PropertiesUtil.MQTT_CLIENT_ID); + log.info("mqtt杩炴帴澶辫触"); } } } catch (Exception e) { diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java deleted file mode 100644 index 0d9b555..0000000 --- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/PropertiesUtil.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.ruoyi.utils.mqtt; - -import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; - -import java.util.Objects; -import java.util.Properties; - -/** - * @Description: 鑾峰彇閰嶇疆淇℃伅 - * @ClassName: PropertiesUtil - * @Author: 鍒樿嫃涔� - * @Date: 2023骞�06鏈�06鏃�9:40 - * @Version: 1.0 - **/ -@Component -public class PropertiesUtil { - - public static String MQTT_HOST; - public static String MQTT_CLIENT_ID; - public static String MQTT_USER_NAME; - public static String MQTT_PASSWORD; - public static String MQTT_TOPIC; - public static Integer MQTT_TIMEOUT; - public static Integer MQTT_KEEP_ALIVE; - public static Boolean MQTT_ENABLED; - static { - MQTT_HOST = getYmlNew("mqtt.host"); - MQTT_CLIENT_ID = getYmlNew("mqtt.clientId"); - MQTT_USER_NAME = getYmlNew("mqtt.username"); - MQTT_PASSWORD = getYmlNew("mqtt.password"); - MQTT_TOPIC = getYmlNew("mqtt.topic"); - MQTT_TIMEOUT = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.timeout"))); - MQTT_KEEP_ALIVE = Integer.valueOf(Objects.requireNonNull(getYmlNew("mqtt.keepalive"))); - MQTT_ENABLED = Boolean.valueOf(getYmlNew("mqtt.enabled")); - } - - public static String getYmlNew(String key) { - Resource resource = new ClassPathResource("application-ard.yml"); - Properties properties; - try { - YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean(); - yamlFactory.setResources(resource); - properties = yamlFactory.getObject(); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - assert properties != null; - return properties.get(key).toString(); - } -} diff --git a/ard-work/src/main/java/com/ruoyi/utils/spring/SpringUtils.java b/ard-work/src/main/java/com/ruoyi/utils/spring/SpringUtils.java new file mode 100644 index 0000000..58f71a6 --- /dev/null +++ b/ard-work/src/main/java/com/ruoyi/utils/spring/SpringUtils.java @@ -0,0 +1,158 @@ +package com.ruoyi.utils.spring; + +import org.springframework.aop.framework.AopContext; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import com.ruoyi.common.utils.StringUtils; + +/** + * spring宸ュ叿绫� 鏂逛究鍦ㄩ潪spring绠$悊鐜涓幏鍙朾ean + * + * @author ruoyi + */ +@Component +public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware +{ + /** Spring搴旂敤涓婁笅鏂囩幆澧� */ + private static ConfigurableListableBeanFactory beanFactory; + + private static ApplicationContext applicationContext; + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException + { + SpringUtils.beanFactory = beanFactory; + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException + { + SpringUtils.applicationContext = applicationContext; + } + + /** + * 鑾峰彇瀵硅薄 + * + * @param name + * @return Object 涓�涓互鎵�缁欏悕瀛楁敞鍐岀殑bean鐨勫疄渚� + * @throws BeansException + * + */ + @SuppressWarnings("unchecked") + public static <T> T getBean(String name) throws BeansException + { + return (T) beanFactory.getBean(name); + } + + /** + * 鑾峰彇绫诲瀷涓簉equiredType鐨勫璞� + * + * @param clz + * @return + * @throws BeansException + * + */ + public static <T> T getBean(Class<T> clz) throws BeansException + { + T result = (T) beanFactory.getBean(clz); + return result; + } + + /** + * 濡傛灉BeanFactory鍖呭惈涓�涓笌鎵�缁欏悕绉板尮閰嶇殑bean瀹氫箟锛屽垯杩斿洖true + * + * @param name + * @return boolean + */ + public static boolean containsBean(String name) + { + return beanFactory.containsBean(name); + } + + /** + * 鍒ゆ柇浠ョ粰瀹氬悕瀛楁敞鍐岀殑bean瀹氫箟鏄竴涓猻ingleton杩樻槸涓�涓猵rototype銆� 濡傛灉涓庣粰瀹氬悕瀛楃浉搴旂殑bean瀹氫箟娌℃湁琚壘鍒帮紝灏嗕細鎶涘嚭涓�涓紓甯革紙NoSuchBeanDefinitionException锛� + * + * @param name + * @return boolean + * @throws NoSuchBeanDefinitionException + * + */ + public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.isSingleton(name); + } + + /** + * @param name + * @return Class 娉ㄥ唽瀵硅薄鐨勭被鍨� + * @throws NoSuchBeanDefinitionException + * + */ + public static Class<?> getType(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.getType(name); + } + + /** + * 濡傛灉缁欏畾鐨刡ean鍚嶅瓧鍦╞ean瀹氫箟涓湁鍒悕锛屽垯杩斿洖杩欎簺鍒悕 + * + * @param name + * @return + * @throws NoSuchBeanDefinitionException + * + */ + public static String[] getAliases(String name) throws NoSuchBeanDefinitionException + { + return beanFactory.getAliases(name); + } + + /** + * 鑾峰彇aop浠g悊瀵硅薄 + * + * @param invoker + * @return + */ + @SuppressWarnings("unchecked") + public static <T> T getAopProxy(T invoker) + { + return (T) AopContext.currentProxy(); + } + + /** + * 鑾峰彇褰撳墠鐨勭幆澧冮厤缃紝鏃犻厤缃繑鍥瀗ull + * + * @return 褰撳墠鐨勭幆澧冮厤缃� + */ + public static String[] getActiveProfiles() + { + return applicationContext.getEnvironment().getActiveProfiles(); + } + + /** + * 鑾峰彇褰撳墠鐨勭幆澧冮厤缃紝褰撴湁澶氫釜鐜閰嶇疆鏃讹紝鍙幏鍙栫涓�涓� + * + * @return 褰撳墠鐨勭幆澧冮厤缃� + */ + public static String getActiveProfile() + { + final String[] activeProfiles = getActiveProfiles(); + return StringUtils.isNotEmpty(activeProfiles) ? activeProfiles[0] : null; + } + + /** + * 鑾峰彇閰嶇疆鏂囦欢涓殑鍊� + * + * @param key 閰嶇疆鏂囦欢鐨刱ey + * @return 褰撳墠鐨勯厤缃枃浠剁殑鍊� + * + */ + public static String getRequiredProperty(String key) + { + return applicationContext.getEnvironment().getRequiredProperty(key); + } +} diff --git a/ard-work/src/main/resources/templates/test.html b/ard-work/src/main/resources/templates/test.html index a9acd06..15e9981 100644 --- a/ard-work/src/main/resources/templates/test.html +++ b/ard-work/src/main/resources/templates/test.html @@ -162,7 +162,7 @@ } }) - opt = {"username": "liusuyi", "password": "5959932"}; + opt = {"username": "admin", "password": "admin123"}; $.ajax({ headers: { 'Accept': 'application/json', diff --git a/ruoyi-admin/src/main/resources/application-ard.yml b/ruoyi-admin/src/main/resources/application-ard.yml deleted file mode 100644 index 1c15525..0000000 --- a/ruoyi-admin/src/main/resources/application-ard.yml +++ /dev/null @@ -1,50 +0,0 @@ -# webrtc-streamer閰嶇疆 -webrtc: - enabled: false - host: 127.0.0.1:8000 -# minio閰嶇疆 -minio: - enabled: false - endpoint: http://192.168.1.227:9000 - accessKey: admin - secretKey: xzx12345 - path: G:/DATA -# forest閰嶇疆 -forest: - backend: okhttp3 # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛� - max-connections: 1000 # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� - max-route-connections: 500 # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� - max-request-queue-size: 100 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏� - max-async-thread-size: 300 # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟 - max-async-queue-size: 16 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬 - timeout: 3000 # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛� - connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� - read-timeout: 3000 # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� - max-retry-count: 0 # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛� - ssl-protocol: TLS # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛� - log-enabled: true # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛� - log-request: true # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛� - log-response-status: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛� - log-response-content: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛� - async-mode: platform # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛� -#娴佸獟浣撹浆鐮佹湇鍔″櫒 -mediamtx: - enabled: false - host: 127.0.0.1 -#mqtt -mqtt: - host: tcp://192.168.1.15:1883 - clientId: m3 - username: admin - password: xzx12345 - topic: apponekey,radar - timeout: 100 - keepalive: 60 - enabled: true - -#寮傛绾跨▼姹犻厤缃� -ThreadPoolTask: - corePoolSize: 20 - maxPoolSize: 40 - keepAliveSeconds: 300 - queueCapacity: 50 \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-dev-druid.yml b/ruoyi-admin/src/main/resources/application-dev-druid.yml new file mode 100644 index 0000000..cc740d1 --- /dev/null +++ b/ruoyi-admin/src/main/resources/application-dev-druid.yml @@ -0,0 +1,58 @@ +# 鏁版嵁婧愰厤缃� +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + # 涓诲簱鏁版嵁婧� + master: + driverClassName: org.postgresql.Driver + url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified + username: postgres + password: postgres + # 浠庡簱鏁版嵁婧� + slave: + # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴 + # enabled: true + # driverClassName: org.postgresql.Driver + # url: jdbc:postgresql://112.98.126.2:35432/ard732 + # username: postgres + # password: Yykj.2017 + # 鍒濆杩炴帴鏁� + initialSize: 5 + # 鏈�灏忚繛鎺ユ睜鏁伴噺 + minIdle: 10 + # 鏈�澶ц繛鎺ユ睜鏁伴噺 + maxActive: 20 + # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂� + maxWait: 60000 + # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣 + timeBetweenEvictionRunsMillis: 60000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 + minEvictableIdleTimeMillis: 300000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 + maxEvictableIdleTimeMillis: 900000 + # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁� + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂� + allow: + url-pattern: /druid/* + # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮� + login-username: ruoyi + login-password: 123456 + filter: + stat: + enabled: true + # 鎱QL璁板綍 + log-slow-sql: true + slow-sql-millis: 3000 + merge-sql: true + wall: + config: + multi-statement-allow: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml new file mode 100644 index 0000000..715998e --- /dev/null +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -0,0 +1,101 @@ +# 寮�鍙戠幆澧冮厤缃� +server: + # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080 + port: 8080 + servlet: + # 搴旂敤鐨勮闂矾寰� + context-path: / + tomcat: + # tomcat鐨刄RI缂栫爜 + uri-encoding: UTF-8 + # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100 + accept-count: 1000 + threads: + # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200 + max: 800 + # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10 + min-spare: 100 +# Spring閰嶇疆 +spring: + # redis 閰嶇疆 + redis: + # 鍦板潃 + host: 127.0.0.1 + # 绔彛锛岄粯璁や负6379 + port: 6379 + # 鏁版嵁搴撶储寮� + database: 0 + # 瀵嗙爜 + password: + # 杩炴帴瓒呮椂鏃堕棿 + timeout: 10s + lettuce: + pool: + # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺� + min-idle: 0 + # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺� + max-idle: 8 + # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁� + max-active: 8 + # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級 + max-wait: -1ms +# 鏃ュ織閰嶇疆 +logging: + level: + authorize: info + minio: info + hikSdk: info + stealAlarm: info + websocket: info + patrolInspectionTask: info + mqtt: info + guideQueue: info + rongCloud: info + cmd: info + uav: info + sy: info + + +# webrtc-streamer閰嶇疆 +webrtc: + enabled: true + host: 127.0.0.1:8000 +# minio閰嶇疆 +minio: + enabled: false + endpoint: http://192.168.1.15:9001 + accessKey: admin + secretKey: xzx12345 + path: G:/DATA +# forest閰嶇疆 +forest: + backend: okhttp3 # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛� + max-connections: 1000 # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� + max-route-connections: 500 # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� + max-request-queue-size: 100 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏� + max-async-thread-size: 300 # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟 + max-async-queue-size: 16 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬 + timeout: 3000 # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛� + connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� + read-timeout: 3000 # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� + max-retry-count: 0 # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛� + ssl-protocol: TLS # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛� + log-enabled: true # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛� + log-request: true # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛� + log-response-status: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛� + log-response-content: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛� + async-mode: platform # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛� +#娴佸獟浣撹浆鐮佹湇鍔″櫒 +mediamtx: + enabled: true + host: 127.0.0.1 +#mqtt +mqtt: + host: tcp://192.168.1.15:1883 + clientId: m227 + username: admin + password: xzx12345 + topic: minioEvent + timeout: 100 + keepalive: 60 + enabled: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml deleted file mode 100644 index 031a481..0000000 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ /dev/null @@ -1,61 +0,0 @@ -# 鏁版嵁婧愰厤缃� -spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - druid: - # 涓诲簱鏁版嵁婧� - master: - driverClassName: org.postgresql.Driver - url: jdbc:postgresql://111.40.46.199:15432/ry-vue?stringtype=unspecified - username: postgres - password: Yykj.2021 -# url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified -# username: postgres -# password: postgres - # 浠庡簱鏁版嵁婧� - slave: - # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴 -# enabled: true -# driverClassName: org.postgresql.Driver -# url: jdbc:postgresql://112.98.126.2:35432/ard732 -# username: postgres -# password: Yykj.2017 - # 鍒濆杩炴帴鏁� - initialSize: 5 - # 鏈�灏忚繛鎺ユ睜鏁伴噺 - minIdle: 10 - # 鏈�澶ц繛鎺ユ睜鏁伴噺 - maxActive: 20 - # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂� - maxWait: 60000 - # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣 - timeBetweenEvictionRunsMillis: 60000 - # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 - minEvictableIdleTimeMillis: 300000 - # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 - maxEvictableIdleTimeMillis: 900000 - # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁� - validationQuery: SELECT 1 - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - webStatFilter: - enabled: true - statViewServlet: - enabled: true - # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂� - allow: - url-pattern: /druid/* - # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮� - login-username: ruoyi - login-password: 123456 - filter: - stat: - enabled: true - # 鎱QL璁板綍 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-prod-druid.yml b/ruoyi-admin/src/main/resources/application-prod-druid.yml new file mode 100644 index 0000000..b946ee0 --- /dev/null +++ b/ruoyi-admin/src/main/resources/application-prod-druid.yml @@ -0,0 +1,58 @@ +# 鏁版嵁婧愰厤缃� +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + druid: + # 涓诲簱鏁版嵁婧� + master: + driverClassName: org.postgresql.Driver + url: jdbc:postgresql://112.98.126.2:35432/ry-vue?stringtype=unspecified + username: postgres + password: Yykj.2017 + # 浠庡簱鏁版嵁婧� + slave: + # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴 + # enabled: true + # driverClassName: org.postgresql.Driver + # url: jdbc:postgresql://112.98.126.2:35432/ard732 + # username: postgres + # password: Yykj.2017 + # 鍒濆杩炴帴鏁� + initialSize: 5 + # 鏈�灏忚繛鎺ユ睜鏁伴噺 + minIdle: 10 + # 鏈�澶ц繛鎺ユ睜鏁伴噺 + maxActive: 20 + # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂� + maxWait: 60000 + # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣 + timeBetweenEvictionRunsMillis: 60000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 + minEvictableIdleTimeMillis: 300000 + # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣 + maxEvictableIdleTimeMillis: 900000 + # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁� + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂� + allow: + url-pattern: /druid/* + # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮� + login-username: ruoyi + login-password: 123456 + filter: + stat: + enabled: true + # 鎱QL璁板綍 + log-slow-sql: true + slow-sql-millis: 3000 + merge-sql: true + wall: + config: + multi-statement-allow: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml new file mode 100644 index 0000000..67cc120 --- /dev/null +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -0,0 +1,101 @@ +# 鐢熶骇鐜閰嶇疆 +server: + # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080 + port: 8080 + servlet: + # 搴旂敤鐨勮闂矾寰� + context-path: / + tomcat: + # tomcat鐨刄RI缂栫爜 + uri-encoding: UTF-8 + # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100 + accept-count: 1000 + threads: + # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200 + max: 800 + # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10 + min-spare: 100 +# Spring閰嶇疆 +spring: + # redis 閰嶇疆 + redis: + # 鍦板潃 + host: 192.168.5.229 + # 绔彛锛岄粯璁や负6379 + port: 6379 + # 鏁版嵁搴撶储寮� + database: 0 + # 瀵嗙爜 + password: + # 杩炴帴瓒呮椂鏃堕棿 + timeout: 10s + lettuce: + pool: + # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺� + min-idle: 0 + # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺� + max-idle: 8 + # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁� + max-active: 8 + # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級 + max-wait: -1ms +# 鏃ュ織閰嶇疆 +logging: + level: + authorize: info + minio: info + hikSdk: info + stealAlarm: info + websocket: info + patrolInspectionTask: info + mqtt: info + guideQueue: info + rongCloud: info + cmd: info + uav: info + sy: info + +# webrtc-streamer閰嶇疆 +webrtc: + enabled: false + host: 192.168.5.229:8000 + +# minio閰嶇疆 +minio: + enabled: false + endpoint: http://192.168.5.229:9001 + accessKey: admin + secretKey: xzx12345 + path: F:/DATA +# forest閰嶇疆 +forest: + backend: okhttp3 # 鍚庣HTTP妗嗘灦锛堥粯璁や负 okhttp3锛� + max-connections: 1000 # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� + max-route-connections: 500 # 姣忎釜璺敱鐨勬渶澶ц繛鎺ユ暟锛堥粯璁や负 500锛� + max-request-queue-size: 100 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶ц姹傜瓑寰呴槦鍒楀ぇ灏� + max-async-thread-size: 300 # [鑷獀1.5.21鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫暟 + max-async-queue-size: 16 # [鑷獀1.5.22鐗堟湰璧峰彲鐢╙ 鏈�澶у紓姝ョ嚎绋嬫睜闃熷垪澶у皬 + timeout: 3000 # [宸蹭笉鎺ㄨ崘浣跨敤] 璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 3000锛� + connect-timeout: 3000 # 杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� + read-timeout: 3000 # 鏁版嵁璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶄负姣锛堥粯璁や负 timeout锛� + max-retry-count: 0 # 璇锋眰澶辫触鍚庨噸璇曟鏁帮紙榛樿涓� 0 娆′笉閲嶈瘯锛� + ssl-protocol: TLS # 鍗曞悜楠岃瘉鐨凥TTPS鐨勯粯璁LS鍗忚锛堥粯璁や负 TLS锛� + log-enabled: true # 鎵撳紑鎴栧叧闂棩蹇楋紙榛樿涓� true锛� + log-request: true # 鎵撳紑/鍏抽棴Forest璇锋眰鏃ュ織锛堥粯璁や负 true锛� + log-response-status: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鐘舵�佹棩蹇楋紙榛樿涓� true锛� + log-response-content: true # 鎵撳紑/鍏抽棴Forest鍝嶅簲鍐呭鏃ュ織锛堥粯璁や负 false锛� + async-mode: platform # [鑷獀1.5.27鐗堟湰璧峰彲鐢╙ 寮傛妯″紡锛堥粯璁や负 platform锛� +#娴佸獟浣撹浆鐮佹湇鍔″櫒 +mediamtx: + enabled: true + host: 192.168.5.229 +#mqtt +mqtt: + host: tcp://192.168.5.229:1883 + clientId: server229 + username: admin + password: xzx12345 + topic: minioEvent,apponekey,camera,external + timeout: 100 + keepalive: 60 + enabled: true \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 6903577..6199853 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -11,36 +11,9 @@ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ard/uploadPath锛孡inux閰嶇疆 /home/ard/uploadPath锛� profile: D:/ard/uploadPath # 鑾峰彇ip鍦板潃寮�鍏� - addressEnabled: false + addressEnabled: true # 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃楠岃瘉 captchaType: char - -# 寮�鍙戠幆澧冮厤缃� -server: - # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080 - port: 8080 - servlet: - # 搴旂敤鐨勮闂矾寰� - context-path: / - tomcat: - # tomcat鐨刄RI缂栫爜 - uri-encoding: UTF-8 - # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100 - accept-count: 1000 - threads: - # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200 - max: 800 - # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10 - min-spare: 100 - -# 鏃ュ織閰嶇疆 -logging: - level: - com.ruoyi.utils.tube: debug - com.ruoyi.inspect: info - org.springframework: warn - com.example.mapper: debug - # 鐢ㄦ埛閰嶇疆 user: password: @@ -48,60 +21,14 @@ maxRetryCount: 5 # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛� lockTime: 10 - -# Spring閰嶇疆 -spring: - # 璧勬簮淇℃伅 - messages: - # 鍥介檯鍖栬祫婧愭枃浠惰矾寰� - basename: i18n/messages - profiles: - active: druid,ard - # 鏂囦欢涓婁紶 - servlet: - multipart: - # 鍗曚釜鏂囦欢澶у皬 - max-file-size: 10MB - # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬 - max-request-size: 20MB - # 鏈嶅姟妯″潡 - devtools: - restart: - # 鐑儴缃插紑鍏� - enabled: false - # redis 閰嶇疆 - redis: - # 鍦板潃 - host: 192.168.1.15 - # 绔彛锛岄粯璁や负6379 - port: 6379 - # 鏁版嵁搴撶储寮� - database: 0 - # 瀵嗙爜 - password: - # 杩炴帴瓒呮椂鏃堕棿 - timeout: 10s - lettuce: - pool: - # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺� - min-idle: 0 - # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺� - max-idle: 8 - # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁� - max-active: 8 - # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級 - max-wait: -1ms - thymeleaf: - cache: false # token閰嶇疆 token: - # 浠ょ墝鑷畾涔夋爣璇� - header: Authorization - # 浠ょ墝瀵嗛挜 - secret: abcdefghijklmnopqrstuvwxyz - # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛� - expireTime: 30 - + # 浠ょ墝鑷畾涔夋爣璇� + header: Authorization + # 浠ょ墝瀵嗛挜 + secret: abcdefghijklmnopqrstuvwxyz + # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛� + expireTime: 30 # MyBatis閰嶇疆 #mybatis: # # 鎼滅储鎸囧畾鍖呭埆鍚� @@ -114,6 +41,10 @@ type-Aliases-Package: com.ruoyi.**.domain mapper-Locations: classpath*:mapper/**/*Mapper.xml config-Location: classpath:mybatis/mybatis-config.xml + global-config: + banner: off # 鍏抽棴mybatisplus鍚姩鍥炬爣 + db-config: #涓婚敭涓嶇敤MyBatis plus鐨勯洩鑺辩畻娉�,鐢ㄦ暟鎹簱鐨勪富閿嚜澧� + id-type: auto # configuration: # # 鏄惁寮�鍚嚜鍔ㄩ┘宄板懡鍚嶈鍒欐槧灏�:浠庢暟鎹簱鍒楀悕鍒癑ava灞炴�ч┘宄板懡鍚嶇殑绫讳技鏄犲皠 # map-underscore-to-camel-case: true @@ -121,30 +52,54 @@ # call-setters-on-nulls: true # # 杩欎釜閰嶇疆浼氬皢鎵ц鐨剆ql鎵撳嵃鍑烘潵锛屽湪寮�鍙戞垨娴嬭瘯鐨勬椂鍊欏彲浠ョ敤 # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - - # PageHelper鍒嗛〉鎻掍欢 -pagehelper: +pagehelper: helperDialect: postgresql supportMethodsArguments: true - params: count=countSql - + params: count=countSql # Swagger閰嶇疆 swagger: # 鏄惁寮�鍚痵wagger enabled: true # 璇锋眰鍓嶇紑 pathMapping: / - # knife4j澧炲己鍔熻兘 knife4j: enable: true - # 闃叉XSS鏀诲嚮 -xss: +xss: # 杩囨护寮�鍏� enabled: true # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛� excludes: /system/notice # 鍖归厤閾炬帴 urlPatterns: /system/*,/monitor/*,/tool/* +#寮傛绾跨▼姹犻厤缃� +ThreadPoolTask: + corePoolSize: 20 + maxPoolSize: 40 + keepAliveSeconds: 300 + queueCapacity: 50 +# Spring閰嶇疆 +spring: + # 璧勬簮淇℃伅 + messages: + # 鍥介檯鍖栬祫婧愭枃浠惰矾寰� + basename: i18n/messages + # 鏂囦欢涓婁紶 + servlet: + multipart: + # 鍗曚釜鏂囦欢澶у皬 + max-file-size: 10MB + # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬 + max-request-size: 20MB + # 鏈嶅姟妯″潡 + devtools: + restart: + # 鐑儴缃插紑鍏� + enabled: false + thymeleaf: + cache: false + profiles: + active: dev-druid,dev + diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java index 3ca0f65..69ea287 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/MinioTask.java @@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -21,6 +22,8 @@ @Component("MinioTask") @Slf4j(topic = "minio") public class MinioTask { + @Resource + MinioUtils minioUtil; public void delHistoryTask(Integer saveDays) { log.debug("鎵ц鍘嗗彶鏁版嵁鍒犻櫎"); @@ -30,7 +33,7 @@ buckets.add("pic"); buckets.add("record"); for (String name : buckets) { - Iterable<Result<Item>> listObjectsPic = MinioUtils.getObjectsByBucket(name); + Iterable<Result<Item>> listObjectsPic = minioUtil.getObjectsByBucket(name); for (Result<Item> result : listObjectsPic) { Item item = result.get(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai")); @@ -48,7 +51,7 @@ log.debug("objectTime : " + objectTime); log.debug("expireTime : " + expireTime); log.debug("objectTime 鏃堕棿鍦� expireTime 涔嬪墠,鎵ц鍒犻櫎"); - boolean b = MinioUtils.removeObject(name, item.objectName()); + boolean b = minioUtil.removeObject(name, item.objectName()); if (b) { log.debug("鎴愬姛鍒犻櫎杩囨湡鏁版嵁锛�" + item.objectName() + "---" + item.lastModified()); } -- Gitblit v1.9.3