Merge branch 'master' of http://git.hchbox.com/yuyou/client into master

# Conflicts:
#	src/main/java/com/yuyou/openapi/openapi/model/convert/ABMessageConverter.java
#	src/main/java/com/yuyou/openapi/openapi/model/dataobject/ABMessageDO.java
#	src/main/java/com/yuyou/openapi/openapi/service/impl/ABClientServiceImpl.java
master
土豆兄弟 4 years ago
commit 9fcfffb85a

2
.gitignore vendored

@ -18,6 +18,8 @@ target/
*.iws *.iws
*.iml *.iml
*.ipr *.ipr
logs/
log/
### NetBeans ### ### NetBeans ###
/nbproject/private/ /nbproject/private/

@ -16,6 +16,11 @@
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> </properties>
<dependencies> <dependencies>

@ -79,9 +79,8 @@ public class ABClient {
return CommonResponse.createByErrorMessage(ResponseCode.DECRYPT_ERROR.getDesc()); return CommonResponse.createByErrorMessage(ResponseCode.DECRYPT_ERROR.getDesc());
} }
ABZMMessageDTO abzmMessageDTO = JSONUtil.toBean(jsonResult, ABZMMessageDTO.class); ABZMMessageDTO abzmMessageDTO = JSONUtil.toBean(jsonResult, ABZMMessageDTO.class);
// 处理具体逻辑 // 处理具体逻辑,返回校验成功的结果
abClientService.recordZMClientMsg(abzmMessageDTO); return abClientService.recordZMClientMsg(abzmMessageDTO)?
// 返回校验成功的结果 CommonResponse.createBySuccess() : CommonResponse.createByErrorMessage("调用失败请重试");
return CommonResponse.createBySuccess();
} }
} }

