国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

ebatisElasticsearch ORM 框架

聯(lián)合創(chuàng)作 · 2023-09-30 01:34

ebatis 是一個(gè)簡單方便上手的 Elasticsearch ORM 框架。

ebatis 基于 Java High Level REST Client 開發(fā),采用和 MyBatis 類似思想,只需要定義接口,便可訪問Elasticsearch,隔離業(yè)務(wù)對Elasticserach底層接口的直接訪問。如此以來,數(shù)據(jù)訪問的時(shí)候,不需要自己手動(dòng)去構(gòu)建DSL語句,同時(shí),當(dāng)升級Elastisearch版本的時(shí)候,只需要升級ebatis到相應(yīng)的版本即可,業(yè)務(wù)可以完全不用關(guān)心底層Elasticsearch驅(qū)動(dòng)接口的變動(dòng),平滑升級,并且在搜索時(shí),以O(shè)RM的形式與思想構(gòu)建我們的條件,極大的提升開發(fā)效率,下面我們用簡單的例子先快速入門ebatis。

創(chuàng)建索引

PUT /recent_order_index

{
  "settings": {
    "number_of_replicas": 0,
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "cargoId": {
        "type": "long"
      },
      "driverUserName": {
        "type": "keyword"
      },
      "loadAddress": {
        "type": "text"
      },
      "searchable": {
        "type": "boolean"
      },
      "companyId": {
        "type": "long"
      }
    }
  }
}

增加測試數(shù)據(jù)
POST /recent_order_index/_bulk

{"index":{}}
{"cargoId": 1, "driverUserName":"張三", "loadAddress": "南京市玄武區(qū)", "searchable": true,"companyId": 666}
{"index":{}}
{"cargoId": 2, "driverUserName":"李四", "loadAddress": "南京市秦淮區(qū)", "searchable": false,"companyId": 667}
{"index":{}}
{"cargoId": 3, "driverUserName":"王五", "loadAddress": "南京市六合區(qū)", "searchable": true,"companyId": 668}
{"index":{}}
{"cargoId": 4, "driverUserName":"趙六", "loadAddress": "南京市建鄴區(qū)", "searchable": true,"companyId": 669}
{"index":{}}
{"cargoId": 5, "driverUserName":"錢七", "loadAddress": "南京市鼓樓區(qū)", "searchable": true,"companyId": 665}

POM依賴(目前也支持6.5.1.1.RELEASE)

<dependency>
     <groupId>io.manbang</groupId>
     <artifactId>ebatis-core</artifactId>
     <version>7.5.1.3.RELEASE</version>
</dependency>

創(chuàng)建集群連接

@AutoService(ClusterRouterProvider.class)
public class SampleClusterRouterProvider implements ClusterRouterProvider {
    public static final String SAMPLE_CLUSTER_NAME = "sampleCluster";
 
    @Override
    public ClusterRouter getClusterRouter(String name) {
        if (SAMPLE_CLUSTER_NAME.equalsIgnoreCase(name)) {
            Cluster cluster = Cluster.simple("127.0.0.1", 9200, Credentials.basic("admin", "123456"));
            ClusterRouter clusterRouter = ClusterRouter.single(cluster);
            return clusterRouter;
        } else {
            return null;
        }
    }
}

定義POJO對象

@Data
public class RecentOrder {
    private Long cargoId
    private String driverUserName;
    private String loadAddress;
    private Boolean searchable;
    private Integer companyId;
}
 
@Data
public class RecentOrderCondition {
    private Boolean searchable;
     
    private String driverUserName;
}

定義Mapper接口

@Mapper(indices = "recent_order_index")
public interface RecentOrderRepository {
    @Search
    List<RecentOrder> search(RecentOrderCondition condition);
}

測試接口

@Slf4j
public class OrderRepositoryTest {
 
    @Test
    public void search() {
        // 組裝查詢條件
        RecentOrderCondition condition = new RecentOrderCondition();
        condition.setSearchable(Boolean.TRUE);
        condition.setDriverUserName("張三");
 
        // 映射接口
        RecentOrderRepository repository = MapperProxyFactory.getMapperProxy(RecentOrderRepository.class, SampleClusterRouterProvider.SAMPLE_CLUSTER_NAME);
 
        // 搜索貨源
        List<RecentOrder> orders = repository.search(condition);
 
        // 斷言
        Assert.assertEquals(3, orders.size());
 
        // 打印輸出
        orders.forEach(order -> log.info("{}", order));
    }
}

ebatis版本使用xx.xx.xx.xx.RELEASE表示,前三位代表Elasticsearch適配集群的驅(qū)動(dòng)版本,后一位代表ebatis在此版本上的迭代。例如7.5.1.3.RELEASE表示ebatis在Elasticsearch 7.5.1版本上迭代的第三次版本。

其他Client的對比

目前,主流操作Elasticsearch 的四種驅(qū)動(dòng)方式

序號 驅(qū)動(dòng)方式 官方支持 備注
1 Transport Client 后續(xù)不再支持 不做比較
2 Java Low Level REST Client 支持 太low,不做比較
3 Java High Level REST Client 支持  
4 Spring Data Elasticsearch 第三方  

