From ebb179781f60bfa4c2ff3f7dd766fa2616b954e6 Mon Sep 17 00:00:00 2001 From: zzt Date: Wed, 10 Mar 2021 13:02:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E9=BA=A6=E5=90=9BAPI=EF=BC=9A/api/req?= =?UTF-8?q?/taginfo/xiaomaijun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yuyou/openapi/openapi/api/ABClient.java | 60 ++++++++++++ .../openapi/dao/XmjMessageRepository.java | 20 ++++ .../model/convert/ABMessageConverter.java | 1 + .../openapi/model/dataobject/SyMessageDO.java | 97 +++++++++++++++++++ .../model/dataobject/XmjMessageDO.java | 97 +++++++++++++++++++ .../openapi/model/dto/XmjMessageDTO.java | 35 +++++++ .../model/vo/ABClientXMJMessageVO.java | 29 ++++++ .../openapi/model/vo/data/DetailInfo.java | 95 ++++++++++++++++++ .../openapi/model/vo/data/MessageInfo.java | 46 +++++++++ .../openapi/service/ABClientService.java | 9 ++ .../openapi/service/ABMessageService.java | 10 ++ .../service/impl/ABClientServiceImpl.java | 47 +++++++++ .../service/impl/ABClientServiceProxy.java | 6 ++ .../service/impl/ABMessageServiceImpl.java | 8 ++ .../openapi/openapi/task/ABDownTask.java | 67 ++++++++++++- src/main/resources/application.yml | 12 +++ 16 files changed, 638 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/yuyou/openapi/openapi/dao/XmjMessageRepository.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/dataobject/SyMessageDO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/dataobject/XmjMessageDO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/dto/XmjMessageDTO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientXMJMessageVO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/vo/data/DetailInfo.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/vo/data/MessageInfo.java diff --git a/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java b/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java index cab5ce0..aca58c2 100644 --- a/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java +++ b/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java @@ -245,6 +245,62 @@ public class ABClient { CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); } + /** + * 小麦君 + * @date 2021-3-5 16:16:31 + * @param vo + * @return + */ + @PostMapping("/api/req/taginfo/xiaomaijun") + @ResponseBody + public CommonResponse xiaoMaiJun(@RequestBody ABClientXMJMessageVO vo){ + + // 记录日志 + log.info("====== [ xiaomaijun request comming, request content is {} ] ======", vo.toString()); + + return abClientService.saveXmj(vo) ? + CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); + + + } + + /** + * 双英 + * @date 2021-3-5 16:16:59 + * @param vo + * @return + */ + @PostMapping("/api/req/taginfo/shangyin") + @ResponseBody + public CommonResponse shuangYin(@RequestBody ABClientXMJMessageVO vo){ + + // 记录日志 + log.info("====== [ xiaomaijun request comming, request content is {} ] ======", vo.toString()); + + return abClientService.saveXmj(vo) ? + CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); + + + } + + /** + * 双英 + * @date 2021-3-5 16:16:59 + * @param vo + * @return + */ + @PostMapping("/api/req/taginfo/shangyin") + @ResponseBody + public CommonResponse shuangYin(@RequestBody ABClientXMJMessageVO vo){ + + // 记录日志 + log.info("====== [ xiaomaijun request comming, request content is {} ] ======", vo.toString()); + + return abClientService.saveXmj(vo) ? + CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); + + + } /** * 获取上游公司的AB数据推送接口 @@ -583,4 +639,8 @@ public class ABClient { return abClientService.recordFudaojunClientMsg(atoCvt)? CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); } + + + + } diff --git a/src/main/java/com/yuyou/openapi/openapi/dao/XmjMessageRepository.java b/src/main/java/com/yuyou/openapi/openapi/dao/XmjMessageRepository.java new file mode 100644 index 0000000..7af0d02 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/dao/XmjMessageRepository.java @@ -0,0 +1,20 @@ +package com.yuyou.openapi.openapi.dao; + +import com.yuyou.openapi.openapi.model.dataobject.LieheMessageDO; +import com.yuyou.openapi.openapi.model.dataobject.XiaomaMessageDO; +import com.yuyou.openapi.openapi.model.dataobject.XmjMessageDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import javax.transaction.Transactional; +import java.util.Date; + +@Repository +public interface XmjMessageRepository extends JpaRepository { + @Modifying + @Transactional + @Query("update XmjMessageDO t set t.sendStatus = ?1,t.pushTime=?2 where t.recId = ?3") + Integer updateSendStatus(Integer sendStatus, Date time,Long recId); +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/convert/ABMessageConverter.java b/src/main/java/com/yuyou/openapi/openapi/model/convert/ABMessageConverter.java index 85c0bee..ba4852b 100644 --- a/src/main/java/com/yuyou/openapi/openapi/model/convert/ABMessageConverter.java +++ b/src/main/java/com/yuyou/openapi/openapi/model/convert/ABMessageConverter.java @@ -591,4 +591,5 @@ public class ABMessageConverter { String matchActName = StringUtils.substringBeforeLast(decodeStr, "-"); detailInfo.setActName(matchActName); } + } diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/SyMessageDO.java b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/SyMessageDO.java new file mode 100644 index 0000000..17103c6 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/SyMessageDO.java @@ -0,0 +1,97 @@ +package com.yuyou.openapi.openapi.model.dataobject; + +import lombok.Data; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.util.Date; + +/** + * 双英 + * @author zzt 2021/3/4 16:29 + */ +@Data +@Table(name = "sy_message") +@Entity +@EntityListeners(AuditingEntityListener.class) +public class SyMessageDO { + + + /** + * id + */ + @Id + @GeneratedValue(strategy= GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + /** + * gmt_create + */ + @CreatedDate + @Column(name = "gmt_create") + private Date gmtCreate; + + /** + * gmt_modified + */ + @Column(name = "gmt_modified") + @LastModifiedDate + private Date gmtModified; + + /** + * 记录id + */ + @Column(name = "rec_id") + private Long recId; + + /** + * pnum + */ + @Column(name = "pnum") + private String pnum; + + /** + * 业务名 + */ + @Column(name = "act_name") + private String actName; + + /** + * 业务开始时间 + */ + @Column(name = "start_time") + private Date startTime; + + /** + * 业务类别(1:a,2:b,3:c,4:d,5:e,6:f) + */ + @Column(name = "client_type") + private Integer clientType; + + /** + * 上游推送用户id + */ + @Column(name = "app_id") + private String appId; + + /** + * 接收时间 + */ + @Column(name = "receive_time") + private Date receiveTime; + + /** + * 推送到下游时间 + */ + @Column(name = "push_time") + private Date pushTime; + + /** + * 下游推送状态 1 成功 0 未推送 + */ + @Column(name = "send_status") + private Integer sendStatus; +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/XmjMessageDO.java b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/XmjMessageDO.java new file mode 100644 index 0000000..9fd6235 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/XmjMessageDO.java @@ -0,0 +1,97 @@ +package com.yuyou.openapi.openapi.model.dataobject; + +import lombok.Data; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.util.Date; + +/** + * 小麦君 + * @author zzt 2021/3/4 16:29 + */ +@Data +@Table(name = "xmj_message") +@Entity +@EntityListeners(AuditingEntityListener.class) +public class XmjMessageDO { + + + /** + * id + */ + @Id + @GeneratedValue(strategy= GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + /** + * gmt_create + */ + @CreatedDate + @Column(name = "gmt_create") + private Date gmtCreate; + + /** + * gmt_modified + */ + @Column(name = "gmt_modified") + @LastModifiedDate + private Date gmtModified; + + /** + * 记录id + */ + @Column(name = "rec_id") + private Long recId; + + /** + * pnum + */ + @Column(name = "pnum") + private String pnum; + + /** + * 业务名 + */ + @Column(name = "act_name") + private String actName; + + /** + * 业务开始时间 + */ + @Column(name = "start_time") + private Date startTime; + + /** + * 业务类别(1:a,2:b,3:c,4:d,5:e,6:f) + */ + @Column(name = "client_type") + private Integer clientType; + + /** + * 上游推送用户id + */ + @Column(name = "app_id") + private String appId; + + /** + * 接收时间 + */ + @Column(name = "receive_time") + private Date receiveTime; + + /** + * 推送到下游时间 + */ + @Column(name = "push_time") + private Date pushTime; + + /** + * 下游推送状态 1 成功 0 未推送 + */ + @Column(name = "send_status") + private Integer sendStatus; +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dto/XmjMessageDTO.java b/src/main/java/com/yuyou/openapi/openapi/model/dto/XmjMessageDTO.java new file mode 100644 index 0000000..cee1c44 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/dto/XmjMessageDTO.java @@ -0,0 +1,35 @@ +package com.yuyou.openapi.openapi.model.dto; + +import lombok.*; + +import java.util.List; + +/** + * @author + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class XmjMessageDTO extends ABMessageDTO{ + + /** + * 话单详细信息,有可能是为空的 + */ + private List messages; + + + /** + * 这里对于详细的话单信息进行解析 + */ + @AllArgsConstructor + @NoArgsConstructor + @Getter + @Setter + public static class ChatMsg { + + private Long talkTime; + + private Integer talkerType; + + private String message; + } +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientXMJMessageVO.java b/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientXMJMessageVO.java new file mode 100644 index 0000000..6a1ecbd --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientXMJMessageVO.java @@ -0,0 +1,29 @@ +package com.yuyou.openapi.openapi.model.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yuyou.openapi.openapi.model.vo.data.DetailInfo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + * 小麦君 + * @author zt 2021-3-4 15:34:45 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ABClientXMJMessageVO extends ABClientBaseVO implements Serializable { + + /** + * 详细的数据实体 + */ + @JsonProperty(value = "data") + private List data; + + + + + +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/vo/data/DetailInfo.java b/src/main/java/com/yuyou/openapi/openapi/model/vo/data/DetailInfo.java new file mode 100644 index 0000000..ae1e56b --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/vo/data/DetailInfo.java @@ -0,0 +1,95 @@ +package com.yuyou.openapi.openapi.model.vo.data; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author zzt + * @date 2021/3/4 15:39 + */ +@Data +public class DetailInfo { + + +// "data": [ +// { +// "start_time": 1607003187354, +// "act_name": "5rWL6K+VNA==", +// "mobile": "MTMzNDY2NDc1OTU=", +// "messages": [ +// { +// "talkTime": 1607003198000, +// "talkerType": 1, +// "message": "" +// }, +// { +// "talkTime": 1607003198000, +// "talkerType": 2, +// "message": "喂-你好" +// }, +// { +// "talkTime": 1607003201000, +// "talkerType": 1, +// "message": "您好。" +// }, +// { +// "talkTime": 1607003201000, +// "talkerType": 2, +// "message": "你好,我这边是老端说险,老端说险是专业解决健康保障问题平台,值此平台5周年活动,我们针对关注健康的客户,免费赠险价值470元双人体检套餐一份。您有兴趣了解一下吗" +// }, +// { +// "talkTime": 1607003220000, +// "talkerType": 1, +// "message": "没有。" +// }, +// { +// "talkTime": 1607003220000, +// "talkerType": 2, +// "message": "那不好意思,打扰您了,祝您生活愉快,再见。" +// } +// ], +// "client_type": 1, +// "rec_id": 8471351 +// } +// ] + + /** + * + */ + @JsonProperty(value = "start_time") + private Long startTime; + + /** + * + */ + @JsonProperty(value = "act_name") + private String actName; + + /** + * + */ + @JsonProperty(value = "mobile") + private String mobile; + + /** + * + */ + @JsonProperty(value = "messages") + private List messages; + + /** + * + */ + @JsonProperty(value = "client_type") + private Integer clientType; + + /** + * + */ + @JsonProperty(value = "rec_id") + private Long recId; + + +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/vo/data/MessageInfo.java b/src/main/java/com/yuyou/openapi/openapi/model/vo/data/MessageInfo.java new file mode 100644 index 0000000..0b156c7 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/vo/data/MessageInfo.java @@ -0,0 +1,46 @@ +package com.yuyou.openapi.openapi.model.vo.data; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +/** + * @author zzt + * @date 2021/3/4 15:39 + * + */ +@Data +public class MessageInfo { + + +// "messages": [ +// { +// "talkTime": 1607003198000, +// "talkerType": 1, +// "message": "" +// }, +// { +// "talkTime": 1607003198000, +// "talkerType": 2, +// "message": "喂-你好" +// } +// ] + + /** + * 谈话时间 + */ + @JsonProperty(value = "talkTime") + private Long talkTime; + + /** + * 谈话类型 + */ + @JsonProperty(value = "talkerType") + private Integer talkerType; + + /** + * 谈话内容 + * + */ + @JsonProperty(value = "message") + private String message; +} diff --git a/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java b/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java index f8bca0c..b9f1b2e 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java @@ -1,6 +1,8 @@ package com.yuyou.openapi.openapi.service; +import com.yuyou.openapi.openapi.exception.BaiyeException; import com.yuyou.openapi.openapi.model.dto.*; +import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; import java.util.List; @@ -148,4 +150,11 @@ public interface ABClientService { * @param dto 解密后的辅导君数据对应实体Bean */ boolean recordFudaojunClientMsg(FudaojunMessageDTO dto); + + /** + * 保存小麦君推送记录 + * @param vo 推送实体对象 + * @return 成功|失败 + */ + boolean saveXmj(ABClientXMJMessageVO vo) throws BaiyeException; } diff --git a/src/main/java/com/yuyou/openapi/openapi/service/ABMessageService.java b/src/main/java/com/yuyou/openapi/openapi/service/ABMessageService.java index 21e58fd..fe82ed4 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/ABMessageService.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/ABMessageService.java @@ -57,4 +57,14 @@ public interface ABMessageService { */ List queryUnSendMessage(Date startPushTime, Date endPushTime); + /** + * 更新小麦君推送状态 + * + * @param sendStatus 推送状态 + * @param recId 推送记录 + * @param time 执行时间 + * @return 成功|失败 + */ + boolean updateXmj(Integer sendStatus, Long recId, Date time); + } diff --git a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java index 3acf720..8abefe1 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java @@ -1,17 +1,28 @@ package com.yuyou.openapi.openapi.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yuyou.openapi.openapi.common.ResponseCode; +import com.yuyou.openapi.openapi.common.spi.ErrorCode; import com.yuyou.openapi.openapi.dao.*; +import com.yuyou.openapi.openapi.exception.BaiyeException; +import com.yuyou.openapi.openapi.exception.CommonErrorCode; import com.yuyou.openapi.openapi.model.convert.*; import com.yuyou.openapi.openapi.model.dataobject.*; import com.yuyou.openapi.openapi.model.dto.*; +import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; +import com.yuyou.openapi.openapi.model.vo.data.DetailInfo; import com.yuyou.openapi.openapi.service.ABClientService; import com.yuyou.openapi.openapi.task.ABDownTask; +import com.yuyou.openapi.openapi.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -92,6 +103,9 @@ public class ABClientServiceImpl implements ABClientService { @Autowired private JiaDongLiMessageRepository jiaDongLiMessageRepository; + @Autowired + private XmjMessageRepository xmjMessageRepository; + @Override public boolean recordAndSendABClientMsg(List dtos) { if (CollectionUtils.isEmpty(dtos)) { @@ -641,4 +655,37 @@ public class ABClientServiceImpl implements ABClientService { } return Boolean.TRUE; } + + @Override + public boolean saveXmj(ABClientXMJMessageVO vo) { + + if (vo==null){ + throw new BaiyeException(CommonErrorCode.DATA_NOT_EXIT); + } + + //数据解析入库 + List data = vo.getData(); + List xmjList = new ArrayList<>(); + data.forEach(each->{ + XmjMessageDO xmjMessageDO = new XmjMessageDO(); + xmjMessageDO.setAppId(vo.getAppId()); + xmjMessageDO.setActName(each.getActName()); + xmjMessageDO.setRecId(each.getRecId()); + xmjMessageDO.setClientType(each.getClientType()); + xmjMessageDO.setReceiveTime(new Date()); + xmjMessageDO.setStartTime(DateUtils.date(vo.getTimestamp())); + xmjMessageDO.setSendStatus(0); + xmjMessageDO.setPnum(each.getMobile()); + xmjList.add(xmjMessageDO); + }); + List rs = xmjMessageRepository.saveAll(xmjList); + if (CollectionUtils.isEmpty(rs)){ + log.error("save xmj faild!"+vo.toString()); + throw new BaiyeException(CommonErrorCode.RUNTIME_ERROR); + } + + //完成数据下游推送 + abDownTask.doPushXmj(vo); + return true; + } } diff --git a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceProxy.java b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceProxy.java index b42c320..aa712a3 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceProxy.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceProxy.java @@ -3,6 +3,7 @@ package com.yuyou.openapi.openapi.service.impl; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.StrUtil; import com.yuyou.openapi.openapi.model.dto.*; +import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; import com.yuyou.openapi.openapi.service.ABClientService; import org.springframework.stereotype.Service; @@ -153,6 +154,11 @@ public class ABClientServiceProxy implements ABClientService { return abClientService.recordFudaojunClientMsg(dto); } + @Override + public boolean saveXmj(ABClientXMJMessageVO vo) { + return abClientService.saveXmj(vo); + } + /** * 解密加密字段 * @param base64Value diff --git a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABMessageServiceImpl.java b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABMessageServiceImpl.java index 06a7fd4..4b198d9 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/impl/ABMessageServiceImpl.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/impl/ABMessageServiceImpl.java @@ -38,6 +38,9 @@ public class ABMessageServiceImpl implements ABMessageService { @Autowired private HeXiaoXiangMessageRepository heXiaoXiangMessageRepository; + @Autowired + private XmjMessageRepository xmjMessageRepository; + @Override @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public boolean updateSendStatus(Long recId, boolean success) { @@ -160,4 +163,9 @@ public class ABMessageServiceImpl implements ABMessageService { ); return abMessageDTOList; } + + @Override + public boolean updateXmj(Integer sendStatus, Long recId, Date time) { + return xmjMessageRepository.updateSendStatus(sendStatus,time,recId)>0; + } } diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index ba5d452..3037fe9 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -8,11 +8,14 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yuyou.openapi.openapi.api.enums.LuoShiAppIDEnum; import com.yuyou.openapi.openapi.common.enums.IntentionEnum; import com.yuyou.openapi.openapi.common.enums.SourceEnum; import com.yuyou.openapi.openapi.model.dto.*; +import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; +import com.yuyou.openapi.openapi.model.vo.data.DetailInfo; import com.yuyou.openapi.openapi.service.ABMessageService; import com.yuyou.openapi.openapi.utils.SignUtils; import lombok.extern.slf4j.Slf4j; @@ -27,8 +30,10 @@ import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -130,6 +135,17 @@ public class ABDownTask { @Value("${ab.hexx.secretKey}") private String hexxSecretKey; + + + @Value("${ab.xmj.appId}") + private String xmjAppid; + + @Value("${ab.xmj.url}") + private String xmjUrl; + + @Value("${ab.xmj.secretKey}") + private String xmjSecret; + /** * 任务处理入口,主要用于时间记录 * @@ -636,6 +652,55 @@ public class ABDownTask { ); return Boolean.TRUE; } + public void doPushXmj(ABClientXMJMessageVO vo){ + //数据转换 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("app_id",xmjAppid); + long time=System.currentTimeMillis(); + jsonObject.put("timestamp",time); + //TODO 补充字段,后续可能有值 taskCode + jsonObject.put("taskCode","1"); + jsonObject.put("signature", SecureUtil.sha1("app_id="+ xmjAppid +"×tamp="+ time + "&secret=" + xmjSecret)); + + JSONArray jsonArray = new JSONArray(); + List datas = vo.getData(); + datas.forEach(each->{ + JSONObject data = new JSONObject(); + data.put("recId",each.getRecId()); + data.put("tag",IntentionEnum.codeOf(each.getClientType())); + data.put("mobile",StringUtils.reverse(each.getMobile())); + data.put("messages",each.getMessages()); + jsonArray.add(data); + + }); + jsonObject.put("data",jsonArray); + + log.info("xmj post json="+jsonObject.toJSONString()); + //给下游推送。最多重试三次 + int count=0; + while (count<3){ + count++; + HttpResponse httpResponse = HttpRequest + .post(xmjUrl) + .body(jsonObject.toJSONString()) + .execute(); + log.info("xmj resp="+httpResponse.toString()); + if (httpResponse.isOk()&&httpResponse.body().contains("0")){ + break; + }else { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.error("sleep error!"); + } + } + } + //執行update + int finalCount = count; + datas.forEach(each->{ + abMessageService.updateXmj(finalCount,each.getRecId(),new Date()); + }); + } /** * 任务处理入口,主要用于时间记录 - 猎河的第二任务推送接口 @@ -671,7 +736,7 @@ public class ABDownTask { // 数据实体进行映射转换 - 目前是只有一条给 LieheMessageCovDTO2 lieheMessageCovDTO = convertLieheMessageCovDTOFromABMessageDTO2(messageDTO); if (lieheMessageCovDTO == null) { - log.error("lieheMessageCovDTO is null."); + log.error(" is null."); return false; } // 数据实体转成Json 不忽略空kv 有序 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e6cba13..d86f297 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -24,6 +24,10 @@ spring: password: root # 下游请求配置信息 ab: + xmj: + appId: R1JaQKdh + url: http://tt.api.jikefx.cn/xmj/api/record_import + secretKey: 9I7Mlbqcy8JXPKExDH3A6zZCjps0rGWf customer: url: http://sandbox.openapi.ppke.com.cn/openapi/tmk/valid/receive app_id: YY9X8XCZ @@ -111,6 +115,10 @@ ab: taskid: url: https://api.wooxin.cn/tketong/getLastAddId secret: pmDclwRSYQgeiAKDghqXgs9m69OT7m69 + xmj: + appId: R1JaQKdh + url: http://tt.api.jikefx.cn/xmj/api/record_import + secretKey: 9I7Mlbqcy8JXPKExDH3A6zZCjps0rGWf logging: config: classpath:logback.xml --- @@ -164,5 +172,9 @@ ab: taskid: url: https://api.wooxin.cn/tketong/getLastAddId secret: pmDclwRSYQgeiAKDghqXgs9m69OT7m69 + xmj: + appId: R1JaQKdh + url: http://tt.api.jikefx.cn/xmj/api/record_import + secretKey: 9I7Mlbqcy8JXPKExDH3A6zZCjps0rGWf #logging: # config: classpath:logback.xml \ No newline at end of file