提交 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 io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.*;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal; import java.math.BigDecimal;
import static com.clx.performance.sdk.constant.MessageConstants.ORDER_CHILD_INFO_SYNC;
@Getter @Getter
@Setter @Setter
@ToString @ToString
@NoArgsConstructor @NoArgsConstructor
public class OrderChildData { @AllArgsConstructor
@Builder
@EqualsAndHashCode
public class OrderChildMessage implements Message{
@ApiModelProperty(value = "运单编号", example = "100000000") @ApiModelProperty(value = "运单编号", example = "100000000")
private String childNo; private String childNo;
...@@ -47,4 +49,9 @@ public class OrderChildData { ...@@ -47,4 +49,9 @@ public class OrderChildData {
@ApiModelProperty(value="卸货净重",example = "41") @ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet; 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; ...@@ -3,7 +3,13 @@ package com.clx.performance.sdk.constant;
public class MessageConstants { 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 @@ ...@@ -45,6 +45,12 @@
<artifactId>user-api</artifactId> <artifactId>user-api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.clx.cy</groupId>
<artifactId>performance-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>com.msl</groupId> <groupId>com.msl</groupId>
<artifactId>user-sdk</artifactId> <artifactId>user-sdk</artifactId>
......
package com.clx.performance.dto.zjxl.dts; package com.clx.performance.dto.dts;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import lombok.Data; 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.clx.order.vo.feign.FeignAddressVO;
import com.msl.common.base.Optional; 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.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional; 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.clx.order.vo.feign.FeignOrderInfoVO;
import com.msl.common.base.Optional; 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.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam; 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.feign.AddressFeign;
import com.clx.order.vo.feign.FeignAddressVO; 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.base.Optional;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import lombok.AllArgsConstructor; 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.feign.DriverFeign;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.msl.common.base.Optional; 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.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderInfoVO; 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.base.Optional;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import lombok.AllArgsConstructor; 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.common.base.Optional;
import com.msl.user.param.user.external.PageProductUsersParam; import com.msl.user.param.user.external.PageProductUsersParam;
import com.msl.user.vo.company.external.ListUserCompanyVo; import com.msl.user.vo.company.external.ListUserCompanyVo;
......
...@@ -2,11 +2,13 @@ package com.clx.performance.listener; ...@@ -2,11 +2,13 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.data.OrderChildData; import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.dto.zjxl.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -14,39 +16,47 @@ import org.springframework.stereotype.Component; ...@@ -14,39 +16,47 @@ import org.springframework.stereotype.Component;
import java.util.Objects; import java.util.Objects;
import static com.clx.performance.sdk.constant.MessageConstants.*;
@Slf4j @Slf4j
@Component @Component
@AllArgsConstructor
public class OrderChildDtsListener { 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) } catch (Exception e) {
// public void onMessage(Message message) { log.info("DTS消息同步失败, database:clx_performance.order_child, error:{}", e.getMessage());
// 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());
// }
// }
} }
...@@ -8,9 +8,9 @@ import com.clx.order.vo.feign.FeignOrderInfoVO; ...@@ -8,9 +8,9 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.constant.RedissonConstants; import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.AddressService; import com.clx.performance.external.user.AddressService;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.external.user.DriverService;
import com.clx.performance.extranal.user.OrderService; import com.clx.performance.external.user.OrderService;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam; import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论