下面,我們用滿幫車貨匹配一個(gè)默認(rèn)排序場景來比較一下,看看不同的驅(qū)動(dòng)方式,如何進(jìn)行復(fù)雜搜索操作。搜索DSL語句如下:

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "bool": {
                  "should": [
                    {
                      "terms": {
                        "startDistrictId": [
                          684214,
                          981362
                        ],
                        "boost": 1.0
                      }
                    },
                    {
                      "terms": {
                        "startCityId": [
                          320705,
                          931125
                        ],
                        "boost": 1.0
                      }
                    }
                  ],
                  "adjust_pure_negative": true,
                  "boost": 1.0
                }
              },
              {
                "bool": {
                  "should": [
                    {
                      "terms": {
                        "endDistrictId": [
                          95312,
                          931125
                        ],
                        "boost": 1.0
                      }
                    },
                    {
                      "terms": {
                        "endCityId": [
                          589421,
                          953652
                        ],
                        "boost": 1.0
                      }
                    }
                  ],
                  "adjust_pure_negative": true,
                  "boost": 1.0
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
          }
        },
        {
          "range": {
            "updateTime": {
              "from": 1608285822239,
              "to": null,
              "include_lower": true,
              "include_upper": true,
              "boost": 1.0
            }
          }
        },
        {
          "terms": {
            "cargoLabels": [
              "水果",
              "生鮮"
            ],
            "boost": 1.0
          }
        }
      ],
      "must_not": [
        {
          "terms": {
            "cargoCategory": [
              "A",
              "B"
            ],
            "boost": 1.0
          }
        },
        {
          "term": {
            "featureSort": {
              "value": "好貨",
              "boost": 1.0
            }
          }
        }
      ],
      "should": [
        {
          "bool": {
            "must_not": [
              {
                "terms": {
                  "cargoChannel": [
                    "長途貨源",
                    "一口價(jià)貨源"
                  ],
                  "boost": 1.0
                }
              }
            ],
            "should": [
              {
                "bool": {
                  "must": [
                    {
                      "term": {
                        "searchableSources": {
                          "value": "ALL",
                          "boost": 1.0
                        }
                      }
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "terms": {
                              "cargoChannel": [
                                "No.1",
                                "No.2",
                                "No.3"
                              ],
                              "boost": 1.0
                            }
                          },
                          {
                            "term": {
                              "securityTran": {
                                "value": "平臺(tái)保證",
                                "boost": 1.0
                              }
                            }
                          }
                        ],
                        "adjust_pure_negative": true,
                        "boost": 1.0
                      }
                    }
                  ],
                  "adjust_pure_negative": true,
                  "boost": 1.0
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1.0
    }
  },
  "_source": {
    "includes": [
      "cargoId",
      "startDistrictId",
      "startCityId",
      "endDistrictId",
      "endCityId",
      "updateTime",
      "cargoLabels",
      "cargoCategory",
      "featureSort",
      "cargoChannel",
      "searchableSources",
      "securityTran"
    ],
    "excludes": []
  },
  "sort": [
    {
      "duplicate": {
        "order": "asc"
      }
    },
    {
      "_script": {
        "script": {
          "source": "searchCargo-script",
          "lang": "painless",
          "params": {
            "searchColdCargoTop": 0
          }
        },
        "type": "string",
        "order": "asc"
      }
    }
  ]
}

直接使用原生Java High Level REST Client接口方式:

final BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
final TermsQueryBuilder startCityId = QueryBuilders.termsQuery("startCityId", Lists.newArrayList(320705L, 931125L));
final TermsQueryBuilder startDistrictId = QueryBuilders.termsQuery("startDistrictId", Lists.newArrayList(684214L, 981362L));
final TermsQueryBuilder endCityId = QueryBuilders.termsQuery("endCityId", Lists.newArrayList(589421L, 953652L));
final TermsQueryBuilder endDistrictId = QueryBuilders.termsQuery("endDistrictId", Lists.newArrayList(95312L, 931125L));
final BoolQueryBuilder startBuilder = QueryBuilders.boolQuery();
startBuilder.should(startCityId).should(startDistrictId);
final BoolQueryBuilder endBuilder = QueryBuilders.boolQuery();
endBuilder.should(endCityId).should(endDistrictId);
final BoolQueryBuilder cityBuilder = QueryBuilders.boolQuery();
cityBuilder.must(startBuilder);
cityBuilder.must(endBuilder);
queryBuilder.must(cityBuilder);
final RangeQueryBuilder rangeBuilder = QueryBuilders.rangeQuery("updateTime");
queryBuilder.must(rangeBuilder.from(1608285822239L));
final TermsQueryBuilder cargoLabelsBuilder = QueryBuilders.termsQuery("cargoLabels", Lists.newArrayList("水果", "生鮮"));
queryBuilder.must(cargoLabelsBuilder);
final TermsQueryBuilder cargoCategoryBuilder = QueryBuilders.termsQuery("cargoCategory", Lists.newArrayList("A", "B"));
final TermQueryBuilder featureSortBuilder = QueryBuilders.termQuery("featureSort", "好貨");
queryBuilder.mustNot(cargoCategoryBuilder);
queryBuilder.mustNot(featureSortBuilder);
final BoolQueryBuilder cargoChannelBuilder = QueryBuilders.boolQuery();
queryBuilder.should(cargoChannelBuilder);
final TermsQueryBuilder channelBuilder = QueryBuilders.termsQuery("cargoChannel", Lists.newArrayList("長途貨源", "一口價(jià)貨源"));
cargoChannelBuilder.mustNot(channelBuilder);
final BoolQueryBuilder searchableSourcesBuilder = QueryBuilders.boolQuery();
cargoChannelBuilder.should(searchableSourcesBuilder);
final TermQueryBuilder sourceBuilder = QueryBuilders.termQuery("searchableSources", "ALL");
searchableSourcesBuilder.must(sourceBuilder);
final BoolQueryBuilder securityTranBuilder = QueryBuilders.boolQuery();
searchableSourcesBuilder.must(securityTranBuilder);
securityTranBuilder.must(QueryBuilders.termsQuery("cargoChannel", "No.1", "No.2", "No.3"));
securityTranBuilder.must(QueryBuilders.termQuery("securityTran", "平臺(tái)保證"));
SearchSourceBuilder searchSource = new SearchSourceBuilder();
searchSource.query(queryBuilder);
searchSource.fetchSource(new String[]{"cargoId", "startDistrictId", "startCityId", "endDistrictId", "endCityId", "updateTime", "cargoLabels",
                "cargoCategory", "featureSort", "cargoChannel", "searchableSources", "securityTran"},
        new String[0]);
searchSource.sort("duplicate", SortOrder.ASC);
ScriptSortBuilder sortBuilder = SortBuilders.scriptSort(new org.elasticsearch.script.Script(ScriptType.INLINE,
        "painless", "searchCargo-script", Collections.emptyMap(), Collections.singletonMap("searchColdCargoTop", 0)),
        ScriptSortBuilder.ScriptSortType.STRING).order(SortOrder.ASC);
searchSource.sort(sortBuilder);

使用Spring Data Elasticsearch方式:

