字段适配
public class BaseInfo {
private String userId;
private String bizId;
private String bizTime;
private String desc;
private String address;
@SneakyThrows
@Override
public String toString ( ) {
return new ObjectMapper ( ) . writeValueAsString ( this ) ;
}
public static class Account implements Serializable {
String num;
String address;
String date;
String desc;
String bizId;
}
public class MQAdapter {
public static BaseInfo filter ( String json, Map < String , String > link) throws JsonProcessingException {
return baseInfo ( new ObjectMapper ( ) . readValue ( json, Map . class ) , link) ;
}
public static BaseInfo baseInfo ( Map obj, Map < String , String > link) {
BaseInfo baseInfo = new BaseInfo ( ) ;
link. forEach ( ( key, val) -> {
Object v = obj. get ( link. get ( key) ) ;
try {
String substring = key. substring ( 0 , 1 ) . toUpperCase ( ) + key. substring ( 1 ) ;
System . out. println ( substring) ;
BaseInfo . class . getMethod ( "set" + key. substring ( 0 , 1 ) . toUpperCase ( ) + key. substring ( 1 ) , String . class )
. invoke ( baseInfo, v) ;
} catch ( IllegalAccessException e) {
e. printStackTrace ( ) ;
} catch ( InvocationTargetException e) {
e. printStackTrace ( ) ;
} catch ( NoSuchMethodException e) {
e. printStackTrace ( ) ;
}
} ) ;
return baseInfo;
}
}
Account account = new Account ( ) ;
account. num = "1000" ;
account. address = "中国北京" ;
account. date = "2021-09-08 19:00:00" ;
account. desc = "描述" ;
account. bizId = "12112" ;
Map < String , String > links = new HashMap < > ( ) ;
links. put ( "userId" , "num" ) ;
links. put ( "address" , "address" ) ;
links. put ( "bizId" , "bizId" ) ;
links. put ( "bizTime" , "date" ) ;
links. put ( "desc" , "desc" ) ;
BaseInfo baseInfo = MQAdapter . filter ( account. toString ( ) , links) ;
System . out. println ( "适配前:" + account. toString ( ) ) ;
System . out. println ( "适配后:" + baseInfo. toString ( ) ) ;
适配前: { "num" : "1000" , "address" : "中国北京" , "date" : "2021-09-08 19:00:00" , "desc" : "描述" , "bizId" : "12112" }
适配后: { "userId" : "1000" , "bizId" : "12112" , "bizTime" : "2021-09-08 19:00:00" , "desc" : "描述" , "address" : "中国北京" }
公共逻辑适配
public interface OrderAdapterService {
boolean isFirst ( Long userId, Long productId) ;
}
public class InsideOrderAdapterServiceImpl implements OrderAdapterService {
private OrderService orderService;
@Override
public boolean isFirst ( Long userId, Long productId) {
return orderService. queryUserOrderCount ( userId, 1L ) <= 1 ;
}
}
public class OrderService {
public int queryUserOrderCount ( Long userId, Long productId) {
return 1 ;
}
}
public class ThirdOrderAdapterServiceImpl implements OrderAdapterService {
ThirdOrderService thirdOrderService = new ThirdOrderService ( ) ;
@Override
public boolean isFirst ( Long userId, Long productId) {
return thirdOrderService. queryUserOrderCount ( userId, productId) <= 1 ;
}
}
public class ThirdOrderService {
public int queryUserOrderCount ( Long userId, Long productId) {
return 1 ;
}
}