From ebdb48638a44d23a2014f40761f78d05e9ad9378 Mon Sep 17 00:00:00 2001 From: queyounan <358146538@qq.com> Date: Tue, 11 Aug 2020 19:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EAB=E5=8D=95=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/common/enums/GradeEnum.java | 52 +++++++++++++------ .../openapi/common/enums/SubjectEnum.java | 21 ++++++++ .../openapi/dao/ABMessageRepository.java | 9 ++++ .../model/convert/ABMessageConverter.java | 14 ++--- .../convert/ZhangmenMessageConverter.java | 48 +++++++++++++++++ .../openapi/model/dataobject/ABMessageDO.java | 1 + .../model/dataobject/ZhangmenMessageDO.java | 2 +- .../openapi/model/dto/ABZMMessageDTO.java | 6 ++- .../openapi/service/ABClientService.java | 4 +- .../service/impl/ABClientServiceImpl.java | 38 +++++++++++++- .../service/impl/ABClientServiceProxy.java | 11 +++- .../openapi/utils/SecurityOperationUtil.java | 7 +++ 12 files changed, 185 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/yuyou/openapi/openapi/common/enums/GradeEnum.java b/src/main/java/com/yuyou/openapi/openapi/common/enums/GradeEnum.java index 93d151f..4954d37 100644 --- a/src/main/java/com/yuyou/openapi/openapi/common/enums/GradeEnum.java +++ b/src/main/java/com/yuyou/openapi/openapi/common/enums/GradeEnum.java @@ -1,35 +1,57 @@ package com.yuyou.openapi.openapi.common.enums; +import cn.hutool.core.util.StrUtil; + +import javax.persistence.criteria.CriteriaBuilder; + /** * 年级映射 * @version 1.0 * @date 2020/8/10 */ public enum GradeEnum { - FIRST_GRADE("X1", "一年级"), - SECOND_GRADE("X2","二年级"), - THIRD_GRADE("X3","三年级"), - FOURTH_GRADE("X4", "四年级"), - FIFTH_GRADE("X5", "五年级"), - SIXTH_GRADE("X6", "六年级"), - FIRST_MIDDLE("M1", "初一"), - SECOND_MIDDLE("M2", "初二"), - THIRD_MIDDLE("M3", "初三"), - FIRST_HIGH("H1", "高一"), - SECOND_HIGH("H2", "高二"), - THIRD_HIGH("H3", "高三"), + UNKNOW(0, "未知"), + FIRST_GRADE(1, "一年级"), + SECOND_GRADE(2,"二年级"), + THIRD_GRADE(3,"三年级"), + FOURTH_GRADE(4, "四年级"), + FIFTH_GRADE(5, "五年级"), + SIXTH_GRADE(6, "六年级"), + FIRST_MIDDLE(7, "初一"), + SECOND_MIDDLE(8, "初二"), + THIRD_MIDDLE(9, "初三"), + FIRST_HIGH(10, "高一"), + SECOND_HIGH(11, "高二"), + THIRD_HIGH(12, "高三"), ; - private String code; + private Integer code; private String desc; - GradeEnum(String code, String desc){ + GradeEnum(Integer code, String desc){ this.code = code; this.desc = desc; } - public String getCode() { + /** + * 根据desc获得编码值 + * @param grade + * @return + */ + public static Integer codeOf(String grade) { + if (StrUtil.isBlank(grade)) { + return GradeEnum.UNKNOW.getCode(); + } + for (GradeEnum gradeEnum : GradeEnum.values()) { + if (gradeEnum.getDesc().equals(grade)) { + return gradeEnum.getCode(); + } + } + return GradeEnum.UNKNOW.getCode(); + } + + public Integer getCode() { return code; } diff --git a/src/main/java/com/yuyou/openapi/openapi/common/enums/SubjectEnum.java b/src/main/java/com/yuyou/openapi/openapi/common/enums/SubjectEnum.java index 4e8b4d6..47987d9 100644 --- a/src/main/java/com/yuyou/openapi/openapi/common/enums/SubjectEnum.java +++ b/src/main/java/com/yuyou/openapi/openapi/common/enums/SubjectEnum.java @@ -1,11 +1,14 @@ package com.yuyou.openapi.openapi.common.enums; +import cn.hutool.core.util.StrUtil; + /** * 学科映射 * @version 1.0 * @date 2020/8/10 */ public enum SubjectEnum { + UNKNOW(0, "未知"), CHINESE(1, "语文"), MATH(2, "数学"), ENGLISH(3,"英语"), @@ -25,6 +28,24 @@ public enum SubjectEnum { this.desc = desc; } + /** + * 根据subject获得编码值 + * @param subject + * @return + */ + public static Integer codeOf(String subject) { + if (StrUtil.isBlank(subject)) { + return SubjectEnum.UNKNOW.getCode(); + } + for (SubjectEnum subjectEnum : SubjectEnum.values()) { + if (subjectEnum.getDesc().equals(subject)) { + return subjectEnum.getCode(); + } + } + return SubjectEnum.UNKNOW.getCode(); + } + + public Integer getCode() { return code; } diff --git a/src/main/java/com/yuyou/openapi/openapi/dao/ABMessageRepository.java b/src/main/java/com/yuyou/openapi/openapi/dao/ABMessageRepository.java index e25a592..1bf79df 100644 --- a/src/main/java/com/yuyou/openapi/openapi/dao/ABMessageRepository.java +++ b/src/main/java/com/yuyou/openapi/openapi/dao/ABMessageRepository.java @@ -2,11 +2,20 @@ package com.yuyou.openapi.openapi.dao; import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import javax.annotation.PostConstruct; + /** * 数据层调用接口 */ @Repository public interface ABMessageRepository extends JpaRepository { + + @Modifying + @Query("update ABMessageDO t set t.sendStatus = sendStatus where t.recId = id") + void updateSendStatus(@Param(value = "id") Long recId, @Param(value = "sendStatus") Integer sendStatus); } 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 22476a6..00e3144 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 @@ -1,11 +1,11 @@ package com.yuyou.openapi.openapi.model.convert; -import cn.hutool.core.date.DateUtil; import com.yuyou.openapi.openapi.common.security.SecurityConstants; import com.yuyou.openapi.openapi.common.security.SecurityService; import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; import com.yuyou.openapi.openapi.model.dto.ABMessageDTO; import com.yuyou.openapi.openapi.model.vo.ABClientInterMessageVO; +import com.yuyou.openapi.openapi.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.util.CollectionUtils; @@ -80,15 +80,17 @@ public class ABMessageConverter { } BeanUtils.copyProperties(abMessageDTO, abMessageDO); - abMessageDO.setPushTime(DateUtil.date(abMessageDTO.getTimestamp() * 1000)); - abMessageDO.setStartTime(DateUtil.date(abMessageDTO.getStartTime() * 1000)); + abMessageDO.setPushTime(DateUtils.date(abMessageDTO.getTimestamp())); + abMessageDO.setStartTime(DateUtils.date(abMessageDTO.getStartTime())); // AES加密 try { - SecurityService.encrypt(abMessageDTO.getMobile(), SecurityConstants.PHONE); + String encryptedMobile = SecurityService.encrypt(abMessageDTO.getMobile(), SecurityConstants.PHONE); + abMessageDO.setPnum(encryptedMobile); } catch (Exception e) { - log.error("Encrypt Mobile raise Error, error is :", e); + log.error("Encrypt Mobile raise Error, recId = {}, error is :", abMessageDTO.getRecId(), e); + abMessageDO.setPnum(abMessageDTO.getMobile()); } - abMessageDO.setPnum(abMessageDTO.getMobile()); + return abMessageDO; } } diff --git a/src/main/java/com/yuyou/openapi/openapi/model/convert/ZhangmenMessageConverter.java b/src/main/java/com/yuyou/openapi/openapi/model/convert/ZhangmenMessageConverter.java index 94744ee..dac2073 100644 --- a/src/main/java/com/yuyou/openapi/openapi/model/convert/ZhangmenMessageConverter.java +++ b/src/main/java/com/yuyou/openapi/openapi/model/convert/ZhangmenMessageConverter.java @@ -1,8 +1,18 @@ package com.yuyou.openapi.openapi.model.convert; +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.ZhangmenMessageDO; import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO; import com.yuyou.openapi.openapi.model.vo.ABClientZMMessageVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; /** * 掌门记录转换类 @@ -10,6 +20,7 @@ import com.yuyou.openapi.openapi.model.vo.ABClientZMMessageVO; * @version 1.0 * @date 2020/8/10 */ +@Slf4j public class ZhangmenMessageConverter { /** @@ -22,13 +33,50 @@ public class ZhangmenMessageConverter { return abzmMessageDTO; } + /** + * 批量DTO转DO + * @param list + * @return + */ + public static List convertZhangmenMessageDOFromDTO(List list) { + if (CollectionUtils.isEmpty(list)) { + return null; + } + List zhangmenMessageDOs = new ArrayList<>(); + list.forEach(each -> { + ZhangmenMessageDO zhangmenMessageDO = convertZhangmenMessageDOFromDTO(each); + if (zhangmenMessageDO != null) { + zhangmenMessageDOs.add(zhangmenMessageDO); + } + }); + return zhangmenMessageDOs; + } + /** * DTO层转为DO层 * @param abzmMessageDTO * @return */ public static ZhangmenMessageDO convertZhangmenMessageDOFromDTO(ABZMMessageDTO abzmMessageDTO) { + if (abzmMessageDTO == null || abzmMessageDTO.getData() == null) { + return null; + } ZhangmenMessageDO zhangmenMessageDO = new ZhangmenMessageDO(); + BeanUtils.copyProperties(abzmMessageDTO.getData(), zhangmenMessageDO); + try { + String encryptedMobile = SecurityService.encrypt(abzmMessageDTO.getData().getMobile(), SecurityConstants.PHONE); + String encryptedName = SecurityService.encrypt(abzmMessageDTO.getData().getName(), SecurityConstants.SIMPLE); + zhangmenMessageDO.setPnum(encryptedMobile); + zhangmenMessageDO.setStuName(encryptedName); + + }catch (Exception e) { + log.error("Encrypt data raise Error, recId = {}, error is :", abzmMessageDTO.getData().getRecId(), e); + zhangmenMessageDO.setPnum(abzmMessageDTO.getData().getMobile()); + zhangmenMessageDO.setStuName(abzmMessageDTO.getData().getName()); + } + zhangmenMessageDO.setStuGrade(GradeEnum.codeOf(abzmMessageDTO.getData().getGrade())); + zhangmenMessageDO.setStuSub(SubjectEnum.codeOf(abzmMessageDTO.getData().getCourse())); + return zhangmenMessageDO; } } diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ABMessageDO.java b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ABMessageDO.java index 9ca9b17..1806723 100644 --- a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ABMessageDO.java +++ b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ABMessageDO.java @@ -1,6 +1,7 @@ package com.yuyou.openapi.openapi.model.dataobject; import lombok.Data; +import org.springframework.data.annotation.CreatedDate; import javax.persistence.Column; import javax.persistence.Id; diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ZhangmenMessageDO.java b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ZhangmenMessageDO.java index 2740875..7e4c19f 100644 --- a/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ZhangmenMessageDO.java +++ b/src/main/java/com/yuyou/openapi/openapi/model/dataobject/ZhangmenMessageDO.java @@ -49,7 +49,7 @@ public class ZhangmenMessageDO { * 报课学生年级 */ @Column(name = "stu_grade") - private String stuGrade; + private Integer stuGrade; /** * 报课学生学科 diff --git a/src/main/java/com/yuyou/openapi/openapi/model/dto/ABZMMessageDTO.java b/src/main/java/com/yuyou/openapi/openapi/model/dto/ABZMMessageDTO.java index aee07b6..1fc7696 100644 --- a/src/main/java/com/yuyou/openapi/openapi/model/dto/ABZMMessageDTO.java +++ b/src/main/java/com/yuyou/openapi/openapi/model/dto/ABZMMessageDTO.java @@ -44,8 +44,10 @@ public class ABZMMessageDTO { private String tag_key_course; } - - static class Data { + @lombok.Data + @AllArgsConstructor + @NoArgsConstructor + public static class Data { /** * 记录id 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 381dd9e..2dc7a63 100644 --- a/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java +++ b/src/main/java/com/yuyou/openapi/openapi/service/ABClientService.java @@ -23,10 +23,12 @@ public interface ABClientService { */ boolean recordAndSendABClientMsg(List dto); + boolean updateSendStatus(Long recId, boolean success); + /** * 记录推送掌门的数据,并存储入库 * * @param dto 解密后的掌门数据对应实体Bean */ - void recordZMClientMsg(ABZMMessageDTO dto); + boolean recordZMClientMsg(ABZMMessageDTO dto); } 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 5085665..02a4142 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,8 +1,11 @@ package com.yuyou.openapi.openapi.service.impl; import com.yuyou.openapi.openapi.dao.ABMessageRepository; +import com.yuyou.openapi.openapi.dao.ZhangmenMessageRepository; import com.yuyou.openapi.openapi.model.convert.ABMessageConverter; +import com.yuyou.openapi.openapi.model.convert.ZhangmenMessageConverter; import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; +import com.yuyou.openapi.openapi.model.dataobject.ZhangmenMessageDO; import com.yuyou.openapi.openapi.model.dto.ABMessageDTO; import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO; import com.yuyou.openapi.openapi.service.ABClientService; @@ -13,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Base64; import java.util.List; /** @@ -36,8 +40,15 @@ public class ABClientServiceImpl implements ABClientService { @Autowired private ABMessageRepository abMessageRepository; + @Autowired + private ZhangmenMessageRepository zhangmenMessageRepository; + @Override public boolean recordAndSendABClientMsg(List dtos) { + if (CollectionUtils.isEmpty(dtos)) { + log.error("Param dtos is empty"); + return Boolean.FALSE; + } // 调用接口进行入库 List abMessageDOS = ABMessageConverter.convertABMessageDOFromDTO(dtos); // TODO: 2020/8/10 0010 加密存储 @@ -53,13 +64,38 @@ public class ABClientServiceImpl implements ABClientService { return Boolean.TRUE; } + @Override + public boolean updateSendStatus(Long recId, boolean success) { + if (recId == null) { + return Boolean.FALSE; + } + if (success) { + abMessageRepository.updateSendStatus(recId, 1); + }else { + abMessageRepository.updateSendStatus(recId, 0); + } + + return Boolean.TRUE; + } + /** * 对 数据进行入库处理 * * @param dto 解密后的掌门数据对应实体Bean */ @Override - public void recordZMClientMsg(ABZMMessageDTO dto) { + public boolean recordZMClientMsg(ABZMMessageDTO dto) { // TODO: 2020/8/10 0010 补充具体的入库处理逻辑 + if (dto == null) { + log.error("Param dtos is empty"); + return Boolean.FALSE; + } + + ZhangmenMessageDO zhangmenMessageDO = ZhangmenMessageConverter.convertZhangmenMessageDOFromDTO(dto); + ZhangmenMessageDO result = zhangmenMessageRepository.save(zhangmenMessageDO); + if (result == null) { + return Boolean.FALSE; + } + return Boolean.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 8749a31..4c2c830 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 @@ -27,14 +27,21 @@ public class ABClientServiceProxy implements ABClientService { public boolean recordAndSendABClientMsg(List list) { // 解密List中的加密字段 list.forEach(each -> { - each.setActName(each.getActName()); + // mobile不进行解密处理 + each.setActName(decryptBase64Value(each.getActName())); }); return abClientService.recordAndSendABClientMsg(list); } @Override - public void recordZMClientMsg(ABZMMessageDTO dto) { + public boolean updateSendStatus(Long recId, boolean success) { + return abClientService.updateSendStatus(recId, success); + } + @Override + public boolean recordZMClientMsg(ABZMMessageDTO dto) { + // TODO: DTO层数据解密 + return abClientService.recordZMClientMsg(dto); } /** diff --git a/src/main/java/com/yuyou/openapi/openapi/utils/SecurityOperationUtil.java b/src/main/java/com/yuyou/openapi/openapi/utils/SecurityOperationUtil.java index 10a10a9..8e44e40 100644 --- a/src/main/java/com/yuyou/openapi/openapi/utils/SecurityOperationUtil.java +++ b/src/main/java/com/yuyou/openapi/openapi/utils/SecurityOperationUtil.java @@ -124,6 +124,13 @@ public class SecurityOperationUtil { } } + private static String decryptBase64Value(String base64Value) { + if (StrUtil.isBlank(base64Value)) { + return base64Value; + } + return Base64.decodeStr(base64Value); + } + public static void main(String[] args) throws SecretException { String decryptValue = aesDecrypt("DqkOjL726BFVqAj5TNkgyw==", "AnOQ&1^lyobm%vUX"); System.out.println(decryptValue);