diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml b/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml
index b8b41d079..960bd5072 100644
--- a/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml
+++ b/esua-epdc/epdc-commons/epdc-commons-tools/pom.xml
@@ -107,6 +107,11 @@
             lombok
             ${lombok.version}
         
+        
+            net.coobird
+            thumbnailator
+            0.4.8
+        
     
 
     
diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/CompressImgUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/CompressImgUtils.java
new file mode 100644
index 000000000..4ed5035c2
--- /dev/null
+++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/CompressImgUtils.java
@@ -0,0 +1,154 @@
+package com.elink.esua.epdc.commons.tools.utils;
+
+import net.coobird.thumbnailator.Thumbnails;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * @Description 压缩图片工具类
+ * @Author yinzuomei
+ * @Date 2020/2/27 15:48
+ */
+public class CompressImgUtils {
+
+	/**
+	 * @param imgUrl
+	 * @return long 字节大小
+	 * @Author yinzuomei
+	 * @Description 获取网络文件大小
+	 * @Date 2020/2/27 15:52
+	 **/
+	public static long getFileLength(String imgUrl) {
+		if (StringUtils.isBlank(imgUrl)) {
+			return 0L;
+		}
+		HttpURLConnection conn = null;
+		try {
+			URL url = new URL(imgUrl);
+			conn = (HttpURLConnection) url.openConnection();
+			conn.setRequestMethod("HEAD");
+			conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows 7; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36 YNoteCef/5.8.0.1 (Windows)");
+			return (long) conn.getContentLength();
+		} catch (IOException e) {
+			e.printStackTrace();
+			return 0L;
+		} finally {
+			conn.disconnect();
+		}
+	}
+
+	/**
+	 * @param imgUrl
+	 * @return byte[]
+	 * @Author yinzuomei
+	 * @Description 根据图片地址压缩图片
+	 * @Date 2020/2/27 16:44
+	 **/
+	public static byte[] compressImg(String imgUrl) {
+		byte[] afterJyBytes = new byte[0];
+		URL url = null;
+		try {
+			url = new URL(imgUrl);
+			System.out.println(url.getFile());
+			DataInputStream dataInputStream = new DataInputStream(url.openStream());
+			byte[] bytes = toByteArray(dataInputStream);
+			afterJyBytes = commpressPicCycle(bytes, 1024, 0.5);
+			// 输出到文件
+			/*File desFile = new File("D:\\testcompressImg\\" + System.currentTimeMillis() + ".jpg");
+			FileOutputStream fos = new FileOutputStream(desFile);
+			fos.write(afterJyBytes);
+			fos.close();*/
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return afterJyBytes;
+	}
+
+	/**
+	 * inputstream输入流转换成byte[]字节数组
+	 *
+	 * @param input
+	 * @return byte[]
+	 * @author yinzuomei
+	 * @date 2020/2/27 16:09
+	 */
+	public static byte[] toByteArray(InputStream input) throws IOException {
+		ByteArrayOutputStream output = new ByteArrayOutputStream();
+		byte[] buffer = new byte[1024 * 4];
+		int n = 0;
+		while (-1 != (n = input.read(buffer))) {
+			output.write(buffer, 0, n);
+		}
+		return output.toByteArray();
+	}
+
+	/**
+	 * 压缩图片返回字节数组
+	 *
+	 * @param bytes       原图片字节数组
+	 * @param desFileSize 指定图片大小,单位 kb
+	 * @param accuracy    精度,递归压缩的比率,建议小于0.9
+	 * @return byte[]
+	 */
+	public static byte[] commpressPicCycle(byte[] bytes, long desFileSize, double accuracy) throws IOException {
+		long fileSize = bytes.length;
+		System.out.println("=====fileSize======== " + fileSize);
+		// 判断图片大小是否小于指定图片大小
+		if (fileSize <= desFileSize * 1024) {
+			return bytes;
+		}
+		//计算宽高
+		BufferedImage bim = ImageIO.read(new ByteArrayInputStream(bytes));
+		int imgWidth = bim.getWidth();
+		int imgHeight = bim.getHeight();
+		System.out.println("宽度imgWidth=" + imgWidth + ";高度imgHeight=" + imgHeight);
+		int desWidth = new BigDecimal(imgWidth).multiply(new BigDecimal(accuracy)).intValue();
+		int desHeight = new BigDecimal(imgHeight).multiply(new BigDecimal(accuracy)).intValue();
+		System.out.println("转换后宽度desWidth=" + desWidth + ";高度desHeight=" + desHeight);
+		ByteArrayOutputStream baos = new ByteArrayOutputStream(); //字节输出流(写入到内存)
+		Thumbnails.of(new ByteArrayInputStream(bytes)).size(desWidth, desHeight).outputQuality(accuracy).toOutputStream(baos);
+		//如果不满足要求,递归直至满足要求
+		return commpressPicCycle(baos.toByteArray(), desFileSize, accuracy);
+	}
+
+	/**
+	 * @param imgUrl eg:https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/esua-epdc/test/20200226/95dd03ace7d04627a297abae7339de97.jpg
+	 * @param path   保存路径eg:d:/pic.jpg
+	 * @return void
+	 * @Author yinzuomei
+	 * @Description 根据图片url下载图片到本地地址
+	 * @Date 2020/2/27 15:50
+	 **/
+	public static void downloadPicture(String imgUrl, String path) {
+		try {
+			URL url = new URL(imgUrl);
+			DataInputStream dataInputStream = new DataInputStream(url.openStream());
+			FileOutputStream fileOutputStream = new FileOutputStream(new File(path));
+			ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+			byte[] buffer = new byte[1024];
+			int length;
+
+			while ((length = dataInputStream.read(buffer)) > 0) {
+				output.write(buffer, 0, length);
+			}
+			fileOutputStream.write(output.toByteArray());
+			dataInputStream.close();
+			fileOutputStream.close();
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+}
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java
index 602383c9a..7b93b2127 100644
--- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java
@@ -26,10 +26,10 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
 import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
 import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
 import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
-import com.elink.esua.epdc.dto.events.EpdcRejectEventDetailDTO;
-import com.elink.esua.epdc.dto.events.EpdcRejectEventsDTO;
 import com.elink.esua.epdc.dto.events.EpdcEventsDTO;
 import com.elink.esua.epdc.dto.events.EpdcEventsDetailDTO;
+import com.elink.esua.epdc.dto.events.EpdcRejectEventDetailDTO;
+import com.elink.esua.epdc.dto.events.EpdcRejectEventsDTO;
 import com.elink.esua.epdc.dto.events.form.EpdcEventsReviewFormDTO;
 import com.elink.esua.epdc.modules.events.excel.EpdcEventsExcel;
 import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
@@ -160,4 +160,15 @@ public class EpdcEventsController {
         return new Result();
     }
 
+    /**
+     * @param topicId 话题id
+     * @return com.elink.esua.epdc.commons.tools.utils.Result
+     * @Author yinzuomei
+     * @Description 校验话题是否已经转为议题
+     * @Date 2020/2/28 12:06
+     **/
+    @GetMapping("checkTopicToIssueFlag/{topicId}")
+    public Result checkTopicToIssueFlag(@PathVariable("topicId") String topicId) {
+        return epdcEventsService.checkTopicToIssueFlag(topicId);
+    }
 }
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java
index c39f6874d..8b2294a99 100644
--- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java
@@ -208,4 +208,12 @@ public interface EpdcEventsService extends BaseService {
      */
     Result topicToIssue(EpdcEventSubmitFormDTO dto);
 
+    /**
+     * @param topicId 话题id
+     * @return com.elink.esua.epdc.commons.tools.utils.Result
+     * @Author yinzuomei
+     * @Description 校验话题是否已经转为议题
+     * @Date 2020/2/28 12:06
+     **/
+    Result checkTopicToIssueFlag(String topicId);
 }
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
index b955a02ce..454a8eaf8 100644
--- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
@@ -56,6 +56,7 @@ import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
 import com.elink.esua.epdc.modules.events.service.ImgService;
 import com.elink.esua.epdc.modules.feign.AdminFeignClient;
 import com.elink.esua.epdc.modules.feign.GroupFeignClient;
+import com.elink.esua.epdc.modules.issue.dao.IssueDao;
 import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
 import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity;
 import com.elink.esua.epdc.modules.issue.service.IssueHandleService;
@@ -66,9 +67,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
 import java.util.*;
 
 /**
@@ -107,6 +105,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl listOfPendingReviewEvents(Map params) {
         IPage page = getPage(params);
@@ -182,16 +183,19 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(eventId), "EVENT_ID", eventId);
+        List list = issueDao.selectList(wrapper);
+        if (null == list || list.size() == 0) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
      * 话题转议题审核回调
      *
-     * @params [topicId, dto]
      * @return void
+     * @params [topicId, dto]
      * @author liuchuang
      * @since 2019/11/11 10:28
      */
@@ -482,12 +502,22 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl().ok(issueDTO);
     }
 
+    @Override
+    public Result checkTopicToIssueFlag(String topicId) {
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(topicId), "TOPIC_ID", topicId);
+        List list = baseDao.selectList(wrapper);
+        if (null == list || list.size() == 0) {
+            return new Result().ok(false);
+        }
+        return new Result().ok(true);
+    }
+
     /**
-     *
      * 初始化分类信息
      *
-     * @params [categoryId]
      * @return com.elink.esua.epdc.dto.events.EventsCategoryDTO
+     * @params [categoryId]
      * @author liuchuang
      * @since 2019/11/29 13:51
      */
