diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 489eb10876..333b3eb9d2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -17,17 +17,19 @@ package com.epmet.controller; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.constant.StrConstant; -import com.epmet.commons.tools.enums.EnvEnum; +import com.epmet.commons.tools.enums.CollectUrlEnum; import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.BarcodeUtils; +import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.CustomerAgencyConstant; @@ -37,10 +39,13 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.CustomerAgencyEntity; import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.feign.OssFeignClient; +import com.epmet.resi.group.dto.QRCodeMultipartFileDTO; import com.epmet.send.SendMqMsgUtil; import com.epmet.service.AgencyService; import com.epmet.service.CustomerAgencyService; import com.epmet.service.IcNeighborHoodService; +import com.epmet.utils.ThirdUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -55,9 +60,9 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; +import java.net.URL; import java.net.URLEncoder; -import java.time.LocalDateTime; -import java.time.ZoneOffset; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -81,6 +86,8 @@ public class AgencyController { private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; @Autowired private IcNeighborHoodService neighborHoodService; + @Autowired + private OssFeignClient ossFeignClient; /** * @param formDTO @@ -399,41 +406,60 @@ public class AgencyController { public void createQrCode(@LoginUser TokenDto tokenDto, @RequestBody CreateQrCodeFormDTO formDTO, HttpServletResponse response) { ValidatorUtils.validateEntity(formDTO, CreateQrCodeFormDTO.CreateQrCodeForm.class); String id = formDTO.getId(); - String type = formDTO.getType(); String name = ""; + if(!formDTO.getType().equals(OrgInfoConstant.COMMUNITY)){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "只可生成社区码"); + } try { - if (type.equals(OrgInfoConstant.COMMUNITY)) { - CustomerAgencyDTO customerAgencyDTO = customerAgencyService.get(id); - if (customerAgencyDTO == null) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织信息不存在"); + //获取AccessToken + String accessToken = ThirdUtils.getAccessToken(tokenDto.getCustomerId()).getResiToken(); + if (org.apache.commons.lang3.StringUtils.isBlank(accessToken)) { + log.warn("获取accessToken失败,customerId:{}", tokenDto.getCustomerId()); + throw new RenException("获取accessToken失败,customerId:{}", tokenDto.getCustomerId()); + } + CustomerAgencyDTO customerAgencyDTO = customerAgencyService.get(id); + if (customerAgencyDTO == null) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织信息不存在"); + } + name = customerAgencyDTO.getOrganizationName(); + //url组成:信息采集地址?社区id + StringBuilder path = new StringBuilder(CollectUrlEnum.URL_PRE.getCode()); + path.append("?agencyId=").append(formDTO.getId()); + //需要发送的Json + JSONObject data = new JSONObject(); + data.put("path", path.toString()); + data.put("width", 400); + //发送 + byte[] buffer = HttpClientManager.getInstance().getMediaByteArray(CollectUrlEnum.GET_CODE_URL.getCode() + accessToken, JSON.toJSONString(data)).getData(); + if (buffer != null && buffer.length < 500) { + String wxResult = ""; + wxResult = new String(buffer, StandardCharsets.UTF_8); + if (-1 != wxResult.indexOf("errcode")) { + log.error("获取二维码接口返回错误:{}", wxResult); + throw new RenException("获取二维码失败"); } - name = customerAgencyDTO.getOrganizationName(); - } else { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区信息不存在"); } - //url组成:数字社区地址?小区id&用户id - //String url = "https://demo.tduckapp.com/s/7314b64b3a26455ab793fb8c640856b6?id="+id; - String url = EnvEnum.getCurrentEnv().getUrl() - .replace("cloud", "open") - .replace("api/", StrConstant.EPMETY_STR) - .concat("epmet-oper-gov/#/caiji/") - .concat(id).concat("?") - .concat("name=").concat(URLEncoder.encode(name, StrConstant.UTF_8)).concat(StrConstant.AND_MARK) - .concat("customerId=").concat(tokenDto.getCustomerId()).concat(StrConstant.AND_MARK) - .concat("type=").concat(type).concat(StrConstant.AND_MARK) - .concat("userId=").concat(tokenDto.getUserId()) - .concat(StrConstant.AND_MARK).concat(String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli())); - BufferedImage image = BarcodeUtils.drawQRImage(name, url); - //BufferedImage 转 InputStream + //上传 + QRCodeMultipartFileDTO qrCodeMultipartFile = new QRCodeMultipartFileDTO(); + qrCodeMultipartFile.setBytes(buffer); + String originalFilename = name.concat(".jpg"); + qrCodeMultipartFile.setOriginalFilename(originalFilename); + Result uploadResult = ossFeignClient.uploadQrCode(qrCodeMultipartFile); + if (!uploadResult.success()) { + throw new RenException("调用oss服务上传活动居民信息录入码失败"); + } + + URL url = new URL(uploadResult.getData().getUrl()); + BufferedImage img = ImageIO.read(url); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ImageOutputStream imageOutput = ImageIO.createImageOutputStream(byteArrayOutputStream); - ImageIO.write(image, "png", imageOutput); + ImageIO.write(img, "png", imageOutput); InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); long length = imageOutput.length(); - String fileName = name + ".png"; response.setContentType("application/octet-stream"); response.setContentLength((int) length); - response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StrConstant.UTF_8)); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(originalFilename, StrConstant.UTF_8)); //输出流 byte[] bytes = new byte[1024]; @@ -445,6 +471,7 @@ public class AgencyController { outputStream.write(bytes, 0, len); } outputStream.flush(); + } catch (Exception e) { log.error("method exception", e); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.41__ic_neighbor_hood_update.sql b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.41__ic_neighbor_hood_update.sql new file mode 100644 index 0000000000..754bf0631a --- /dev/null +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.41__ic_neighbor_hood_update.sql @@ -0,0 +1 @@ +alter table ic_neighbor_hood add COLUMN `QRCODE_URL` varchar(255) DEFAULT NULL COMMENT '二维码地址'; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java index 1e52c6c062..987783a172 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiCollectMemFormDTO.java @@ -84,8 +84,4 @@ public class IcResiCollectMemFormDTO implements Serializable { */ private String faceImg; - /** - * 是否是党员 - */ - private String isParty; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java index e09da97e03..e49fbeb008 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiMemberEntity.java @@ -87,9 +87,4 @@ public class IcResiMemberEntity extends BaseEpmetEntity { * 人脸头像 */ private String faceImg; - - /** - * 是否是党员 - */ - private String isParty; } diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.63__alter_collect.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.63__alter_collect.sql new file mode 100644 index 0000000000..fa54cfab0e --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.63__alter_collect.sql @@ -0,0 +1,36 @@ +alter table ic_resi_collect add COLUMN `CHECK_STATE` varchar(1) DEFAULT NULL COMMENT '审核状态:0待审核 1审核不通过 2审核通过'; +alter table ic_resi_collect add COLUMN `CHECK_REASON` varchar(255) DEFAULT NULL COMMENT '审核理由'; + + +alter table ic_resi_member add COLUMN `RELATIONSHIP` varchar(10) DEFAULT NULL COMMENT '与户主关系'; +alter table ic_resi_member add COLUMN `FACE_IMG` varchar(255) DEFAULT NULL COMMENT '人脸照片'; + + +CREATE TABLE `ic_resi_collect_visitor` ( + `ID` varchar(64) NOT NULL COMMENT '主键', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id customer.id', + `GRID_ID` varchar(64) DEFAULT NULL COMMENT '网格ID', + `AGENCY_ID` varchar(64) DEFAULT NULL COMMENT '组织Id', + `PIDS` varchar(255) DEFAULT NULL COMMENT '组织的pids', + `VILLAGE_ID` varchar(64) DEFAULT NULL COMMENT '所属小区ID;', + `VILLAGE_NAME` varchar(64) DEFAULT NULL COMMENT '所属小区名称', + `BUILD_ID` varchar(64) DEFAULT NULL COMMENT '所属楼宇Id', + `BUILD_NAME` varchar(64) DEFAULT NULL COMMENT '所属楼宇名称', + `UNIT_ID` varchar(64) DEFAULT NULL COMMENT '单元id', + `UNIT_NAME` varchar(64) DEFAULT NULL COMMENT '单元名', + `HOME_ID` varchar(64) DEFAULT NULL COMMENT '所属家庭Id', + `HOME_NAME` varchar(64) DEFAULT NULL COMMENT '房间名', + `ADDRESS` varchar(255) NOT NULL COMMENT '详细地址', + `NAME` varchar(64) NOT NULL COMMENT '姓名', + `MOBILE` varchar(15) NOT NULL COMMENT '手机号', + `ID_CARD` varchar(18) DEFAULT NULL COMMENT '身份证号', + `COME_REASON` varchar(255) DEFAULT NULL COMMENT '来访事由', + `FACE_IMG` varchar(255) DEFAULT NULL COMMENT '人脸照片', + `DEL_FLAG` int(11) NOT NULL DEFAULT '0' COMMENT '删除标识 0.未删除 1.已删除', + `REVISION` int(11) NOT NULL COMMENT '乐观锁', + `CREATED_BY` varchar(64) NOT NULL COMMENT '创建人', + `CREATED_TIME` datetime NOT NULL COMMENT '创建时间', + `UPDATED_BY` varchar(64) NOT NULL COMMENT '更新人', + `UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='居民信息采集-访客';