Browse Source

生成小程序二维码

master
yanyan 3 years ago
parent
commit
241e0161e9
  1. 14
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html
  2. 4
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java
  3. 65
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/LocalFileMultipartFile.java
  4. 2
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java
  5. 58
      lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java

14
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/project/scene/manage.html

@ -41,7 +41,7 @@
shiro:hasPermission="project:scene:remove">
<i class="fa fa-remove"></i> 全部删除
</a>
<a class="btn btn-action" shiro:hasPermission="project:scene:remove">
<a class="btn btn-action" shiro:hasPermission="project:scene:remove" onclick="generateQRCode()">
<i class="fa fa-save"></i> 生成二维码
</a>
<a class="btn btn-warning" shiro:hasPermission="project:scene:remove">
@ -206,6 +206,18 @@
});
}
function generateQRCode() {
table.set();
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
if (rows.length == 0) {
$.modal.alertWarning("请选择一条记录");
return;
}
$.post(ctx + "small/scene/manage/generateQRCode/", {"guid": rows.join()}, function (req,status ) {
})
}
</script>
</body>
<script id="importTpl" type="text/template">

4
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/controller/SceneManageController.java

@ -72,8 +72,8 @@ public class SceneManageController extends BaseController {
*/
@PostMapping("/generateQRCode")
@ResponseBody
public void generateQRCode(SceneManage sceneManage,HttpServletResponse response) throws Exception{
sceneManageService.generateQRCode(sceneManage,response);
public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception{
return sceneManageService.generateQRCode(sceneManage);
}
/**

65
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/domain/LocalFileMultipartFile.java

@ -0,0 +1,65 @@
package com.zdxt.knowledge.domain;
import org.springframework.http.MediaType;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class LocalFileMultipartFile implements MultipartFile {
private final File file;
public LocalFileMultipartFile(File file) {
this.file = file;
}
@Override
public String getName() {
return file.getName();
}
@Override
public String getOriginalFilename() {
return file.getName();
}
@Override
public String getContentType() {
return MediaType.APPLICATION_OCTET_STREAM_VALUE;
}
@Override
public boolean isEmpty() {
return file.exists();
}
@Override
public long getSize() {
try (FileInputStream fileInputStream = new FileInputStream(file)) {
return fileInputStream.available();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public byte[] getBytes() throws IOException {
return FileCopyUtils.copyToByteArray(file);
}
@Override
public InputStream getInputStream() throws IOException {
return new FileInputStream(file);
}
@Override
public void transferTo(File dest) throws IOException, IllegalStateException {
FileCopyUtils.copy(file, dest);
}
}

2
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/ISceneManageService.java

@ -43,7 +43,7 @@ public interface ISceneManageService {
public List<SceneManage> selectSceneManageListAll(SceneManage sceneManage);
public void generateQRCode(SceneManage sceneManage,HttpServletResponse response) throws Exception;
public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception;
/**
* 新增请填写功能名称

58
lib/EmergencyService/zdxtEmergencyKnowledgeService/src/main/java/com/zdxt/knowledge/service/impl/SceneManageServiceImpl.java

@ -22,6 +22,7 @@ import com.zdxt.common.util.http.HttpUtils;
import com.zdxt.common.zdxtFile.AttFileRespDTO;
import com.zdxt.common.zdxtFile.FilePreviewUtilBean;
import com.zdxt.common.zdxtFile.ZdxtFileCommon;
import com.zdxt.knowledge.domain.LocalFileMultipartFile;
import com.zdxt.knowledge.domain.SceneImportDataModel;
import com.zdxt.knowledge.domain.SceneManage;
import com.zdxt.knowledge.mapper.SceneManageMapper;
@ -30,6 +31,7 @@ import com.zdxt.knowledge.utils.ExcelUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
@ -114,11 +116,7 @@ public class SceneManageServiceImpl implements ISceneManageService {
}
@Override
public void generateQRCode(SceneManage sceneManage, HttpServletResponse response) throws Exception {
response.setContentType("image/gif");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
public ZDResponse generateQRCode(SceneManage sceneManage) throws Exception {
String accessToken = getAccessToken();
String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
@ -129,22 +127,28 @@ public class SceneManageServiceImpl implements ISceneManageService {
paramJson.set("check_path", false);
paramJson.set("width", 280);
//scene数据不能中文
paramJson.set("scene", "4f5d2f4dd813443e83f399e743adec50");
paramJson.set("scene", sceneManage.getGuid());
//设置小程序码版本
//paramJson.set("env_version","release"); 默认正式
//paramJson.set("env_version", "trial"); //体验版
paramJson.set("env_version", "develop"); //开发版
InputStream inputStream = HttpUtils.postInputStream(url, paramJson);
//将流写出到response
IoUtil.copy(inputStream, response.getOutputStream());
//存入本地数据库
File file = File.createTempFile("temp", ".png");
FileOutputStream outputStream = new FileOutputStream(file);
IoUtil.copy(inputStream, outputStream);
MultipartFile multipartFile = toMultipartFile(file.getName(),file);
zdxtFileCommonApi.insertZdxtFile(multipartFile, sceneManage.getGuid() + "", fileUploadApi.upload(multipartFile));
FileUtils.copyInputStreamToFile(inputStream,file);
MultipartFile multipartFile = new LocalFileMultipartFile(file);
String uploadPath = fileUploadApi.upload(multipartFile);
zdxtFileCommonApi.deleteZdxtFileByIds(sceneManage.getGuid() + "0000");
zdxtFileCommonApi.insertZdxtFile(multipartFile, sceneManage.getGuid() + "0000", uploadPath);
sceneManage.setUpdateTime(DateUtils.getNowDate());
sceneManage.setUrl(uploadPath);
int result = sceneManageMapper.updateSceneManage(sceneManage);
file.deleteOnExit();
if (result>0) {
return ZDResponse.success("生成二维码成功");
}
return ZDResponse.error("生成二维码失败");
}
public String getAccessToken() {
@ -156,21 +160,21 @@ public class SceneManageServiceImpl implements ISceneManageService {
return jsonObject.get("access_token").toString();
}
public static MultipartFile toMultipartFile(String fieldName, File file) throws Exception {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
String contentType = new MimetypesFileTypeMap().getContentType(file);
FileItem fileItem = diskFileItemFactory.createItem(fieldName, contentType, false, file.getName());
try (
InputStream inputStream = new ByteArrayInputStream(FileCopyUtils.copyToByteArray(file));
OutputStream outputStream = fileItem.getOutputStream()
) {
FileCopyUtils.copy(inputStream, outputStream);
} catch (Exception e) {
throw e;
}
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
return multipartFile;
}
// public static MultipartFile toMultipartFile(String fieldName, File file) throws Exception {
// DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
// String contentType = new MimetypesFileTypeMap().getContentType(file);
// FileItem fileItem = diskFileItemFactory.createItem(fieldName, contentType, false, file.getName());
// try (
// InputStream inputStream = new ByteArrayInputStream(FileCopyUtils.copyToByteArray(file));
// OutputStream outputStream = fileItem.getOutputStream()
// ) {
// FileCopyUtils.copy(inputStream, outputStream);
// } catch (Exception e) {
// throw e;
// }
// MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
// return multipartFile;
// }
/**
* 新增请填写功能名称

Loading…
Cancel
Save