src/main/java/com/ard/alarm/apponekey/controller/ArdAlarmApponekeyController.java
@@ -1,12 +1,12 @@ package com.ard.alarm.apponekey.controller; import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.ard.utils.http.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import com.ard.utils.minio.MinioUtils; import org.springframework.web.bind.annotation.*; import com.ard.alarm.apponekey.domain.ArdAlarmApponekey; import com.ard.alarm.apponekey.service.IArdAlarmApponekeyService; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; /** @@ -18,16 +18,16 @@ @RestController @RequestMapping("/alarm/apponekey") public class ArdAlarmApponekeyController { @Autowired @Resource private IArdAlarmApponekeyService ardAlarmApponekeyService; @Resource private MinioUtils minioUtil; /** * æ°å¢appä¸é®æ¥è¦ */ @PostMapping public AjaxResult add(String userId,String name, Double longitude,Double latitude,Double altitude,MultipartFile file) { String url = MinioUtils.putObjectAndGetUrl("record", file); String url = minioUtil.putObjectAndGetUrl("record", file); ArdAlarmApponekey ardAlarmApponekey =new ArdAlarmApponekey(); ardAlarmApponekey.setUserId(userId); ardAlarmApponekey.setName(name); src/main/java/com/ard/config/MinioClientSingleton.java
ÎļþÒÑɾ³ý src/main/java/com/ard/utils/hiksdk/service/impl/FMSGCallBack.java
@@ -6,17 +6,16 @@ import com.ard.alarm.camera.service.IArdCamerasService; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.service.IArdEquipExternalService; import com.ard.config.MinioClientSingleton; import com.ard.utils.minio.MinioUtils; import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.AccessControlHostEventInfo; import com.ard.utils.hiksdk.domain.CameraEventInfo; import com.ard.utils.hiksdk.domain.ExternalAlarmEventInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.ard.utils.other.DateUtils; import com.ard.utils.other.SpringTool; import com.ard.utils.mqtt.MqttConsumer; import com.ard.utils.spring.SpringUtils; import com.ard.utils.uuid.IdUtils; import com.sun.jna.Pointer; import lombok.extern.slf4j.Slf4j; @@ -61,7 +60,7 @@ ArdCameras ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); ardCameras.setPort(wLinkPort); IArdCamerasService ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); IArdCamerasService ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); ArdCameras camera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); HCNetSDK.NET_DVR_ALARMINFO_V30 netDvrAlarminfoV30 = new HCNetSDK.NET_DVR_ALARMINFO_V30(); netDvrAlarminfoV30.write(); @@ -95,7 +94,7 @@ ardCameras = new ArdCameras(); ardCameras.setIp(sDeviceIP); ardCameras.setPort(wLinkPort); ardCamerasService = SpringTool.getApplicationContext().getBean(IArdCamerasService.class); ardCamerasService = SpringUtils.getBean(IArdCamerasService.class); ArdCameras ardCamera = ardCamerasService.selectArdCamerasList(ardCameras).get(0); HCNetSDK.NET_VCA_RULE_ALARM strVcaAlarm = new HCNetSDK.NET_VCA_RULE_ALARM(); @@ -190,7 +189,7 @@ ArdEquipExternal ardEquipExternal = new ArdEquipExternal(); ardEquipExternal.setIp(sDeviceIP); ardEquipExternal.setPort(wLinkPort); IArdEquipExternalService ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); IArdEquipExternalService ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); ardEquipExternal = ardEquipExternalService.selectArdEquipExternal(ardEquipExternal); @@ -276,7 +275,7 @@ ArdEquipExternal accessControlHost = new ArdEquipExternal(); accessControlHost.setIp(sDeviceIP); accessControlHost.setPort(wLinkPort); ardEquipExternalService = SpringTool.getApplicationContext().getBean(IArdEquipExternalService.class); ardEquipExternalService = SpringUtils.getBean(IArdEquipExternalService.class); accessControlHost = ardEquipExternalService.selectArdEquipExternal(accessControlHost); HCNetSDK.NET_DVR_ACS_ALARM_INFO strACSInfo = new HCNetSDK.NET_DVR_ACS_ALARM_INFO(); @@ -322,9 +321,10 @@ InputStream input = new ByteArrayInputStream(bytes); String bucketName = "pic"; String objectName = "alarm/" + IdUtils.simpleUUID() + ".jpeg"; boolean uploadObject = MinioUtils.uploadObject(bucketName, objectName, input, "image/JPEG"); MinioUtils minioUtil = SpringUtils.getBean(MinioUtils.class); boolean uploadObject = minioUtil.uploadObject(bucketName, objectName, input,input.available(), "image/JPEG"); if (uploadObject) { url = MinioClientSingleton.domainUrl + "/" + bucketName + "/" + objectName; url = minioUtil.getBucketObjectUrl(bucketName, objectName); //log.debug("ä¸ä¼ æä»¶æå!" + url); } } catch (Exception e) { src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -3,12 +3,12 @@ import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.config.MinioClientSingleton; import com.ard.utils.minio.MinioUtils; import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.hiksdk.util.minio.MinioUtils; import com.ard.utils.spring.SpringUtils; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Pointer; @@ -434,11 +434,10 @@ InputStream input = new ByteArrayInputStream(array); String url = ""; try { boolean b = MinioUtils.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input, ContentType); MinioUtils minioUtil = SpringUtils.getBean(MinioUtils.class); boolean b = minioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input,input.available(), ContentType); if (b) { // url = MinioUtils.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); // url = url.indexOf('?') != -1 ? url.substring(0, url.indexOf('?')) : url; url = MinioClientSingleton.domainUrl + "/" + cmd.getBucketName() + "/" + cmd.getObjectName(); url = minioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); // log.debug("ä¸ä¼ æä»¶æå!" + url); } } catch (Exception ex) { src/main/java/com/ard/utils/hiksdk/util/minio/MinioUtils.java
ÎļþÒÑɾ³ý src/main/java/com/ard/utils/minio/MinioConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,33 @@ package com.ard.utils.minio; 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("${spring.minio.endpoint}") private String endpoint; @Value("${spring.minio.accessKey}") private String accessKey; @Value("${spring.minio.secretKey}") private String secretKey; @Bean public io.minio.MinioClient getMinioClient() { return io.minio.MinioClient.builder() .endpoint(endpoint) .credentials(accessKey, secretKey) .build(); } } src/main/java/com/ard/utils/minio/MinioUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,592 @@ package com.ard.utils.minio; import com.ard.utils.other.StringUtils; import com.ard.utils.uuid.IdUtils; 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.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.concurrent.TimeUnit; /** * @Description: Minio客æ·ç«¯å·¥å ·ç±» * @ClassName: MinioUtils * @Author: åèä¹ * @Date: 2023å¹´05æ18æ¥9:34 * @Version: 1.0 **/ @SuppressWarnings("ALL") @Slf4j(topic = "minio") @Component public class MinioUtils { @Resource MinioClient minioClient; /** * å¤ææ¡¶æ¯å¦åå¨ */ public boolean exitsBucket(String bucketName) { boolean found = false; try { if (StringUtils.isEmpty(bucketName)) { return false; } BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(bucketName).build(); found = minioClient.bucketExists(bucketExistsArgs); } catch (Exception ex) { log.error("minioå¤ææ¡¶åå¨å¼å¸¸ï¼", ex.getMessage()); } return found; } /** * å建桶,并设置桶çç¥ä¸ºå ¬å ± */ public boolean createBucket(String bucketName) { try { if (StringUtils.isEmpty(bucketName)) { return false; } /*å建桶*/ MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucketName).build(); minioClient.makeBucket(makeBucketArgs); /*设置çç¥*/ String sb = "{\"Version\":\"2012-10-17\"," + "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," + "\"s3:GetBucketLocation\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "\"]},{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\",\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "/*\"]}]}"; SetBucketPolicyArgs setBucketPolicyArgs = SetBucketPolicyArgs.builder() .bucket(bucketName) .config(sb) .build(); /*设置éç¥mqtt*/ //设置mqttä¸»é¢ NotificationConfiguration config = new NotificationConfiguration(); List<QueueConfiguration> queueConfigurations = new ArrayList<>(); QueueConfiguration queueConfiguration = new QueueConfiguration(); queueConfiguration.setQueue("arn:minio:sqs::_:mqtt"); //设置äºä»¶ List<EventType> events = new ArrayList<>(); events.add(EventType.OBJECT_REMOVED_ANY); events.add(EventType.OBJECT_CREATED_ANY); queueConfiguration.setEvents(events); queueConfigurations.add(queueConfiguration); config.setQueueConfigurationList(queueConfigurations); SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder() .bucket(bucketName) .config(config).build(); minioClient.setBucketPolicy(setBucketPolicyArgs); minioClient.setBucketNotification(setBucketNotificationArgs); return true; } catch (Exception ex) { log.error("minioå建桶å¼å¸¸ï¼", ex.getMessage()); return false; } } /** * å é¤ä¸ä¸ªæ¡¶ * * @param bucket æ¡¶åç§° */ public boolean removeBucket(String bucket) { try { boolean found = exitsBucket(bucket); if (found) { Iterable<Result<Item>> myObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucket).build()); for (Result<Item> result : myObjects) { Item item = result.get(); //æå¯¹è±¡æä»¶ï¼åå é¤å¤±è´¥ if (item.size() > 0) { return false; } } // å é¤`bucketName`å卿¡¶ï¼æ³¨æï¼åªæå卿¡¶ä¸ºç©ºæ¶æè½å 餿åã minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build()); found = exitsBucket(bucket); return !found; } } catch (Exception ex) { log.error("å 餿¡¶å¼å¸¸ï¼" + ex.getMessage()); } return false; } /** * æ¥è¯¢æææ¡¶æä»¶ * * @return */ public List<Bucket> getListBuckets() { try { return minioClient.listBuckets(); } catch (Exception e) { e.printStackTrace(); } return Collections.emptyList(); } /** * çæä¸ä¸ªGET请æ±ç带æå¤±ææ¶é´çåäº«é¾æ¥ã * å¤±ææ¶é´é»è®¤æ¯7天ã * * @param bucketName å卿¡¶åç§° * @param objectName å卿¡¶éç对象åç§° * @param expires å¤±ææ¶é´ï¼ä»¥ç§ä¸ºåä½ï¼ï¼é»è®¤æ¯7天ï¼ä¸å¾å¤§äºä¸å¤© * @return */ public String getObjectWithExpired(String bucketName, String objectName, Integer expires, TimeUnit timeUnit) { String url = ""; if (exitsBucket(bucketName)) { try { GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs.builder() .method(Method.GET) .bucket(bucketName) .object(objectName) .expiry(expires, timeUnit) .build(); url = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); } catch (Exception ex) { log.error("minioçæå¤±æurlå¼å¸¸", ex.getMessage()); } } else { createBucket(bucketName); } return url; } /** * @æè¿° ä¸ä¼ MultipartFileæä»¶è¿åurl * @åæ° [bucketName, file] * @è¿åå¼ java.lang.String * @å建人 åèä¹ * @å建æ¶é´ 2023/5/18 12:16 * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public String putObjectAndGetUrl(String bucketName, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } //夿æä»¶æ¯å¦ä¸ºç©º if (null == file || 0 == file.getSize()) { log.error("ä¸ä¼ minioæä»¶æå¡å¨é误ï¼ä¸ä¼ æä»¶ä¸ºç©º"); } boolean exsit = exitsBucket(bucketName); if (!exsit) { boolean bucket = createBucket(bucketName); if (bucket) { log.info(bucketName + "-æ¡¶ä¸åå¨,æåå建桶"); } } //æä»¶å String originalFilename = file.getOriginalFilename(); //æ°çæä»¶å String fileName = IdUtils.fastSimpleUUID() + "_" + originalFilename; try { InputStream inputStream = file.getInputStream(); /*ä¸ä¼ 对象*/ PutObjectArgs putObjectArgs = PutObjectArgs .builder() .bucket(bucketName) .object(fileName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); minioClient.putObject(putObjectArgs); inputStream.close(); /*è·åurl*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs .builder() .bucket(bucketName) .object(fileName) .method(Method.GET) .build(); String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { log.error("ä¸ä¼ 对象è¿åurlå¼å¸¸ï¼" + ex.getMessage()); } return ""; } /** * @æè¿° ä¸ä¼ MultipartFileæä»¶è¿åurl * @åæ° [bucketName, file] * @è¿åå¼ java.lang.String * @å建人 åèä¹ * @å建æ¶é´ 2023/5/18 12:16 * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public String putObjectAndGetUrl(String bucketName, String folder, MultipartFile file) { if (!exitsBucket(bucketName)) { createBucket(bucketName); } //夿æä»¶æ¯å¦ä¸ºç©º if (null == file || 0 == file.getSize()) { log.error("ä¸ä¼ minioæä»¶æå¡å¨é误ï¼ä¸ä¼ æä»¶ä¸ºç©º"); } boolean exsit = exitsBucket(bucketName); if (!exsit) { boolean bucket = createBucket(bucketName); if (bucket) { log.info(bucketName + "-æ¡¶ä¸åå¨,æåå建桶"); } } //æä»¶å String originalFilename = file.getOriginalFilename(); //æ°çæä»¶å String fileName = folder + "/" + IdUtils.fastSimpleUUID() + "_" + originalFilename; try { InputStream inputStream = file.getInputStream(); /*ä¸ä¼ 对象*/ PutObjectArgs putObjectArgs = PutObjectArgs .builder() .bucket(bucketName) .object(fileName) .stream(inputStream, file.getSize(), -1) .contentType(file.getContentType()) .build(); minioClient.putObject(putObjectArgs); inputStream.close(); /*è·åurl*/ GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs .builder() .bucket(bucketName) .object(fileName) .method(Method.GET) .build(); String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { log.error("ä¸ä¼ 对象è¿åurlå¼å¸¸ï¼" + ex.getMessage()); } return ""; } /** * å 餿件 * * @param bucket æ¡¶åç§° * @param objectName 对象åç§° * @return boolean */ public boolean removeObject(String bucket, String objectName) { try { boolean exsit = exitsBucket(bucket); if (exsit) { RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(objectName).build(); minioClient.removeObject(removeObjectArgs); return true; } } catch (Exception e) { log.error("removeObject", e); } return false; } /** * æ¹éå 餿件 * * @param objectNames 对象åç§° * @return boolean */ public boolean removeObjects(String bucket, List<String> objectNames) { if (exitsBucket(bucket)) { try { List<DeleteObject> objects = new LinkedList<>(); for (String str : objectNames) { objects.add(new DeleteObject(str)); } RemoveObjectsArgs removeObjectsArgs = RemoveObjectsArgs.builder().bucket(bucket).objects(objects).build(); Iterable<Result<DeleteError>> results = minioClient.removeObjects(removeObjectsArgs); /*å é¤å®éåç»æï¼å¦åå 䏿*/ for (Result<DeleteError> result : results) { DeleteError error = result.get(); log.error("Error in deleting object " + error.objectName() + "; " + error.message()); } return true; } catch (Exception ex) { log.error("minioæ¹éå 餿件å¼å¸¸", ex.getMessage()); } } return false; } /** * è·åå个桶ä¸çæææä»¶å¯¹è±¡åç§° * * @param bucket æ¡¶åç§° * @return {@link List}<{@link String}> */ 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 = 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()); } return listObjetcName; } catch (Exception ex) { log.error("minioè·åæ¡¶ä¸å¯¹è±¡å¼å¸¸ï¼" + ex.getMessage()); } } return null; } /** * è·åæä¸ªæ¡¶ä¸æä¸ªå¯¹è±¡çURL * * @param bucket æ¡¶åç§° * @param objectName 对象å (æä»¶å¤¹å + æä»¶å) * @return */ public String getBucketObjectUrl(String bucketName, String objectName) { try { if (!exitsBucket(bucketName)) { return ""; } GetPresignedObjectUrlArgs getPresignedObjectUrlArgs = GetPresignedObjectUrlArgs .builder() .bucket(bucketName) .object(objectName) .method(Method.GET) .build(); String presignedObjectUrl = minioClient.getPresignedObjectUrl(getPresignedObjectUrlArgs); String ObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?")); return ObjectUrl; } catch (Exception ex) { log.error("minioè·å对象URLå¼å¸¸" + ex.getMessage()); } return ""; } /** * ä¸ä¼ 对象-stream * * @param bucketName bucketåç§° * @param objectName â½ä»¶åç§° * @param stream â½ä»¶æµ * @param size ⼤⼩ * @param contextType ç±»å Image/jpeg æµè§å¨å¯ä»¥ç´æ¥æå¼ï¼å¦åä¸è½½ */ public boolean uploadObject(String bucketName, String objectName, InputStream stream, long size, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); } PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(stream, size, -1) .contentType(contextType) .build(); ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minioä¸ä¼ æä»¶(éè¿stream)å¼å¸¸" + ex.getMessage()); return false; } } /** * ä¸ä¼ 对象-File * * @param bucketName bucketåç§° * @param objectName â½ä»¶åç§° * @param file â½ä»¶ * @param contextType ç±»å Image/jpeg æµè§å¨å¯ä»¥ç´æ¥æå¼ï¼å¦åä¸è½½ */ public boolean uploadObject(String bucketName, String objectName, File file, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); } FileInputStream fileInputStream = new FileInputStream(file); PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(fileInputStream, file.length(), -1) .contentType(contextType) .build(); ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minioä¸ä¼ æä»¶(éè¿File)å¼å¸¸" + ex.getMessage()); return false; } } /** * ä¸ä¼ 对象-MultipartFile * * @param bucketName bucketåç§° * @param objectName â½ä»¶åç§° * @param MultipartFile â½ä»¶ * @param contextType ç±»å Image/jpeg æµè§å¨å¯ä»¥ç´æ¥æå¼ï¼å¦åä¸è½½ */ public boolean uploadObject(String bucketName, String objectName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); } InputStream inputStream = multipartFile.getInputStream(); PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minioä¸ä¼ æä»¶(éè¿File)å¼å¸¸" + ex.getMessage()); return false; } } /** * ä¸ä¼ 对象,ç¨multipartFileåç§°ä½ä¸ºå¯¹è±¡å * * @param bucketName bucketåç§° * @param objectName â½ä»¶åç§° * @param MultipartFile â½ä»¶ * @param contextType ç±»å Image/jpeg æµè§å¨å¯ä»¥ç´æ¥æå¼ï¼å¦åä¸è½½ */ public boolean uploadObject(String bucketName, MultipartFile multipartFile, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); } if (multipartFile == null) { log.error("ä¸ä¼ æä»¶ä¸ºç©º"); return false; } String objectName = multipartFile.getOriginalFilename(); InputStream inputStream = multipartFile.getInputStream(); PutObjectArgs putObjectArgs = PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(inputStream, multipartFile.getSize(), -1) .contentType(contextType) .build(); minioClient.putObject(putObjectArgs); return true; } catch (Exception ex) { log.error("minioä¸ä¼ æä»¶(éè¿File)å¼å¸¸" + ex.getMessage()); return false; } } /** * ä¸ä¼ 对象-éè¿æ¬å°è·¯å¾ * * @param bulkName * @param objectName * @param localFilePathName * @return */ public boolean uploadObject(String bucketName, String objectName, String localFilePathName, String contextType) { try { if (!exitsBucket(bucketName)) { createBucket(bucketName); } File file = new File(localFilePathName); if (!file.exists()) { log.debug("æä»¶ä¸åå¨"); return false; } UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder() .bucket(bucketName) .object(objectName) .filename(localFilePathName) .contentType(contextType) .build(); ObjectWriteResponse objectWriteResponse = minioClient.uploadObject(uploadObjectArgs); return true; } catch (Exception e) { log.error("minio upload object file error " + e.getMessage()); return false; } } /** * @æè¿° è·åæ¡¶ä¸ææå¯¹è±¡ * @åæ° [bucketName] * @è¿åå¼ java.lang.Iterable<io.minio.Result < io.minio.messages.Item>> * @å建人 åèä¹ * @å建æ¶é´ 2023/2/6 10:32 * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public Iterable<Result<Item>> getObjectsByBucket(String bucketName) { Iterable<Result<Item>> listObjects = minioClient.listObjects(ListObjectsArgs.builder() .bucket(bucketName) .recursive(true) .build()); return listObjects; } /** * @æè¿° è·åæ¡¶ä¸ææå¯¹è±¡ * @åæ° [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; } } src/main/java/com/ard/utils/mqtt/MqttConsumer.java
@@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils; 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.core.annotation.Order; @@ -23,13 +24,29 @@ @Slf4j(topic = "mqtt") @Order(1) public class MqttConsumer implements ApplicationRunner { @Value("${spring.mqtt.enabled}") private Boolean MQTT_ENABLED; @Value("${spring.mqtt.topic}") private String MQTT_TOPIC; @Value("${spring.mqtt.host}") private String MQTT_HOST; @Value("${spring.mqtt.clientId}") private String MQTT_CLIENT_ID; @Value("${spring.mqtt.username}") private String MQTT_USER_NAME; @Value("${spring.mqtt.password}") private String MQTT_PASSWORD; @Value("${spring.mqtt.timeout}") private int MQTT_TIMEOUT; @Value("${spring.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(); } } @@ -43,7 +60,7 @@ getClient(); // 2 设置é ç½® MqttConnectOptions options = getOptions(); String[] topic = PropertiesUtil.MQTT_TOPIC.split(","); String[] topic = MQTT_TOPIC.split(","); // 3 æ¶æ¯åå¸è´¨é int[] qos = getQos(topic.length); // 4 æå设置 @@ -59,7 +76,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) { @@ -73,12 +90,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é 置对象"); src/main/java/com/ard/utils/mqtt/MqttConsumerCallback.java
@@ -81,10 +81,10 @@ if (null != topic && null != qos) { if (client.isConnected()) { client.subscribe(topic, qos); log.debug("mqttè¿æ¥æåï¼å®¢æ·ç«¯IDï¼" + PropertiesUtil.MQTT_CLIENT_ID); log.debug("mqttè¿æ¥æå"); log.debug("--订é 主é¢:ï¼" + Arrays.toString(topic)); } else { log.debug("mqttè¿æ¥å¤±è´¥ï¼å®¢æ·ç«¯IDï¼" + PropertiesUtil.MQTT_CLIENT_ID); log.debug("mqttè¿æ¥å¤±è´¥"); } } } catch (Exception e) { src/main/java/com/ard/utils/mqtt/PropertiesUtil.java
ÎļþÒÑɾ³ý src/main/java/com/ard/utils/other/SpringTool.java
ÎļþÒÑɾ³ý src/main/java/com/ard/utils/other/StringUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,577 @@ package com.ard.utils.other; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.springframework.util.AntPathMatcher; /** * åç¬¦ä¸²å·¥å ·ç±» * * @author ruoyi */ public class StringUtils extends org.apache.commons.lang3.StringUtils { /** 空å符串 */ private static final String NULLSTR = ""; /** ä¸å线 */ private static final char SEPARATOR = '_'; /** * è·ååæ°ä¸ä¸ºç©ºå¼ * * @param value defaultValue è¦å¤æçvalue * @return value è¿åå¼ */ public static <T> T nvl(T value, T defaultValue) { return value != null ? value : defaultValue; } /** * * 夿ä¸ä¸ªCollectionæ¯å¦ä¸ºç©ºï¼ å å«Listï¼Setï¼Queue * * @param coll è¦å¤æçCollection * @return trueï¼ä¸ºç©º falseï¼é空 */ public static boolean isEmpty(Collection<?> coll) { return isNull(coll) || coll.isEmpty(); } /** * * 夿ä¸ä¸ªCollectionæ¯å¦é空ï¼å å«Listï¼Setï¼Queue * * @param coll è¦å¤æçCollection * @return trueï¼é空 falseï¼ç©º */ public static boolean isNotEmpty(Collection<?> coll) { return !isEmpty(coll); } /** * * 夿ä¸ä¸ªå¯¹è±¡æ°ç»æ¯å¦ä¸ºç©º * * @param objects è¦å¤æç对象æ°ç» ** @return trueï¼ä¸ºç©º falseï¼é空 */ public static boolean isEmpty(Object[] objects) { return isNull(objects) || (objects.length == 0); } /** * * 夿ä¸ä¸ªå¯¹è±¡æ°ç»æ¯å¦é空 * * @param objects è¦å¤æç对象æ°ç» * @return trueï¼é空 falseï¼ç©º */ public static boolean isNotEmpty(Object[] objects) { return !isEmpty(objects); } /** * * 夿ä¸ä¸ªMapæ¯å¦ä¸ºç©º * * @param map è¦å¤æçMap * @return trueï¼ä¸ºç©º falseï¼é空 */ public static boolean isEmpty(Map<?, ?> map) { return isNull(map) || map.isEmpty(); } /** * * 夿ä¸ä¸ªMapæ¯å¦ä¸ºç©º * * @param map è¦å¤æçMap * @return trueï¼é空 falseï¼ç©º */ public static boolean isNotEmpty(Map<?, ?> map) { return !isEmpty(map); } /** * * 夿ä¸ä¸ªå符串æ¯å¦ä¸ºç©ºä¸² * * @param str String * @return trueï¼ä¸ºç©º falseï¼é空 */ public static boolean isEmpty(String str) { return isNull(str) || NULLSTR.equals(str.trim()); } /** * * 夿ä¸ä¸ªå符串æ¯å¦ä¸ºé空串 * * @param str String * @return trueï¼é空串 falseï¼ç©ºä¸² */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦ä¸ºç©º * * @param object Object * @return trueï¼ä¸ºç©º falseï¼é空 */ public static boolean isNull(Object object) { return object == null; } /** * * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦é空 * * @param object Object * @return trueï¼é空 falseï¼ç©º */ public static boolean isNotNull(Object object) { return !isNull(object); } /** * * 夿ä¸ä¸ªå¯¹è±¡æ¯å¦æ¯æ°ç»ç±»åï¼Javaåºæ¬åå«çæ°ç»ï¼ * * @param object 对象 * @return trueï¼æ¯æ°ç» falseï¼ä¸æ¯æ°ç» */ public static boolean isArray(Object object) { return isNotNull(object) && object.getClass().isArray(); } /** * å»ç©ºæ ¼ */ public static String trim(String str) { return (str == null ? "" : str.trim()); } /** * æªåå符串 * * @param str å符串 * @param start å¼å§ * @return ç»æ */ public static String substring(final String str, int start) { if (str == null) { return NULLSTR; } if (start < 0) { start = str.length() + start; } if (start < 0) { start = 0; } if (start > str.length()) { return NULLSTR; } return str.substring(start); } /** * æªåå符串 * * @param str å符串 * @param start å¼å§ * @param end ç»æ * @return ç»æ */ public static String substring(final String str, int start, int end) { if (str == null) { return NULLSTR; } if (end < 0) { end = str.length() + end; } if (start < 0) { start = str.length() + start; } if (end > str.length()) { end = str.length(); } if (start > end) { return NULLSTR; } if (start < 0) { start = 0; } if (end < 0) { end = 0; } return str.substring(start, end); } /** * å符串转set * * @param str å符串 * @param sep åé符 * @return setéå */ public static final Set<String> str2Set(String str, String sep) { return new HashSet<String>(str2List(str, sep, true, false)); } /** * å符串转list * * @param str å符串 * @param sep åé符 * @param filterBlank è¿æ»¤çº¯ç©ºç½ * @param trim 廿é¦å°¾ç©ºç½ * @return listéå */ public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) { List<String> list = new ArrayList<String>(); if (StringUtils.isEmpty(str)) { return list; } // è¿æ»¤ç©ºç½å符串 if (filterBlank && StringUtils.isBlank(str)) { return list; } String[] split = str.split(sep); for (String string : split) { if (filterBlank && StringUtils.isBlank(string)) { continue; } if (trim) { string = string.trim(); } list.add(string); } return list; } /** * 夿ç»å®çsetåè¡¨ä¸æ¯å¦å 嫿°ç»array 夿ç»å®çæ°ç»array䏿¯å¦å å«ç»å®çå ç´ value * * * @param array ç»å®çæ°ç» * @return boolean ç»æ */ public static boolean containsAny(Collection<String> collection, String... array) { if (isEmpty(collection) || isEmpty(array)) { return false; } else { for (String str : array) { if (collection.contains(str)) { return true; } } return false; } } /** * æ¥æ¾æå®å符串æ¯å¦å 嫿å®å符串å表ä¸çä»»æä¸ä¸ªåç¬¦ä¸²åæ¶ä¸²å¿½ç¥å¤§å°å * * @param cs æå®å符串 * @param searchCharSequences éè¦æ£æ¥çå符串æ°ç» * @return æ¯å¦å å«ä»»æä¸ä¸ªå符串 */ public static boolean containsAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences) { if (isEmpty(cs) || isEmpty(searchCharSequences)) { return false; } for (CharSequence testStr : searchCharSequences) { if (containsIgnoreCase(cs, testStr)) { return true; } } return false; } /** * 驼峰转ä¸å线å½å */ public static String toUnderScoreCase(String str) { if (str == null) { return null; } StringBuilder sb = new StringBuilder(); // åç½®å符æ¯å¦å¤§å boolean preCharIsUpperCase = true; // å½åå符æ¯å¦å¤§å boolean curreCharIsUpperCase = true; // ä¸ä¸å符æ¯å¦å¤§å boolean nexteCharIsUpperCase = true; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (i > 0) { preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); } else { preCharIsUpperCase = false; } curreCharIsUpperCase = Character.isUpperCase(c); if (i < (str.length() - 1)) { nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); } if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { sb.append(SEPARATOR); } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { sb.append(SEPARATOR); } sb.append(Character.toLowerCase(c)); } return sb.toString(); } /** * æ¯å¦å å«å符串 * * @param str éªè¯å符串 * @param strs åç¬¦ä¸²ç» * @return å å«è¿åtrue */ public static boolean inStringIgnoreCase(String str, String... strs) { if (str != null && strs != null) { for (String s : strs) { if (str.equalsIgnoreCase(trim(s))) { return true; } } } return false; } /** * å°ä¸åçº¿å¤§åæ¹å¼å½åçå符串转æ¢ä¸ºé©¼å³°å¼ãå¦æè½¬æ¢åçä¸åçº¿å¤§åæ¹å¼å½åçå符串为空ï¼åè¿å空å符串ã ä¾å¦ï¼HELLO_WORLD->HelloWorld * * @param name 转æ¢åçä¸åçº¿å¤§åæ¹å¼å½åçå符串 * @return 转æ¢åç驼峰å¼å½åçå符串 */ public static String convertToCamelCase(String name) { StringBuilder result = new StringBuilder(); // å¿«éæ£æ¥ if (name == null || name.isEmpty()) { // æ²¡å¿ è¦è½¬æ¢ return ""; } else if (!name.contains("_")) { // ä¸å«ä¸å线ï¼ä» å°é¦åæ¯å¤§å return name.substring(0, 1).toUpperCase() + name.substring(1); } // ç¨ä¸å线å°åå§å符串åå² String[] camels = name.split("_"); for (String camel : camels) { // è·³è¿åå§å符串ä¸å¼å¤´ãç»å°¾ç䏿¢çº¿æåéä¸å线 if (camel.isEmpty()) { continue; } // é¦åæ¯å¤§å result.append(camel.substring(0, 1).toUpperCase()); result.append(camel.substring(1).toLowerCase()); } return result.toString(); } /** * 驼峰å¼å½åæ³ ä¾å¦ï¼user_name->userName */ public static String toCamelCase(String s) { if (s == null) { return null; } s = s.toLowerCase(); StringBuilder sb = new StringBuilder(s.length()); boolean upperCase = false; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == SEPARATOR) { upperCase = true; } else if (upperCase) { sb.append(Character.toUpperCase(c)); upperCase = false; } else { sb.append(c); } } return sb.toString(); } /** * æ¥æ¾æå®å符串æ¯å¦å¹é æå®å符串å表ä¸çä»»æä¸ä¸ªå符串 * * @param str æå®å符串 * @param strs éè¦æ£æ¥çå符串æ°ç» * @return æ¯å¦å¹é */ public static boolean matches(String str, List<String> strs) { if (isEmpty(str) || isEmpty(strs)) { return false; } for (String pattern : strs) { if (isMatch(pattern, str)) { return true; } } return false; } /** * 夿urlæ¯å¦ä¸è§åé ç½®: * ? 表示å个å符; * * 表示ä¸å±è·¯å¾å çä»»æå符串ï¼ä¸å¯è·¨å±çº§; * ** 表示任æå±è·¯å¾; * * @param pattern å¹é è§å * @param url éè¦å¹é çurl * @return */ public static boolean isMatch(String pattern, String url) { AntPathMatcher matcher = new AntPathMatcher(); return matcher.match(pattern, url); } @SuppressWarnings("unchecked") public static <T> T cast(Object obj) { return (T) obj; } /** * æ°å左边补é½0ï¼ä½¿ä¹è¾¾å°æå®é¿åº¦ã注æï¼å¦ææ°å转æ¢ä¸ºå符串åï¼é¿åº¦å¤§äºsizeï¼ååªä¿ç æåsize个å符ã * * @param num æ°å对象 * @param size å符串æå®é¿åº¦ * @return è¿åæ°åçåç¬¦ä¸²æ ¼å¼ï¼è¯¥å符串为æå®é¿åº¦ã */ public static final String padl(final Number num, final int size) { return padl(num.toString(), size, '0'); } /** * å符串左补é½ã妿åå§å符串sé¿åº¦å¤§äºsizeï¼ååªä¿çæåsize个å符ã * * @param s åå§å符串 * @param size å符串æå®é¿åº¦ * @param c ç¨äºè¡¥é½çå符 * @return è¿åæå®é¿åº¦çå符串ï¼ç±ååç¬¦ä¸²å·¦è¡¥é½ææªåå¾å°ã */ public static final String padl(final String s, final int size, final char c) { final StringBuilder sb = new StringBuilder(size); if (s != null) { final int len = s.length(); if (s.length() <= size) { for (int i = size - len; i > 0; i--) { sb.append(c); } sb.append(s); } else { return s.substring(len - size, len); } } else { for (int i = size; i > 0; i--) { sb.append(c); } } return sb.toString(); } } src/main/java/com/ard/utils/spring/SpringUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,158 @@ package com.ard.utils.spring; import com.ard.utils.other.StringUtils; 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; /** * springå·¥å ·ç±» æ¹ä¾¿å¨éspring管çç¯å¢ä¸è·åbean * * @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); } /** * è·åç±»å为requiredTypeç对象 * * @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å®ä¹æ¯ä¸ä¸ªsingletonè¿æ¯ä¸ä¸ªprototypeã 妿ä¸ç»å®ååç¸åºç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); } /** * 妿ç»å®çbeanååå¨beanå®ä¹ä¸æå«åï¼åè¿åè¿äºå«å * * @param name * @return * @throws NoSuchBeanDefinitionException * */ public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return beanFactory.getAliases(name); } /** * è·åaop代ç对象 * * @param invoker * @return */ @SuppressWarnings("unchecked") public static <T> T getAopProxy(T invoker) { return (T) AopContext.currentProxy(); } /** * è·åå½åçç¯å¢é ç½®ï¼æ é ç½®è¿ånull * * @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 é ç½®æä»¶çkey * @return å½åçé ç½®æä»¶çå¼ * */ public static String getRequiredProperty(String key) { return applicationContext.getEnvironment().getRequiredProperty(key); } } src/main/java/com/ard/utils/udp/NettyUdpHandler.java
@@ -1,7 +1,7 @@ package com.ard.utils.udp; import com.ard.alarm.tube.service.TubeAlarmService; import com.ard.utils.other.SpringTool; import com.ard.utils.spring.SpringUtils; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelHandlerContext; @@ -20,7 +20,7 @@ ByteBuf byteBuf = packet.content(); String str = byteBuf.toString(Charset.forName("GBK")); log.info("udpæ¶å°æ°æ®: " + str); TubeAlarmService tubeAlarmService = (TubeAlarmService) SpringTool.getApplicationContext().getBean("tubeAlarmService"); TubeAlarmService tubeAlarmService = SpringUtils.getBean(TubeAlarmService.class); tubeAlarmService.alarmHandler(str); String resStr = "ok"; byte[] resBytes = resStr.getBytes(Charset.forName("GBK")); src/main/resources/application-dev.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ # å¼åç¯å¢ server: port: 8088 # springé ç½® spring: servlet: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB datasource: # 使ç¨druidæ°æ®åºè¿æ¥æ± druid: #å¼å¯druidçæ§web stat-view-servlet: enabled: true driver-class-name: org.postgresql.Driver url: jdbc:postgresql://192.168.1.15:5432/ry-vue?stringtype=unspecified username: postgres password: postgres #æå¤§è¿æ¥æ° maxActive: 30 #æå°è¿æ¥æ° minIdle: 5 #è·åè¿æ¥çæå¤§çå¾ æ¶é´ maxWait: 10000 #è§£å³mysql8å°æ¶çé®é¢ validation-query: SELECT 'X' #空é²è¿æ¥çæ£æ¥æ¶é´é´é timeBetweenEvictionRunsMillis: 60000 #空é²è¿æ¥æå°ç©ºé²æ¶é´ minEvictableIdleTimeMillis: 300000 # nettyé ç½® netty: udp: port: 40000 enabled: true tcp: enabled: true # mqtté ç½® mqtt: host: tcp://192.168.1.15:1883 clientId: cc3 username: admin password: xzx12345 topic: tube timeout: 100 keepalive: 60 enabled: true # ççµæ¥å£å°å stealelec: url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil # minioé ç½® minio: endpoint: http://192.168.1.15:9001 accessKey: admin secretKey: xzx12345 # mybatisé ç½® mybatis: typeAliasesPackage: com.ard.alarm.**.domain mapperLocations: classpath:/mapper/*.xml # æ¥å¿ç级é ç½® logging: level: hikSdk: debug mqtt: info netty: info external: info camera: info tube: info src/main/resources/application-prod.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ #ç产ç¯å¢ spring: servlet: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB datasource: # 使ç¨druidæ°æ®åºè¿æ¥æ± druid: #å¼å¯druidçæ§web stat-view-servlet: enabled: true driver-class-name: org.postgresql.Driver url: jdbc:postgresql://112.98.126.2:35432/ry-vue?stringtype=unspecified username: postgres password: Yykj.2017 #æå¤§è¿æ¥æ° maxActive: 30 #æå°è¿æ¥æ° minIdle: 5 #è·åè¿æ¥çæå¤§çå¾ æ¶é´ maxWait: 10000 #è§£å³mysql8å°æ¶çé®é¢ validation-query: SELECT 'X' #空é²è¿æ¥çæ£æ¥æ¶é´é´é timeBetweenEvictionRunsMillis: 60000 #空é²è¿æ¥æå°ç©ºé²æ¶é´ minEvictableIdleTimeMillis: 300000 # nettyé ç½® netty: udp: port: 40000 enabled: true tcp: enabled: true # minioé ç½® minio: endpoint: http://127.0.0.1:9001 accessKey: admin secretKey: xzx12345 # mqtté ç½® mqtt: host: tcp://192.168.1.15:1883 clientId: cc3 username: admin password: xzx12345 topic: tube timeout: 100 keepalive: 60 enabled: true stealelec: url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil mybatis: typeAliasesPackage: com.ard.alarm.**.domain mapperLocations: classpath:/mapper/*.xml server: port: 8088 logging: level: hikSdk: debug mqtt: info netty: info external: info camera: info tube: info src/main/resources/application.yml
@@ -1,61 +1,4 @@ spring: servlet: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB datasource: # 使ç¨druidæ°æ®åºè¿æ¥æ± druid: #å¼å¯druidçæ§web stat-view-servlet: enabled: true driver-class-name: 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 #æå¤§è¿æ¥æ° maxActive: 30 #æå°è¿æ¥æ° minIdle: 5 #è·åè¿æ¥çæå¤§çå¾ æ¶é´ maxWait: 10000 #è§£å³mysql8å°æ¶çé®é¢ validation-query: SELECT 'X' #空é²è¿æ¥çæ£æ¥æ¶é´é´é timeBetweenEvictionRunsMillis: 60000 #空é²è¿æ¥æå°ç©ºé²æ¶é´ minEvictableIdleTimeMillis: 300000 netty: udp: port: 40000 enabled: true tcp: enabled: true mqtt: host: tcp://192.168.1.15:1883 clientId: cc3 username: admin password: xzx12345 topic: tube timeout: 100 keepalive: 60 enabled: true stealelec: url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil mybatis: typeAliasesPackage: com.ard.alarm.**.domain mapperLocations: classpath:/mapper/*.xml # minioé ç½® minio: endpoint: http://192.168.1.15:9001 accessKey: admin secretKey: xzx12345 server: port: 8088 logging: level: com.ard.utils.hiksdk.service.impl.FMSGCallBack: debug profiles: active: prod