From c2e7c1198692ae62eeed6d52317b5a197eac16af Mon Sep 17 00:00:00 2001 From: queyounan <358146538@qq.com> Date: Thu, 12 Nov 2020 18:55:10 +0800 Subject: [PATCH] Merge branch 'master' of http://git.hchbox.com/yuyou/client into master # Conflicts: # src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java --- .../yuyou/openapi/openapi/api/ABClient.java | 29 +++++ .../dao/FudaojunMessageRepository.java | 31 +++++ .../convert/FudaojunMessageConverter.java | 91 +++++++++++++++ .../model/dataobject/FudaojunMessageDO.java | 83 +++++++++++++ .../openapi/model/dto/FudaojunMessageDTO.java | 110 ++++++++++++++++++ .../model/vo/ABClientFudaojunMessageVO.java | 27 +++++ .../openapi/service/ABClientService.java | 7 ++ .../service/impl/ABClientServiceImpl.java | 32 +++++ .../service/impl/ABClientServiceProxy.java | 4 + 9 files changed, 414 insertions(+) create mode 100644 src/main/java/com/yuyou/openapi/openapi/dao/FudaojunMessageRepository.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/convert/FudaojunMessageConverter.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/dataobject/FudaojunMessageDO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/dto/FudaojunMessageDTO.java create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientFudaojunMessageVO.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 1bf52ef..b92cf72 100644 --- a/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java +++ b/src/main/java/com/yuyou/openapi/openapi/api/ABClient.java @@ -488,4 +488,33 @@ public class ABClient { return abClientService.recordGuaziClientMsg(atoCvt)? CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); } + + /** + * 获取等待提交的数据 + * + * @return 返回调用信息 + */ + @PostMapping("/api/req/forminput/fudaojun") + @ResponseBody + public CommonResponse getFormData(@RequestBody ABClientFudaojunMessageVO vo){ + //记录日志 + log.info("====== [ one request comming, request content is {} ] ======", vo.toString()); + // 验证参数,并进行解密 + String callLog = vo.getCalllog(); + if (StringUtils.isEmpty(callLog)){ + return CommonResponse.createByErrorMessage(ResponseCode.EMPTY_ARGUMENT.getDesc()); + } + // 获取的是解密且解码后的Json字符串 + String jsonResult = SecurityOperationUtil.decCallLogSecurityInfo(callLog); + // Json转成对应的实体类 + if (StringUtils.isEmpty(jsonResult)){ + return CommonResponse.createByErrorMessage(ResponseCode.DECRYPT_ERROR.getDesc()); + } + // vo赋值到DTO + FudaojunMessageDTO fudaojunMessageDTO = JSONUtil.toBean(jsonResult, FudaojunMessageDTO.class); + FudaojunMessageDTO atoCvt = FudaojunMessageConverter.convertFudaojunMessageDTOFromVO(fudaojunMessageDTO, vo); + // 处理具体逻辑,返回校验成功的结果 + return abClientService.recordFudaojunClientMsg(atoCvt)? + CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试"); + } } diff --git a/src/main/java/com/yuyou/openapi/openapi/dao/FudaojunMessageRepository.java b/src/main/java/com/yuyou/openapi/openapi/dao/FudaojunMessageRepository.java new file mode 100644 index 0000000..51b7431 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/dao/FudaojunMessageRepository.java @@ -0,0 +1,31 @@ +package com.yuyou.openapi.openapi.dao; + +import com.yuyou.openapi.openapi.model.dataobject.FudaojunMessageDO; +import com.yuyou.openapi.openapi.model.dataobject.ZhangmenMessageDO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FudaojunMessageRepository extends JpaRepository { + + /** + * 根据RecId来进行查询 + * + * @param recId 记录Id + * @return + */ + List findByRecId(Long recId); + + + /** + * fixme 因为避免多环境下recId会产生重复的问题,这里先进行写这个接口,后续和上游确认通过 app_id 和 rec_id 进行组合查询,进行去重 + */ + List findByRecIdAndAppId(Long recId, String appId); + + /** + * 根据pnum和状态值来进行查询 + */ + List findByPnumAndSubmitStatus(String pnum, Integer submitStatus); +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/convert/FudaojunMessageConverter.java b/src/main/java/com/yuyou/openapi/openapi/model/convert/FudaojunMessageConverter.java new file mode 100644 index 0000000..7ad1ccc --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/convert/FudaojunMessageConverter.java @@ -0,0 +1,91 @@ +package com.yuyou.openapi.openapi.model.convert; + +import cn.hutool.core.codec.Base64; +import com.yuyou.openapi.openapi.common.enums.ConstantEnum; +import com.yuyou.openapi.openapi.common.enums.GradeEnum; +import com.yuyou.openapi.openapi.common.enums.SubjectEnum; +import com.yuyou.openapi.openapi.common.security.SecurityConstants; +import com.yuyou.openapi.openapi.common.security.SecurityService; +import com.yuyou.openapi.openapi.model.dataobject.FudaojunMessageDO; +import com.yuyou.openapi.openapi.model.dto.FudaojunMessageDTO; +import com.yuyou.openapi.openapi.model.vo.ABClientFudaojunMessageVO; +import com.yuyou.openapi.openapi.utils.DateUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 辅导君记录转换类 + * + * @version 1.0 + * @date 2020/8/10 + */ +@Slf4j +public class FudaojunMessageConverter { + + /** + * VO层转为DTO层 + * @param abClientFudaojunMessageVO + * @return + */ + public static FudaojunMessageDTO convertFudaojunMessageDTOFromVO(FudaojunMessageDTO fudaojunMessageDTO, ABClientFudaojunMessageVO abClientFudaojunMessageVO) { + BeanUtils.copyProperties(abClientFudaojunMessageVO, fudaojunMessageDTO); + return fudaojunMessageDTO; + } + + /** + * 批量DTO转DO + * @param list + * @return + */ + public static List convertFudaojunMessageDOFromDTO(List list) { + if (CollectionUtils.isEmpty(list)) { + return null; + } + List fudaojunMessageDOs = new ArrayList<>(); + list.forEach(each -> { + FudaojunMessageDO fudaojunMessageDO = convertFudaojunMessageDOFromDTO(each); + if (fudaojunMessageDO != null) { + fudaojunMessageDOs.add(fudaojunMessageDO); + } + }); + return fudaojunMessageDOs; + } + + /** + * DTO层转为DO层 + * @param fudaojunMessageDTO + * @return + */ + public static FudaojunMessageDO convertFudaojunMessageDOFromDTO(FudaojunMessageDTO fudaojunMessageDTO) { + if (fudaojunMessageDTO == null || fudaojunMessageDTO.getTag() == null || fudaojunMessageDTO.getData() == null) { + return null; + } + FudaojunMessageDO zhangmenMessageDO = new FudaojunMessageDO(); + BeanUtils.copyProperties(fudaojunMessageDTO.getData(), zhangmenMessageDO); + try { + fudaojunMessageDTO.getData().setMobile(Base64.encode(fudaojunMessageDTO.getData().getMobile())); + String encryptedMobile = SecurityService.encrypt(fudaojunMessageDTO.getData().getMobile(), SecurityConstants.PHONE); + String encryptedName = SecurityService.encrypt(fudaojunMessageDTO.getData().getName(), SecurityConstants.SIMPLE); + zhangmenMessageDO.setPnum(encryptedMobile); + zhangmenMessageDO.setStuName(encryptedName); + } catch (Exception e) { + log.error("Encrypt data raise Error, recId = {}, error is :", fudaojunMessageDTO.getTag().getTag_key_id(), e); + zhangmenMessageDO.setPnum(fudaojunMessageDTO.getData().getMobile()); + zhangmenMessageDO.setStuName(fudaojunMessageDTO.getData().getName()); + } + + zhangmenMessageDO.setAppId(fudaojunMessageDTO.getAppId()); + zhangmenMessageDO.setPushTime(DateUtils.date(fudaojunMessageDTO.getTimestamp())); + + zhangmenMessageDO.setStuGrade(GradeEnum.codeOf(fudaojunMessageDTO.getData().getGrade())); + zhangmenMessageDO.setStuSub(SubjectEnum.codeOf(fudaojunMessageDTO.getData().getCourse())); + zhangmenMessageDO.setDevice(ConstantEnum.YesOrNo.codeOf(fudaojunMessageDTO.getData().getDevice())); + zhangmenMessageDO.setRecId(fudaojunMessageDTO.getTag().getTag_key_id()); + + return zhangmenMessageDO; + } +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/FudaojunMessageDO.java b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/FudaojunMessageDO.java new file mode 100644 index 0000000..09b6041 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/FudaojunMessageDO.java @@ -0,0 +1,83 @@ +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; + +/** + * 辅导君成单记录表 + * @version 1.0 + * @date 2020/8/10 + */ +@Data +@Table(name = "fudaojun_message") +@Entity +@EntityListeners(AuditingEntityListener.class) +public class FudaojunMessageDO { + + /** + * id + */ + @Id + @GeneratedValue(strategy= GenerationType.IDENTITY) + private Long id; + + @Column(name = "gmt_create") + @CreatedDate + private Date gmtCreate; + + @Column(name = "gmt_modified") + @LastModifiedDate + private Date gmtModified; + + /** + * 记录推送id + */ + @Column(name = "rec_id") + private Long recId; + + /** + * 报课学生名 + */ + @Column(name = "stu_name") + private String stuName; + + /** + * 报课学生码 + */ + private String pnum; + + /** + * 报课学生年级 + */ + @Column(name = "stu_grade") + private Integer stuGrade; + + /** + * 报课学生学科 + */ + @Column(name = "stu_sub") + private Integer stuSub; + + @Column(name = "device") + private Integer device; + + /** + * 上游推送用户id + */ + @Column(name = "app_id") + private String appId; + + /** + * 上游推送时间 + */ + @Column(name = "push_time") + private Date pushTime; + + @Column(name = "submit_status") + private Integer submitStatus = 0; +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dto/FudaojunMessageDTO.java b/src/main/java/com/yuyou/openapi/openapi/model/dto/FudaojunMessageDTO.java new file mode 100644 index 0000000..eb1fe4c --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/dto/FudaojunMessageDTO.java @@ -0,0 +1,110 @@ +package com.yuyou.openapi.openapi.model.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class FudaojunMessageDTO { + + /** + * 推送用户的ID + */ + private String appId; + + /** + * 请求时间戳 + */ + private Long timestamp; + + /** + * 标记集合 + */ + private Tag tag; + + /** + * 数据集合 + */ + private Datas data; + + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Tag { + /** + * 记录id + */ + private Long tag_key_id; + + /** + * 学生姓名 + */ + private String tag_key_name; + + /** + * 联系方式 + */ + private String tag_key_mobile; + + /** + * 课程年级 + */ + private String tag_key_grade; + + /** + * 课程科目 + */ + private String tag_key_course; + + /** + * 试听设备 + */ + private String tag_key_device; + + /** + * 预约时间段 + */ + private String tag_key_appointment; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Datas { + + /** + * 学生姓名 + */ + private String name; + + /** + * 手机号 + */ + private String mobile; + + /** + * 学生报学年级 + */ + private String grade; + + /** + * 学生报课科目 + */ + private String course; + + /** + * 试听设备 + */ + private String device; + + /** + * 预约时间段 + */ + private Integer appointment; + } + +} diff --git a/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientFudaojunMessageVO.java b/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientFudaojunMessageVO.java new file mode 100644 index 0000000..f5d4dd2 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/vo/ABClientFudaojunMessageVO.java @@ -0,0 +1,27 @@ +package com.yuyou.openapi.openapi.model.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * Copyright (C), 2012 - 2018, qyx + * FileName: ABClientMessageVO + * Author: x + * Date: 2020/8/4 6:59 PM + * Description: ABClient接口对应接口表现层映射 + * History: + *