Mapper建立代理物件sqlSession
前言
剛開始使用Mybaits的同學有沒有這樣的疑惑,為什麼我們沒有編寫Mapper的實現類,卻能呼叫Mapper的方法呢?本篇文章我帶大家一起來解決這個疑問
上一篇文章我們獲取到了DefaultSqlSession,接著我們來看第一篇文章測試用例後面的程式碼
//獲取對應的mapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//執行方法
List<User> list = userMapper.getAll();
為 Mapper 介面建立代理物件
我們先從 DefaultSqlSession 的 getMapper 方法開始看起,如下:
public class DefaultSqlSession implements SqlSession { private final Configuration configuration; @Override public <T> T getMapper(Class<T> type) { return configuration.<T>getMapper(type, this); } } public class Configuration { protected final MapperRegistry mapperRegistry = new MapperRegistry(this); public <T> T getMapper(Class<T> type, SqlSession sqlSession) { return mapperRegistry.getMapper(type, sqlSession); } } public class MapperRegistry { private final Map<Class<?>, MapperProxyFactory<?>> knownMappers = new HashMap<Class<?>, MapperProxyFactory<?>>(); @SuppressWarnings("unchecked") public <T> T getMapper(Class<T> type, SqlSession sqlSession) { // 從 knownMappers 中獲取與 type 對應的 MapperProxyFactory final MapperProxyFactory<T> mapperProxyFactory = (MapperProxyFactory<T>) knownMappers.get(type); if (mapperProxyFactory == null) { throw new BindingException("Type " + type + " is not known to the MapperRegistry."); } try { // 建立代理物件 return mapperProxyFactory.newInstance(sqlSession); } catch (Exception e) { throw new BindingException("Error getting mapper instance. Cause: " + e, e); } } }
這裡最重要就是加了註釋的兩行程式碼。
獲取MapperProxyFactory
根據名稱看,可以理解為Mapper代理的建立工廠,是不是Mapper的代理物件由它建立呢?我們先來回顧一下knownMappers 集合中的元素是何時存入的。這要在我前面的文章中找答案,MyBatis 在解析配置檔案的 <mappers> 節點的過程中,會呼叫 MapperRegistry 的 addMapper 方法將 Class 到 MapperProxyFactory 物件的對映關係存入到 knownMappers。有興趣的同學可以看看我之前的文章,我們來回顧一下原始碼:
public class XMLMapperBuilder extends BaseBuilder { private final XPathParser parser; private final MapperBuilderAssistant builderAssistant; private void bindMapperForNamespace() { // 獲取對映檔案的名稱空間 String namespace = builderAssistant.getCurrentNamespace(); if (namespace != null) { Class<?> boundType = null; try { // 根據名稱空間解析 mapper 型別 boundType = Resources.classForName(namespace); } catch (ClassNotFoundException e) { //ignore, bound type is not required } if (boundType != null) { // 檢測當前 mapper 類是否被繫結過 if (!configuration.hasMapper(boundType)) { // Spring may not know the real resource name so we set a flag // to prevent loading again this resource from the mapper interface // look at MapperAnnotationBuilder#loadXmlResource configuration.addLoadedResource("namespace:" + namespace); // 繫結 mapper 類 configuration.addMapper(boundType); } } } } } public class Configuration { protected final MapperRegistry mapperRegistry = new MapperRegistry(this); public <T> void addMapper(Class<T> type) { // 通過 MapperRegistry 繫結 mapper 類 mapperRegistry.addMapper(type); } } public class MapperRegistry { private final Map<Class<?>, MapperProxyFactory<?>> knownMappers = new HashMap<Class<?>, MapperProxyFactory<?>>(); public <T> void addMapper(Class<T> type) { if (type.isInterface()) { if (hasMapper(type)) { throw new BindingException("Type " + type + " is already known to the MapperRegistry."); } boolean loadCompleted = false; try { /* * 將 type 和 MapperProxyFactory 進行繫結,MapperProxyFactory 可為 mapper 介面生成代理類 */ knownMappers.put(type, new MapperProxyFactory<T>(type)); // It's important that the type is added before the parser is run // otherwise the binding may automatically be attempted by the // mapper parser. If the type is already known, it won't try. MapperAnnotationBuilder parser = new MapperAnnotationBuilder(config, type); // 解析註解中的資訊 parser.parse(); loadCompleted = true; } finally { if (!loadCompleted) { knownMappers.remove(type); } } } } }
在解析Mapper.xml的最後階段,獲取到Mapper.xml的namespace,然後利用反射,獲取到namespace的Class,並建立一個MapperProxyFactory的例項,namespace的Class作為引數,最後將namespace的Class為key,MapperProxyFactory的例項為value存入knownMappers。
注意,我們這裡是通過對映檔案的名稱空間的Class當做knownMappers的Key。然後我們看看getMapper方法,是通過引數User.class也就是Mapper介面的Class來獲取MapperProxyFactory,所以我們明白了為什麼要求xml配置中的namespace要和和對應的Mapper介面的全限定名了。
生成代理物件
我們看return mapperProxyFactory.newInstance(sqlSession);
,很明顯是呼叫了MapperProxyFactory的一個工廠方法,我們跟進去看看
public class MapperProxyFactory<T> {
//存放Mapper介面Class
private final Class<T> mapperInterface;
private final Map<Method, MapperMethod> methodCache = new ConcurrentHashMap<Method, MapperMethod>();
public MapperProxyFactory(Class<T> mapperInterface) {
this.mapperInterface = mapperInterface;
}
public Class<T> getMapperInterface() {
return mapperInterface;
}
public Map<Method, MapperMethod> getMethodCache() {
return methodCache;
}
@SuppressWarnings("unchecked")
protected T newInstance(MapperProxy<T> mapperProxy) {
//生成mapperInterface的代理類
return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
}
public T newInstance(SqlSession sqlSession) {
/*
* 建立 MapperProxy 物件,MapperProxy 實現了 InvocationHandler 介面,代理邏輯封裝在此類中
* 將sqlSession傳入MapperProxy物件中,第二個引數是Mapper的介面,並不是其實現類
*/
final MapperProxy<T> mapperProxy = new MapperProxy<T>(sqlSession, mapperInterface, methodCache);
return newInstance(mapperProxy);
}
}
上面的程式碼首先建立了一個 MapperProxy 物件,該物件實現了 InvocationHandler 介面。然後將物件作為引數傳給過載方法,並在過載方法中呼叫 JDK 動態代理介面為 Mapper介面 生成代理物件。
這裡要注意一點,MapperProxy這個InvocationHandler 建立的時候,傳入的引數並不是Mapper介面的實現類,我們以前是怎麼建立JDK動態代理的?先建立一個介面,然後再建立一個介面的實現類,最後建立一個InvocationHandler並將實現類傳入其中作為目標類,建立介面的代理類,然後呼叫代理類方法時會回撥InvocationHandler的invoke方法,最後在invoke方法中呼叫目標類的方法,但是我們這裡呼叫Mapper介面代理類的方法時,需要呼叫其實現類的方法嗎?不需要,我們需要呼叫對應的配置檔案的SQL,所以這裡並不需要傳入Mapper的實現類到MapperProxy中,那Mapper介面的代理物件是如何呼叫對應配置檔案的SQL呢?下面我們來看看。
Mapper代理類如何執行SQL?
上面一節中我們已經獲取到了EmployeeMapper的代理類,並且其InvocationHandler為MapperProxy,那我們接著看Mapper介面方法的呼叫
List<User> list = userMapper.getAll();
知道JDK動態代理的同學都知道,呼叫代理類的方法,最後都會回撥到InvocationHandler的Invoke方法,那我們來看看這個InvocationHandler(MapperProxy)
public class MapperProxy<T> implements InvocationHandler, Serializable {
private static final long serialVersionUID = -6424540398559729838L;
private final SqlSession sqlSession;
private final Class<T> mapperInterface;
private final Map<Method, MapperMethod> methodCache;
public MapperProxy(SqlSession sqlSession, Class<T> mapperInterface, Map<Method, MapperMethod> methodCache) {
this.sqlSession = sqlSession;
this.mapperInterface = mapperInterface;
this.methodCache = methodCache;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
try {
// 如果方法是定義在 Object 類中的,則直接呼叫
if (Object.class.equals(method.getDeclaringClass())) {
return method.invoke(this, args);
//如果是介面中的default方法,JDK8的新特性之一
} else if (isDefaultMethod(method)) {
//如果使用者執行的是介面中的default方法的話,MyBatis就需要為使用者提供正常的代理流程。
return invokeDefaultMethod(proxy, method, args);
}
} catch (Throwable t) {
throw ExceptionUtil.unwrapThrowable(t);
}
// 從快取中獲取 MapperMethod 物件,若快取未命中,則建立 MapperMethod 物件
final MapperMethod mapperMethod = cachedMapperMethod(method);
// 呼叫 execute 方法執行 SQL
return mapperMethod.execute(sqlSession, args);
}
private MapperMethod cachedMapperMethod(Method method) {
MapperMethod mapperMethod = methodCache.get(method);
if (mapperMethod == null) {
//建立一個MapperMethod,引數為mapperInterface和method還有Configuration
mapperMethod = new MapperMethod(mapperInterface, method, sqlSession.getConfiguration());
methodCache.put(method, mapperMethod);
}
return mapperMethod;
}
}
如上,回撥函式invoke邏輯會首先檢測被攔截的方法是不是定義在 Object 中的,比如 equals、hashCode 方法等。對於這類方法,直接執行即可。緊接著從快取中獲取或者建立 MapperMethod 物件,然後通過該物件中的 execute 方法執行 SQL。我們先來看看如何建立MapperMethod
建立 MapperMethod 物件
public class MapperMethod {
//包含SQL相關資訊,比喻MappedStatement的id屬性,(mapper.UserMapper.getAll)
private final SqlCommand command;
//包含了關於執行的Mapper方法的引數型別和返回型別。
private final MethodSignature method;
public MapperMethod(Class<?> mapperInterface, Method method, Configuration config) {
// 建立 SqlCommand 物件,該物件包含一些和 SQL 相關的資訊
this.command = new SqlCommand(config, mapperInterface, method);
// 建立 MethodSignature 物件,從類名中可知,該物件包含了被攔截方法的一些資訊
this.method = new MethodSignature(config, mapperInterface, method);
}
}
MapperMethod包含SqlCommand 和MethodSignature 物件,我們來看看其建立過程
1、建立 SqlCommand 物件
public static class SqlCommand {
//name為MappedStatement的id,也就是namespace.methodName(mapper.UserMapper.getAll)
private final String name;
//SQL的型別,如insert,delete,update
private final SqlCommandType type;
public SqlCommand(Configuration configuration, Class<?> mapperInterface, Method method) {
//拼接Mapper介面名和方法名,(mapper.UserMapper.getAll)
final String methodName = method.getName();
final Class<?> declaringClass = method.getDeclaringClass();
//檢測configuration是否有key為mapper.UserMapper.getAll的MappedStatement
//獲取MappedStatement
MappedStatement ms = resolveMappedStatement(mapperInterface, methodName, declaringClass,
configuration);
// 檢測當前方法是否有對應的 MappedStatement
if (ms == null) {
if (method.getAnnotation(Flush.class) != null) {
name = null;
type = SqlCommandType.FLUSH;
} else {
throw new BindingException("Invalid bound statement (not found): "
+ mapperInterface.getName() + "." + methodName);
}
} else {
// 設定 name 和 type 變數
name = ms.getId();
type = ms.getSqlCommandType();
if (type == SqlCommandType.UNKNOWN) {
throw new BindingException("Unknown execution method for: " + name);
}
}
}
private MappedStatement resolveMappedStatement(Class<?> mapperInterface, String methodName,
Class<?> declaringClass, Configuration configuration) {
String statementId = mapperInterface.getName() + "." + methodName;
//檢測configuration是否有key為statementName的MappedStatement
if (configuration.hasStatement(statementId)) {
return configuration.getMappedStatement(statementId);
} else if (mapperInterface.equals(declaringClass)) {
return null;
}
for (Class<?> superInterface : mapperInterface.getInterfaces()) {
if (declaringClass.isAssignableFrom(superInterface)) {
MappedStatement ms = resolveMappedStatement(superInterface, methodName,
declaringClass, configuration);
if (ms != null) {
return ms;
}
}
}
return null;
}
}
通過拼接介面名和方法名,在configuration獲取對應的MappedStatement,並設定設定 name 和 type 變數,程式碼很簡單
2、建立 MethodSignature 物件
MethodSignature 包含了被攔截方法的一些資訊,如目標方法的返回型別,目標方法的引數列表資訊等。下面,我們來看一下 MethodSignature 的構造方法。
public static class MethodSignature {
private final boolean returnsMany;
private final boolean returnsMap;
private final boolean returnsVoid;
private final boolean returnsCursor;
private final Class<?> returnType;
private final String mapKey;
private final Integer resultHandlerIndex;
private final Integer rowBoundsIndex;
private final ParamNameResolver paramNameResolver;
public MethodSignature(Configuration configuration, Class<?> mapperInterface, Method method) {
// 通過反射解析方法返回型別
Type resolvedReturnType = TypeParameterResolver.resolveReturnType(method, mapperInterface);
if (resolvedReturnType instanceof Class<?>) {
this.returnType = (Class<?>) resolvedReturnType;
} else if (resolvedReturnType instanceof ParameterizedType) {
this.returnType = (Class<?>) ((ParameterizedType) resolvedReturnType).getRawType();
} else {
this.returnType = method.getReturnType();
}
// 檢測返回值型別是否是 void、集合或陣列、Cursor、Map 等
this.returnsVoid = void.class.equals(this.returnType);
this.returnsMany = configuration.getObjectFactory().isCollection(this.returnType) || this.returnType.isArray();
this.returnsCursor = Cursor.class.equals(this.returnType);
// 解析 @MapKey 註解,獲取註解內容
this.mapKey = getMapKey(method);
this.returnsMap = this.mapKey != null;
/*
* 獲取 RowBounds 引數在引數列表中的位置,如果引數列表中
* 包含多個 RowBounds 引數,此方法會丟擲異常
*/
this.rowBoundsIndex = getUniqueParamIndex(method, RowBounds.class);
// 獲取 ResultHandler 引數在引數列表中的位置
this.resultHandlerIndex = getUniqueParamIndex(method, ResultHandler.class);
// 解析引數列表
this.paramNameResolver = new ParamNameResolver(configuration, method);
}
}
執行 execute 方法
前面已經分析了 MapperMethod 的初始化過程,現在 MapperMethod 建立好了。那麼,接下來要做的事情是呼叫 MapperMethod 的 execute 方法,執行 SQL。傳遞引數sqlSession和method的執行引數args。
return mapperMethod.execute(this.sqlSession, args);
我們去MapperMethod 的execute方法中看看
MapperMethod
public class MapperMethod {
//包含SQL相關資訊,比喻MappedStatement的id屬性,(mapper.UserMapper.getAll)
private final SqlCommand command;
//包含了關於執行的Mapper方法的引數型別和返回型別。
private final MethodSignature method;
public Object execute(SqlSession sqlSession, Object[] args) {
Object result;
// 根據 SQL 型別執行相應的資料庫操作
switch (command.getType()) {
case INSERT: {
// 對使用者傳入的引數進行轉換,下同
Object param = method.convertArgsToSqlCommandParam(args);
// 執行插入操作,rowCountResult 方法用於處理返回值
result = rowCountResult(sqlSession.insert(command.getName(), param));
break;
}
case UPDATE: {
Object param = method.convertArgsToSqlCommandParam(args);
// 執行更新操作
result = rowCountResult(sqlSession.update(command.getName(), param));
break;
}
case DELETE: {
Object param = method.convertArgsToSqlCommandParam(args);
// 執行刪除操作
result = rowCountResult(sqlSession.delete(command.getName(), param));
break;
}
case SELECT:
// 根據目標方法的返回型別進行相應的查詢操作
if (method.returnsVoid() && method.hasResultHandler()) {
executeWithResultHandler(sqlSession, args);
result = null;
} else if (method.returnsMany()) {
// 執行查詢操作,並返回多個結果
result = executeForMany(sqlSession, args);
} else if (method.returnsMap()) {
// 執行查詢操作,並將結果封裝在 Map 中返回
result = executeForMap(sqlSession, args);
} else if (method.returnsCursor()) {
// 執行查詢操作,並返回一個 Cursor 物件
result = executeForCursor(sqlSession, args);
} else {
Object param = method.convertArgsToSqlCommandParam(args);
// 執行查詢操作,並返回一個結果
result = sqlSession.selectOne(command.getName(), param);
}
break;
case FLUSH:
// 執行重新整理操作
result = sqlSession.flushStatements();
break;
default:
throw new BindingException("Unknown execution method for: " + command.getName());
}
if (result == null && method.getReturnType().isPrimitive() && !method.returnsVoid()) {
throw new BindingException("Mapper method '" + command.getName()
+ " attempted to return null from a method with a primitive return type (" + method.getReturnType() + ").");
}
return result;
}
}
如上,execute 方法主要由一個 switch 語句組成,用於根據 SQL 型別執行相應的資料庫操作。我們先來看看是引數的處理方法convertArgsToSqlCommandParam是如何將方法引數陣列轉化成Map的。
public class MapperMethod {
public static class MethodSignature {
private final ParamNameResolver paramNameResolver;
public Object convertArgsToSqlCommandParam(Object[] args) {
return paramNameResolver.getNamedParams(args);
}
}
}
public class ParamNameResolver {
private static final String GENERIC_NAME_PREFIX = "param";
private final SortedMap<Integer, String> names;
private boolean hasParamAnnotation;
public Object getNamedParams(Object[] args) {
final int paramCount = names.size();
if (args == null || paramCount == 0) {
return null;
} else if (!hasParamAnnotation && paramCount == 1) {
return args[names.firstKey()];
} else {
//建立一個Map,key為method的引數名,值為method的執行時引數值
final Map<String, Object> param = new ParamMap<Object>();
int i = 0;
for (Map.Entry<Integer, String> entry : names.entrySet()) {
// 新增 <引數名, 引數值> 鍵值對到 param 中
param.put(entry.getValue(), args[entry.getKey()]);
// add generic param names (param1, param2, ...)
final String genericParamName = GENERIC_NAME_PREFIX + String.valueOf(i + 1);
// ensure not to overwrite parameter named with @Param
if (!names.containsValue(genericParamName)) {
param.put(genericParamName, args[entry.getKey()]);
}
i++;
}
return param;
}
}
}
我們看到,將Object[] args轉化成了一個Map<引數名, 引數值> ,接著我們就可以看查詢過程分析了,如下
// 執行查詢操作,並返回一個結果
result = sqlSession.selectOne(command.getName(), param);
我們看到是通過sqlSession來執行查詢的,並且傳入的引數為command.getName()和param,也就是namespace.methodName(mapper.EmployeeMapper.getAll)和方法的執行引數。
查詢操作在下一篇文章單獨來講。
http://news.hbfzb.com/info.php?id=848824000https://www.hbfzb.com/news.php?id=848824000
http://zhangjiakou.hbfzb.com/apple.php?id=848824000
http://news.hbfzb.com/apple.php?id=848824000
http://xingtai.hbfzb.com/apple.php?id=848824000
http://chengde.hbfzb.com/apple.php?id=848824000
http://shijiazhuang.hbfzb.com/apple.php?id=848824000
http://baoding.hbfzb.com/apple.php?id=848824000
http://hengshui.hbfzb.com/apple.php?id=848824000
https://www.hbfzb.com/html/qhd.php?id=848824000
https://www.hbfzb.com/html/ts.php?id=848824000
https://www.hbfzb.com/html/apple.php?id=848824000
https://www.hbfzb.com/html/news.php?id=848824000
https://www.hbfzb.com/html/zl.php?id=848824000
https://www.hbfzb.com/html/info.php?id=848824000
https://www.hbfzb.com/html/lf.php?id=848824000
https://www.hbfzb.com/html/shou.php?id=848824000
https://www.hbfzb.com/index.php?id=848824000
http://qinhuangdao.hbfzb.com/apple.php?id=848824000
http://xinji.hbfzb.com/apple.php?id=848824000
http://dingzhou.hbfzb.com/apple.php?id=848824000
http://shipin.hbfzb.com/apple.php?id=848824000
http://wshb.hbfzb.com/apple.php?id=848824000
http://photov.hbfzb.com/apple.php?id=848824000
http://szgc.glodon.com/news.php?id=848824000
http://sz.glodon.com/info.php?id=848824000
http://www.bxysg.com/news.asp?id=848824000
http://www.whbts.com/poser.asp?id=848824000
http://www.cquedp.com/news.php?id=848824000
http://cquedp.com/?id=848824000
http://m.cquedp.com/?id=848824000
http://www.hsfuhui.com/a/news.php?id=848824000
http://mdzz.itlun.cn/index.html?id=848824000
http://www.yqyy.net/news.php??id=848824000
http://www.hnalizs.com/news.php?id=848824000
http://www.gdnhec.com/poser.php?id=848824000
http://www.lygwb.com/poser.php?id=848824000
http://mzhihui.mulangcm.com/news/news.php?id=848824000
http://www.spark-lock.com/poser.asp?id=848824000
http://www.fsruijian.net/poser.php?id=848824000
http://www.xdmonitor.com/news.aspx?id=848824000
https://www.iresearch.com.cn/news.aspx?id=848824000
http://www.keyunit.cn/news.php?id=848824000
http://1798.rongbiz.net/new.php?id=848824000
http://news.hbfzb.com/info.php?id=660440006
https://www.hbfzb.com/news.php?id=660440006
http://zhangjiakou.hbfzb.com/apple.php?id=660440006
http://news.hbfzb.com/apple.php?id=660440006
http://xingtai.hbfzb.com/apple.php?id=660440006
http://chengde.hbfzb.com/apple.php?id=660440006
http://shijiazhuang.hbfzb.com/apple.php?id=660440006
http://baoding.hbfzb.com/apple.php?id=660440006
http://hengshui.hbfzb.com/apple.php?id=660440006
https://www.hbfzb.com/html/qhd.php?id=660440006
https://www.hbfzb.com/html/ts.php?id=660440006
https://www.hbfzb.com/html/apple.php?id=660440006
https://www.hbfzb.com/html/news.php?id=660440006
https://www.hbfzb.com/html/zl.php?id=660440006
https://www.hbfzb.com/html/info.php?id=660440006
https://www.hbfzb.com/html/lf.php?id=660440006
https://www.hbfzb.com/html/shou.php?id=660440006
https://www.hbfzb.com/index.php?id=660440006
http://qinhuangdao.hbfzb.com/apple.php?id=660440006
http://xinji.hbfzb.com/apple.php?id=660440006
http://dingzhou.hbfzb.com/apple.php?id=660440006
http://shipin.hbfzb.com/apple.php?id=660440006
http://wshb.hbfzb.com/apple.php?id=660440006
http://photov.hbfzb.com/apple.php?id=660440006
http://szgc.glodon.com/news.php?id=660440006
http://sz.glodon.com/info.php?id=660440006
http://www.bxysg.com/news.asp?id=660440006
http://www.whbts.com/poser.asp?id=660440006
http://www.cquedp.com/news.php?id=660440006
http://cquedp.com/?id=660440006
http://m.cquedp.com/?id=660440006
http://www.hsfuhui.com/a/news.php?id=660440006
http://mdzz.itlun.cn/index.html?id=660440006
http://www.yqyy.net/news.php??id=660440006
http://www.hnalizs.com/news.php?id=660440006
http://www.gdnhec.com/poser.php?id=660440006
http://www.lygwb.com/poser.php?id=660440006
http://mzhihui.mulangcm.com/news/news.php?id=660440006
http://www.spark-lock.com/poser.asp?id=660440006
http://www.fsruijian.net/poser.php?id=660440006
http://www.xdmonitor.com/news.aspx?id=660440006
https://www.iresearch.com.cn/news.aspx?id=660440006
http://www.keyunit.cn/news.php?id=660440006
http://1798.rongbiz.net/new.php?id=660440006
http://news.hbfzb.com/info.php?id=802624480
https://www.hbfzb.com/news.php?id=802624480
http://zhangjiakou.hbfzb.com/apple.php?id=802624480
http://news.hbfzb.com/apple.php?id=802624480
http://xingtai.hbfzb.com/apple.php?id=802624480
http://chengde.hbfzb.com/apple.php?id=802624480
http://shijiazhuang.hbfzb.com/apple.php?id=802624480
http://baoding.hbfzb.com/apple.php?id=802624480
http://hengshui.hbfzb.com/apple.php?id=802624480
https://www.hbfzb.com/html/qhd.php?id=802624480
https://www.hbfzb.com/html/ts.php?id=802624480
https://www.hbfzb.com/html/apple.php?id=802624480
https://www.hbfzb.com/html/news.php?id=802624480
https://www.hbfzb.com/html/zl.php?id=802624480
https://www.hbfzb.com/html/info.php?id=802624480
https://www.hbfzb.com/html/lf.php?id=802624480
https://www.hbfzb.com/html/shou.php?id=802624480
https://www.hbfzb.com/index.php?id=802624480
http://qinhuangdao.hbfzb.com/apple.php?id=802624480
http://xinji.hbfzb.com/apple.php?id=802624480
http://dingzhou.hbfzb.com/apple.php?id=802624480
http://shipin.hbfzb.com/apple.php?id=802624480
http://wshb.hbfzb.com/apple.php?id=802624480
http://photov.hbfzb.com/apple.php?id=802624480
http://szgc.glodon.com/news.php?id=802624480
http://sz.glodon.com/info.php?id=802624480
http://www.bxysg.com/news.asp?id=802624480
http://www.whbts.com/poser.asp?id=802624480
http://www.cquedp.com/news.php?id=802624480
http://cquedp.com/?id=802624480
http://m.cquedp.com/?id=802624480
http://www.hsfuhui.com/a/news.php?id=802624480
http://mdzz.itlun.cn/index.html?id=802624480
http://www.yqyy.net/news.php??id=802624480
http://www.hnalizs.com/news.php?id=802624480
http://www.gdnhec.com/poser.php?id=802624480
http://www.lygwb.com/poser.php?id=802624480
http://mzhihui.mulangcm.com/news/news.php?id=802624480
http://www.spark-lock.com/poser.asp?id=802624480
http://www.fsruijian.net/poser.php?id=802624480
http://www.xdmonitor.com/news.aspx?id=802624480
https://www.iresearch.com.cn/news.aspx?id=802624480
http://www.keyunit.cn/news.php?id=802624480
http://1798.rongbiz.net/new.php?id=802624480
http://news.hbfzb.com/info.php?id=640428682
https://www.hbfzb.com/news.php?id=640428682
http://zhangjiakou.hbfzb.com/apple.php?id=640428682
http://news.hbfzb.com/apple.php?id=640428682
http://xingtai.hbfzb.com/apple.php?id=640428682
http://chengde.hbfzb.com/apple.php?id=640428682
http://shijiazhuang.hbfzb.com/apple.php?id=640428682
http://baoding.hbfzb.com/apple.php?id=640428682
http://hengshui.hbfzb.com/apple.php?id=640428682
https://www.hbfzb.com/html/qhd.php?id=640428682
https://www.hbfzb.com/html/ts.php?id=640428682
https://www.hbfzb.com/html/apple.php?id=640428682
https://www.hbfzb.com/html/news.php?id=640428682
https://www.hbfzb.com/html/zl.php?id=640428682
https://www.hbfzb.com/html/info.php?id=640428682
https://www.hbfzb.com/html/lf.php?id=640428682
https://www.hbfzb.com/html/shou.php?id=640428682
https://www.hbfzb.com/index.php?id=640428682
http://qinhuangdao.hbfzb.com/apple.php?id=640428682
http://xinji.hbfzb.com/apple.php?id=640428682
http://dingzhou.hbfzb.com/apple.php?id=640428682
http://shipin.hbfzb.com/apple.php?id=640428682
http://wshb.hbfzb.com/apple.php?id=640428682
http://photov.hbfzb.com/apple.php?id=640428682
http://szgc.glodon.com/news.php?id=640428682
http://sz.glodon.com/info.php?id=640428682
http://www.bxysg.com/news.asp?id=640428682
http://www.whbts.com/poser.asp?id=640428682
http://www.cquedp.com/news.php?id=640428682
http://cquedp.com/?id=640428682
http://m.cquedp.com/?id=640428682
http://www.hsfuhui.com/a/news.php?id=640428682
http://mdzz.itlun.cn/index.html?id=640428682
http://www.yqyy.net/news.php??id=640428682
http://www.hnalizs.com/news.php?id=640428682
http://www.gdnhec.com/poser.php?id=640428682
http://www.lygwb.com/poser.php?id=640428682
http://mzhihui.mulangcm.com/news/news.php?id=640428682
http://www.spark-lock.com/poser.asp?id=640428682
http://www.fsruijian.net/poser.php?id=640428682
http://www.xdmonitor.com/news.aspx?id=640428682
https://www.iresearch.com.cn/news.aspx?id=640428682
http://www.keyunit.cn/news.php?id=640428682
http://1798.rongbiz.net/new.php?id=640428682
http://news.hbfzb.com/info.php?id=220082486
https://www.hbfzb.com/news.php?id=220082486
http://zhangjiakou.hbfzb.com/apple.php?id=220082486
http://news.hbfzb.com/apple.php?id=220082486
http://xingtai.hbfzb.com/apple.php?id=220082486
http://chengde.hbfzb.com/apple.php?id=220082486
http://shijiazhuang.hbfzb.com/apple.php?id=220082486
http://baoding.hbfzb.com/apple.php?id=220082486
http://hengshui.hbfzb.com/apple.php?id=220082486
https://www.hbfzb.com/html/qhd.php?id=220082486
https://www.hbfzb.com/html/ts.php?id=220082486
https://www.hbfzb.com/html/apple.php?id=220082486
https://www.hbfzb.com/html/news.php?id=220082486
https://www.hbfzb.com/html/zl.php?id=220082486
https://www.hbfzb.com/html/info.php?id=220082486
https://www.hbfzb.com/html/lf.php?id=220082486
https://www.hbfzb.com/html/shou.php?id=220082486
https://www.hbfzb.com/index.php?id=220082486
http://qinhuangdao.hbfzb.com/apple.php?id=220082486
http://xinji.hbfzb.com/apple.php?id=220082486
http://dingzhou.hbfzb.com/apple.php?id=220082486
http://shipin.hbfzb.com/apple.php?id=220082486
http://wshb.hbfzb.com/apple.php?id=220082486
http://photov.hbfzb.com/apple.php?id=220082486
http://szgc.glodon.com/news.php?id=220082486
http://sz.glodon.com/info.php?id=220082486
http://www.bxysg.com/news.asp?id=220082486
http://www.whbts.com/poser.asp?id=220082486
http://www.cquedp.com/news.php?id=220082486
http://cquedp.com/?id=220082486
http://m.cquedp.com/?id=220082486
http://www.hsfuhui.com/a/news.php?id=220082486
http://mdzz.itlun.cn/index.html?id=220082486
http://www.yqyy.net/news.php??id=220082486
http://www.hnalizs.com/news.php?id=220082486
http://www.gdnhec.com/poser.php?id=220082486
http://www.lygwb.com/poser.php?id=220082486
http://mzhihui.mulangcm.com/news/news.php?id=220082486
http://www.spark-lock.com/poser.asp?id=220082486
http://www.fsruijian.net/poser.php?id=220082486
http://www.xdmonitor.com/news.aspx?id=220082486
https://www.iresearch.com.cn/news.aspx?id=220082486
http://www.keyunit.cn/news.php?id=220082486
http://1798.rongbiz.net/new.php?id=220082486
http://news.hbfzb.com/info.php?id=424428822
https://www.hbfzb.com/news.php?id=424428822
http://zhangjiakou.hbfzb.com/apple.php?id=424428822
http://news.hbfzb.com/apple.php?id=424428822
http://xingtai.hbfzb.com/apple.php?id=424428822
http://chengde.hbfzb.com/apple.php?id=424428822
http://shijiazhuang.hbfzb.com/apple.php?id=424428822
http://baoding.hbfzb.com/apple.php?id=424428822
http://hengshui.hbfzb.com/apple.php?id=424428822
https://www.hbfzb.com/html/qhd.php?id=424428822
https://www.hbfzb.com/html/ts.php?id=424428822
https://www.hbfzb.com/html/apple.php?id=424428822
https://www.hbfzb.com/html/news.php?id=424428822
https://www.hbfzb.com/html/zl.php?id=424428822
https://www.hbfzb.com/html/info.php?id=424428822
https://www.hbfzb.com/html/lf.php?id=424428822
https://www.hbfzb.com/html/shou.php?id=424428822
https://www.hbfzb.com/index.php?id=424428822
http://qinhuangdao.hbfzb.com/apple.php?id=424428822
http://xinji.hbfzb.com/apple.php?id=424428822
http://dingzhou.hbfzb.com/apple.php?id=424428822
http://shipin.hbfzb.com/apple.php?id=424428822
http://wshb.hbfzb.com/apple.php?id=424428822
http://photov.hbfzb.com/apple.php?id=424428822
http://szgc.glodon.com/news.php?id=424428822
http://sz.glodon.com/info.php?id=424428822
http://www.bxysg.com/news.asp?id=424428822
http://www.whbts.com/poser.asp?id=424428822
http://www.cquedp.com/news.php?id=424428822
http://cquedp.com/?id=424428822
http://m.cquedp.com/?id=424428822
http://www.hsfuhui.com/a/news.php?id=424428822
http://mdzz.itlun.cn/index.html?id=424428822
http://www.yqyy.net/news.php??id=424428822
http://www.hnalizs.com/news.php?id=424428822
http://www.gdnhec.com/poser.php?id=424428822
http://www.lygwb.com/poser.php?id=424428822
http://mzhihui.mulangcm.com/news/news.php?id=424428822
http://www.spark-lock.com/poser.asp?id=424428822
http://www.fsruijian.net/poser.php?id=424428822
http://www.xdmonitor.com/news.aspx?id=424428822
https://www.iresearch.com.cn/news.aspx?id=424428822
http://www.keyunit.cn/news.php?id=424428822
http://1798.rongbiz.net/new.php?id=424428822
http://news.hbfzb.com/info.php?id=204064488
https://www.hbfzb.com/news.php?id=204064488
http://zhangjiakou.hbfzb.com/apple.php?id=204064488
http://news.hbfzb.com/apple.php?id=204064488
http://xingtai.hbfzb.com/apple.php?id=204064488
http://chengde.hbfzb.com/apple.php?id=204064488
http://shijiazhuang.hbfzb.com/apple.php?id=204064488
http://baoding.hbfzb.com/apple.php?id=204064488
http://hengshui.hbfzb.com/apple.php?id=204064488
https://www.hbfzb.com/html/qhd.php?id=204064488
https://www.hbfzb.com/html/ts.php?id=204064488
https://www.hbfzb.com/html/apple.php?id=204064488
https://www.hbfzb.com/html/news.php?id=204064488
https://www.hbfzb.com/html/zl.php?id=204064488
https://www.hbfzb.com/html/info.php?id=204064488
https://www.hbfzb.com/html/lf.php?id=204064488
https://www.hbfzb.com/html/shou.php?id=204064488
https://www.hbfzb.com/index.php?id=204064488
http://qinhuangdao.hbfzb.com/apple.php?id=204064488
http://xinji.hbfzb.com/apple.php?id=204064488
http://dingzhou.hbfzb.com/apple.php?id=204064488
http://shipin.hbfzb.com/apple.php?id=204064488
http://wshb.hbfzb.com/apple.php?id=204064488
http://photov.hbfzb.com/apple.php?id=204064488
http://szgc.glodon.com/news.php?id=204064488
http://sz.glodon.com/info.php?id=204064488
http://www.bxysg.com/news.asp?id=204064488
http://www.whbts.com/poser.asp?id=204064488
http://www.cquedp.com/news.php?id=204064488
http://cquedp.com/?id=204064488
http://m.cquedp.com/?id=204064488
http://www.hsfuhui.com/a/news.php?id=204064488
http://mdzz.itlun.cn/index.html?id=204064488
http://www.yqyy.net/news.php??id=204064488
http://www.hnalizs.com/news.php?id=204064488
http://www.gdnhec.com/poser.php?id=204064488
http://www.lygwb.com/poser.php?id=204064488
http://mzhihui.mulangcm.com/news/news.php?id=204064488
http://www.spark-lock.com/poser.asp?id=204064488
http://www.fsruijian.net/poser.php?id=204064488
http://www.xdmonitor.com/news.aspx?id=204064488
https://www.iresearch.com.cn/news.aspx?id=204064488
http://www.keyunit.cn/news.php?id=204064488
http://1798.rongbiz.net/new.php?id=204064488
http://news.hbfzb.com/info.php?id=022442806
https://www.hbfzb.com/news.php?id=022442806
http://zhangjiakou.hbfzb.com/apple.php?id=022442806
http://news.hbfzb.com/apple.php?id=022442806
http://xingtai.hbfzb.com/apple.php?id=022442806
http://chengde.hbfzb.com/apple.php?id=022442806
http://shijiazhuang.hbfzb.com/apple.php?id=022442806
http://baoding.hbfzb.com/apple.php?id=022442806
http://hengshui.hbfzb.com/apple.php?id=022442806
https://www.hbfzb.com/html/qhd.php?id=022442806
https://www.hbfzb.com/html/ts.php?id=022442806
https://www.hbfzb.com/html/apple.php?id=022442806
https://www.hbfzb.com/html/news.php?id=022442806
https://www.hbfzb.com/html/zl.php?id=022442806
https://www.hbfzb.com/html/info.php?id=022442806
https://www.hbfzb.com/html/lf.php?id=022442806
https://www.hbfzb.com/html/shou.php?id=022442806
https://www.hbfzb.com/index.php?id=022442806
http://qinhuangdao.hbfzb.com/apple.php?id=022442806
http://xinji.hbfzb.com/apple.php?id=022442806
http://dingzhou.hbfzb.com/apple.php?id=022442806
http://shipin.hbfzb.com/apple.php?id=022442806
http://wshb.hbfzb.com/apple.php?id=022442806
http://photov.hbfzb.com/apple.php?id=022442806
http://szgc.glodon.com/news.php?id=022442806
http://sz.glodon.com/info.php?id=022442806
http://www.bxysg.com/news.asp?id=022442806
http://www.whbts.com/poser.asp?id=022442806
http://www.cquedp.com/news.php?id=022442806
http://cquedp.com/?id=022442806
http://m.cquedp.com/?id=022442806
http://www.hsfuhui.com/a/news.php?id=022442806
http://mdzz.itlun.cn/index.html?id=022442806
http://www.yqyy.net/news.php??id=022442806
http://www.hnalizs.com/news.php?id=022442806
http://www.gdnhec.com/poser.php?id=022442806
http://www.lygwb.com/poser.php?id=022442806
http://mzhihui.mulangcm.com/news/news.php?id=022442806
http://www.spark-lock.com/poser.asp?id=022442806
http://www.fsruijian.net/poser.php?id=022442806
http://www.xdmonitor.com/news.aspx?id=022442806
https://www.iresearch.com.cn/news.aspx?id=022442806
http://www.keyunit.cn/news.php?id=022442806
http://1798.rongbiz.net/new.php?id=022442806
http://news.hbfzb.com/info.php?id=082288408
https://www.hbfzb.com/news.php?id=082288408
http://zhangjiakou.hbfzb.com/apple.php?id=082288408
http://news.hbfzb.com/apple.php?id=082288408
http://xingtai.hbfzb.com/apple.php?id=082288408
http://chengde.hbfzb.com/apple.php?id=082288408
http://shijiazhuang.hbfzb.com/apple.php?id=082288408
http://baoding.hbfzb.com/apple.php?id=082288408
http://hengshui.hbfzb.com/apple.php?id=082288408
https://www.hbfzb.com/html/qhd.php?id=082288408
https://www.hbfzb.com/html/ts.php?id=082288408
https://www.hbfzb.com/html/apple.php?id=082288408
https://www.hbfzb.com/html/news.php?id=082288408
https://www.hbfzb.com/html/zl.php?id=082288408
https://www.hbfzb.com/html/info.php?id=082288408
https://www.hbfzb.com/html/lf.php?id=082288408
https://www.hbfzb.com/html/shou.php?id=082288408
https://www.hbfzb.com/index.php?id=082288408
http://qinhuangdao.hbfzb.com/apple.php?id=082288408
http://xinji.hbfzb.com/apple.php?id=082288408
http://dingzhou.hbfzb.com/apple.php?id=082288408
http://shipin.hbfzb.com/apple.php?id=082288408
http://wshb.hbfzb.com/apple.php?id=082288408
http://photov.hbfzb.com/apple.php?id=082288408
http://szgc.glodon.com/news.php?id=082288408
http://sz.glodon.com/info.php?id=082288408
http://www.bxysg.com/news.asp?id=082288408
http://www.whbts.com/poser.asp?id=082288408
http://www.cquedp.com/news.php?id=082288408
http://cquedp.com/?id=082288408
http://m.cquedp.com/?id=082288408
http://www.hsfuhui.com/a/news.php?id=082288408
http://mdzz.itlun.cn/index.html?id=082288408
http://www.yqyy.net/news.php??id=082288408
http://www.hnalizs.com/news.php?id=082288408
http://www.gdnhec.com/poser.php?id=082288408
http://www.lygwb.com/poser.php?id=082288408
http://mzhihui.mulangcm.com/news/news.php?id=082288408
http://www.spark-lock.com/poser.asp?id=082288408
http://www.fsruijian.net/poser.php?id=082288408
http://www.xdmonitor.com/news.aspx?id=082288408
https://www.iresearch.com.cn/news.aspx?id=082288408
http://www.keyunit.cn/news.php?id=082288408
http://1798.rongbiz.net/new.php?id=082288408
http://news.hbfzb.com/info.php?id=842220004
https://www.hbfzb.com/news.php?id=842220004
http://zhangjiakou.hbfzb.com/apple.php?id=842220004
http://news.hbfzb.com/apple.php?id=842220004
http://xingtai.hbfzb.com/apple.php?id=842220004
http://chengde.hbfzb.com/apple.php?id=842220004
http://shijiazhuang.hbfzb.com/apple.php?id=842220004
http://baoding.hbfzb.com/apple.php?id=842220004
http://hengshui.hbfzb.com/apple.php?id=842220004
https://www.hbfzb.com/html/qhd.php?id=842220004
https://www.hbfzb.com/html/ts.php?id=842220004
https://www.hbfzb.com/html/apple.php?id=842220004
https://www.hbfzb.com/html/news.php?id=842220004
https://www.hbfzb.com/html/zl.php?id=842220004
https://www.hbfzb.com/html/info.php?id=842220004
https://www.hbfzb.com/html/lf.php?id=842220004
https://www.hbfzb.com/html/shou.php?id=842220004
https://www.hbfzb.com/index.php?id=842220004
http://qinhuangdao.hbfzb.com/apple.php?id=842220004
http://xinji.hbfzb.com/apple.php?id=842220004
http://dingzhou.hbfzb.com/apple.php?id=842220004
http://shipin.hbfzb.com/apple.php?id=842220004
http://wshb.hbfzb.com/apple.php?id=842220004
http://photov.hbfzb.com/apple.php?id=842220004
http://szgc.glodon.com/news.php?id=842220004
http://sz.glodon.com/info.php?id=842220004
http://www.bxysg.com/news.asp?id=842220004
http://www.whbts.com/poser.asp?id=842220004
http://www.cquedp.com/news.php?id=842220004
http://cquedp.com/?id=842220004
http://m.cquedp.com/?id=842220004
http://www.hsfuhui.com/a/news.php?id=842220004
http://mdzz.itlun.cn/index.html?id=842220004
http://www.yqyy.net/news.php??id=842220004
http://www.hnalizs.com/news.php?id=842220004
http://www.gdnhec.com/poser.php?id=842220004
http://www.lygwb.com/poser.php?id=842220004
http://mzhihui.mulangcm.com/news/news.php?id=842220004
http://www.spark-lock.com/poser.asp?id=842220004
http://www.fsruijian.net/poser.php?id=842220004
http://www.xdmonitor.com/news.aspx?id=842220004
https://www.iresearch.com.cn/news.aspx?id=842220004
http://www.keyunit.cn/news.php?id=842220004
http://1798.rongbiz.net/new.php?id=842220004
http://news.hbfzb.com/info.php?id=080666268
https://www.hbfzb.com/news.php?id=080666268
http://zhangjiakou.hbfzb.com/apple.php?id=080666268
http://news.hbfzb.com/apple.php?id=080666268
http://xingtai.hbfzb.com/apple.php?id=080666268
http://chengde.hbfzb.com/apple.php?id=080666268
http://shijiazhuang.hbfzb.com/apple.php?id=080666268
http://baoding.hbfzb.com/apple.php?id=080666268
http://hengshui.hbfzb.com/apple.php?id=080666268
https://www.hbfzb.com/html/qhd.php?id=080666268
https://www.hbfzb.com/html/ts.php?id=080666268
https://www.hbfzb.com/html/apple.php?id=080666268
https://www.hbfzb.com/html/news.php?id=080666268
https://www.hbfzb.com/html/zl.php?id=080666268
https://www.hbfzb.com/html/info.php?id=080666268
https://www.hbfzb.com/html/lf.php?id=080666268
https://www.hbfzb.com/html/shou.php?id=080666268
https://www.hbfzb.com/index.php?id=080666268
http://qinhuangdao.hbfzb.com/apple.php?id=080666268
http://xinji.hbfzb.com/apple.php?id=080666268
http://dingzhou.hbfzb.com/apple.php?id=080666268
http://shipin.hbfzb.com/apple.php?id=080666268
http://wshb.hbfzb.com/apple.php?id=080666268
http://photov.hbfzb.com/apple.php?id=080666268
http://szgc.glodon.com/news.php?id=080666268
http://sz.glodon.com/info.php?id=080666268
http://www.bxysg.com/news.asp?id=080666268
http://www.whbts.com/poser.asp?id=080666268
http://www.cquedp.com/news.php?id=080666268
http://cquedp.com/?id=080666268
http://m.cquedp.com/?id=080666268
http://www.hsfuhui.com/a/news.php?id=080666268
http://mdzz.itlun.cn/index.html?id=080666268
http://www.yqyy.net/news.php??id=080666268
http://www.hnalizs.com/news.php?id=080666268
http://www.gdnhec.com/poser.php?id=080666268
http://www.lygwb.com/poser.php?id=080666268
http://mzhihui.mulangcm.com/news/news.php?id=080666268
http://www.spark-lock.com/poser.asp?id=080666268
http://www.fsruijian.net/poser.php?id=080666268
http://www.xdmonitor.com/news.aspx?id=080666268
https://www.iresearch.com.cn/news.aspx?id=080666268
http://www.keyunit.cn/news.php?id=080666268
http://1798.rongbiz.net/new.php?id=080666268
http://news.hbfzb.com/info.php?id=240600682
https://www.hbfzb.com/news.php?id=240600682
http://zhangjiakou.hbfzb.com/apple.php?id=240600682
http://news.hbfzb.com/apple.php?id=240600682
http://xingtai.hbfzb.com/apple.php?id=240600682
http://chengde.hbfzb.com/apple.php?id=240600682
http://shijiazhuang.hbfzb.com/apple.php?id=240600682
http://baoding.hbfzb.com/apple.php?id=240600682
http://hengshui.hbfzb.com/apple.php?id=240600682
https://www.hbfzb.com/html/qhd.php?id=240600682
https://www.hbfzb.com/html/ts.php?id=240600682
https://www.hbfzb.com/html/apple.php?id=240600682
https://www.hbfzb.com/html/news.php?id=240600682
https://www.hbfzb.com/html/zl.php?id=240600682
https://www.hbfzb.com/html/info.php?id=240600682
https://www.hbfzb.com/html/lf.php?id=240600682
https://www.hbfzb.com/html/shou.php?id=240600682
https://www.hbfzb.com/index.php?id=240600682
http://qinhuangdao.hbfzb.com/apple.php?id=240600682
http://xinji.hbfzb.com/apple.php?id=240600682
http://dingzhou.hbfzb.com/apple.php?id=240600682
http://shipin.hbfzb.com/apple.php?id=240600682
http://wshb.hbfzb.com/apple.php?id=240600682
http://photov.hbfzb.com/apple.php?id=240600682
http://szgc.glodon.com/news.php?id=240600682
http://sz.glodon.com/info.php?id=240600682
http://www.bxysg.com/news.asp?id=240600682
http://www.whbts.com/poser.asp?id=240600682
http://www.cquedp.com/news.php?id=240600682
http://cquedp.com/?id=240600682
http://m.cquedp.com/?id=240600682
http://www.hsfuhui.com/a/news.php?id=240600682
http://mdzz.itlun.cn/index.html?id=240600682
http://www.yqyy.net/news.php??id=240600682
http://www.hnalizs.com/news.php?id=240600682
http://www.gdnhec.com/poser.php?id=240600682
http://www.lygwb.com/poser.php?id=240600682
http://mzhihui.mulangcm.com/news/news.php?id=240600682
http://www.spark-lock.com/poser.asp?id=240600682
http://www.fsruijian.net/poser.php?id=240600682
http://www.xdmonitor.com/news.aspx?id=240600682
https://www.iresearch.com.cn/news.aspx?id=240600682
http://www.keyunit.cn/news.php?id=240600682
http://1798.rongbiz.net/new.php?id=240600682
http://news.hbfzb.com/info.php?id=068488046
https://www.hbfzb.com/news.php?id=068488046
http://zhangjiakou.hbfzb.com/apple.php?id=068488046
http://news.hbfzb.com/apple.php?id=068488046
http://xingtai.hbfzb.com/apple.php?id=068488046
http://chengde.hbfzb.com/apple.php?id=068488046
http://shijiazhuang.hbfzb.com/apple.php?id=068488046
http://baoding.hbfzb.com/apple.php?id=068488046
http://hengshui.hbfzb.com/apple.php?id=068488046
https://www.hbfzb.com/html/qhd.php?id=068488046
https://www.hbfzb.com/html/ts.php?id=068488046
https://www.hbfzb.com/html/apple.php?id=068488046
https://www.hbfzb.com/html/news.php?id=068488046
https://www.hbfzb.com/html/zl.php?id=068488046
https://www.hbfzb.com/html/info.php?id=068488046
https://www.hbfzb.com/html/lf.php?id=068488046
https://www.hbfzb.com/html/shou.php?id=068488046
https://www.hbfzb.com/index.php?id=068488046
http://qinhuangdao.hbfzb.com/apple.php?id=068488046
http://xinji.hbfzb.com/apple.php?id=068488046
http://dingzhou.hbfzb.com/apple.php?id=068488046
http://shipin.hbfzb.com/apple.php?id=068488046
http://wshb.hbfzb.com/apple.php?id=068488046
http://photov.hbfzb.com/apple.php?id=068488046
http://szgc.glodon.com/news.php?id=068488046
http://sz.glodon.com/info.php?id=068488046
http://www.bxysg.com/news.asp?id=068488046
http://www.whbts.com/poser.asp?id=068488046
http://www.cquedp.com/news.php?id=068488046
http://cquedp.com/?id=068488046
http://m.cquedp.com/?id=068488046
http://www.hsfuhui.com/a/news.php?id=068488046
http://mdzz.itlun.cn/index.html?id=068488046
http://www.yqyy.net/news.php??id=068488046
http://www.hnalizs.com/news.php?id=068488046
http://www.gdnhec.com/poser.php?id=068488046
http://www.lygwb.com/poser.php?id=068488046
http://mzhihui.mulangcm.com/news/news.php?id=068488046
http://www.spark-lock.com/poser.asp?id=068488046
http://www.fsruijian.net/poser.php?id=068488046
http://www.xdmonitor.com/news.aspx?id=068488046
https://www.iresearch.com.cn/news.aspx?id=068488046
http://www.keyunit.cn/news.php?id=068488046
http://1798.rongbiz.net/new.php?id=068488046
http://news.hbfzb.com/info.php?id=402440626
https://www.hbfzb.com/news.php?id=402440626
http://zhangjiakou.hbfzb.com/apple.php?id=402440626
http://news.hbfzb.com/apple.php?id=402440626
http://xingtai.hbfzb.com/apple.php?id=402440626
http://chengde.hbfzb.com/apple.php?id=402440626
http://shijiazhuang.hbfzb.com/apple.php?id=402440626
http://baoding.hbfzb.com/apple.php?id=402440626
http://hengshui.hbfzb.com/apple.php?id=402440626
https://www.hbfzb.com/html/qhd.php?id=402440626
https://www.hbfzb.com/html/ts.php?id=402440626
https://www.hbfzb.com/html/apple.php?id=402440626
https://www.hbfzb.com/html/news.php?id=402440626
https://www.hbfzb.com/html/zl.php?id=402440626
https://www.hbfzb.com/html/info.php?id=402440626
https://www.hbfzb.com/html/lf.php?id=402440626
https://www.hbfzb.com/html/shou.php?id=402440626
https://www.hbfzb.com/index.php?id=402440626
http://qinhuangdao.hbfzb.com/apple.php?id=402440626
http://xinji.hbfzb.com/apple.php?id=402440626
http://dingzhou.hbfzb.com/apple.php?id=402440626
http://shipin.hbfzb.com/apple.php?id=402440626
http://wshb.hbfzb.com/apple.php?id=402440626
http://photov.hbfzb.com/apple.php?id=402440626
http://szgc.glodon.com/news.php?id=402440626
http://sz.glodon.com/info.php?id=402440626
http://www.bxysg.com/news.asp?id=402440626
http://www.whbts.com/poser.asp?id=402440626
http://www.cquedp.com/news.php?id=402440626
http://cquedp.com/?id=402440626
http://m.cquedp.com/?id=402440626
http://www.hsfuhui.com/a/news.php?id=402440626
http://mdzz.itlun.cn/index.html?id=402440626
http://www.yqyy.net/news.php??id=402440626
http://www.hnalizs.com/news.php?id=402440626
http://www.gdnhec.com/poser.php?id=402440626
http://www.lygwb.com/poser.php?id=402440626
http://mzhihui.mulangcm.com/news/news.php?id=402440626
http://www.spark-lock.com/poser.asp?id=402440626
http://www.fsruijian.net/poser.php?id=402440626
http://www.xdmonitor.com/news.aspx?id=402440626
https://www.iresearch.com.cn/news.aspx?id=402440626
http://www.keyunit.cn/news.php?id=402440626
http://1798.rongbiz.net/new.php?id=402440626
http://news.hbfzb.com/info.php?id=284428848
https://www.hbfzb.com/news.php?id=284428848
http://zhangjiakou.hbfzb.com/apple.php?id=284428848
http://news.hbfzb.com/apple.php?id=284428848
http://xingtai.hbfzb.com/apple.php?id=284428848
http://chengde.hbfzb.com/apple.php?id=284428848
http://shijiazhuang.hbfzb.com/apple.php?id=284428848
http://baoding.hbfzb.com/apple.php?id=284428848
http://hengshui.hbfzb.com/apple.php?id=284428848
https://www.hbfzb.com/html/qhd.php?id=284428848
https://www.hbfzb.com/html/ts.php?id=284428848
https://www.hbfzb.com/html/apple.php?id=284428848
https://www.hbfzb.com/html/news.php?id=284428848
https://www.hbfzb.com/html/zl.php?id=284428848
https://www.hbfzb.com/html/info.php?id=284428848
https://www.hbfzb.com/html/lf.php?id=284428848
https://www.hbfzb.com/html/shou.php?id=284428848
https://www.hbfzb.com/index.php?id=284428848
http://qinhuangdao.hbfzb.com/apple.php?id=284428848
http://xinji.hbfzb.com/apple.php?id=284428848
http://dingzhou.hbfzb.com/apple.php?id=284428848
http://shipin.hbfzb.com/apple.php?id=284428848
http://wshb.hbfzb.com/apple.php?id=284428848
http://photov.hbfzb.com/apple.php?id=284428848
http://szgc.glodon.com/news.php?id=284428848
http://sz.glodon.com/info.php?id=284428848
http://www.bxysg.com/news.asp?id=284428848
http://www.whbts.com/poser.asp?id=284428848
http://www.cquedp.com/news.php?id=284428848
http://cquedp.com/?id=284428848
http://m.cquedp.com/?id=284428848
http://www.hsfuhui.com/a/news.php?id=284428848
http://mdzz.itlun.cn/index.html?id=284428848
http://www.yqyy.net/news.php??id=284428848
http://www.hnalizs.com/news.php?id=284428848
http://www.gdnhec.com/poser.php?id=284428848
http://www.lygwb.com/poser.php?id=284428848
http://mzhihui.mulangcm.com/news/news.php?id=284428848
http://www.spark-lock.com/poser.asp?id=284428848
http://www.fsruijian.net/poser.php?id=284428848
http://www.xdmonitor.com/news.aspx?id=284428848
https://www.iresearch.com.cn/news.aspx?id=284428848
http://www.keyunit.cn/news.php?id=284428848
http://1798.rongbiz.net/new.php?id=284428848
http://news.hbfzb.com/info.php?id=828280448
https://www.hbfzb.com/news.php?id=828280448
http://zhangjiakou.hbfzb.com/apple.php?id=828280448
http://news.hbfzb.com/apple.php?id=828280448
http://xingtai.hbfzb.com/apple.php?id=828280448
http://chengde.hbfzb.com/apple.php?id=828280448
http://shijiazhuang.hbfzb.com/apple.php?id=828280448
http://baoding.hbfzb.com/apple.php?id=828280448
http://hengshui.hbfzb.com/apple.php?id=828280448
https://www.hbfzb.com/html/qhd.php?id=828280448
https://www.hbfzb.com/html/ts.php?id=828280448
https://www.hbfzb.com/html/apple.php?id=828280448
https://www.hbfzb.com/html/news.php?id=828280448
https://www.hbfzb.com/html/zl.php?id=828280448
https://www.hbfzb.com/html/info.php?id=828280448
https://www.hbfzb.com/html/lf.php?id=828280448
https://www.hbfzb.com/html/shou.php?id=828280448
https://www.hbfzb.com/index.php?id=828280448
http://qinhuangdao.hbfzb.com/apple.php?id=828280448
http://xinji.hbfzb.com/apple.php?id=828280448
http://dingzhou.hbfzb.com/apple.php?id=828280448
http://shipin.hbfzb.com/apple.php?id=828280448
http://wshb.hbfzb.com/apple.php?id=828280448
http://photov.hbfzb.com/apple.php?id=828280448
http://szgc.glodon.com/news.php?id=828280448
http://sz.glodon.com/info.php?id=828280448
http://www.bxysg.com/news.asp?id=828280448
http://www.whbts.com/poser.asp?id=828280448
http://www.cquedp.com/news.php?id=828280448
http://cquedp.com/?id=828280448
http://m.cquedp.com/?id=828280448
http://www.hsfuhui.com/a/news.php?id=828280448
http://mdzz.itlun.cn/index.html?id=828280448
http://www.yqyy.net/news.php??id=828280448
http://www.hnalizs.com/news.php?id=828280448
http://www.gdnhec.com/poser.php?id=828280448
http://www.lygwb.com/poser.php?id=828280448
http://mzhihui.mulangcm.com/news/news.php?id=828280448
http://www.spark-lock.com/poser.asp?id=828280448
http://www.fsruijian.net/poser.php?id=828280448
http://www.xdmonitor.com/news.aspx?id=828280448
https://www.iresearch.com.cn/news.aspx?id=828280448
http://www.keyunit.cn/news.php?id=828280448
http://1798.rongbiz.net/new.php?id=828280448
http://news.hbfzb.com/info.php?id=000880246
https://www.hbfzb.com/news.php?id=000880246
http://zhangjiakou.hbfzb.com/apple.php?id=000880246
http://news.hbfzb.com/apple.php?id=000880246
http://xingtai.hbfzb.com/apple.php?id=000880246
http://chengde.hbfzb.com/apple.php?id=000880246
http://shijiazhuang.hbfzb.com/apple.php?id=000880246
http://baoding.hbfzb.com/apple.php?id=000880246
http://hengshui.hbfzb.com/apple.php?id=000880246
https://www.hbfzb.com/html/qhd.php?id=000880246
https://www.hbfzb.com/html/ts.php?id=000880246
https://www.hbfzb.com/html/apple.php?id=000880246
https://www.hbfzb.com/html/news.php?id=000880246
https://www.hbfzb.com/html/zl.php?id=000880246
https://www.hbfzb.com/html/info.php?id=000880246
https://www.hbfzb.com/html/lf.php?id=000880246
https://www.hbfzb.com/html/shou.php?id=000880246
https://www.hbfzb.com/index.php?id=000880246
http://qinhuangdao.hbfzb.com/apple.php?id=000880246
http://xinji.hbfzb.com/apple.php?id=000880246
http://dingzhou.hbfzb.com/apple.php?id=000880246
http://shipin.hbfzb.com/apple.php?id=000880246
http://wshb.hbfzb.com/apple.php?id=000880246
http://photov.hbfzb.com/apple.php?id=000880246
http://szgc.glodon.com/news.php?id=000880246
http://sz.glodon.com/info.php?id=000880246
http://www.bxysg.com/news.asp?id=000880246
http://www.whbts.com/poser.asp?id=000880246
http://www.cquedp.com/news.php?id=000880246
http://cquedp.com/?id=000880246
http://m.cquedp.com/?id=000880246
http://www.hsfuhui.com/a/news.php?id=000880246
http://mdzz.itlun.cn/index.html?id=000880246
http://www.yqyy.net/news.php??id=000880246
http://www.hnalizs.com/news.php?id=000880246
http://www.gdnhec.com/poser.php?id=000880246
http://www.lygwb.com/poser.php?id=000880246
http://mzhihui.mulangcm.com/news/news.php?id=000880246
http://www.spark-lock.com/poser.asp?id=000880246
http://www.fsruijian.net/poser.php?id=000880246
http://www.xdmonitor.com/news.aspx?id=000880246
https://www.iresearch.com.cn/news.aspx?id=000880246
http://www.keyunit.cn/news.php?id=000880246
http://1798.rongbiz.net/new.php?id=000880246
http://news.hbfzb.com/info.php?id=684048688
https://www.hbfzb.com/news.php?id=684048688
http://zhangjiakou.hbfzb.com/apple.php?id=684048688
http://news.hbfzb.com/apple.php?id=684048688
http://xingtai.hbfzb.com/apple.php?id=684048688
http://chengde.hbfzb.com/apple.php?id=684048688
http://shijiazhuang.hbfzb.com/apple.php?id=684048688
http://baoding.hbfzb.com/apple.php?id=684048688
http://hengshui.hbfzb.com/apple.php?id=684048688
https://www.hbfzb.com/html/qhd.php?id=684048688
https://www.hbfzb.com/html/ts.php?id=684048688
https://www.hbfzb.com/html/apple.php?id=684048688
https://www.hbfzb.com/html/news.php?id=684048688
https://www.hbfzb.com/html/zl.php?id=684048688
https://www.hbfzb.com/html/info.php?id=684048688
https://www.hbfzb.com/html/lf.php?id=684048688
https://www.hbfzb.com/html/shou.php?id=684048688
https://www.hbfzb.com/index.php?id=684048688
http://qinhuangdao.hbfzb.com/apple.php?id=684048688
http://xinji.hbfzb.com/apple.php?id=684048688
http://dingzhou.hbfzb.com/apple.php?id=684048688
http://shipin.hbfzb.com/apple.php?id=684048688
http://wshb.hbfzb.com/apple.php?id=684048688
http://photov.hbfzb.com/apple.php?id=684048688
http://szgc.glodon.com/news.php?id=684048688
http://sz.glodon.com/info.php?id=684048688
http://www.bxysg.com/news.asp?id=684048688
http://www.whbts.com/poser.asp?id=684048688
http://www.cquedp.com/news.php?id=684048688
http://cquedp.com/?id=684048688
http://m.cquedp.com/?id=684048688
http://www.hsfuhui.com/a/news.php?id=684048688
http://mdzz.itlun.cn/index.html?id=684048688
http://www.yqyy.net/news.php??id=684048688
http://www.hnalizs.com/news.php?id=684048688
http://www.gdnhec.com/poser.php?id=684048688
http://www.lygwb.com/poser.php?id=684048688
http://mzhihui.mulangcm.com/news/news.php?id=684048688
http://www.spark-lock.com/poser.asp?id=684048688
http://www.fsruijian.net/poser.php?id=684048688
http://www.xdmonitor.com/news.aspx?id=684048688
https://www.iresearch.com.cn/news.aspx?id=684048688
http://www.keyunit.cn/news.php?id=684048688
http://1798.rongbiz.net/new.php?id=684048688
http://news.hbfzb.com/info.php?id=046446280
https://www.hbfzb.com/news.php?id=046446280
http://zhangjiakou.hbfzb.com/apple.php?id=046446280
http://news.hbfzb.com/apple.php?id=046446280
http://xingtai.hbfzb.com/apple.php?id=046446280
http://chengde.hbfzb.com/apple.php?id=046446280
http://shijiazhuang.hbfzb.com/apple.php?id=046446280
http://baoding.hbfzb.com/apple.php?id=046446280
http://hengshui.hbfzb.com/apple.php?id=046446280
https://www.hbfzb.com/html/qhd.php?id=046446280
https://www.hbfzb.com/html/ts.php?id=046446280
https://www.hbfzb.com/html/apple.php?id=046446280
https://www.hbfzb.com/html/news.php?id=046446280
https://www.hbfzb.com/html/zl.php?id=046446280
https://www.hbfzb.com/html/info.php?id=046446280
https://www.hbfzb.com/html/lf.php?id=046446280
https://www.hbfzb.com/html/shou.php?id=046446280
https://www.hbfzb.com/index.php?id=046446280
http://qinhuangdao.hbfzb.com/apple.php?id=046446280
http://xinji.hbfzb.com/apple.php?id=046446280
http://dingzhou.hbfzb.com/apple.php?id=046446280
http://shipin.hbfzb.com/apple.php?id=046446280
http://wshb.hbfzb.com/apple.php?id=046446280
http://photov.hbfzb.com/apple.php?id=046446280
http://szgc.glodon.com/news.php?id=046446280
http://sz.glodon.com/info.php?id=046446280
http://www.bxysg.com/news.asp?id=046446280
http://www.whbts.com/poser.asp?id=046446280
http://www.cquedp.com/news.php?id=046446280
http://cquedp.com/?id=046446280
http://m.cquedp.com/?id=046446280
http://www.hsfuhui.com/a/news.php?id=046446280
http://mdzz.itlun.cn/index.html?id=046446280
http://www.yqyy.net/news.php??id=046446280
http://www.hnalizs.com/news.php?id=046446280
http://www.gdnhec.com/poser.php?id=046446280
http://www.lygwb.com/poser.php?id=046446280
http://mzhihui.mulangcm.com/news/news.php?id=046446280
http://www.spark-lock.com/poser.asp?id=046446280
http://www.fsruijian.net/poser.php?id=046446280
http://www.xdmonitor.com/news.aspx?id=046446280
https://www.iresearch.com.cn/news.aspx?id=046446280
http://www.keyunit.cn/news.php?id=046446280
http://1798.rongbiz.net/new.php?id=046446280
http://news.hbfzb.com/info.php?id=866066204
https://www.hbfzb.com/news.php?id=866066204
http://zhangjiakou.hbfzb.com/apple.php?id=866066204
http://news.hbfzb.com/apple.php?id=866066204
http://xingtai.hbfzb.com/apple.php?id=866066204
http://chengde.hbfzb.com/apple.php?id=866066204
http://shijiazhuang.hbfzb.com/apple.php?id=866066204
http://baoding.hbfzb.com/apple.php?id=866066204
http://hengshui.hbfzb.com/apple.php?id=866066204
https://www.hbfzb.com/html/qhd.php?id=866066204
https://www.hbfzb.com/html/ts.php?id=866066204
https://www.hbfzb.com/html/apple.php?id=866066204
https://www.hbfzb.com/html/news.php?id=866066204
https://www.hbfzb.com/html/zl.php?id=866066204
https://www.hbfzb.com/html/info.php?id=866066204
https://www.hbfzb.com/html/lf.php?id=866066204
https://www.hbfzb.com/html/shou.php?id=866066204
https://www.hbfzb.com/index.php?id=866066204
http://qinhuangdao.hbfzb.com/apple.php?id=866066204
http://xinji.hbfzb.com/apple.php?id=866066204
http://dingzhou.hbfzb.com/apple.php?id=866066204
http://shipin.hbfzb.com/apple.php?id=866066204
http://wshb.hbfzb.com/apple.php?id=866066204
http://photov.hbfzb.com/apple.php?id=866066204
http://szgc.glodon.com/news.php?id=866066204
http://sz.glodon.com/info.php?id=866066204
http://www.bxysg.com/news.asp?id=866066204
http://www.whbts.com/poser.asp?id=866066204
http://www.cquedp.com/news.php?id=866066204
http://cquedp.com/?id=866066204
http://m.cquedp.com/?id=866066204
http://www.hsfuhui.com/a/news.php?id=866066204
http://mdzz.itlun.cn/index.html?id=866066204
http://www.yqyy.net/news.php??id=866066204
http://www.hnalizs.com/news.php?id=866066204
http://www.gdnhec.com/poser.php?id=866066204
http://www.lygwb.com/poser.php?id=866066204
http://mzhihui.mulangcm.com/news/news.php?id=866066204
http://www.spark-lock.com/poser.asp?id=866066204
http://www.fsruijian.net/poser.php?id=866066204
http://www.xdmonitor.com/news.aspx?id=866066204
https://www.iresearch.com.cn/news.aspx?id=866066204
http://www.keyunit.cn/news.php?id=866066204
http://1798.rongbiz.net/new.php?id=866066204