@@ -523,14 +553,14 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl userMobiles){
         // 审核操作发送短信
         SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java
new file mode 100644
index 000000000..687cb01b4
--- /dev/null
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java
@@ -0,0 +1,30 @@
+package com.elink.esua.epdc.modules.feign;
+
+import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
+import com.elink.esua.epdc.commons.tools.utils.Result;
+import com.elink.esua.epdc.modules.feign.fallback.OssFeignClientFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+/**
+ * 文件对象模块
+ *
+ * @Author yinzuomei
+ * @Date 2020/02/27 18:24
+ */
+@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class)
+public interface OssFeignClient {
+
+	/**
+	 * 压缩图片并上传返回新的url
+	 *
+	 * @Params: [base64]
+	 * @Return: com.elink.esua.epdc.commons.tools.utils.Result
+	 * @Author: yinzuomei
+	 * @Date: 2019/9/11 17:17
+	 */
+	@PostMapping(value = "oss/file/compressImg")
+	Result> compressImg(List imgUrlList);
+}
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java
new file mode 100644
index 000000000..d6c395f37
--- /dev/null
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java
@@ -0,0 +1,22 @@
+package com.elink.esua.epdc.modules.feign.fallback;
+
+import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
+import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
+import com.elink.esua.epdc.commons.tools.utils.Result;
+import com.elink.esua.epdc.modules.feign.OssFeignClient;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author yinzuomei
+ * @date 2020/02/27 18:24
+ */
+@Component
+public class OssFeignClientFallback implements OssFeignClient {
+
+	@Override
+	public Result> compressImg(List imgUrlList) {
+		return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "compressImg", imgUrlList);
+	}
+}
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
index 95f91ffdf..ff373015d 100644
--- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
@@ -39,7 +39,10 @@ import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
 import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
 import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
 import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
