From f010efcee60728311dbe68f457f4778dd7b1fa73 Mon Sep 17 00:00:00 2001 From: Jackwang Date: Sat, 15 Feb 2020 14:09:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E5=93=A8=E5=8D=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../esua/epdc/dto/form/CreateCodeFormDTO.java | 26 ++++ .../epdc-custom/epdc-custom-server/pom.xml | 25 ++++ .../EpidemicSentryPostController.java | 30 +++- .../epidemic/feign/OssFeignClient.java | 31 +++++ .../fallback/OssFeignClientFallback.java | 22 +++ .../service/EpidemicSentryPostService.java | 22 ++- .../impl/EpidemicSentryPostServiceImpl.java | 128 +++++++++++++++++- .../src/main/resources/application.yml | 19 +++ 8 files changed, 296 insertions(+), 7 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-custom/epdc-custom-client/src/main/java/com/elink/esua/epdc/dto/form/CreateCodeFormDTO.java create mode 100644 esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/OssFeignClient.java create mode 100644 esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/fallback/OssFeignClientFallback.java diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-client/src/main/java/com/elink/esua/epdc/dto/form/CreateCodeFormDTO.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-client/src/main/java/com/elink/esua/epdc/dto/form/CreateCodeFormDTO.java new file mode 100644 index 000000000..fd50d318c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-client/src/main/java/com/elink/esua/epdc/dto/form/CreateCodeFormDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @program: esua-epdc-cloud + * @description: 生成小程序码 + * @author: wangtong + * @create: 2020-02-14 17:38 + **/ +@Data +public class CreateCodeFormDTO implements Serializable { + + + /** + * 网格id + */ + private String gridId; + + /** + * 哨卡id + */ + private String postId; +} diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml index f10985631..4dcbc9200 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/pom.xml @@ -63,6 +63,24 @@ orika-spring-boot-starter 1.8.0 + + com.esua.epdc + epdc-admin-client + 1.0.0 + compile + + + + + + + + + + com.esua.epdc + epdc-commons-tools-wx-ma + ${project.version} + @@ -133,6 +151,13 @@ 6379 elink@888 + + wxdd8530c5f4926766 + 5bf4fb813145431b3493a10aa7e041e9 + + wx29b074840ef4bfd9 + 4adb1afccc69f205cdf5b521d74e2aca + diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java index 456a823d4..a5849939b 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/controller/EpidemicSentryPostController.java @@ -23,9 +23,10 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.AssertUtils; 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.UpdateGroup; 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.EpidemicSentryPostDTO; +import com.elink.esua.epdc.dto.form.CreateCodeFormDTO; import com.elink.esua.epdc.modules.epidemic.excel.EpidemicSentryPostExcel; import com.elink.esua.epdc.modules.epidemic.service.EpidemicSentryPostService; import org.springframework.beans.factory.annotation.Autowired; @@ -145,5 +146,32 @@ public class EpidemicSentryPostController { return epidemicSentryPostService.insertEpidemicList(file); } + /** + *生成哨卡单个小程序码 + * + * @author wangtong + * @date 2020/2/14 17:46 + * @param [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("createCode") + public Result createCode(@RequestBody CreateCodeFormDTO formDto){ + ValidatorUtils.validateEntity(formDto, new Class[0]); + return this.epidemicSentryPostService.CreateCodeFormDTO(formDto); + } + + /** + *生成哨卡多个小程序码 + * + * @author wangtong + * @date 2020/2/14 17:46 + * @param [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("createCodes") + public Result createCodes(@RequestBody CreateCodeFormDTO formDto){ + ValidatorUtils.validateEntity(formDto, new Class[0]); + return this.epidemicSentryPostService.CreateCodeFormDTOs(formDto); + } } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/OssFeignClient.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/OssFeignClient.java new file mode 100644 index 000000000..ea678737a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/OssFeignClient.java @@ -0,0 +1,31 @@ +package com.elink.esua.epdc.modules.epidemic.feign; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.modules.epidemic.feign.fallback.OssFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; + + +/** + * @author work@yujt.net.cn + * @date 19/9/19 10:12 + */ +@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class) +public interface OssFeignClient { +//,url = "http://127.0.0.1:9095" + + /** + * File文件上传到文件服务器 + * + * @param dto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/9/19 10:15 + */ + @PostMapping(value = "oss/file/uploadFile", consumes = MediaType.APPLICATION_JSON_VALUE) + Result uploadFile(UploadToOssDTO dto); + +} diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/fallback/OssFeignClientFallback.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/fallback/OssFeignClientFallback.java new file mode 100644 index 000000000..ac7f8779e --- /dev/null +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/feign/fallback/OssFeignClientFallback.java @@ -0,0 +1,22 @@ +package com.elink.esua.epdc.modules.epidemic.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.dto.UploadToOssDTO; +import com.elink.esua.epdc.modules.epidemic.feign.OssFeignClient; +import org.springframework.stereotype.Component; + +/** + * @author work@yujt.net.cn + * @date 19/9/19 10:12 + */ +@Component +public class OssFeignClientFallback implements OssFeignClient { + + @Override + public Result uploadFile(UploadToOssDTO dto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "uploadFile", dto.getFileName()); + } + +} diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java index 702bf56c7..17be68cc5 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/epidemic/service/EpidemicSentryPostService.java @@ -21,9 +21,8 @@ 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; import com.elink.esua.epdc.dto.EpidemicSentryPostDTO; +import com.elink.esua.epdc.dto.form.CreateCodeFormDTO; import com.elink.esua.epdc.modules.epidemic.entity.EpidemicSentryPostEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -132,4 +131,23 @@ public interface EpidemicSentryPostService extends BaseService page(Map params) { IPage page = baseDao.selectPage( @@ -163,4 +181,106 @@ public class EpidemicSentryPostServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>(data); + List categoryEntityList = baseDao.selectList(wrapper); + if(categoryEntityList.size()==0 || categoryEntityList==null){ + throw new RenException("根据网格id未查到哨卡信息!"); + } + for(EpidemicSentryPostEntity entity : categoryEntityList){ + String param = "G="+entity.getGridId()+";P="+entity.getSentryPostCode(); + entity.setMaCodeUrl(this.createMaCode(param,MA_FRONT_PAGE_URL)); +// entity.setMaCodeUrl("testUrl222"); + baseDao.updateById(entity); + } + return new Result().ok("批量生成小程序码成功。"); + } + + /** + * 创建微信小程序码,并上传到oss + * + * @param param 小程序码的参数 + * @param pageUrl 小程序码的跳转链接 + * @return java.lang.String 小程序码的下载抵制 + * @author work@yujt.net.cn + * @date 2019/10/22 10:14 + */ + private String createMaCode(String param, String pageUrl) { + File wxaCodeUnlimit; + try { + wxaCodeUnlimit = wxMaServiceUtils.normalWxMaService().getQrcodeService() + .createWxaCodeUnlimit(param, pageUrl, 1280, true, null, false); + } catch (WxErrorException e) { + throw new RenException("请求微信接口失败"); + } + + UploadToOssDTO dto = new UploadToOssDTO(); + dto.setFileByte(this.fileToByteArray(wxaCodeUnlimit)); + dto.setFileName(wxaCodeUnlimit.getName()); + + Result ossResult = ossFeignClient.uploadFile(dto); + if (null == ossResult || !ossResult.success() || null == ossResult.getData()) { + throw new RenException("小程序码上传失败"); + } + return ossResult.getData(); + } + + /** + * File文件转为byte[] + * + * @param file + * @return byte[] + * @author work@yujt.net.cn + * @date 2019/9/19 15:56 + */ + private byte[] fileToByteArray(File file) { + try { + //获取输入流 + FileInputStream fis = new FileInputStream(file); + //新的 byte 数组输出流,缓冲区容量1024byte + ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); + //缓存 + byte[] b = new byte[1024]; + int n; + while ((n = fis.read(b)) != NumConstant.ONE_NEG) { + bos.write(b, NumConstant.ZERO, n); + } + fis.close(); + //改变为byte[] + byte[] data = bos.toByteArray(); + bos.close(); + return data; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/resources/application.yml index a2323c50c..ce56ceb88 100644 --- a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/resources/application.yml @@ -64,3 +64,22 @@ mybatis-plus: map-underscore-to-camel-case: true cache-enabled: false call-setters-on-nulls: true + +wx: + ma: + configs: + - appid: @wx.ma.appId@ + secret: @wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON + - appid: @work.wx.ma.appId@ + secret: @work.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON + appId: + # 普通居民端的appId + normal: @wx.ma.appId@ + # 工作端的appId + work: @work.wx.ma.appId@ \ No newline at end of file