@Repository
interface CargoRepository extends ElasticsearchRepository<Cargo, String> {
    @Query("{\"match\": {\"name\": {\"query\": \"?0\.............."}}}")
    List<Cargo> findByCargoCondition(List<String> startCity, List<String> StartDistrictId /*,...*/);
}
final List<Cargo> cargos=cargoRepository.findByCargoCondition(Lists.newArrayList(320705L, 931125L),Lists.newArrayList(684214L, 981362L).........);

因?yàn)锧Query需要將整個(gè)DSL語句填入,篇幅有限而且長度過長,所以省略展示 。
ebatis

// 1. 創(chuàng)建搜貨條件POJO對象
@Data
public class CargoCondition implements SortProvider {
    @Must
    private City city;
    @Must
    private Range<Long> updateTime;
    @Must(queryType = QueryType.TERMS)
    private List<String> cargoLabels;
    @Must
    private Boolean searchable;
    @Must
    private CargoLines cargoLines;
    @Should
    private CargoChannel cargoChannel;
    @MustNot(queryType = QueryType.TERMS)
    private List<String> cargoCategory;
    @MustNot
    private String featureSort;
    private static final Sort[] SORTS = new Sort[]{Sort.fieldAsc("duplicate"),
            Sort.scriptStringAsc(Script.inline("searchCargo-script", Collections.singletonMap("searchColdCargoTop", 0)))};
    @Override
    public Sort[] getSorts() {
        return SORTS;
    }
    @Data
    public static class City {
        @Must
        private StartCity startCity;
        @Must
        private EndCity endCity;
    }
    @Data
    public static class StartCity {
        @Should(queryType = QueryType.TERMS)
        private List<Long> startDistrictId;
        @Should(queryType = QueryType.TERMS)
        private List<Long> startCityId;
    }
    @Data
    public static class EndCity {
        @Should(queryType = QueryType.TERMS)
        private List<Long> endDistrictId;
        @Should(queryType = QueryType.TERMS)
        private List<Long> endCityId;
    }
    @Data
    public static class CargoChannel {
        @MustNot(queryType = QueryType.TERMS)
        private List<String> cargoChannel;
        @Should
        private Security security;
    }
    @Data
    public static class Security {
        @Must
        private String searchableSources;
        @Must
        private SecurityChannel securityChannel;
    }
    @Data
    public static class SecurityChannel {
        @Must(queryType = QueryType.TERMS)
        private List<String> cargoChannel;
        @Must
        private String securityTran;
    }
    @Data
    public static class CargoLines {
        @Must(queryType = QueryType.TERMS)
        private List<String> cargoLines;
        @Must
        private CargoLabel cargoLabel;
    }
    @Data
    public static class CargoLabel {
        @Must(queryType = QueryType.TERMS)
        private List<String> cargoLines;
        @Must(queryType = QueryType.TERMS)
        private List<String> cargoLabels;
    }
}
// 2. 創(chuàng)建搜索接口
@Mapper(indices = "cargo")
public interface CargoMapper {
    @Search
    List<Cargo> searchCargo(CargoCondition condition);
}
 // 3. 拼裝搜獲條件
final CargoCondition cargo = new CargoCondition();
CargoCondition cargo = new CargoCondition();
final CargoCondition.City city = new CargoCondition.City();
cargo.setCity(city);
final CargoCondition.StartCity startCity = new CargoCondition.StartCity();
city.setStartCity(startCity);
startCity.setStartCityId(Lists.newArrayList(320705L,931125L));
startCity.setStartDistrictId(Lists.newArrayList(684214L,981362L));
final CargoCondition.EndCity endCity = new CargoCondition.EndCity();
city.setEndCity(endCity);
endCity.setEndCityId(Lists.newArrayList(589421L,953652L));
endCity.setEndDistrictId(Lists.newArrayList(95312L,931125L));
cargo.setUpdateTime(Range.ge(System.currentTimeMillis()));
cargo.setCargoLabels(Lists.newArrayList("水果","生鮮"));
final CargoCondition.CargoChannel cargoChannel = new CargoCondition.CargoChannel();
cargo.setCargoChannel(cargoChannel);
cargoChannel.setCargoChannel(Lists.newArrayList("長途貨源","一口價(jià)貨源"));
final CargoCondition.Security security = new CargoCondition.Security();
cargoChannel.setSecurity(security);
security.setSearchableSources("ALL");
final CargoCondition.SecurityChannel securityChannel = new CargoCondition.SecurityChannel();
security.setSecurityChannel(securityChannel);
securityChannel.setCargoChannel(Lists.newArrayList("No.1","No.2","No.3"));
securityChannel.setSecurityTran("平臺(tái)保證");
cargo.setCargoCategory(Lists.newArrayList("A","B"));
cargo.setFeatureSort("好貨");
// 4. 執(zhí)行搜索
final List<Cargo> cargos = cargoMapper.searchCargo(condition);

從以上對比可以看出ebatis與Spring Data Elasticsearch相對原生Client構(gòu)建搜索條件要方便很多,實(shí)際應(yīng)用中,在復(fù)雜搜索場景條件多變的情況下,如果使用Spring Data Elasticsearch構(gòu)建條件,在條件復(fù)雜場景下,需要自己構(gòu)建原始DSL語句,例如:@Query("{"match": {"name": {"query": "?0.............."}}}"),在復(fù)雜場景下條件的構(gòu)建會(huì)非常復(fù)雜且難以直觀的定位。
使用ebatis最大的優(yōu)點(diǎn)在于可以直觀的以O(shè)RM形式構(gòu)建我們的搜索條件,以面向?qū)ο蟮乃枷朊鎸ξ覀儚?fù)雜的搜索場景,無論是條件的構(gòu)建還是問題的定位,都相比Java High Level REST Clien和Spring Data Elasticsearch方便的多。

還有,搜索條件總是在變的,要調(diào)整的話,如果是原生接口和Spring,需要你不斷的調(diào)整語句,甚至修改接口,但是ebatis,只需要你正常的修改一個(gè)POJO對象的屬性,非常的高效。

ebatis進(jìn)階使用

執(zhí)行類圖

圖片

RequestExecutor:請求執(zhí)行器,負(fù)責(zé)整個(gè)Elasticsearch請求的執(zhí)行流程。

RequestFactory:求工廠接口,根據(jù)請求的方法定義和實(shí)參,創(chuàng)建ES請求。