-import com.elink.esua.epdc.dto.issue.*;
+import com.elink.esua.epdc.dto.issue.IssueContentDetailDTO;
+import com.elink.esua.epdc.dto.issue.IssueDTO;
+import com.elink.esua.epdc.dto.issue.IssueWaitHandleDetailDTO;
+import com.elink.esua.epdc.dto.issue.IssueWaitHandleOrClosedDTO;
 import com.elink.esua.epdc.dto.issue.form.*;
 import com.elink.esua.epdc.dto.issue.result.*;
 import com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO;
@@ -54,6 +57,7 @@ import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
 import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity;
 import com.elink.esua.epdc.modules.issue.service.IssueHandleService;
 import com.elink.esua.epdc.modules.issue.service.IssueService;
+import com.elink.esua.epdc.modules.item.dao.ItemDao;
 import com.elink.esua.epdc.modules.item.entity.ItemDeptEntity;
 import com.elink.esua.epdc.modules.item.entity.ItemEntity;
 import com.elink.esua.epdc.modules.item.entity.ItemHandleProcessEntity;
@@ -106,6 +110,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp
     @Autowired
     private IssueOverseeResultsTask issueOverseeResultsTask;
 
+    @Autowired
+    private ItemDao itemDao;
+
     @Override
     public PageData listOfIssues(Map params) {
         IPage page = getPage(params);
@@ -211,6 +218,9 @@ public class IssueServiceImpl extends BaseServiceImpl imp
             updateById(issueEntity);
             // 转项目
             if (EventIssueItemState.ISSUE_CHANGE_TO_ITEM == dto.getState()) {
+                if (checkAlreadyChangeToItem(dto.getId())) {
+                    return new Result().error("项目已存在");
+                }
                 informationFormDTO.setTitle(EventsNoticeConstant.NOTICE_ISSUE_CHANGE_TO_ITEM);
                 informationFormDTO.setBusinessType(EventsNoticeConstant.NOTICE_BUSINESS_TYPE_ITEM);
                 // 插入项目表
@@ -267,6 +277,23 @@ public class IssueServiceImpl extends BaseServiceImpl imp
         return new Result();
     }
 
+    /**
+     * @param issueId 议题id
+     * @return boolean
+     * @Author yinzuomei
+     * @Description 根据议题id项目表,如果存在有效记录返回true,否则返回false,确保议题-转项目一对一唯一性
+     * @Date 2020/2/28 11:51
+     **/
+    private boolean checkAlreadyChangeToItem(String issueId) {
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(issueId), "ISSUE_ID", issueId);
+        List list = itemDao.selectList(wrapper);
+        if (null == list || list.size() == 0) {
+            return false;
+        }
+        return true;
+    }
+
     @Override
     public IssueContentDetailDTO getIssueContentDetail(String issueId) {
         // 议题详情
@@ -479,13 +506,13 @@ public class IssueServiceImpl extends BaseServiceImpl imp
         return baseDao.selectListIssueProgress(issueId);
     }
 
