From 4716fae170fa719733d7c4345e3a17cce437617c Mon Sep 17 00:00:00 2001
From: 2821744554@qq.com <2821744554@qq.com>
Date: Fri, 20 Mar 2020 08:54:55 +0800
Subject: [PATCH] 1、增加网关负载lb指向 2、文件服务增加21世纪文档生成接口
---
cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java | 2 ++
cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java | 4 ++++
cloud/autho/src/main/resources/application.yaml | 2 +-
cloud/autho/src/main/resources/mapper/UserMapper.xml | 4 ++++
cloud/fIle-center/pom.xml | 12 ++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java | 25 +++++++++++++++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java | 3 +++
cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java | 9 +++++++++
cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java | 1 +
cloud/getaway/src/main/resources/application.yml | 15 ++++++++-------
16 files changed, 577 insertions(+), 23 deletions(-)
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java
create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java
diff --git a/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java b/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java
index 73a09a7..7db8353 100644
--- a/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java
+++ b/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java
@@ -7,4 +7,6 @@ public interface UserMapper {
String loginTeacher(LoginReqDto loginReqDto) ;
String loginStudent(LoginReqDto loginReqDto) ;
+
+ String loginStudentOthName(LoginReqDto loginReqDto);
}
diff --git a/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java b/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java
index b335637..4816a46 100644
--- a/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java
+++ b/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java
@@ -5,6 +5,7 @@ import com.sincere.autho.mapper.UserMapper;
import com.sincere.autho.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
@Service
public class LoginServiceImpl implements LoginService {
@@ -17,6 +18,9 @@ public class LoginServiceImpl implements LoginService {
String userId = "" ;
if(loginReqDto.getUserType() == 2){
userId = userMapper.loginStudent(loginReqDto);
+ if (StringUtils.isEmpty(userId)){//用othername登录
+ userId = userMapper.loginStudentOthName(loginReqDto);
+ }
}else {
userId = userMapper.loginTeacher(loginReqDto);
}
diff --git a/cloud/autho/src/main/resources/application.yaml b/cloud/autho/src/main/resources/application.yaml
index 6f2c3f6..ecd8a7f 100644
--- a/cloud/autho/src/main/resources/application.yaml
+++ b/cloud/autho/src/main/resources/application.yaml
@@ -19,7 +19,7 @@ ribbon:
ConnectTimeout: 5000
eureka:
instance:
- hostname: localhost
+ hostname: 121.40.30.78
lease-expiration-duration-in-seconds: 60
lease-renewal-interval-in-seconds: 10
client:
diff --git a/cloud/autho/src/main/resources/mapper/UserMapper.xml b/cloud/autho/src/main/resources/mapper/UserMapper.xml
index 61e206a..5789ebb 100644
--- a/cloud/autho/src/main/resources/mapper/UserMapper.xml
+++ b/cloud/autho/src/main/resources/mapper/UserMapper.xml
@@ -11,4 +11,8 @@
select user_id from SZ_User where name = #{account} and pass = #{password}
+
+
diff --git a/cloud/fIle-center/pom.xml b/cloud/fIle-center/pom.xml
index d2976c9..7aac998 100644
--- a/cloud/fIle-center/pom.xml
+++ b/cloud/fIle-center/pom.xml
@@ -43,6 +43,18 @@
2.8.3
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java
index 876df73..9a71f30 100644
--- a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java
@@ -1,21 +1,44 @@
package com.sincere.file.control;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson.serializer.ValueFilter;
import com.sincere.file.model.FileInfo;
+import com.sincere.file.model.question.QuestionDataModel;
import com.sincere.file.service.FileService;
import com.sincere.file.utils.FileUtil;
+import com.sincere.file.utils.PoiUtils;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.apache.poi.xwpf.usermodel.Document;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.configurationprocessor.json.JSONException;
+import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
@RestController
@Api(tags = "文件管理")
@RequestMapping(value = "file/*")
public class FileControl {
+ Logger logger = LoggerFactory.getLogger(FileControl.class);
+
@Autowired
FileService fileService;
@@ -31,27 +54,45 @@ public class FileControl {
}
- @PostMapping("fileUpload1")
- @ApiOperation("上传文件")
- public String fileUpload1(@RequestParam("file") MultipartFile file) throws Exception {
-
-// String ossPath = request.getHeader("ossPath");//oss的二级目录
-//
-// FileInfo fileInfo = fileService.upload(file, ossPath);
+ @DeleteMapping("deleteFile/{fileName}")
+ @ApiOperation("删除文件")
+ public boolean deleteFile(@PathVariable String fileName, HttpServletRequest request) {
+ String ossPath = request.getHeader("ossPath");//oss的二级目录
+ fileService.delete(fileName, ossPath);
- return "111";
+ System.out.println("fileName:" + fileName + "----ossPath:" + ossPath);
+ return true;
}
- @DeleteMapping("deleteFile/{fileName}")
- @ApiOperation("删除文件")
- public boolean deleteFile(@PathVariable String fileName,HttpServletRequest request){
- String ossPath = request.getHeader("ossPath");//oss的二级目录
- fileService.delete(fileName,ossPath);
+ @RequestMapping(value = "getWord", method = RequestMethod.GET)
+ @ApiOperation("获取21世纪题目")
+ @ApiImplicitParams(
+ {@ApiImplicitParam(name = "url",value = "链接")}
+
+ )
+ public String getWord(@RequestParam("url") String url) {
+
+ RestTemplate restTemplate = new RestTemplate();
+
+ String content = restTemplate.getForObject(url, String.class, new HashMap<>());
+
+// logger.error("json:{}", content);
+
+ JSONObject jsonObject = JSON.parseObject(content);
+ JSONObject data = jsonObject.getJSONObject("data");
+ JSONArray questions = data.getJSONArray("questions");
+ String wordPath = PoiUtils.createWord(questions);
+
+// QuestionDataModel questionDataModel = JSON.parseObject(content, QuestionDataModel.class);
+
+// logger.error("questionDataModel:{}", questionDataModel);
+
+ return fileService.uploadLocalFile(new File(wordPath), "test");
- System.out.println("fileName:"+fileName+"----ossPath:"+ossPath);
- return true;
}
+
+
}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java
new file mode 100644
index 0000000..b2a9e34
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java
@@ -0,0 +1,56 @@
+package com.sincere.file.model.question;
+
+import java.io.Serializable;
+
+public class OptionsModel implements Serializable {
+
+ private String A;
+
+ private String B;
+
+ private String C;
+
+ private String D;
+
+ public String getA() {
+ return A;
+ }
+
+ public void setA(String a) {
+ A = a;
+ }
+
+ public String getB() {
+ return B;
+ }
+
+ public void setB(String b) {
+ B = b;
+ }
+
+ public String getC() {
+ return C;
+ }
+
+ public void setC(String c) {
+ C = c;
+ }
+
+ public String getD() {
+ return D;
+ }
+
+ public void setD(String d) {
+ D = d;
+ }
+
+ @Override
+ public String toString() {
+ return "OptionsModel{" +
+ "A='" + A + '\'' +
+ ", B='" + B + '\'' +
+ ", C='" + C + '\'' +
+ ", D='" + D + '\'' +
+ '}';
+ }
+}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java
new file mode 100644
index 0000000..da825ea
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java
@@ -0,0 +1,50 @@
+package com.sincere.file.model.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class QuestionDataModel implements Serializable {
+
+ private int code;
+
+ private String msg;
+
+ private Questions data;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String isMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public Questions getData() {
+ return data;
+ }
+
+ public void setData(Questions data) {
+ this.data = data;
+ }
+
+ @Override
+ public String toString() {
+ return "QuestionDataModel{" +
+ "code=" + code +
+ ", msg=" + msg +
+ ", data=" + data +
+ '}';
+ }
+}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java
new file mode 100644
index 0000000..4a92f84
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java
@@ -0,0 +1,47 @@
+package com.sincere.file.model.question;
+
+import java.io.Serializable;
+
+public class QuestionModel implements Serializable {
+
+
+ private String channel_type_name;
+
+ private String question_text;
+
+ private OptionsModel options;
+
+
+ public String getChannel_type_name() {
+ return channel_type_name;
+ }
+
+ public void setChannel_type_name(String channel_type_name) {
+ this.channel_type_name = channel_type_name;
+ }
+
+ public String getQuestion_text() {
+ return question_text;
+ }
+
+ public void setQuestion_text(String question_text) {
+ this.question_text = question_text;
+ }
+
+ public OptionsModel getOptionsModel() {
+ return options;
+ }
+
+ public void setOptionsModel(OptionsModel optionsModel) {
+ this.options = optionsModel;
+ }
+
+ @Override
+ public String toString() {
+ return "QuestionModel{" +
+ "channel_type_name='" + channel_type_name + '\'' +
+ ", question_text='" + question_text + '\'' +
+ ", options=" + options +
+ '}';
+ }
+}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java
new file mode 100644
index 0000000..fa84323
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java
@@ -0,0 +1,25 @@
+package com.sincere.file.model.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Questions implements Serializable {
+
+
+ private List questions;
+
+ public List getQuestions() {
+ return questions;
+ }
+
+ public void setQuestions(List questions) {
+ this.questions = questions;
+ }
+
+ @Override
+ public String toString() {
+ return "Questions{" +
+ "questions=" + questions +
+ '}';
+ }
+}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java
index c78b92e..be26bd2 100644
--- a/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java
@@ -3,6 +3,7 @@ package com.sincere.file.service;
import com.sincere.file.model.FileInfo;
import org.springframework.web.multipart.MultipartFile;
+import java.io.File;
import java.util.Map;
/**
@@ -14,6 +15,8 @@ public interface FileService {
FileInfo upload(MultipartFile file,String filePath) throws Exception;
+ String uploadLocalFile(File file,String filePath);
+
void delete(String fileName,String filePath);
FileInfo getById(String id);
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java
index ab20f34..f999f37 100644
--- a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java
@@ -1,12 +1,15 @@
package com.sincere.file.service.impl;
import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.PutObjectResult;
import com.sincere.file.model.FileInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import java.io.File;
+
/**
* @author 作者 owen E-mail: 624191343@qq.com
* @version 创建时间:2017年11月12日 上午22:57:51
@@ -48,4 +51,10 @@ public class AliyunOssServiceImpl extends AbstractFileService {
return true;
}
+ @Override
+ public String uploadLocalFile(File file, String filePath) {
+ PutObjectResult putObjectResult = ossClient.putObject(bucketName,filePath+"/"+file.getName(),file);
+ System.out.println("uploadLocalFile;"+putObjectResult.toString());
+ return domain+"/"+filePath+"/"+file.getName();
+ }
}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java b/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java
new file mode 100644
index 0000000..5ba7f3c
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java
@@ -0,0 +1,56 @@
+package com.sincere.file.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class HtmlUtil {
+ private static final String regEx_script = "]*?>[//s//S]*?"; // 定义script的正则表达式
+
+ private static final String regEx_style = "]*?>[//s//S]*?"; // 定义style的正则表达式
+
+ private static final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
+
+ private static final String regEx_space = "//s*|/t|/r|/n";//定义空格回车换行符
+
+
+
+ /**
+
+ * @param htmlStr
+
+ * @return
+
+ * 删除Html标签
+
+ */
+
+ public static String delHTMLTag(String htmlStr) {
+
+ Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
+
+ Matcher m_script = p_script.matcher(htmlStr);
+
+ htmlStr = m_script.replaceAll(""); // 过滤script标签
+
+ Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
+
+ Matcher m_style = p_style.matcher(htmlStr);
+
+ htmlStr = m_style.replaceAll(""); // 过滤style标签
+
+ Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
+
+ Matcher m_html = p_html.matcher(htmlStr);
+
+ htmlStr = m_html.replaceAll(""); // 过滤html标签
+
+ Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);
+
+ Matcher m_space = p_space.matcher(htmlStr);
+
+ htmlStr = m_space.replaceAll(""); // 过滤空格回车标签
+
+ return htmlStr.trim(); // 返回文本字符串
+
+ }
+}
diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java b/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java
new file mode 100644
index 0000000..f01a6e7
--- /dev/null
+++ b/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java
@@ -0,0 +1,243 @@
+package com.sincere.file.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.poi.ooxml.POIXMLTypeLoader;
+import org.apache.poi.ooxml.util.DocumentHelper;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.xwpf.usermodel.*;
+import org.apache.xmlbeans.XmlObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.InputSource;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class PoiUtils {
+
+ static Logger logger = LoggerFactory.getLogger(PoiUtils.class);
+
+ public static String createWord(JSONArray questions) {
+
+ XWPFDocument doc = new XWPFDocument();//创建word文档
+
+ for (int i = 0; i < questions.size(); i++) {
+ JSONObject question = questions.getJSONObject(i);
+ String question_text = question.getString("question_text");
+ String channel_type_name = question.getString("channel_type_name");
+ JSONObject options = question.getJSONObject("options");
+ XWPFParagraph p = doc.createParagraph();//新建一个段落
+
+ p.setAlignment(ParagraphAlignment.LEFT);//设置对其方式
+
+ if (channel_type_name.contains("img")){
+ getImg(channel_type_name,doc,p);
+ }else {
+ writeP(HtmlUtil.delHTMLTag(channel_type_name) + "\r\n",p);
+ }
+
+ question_text=question_text.replaceAll(" "," ");
+
+ if (question_text.contains("img")){
+ writeP(question_text.replaceAll("
]*/>", " "), p);
+ getImg(question_text,doc,p);
+ }else {
+ writeP(HtmlUtil.delHTMLTag(question_text) + "\r\n", p);
+ }
+
+ if (null != options) {
+ String A = options.getString("A");
+ if (A.contains("src")) {
+ writeP("A."+A.replaceAll("
]*/>", " "), p);
+ getImg(A, doc,p);
+ } else {
+ writeP( "A." + A+"\r\n", p);
+ }
+
+ String B = options.getString("B");
+ if (B.contains("src")) {
+ writeP("B."+B.replaceAll("
]*/>", " "), p);
+ getImg(B, doc,p);
+ } else {
+ writeP("B." + B+"\r\n", p);
+ }
+
+ String C = options.getString("C");
+ if (C.contains("src")) {
+ writeP("C."+C.replaceAll("
]*/>", " "), p);
+ getImg(C, doc,p);
+ } else {
+ writeP("C." + C+"\r\n", p);
+ }
+
+ String D = options.getString("D");
+ if (D.contains("src")) {
+ writeP("D."+D.replaceAll("
]*/>", " "), p);
+ getImg(D, doc,p);
+ } else {
+ writeP("D." + D+"\r\n", p);
+ }
+ }
+ }
+
+ try {
+ File file = new File("D://POI");
+ if (!file.exists()) file.mkdirs();
+ File file1 = new File(file.getAbsolutePath() + File.separator + System.currentTimeMillis()+".doc");
+ if (!file1.exists()) file1.createNewFile();
+ FileOutputStream out = new FileOutputStream(file1);
+ doc.write(out);
+ out.close();
+ return file1.getAbsolutePath();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+return "";
+ }
+
+
+ private static void writeP( String content, XWPFParagraph p) {
+
+ XWPFRun r = p.createRun();//创建段落文本
+
+ r.setFontSize(14);
+ r.setText(content);
+ r.setColor("000000");//设置颜色
+
+ }
+
+
+ private static void getImg(String imgHtml, XWPFDocument doc,XWPFParagraph paragraph) {
+// imgHtml = HtmlUtil.delHTMLTag(imgHtml);
+// imgHtml = imgHtml.substring(imgHtml.indexOf("src="), imgHtml.indexOf("style"));
+// imgHtml = imgHtml.replace("\"", "");
+// imgHtml = imgHtml.replace("src=", "");
+// logger.error("imgHtml:{}", imgHtml);
+ Set imgSer = getImgStr(imgHtml);
+ Iterator iterator = imgSer.iterator();
+ while (iterator.hasNext()){
+ String imgUrl = iterator.next();
+ String imgName = System.currentTimeMillis() + ".png";
+ String filePath = "D://POI//Img";
+ download(imgUrl, imgName, filePath);
+ writeImg2Word(filePath + File.separator + imgName, doc,paragraph);
+ }
+
+ }
+
+ private static String writeImg2Word(String s, XWPFDocument doc,XWPFParagraph paragraph) {
+
+ try {
+
+ XWPFRun run = paragraph.createRun();
+ // 获取图片
+ InputStream is = new FileInputStream(s);
+ byte[] bs = IOUtils.toByteArray(is);
+ BufferedImage image = ImageIO.read(new ByteArrayInputStream(bs));
+
+ // 获取组装图片宽高,单位pt
+ StringBuffer dataSize = new StringBuffer();
+ dataSize.append("width:").append(image.getWidth()).append("pt;");
+ dataSize.append("height:").append(image.getHeight()).append("pt;");
+
+ // 添加图片到Word中
+ String rid = doc.addPictureData(bs, Document.PICTURE_TYPE_PNG);
+
+ StringBuffer xml = new StringBuffer();
+ xml.append("");
+ xml.append(" \r\n");
+ xml.append(" \r\n");
+ xml.append(" ");
+ xml.append("\r\n");
+
+ InputSource source = new InputSource(new StringReader(xml.toString()));
+
+ org.w3c.dom.Document pictDoc = DocumentHelper.readDocument(source);
+ // 将信息写入run中
+ run.setEmbossed(true);
+ XmlObject xmlObject = XmlObject.Factory.parse(pictDoc.getDocumentElement(), POIXMLTypeLoader.DEFAULT_XML_OPTIONS);
+ run.getCTR().set(xmlObject);
+ run.setText("\r\n");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public static void download(String urlString, String filename, String savePath) {
+ try {
+
+ // 构造URL
+ URL url = new URL(urlString);
+ // 打开连接
+ URLConnection con = url.openConnection();
+ //设置请求超时为5s
+ con.setConnectTimeout(5 * 1000);
+ // 输入流
+ InputStream is = con.getInputStream();
+
+ // 1K的数据缓冲
+ byte[] bs = new byte[1024];
+ // 读取到的数据长度
+ int len;
+ // 输出的文件流
+ File sf = new File(savePath);
+ if (!sf.exists()) {
+ sf.mkdirs();
+ }
+ // 获取图片的扩展名
+ String extensionName = filename.substring(filename.lastIndexOf(".") + 1);
+ // 新的图片文件名 = 编号 +"."图片扩展名
+ OutputStream os = new FileOutputStream(sf.getPath() + "\\" + filename);
+ // 开始读取
+ while ((len = is.read(bs)) != -1) {
+ os.write(bs, 0, len);
+ }
+ // 完毕,关闭所有链接
+ os.close();
+ is.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 得到网页中图片的地址
+ */
+ private static Set getImgStr(String htmlStr) {
+ Set pics = new HashSet();
+ String img = "";
+ Pattern p_image;
+ Matcher m_image;
+ String regEx_img = "]*?>";
+ p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE);
+ m_image = p_image.matcher(htmlStr);
+ while (m_image.find()) {
+ // 得到
数据
+ img = m_image.group();
+ // 匹配
中的src数据
+ Matcher m = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(img);
+ while (m.find()) {
+ pics.add(m.group(1));
+ }
+ }
+ return pics;
+ }
+
+}
diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java
index c496fc8..659e0bc 100644
--- a/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java
+++ b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java
@@ -2,6 +2,7 @@ package com.sincere.getaway;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
/**
* 统一网关配置
diff --git a/cloud/getaway/src/main/resources/application.yml b/cloud/getaway/src/main/resources/application.yml
index c46eb76..7320d89 100644
--- a/cloud/getaway/src/main/resources/application.yml
+++ b/cloud/getaway/src/main/resources/application.yml
@@ -28,28 +28,29 @@ spring:
filters:
- StripPrefix=1
- id: SmartCampusWebApi
- uri: http://120.26.116.253:9022
-# uri: lb://SmartCampusWebApi
+# uri: http://120.26.116.253:9022
+ uri: lb://SmartCampusWebApi
predicates:
- Path=/SmartCampusWebApi/**
filters:
- StripPrefix=1
- id: file-center
-# uri: lb://file-center
- uri: http://121.40.30.78:5000
+ uri: lb://file-center
+# uri: http://121.40.30.78:5000
predicates:
- Path=/file-center/**
filters:
- StripPrefix=1
- id: authserver
- uri: http://121.40.30.78:9005
-# uri: lb://authserver
+# uri: http://121.40.30.78:9005
+ uri: lb://authserver
predicates:
- Path=/authserver/**
filters:
- StripPrefix=1
- id: NewSmartCampus
- uri: http://114.55.30.100:1111
+# uri: http://114.55.30.100:1111
+ uri: lb://NewSmartCampus
predicates:
- Path=/NewSmartCampus/**
filters:
--
libgit2 0.21.0