From 229bc82734b718d4817e0971167a3830c56fa885 Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Sat, 30 Nov 2024 13:25:50 +0800
Subject: [PATCH] 白蚁新模块。图片上传接口。更新11-30 13:00

---
 skjcmanager/skjcmanager-service/skjcmanager-by/src/main/java/cn/gistack/by/nettyUpload/HttpUploadFileHandler.java |  185 ++++++++++++++++++++++++++++-----------------
 1 files changed, 114 insertions(+), 71 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-by/src/main/java/cn/gistack/by/nettyUpload/HttpUploadFileHandler.java b/skjcmanager/skjcmanager-service/skjcmanager-by/src/main/java/cn/gistack/by/nettyUpload/HttpUploadFileHandler.java
index e3ebda8..32f5896 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-by/src/main/java/cn/gistack/by/nettyUpload/HttpUploadFileHandler.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-by/src/main/java/cn/gistack/by/nettyUpload/HttpUploadFileHandler.java
@@ -7,6 +7,7 @@
 import cn.gistack.by.nettyUpload.utils.UriUtils;
 import cn.gistack.by.nettyUpload.utils.ExceptionUtils;
 import cn.gistack.by.picUpload.entity.BaiyiPicEntity;
+import cn.gistack.by.picUpload.entity.XfByPic;
 import cn.gistack.by.picUpload.service.BaiyiPicService;
 import cn.gistack.resource.feign.IOssClient;
 import cn.hutool.core.date.DateUtil;
@@ -17,8 +18,7 @@
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.SimpleChannelInboundHandler;
 import io.netty.handler.codec.http.*;
-import io.netty.handler.codec.http.multipart.DiskAttribute;
-import io.netty.handler.codec.http.multipart.DiskFileUpload;
+import io.netty.handler.codec.http.multipart.*;
 import io.netty.util.CharsetUtil;
 import lombok.extern.slf4j.Slf4j;
 
@@ -27,11 +27,12 @@
 import java.net.URISyntaxException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
+
 
 import static cn.gistack.by.nettyUpload.utils.ExceptionUtils.getStackString;
 
@@ -42,12 +43,15 @@
  */
 @Slf4j
 public class  HttpUploadFileHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
-    private static final String UPLOAD_FILE_URL = "/postfile";
+
     // http请求中可选参数
     private static final String FILENAME_PARAM = "filename";
     // http请求中必选的参数
     private static final String FILE_EXTNAME_PARAM = "fileextname";
 
+
+	private static final String UPLOAD_DATA_URL = "/termite/syncDeviceState";
+	private static final String UPLOAD_FILE_URL = "/termite/termiteDataup";
     private NettyHttpConfig nettyHttpConfig;
 
 	private BaiyiPicService baiyiPicService;