-    /** 
+    /**
      * @Description: 议题:待处理事件 议题转项目结果短信通知 议题发起人
      * @Param: [userId]
-     * @return: void 
-     * @Author: zy 
-     * @Date: 2020-01-08 
-     */ 
+     * @return: void
+     * @Author: zy
+     * @Date: 2020-01-08
+     */
     private void issueSmsNotification(String userMobiles){
         List list = new ArrayList<>();
         list.add(userMobiles);
diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
index f5ec9ff71..6d9f2b03d 100755
--- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
+++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
@@ -30,10 +30,7 @@ import com.elink.esua.epdc.commons.tools.exception.RenException;
 import com.elink.esua.epdc.commons.tools.page.PageData;
 import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
 import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
-import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
-import com.elink.esua.epdc.commons.tools.utils.DateUtils;
-import com.elink.esua.epdc.commons.tools.utils.GPSUtils;
-import com.elink.esua.epdc.commons.tools.utils.Result;
+import com.elink.esua.epdc.commons.tools.utils.*;
 import com.elink.esua.epdc.constant.*;
 import com.elink.esua.epdc.constants.MenuCodeConstant;
 import com.elink.esua.epdc.dto.CompleteDeptDTO;
@@ -66,13 +63,12 @@ import com.elink.esua.epdc.modules.events.entity.ImgEntity;
 import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
 import com.elink.esua.epdc.modules.events.service.ImgService;
 import com.elink.esua.epdc.modules.feign.AdminFeignClient;
+import com.elink.esua.epdc.modules.feign.OssFeignClient;
 import com.elink.esua.epdc.modules.interfacelog.entity.InterfaceLogEntity;
 import com.elink.esua.epdc.modules.interfacelog.service.InterfaceLogService;
 import com.elink.esua.epdc.modules.issue.service.IssueService;
-import com.elink.esua.epdc.modules.item.dao.GridPlatformHandleLogDao;
 import com.elink.esua.epdc.modules.item.dao.ItemDao;
 import com.elink.esua.epdc.modules.item.dao.ItemGridPlatformDao;
-import com.elink.esua.epdc.modules.item.dao.ItemHandleProcessDao;
 import com.elink.esua.epdc.modules.item.entity.*;
 import com.elink.esua.epdc.modules.item.service.*;
 import org.apache.commons.lang3.StringUtils;
@@ -143,12 +139,10 @@ public class ItemServiceImpl extends BaseServiceImpl implem
     private ItemGridPlatformDao itemGridPlatformDao;
 
     @Autowired
-    private ItemHandleProcessDao itemHandleProcessDao;
-    @Autowired
-    private GridPlatformHandleLogDao gridPlatformHandleLogDao;
+    private IssueOverseeResultsTask issueOverseeResultsTask;
 
     @Autowired
-    private IssueOverseeResultsTask issueOverseeResultsTask;
+    private OssFeignClient ossFeignClient;
 
     @Override
     public PageData page(Map params) {
@@ -958,93 +952,126 @@ public class ItemServiceImpl extends BaseServiceImpl implem
 	 * @Date 2019/12/25 13:14
 	 **/
 	private SendInputInfoFormDto packageReportEntity(ItemEntity itemEntity) throws Exception {
-		UserDetail user = SecurityUser.getUser();
-		SendInputInfoFormDto formDto = new SendInputInfoFormDto();
-		// 案件来源
-		formDto.setInfoSourceID(CommonConstants.INFO_SOURCE_ID);
-		// 渠道来源
-		formDto.setReportDept(CommonConstants.REPORT_DEPT);
-		// 案件属性
-		formDto.setInfoTypeID(CommonConstants.INFO_TYPE_ID);
-		// 案件大类
-		formDto.setInfoBC(CommonConstants.INFO_BC);
-		// 案件小类
-		formDto.setInfoSC(CommonConstants.INFO_SC);
-		// 案件子类
-		formDto.setInfoZC(CommonConstants.INFO_ZC);
-		// 发生地址
-		formDto.setStandardAddress(itemEntity.getIssueAddress());
-		// 问题描述
+        UserDetail user = SecurityUser.getUser();
+        SendInputInfoFormDto formDto = new SendInputInfoFormDto();
+        // 案件来源
+        formDto.setInfoSourceID(CommonConstants.INFO_SOURCE_ID);
+        // 渠道来源
+        formDto.setReportDept(CommonConstants.REPORT_DEPT);
+        // 案件属性
+        formDto.setInfoTypeID(CommonConstants.INFO_TYPE_ID);
+        // 案件大类
+        formDto.setInfoBC(CommonConstants.INFO_BC);
+        // 案件小类
+        formDto.setInfoSC(CommonConstants.INFO_SC);
+        // 案件子类
+        formDto.setInfoZC(CommonConstants.INFO_ZC);
+        // 发生地址
+        formDto.setStandardAddress(itemEntity.getIssueAddress());
+        // 问题描述
         formDto.setDescription(itemEntity.getItemContent());// 测试999勿删谢谢
-		// 反映人
-		formDto.setReportPerson(itemEntity.getNickName());// itemEntity.getNickName()测试人员
-		// 联系方式
-		formDto.setContactMode(itemEntity.getMobile());
-        double[] gps= GPSUtils.gcj02_To_Gps84(itemEntity.getIssueLatitude(),itemEntity.getIssueLongitude());
-		// 坐标X
+        // 反映人
+        formDto.setReportPerson(itemEntity.getNickName());// itemEntity.getNickName()测试人员
+        // 联系方式
+        formDto.setContactMode(itemEntity.getMobile());
+        double[] gps = GPSUtils.gcj02_To_Gps84(itemEntity.getIssueLatitude(), itemEntity.getIssueLongitude());
+        // 坐标X
         formDto.setCoordX(new BigDecimal(gps[1]).setScale(15, BigDecimal.ROUND_HALF_UP));
-		// 坐标Y
+        // 坐标Y
         formDto.setCoordY(new BigDecimal(gps[0]).setScale(15, BigDecimal.ROUND_HALF_UP));
-		// 监督员编号
-		formDto.setKeepersn("");
-		// 操作时间
-		formDto.setInsertTime(new Date());
-		// 操作人
-		formDto.setInsertUser(user.getRealName());//
-		// 外系统编号
-		formDto.setHotLinesn(itemEntity.getId());
-		// 先查询网格对应街道id
-		Result completeDeptDTOResult = adminFeignClient.getCompleteDept(itemEntity.getGridId());
-		if (!completeDeptDTOResult.success()) {
-			throw new Exception("根据网格ID获取所有上级机构信息失败" + completeDeptDTOResult.getMsg());
-		}
-		// 根据街道id查询对应平台的deptCode、streetCode
-		Result deptGridPlatformDTOResult = adminFeignClient.getDeptGridPlatformDTO(completeDeptDTOResult.getData().getStreetId().toString());
-		if (!deptGridPlatformDTOResult.success() || null == deptGridPlatformDTOResult.getData()) {
-			throw new Exception("根据街道查询平台部门信息失败" + deptGridPlatformDTOResult.getMsg());
-		}
-		//外系统编码 必填!!!!!!!
-		formDto.setDeptCode(deptGridPlatformDTOResult.getData().getDeptCode());// 130099
-		// 街道编码!!!!!!!!!!!!
-		formDto.setStreetCode(deptGridPlatformDTOResult.getData().getStreetCode());
-		// 网格编码
-		formDto.setGridCode(null);
-
-		//查询图片列表
-		QueryWrapper wrapper = new QueryWrapper<>();
-		wrapper.eq(StringUtils.isNotBlank(itemEntity.getEventId()), "REFERENCE_ID", itemEntity.getEventId());
-		List imageList = imgDao.selectList(wrapper);
-		if (null != imageList && !imageList.isEmpty()) {
-			String url = null;
-			String filename = null;
-			ReportFile reportFile = null;
-			List reportFiles = new ArrayList<>();
-			for (ImgEntity image : imageList) {
-				url = image.getImgUrl();
-				if (org.apache.commons.lang.StringUtils.isNotBlank(url)) {
-					filename = url.substring(url.lastIndexOf(CommonConstants.CHAR_ASCII_47) + CommonConstants.NUMBER_ONE);
-					reportFile = new ReportFile();
-					reportFile.setName(filename);
-					reportFile.setUrl(url);
-					reportFile.setBase64string("");
-					reportFiles.add(reportFile);
-				}
-			}
-			ImageFile imageFile = new ImageFile();
-			imageFile.setReportFileList(reportFiles);
-			formDto.setImageFile(imageFile);
-		}
-		return formDto;
-	}
+        // 监督员编号
+        formDto.setKeepersn("");
+        // 操作时间
+        formDto.setInsertTime(new Date());
+        // 操作人
+        formDto.setInsertUser(user.getRealName());//
+        // 外系统编号
+        formDto.setHotLinesn(itemEntity.getId());
+        // 先查询网格对应街道id
+        Result completeDeptDTOResult = adminFeignClient.getCompleteDept(itemEntity.getGridId());
+        if (!completeDeptDTOResult.success()) {
+            throw new Exception("根据网格ID获取所有上级机构信息失败" + completeDeptDTOResult.getMsg());
+        }
+        // 根据街道id查询对应平台的deptCode、streetCode
+        Result deptGridPlatformDTOResult = adminFeignClient.getDeptGridPlatformDTO(completeDeptDTOResult.getData().getStreetId().toString());
+        if (!deptGridPlatformDTOResult.success() || null == deptGridPlatformDTOResult.getData()) {
+            throw new Exception("根据街道查询平台部门信息失败" + deptGridPlatformDTOResult.getMsg());
+        }
+        //外系统编码 必填!!!!!!!
+        formDto.setDeptCode(deptGridPlatformDTOResult.getData().getDeptCode());// 130099
+        // 街道编码!!!!!!!!!!!!
+        formDto.setStreetCode(deptGridPlatformDTOResult.getData().getStreetCode());
+        // 网格编码
+        formDto.setGridCode(null);
+        formDto.setImageFile(getImageFile(itemEntity.getEventId()));
+        return formDto;
+    }
 
-	/**
-	 * @param gridDto
-	 * @param handleProcessEntity
-	 * @return void
-	 * @Author yinzuomei
-	 * @Description
-	 * @Date 2019/12/25 15:29
-	 **/
+    // 组装事件图片
+    private ImageFile getImageFile(String eventId) {
+        ImageFile imageFile = new ImageFile();
+        //查询图片列表
+        QueryWrapper wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(eventId), "REFERENCE_ID", eventId);
+        List imageList = imgDao.selectList(wrapper);
+        if (null != imageList && !imageList.isEmpty()) {
+            String url = null;
+            String filename = null;
+            ReportFile reportFile = null;
+            List reportFiles = new ArrayList<>();
+            List imgUrlList = this.getUploadDTOList(imageList);
+            for (String imgUrl : imgUrlList) {
+                url = imgUrl;
+                if (org.apache.commons.lang.StringUtils.isNotBlank(url)) {
+                    filename = url.substring(url.lastIndexOf(CommonConstants.CHAR_ASCII_47) + CommonConstants.NUMBER_ONE);
+                    reportFile = new ReportFile();
+                    reportFile.setName(filename);
+                    reportFile.setUrl(url);
+                    reportFile.setBase64string("");
+                    reportFiles.add(reportFile);
+                }
+            }
+            imageFile.setReportFileList(reportFiles);
+        }
+        return imageFile;
+    }
+
+    //压缩图片并上传到服务器,得到新的地址
+    private List getUploadDTOList(List imageList) {
+        List imgUrlList = new ArrayList<>();
+        List notNeedCompressImgUrlList = new ArrayList<>();
+        List needCompressImgUrlList = new ArrayList<>();
+        for (ImgEntity image : imageList) {
+            long imgLength = CompressImgUtils.getFileLength(image.getImgUrl());
+            if (imgLength > 1024 * 1024) {
+                needCompressImgUrlList.add(image.getImgUrl());
+            } else {
+                notNeedCompressImgUrlList.add(image.getImgUrl());
+            }
+        }
+        if (null != needCompressImgUrlList && needCompressImgUrlList.size() > 0) {
+            //如果图片大于1M则需要压缩
+            Result> result = ossFeignClient.compressImg(needCompressImgUrlList);
+            if (!result.success()) {
+                throw new RenException("图片压缩异常" + result.getMsg());
+            }
+            if (null == result.getData() || result.getData().size() == 0) {
+                throw new RenException("图片压缩失败" + result.getMsg());
+            }
+            imgUrlList.addAll(result.getData());
+        }
+        imgUrlList.addAll(notNeedCompressImgUrlList);
+        return imgUrlList;
+    }
+
+    /**
+     * @param gridDto
+     * @param handleProcessEntity
+     * @return void
+     * @Author yinzuomei
+     * @Description
+     * @Date 2019/12/25 15:29
+     **/
     private void saveItemGridPlatformInfo(GridDto gridDto, ItemHandleProcessEntity handleProcessEntity) {
         UserDetail user = SecurityUser.getUser();
         ItemGridPlatformEntity itemGridPlatformEntity = new ItemGridPlatformEntity();
@@ -1220,14 +1247,14 @@ public class ItemServiceImpl extends BaseServiceImpl implem
         }
     }
 
