| sandu-common/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinIoPolicy.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinioPolicyStatement.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinioPolicyStatementPrincipal.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| sandu-common/src/main/java/com/sandu/common/file/impl/AliOssFileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/controller/localMQTTTestController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
sandu-common/pom.xml
@@ -179,5 +179,13 @@ <artifactId>ffmpeg-platform</artifactId> <version>4.0.2-1.4.3</version> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> <scope>compile</scope> </dependency> </dependencies> </project> sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinIoPolicy.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ package com.sandu.common.file.config.minioConfig; import com.google.gson.Gson; import lombok.Data; import java.util.ArrayList; import java.util.List; @Data public class MinIoPolicy { private String Version; private List<MinioPolicyStatement> Statement; /** * çæ * éè¡çç¥ * @return */ public static String generateMinioPolicy (String bucketName) { MinIoPolicy policy = new MinIoPolicy(); policy.setVersion("2012-10-17"); List<MinioPolicyStatement> minioPolicyStatements = new ArrayList<>(); MinioPolicyStatement statement = new MinioPolicyStatement(); statement.setEffect("Allow"); MinioPolicyStatementPrincipal policyStatementPrincipal = new MinioPolicyStatementPrincipal(); List<String> aws = new ArrayList<>(); aws.add("*"); policyStatementPrincipal.setAWS(aws); statement.setPrincipal(policyStatementPrincipal); List<String> action = new ArrayList<>(); action.add("s3:GetBucketLocation"); action.add("s3:ListBucket"); statement.setAction(action); List<String> resources = new ArrayList<>(); resources.add("arn:aws:s3:::"+bucketName); statement.setResource(resources); MinioPolicyStatement statement2 = new MinioPolicyStatement(); statement2.setEffect("Allow"); statement2.setPrincipal(policyStatementPrincipal); action = new ArrayList<>(); action.add("s3:GetObject"); statement2.setAction(action); resources = new ArrayList<>(); resources.add("arn:aws:s3:::"+bucketName+"/*"); statement2.setResource(resources); minioPolicyStatements.add(statement); minioPolicyStatements.add(statement2); policy.setStatement(minioPolicyStatements); return new Gson().toJson(policy); } } sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinioPolicyStatement.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.sandu.common.file.config.minioConfig; import lombok.Data; import java.util.List; @Data public class MinioPolicyStatement { private String Effect; private MinioPolicyStatementPrincipal Principal; private List<String> Action; private List<String> Resource; } sandu-common/src/main/java/com/sandu/common/file/config/minioConfig/MinioPolicyStatementPrincipal.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.sandu.common.file.config.minioConfig; import lombok.Data; import java.util.List; @Data public class MinioPolicyStatementPrincipal { private List<String> AWS; } sandu-common/src/main/java/com/sandu/common/file/impl/AliOssFileServiceImpl.java
@@ -2,31 +2,28 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.CannedAccessControlList; import com.aliyun.oss.model.CreateBucketRequest; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import com.sandu.common.enums.FileStorageEnums; import com.sandu.common.execption.BusinessException; import com.sandu.common.file.FileUploadDto; import com.sandu.common.file.IFileUpload; import com.sandu.common.file.config.minioConfig.MinIoPolicy; import io.minio.*; import io.minio.messages.Bucket; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; /** * @author chenjiantian @@ -36,16 +33,12 @@ @Component public class AliOssFileServiceImpl implements IFileUpload { @Value("${oss-conf.end-point}") private String endPoint; @Value("${oss-conf.key-id}") private String keyId; @Value("${oss-conf.key-secret}") private String keySecret; @Value("${oss-conf.bucket-name}") private String bucketName; @Autowired private MinioClient minioClient; private String host; private String bucketName = "remote-update"; public String MINIO_PREFIX = "vnnox."; @Override public FileUploadDto uploadFile(MultipartFile multipartFile) { @@ -57,41 +50,29 @@ String md5 = getMD5(multipartFile); FileUploadDto uploadDto = new FileUploadDto(); OSS ossClient = new OSSClientBuilder().build(endPoint, keyId, keySecret); try { //容å¨ä¸åå¨ï¼å°±å建 if (!ossClient.doesBucketExist(bucketName)) { ossClient.createBucket(bucketName); CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); ossClient.createBucket(createBucketRequest); } //ä¸ä¼ æä»¶ PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileName, new ByteArrayInputStream(multipartFile.getBytes()))); //设置æé è¿éæ¯å ¬å¼è¯» // ossClient.setBucketAcl(ossProperties.getBucketName(), CannedAccessControlList.PublicRead); if (result != null) { String url = ""; // https://BucketName.Endpoint/ObjectName if (StrUtil.isBlank(host)) { url = "https://" + bucketName + "." + endPoint + "/" + fileName; } else { if (!host.endsWith("/")) { url = host + "/" + fileName; } else { url = host + fileName; } if (!bucketExists(bucketName)) { createBucket(bucketName); if (bucketName.contains(MINIO_PREFIX)) { setBucketPolicy(bucketName); } uploadDto.setFileUrl(url); } final InputStream is = multipartFile.getInputStream(); Long start = System.currentTimeMillis(); minioClient.putObject(bucketName, fileName, is, new PutObjectOptions(is.available(), -1)); is.close(); System.out.println(("ä¸ä¼ æ»æ¶é´ï¼" + (System.currentTimeMillis() - start) + "ms")); // ä»minioè·å url String url = minioClient.presignedGetObject(bucketName, fileName); System.out.println("è·åå°çè·¯å¾ï¼"+url); uploadDto.setFileUrl(url); } catch (Exception e) { log.error(e.getMessage(), e); throw new BusinessException(e.getMessage()); } finally { //å ³é ossClient.shutdown(); } uploadDto.setOriginName(originalFilename); @@ -117,57 +98,6 @@ return uploadDto; } public FileUploadDto uploadFile(File multipartFile) { String originalFilename = multipartFile.getName(); // long size = multipartFile.get(); String suffix = FileUtil.getSuffix(originalFilename); String dayStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")); String fileName = dayStr + UUID.fastUUID() + "." + suffix; FileUploadDto uploadDto = new FileUploadDto(); OSS ossClient = new OSSClientBuilder().build(endPoint, keyId, keySecret); try { //容å¨ä¸åå¨ï¼å°±å建 if (!ossClient.doesBucketExist(bucketName)) { ossClient.createBucket(bucketName); CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); ossClient.createBucket(createBucketRequest); } //ä¸ä¼ æä»¶ PutObjectResult result = ossClient.putObject(new PutObjectRequest(bucketName, fileName, multipartFile)); //设置æé è¿éæ¯å ¬å¼è¯» // ossClient.setBucketAcl(ossProperties.getBucketName(), CannedAccessControlList.PublicRead); if (result != null) { String url = ""; // https://BucketName.Endpoint/ObjectName if (StrUtil.isBlank(host)) { url = "https://" + bucketName + "." + endPoint + "/" + fileName; } else { if (!host.endsWith("/")) { url = host + "/" + fileName; } else { url = host + fileName; } } uploadDto.setFileUrl(url); } } catch (Exception e) { log.error(e.getMessage(), e); throw new BusinessException(e.getMessage()); } finally { //å ³é ossClient.shutdown(); } uploadDto.setOriginName(originalFilename); uploadDto.setFileName(fileName); uploadDto.setFileType(FileUtil.extName(originalFilename)); uploadDto.setStorageType(FileStorageEnums.ALIBABA.getCode()); return uploadDto; } /** * è·åä¸ä¼ æä»¶çMD5å¼ @@ -191,4 +121,64 @@ return null; } /** * è®¾ç½®å¼æ¾*çæ¡¶çç¥ * * @param bucketName * @return */ public void setBucketPolicy(String bucketName) throws Exception { minioClient.setBucketPolicy( SetBucketPolicyArgs.builder().bucket(bucketName).config(MinIoPolicy.generateMinioPolicy(bucketName)).build() ); } /** * 夿 bucketæ¯å¦åå¨ * * @param bucketName: æ¡¶å * @return: boolean */ @SneakyThrows(Exception.class) public boolean bucketExists(String bucketName) { return minioClient.bucketExists(bucketName); } public boolean objectExists(String bucketName, String objectName) { try { getObjectInfo(bucketName, objectName); } catch (Exception e) { return false; } return true; } private void getObjectInfo(String bucketName, String objectName) { } /** * å建 bucket * * @param bucketName: æ¡¶å * @return: void */ @SneakyThrows(Exception.class) public void createBucket(String bucketName) { boolean isExist = minioClient.bucketExists((BucketExistsArgs) ((io.minio.BucketExistsArgs.Builder) BucketExistsArgs.builder().bucket(bucketName)).build()); if (!isExist) { minioClient.makeBucket((MakeBucketArgs) ((io.minio.MakeBucketArgs.Builder) MakeBucketArgs.builder().bucket(bucketName)).build()); } } /** * è·åå ¨é¨bucket */ @SneakyThrows(Exception.class) public List<Bucket> getAllBuckets() { return minioClient.listBuckets(); } } ximon-admin/src/main/java/com/sandu/ximon/admin/localMQTT/controller/localMQTTTestController.java
@@ -44,25 +44,25 @@ String result1 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", "FEA501000BFE010003FFFF0AA542FD69D4E6194E"); log.info("å¼ç¯è¿åç»æ:"+result1); sleep(3000); sleep(5000); // å ³ String result2 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", "FEA501000BFE0100030001007130ECA9150640E6"); log.info("å ³ç¯è¿åç»æ:"+result2); sleep(3000); sleep(5000); //// å¿è·³æ¥è¯¢ // String result3 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", // "FEA501000AFE110002FFFF26008FBE3DAC7C0D"); // log.info("å¿è·³æ¥è¯¢è¿åç»æ:"+result3); // sleep(3000); // String result4 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", // "FEA501001AFE230012FE23000A00017F1019647F111E005428F600EC64EC194EA28A7C"); // log.info("宿¶ä»»å¡è¿åç»æ:"+result4); // sleep(3000); String result3 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", "FEA501000AFE110002FFFF26008FBE3DAC7C0D"); log.info("å¿è·³æ¥è¯¢è¿åç»æ:"+result3); sleep(3000); String result4 = MqttClientUtil.sendMqttMsg("363832544e5008ff3a32ffff", "FEA501001AFE230012FE23000A00017F1019647F111E005428F600EC64EC194EA28A7C"); log.info("宿¶ä»»å¡è¿åç»æ:"+result4); sleep(3000); // System.out.println("龿¥ç¶æï¼---"+i+"---:"); // System.out.println(localMqttConnectStatusMap.get("363832544e5008ff3a32ffff")); // sleep(10000); System.out.println("龿¥ç¶æï¼---"+i+"---:"); System.out.println(localMqttConnectStatusMap.get("363832544e5008ff3a32ffff")); sleep(3000); } ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
@@ -7,6 +7,7 @@ import com.aliyuncs.iot.model.v20180120.*; import com.sandu.common.execption.BusinessException; import com.sandu.ximon.admin.dto.DeviceStatus; import com.sandu.ximon.admin.localMQTT.util.HexFrameUtils; import com.sandu.ximon.admin.localMQTT.util.MqttClientUtil; import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame; import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame; @@ -68,7 +69,7 @@ // Map map = JSON.parseObject(result, Map.class); // result = (String) map.get("msg"); String result = MqttClientUtil.sendMqttMsg(deviceName,invokeParam.getFrame()); return FrameUtils.transformMessageToFrame(result); return HexFrameUtils.transformMessageToFrame(result); } @Override @@ -87,7 +88,7 @@ String frame = FrameUtils.transformMessageToFrame(iRequestFrame.getEncodeFrame()).toString(); String result = MqttClientUtil.sendMqttMsg(deviceName,frame); log.info("èªå®ä¹sendRRPC:请æ±å¸§ï¼{},\n,ååºå¸§:{}",iRequestFrame.toString(),result); return FrameUtils.transformMessageToFrame(result); return HexFrameUtils.transformMessageToFrame(result); } @Override @@ -105,7 +106,7 @@ // result = (String) map.get("msg"); String frame = FrameUtils.transformMessageToFrame(iRequestFrame.getEncodeFrame()).toString(); String result = MqttClientUtil.sendMqttMsg(deviceName,frame); return FrameUtils.transformMessageToFrame(result); return HexFrameUtils.transformMessageToFrame(result); } @@ -195,10 +196,10 @@ deviceStatus.setDeviceName(l); if (localMqttConnectStatusMap.get(l)!=null && localMqttConnectStatusMap.get(l)== 1){ deviceStatus.setStatus("ONLINE"); }else { localMqttConnectStatusMap.get(l)== 0){ deviceStatus.setStatus("OFFLINE"); }else { deviceStatus.setStatus("ONLINE"); } statusList.add(deviceStatus); }); ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java
@@ -1013,9 +1013,7 @@ A5Frame a5Frame = new A5Frame(A5OrderEnum.REQUEST_LIGHT_DATA.getCode(), setCalendarReqInnerFrame); System.out.println(a5Frame + " -----a5Frame"); CommonFrame commonFrame; commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(one.getDeviceCode(), a5Frame); CommonFrame commonFrame = MainBoardInvokeSyncService.getInstance().sendRRPC(one.getDeviceCode(), a5Frame); StoreOperationRecordsUtils.storeInnerFrameData(one.getDeviceCode(), "åç¯å¸§-设置æ¥å", a5Frame, commonFrame); System.out.println(commonFrame + " -----commonFrame"); @@ -1096,14 +1094,15 @@ count++; } if (haveTime) { try { long longTime = cal.getTimeInMillis() - System.currentTimeMillis(); log.error("ç¡ç æ¶é´ï¼æ¯«ç§ï¼ï¼" + longTime); Thread.sleep(longTime); SetCalendar(light.getLightId(), lightAddress); } catch (InterruptedException e) { e.printStackTrace(); } log.error("åå¨å®æ¶ä»»å¡ï¼" + light.getLightId()+","+light.getDeviceCode()); // try { // long longTime = cal.getTimeInMillis() - System.currentTimeMillis(); // log.error("ç¡ç æ¶é´ï¼æ¯«ç§ï¼ï¼" + longTime); // Thread.sleep(longTime); // SetCalendar(light.getLightId(), lightAddress); // } catch (InterruptedException e) { // e.printStackTrace(); // } } else { log.error("ç¯æID为ï¼" + light.getLightId() + "ï¼ç¯å¤´å°å为ï¼" + lightAddress + "æ²¡ææ¾å°å¯åæ¥çæ¶é´ï¼è¯·æ£æ¥ä»»å¡ï¼"); }