@@ -78,91 +82,130 @@
 
 
     protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest fullRequest) throws Exception {
-		System.err.println("fullRequest:::"+fullRequest);
-        boolean isRequestValid = isValidHttpRequest(ctx, fullRequest);
-        if (!isRequestValid) {
-            log.warn("Discard invalid request.");
+		// Authorization验证
+		boolean isRequestValid = isValidHttpRequest(ctx, fullRequest);
+		if (!isRequestValid) {
+			HttpResponseUtils.sendResponseJson2(ctx, HttpResponseStatus.BAD_REQUEST, "验证失败",null);
+			return ;
+		}
+		// 请求路径验证
+		String urlyz = urlyz(ctx, fullRequest);
+		if (UPLOAD_FILE_URL.equals(urlyz)) { //传图片
+			HttpPostMultipartRequestDecoder test = new HttpPostMultipartRequestDecoder(fullRequest);
+			List<InterfaceHttpData> bodyHttpDatas = test.getBodyHttpDatas();
+			XfByPic xfByPic = new XfByPic();
 
-			//HttpResponseUtils.sendResponseJson(ctx, HttpResponseStatus.BAD_REQUEST, "验证失败");
-            return;
-        }
+			for (InterfaceHttpData item : bodyHttpDatas ) {
+				if ( item instanceof Attribute){
+					Attribute attribute = (Attribute)item;
+					System.out.println("getName:::"+attribute.getName());
+					System.out.println("getValue:::"+attribute.getValue());
+					String value = attribute.getValue();
+					switch(attribute.getName()){
+						case "mnNo":
+							xfByPic.setMnNo(value);
+							break;
+						case "order":
 
-        // 解析出文件路径
-//        String filePath = parseFilePath(fullRequest);
-//		System.err.println(filePath);
-//        RandomAccessFile file = getSaveFile(filePath);
-//        file.seek(0);
-//        file.write(ByteBufUtil.getBytes(fullRequest.content()));
-//        file.close();
+							xfByPic.setOrder(value);
+							break;
+						case "sn":
+							xfByPic.setSn(value);
+							break;
+						case "ap":
+							xfByPic.setAp(value);
+							break;
+						case "camera":
+							xfByPic.setCamera(value);
+							break;
+						case "hardware":
+							xfByPic.setHardware(value);
+							break;
+						case "rssi":
+							xfByPic.setRssi(value);
+							break;
+						case "software":
+							xfByPic.setSoftware(value);
+							break;
+						case "temperature":
+							xfByPic.setTemperature(value);
+							break;
+						case "voltage":
+							xfByPic.setVoltage(value);
+							break;
+					}
 
-		//String fileName = this.parseFileName(fullRequest);
 
-		String fileName = System.currentTimeMillis()  + ".jpg";
+				} else if (item instanceof FileUpload) {
 
-		ByteArrayInputStream stream = new ByteArrayInputStream(ByteBufUtil.getBytes(fullRequest.content()));
-		MockMultipartFile multipartFile
-			= new MockMultipartFile("11", fileName, "application/octet-stream", stream);
+					FileUpload file = (FileUpload)item;
+					String filename = file.getFilename();
+
+					ByteArrayInputStream stream = new ByteArrayInputStream(ByteBufUtil.getBytes(file.getByteBuf()));
+					MockMultipartFile multipartFile
+						= new MockMultipartFile("11", filename, "application/octet-stream", stream);
+
+					String picurl = iOssClient.uploadFile(filename, multipartFile);
+					log.info("图片上传地址::"+picurl);
+					xfByPic.setImageurl(picurl);
+				}
+			}
+			xfByPic.setCreatedAt(new Date());
+			// 保存入库xfByPic
+			baiyiPicService.inserXfPicUrl(xfByPic);
 
 
 
-        // 上传荆楚水库的文件地址
-//		System.err.println("iOssClient::");
-//		System.err.println(iOssClient.getClass().getName());
-//		System.err.println(iOssClient);
+		} else if(UPLOAD_DATA_URL.equals(urlyz)) { //传数据
+			HttpPostMultipartRequestDecoder test = new HttpPostMultipartRequestDecoder(fullRequest);
+			List<InterfaceHttpData> bodyHttpDatas = test.getBodyHttpDatas();
+			for (InterfaceHttpData item : bodyHttpDatas ) {
+				if (  item instanceof Attribute){
+//					FileUpload file = (FileUpload)item;
+//					String filename = file.getFilename();
+//					ByteArrayInputStream stream = new ByteArrayInputStream(ByteBufUtil.getBytes(file.getByteBuf()));
+//					MockMultipartFile multipartFile
+//						= new MockMultipartFile("11", filename, "application/octet-stream", stream);
+//					String picurl = iOssClient.uploadFile(filename, multipartFile);
+//					log.info("图片上传地址::"+picurl);
 
-		String picurl = iOssClient.uploadFile(fileName, multipartFile);
-//		System.err.println("图片上传地址"+picurl);
-		log.info("图片上传地址::"+picurl);
+				} else if (item instanceof FileUpload) {
+					System.out.println("Attribute:::"+item.getName());
 
-		// 请求参数放入实体中
-		BaiyiPicEntity baiyiPicEntity = parseEntity(fullRequest);
-		baiyiPicEntity.setPicUrl(picurl);
-		baiyiPicEntity.setPicStatus(1);
 
-		//baiyiPicEntity存入数据库
-		baiyiPicService.inserpicData(baiyiPicEntity);
+				}
+			}
 
+		} else {
+			HttpResponseUtils.sendResponseJson2(ctx, HttpResponseStatus.BAD_REQUEST, "验证失败",null);
+			return ;
+		}
 
 		HttpResponseUtils.sendResponseJson(ctx, HttpResponseStatus.OK, "上传成功");
     }
 