-    /** 
+    /**
      * @Description: 某三种情况下, 查询当前项目下的上级部门id,做去重处理,向部门下的所有人员发送短信
      * @Description: 1.街道做吹哨, 做回应处理; 2.反馈回应; 3.上报网格化平台
-     * @Param: [dto] 
-     * @return: void 
-     * @Author: zy 
-     * @Date: 2020-01-14 
-     */ 
+     * @Param: [dto]
+     * @return: void
+     * @Author: zy
+     * @Date: 2020-01-14
+     */
     private void superiorDeptSmsHandle(ItemHandleSubmitFormDTO dto){
         UserDetail user = SecurityUser.getUser(); //获取当前登录人信息
         List deptId = new ArrayList<>();
diff --git a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java
index 776c640c4..78db731fb 100644
--- a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java
+++ b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/EventFeignClient.java
@@ -8,6 +8,8 @@ import com.elink.esua.epdc.dto.issue.IssueDTO;
 import com.elink.esua.epdc.modules.feign.fallback.EventFeignClientFallback;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 
 /**
@@ -43,4 +45,14 @@ public interface EventFeignClient {
      */
     @PostMapping(value = "events/eventcomment/receive", consumes = MediaType.APPLICATION_JSON_VALUE)
     Result receiveTopicCommentAndAttitude(EpdcCommentsAndAttitudeFromTopicFormDTO formDto);
+
+    /**
+     * @param topicId 话题id
+     * @return com.elink.esua.epdc.commons.tools.utils.Result
+     * @Author yinzuomei
+     * @Description 校验话题是否已经转为议题
+     * @Date 2020/2/28 12:02
+     **/
+    @GetMapping("events/epdcevents/checkTopicToIssueFlag/{topicId}")
+    Result checkTopicToIssueFlag(@PathVariable("topicId") String topicId);
 }
