提交 db54c8e1 authored 作者: liruixin's avatar liruixin

performance-sdk

上级 a84745a0
package com.clx.performance.data;
package com.clx.performance.sdk.callback.message;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.*;
import java.math.BigDecimal;
import static com.clx.performance.sdk.constant.MessageConstants.ORDER_CHILD_INFO_SYNC;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OrderChildData {
@AllArgsConstructor
@Builder
@EqualsAndHashCode
public class OrderChildMessage implements Message{
@ApiModelProperty(value = "运单编号", example = "100000000")
private String childNo;
......@@ -47,4 +49,9 @@ public class OrderChildData {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@Override
public String topic() {
return ORDER_CHILD_INFO_SYNC;
}
}
package com.clx.performance.sdk.callback.message;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.clx.performance.sdk.constant.MessageConstants.QUOTATION_INFO_SYNC;
/**
* @ClassName Quotation
* @Description 同步调价
* @Author kavin
* @Date 2023/10/14 17:56
* @Version 1.0
*/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class QuotationUpdateMessage implements Message{
@ApiModelProperty(value = "订单编号")
private String orderNo;
@ApiModelProperty(value = "平台报价价格")
private BigDecimal platformFreightQuotation;
@ApiModelProperty(value = "报价超时时间")
private LocalDateTime quotationTimeoutTime;
@Override
public String topic() {
return QUOTATION_INFO_SYNC;
}
}
......@@ -3,7 +3,13 @@ package com.clx.performance.sdk.constant;
public class MessageConstants {
public static final String QUOTATION_INFO_SYNC = "quotation.info.sync";
public static final String APP_ID = "app_id";
public static final String APP_SECRET = "app_secret";
public static final String ORDER_CHILD_INFO_SYNC_URL = "order_child_info_sync_url";
public static final String ORDER_CHILD_INFO_SYNC = "order.child.info.sync";
}
......@@ -45,6 +45,12 @@
<artifactId>user-api</artifactId>
</dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>performance-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>user-sdk</artifactId>
......
package com.clx.performance.dto.zjxl.dts;
package com.clx.performance.dto.dts;
import com.clx.performance.enums.DtsOperationTypeEnum;
import lombok.Data;
......
package com.clx.performance.external.encrypt;
import com.msl.common.result.Result;
public interface EncryptService {
/**
* @Author kavin
* @Description 加密请求
* @Param [appId, secret, url, param, action]
* @return
**/
Result<?> encryptPost(String appId,String secret,String url,String param, String action);
}
package com.clx.performance.external.encrypt.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.external.encrypt.EncryptService;
import com.google.gson.Gson;
import com.msl.common.dto.HttpDTO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import com.msl.common.utils.EncryptUtil;
import com.msl.common.utils.HttpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.security.GeneralSecurityException;
import static com.clx.user.enums.result.UserResultEnum.HTTP_ERROR;
@Service
@Slf4j
public class EncryptServiceImpl implements EncryptService {
@Override
public Result<?> encryptPost(String appId,String secret,String url,String param,String action) {
log.info("开始请求交易平台接口,请求action:{},请求参数:{}",action,param);
try {
HttpDTO httpDTO = EncryptUtil.buildDTO(appId, param, secret, System.currentTimeMillis());
httpDTO.setAction(action);
return HttpUtil.post(url, null, httpDTO)
.map(r -> JSON.parseObject(r, new TypeReference<HttpDTO>() {
}))
.peek(dto -> log.info("http请求返回------dto->{}", dto))
.map(HttpDTO::getData)
.mapTry(d -> EncryptUtil.decrypt(d, secret))
.mapWithObj(new TypeReference<Result<Object>>() {
}, this::covertResult)
.orElseThrow(HTTP_ERROR);
} catch (GeneralSecurityException e) {
log.error("解密失败", e);
throw new ServiceSystemException(HTTP_ERROR);
}
}
private <T> Result<T> covertResult(String result, TypeReference<Result<T>> reference) {
return new Gson().fromJson(result, reference.getType());
}
}
package com.clx.performance.extranal.user;
package com.clx.performance.external.user;
import com.clx.order.vo.feign.FeignAddressVO;
import com.msl.common.base.Optional;
......
package com.clx.performance.extranal.user;
package com.clx.performance.external.user;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional;
......
package com.clx.performance.extranal.user;
package com.clx.performance.external.user;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.msl.common.base.Optional;
......
package com.clx.performance.extranal.user;
package com.clx.performance.external.user;
import com.msl.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam;
......
package com.clx.performance.extranal.user.impl;
package com.clx.performance.external.user.impl;
import com.clx.order.feign.AddressFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.external.user.AddressService;
import com.msl.common.base.Optional;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
......
package com.clx.performance.extranal.user.impl;
package com.clx.performance.external.user.impl;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.external.user.DriverService;
import com.clx.user.feign.DriverFeign;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional;
......
package com.clx.performance.extranal.user.impl;
package com.clx.performance.external.user.impl;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.external.user.OrderService;
import com.msl.common.base.Optional;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
......
package com.clx.performance.extranal.user.impl;
package com.clx.performance.external.user.impl;
import com.clx.performance.extranal.user.UserService;
import com.clx.performance.external.user.UserService;
import com.msl.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam;
import com.msl.user.vo.company.external.ListUserCompanyVo;
......
......@@ -2,11 +2,13 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.data.OrderChildData;
import com.clx.performance.dto.zjxl.dts.DataTransportDTO;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum;
//import com.msl.common.utils.DtsMapConvertUtil;
import com.clx.performance.external.encrypt.EncryptService;
import com.clx.performance.sdk.callback.message.OrderChildMessage;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -14,39 +16,47 @@ import org.springframework.stereotype.Component;
import java.util.Objects;
import static com.clx.performance.sdk.constant.MessageConstants.*;
@Slf4j
@Component
@AllArgsConstructor
public class OrderChildDtsListener {
private final EncryptService encryptService;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.order_child, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
OrderChildMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new OrderChildMessage());
OrderChildMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new OrderChildMessage());
if(Objects.equals(DtsOperationTypeEnum.INSERT.getCode(),dataTransportDTO.getOperationType().getCode())){
//同步after数据
System.out.println("新增:"+after);
encryptService.encryptPost(APP_ID,APP_SECRET,ORDER_CHILD_INFO_SYNC_URL,JSON.toJSONString(after),after.topic());
}else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){
//同步after数据
System.out.println("修改:"+after);
encryptService.encryptPost(APP_ID,APP_SECRET,ORDER_CHILD_INFO_SYNC_URL,JSON.toJSONString(after),after.topic());
}
}else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
System.out.println("删除:"+before);
encryptService.encryptPost(APP_ID,APP_SECRET,ORDER_CHILD_INFO_SYNC_URL,JSON.toJSONString(after),after.topic());
}
//@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
// public void onMessage(Message message) {
// try {
// String msg = new String(message.getBody());
// log.info("DTS消息同步开始, database:clx_performance.order_child, msg:{}", msg);
//
// DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
//
// OrderChildData before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new OrderChildData());
// OrderChildData after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new OrderChildData());
//
// if(Objects.equals(DtsOperationTypeEnum.INSERT.getCode(),dataTransportDTO.getOperationType().getCode())){
// //同步after数据
// System.out.println("新增:"+after);
// }else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
// if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){
// //同步after数据
// System.out.println("修改:"+after);
// }
// }else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
// //数据删除
// System.out.println("删除:"+before);
// }
//
//
// } catch (Exception e) {
// log.info("DTS消息同步失败, database:clx_performance.order_child, error:{}", e.getMessage());
// }
// }
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.order_child, error:{}", e.getMessage());
}
}
}
......@@ -8,9 +8,9 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.external.user.AddressService;
import com.clx.performance.external.user.DriverService;
import com.clx.performance.external.user.OrderService;
import com.clx.performance.model.*;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论