-	private BaiyiPicEntity parseEntity(FullHttpRequest fullRequest) throws URISyntaxException {
-		URI uri = UriUtils.getURI(fullRequest);
-		Map<String, String> queryParams = UriUtils.getQueryParams(uri);
+	// 请求路径验证
+	public  String  urlyz(ChannelHandlerContext ctx, FullHttpRequest request) {
+		try {
 
-		String mnNo = queryParams.get("mnNo");
-		String order = queryParams.get("order");
-		String obTime = queryParams.get("obTime");
-		String obDatestr = queryParams.get("obDate");
-		Date obDate = DateUtil.parse(obDatestr, "yyyy-MM-dd HH:mm:ss");
+			URI uri = UriUtils.getURI(request);
+			System.err.println("uri.getPath()::::"+uri.getPath());
+			System.err.println(""+uri.getPath());
 
-		String stationIdstr = queryParams.get("stationId");
-		Integer stationId = Integer.parseInt(stationIdstr);
-
-		String stationName = queryParams.get("stationName");
-		String deviceIdstr = queryParams.get("deviceId");
-		Integer deviceId = Integer.parseInt(deviceIdstr);
-
-		String deviceName = queryParams.get("deviceName");
-		String receiveTypestr = queryParams.get("receiveType");
-		Integer receiveType = Integer.parseInt(receiveTypestr);
-
-		BaiyiPicEntity baiyiPicEntity = new BaiyiPicEntity();
-		baiyiPicEntity.setMnNo(mnNo);
-		baiyiPicEntity.setOrder(order);
-		baiyiPicEntity.setDeviceId(deviceId);
-		baiyiPicEntity.setObTime(obTime);
-		baiyiPicEntity.setObDate(obDate);
-		baiyiPicEntity.setReceiveType(receiveType);
-		baiyiPicEntity.setStationId(stationId);
-		baiyiPicEntity.setStationName(stationName);
-		baiyiPicEntity.setDeviceName(deviceName);
-
-		baiyiPicEntity.setCreatedAt(new Date());
-
-
-		return  baiyiPicEntity;
+			if (uri.getPath().startsWith(UPLOAD_DATA_URL)) {
+				return UPLOAD_DATA_URL;
+			} else if (uri.getPath().startsWith(UPLOAD_FILE_URL)) {
+				return UPLOAD_FILE_URL;
+			}
+		} catch (Exception exception) {
+			exception.printStackTrace();
+			log.error(getStackString(exception));
+			return null;
+		}
+		return null;
 	}
+
+
 
 	public static MultipartFile convert(File file) throws IOException {
 
@@ -193,7 +236,7 @@
     private boolean isValidHttpRequest(ChannelHandlerContext ctx, FullHttpRequest request) {
         try {
             URI uri = UriUtils.getURI(request);
-            log.info(uri.getPath());
+//            log.info(uri.getPath());
 			// authorization效验
 			String authorization = request.headers().get("Authorization");
 			if(!this.nettyHttpConfig.getAuthorization().equals(authorization)) {

--
Gitblit v1.9.3