@ -1,35 +1,57 @@
package com.yuyou.openapi.openapi.common.enums; package com.yuyou.openapi.openapi.common.enums;
import cn.hutool.core.util.StrUtil;
import javax.persistence.criteria.CriteriaBuilder;
/** /**
* *
* @version 1.0 * @version 1.0
* @date 2020/8/10 * @date 2020/8/10
*/ */
public enum GradeEnum { public enum GradeEnum {
FIRST_GRADE("X1", "一年级"), UNKNOW(0, "未知"),
SECOND_GRADE("X2","二年级"), FIRST_GRADE(1, "一年级"),
THIRD_GRADE("X3","三年级"), SECOND_GRADE(2,"二年级"),
FOURTH_GRADE("X4", "四年级"), THIRD_GRADE(3,"三年级"),
FIFTH_GRADE("X5", "五年级"), FOURTH_GRADE(4, "四年级"),
SIXTH_GRADE("X6", "六年级"), FIFTH_GRADE(5, "五年级"),
FIRST_MIDDLE("M1", "初一"), SIXTH_GRADE(6, "六年级"),
SECOND_MIDDLE("M2", "初二"), FIRST_MIDDLE(7, "初一"),
THIRD_MIDDLE("M3", "初三"), SECOND_MIDDLE(8, "初二"),
FIRST_HIGH("H1", "高一"), THIRD_MIDDLE(9, "初三"),
SECOND_HIGH("H2", "高二"), FIRST_HIGH(10, "高一"),
THIRD_HIGH("H3", "高三"), SECOND_HIGH(11, "高二"),
THIRD_HIGH(12, "高三"),
; ;
private String code; private Integer code;
private String desc; private String desc;
GradeEnum(String code, String desc){ GradeEnum(Integer code, String desc){
this.code = code; this.code = code;
this.desc = desc; 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; return code;
} }

@ -1,11 +1,14 @@
package com.yuyou.openapi.openapi.common.enums; package com.yuyou.openapi.openapi.common.enums;
import cn.hutool.core.util.StrUtil;
/** /**
* *
* @version 1.0 * @version 1.0
* @date 2020/8/10 * @date 2020/8/10
*/ */
public enum SubjectEnum { public enum SubjectEnum {
UNKNOW(0, "未知"),
CHINESE(1, "语文"), CHINESE(1, "语文"),
MATH(2, "数学"), MATH(2, "数学"),
ENGLISH(3,"英语"), ENGLISH(3,"英语"),
@ -25,6 +28,24 @@ public enum SubjectEnum {
this.desc = desc; 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() { public Integer getCode() {
return code; return code;
} }

@ -2,6 +2,9 @@ package com.yuyou.openapi.openapi.dao;
import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO;
import org.springframework.data.jpa.repository.JpaRepository; 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 org.springframework.stereotype.Repository;
/** /**
@ -9,4 +12,8 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public interface ABMessageRepository extends JpaRepository<ABMessageDO,Long> { public interface ABMessageRepository extends JpaRepository<ABMessageDO,Long> {
@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);
} }

@ -1,11 +1,11 @@
package com.yuyou.openapi.openapi.model.convert; 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.SecurityConstants;
import com.yuyou.openapi.openapi.common.security.SecurityService; import com.yuyou.openapi.openapi.common.security.SecurityService;
import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO;
import com.yuyou.openapi.openapi.model.dto.ABMessageDTO; import com.yuyou.openapi.openapi.model.dto.ABMessageDTO;
import com.yuyou.openapi.openapi.model.vo.ABClientInterMessageVO; import com.yuyou.openapi.openapi.model.vo.ABClientInterMessageVO;
import com.yuyou.openapi.openapi.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -80,8 +80,8 @@ public class ABMessageConverter {
} }
BeanUtils.copyProperties(abMessageDTO, abMessageDO); BeanUtils.copyProperties(abMessageDTO, abMessageDO);
abMessageDO.setPushTime(DateUtil.date(abMessageDTO.getTimestamp() * 1000)); abMessageDO.setPushTime(DateUtils.date(abMessageDTO.getTimestamp()));
abMessageDO.setStartTime(DateUtil.date(abMessageDTO.getStartTime() * 1000)); abMessageDO.setStartTime(DateUtils.date(abMessageDTO.getStartTime()));
try{ try{
abMessageDO.setRecId(Long.valueOf(abMessageDTO.getRecId())); abMessageDO.setRecId(Long.valueOf(abMessageDTO.getRecId()));
}catch (Exception e){ }catch (Exception e){
@ -90,11 +90,13 @@ public class ABMessageConverter {
// AES加密 // AES加密
try { try {
SecurityService.encrypt(abMessageDTO.getMobile(), SecurityConstants.PHONE); String encryptedMobile = SecurityService.encrypt(abMessageDTO.getMobile(), SecurityConstants.PHONE);
abMessageDO.setPnum(encryptedMobile);
} catch (Exception e) { } 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; return abMessageDO;
} }
} }

@ -1,8 +1,18 @@
package com.yuyou.openapi.openapi.model.convert; 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.dataobject.ZhangmenMessageDO;
import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO; import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO;
import com.yuyou.openapi.openapi.model.vo.ABClientZMMessageVO; 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 * @version 1.0
* @date 2020/8/10 * @date 2020/8/10
*/ */
@Slf4j
public class ZhangmenMessageConverter { public class ZhangmenMessageConverter {
/** /**
@ -22,13 +33,50 @@ public class ZhangmenMessageConverter {
return abzmMessageDTO; return abzmMessageDTO;
} }
/**
* DTODO
* @param list
* @return
*/
public static List<ZhangmenMessageDO> convertZhangmenMessageDOFromDTO(List<ABZMMessageDTO> list) {
if (CollectionUtils.isEmpty(list)) {
return null;
}
List<ZhangmenMessageDO> zhangmenMessageDOs = new ArrayList<>();
list.forEach(each -> {
ZhangmenMessageDO zhangmenMessageDO = convertZhangmenMessageDOFromDTO(each);
if (zhangmenMessageDO != null) {
zhangmenMessageDOs.add(zhangmenMessageDO);
}
});
return zhangmenMessageDOs;
}
/** /**
* DTODO * DTODO
* @param abzmMessageDTO * @param abzmMessageDTO
* @return * @return
*/ */
public static ZhangmenMessageDO convertZhangmenMessageDOFromDTO(ABZMMessageDTO abzmMessageDTO) { public static ZhangmenMessageDO convertZhangmenMessageDOFromDTO(ABZMMessageDTO abzmMessageDTO) {
if (abzmMessageDTO == null || abzmMessageDTO.getData() == null) {
return null;
}
ZhangmenMessageDO zhangmenMessageDO = new ZhangmenMessageDO(); 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; return zhangmenMessageDO;
} }
} }

@ -55,7 +55,7 @@ public class ZhangmenMessageDO {
* *
*/ */
@Column(name = "stu_grade") @Column(name = "stu_grade")
private String stuGrade; private Integer stuGrade;
/** /**
* *

@ -19,10 +19,13 @@ public class ABZMMessageDTO {
/** /**
* *
*/ */
private Data data; private Datas data;
static class Tag { @Data
@AllArgsConstructor
@NoArgsConstructor
public static class Tag {
/** /**
* *
*/ */
@ -44,8 +47,10 @@ public class ABZMMessageDTO {
private String tag_key_course; private String tag_key_course;
} }
@Data
static class Data { @AllArgsConstructor
@NoArgsConstructor
public static class Datas {
/** /**
* id * id

@ -23,10 +23,12 @@ public interface ABClientService {
*/ */
boolean recordAndSendABClientMsg(List<ABMessageDTO> dto); boolean recordAndSendABClientMsg(List<ABMessageDTO> dto);
boolean updateSendStatus(Long recId, boolean success);
/** /**
* , * ,
* *
* @param dto Bean * @param dto Bean
*/ */
void recordZMClientMsg(ABZMMessageDTO dto); boolean recordZMClientMsg(ABZMMessageDTO dto);
} }

@ -1,8 +1,11 @@
package com.yuyou.openapi.openapi.service.impl; package com.yuyou.openapi.openapi.service.impl;
import com.yuyou.openapi.openapi.dao.ABMessageRepository; 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.ABMessageConverter;
import com.yuyou.openapi.openapi.model.convert.ZhangmenMessageConverter;
import com.yuyou.openapi.openapi.model.dataobject.ABMessageDO; 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.ABMessageDTO;
import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO; import com.yuyou.openapi.openapi.model.dto.ABZMMessageDTO;
import com.yuyou.openapi.openapi.service.ABClientService; import com.yuyou.openapi.openapi.service.ABClientService;
@ -35,8 +38,15 @@ public class ABClientServiceImpl implements ABClientService {
@Autowired @Autowired
private ABMessageRepository abMessageRepository; private ABMessageRepository abMessageRepository;
@Autowired
private ZhangmenMessageRepository zhangmenMessageRepository;
@Override @Override
public boolean recordAndSendABClientMsg(List<ABMessageDTO> dtos) { public boolean recordAndSendABClientMsg(List<ABMessageDTO> dtos) {
if (CollectionUtils.isEmpty(dtos)) {
log.error("Param dtos is empty");
return Boolean.FALSE;
}
// 调用接口进行入库 // 调用接口进行入库
List<ABMessageDO> abMessageDOS = ABMessageConverter.convertABMessageDOFromDTO(dtos); List<ABMessageDO> abMessageDOS = ABMessageConverter.convertABMessageDOFromDTO(dtos);
// TODO: 2020/8/10 0010 加密存储 // TODO: 2020/8/10 0010 加密存储
@ -48,17 +58,42 @@ public class ABClientServiceImpl implements ABClientService {
// TODO: 2020/8/10 0010 解密 发送 // TODO: 2020/8/10 0010 解密 发送
// 调用异步任务进行转发AB单 - 这里是这有一条数据 // 调用异步任务进行转发AB单 - 这里是这有一条数据
// 返回处理结果 // 返回处理结果
// TODO: 2020/8/11 0011 暂时关闭下游接口 - 进行测试
//abDownTask.doRunTask(dtos); //abDownTask.doRunTask(dtos);
return Boolean.TRUE; 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 * @param dto Bean
*/ */
@Override @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;
} }
} }

@ -27,14 +27,21 @@ public class ABClientServiceProxy implements ABClientService {
public boolean recordAndSendABClientMsg(List<ABMessageDTO> list) { public boolean recordAndSendABClientMsg(List<ABMessageDTO> list) {
// 解密List<ABMessageDTO>中的加密字段 // 解密List<ABMessageDTO>中的加密字段
list.forEach(each -> { list.forEach(each -> {
each.setActName(each.getActName()); // mobile不进行解密处理
each.setActName(decryptBase64Value(each.getActName()));
}); });
return abClientService.recordAndSendABClientMsg(list); return abClientService.recordAndSendABClientMsg(list);
} }
@Override @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);
} }
/** /**

@ -1,14 +1,13 @@
package com.yuyou.openapi.openapi.task; package com.yuyou.openapi.openapi.task;
import cn.hutool.core.codec.Base64;
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.yuyou.openapi.openapi.model.dto.ABMessageDTO;
import com.yuyou.openapi.openapi.model.dto.ABMessageCovDTO; import com.yuyou.openapi.openapi.model.dto.ABMessageCovDTO;
import com.yuyou.openapi.openapi.model.dto.ABMessageDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -43,13 +42,12 @@ public class ABDownTask {
* @return * @return
*/ */
@Async(value = "abTaskExecutor") @Async(value = "abTaskExecutor")
public boolean doRunTask(List<ABMessageDTO> messageDTOList){ public void doRunTask(List<ABMessageDTO> messageDTOList){
Long satrtMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); Long satrtMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
log.info("====== [ task start running, task name is {} ] ======", "ABDownTask"); log.info("====== [ task start running, task name is {} ] ======", "ABDownTask");
boolean resultTag = runTask(messageDTOList); runTask(messageDTOList);
Long endMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); Long endMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
log.info("====== [ task start end, task name is {},cost milliSecond is {} ] ======", "ABDownTask", (endMilliSecond-satrtMilliSecond)); log.info("====== [ task start end, task name is {},cost milliSecond is {} ] ======", "ABDownTask", (endMilliSecond-satrtMilliSecond));
return resultTag;
} }
/** /**
@ -65,7 +63,7 @@ public class ABDownTask {
List<ABMessageDTO> filterData = messageDTOList.stream() List<ABMessageDTO> filterData = messageDTOList.stream()
.filter(item -> (1 == item.getClientType()) || 2 == item.getClientType()) .filter(item -> (1 == item.getClientType()) || 2 == item.getClientType())
.map(item -> { .map(item -> {
StringUtils.reverse(Base64.encode(item.getMobile())); StringUtils.reverse(item.getMobile());
return item; return item;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -82,6 +80,7 @@ public class ABDownTask {
// 调用HTTP请求发送数据 // 调用HTTP请求发送数据
HttpResponse httpResponse = sendReq(jsonObject); HttpResponse httpResponse = sendReq(jsonObject);
if (httpResponse.isOk() && httpResponse.body().contains("成功")){ if (httpResponse.isOk() && httpResponse.body().contains("成功")){
log.info("========== [request success, response is {} ] ==========", httpResponse.body());
break; break;
}else{ }else{
count ++; count ++;

@ -0,0 +1,20 @@
package com.yuyou.openapi.openapi.utils;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
public class DateUtils {
public static DateTime date(Long date) {
if (date == null) {
return null;
}
if (date.toString().length() == 10) {
date = date * 1000;
}
if (date.toString().length() == 13) {
return DateUtil.date(date);
}
return null;
}
}

@ -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 { public static void main(String[] args) throws SecretException {
String decryptValue = aesDecrypt("DqkOjL726BFVqAj5TNkgyw==", "AnOQ&1^lyobm%vUX"); String decryptValue = aesDecrypt("DqkOjL726BFVqAj5TNkgyw==", "AnOQ&1^lyobm%vUX");
System.out.println(decryptValue); System.out.println(decryptValue);

@ -1,8 +0,0 @@
{
"properties": [
{
"name": "ab.customer.app_id",
"type": "java.lang.String",
"description": "Description for ab.customer.app_id."
}
] }

@ -1,12 +1,14 @@
spring: spring:
profiles: profiles:
active: dev active: prod
# 序列化忽略null的k-v配置 # 序列化忽略null的k-v配置
jackson: jackson:
default-property-inclusion: non_null default-property-inclusion: non_null
# JPA数据层相关配置 # JPA数据层相关配置
jpa: jpa:
show-sql: true show-sql: true
open-in-view: false
--- ---
# 端口 # 端口
server: server:
@ -17,13 +19,13 @@ spring:
# 数据库相关配置 # 数据库相关配置
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/push?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false url: jdbc:mysql://localhost:3306/push?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root username: root
password: root password: root
# 下游请求配置信息 # 下游请求配置信息
ab: ab:
customer: customer:
url: https://sandbox.openapi.ppke.com.cn/ url: http://sandbox.openapi.ppke.com.cn/openapi/tmk/clues/receive
app_id: YY9X8XCZ app_id: YY9X8XCZ
thread_pool: thread_pool:
corePoolSize: 2 corePoolSize: 2
@ -41,16 +43,18 @@ spring:
# 数据库相关配置 # 数据库相关配置
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/push?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false url: jdbc:mysql://localhost:3306/push?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root username: root
password: Yuyou@2020 password: Yuyou@2020
# 下游请求配置信息 # 下游请求配置信息
ab: ab:
customer: customer:
url: https://openapi.ppke.com.cn/ url: https://openapi.ppke.com.cn/openapi/tmk/clues/receive
app_id: app_id app_id: YY9X8XCZ
thread_pool: thread_pool:
corePoolSize: 2 corePoolSize: 2
maxPoolSize: 16 maxPoolSize: 16
queueCapacity: 3 queueCapacity: 3
ThreadNamePrefix: "AB-Req-" ThreadNamePrefix: "AB-Req-"
logging:
config: classpath:logback.xml

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration scan="false" debug="false">
<!-- TODO 非dev环境用/tmp/gateway/${MODULE_NAME}dev环境可以用${user.dir}/logs/warn_nginx_plus -->
<property name="LOG_DIR" value="./log/" />
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss:SS} %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50}) - %cyan(%msg%n)" />
<appender name="stdAppender" class="ch.qos.logback.core.ConsoleAppender">
<withJansi>true</withJansi> <!-- 如果是UTF-8的环境这句要注释掉 -->
<encoder>
<pattern>%highlight([%-5level]) %cyan(%d{yyyy-MM-dd#HH:mm:ss.SSS}) %yellow([Thread:%thread]) %magenta([Logger:%logger]) -> %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
</appender>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/log.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天归档,如果按小时后面加-hh -->
<fileNamePattern>${LOG_DIR}/history/%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<append>true</append>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 不写TRACE DEBUG -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="INFO">
<!-- TODO prod 环境去掉std -->
<!--<appender-ref ref="stdAppender"/>-->
<appender-ref ref="fileAppender"/>
</root>
</configuration>

@ -19,6 +19,7 @@ public class RSATest {
// 待加密字符串 // 待加密字符串
String str = "{\"tag\":{\"tag_key_name\":\"学生姓名\",\"tag_key_mobile\":\"联系方式\",\"tag_key_grade\":\"课程年级\",\"tag_key_course\":\"课程科目\"},\"data\":{\"name\":\"张小兵\",\"mobile\":\"13011112222\",\"grade\":\"三年级\",\"course\":\"数学\"}}"; String str = "{\"tag\":{\"tag_key_name\":\"学生姓名\",\"tag_key_mobile\":\"联系方式\",\"tag_key_grade\":\"课程年级\",\"tag_key_course\":\"课程科目\"},\"data\":{\"name\":\"张小兵\",\"mobile\":\"13011112222\",\"grade\":\"三年级\",\"course\":\"数学\"}}";
str = "JTdCJTIydGFnJTIyJTNBJTdCJTIydGFnX2tleV9pZCUyMiUzQSUyMklEJXU2ODA3JXU4QkM2JTIyJTJDJTIydGFnX2tleV9uYW1lJTIyJTNBJTIyJXU1QjY2JXU3NTFGJXU1OUQzJXU1NDBEJTIyJTJDJTIydGFnX2tleV8lMjBtb2JpbGUlMjIlM0ElMjIldTgwNTQldTdDRkIldTY1QjkldTVGMEYlMjIlMkMlMjJ0YWdfa2V5XyUyMGdyYWRlJTIyJTNBJTIyJXU4QkZFJXU3QTBCJXU1RTc0JXU3RUE3JTIyJTJDJTIydGFnX2tleV8lMjBjb3Vyc2UlMjIlM0ElMjIldThCRkUldTdBMEIldTc5RDEldTc2RUUlMjIlN0QlMkMlMjJkYXRhJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMiV1NUYyMCV1NUMwRiV1NTE3NSUyMiUyQyUyMm1vYmlsZSUyMiUzQSUyMjEzMDExMTEyMjIyJTIyJTJDJTIyZ3JhZGUlMjIlM0ElMjIldTRFMDkldTVFNzQldTdFQTclMjIlMkMlMjJjb3Vyc2UlMjIlM0ElMjIldTY1NzAldTVCNjYlMjIlN0QlN0Q=";
//先用Base64编码 //先用Base64编码
String encode = Base64.encode(str); String encode = Base64.encode(str);
System.out.println("Base64加密后的内容为:" + encode); System.out.println("Base64加密后的内容为:" + encode);
@ -71,6 +72,8 @@ public class RSATest {
// 公钥加密,私钥解密 // 公钥加密,私钥解密
byte[] encrypt = rsa.encrypt(StrUtil.bytes(encode, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey); byte[] encrypt = rsa.encrypt(StrUtil.bytes(encode, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
System.out.println("加密串" + StrUtil.str(encrypt, CharsetUtil.CHARSET_UTF_8));
// System.out.println("加密"+ Arrays.toString(encrypt));
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey); byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
//Base64解码 //Base64解码

Loading…
Cancel
Save