diff --git a/austin-common/src/main/java/com/java3y/austin/common/dto/model/EnterpriseWeChatRobotContentModel.java b/austin-common/src/main/java/com/java3y/austin/common/dto/model/EnterpriseWeChatRobotContentModel.java index 926c3ab..5d2e5b1 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/dto/model/EnterpriseWeChatRobotContentModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/dto/model/EnterpriseWeChatRobotContentModel.java @@ -27,6 +27,16 @@ public class EnterpriseWeChatRobotContentModel extends ContentModel { */ private String content; + /** + * 图片内容(base64编码前)的md5值 + */ + private String md5; + + /** + * 图片内容的base64编码 + */ + private String base64; + /** * 媒体Id */ diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRobotParam.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRobotParam.java index d2084eb..f731ee7 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRobotParam.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRobotParam.java @@ -9,9 +9,8 @@ import lombok.NoArgsConstructor; import java.util.List; /** - * 钉钉自定义机器人 入参 - * - * https://open.dingtalk.com/document/group/custom-robot-access + * 企业微信自定义机器人 入参 + * https://developer.work.weixin.qq.com/document/path/91770#%E6%96%87%E6%9C%AC%E7%B1%BB%E5%9E%8B * * @author 3y */ @@ -97,6 +96,7 @@ public class EnterpriseWeChatRobotParam { @JSONField(name = "content") private String content; } + /** * ImageDTO */ diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRootResult.java b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRootResult.java new file mode 100644 index 0000000..b42360c --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/domain/wechat/robot/EnterpriseWeChatRootResult.java @@ -0,0 +1,33 @@ +package com.java3y.austin.handler.domain.wechat.robot; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 企业微信 机器人 返回值 + * https://developer.work.weixin.qq.com/document/path/91770#%E6%96%87%E6%9C%AC%E7%B1%BB%E5%9E%8B + * + * @author 3y + * @date 2022/12/26 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Builder +public class EnterpriseWeChatRootResult { + + + @JSONField(name = "errcode") + private Integer errcode; + @JSONField(name = "errmsg") + private String errmsg; + @JSONField(name = "type") + private String type; + @JSONField(name = "media_id") + private String mediaId; + @JSONField(name = "created_at") + private String createdAt; +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java index e66c3eb..ba4666d 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/EnterpriseWeChatRobotHandler.java @@ -1,35 +1,25 @@ package com.java3y.austin.handler.handler.impl; -import cn.hutool.core.codec.Base64; -import cn.hutool.core.io.file.FileReader; -import cn.hutool.crypto.digest.DigestUtil; -import cn.hutool.crypto.digest.MD5; import cn.hutool.http.ContentType; import cn.hutool.http.Header; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.google.common.base.Throwables; -import com.java3y.austin.common.constant.SendAccountConstant; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.account.EnterpriseWeChatRobotAccount; import com.java3y.austin.common.dto.model.EnterpriseWeChatRobotContentModel; import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.common.enums.SendMessageType; import com.java3y.austin.handler.domain.wechat.robot.EnterpriseWeChatRobotParam; +import com.java3y.austin.handler.domain.wechat.robot.EnterpriseWeChatRootResult; import com.java3y.austin.handler.handler.BaseHandler; import com.java3y.austin.handler.handler.Handler; import com.java3y.austin.support.domain.MessageTemplate; import com.java3y.austin.support.utils.AccountUtils; import lombok.extern.slf4j.Slf4j; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; import java.util.List; /** @@ -51,17 +41,17 @@ public class EnterpriseWeChatRobotHandler extends BaseHandler implements Handler @Override public boolean handler(TaskInfo taskInfo) { try { - EnterpriseWeChatRobotAccount account = accountUtils.getAccountById(taskInfo.getSendAccount(), EnterpriseWeChatRobotAccount.class); + EnterpriseWeChatRobotAccount account = accountUtils.getAccountById(taskInfo.getSendAccount(), EnterpriseWeChatRobotAccount.class); EnterpriseWeChatRobotParam enterpriseWeChatRobotParam = assembleParam(taskInfo); String result = HttpRequest.post(account.getWebhook()).header(Header.CONTENT_TYPE.getValue(), ContentType.JSON.getValue()) .body(JSON.toJSONString(enterpriseWeChatRobotParam)) .timeout(2000) .execute().body(); - JSONObject jsonObject = JSON.parseObject(result); - if (jsonObject.getInteger("errcode") != 0) { + EnterpriseWeChatRootResult weChatRootResult = JSON.parseObject(result, EnterpriseWeChatRootResult.class); + if (weChatRootResult.getErrcode() == 0) { return true; } - log.error("EnterpriseWeChatRobotHandler#handler fail! result:{},params:{}", JSON.toJSONString(jsonObject), JSON.toJSONString(taskInfo)); + log.error("EnterpriseWeChatRobotHandler#handler fail! result:{},params:{}", JSON.toJSONString(weChatRootResult), JSON.toJSONString(taskInfo)); } catch (Exception e) { log.error("EnterpriseWeChatRobotHandler#handler fail!e:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); } @@ -80,10 +70,7 @@ public class EnterpriseWeChatRobotHandler extends BaseHandler implements Handler param.setMarkdown(EnterpriseWeChatRobotParam.MarkdownDTO.builder().content(contentModel.getContent()).build()); } if (SendMessageType.IMAGE.getCode().equals(contentModel.getSendType())) { - FileReader fileReader = new FileReader(contentModel.getImagePath()); - byte[] bytes = fileReader.readBytes(); - param.setImage(EnterpriseWeChatRobotParam.ImageDTO.builder().base64(Base64.encode(bytes)) - .md5(DigestUtil.md5Hex(bytes)).build()); + param.setImage(EnterpriseWeChatRobotParam.ImageDTO.builder().base64(contentModel.getBase64()).md5(contentModel.getMd5()).build()); } if (SendMessageType.FILE.getCode().equals(contentModel.getSendType())) { param.setFile(EnterpriseWeChatRobotParam.FileDTO.builder().mediaId(contentModel.getMediaId()).build()); diff --git a/austin-web/src/main/java/com/java3y/austin/web/constants/AmisVoConstant.java b/austin-web/src/main/java/com/java3y/austin/web/constants/AmisVoConstant.java deleted file mode 100644 index 564d454..0000000 --- a/austin-web/src/main/java/com/java3y/austin/web/constants/AmisVoConstant.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.java3y.austin.web.constants; - -/** - * amis常量信息 - * @author 3y - */ -public class AmisVoConstant { - - public static final String LEGEND_TITLE = "人数"; - public static final String TYPE = "bar"; - -} diff --git a/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java b/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java index 1f89102..6b3a398 100644 --- a/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java +++ b/austin-web/src/main/java/com/java3y/austin/web/utils/Convert4Amis.java @@ -13,7 +13,6 @@ import com.java3y.austin.common.enums.SmsStatus; import com.java3y.austin.support.domain.ChannelAccount; import com.java3y.austin.support.domain.SmsRecord; import com.java3y.austin.support.utils.TaskInfoUtils; -import com.java3y.austin.web.constants.AmisVoConstant; import com.java3y.austin.web.vo.amis.CommonAmisVo; import com.java3y.austin.web.vo.amis.EchartsVo; import com.java3y.austin.web.vo.amis.SmsTimeLineVo; @@ -37,6 +36,7 @@ import java.util.stream.Collectors; @Slf4j public class Convert4Amis { + /** * 标识忽略 */ @@ -60,7 +60,7 @@ public class Convert4Amis { * 需要格式化为jsonArray返回的字段 * (前端是一个JSONArray传递进来) */ - private static final List PARSE_JSON_ARRAY = Arrays.asList("feedCards", "btns"); + private static final List PARSE_JSON_ARRAY = Arrays.asList("feedCards", "btns","articles"); /** * (前端是一个JSONObject传递进来,返回一个JSONArray回去) @@ -393,9 +393,9 @@ public class Convert4Amis { return EchartsVo.builder() .title(EchartsVo.TitleVO.builder().text(title).build()) - .legend(EchartsVo.LegendVO.builder().data(Arrays.asList(AmisVoConstant.LEGEND_TITLE)).build()) + .legend(EchartsVo.LegendVO.builder().data(Arrays.asList("人数")).build()) .xAxis(EchartsVo.XAxisVO.builder().data(xAxisList).build()) - .series(Arrays.asList(EchartsVo.SeriesVO.builder().name(AmisVoConstant.LEGEND_TITLE).type(AmisVoConstant.TYPE).data(actualData).build())) + .series(Arrays.asList(EchartsVo.SeriesVO.builder().name("人数").type("bar").data(actualData).build())) .yAxis(EchartsVo.YAxisVO.builder().build()) .tooltip(EchartsVo.TooltipVO.builder().build()) .build();