Cluster:集群,負(fù)責(zé)Elasticsearch集群請求。

ResponseExtractor:響應(yīng)提取器,提取Elasticsearch響應(yīng),構(gòu)造返回體。

Interceptor:攔截器,負(fù)責(zé)ebatis調(diào)用過程的攔截。

Cluster

Cluster代表一個(gè)ES集群實(shí)例,ebatis內(nèi)建了兩個(gè)實(shí)現(xiàn):SimpleCluster,F(xiàn)ixWeightedCluster和SimpleFederalCluster。 SimpleCluster和FixedWeightedCluster的區(qū)別在于,后者是帶固定權(quán)值的值,在對集群做負(fù)載均衡的時(shí)候,可以通過權(quán)值來控制負(fù)載的比例。SimpleFederalCluster的特殊地方在于,在一批集群上做批量操作,同步一批集群,一般用于一批集群數(shù)據(jù)的增刪改,不適用于查。

ClusterRouter

ClusterRouter用于路由出一個(gè)可以訪問Cluster,內(nèi)部是通過負(fù)載均衡器ClusterLoadBalancer,來同一組集群中,選中一個(gè)集群的。根據(jù)不同的負(fù)載均衡器,ebatis內(nèi)建了多個(gè)對應(yīng)的路由器,默認(rèn)提供的有隨機(jī)負(fù)載均衡器,輪詢負(fù)載均衡器,單集群均衡器,權(quán)重負(fù)載均衡器,當(dāng)然也可以通過ebatis提供的接口,定制自己的策略均衡器。

接口定義支持的請求類型及響應(yīng)類型

Entity指具體的實(shí)體類型

請求類型 注解 接口聲明返回值
GET //_search @Search Page
    List
    Entity[]
    SearchResponse
    Entity
    Long
    long
    Boolean
    boolean
GET //_msearch @MultiSearch List>
    Page[]
    List>
    Entity[][]
    List
    List[]
    MultiSearchResponse
    List
    Long[]
    long[]
    List
    Boolean[]
    boolean[]
PUT //_doc/<_id> @Index IndexResponse
    RestStatus
    boolean
    Boolean
    String
    void
GET /_doc/<_id> @Get GetResponse
    Entity
    Optional
DELETE //_doc/<_id> @Delete RestStatus
    DeleteResponse
    boolean
    Boolean
    void
POST //_update/<_id> @Update UpdateResponse
    GetResult
    RestStatus
    boolean
    Boolean
    Result
    void
POST //_bulk @Bulk List
    BulkResponse
    BulkItemResponse[]
GET //_mget @MultiGet MultiGetResponse
    MultiGetItemResponse[]
    List
    List
    Entity[]
    List>
    Optional[]
POST //_update_by_query @UpdateByQuery BulkByScrollResponse
    BulkByScrollTask.Status
POST //_delete_by_query @DeleteByQuery BulkByScrollResponse
    BulkByScrollTask.Status
GET /_search/scroll @SearchScroll SearchResponse
    ScrollResponse
DELETE /_search/scroll @ClearScroll ClearScrollResponse
    boolean
    Boolean
GET //_search @Agg(暫時(shí)只支持桶聚合 terms查詢) SearchResponse
    Aggregations
    List
    Map

以上是目前支持的搜索類型,其他的請求類型還需后續(xù)的迭代支持。

異步支持

Mapper搜索方法支持異步操作,只需要將Mapper接口返回結(jié)果定義為CompletableFuture>,這樣異步的調(diào)用不會(huì)阻塞并且立刻返回,業(yè)務(wù)方可以繼續(xù)處理自己的業(yè)務(wù)邏輯,在需要獲取結(jié)果時(shí),提取結(jié)果。

攔截器

ebatis中攔截器的加載通過SPI方式實(shí)現(xiàn),只需要提供的目標(biāo)類實(shí)現(xiàn)io.manbang.ebatis.core.interceptor.Interceptor接口,并且在/META-INF/services目錄下提供io.manbang.ebatis.core.interceptor.Interceptor文件,內(nèi)容為提供的目標(biāo)類的全限定名。也可以在目標(biāo)類上加上注解@AutoService(Interceptor.class),由auto-service替我們生成。攔截器的不同接口在請求的整個(gè)生命周期的不同階段調(diào)用,可以自定符合自己業(yè)務(wù)邏輯的攔截器。

@Slf4j
@AutoService(Interceptor.class)
public class TestInterceptor implements Interceptor {
    @Override
    public int getOrder() {
        return 0;
    }
 
    @Override
    public void handleException(Throwable throwable) {
        log.error("Exception", throwable);
    }
 
    @Override
    public void preRequest(Object[] args) {
       ...
       //通過ContextHolder可以跨上下文獲取綁定的值
       String userId = ContextHolder.getString("userId");
    }
 
    @Override
    public <T extends ActionRequest> void postRequest(RequestInfo<T> requestInfo) {
        ...
    }
 
    @Override
    public <T extends ActionRequest> void preResponse(PreResponseInfo<T> preResponseInfo) {
        ...
    }
 
    @Override
    public <T extends ActionRequest, R extends ActionResponse> void postResponse(PostResponseInfo<T, R> postResponseInfo) {
        ...
    }
}

與spring的集成,首先增加POM依賴

<dependency>
     <groupId>io.manbang</groupId>
     <artifactId>ebatis-spring</artifactId>
     <version>7.5.1.3.RELEASE</version>
</dependency>

增加Config

@Configuration
@EnableEasyMapper(basePackages = "io.manbang.ebatis.sample.mapper")
public class EbatisConfig {
    @Bean(destroyMethod = "close")
    public ClusterRouter clusterRouter() {
        Cluster cluster = Cluster.simple("127.0.0.1", 9200, Credentials.basic("admin", "123456"));
        ClusterRouter clusterRouter = ClusterRouter.single(cluster);
        return clusterRouter;
    }
}

 

瀏覽 17
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

編輯 分享
舉報(bào)
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