diff --git a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java
index 470b023f3..1b431be85 100644
--- a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java
+++ b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/EventFeignClientFallback.java
@@ -25,4 +25,9 @@ public class EventFeignClientFallback implements EventFeignClient {
     public Result receiveTopicCommentAndAttitude(EpdcCommentsAndAttitudeFromTopicFormDTO formDto) {
         return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "receiveTopicCommentAndAttitude", formDto);
     }
+
+    @Override
+    public Result checkTopicToIssueFlag(String topicId) {
+        return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "checkTopicToIssueFlag", topicId);
+    }
 }
diff --git a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java
index 9bd0320cd..50d05a905 100644
--- a/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java
+++ b/esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/topic/service/impl/TopicServiceImpl.java
@@ -423,7 +423,11 @@ public class TopicServiceImpl extends BaseServiceImpl imp
         if (!TopicStateEnum.TOPIC_STATE_IN_CONVERSATION.getValue().equals(topicDto.getState())) {
             return new Result().error("当前话题不是讨论中状态,不可以转为议题");
         }
-
+        // 校验话题是否已经转为议题
+        Result result = eventFeignClient.checkTopicToIssueFlag(topicDto.getId());
+        if (result.getData()) {
+            return new Result().error("当前话题已经转为议题");
+        }
         return new Result();
     }
 
diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml
index 16d390b93..7230e64d3 100644
--- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml
+++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml
@@ -173,6 +173,7 @@
                 false
                 47.104.224.45:8848
                 
+                
             
         
 
diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java
index 02912121c..b824c401e 100644
--- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java
+++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java
@@ -10,6 +10,8 @@ package com.elink.esua.epdc.controller;
 
 import com.elink.esua.epdc.cloud.AbstractCloudStorageService;
 import com.elink.esua.epdc.cloud.AliyunCloudStorageService;
+import com.elink.esua.epdc.cloud.CloudStorageConfig;
+import com.elink.esua.epdc.cloud.OssFactory;
 import com.elink.esua.epdc.commons.tools.annotation.LogOperation;
 import com.elink.esua.epdc.commons.tools.constant.NumConstant;
 import com.elink.esua.epdc.commons.tools.page.PageData;
@@ -18,18 +20,16 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
 import com.elink.esua.epdc.commons.tools.validator.group.AliyunGroup;
 import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup;
 import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup;
+import com.elink.esua.epdc.dto.UploadDTO;
 import com.elink.esua.epdc.dto.UploadFormDTO;
 import com.elink.esua.epdc.dto.UploadToOssDTO;
 import com.elink.esua.epdc.entity.OssEntity;
+import com.elink.esua.epdc.enums.OssTypeEnum;
 import com.elink.esua.epdc.exception.ModuleErrorCode;
 import com.elink.esua.epdc.remote.ParamsRemoteService;
 import com.elink.esua.epdc.service.OssService;
 import com.elink.esua.epdc.utils.ModuleConstant;
 import com.google.gson.Gson;
-import com.elink.esua.epdc.cloud.CloudStorageConfig;
-import com.elink.esua.epdc.cloud.OssFactory;
-import com.elink.esua.epdc.dto.UploadDTO;
-import com.elink.esua.epdc.enums.OssTypeEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.FilenameUtils;
@@ -42,6 +42,7 @@ import sun.misc.BASE64Decoder;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -171,4 +172,28 @@ public class OssController {
         return new Result().ok(url);
     }
 