編輯 分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 操逼视频高清无码| 亚洲国产成人精品综合99| 国产精品无码不卡| 日韩精品免费无码视频| 一级黄色视频在线观看| 成人视频在线观看18| 久操B网| 91在线观看免费视频| 麻豆精品传媒2021md| 欧美一级特黄A片免费| 国产成人三级| 西西午夜视频| 高潮流水视频| 亚洲性爱视频在线观看| 亚洲AV无码国产精品二区| 色欲成人网| 在线观看免费A片| 97无码视频| 黄色美女毛片| 日本一区二区三区在线播放| 91视频人妻| 精品乱子伦一区二区三区下载| 老湿机福利院| 日韩高清一区二区| 国产成人女人在线观看| 2025中文字幕在线| 三级成人网| 国产91一区在线精品| 在线男人天堂| 超碰人人艹| 黄色带亚州| 黄色网页在线| 91香蕉国产| 人人操夜夜| 亚洲91网站| 精品自拍视频| 欧美在线观看一区二区| 四川少妇bbbbbbbbb| 国产69精品久久久久久| 免费视频a| 日逼无码视频| 无码偷拍| 翔田千里无码精品| 日韩图色| 久久九| 一级特黄大片录像i| 美女免费网站| 国产婷婷久久Av免费高清| 日韩不卡一区二区三区| 无码黄色片| 日本三级久久| 黄色99| 99性爱视频| 国产一区二区不卡亚洲涩情| 视色网| 久久国产精品影院| 欧一美一色一伦一A片| 人人妻人人爱| 久久久成人影片| 日本午夜视频| 懂色AV无码中字幕一区| 爱爱黄色视频| 五月丁香无码| 激情爱爱网| 在线你懂的| 日韩人妻丝袜中文字幕| 亚洲av成人网| 91午夜视频| 亚洲国产精| A片视频免费看| 中文字幕婷婷五月天| 尻屄网站| 可以免费看av的网站| 亚洲黄色片| 大香蕉啪啪视频| 日韩做爱| 成人无码动漫A片| av无码av天天av天天爽| 国产成人视频在线观看| 神马午夜视频| 国产精品伦理| 在线免费观看黄色小视频| 精品国产精品三级精品AV网址| 五月丁香中文字幕| 中文字幕北条麻妃在线| 一本到在线观看午夜剧场| 2025精品视频| 操B视频在线播放| 日韩激情在线| 成人久久av| 97人妻碰碰中文无码久热丝袜| 日本免费在线观看| 一区免费在线观看| 国产黄色一级片| 国产毛片在线视频| 亚洲免费观看高清完整| 一区二区AV| 国产第一精品| 成人香蕉| 欧美成人无码片免费看A片秀色 | 成人片网址| 日韩毛片在线看| 久久国产热在8| 特黄aaaaaaaa真人毛片| 最近最经典中文MV字幕| 天天干天天操综合| 91欧美视频| 亚洲欧洲精品视频| 五月天毛片| 狠狠穞A片一區二區三區| 在线国产激情| 四虎国产精品成人久久| 日韩在线高清| 操日本女人逼| 婷婷激情五月综合| 久久国内视频| 国产精品一区二区不卡| 天堂AV无码AV| 成人片成人网久久蜜桃臀| 蜜桃av秘无码一区二区三欧| 黄色视频免费网站| 污视频在线免费| AA无码| 99久久99久久久精品棕色圆| 久久久老熟女一区二区三区91 | 日本无码电影| 欧美高清无码在线观看| 欧美影院亚洲| 被男友内S~高H文| 免费在线观看黄色| 群交无码| 国产一级片内射| 丁香五月一区二区| 欧美精品久久久久久久多人混战| 亚洲无码在线免费| 久久久久久五月天| 国产91麻豆视频| 亚洲日韩在线播放| 韩日一区二区三区| 久操综合视频在线| 偷偷操av| 成人在线免费观看视频| 亚洲视频区| 三级片久久久| 亚洲午夜福利| 黄色视频网站日本| 日韩欧美大香蕉| 亚洲AV秘无码不卡在线观看| 91人妻人人澡人人爽人人爽| 日韩在线一级| 亚洲精品无码久久| 日韩天堂| 国产成人无码毛片| 久久久久久久久久久久成人| 欧美日韩国产成人电影| 成人高清无码在线观看| 日韩人妻精品无码| 麻豆偷拍| 中文字幕在线观看a| 精品成人Av一区二区三区| 91无码人妻精品一区二区三区四| 大炕上公让我高潮了六次| 69婷婷国产精品| 国产偷拍网站| 婷婷大香蕉| 亚洲精品无码永久| 亚洲国产精品精JIZZ老师| 天天无码视频| 亚洲午夜久久久久久久久红桃| 人人妻人人爽人人精品| 黄片网站免费观看| 中文字幕五月久久婷婷| 亚洲精品高清视频| 成人免费视频网| 99久| 操逼操| 在线看片AV| www.黄色av| 精品一区二区三区四区五区六区| 欧美成人午夜福利| 在线观看免费无码视频| 色妞视频精品一区| 天堂网影音先锋| 中文字幕免费观看视频| 自拍视频在线观看| 中文字幕亚洲日韩| 97在线鲁碰免费视频| 日韩性爱网址| 亚洲精品秘一区二区三区在线观看| 安徽妇搡BBBB搡BBBB| 麻豆91视频| 久久久中文字幕| 91豆花在线| 欧一美一婬一伦一区二区三区自慰, | 怡春院在线视频| 免费AV在线播放| 久久久久国产视频| 日本成人视频在线免费播放| 九九惹伊人| 亚洲一区二区成人| 草久视频| 人人人操| 午夜福利视频无码| 超碰成人在线观看| 国产日逼视频| www.91超碰在线| 色婷婷久久综合| 91人妻无码精品蜜桃| 91无码人妻传媒tv| 99精品偷自拍| 人人爽爽| 2018天天干天天操| 在线观看国产| 国产欧美一区二区三区特黄手机版 | 91免费成人电影| 日韩欧美在线视频观看| 欧美操逼免费视频| 蜜桃人妻无码| 黄色一级在线观看| 天天操综合网| 18成人在线观看| www.a片| 免费高清无码在线观看| 国产欧美日韩综合| 国产一区二区在线播放| 白嫩外女BBwBBwBBw| 九九热精品在线视频| 一级片黑人| 亚洲色图1| 亚洲精品成人av无码| 操逼在线观看| 黑人无码AV| 欧美成人免费A级在线观看| 黄片网站视频| 国产主播av| 无码免费在线观看视频| 亚洲成人福利| 综合导航无码| 婷婷六月色| 懂色av粉嫩av蜜臀av| 一级片在线播放| 亚洲成av| 一道本高清无码视频| 欧美伊人网| 五月天深爱激情网| 一卡二卡三卡| 青青网站| 亚洲人做受| 亚洲成人在线网| 欧美视频二区| 毛片2| 欧美成人中文字幕在线| 国模精品无码一区二区免费蜜桃| 成人网站视频在线免费观看| 五月天激情四射| 国产一级免费| 蝌蚪窝在线免费观看视频| 日本韩国欧美18| 日皮视频免费在线观看| 黄色电影免费网站| 欧美日韩一区在线观看| 欧美性爱福利| www.怡春院| 老师搡BBBB搡BBB| av三级片在线观看| 精品人妻中文字幕视频| 无码A级片| 亚洲欧洲视频| 精品视频中文字幕| 亚洲精品中文字幕乱码三区91| 亚洲WWW| 国产99久久久精品| 杨贵妃一级婬片90分钟| 亚洲AV电影在线观看| 秋霞午夜久久| 免费视频二区| 精品AV无码一区二区三区| 精品无码一区二区三区蜜桃李宗瑞 | 天天干,天天日| a4yy午夜福利| 男人午夜AV| 无码视频久久| www.插插插| 西西444WWW无码大胆在线观看| 黑人猛躁白人BBBBBBBBB| www.亚洲天堂| 怡红院一区二区| 视频三区| 就去色色五月天| 一级a免一级a做免费线看内祥| 8050午夜网| 国产一区二区不卡视频| 伊人一区二区三区| 亚洲成人性爱av| 国产毛片久久久久久久| 天堂成人| 秋霞午夜久久| 成人三级片在线播放| 国产精品一区网站| 国产女人18毛片水18精品| 亚洲无码视频免费观看| 丁香花五月天| 热热av| 91久久精品一区二区三区| 欧美一区二区三区成人片下载| 91国黄色毛片在线观看| 亚洲天堂大香蕉| 天天干,夜夜操| 亚洲无码理论片| 玖玖大香蕉| 在线观看国产欧美| 五月婷婷五月| 不迷路福利视频| 亚洲无码色色| 97精品| 国产精品久久久久久99| 翔田千里无码XXXXXX| 奇米色播| 伊人网大香| 一级a片在线| 911精品人妻一区二区三区A片| 狠狠干高清成人二区三区| 午夜性爱视频| 日本黄色视频免费看| 亚洲日韩国产成人精品久久| 欧美人操逼| 婷婷五月综合激情| 国产视频无码| 久久撸在线视频| 午夜A区| 伊人三级网| 精品在线一区| 中国少妇xxx| 99东京热| 豆花网无码视频观看| 亚洲A网| 特黄AAAAAAAA片视频| 黄a无码| 亚洲无码免费| 一级爱爱爱| 中文字幕精品人妻在线| 在线国产福利| 亚洲成人中文字幕| 国产又爽又黄免费| 中文字幕免费| AV福利在线观看| 免费在线观看黄片| 波多野结衣一级婬片A片免费下载 囯产精品久久久久久久久免费无码 | 免费av观看| 老欧性老太色HD大全| 天天操夜夜操狠狠| 久操AV| 国产又爽又黄视频在线看| 免费在线观看黄色| 激情无码在线观看| 国产又粗又长| 极品少妇av| 日韩视频中文字幕| 91大神在线观看入口| 伊人大香蕉视频| 视色视频在线观看18| 丝袜制服中文字幕无码专区| 91九色91蝌蚪91成人| 青青青在线| 性爱视频免费| 爱视频福利网| 九九黄片| 成人黄色在线看| 婷婷五月天亚洲| 欧美深夜福利视频| 深爱婷婷| 在线观看视频你懂的| 俺去俺来也在线www色官网| www.a片| 超碰天天干天天摸| 精品无码人妻一区二区| 玖玖91| 北条麻妃无码| 国产精品国产三级国产AⅤ| 亚洲AV成人片无码网站网蜜柚| 欧洲性爱视频在线观看| 国产精品A片| 国产亲子乱XXXXimim/| 初学影院WWWBD英语完整版在线观看 | 国产又爽又黄在线看| 91综合在线观看| 国产AV一级片| 九色PORNY国产成人| 伊人成人在线视频| 人妻无码不卡| 丁香五月一区二区| 北条麻妃网站| 人妻丰满精品一区二区| 丁香五月在线视频| 蜜臀av在线免费观看| 成人抽插视频| 久久丝袜视频| 国产极品无码| 东方av在线观看| 六月婷婷五月| www.zaixianshipin| 无码国产一区二区三区四区五区| 手机看片福利视频| 另类罕见稀奇videos| 免费黄色一级视频| 91香蕉| 99精品热视频| 免费看黄片视频| av无码网站| 精品成人影视| 亚洲高清国产欧美综合s8| 探花AV| 婷婷国产| 草久久| 亚洲精品中文字幕成人片| 三级片在线观看网站| 99热99在线| 国产秘精品区二区三区日本| 国产一区二区不卡| 色色热热| 国产精品免费人成网站酒店| 亚洲无码一| 久久国产热视频| 人人操人人操人人操人人操人人操| 国产福利电影在线观看| 午夜欧美性爱视频| yOujiZZ欧美精品| 成人做爰100片免费观看视频| 69AV电影| 中文字幕一区二区无码成人| 91人妻综合| 91视频免费在线看| 黄片视频免费在线观看| 免费看黄的网站在线观看| a三级片| 日本黄色视频在线播放| 91香蕉国产视频| 69成人导航| 亚洲人体视频| 无码免费高清视频| 免费在线观看中文字幕| 日本a级视频| 国产尤物| 97这里只有精品| 人人澡人人澡人人澡| 日韩精品成人免费观看视频| 极品少妇视频| 91黄色电影| 黑人一区二区| 亚洲一级婬片A片AAAA网址| 亚洲理论片| 亚洲婷婷网| 手机看片福利视频| 久久久久久久久久久高清毛片一级| 亚洲AV成人无码AV小说| 亚洲精品久久久久毛片A级牛奶 | а√在线中文8| 手机看片1024久久| 四虎久久| 久久久久久久久久8888| 91天天操| 女人的天堂AV在线观看| 日韩毛片网| 九九久久免费视频| 国产美女18毛片水真多| 日韩一级特黄A片免费观| 西西特级WWW444无码| 欧美三级不卡| 无码一区二区三区四区五区| 蜜臀av一区二区| 秋霞理伦| 火淫玖玖免费精品| 成人伊人大香蕉| 亚洲AV秘成人久久无码海归| 色色丁香五月天| 国产一区二区无码| 久久久91精品国产一区苍井空| 免费观看在线黄片| 国产成人电影免费在线观看| 一级黄色电影免费看| 亚洲V在线| 一级视频免费观看| 成人超碰在线| 婷婷色色婷婷| 另类老妇奶性BBWBBwBBw| 摸BBB槡BBBB搡BBB,,,,,| 高潮喷水在线观看| 思思热视频在线观看| 日本成人一区二区| 超碰激情| 中国老女人操逼| 国产一级AV片| 97色色网站| 日韩在线中文字幕亚洲| 天天视频黄| 无码人妻精品一区二区三区蜜桃91| 国产成人秘在线观看免费网站| 国产操逼免费看| 国产精品一区二区在线| 一级黄色片免费| 一级AV在线| 麻豆午夜福利| 黄色成人18| 黄色视频久久| 青娱乐网站| 欧美乱欲视频| 天天干天天干| 超碰精品在线| 91蝌蚪在线观看| A片黄色视频| www五月天com| 五月丁香在线观看| 国产色播| 熟女AV888| 免费在线观看亚洲| 狠狠色狠狠操| 日韩黄色一级片| 成人国产精品视频| 日韩无码123| 欧美一级三级| 影音av在线| 伊人网在线播放| 成人激情五月天| 国产精品不卡一区二区三区| 国产小福利| 麻豆艾秋MD0056在线| 欧美日韩成人在线| 亚洲AV无码成人精品区| 97中文字幕在线| 中文字幕AV在线免费观看| 亚日韩视频| 午夜操一操| 成人第一页| 操逼视频免费网站| 竹菊传媒一区二区三区| 欧美日韩一级黄色片| 美国操逼片| 日韩v| 亚洲精品成人7777777| 山西真实国产乱子伦| 人人摸在线视频| 国产极品久久久| 亚洲草片| 91久久欧美极品XXXXⅩ| 国产亚洲中文字幕| 激情免费视频| 97国产精品视频人人做人人爱| 人人操天天干| 日本一级婬片A片免费看| 欧美精品久久久久久久多人混战| 亚洲精品97久久中文字幕| 99亚洲视频| 丁香五月婷婷中文字幕| 九色无码| 大香蕉伊人网在线| 91国黄色毛片在线观看| 久草福利在线观看| 亚洲国产精品久久| 韩日中文字幕| 伊人在线视频观看| 国产精品久久久久久99| 3D精品啪啪一区二区三区| 久久人妻无码中文字幕系列| 爱搞视频在线观看| 国产乱伦网| 久久精品一区二区三区蜜芽的特点| 一本色道久久综合| av无码毛片| 俺去也av| 韩国精品一区| 一级大黄色毛片| 欧美黄色网| 在线超碰| 天天肏夜夜肏| 91视频网站在线| 国产日女人| 91久久超碰| 制服.丝袜.亚洲.中文.豆花| 亚洲天堂在线观看网站| 午夜做爱福利视频| 黄色成人在线观看| 欧美日韩免费看| 亚洲清高毛无码毛片| 日本精品中文字幕| 911国产精品| 久久国产一区二区三区| 九九九九九精品| 日本久久久久| 亚洲国产精品18久久久久久| 国产手机AV在线| 亚洲综合在线视频| 黄色片在线免费观看| 亚洲欧洲视频| 另类日韩| 欧美一级婬片AAAA毛片| AⅤ在线| 无码黄页| 暖暖高清无码| 少妇精品久久久久久久久久| 黑人aV| 影音先锋AV天堂| 亚洲三级片免费观看| 蜜桃导航-精品导航| 女神思瑞精品一区二区三区| 亚洲无码播放| 亚洲激情综合| 国产熟妇婬乱一区二区| 亚洲av资源| 色色看片| 亚洲AV永久无码精品| 俺也去也| 国产一级婬片A片免费无成人黑豆 国产真实露脸乱子伦对白高清视频 | 久久少妇视频| 伊人久久av| 无码人妻精品一区二区蜜桃91| 亚洲中文欧美| 免费中文字幕av| 三级网站网址| 粉嫩小泬粉嫩小泬在线| 黄色一级视频在线观看| 特一级A片| 日韩精品中文无码| 91色图| 亚洲无码中文字幕视频| 丁香五月伊人| 怡红院成人AV| 黄频在线免费观看| 一道本视频在线免费观看| 亚洲国产精品成人网站| 插逼视频国产| 成人社区视频| 婷婷综合缴情亚洲另类在线| aaa少妇| 欧美爆操视频| 操逼三级视频| 强奸校花到高潮| 国产亚洲视频完整在线观看| 丁香六月婷婷久久综合| 黄色视频在线观看18| 亚洲视频区| 欧美日韩中文字幕无码| 免费黄色AV| 制服.丝袜.亚洲.中文豆花| 国产精品视频播放| 日韩在线免费| 蜜桃视频一区二区三区四区av| 日韩人妻中文字幕| 18禁网站| 国产成人亚洲日韩| 日本a视频| 777AV| 黄色激情网站| 爱爱导航| 欧美国产日韩综合在线观看170 | 国产三级电影在线观看| 最好看的MV中文字幕国语| 三级成人网| 一级婬片A片AAAA毛片A级| 国产56页| 欧美69视频| 中文字幕有码视频| 亚洲一二三| 黄片无码| 国产香蕉视频| 日韩欧美不卡色不卡| 免费v片在线| 亚洲av性爱| 美女啪啪网站| 国产高清精品无码| xxxx亚洲| 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 亚洲精品成a人在线观看| 97色在线| 撸一撸在线视频| 黄片大全在线观看| 久久激情网| 在线视频亚洲| 少妇无码| 91麻豆福利在线观看| 欧美大香蕉伊人网| 西西人体大胆ww4444图片| 淫色综合| 日本色情在线| av天堂中文| 色婷在线视频| 亚洲在线成人视频| 黄色电影天堂| 另类色综合| 国产激情视频在线播放| 成人三级AV| 久草手机在线| 亚洲欧美成人在线| 国产精品无毛五区六区| 999成人电影| 欧美九九九九| 久久久久中文字幕| 国产视频123区| 国产乱子伦一区二区三区免看| 麻豆91精品91久久久| 不卡的一区二区| 喷水在线观看| 91干| 图片区视频区小说区| 亚洲日韩中文字幕在线观看| 99热9| 日韩乱轮小说与视频| 91综合色| 精品久热| 国产九九九九九九| 91成人在线播放| 成人性爱在线| 自慰精品| 超碰大香蕉| 欧美日韩国产尤物主播精品| 成人免费无码毛片| 超碰2021| 亚洲日韩一级| 精品人伦一区二区三区| 91久久久久国产一区二区| 做爱无码| 中文字幕专区| 狠狠干亚洲视频| 伊人久久大香色综合久久| 操碰99| 亚洲人成人无码.www粉色| 亚洲黄在线观看| 日韩精品人妻无码| 中文在线观看视频| 亚洲国产91| 色青娱乐| 国产1024在线| 狠狠噜噜| 亚洲黄色电影网| 国产欧美综合在线| 久热精品在线观看| 美女一级片| 日本少妇电影| 欧美爱爱视屏| 成人永久免费视频| 老汉AV| 一本高清无码| 欧美一卡二卡三卡| 五月天青青草超碰免费公开在线观看 | 亚洲第一页在线观看| 青青伊人网| 欧美日逼超碰| 人人干人| AⅤ天堂| 日韩视频久久| 群交无码| 亚洲激情av| 日本二区| 国外亚洲成AV人片在线观看| 久操电影网| 九九五月天| 亚洲欧美第一页| 黄色视频在线免费播放| 色婷婷丁香五月天| 小日本91在线观看| 91美女在线观看| 日韩成人无码电影网站| 在线免费观看黄色视频网站| 日韩av中文字幕在线| 香蕉伊人| 午夜福利成人| 黄色大片av| 午夜久久福利| 日本电影一区二区三区| 日韩精品免费观看| 特级西西444www高清| 日韩中文视频| 中文字幕自拍偷拍| 超碰1999| 成人午夜在线观看| 色天天| 日本欧美在线| 一品国精和二品国精的文化意义| 亚洲秘无码一区二区| 天堂网av2025| 久久久久久毛片| 欧美日韩性爱视频| 一区二区三区视频| 思思热在线视频播放| 婷婷成人视频| 京熱大亂交无碼大亂交| 学生妹做爱视频| 99精品在线观看| 亚洲A片免费看| 尤物网站在线观看| 国产69页| 日本精品一区二区三区四区的功能| 色玖玖| 美国熟妇| 午夜黄色视频在线观看| 国产精品1区2区| 亚洲免费在线观看视频| 翔田千里高潮90分钟| 国产天堂av| 天天射夜夜操| 伊人999| 伊人在线视频| 婚闹不堪入目A片| 蜜桃传媒一区二区亚洲A| 中文字幕免费高清网站| 91精品一区二区| 天天日天天干麻豆| 肏屄视频在线看| 日韩精品一区二区三区黄冈站长 | 中文字幕精品视频在线| 一级Aa视频免费看| 99在线视频免费观看| 色香蕉视频在线观看| 欧美中文网| 欧美一级AA大片免费看视频| 亚洲人体视频| 短发半推半就AV| 天天操天天干天天| AV网站免费在线观看| 免费精品99| 久久久久久久久久久久久自慰小片 | 国产又黄又大又粗| 自拍偷拍视频网| 成人a片在线观看| 18国产免费视频| 99久久精彩视频| 人人上人人摸| 99涩涩| 伊人久久福利视频| 久久青青草在线视频| 久久99国产精品| 亚洲人妻在线视频| 国产成人精品视频免费看| 免费视频爱爱| 国产精品国产精品| 91免费观看视频| 白丝在线观看| 可以免费看的黄色| 亚洲福利视频网| 婷婷情色五月| 丰满熟妇高潮呻吟无码| 熟妇人妻丰满久久久久久久无码 | 欧美久久一区二区三区四区视频| 国产精品久久久久久婷婷天堂 | 日本三级片无码| 亚洲精品女人久久久| 免费三级网址| 麻豆精品传媒国产剧的特点| 亚洲精品乱码久久久久久久| 在线黄色小视频| 国内操B电影| 在线a视频免费观看| 无套内射学生妹去看片| 欧美一区二区三区视频| 黄色一级片免费在线观看| 91人人人人| 暗呦网一区二区三区| 中文字幕日本电影| 欧美精品乱码99久久蜜桃| 国产成人精| 欧美午夜乱伦电影| 一区二区三区在线视频观看| 蜜桃视频一区二区三区四区使用方法| 欧美黄网站| 欧一美一婬一伦一区二区三区| 东方AV在线免费观看| 久久ww| 爆操无码| AV无码在线免费观看| 91无码人妻| 中文免费高清在线| 97黄片| 欧美狠狠干| 嫩草在线播放| AV中文字幕在线播放| 苍井空亚洲精品AA片在线播放| 97婷婷五月天| 高潮喷水无码| 成人看片黄a免费看视频| 无码迷穴| 91九色蝌蚪91POR成人| 亚洲福利视频网| 亚洲福利天堂| 九九天堂| 欧洲精品视频在线观看| 自拍偷拍亚洲| 成人毛片一区二区三区| 午夜福利国产| 内射毛片| 免费高清无码视频在线观看| 在线毛片网站| 无码秘蜜桃一区二区| 国产在线观看免费成人视频| 97人妻精品一区二区三区免| 亚洲成人视屏| 日本久久精品| 高清无码网址| 人人妻人人澡人人爽| 亚洲中文免费观看| 中文字幕免费视频在线观看| 成人做爰100部片视频|