+    /**
+     * @param avatarUrl
+     * @return java.lang.String
+     * @Author yinzuomei
+     * @Description 上传微信头像
+     * @Date 2019/12/19 18:48
+     **/
+    @GetMapping("saveWeChatFaceImg")
+    public Result saveWeChatFaceImg(@RequestParam(value = "avatarUrl") String avatarUrl) {
+        return ossService.saveWeChatFaceImg(avatarUrl);
+    }
+
+    /**
+     * 压缩图片并上传
+     *
+     * @param imgUrlList 完整的访问链接
+     * @return void
+     * @author yinzuomei
+     * @date 2020/02/27
+     */
+    @PostMapping("compressImg")
+    public Result> compressImg(@RequestBody List imgUrlList) {
+        return ossService.compressImg(imgUrlList);
+    }
 }
diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java
index e7fe79341..a6806913f 100644
--- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java
+++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/OssService.java
@@ -8,8 +8,6 @@
 
 package com.elink.esua.epdc.service;
 
-import com.elink.esua.epdc.commons.mybatis.service.BaseService;
-import com.elink.esua.epdc.commons.tools.page.PageData;
 import com.elink.esua.epdc.commons.mybatis.service.BaseService;
 import com.elink.esua.epdc.commons.tools.page.PageData;
 import com.elink.esua.epdc.commons.tools.utils.Result;
@@ -17,6 +15,7 @@ import com.elink.esua.epdc.dto.UploadDTO;
 import com.elink.esua.epdc.entity.OssEntity;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -49,4 +48,23 @@ public interface OssService extends BaseService {
      * @date 2019/12/10 17:23
      */
     void download(String fileUrl, HttpServletResponse response);
+
+    /**
+     * @param fileUrl
+     * @return com.elink.esua.epdc.commons.tools.utils.Result
+     * @Author yinzuomei
+     * @Description 上传微信头像
+     * @Date 2019/12/19 18:55
+     **/
+    Result saveWeChatFaceImg(String fileUrl);
+
+    /**
+     * 压缩图片并上传
+     *
+     * @param imgUrlList 完整的访问链接
+     * @return void
+     * @author yinzuomei
+     * @date 2020/02/27
+     */
+    Result> compressImg(List imgUrlList);
 }
diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java
index b1054b2ee..40ebfa699 100644
--- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java
+++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/service/impl/OssServiceImpl.java
@@ -10,15 +10,18 @@ package com.elink.esua.epdc.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.elink.esua.epdc.cloud.OssFactory;
 import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
 import com.elink.esua.epdc.commons.tools.constant.Constant;
 import com.elink.esua.epdc.commons.tools.constant.NumConstant;
 import com.elink.esua.epdc.commons.tools.page.PageData;
+import com.elink.esua.epdc.commons.tools.utils.CompressImgUtils;
 import com.elink.esua.epdc.commons.tools.utils.Result;
 import com.elink.esua.epdc.dao.OssDao;
 import com.elink.esua.epdc.dto.UploadDTO;
 import com.elink.esua.epdc.entity.OssEntity;
 import com.elink.esua.epdc.service.OssService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
@@ -26,7 +29,9 @@ import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 @Service
@@ -97,4 +102,51 @@ public class OssServiceImpl extends BaseServiceImpl implement
 
     }
 
+    /**
+     * @param avatarUrl
+     * @return java.lang.String
+     * @Author yinzuomei
+     * @Description 上传微信头像
+     * @Date 2019/12/19 18:49
+     **/
+    @Override
+    public Result saveWeChatFaceImg(String avatarUrl) {
+        if (StringUtils.isBlank(avatarUrl)) {
+            return new Result().error("avatarUrl不能为空");
+        }
+        try {
+            //实例化url
+            URL url = new URL(avatarUrl);
+            //载入图片到输入流
+            DataInputStream dataInputStream = new DataInputStream(url.openStream());
+            int size = dataInputStream.available();
+            //上传文件
+            String fileUrl = OssFactory.build().uploadSuffix(dataInputStream, "jpg");
+            return this.afterUpload(fileUrl, size);
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return new Result().error("上传微信头像异常");
+    }
+
+
+    @Override
+    public Result> compressImg(List imgUrlList) {
+        List resultList = new ArrayList<>();
+        if (null == imgUrlList || 0 == imgUrlList.size()) {
+            return new Result>().error("imgUrlList不能为空");
+        }
+        for (int i = 0; i < imgUrlList.size(); i++) {
+            String imgUrl = imgUrlList.get(i);
+            byte[] data = CompressImgUtils.compressImg(imgUrl);
+            //上传文件
+            String fileUrl = OssFactory.build().uploadSuffix(data, "jpg");
+            this.afterUpload(fileUrl, data.length);
+            resultList.add(fileUrl);
+        }
+        return new Result>().ok(resultList);
+    }
+
 }