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

SystemDictStarter系統(tǒng)數(shù)據(jù)字典自動轉(zhuǎn)換工具

聯(lián)合創(chuàng)作 · 2023-09-28 10:04

0. 項目地址
0.1 依賴坐標(biāo)
1. 開始使用
1.1 數(shù)據(jù)準(zhǔn)備
1.2 字典緩存存儲
1.3 DictProvider 中的字典信息變動如何刷新字典?
2. 用法示例
2.1 基礎(chǔ)用法示例
2.2 靜態(tài)工具直接獲取字典信息
3. 其他
3.1 SpringBoot Actuator 端點支持
3.2 默認(rèn) Controller 接口
3.3 面對大量數(shù)據(jù)需要轉(zhuǎn)換的場景,是否會頻繁去調(diào)用接口獲取實際字典文本?
3.4 配置說明

在日常項目開發(fā)中,不免都會用到一些數(shù)據(jù)字典的信息,以及前端展示的時候通常也需要把這些數(shù)據(jù)字典值轉(zhuǎn)換成具體字典文本信息。遇到這種場景通常都是后端把字典的文本轉(zhuǎn)換好一起返回給前端,前端只需要直接轉(zhuǎn)換即可。一般情況下后端可能需要單獨給返回對象創(chuàng)建一個字段來存儲對應(yīng)的字典文本值,然后進(jìn)行手動的處理,這種方式通常比較繁瑣,在字段多的時候會增加更多的工作量。

本文基于 Jackson 的自定義注解功能實現(xiàn)了這一自動轉(zhuǎn)換過程,在字段上使用特定的注解配置,Jackson序列化的時候即可自動把字典值轉(zhuǎn)換成字典文本。

0. 項目地址

0.1 依賴坐標(biāo)

<dependency>
    <groupId>com.houkunlin</groupId>
    <artifactId>system-dict-starter</artifactId>
    <!-- 當(dāng)前版本:1.4.3 -->
    <version>${latest.version}</version>
</dependency>

1. 開始使用

使用數(shù)據(jù)字典通常有兩種字典,一種是存儲在數(shù)據(jù)庫中的動態(tài)形式數(shù)據(jù)字典,一種是用枚舉對象硬編碼在代碼中的系統(tǒng)字典,本工具為了適應(yīng)第二種枚舉對象字典的情況,定義了一個枚舉字典掃描注解,需要在啟動類上使用注解,并定義要掃描的包信息。

//  啟動類上加注解,這一個步驟是必須的
@SystemDictScan(basePackages = "test.application.dict")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

1.1 數(shù)據(jù)準(zhǔn)備

直接使用枚舉對象來做字典場景,枚舉對象需要實現(xiàn)一個 DictEnum<V> 接口才能被正常掃描到,枚舉對象有兩個自定義的注解 @DictConverter@DictType 可以做一些相關(guān)配置

  • @DictType 用來標(biāo)記枚舉對象的字典類型代碼

  • @DictConverter 用來標(biāo)記是否對這個枚舉對象生成 org.springframework.core.convert.converter.Converter 轉(zhuǎn)換對象,提供使用枚舉接收參數(shù)時自動轉(zhuǎn)換字典值到相應(yīng)枚舉對象類型的功能,未加此注解將不會生成轉(zhuǎn)換器對象。

@DictConverter
@DictType(value = "PeopleType", comment = "用戶類型")
@Getter
@AllArgsConstructor
public enum PeopleType implements DictEnum<Integer> {
    /** 系統(tǒng)管理員 */
    ADMIN(0, "系統(tǒng)管理"),
    /** 普通用戶 */
    USER(1, "普通用戶"),
    ;
    private final Integer value;
    private final String title;
?
    @JsonCreator
    public static PeopleType getItem(Integer code) {
        return DictEnum.valueOf(values(), code);
    }
}

前面在啟動類上加了注解功能僅僅只是啟用了基礎(chǔ)的功能,我們的字典可能還會存儲在數(shù)據(jù)庫或本地文件等其他地方,因此需要向系統(tǒng)提供一個 DictProvider 對象

@Component
public class MyProvider implements DictProvider {
    @Override
    public boolean isStoreDictType() {
        return true;
    }
?
    @Override
    public Iterator<DictTypeVo> dictTypeIterator() {
        // 從其他地方(其他服務(wù)、數(shù)據(jù)庫、本地文件)加載完整的數(shù)據(jù)字典信息(字典類型+字典值列表)
        // 從這里返回的數(shù)據(jù)字典信息將會被存入緩存中,以便下次直接調(diào)用,當(dāng)有數(shù)據(jù)變動時可以發(fā)起 RefreshDictEvent 事件通知更新字典信息
        final DictTypeVo typeVo = DictTypeVo.newBuilder("name", "測試字典")
            .add("1", "測試1")
            .add("2", "測試2")
            .build();
        return Collections.singletonList(typeVo).iterator();
    }
}

上面 DictProvider 中返回的字典信息會被存儲在緩存中,但是可能我們會有一些數(shù)據(jù)量特別大的場景不適合直接把數(shù)據(jù)存儲在緩存中,有可能需要直接從數(shù)據(jù)庫中讀取,甚至去請求遠(yuǎn)程服務(wù)的信息,此時可以提供一個 RemoteDict 對象來處理這種情況,當(dāng)在緩存中找不到字典文本值的時候,會調(diào)用 RemoteDict 對象來嘗試進(jìn)一步讀取字典文本信息。

@Component
public class MyRemoteDict implements RemoteDict {
    @Override
    public DictTypeVo getDictType(final String type) {
        // 從其他地方(其他服務(wù)、數(shù)據(jù)庫、本地文件)加載一個完整的數(shù)據(jù)字典信息(字典類型+字典值列表)
        return null;
    }
?
    @Override
    public String getDictText(final String type, final String value) {
        // 從其他地方(其他服務(wù)、數(shù)據(jù)庫、本地文件)加載一個字典文本信息
        return null;
    }
}
?

1.2 字典緩存存儲

在前面說到系統(tǒng)的枚舉字典和 DictProvider 提供的字典會被緩存,工具中已經(jīng)默認(rèn)提供了兩個緩存對象

  • LocalDictStore 本地 Map 緩存存儲使用了 ConcurrentHashMap 來緩存字典值/字典文本信息

  • RedisDictStore 使用了 Redis 來存儲字典值/字典文本信息,當(dāng)想啟用 Redis 存儲字典的時候只需要在項目中引入 org.springframework.boot:spring-boot-starter-data-redis 依賴并配置好 Redis 連接信息即可

有時候,上面提供的兩個緩存對象可能并不適用自己的業(yè)務(wù)場景,那么我們還可以手動實現(xiàn)一個緩存存儲對象 DictStore ,在手動實現(xiàn)緩存對象時前面的 RemoteDict 并不會生效,因此需要在 DictStore 中自行處理此種情況。

// 可參考 LocalDictStore 自行實現(xiàn)相關(guān)功能
@Component
@AllArgsConstructor
public class MyDictStore implements DictStore {
    private final RemoteDict remoteDict;
?
    @Override
    public void store(final DictTypeVo dictType) {
?
    }
?
    @Override
    public void store(final Iterator<DictValueVo> iterator) {
?
    }
?
    @Override
    public Set<String> dictTypeKeys() {
        return null;
    }
?
    @Override
    public DictTypeVo getDictType(final String type) {
        return remoteDict.getDictType(type);
    }
?
    @Override
    public String getDictText(final String type, final String value) {
        return remoteDict.getDictText(type, value);
    }
}

1.3 DictProvider 中的字典信息變動如何刷新字典?

DictProvider 提供的字典信息是從其他地方讀取的,其字典數(shù)據(jù)有可能會產(chǎn)生變動,當(dāng)字典變動后可以發(fā)起 RefreshDictEvent 事件來觸發(fā)字典刷新。

@Component
@AllArgsConstructor
public class CommandRunnerTests implements CommandLineRunner {
    private final ApplicationEventPublisher publisher;
?
    @Override
    public void run(final String... args) throws Exception {
        // 發(fā)起 RefreshDictEvent 事件通知刷新字典信息
        publisher.publishEvent(new RefreshDictEvent("test", true, true));
    }
}

 

2. 用法示例

2.1 基礎(chǔ)用法示例

為了正常能夠轉(zhuǎn)換數(shù)據(jù),因此需要使用一個 Jackson 的自定義注解 @DictText ,把此注解用在需要轉(zhuǎn)換的字段上即可。

@Data
@AllArgsConstructor
class Bean {
    @DictText("PeopleType")
    private String userType;
    private String userType1;
}
final Bean bean = new Bean("1", null);
final String value = objectMapper.writeValueAsString(bean);
System.out.println(bean); // Bean(userType=1,userType1=null)
System.out.println(value); // {"userType":"1","userTypeText":"普通用戶","userType1":null}

我們不需要在對象中為字典文本創(chuàng)建一個單獨的字段,@DictText 會自動生成一個 字段名 + Text 的字段輸出到前端。但是有時候我們覺得 字段名 + Text 這個字段不行,想要用另外一個字段名稱,此時可以用下面這種方式:

@Data
@AllArgsConstructor
class Bean {
    @DictText(value = "PeopleType", fieldName = "typeText")
    private String userType;
}
final Bean bean = new Bean("1");
final String value = objectMapper.writeValueAsString(bean);
System.out.println(bean); // Bean(userType=1)
System.out.println(value); // {"userType":"1","typeText":"普通用戶"}

有時候我們可能用一個字符串字段來存儲多個字典文本信息,并通過特定的符號來分隔,例如:

@Data
@AllArgsConstructor
class Bean {
    @DictText(value = "PeopleType", array = @Array(split = ","))
    private String userType;
}
final Bean bean = new Bean("0,1");
final String value = objectMapper.writeValueAsString(bean);
System.out.println(bean); // Bean(userType=0,1)
System.out.println(value); // {"userType":"0,1","userTypeText":"系統(tǒng)管理、普通用戶"}

當(dāng)然也有可能使用一個集合來存儲多個字典文本信息:

@Data
@AllArgsConstructor
class Bean {
    @DictText("PeopleType")
    private List<String> userType;
}
final Bean bean = new Bean(Arrays.asList("0", "1"));
final String value = objectMapper.writeValueAsString(bean);
System.out.println(bean); // Bean(userType=["0","1"])
System.out.println(value); // {"userType":["0","1"],"userTypeText":"系統(tǒng)管理、普通用戶"}

也許對于這種字典值列表可能需要輸出文本列表信息

@Data
@AllArgsConstructor
class Bean {
    @DictText(value = "PeopleType", array = @Array(toText = false))
    private List<String> userType;
}
final Bean bean = new Bean(Arrays.asList("0", "1"));
final String value = objectMapper.writeValueAsString(bean);
System.out.println(bean); // Bean(userType=[0, 1])
System.out.println(value); // {"userType":["0","1"],"userTypeText":["系統(tǒng)管理","普通用戶"]}

2.2 靜態(tài)工具直接獲取字典信息

有時候不僅僅是用在返回給前端時自動轉(zhuǎn)換,可能在程序中也需要直接用到這些字典文本,此時可以通過靜態(tài)工具類來直接獲取字典文本信息

@Component
@AllArgsConstructor
public class CommandRunnerTests implements CommandLineRunner {
    @Override
    public void run(final String... args) throws Exception {
        System.out.println(DictUtil.getDictText("PeopleType", "1"))
    }
}

靜態(tài)工具類無法處理多個字典的情況,也就是無法對 "0,1" 這種數(shù)據(jù)進(jìn)行自動分割,這種場景需要自行分割并獲取數(shù)據(jù)

 

3. 其他

3.1 SpringBoot Actuator 端點支持

提供了 dictdict-system 兩個端點信息

// 獲取所有的字典名稱列表和一些配置的對象名稱
GET /actuator/dict/
?
// 獲取某個字典類型的完整信息
GET /actuator/dict/PeopleType
?
// 獲取某個字典值的字典文本信息
GET /actuator/dict/PeopleType/1
?
// 獲取系統(tǒng)字典的名稱列表(枚舉對象)
GET /actuator/dict-system
?
// 獲取系統(tǒng)字典的完整信息
GET /actuator/dict-system/PeopleType

3.2 默認(rèn) Controller 接口

可通過一個配置 system.dict.controller.enabled 來配置是否啟用默認(rèn)接口,使用 system.dict.controller.prefix 來配置路徑前綴信息,啟用后將提供以下4個接口

  • ${prefix}/{dict} 通過字典類型代碼獲取字典類型信息

  • ${prefix}/{dict}/{value} 通過字典類型代碼和字典值獲取字典文本信息

  • ${prefix}/?dict={dict} 通過字典類型代碼獲取字典類型信息

  • ${prefix}/?dict={dict}&value={value} 通過字典類型代碼和字典值獲取字典文本信息

3.3 面對大量數(shù)據(jù)需要轉(zhuǎn)換的場景,是否會頻繁去調(diào)用接口獲取實際字典文本?

DictUtil 工具中增加了一層緩存,緩存使用了 Caffeine 并配置了一定的緩存過期時間 ,當(dāng)我們獲取一個字典文本的時候并不會直接去調(diào)用 DictStore 讀取字典文本,而是先從緩存中查找是否存在,如果存在則直接返回字典文本信息,并且當(dāng)從 DictStore 讀取失敗次數(shù)達(dá)到一定量時也不會繼續(xù)從 DictStore 中讀取數(shù)據(jù)。

這在使用 Redis 存儲的場景時可以有效的減少網(wǎng)絡(luò)請求,雖然 Redis 很快,但是也有可能會造成一定的網(wǎng)絡(luò)延時,這在轉(zhuǎn)換數(shù)量大的時候可以有效的縮短因轉(zhuǎn)換帶來的延時問題。

3.4 配置說明

  • system.dict 字典配置

    • raw-value=false 是否顯示原生數(shù)據(jù)字典值。true 實際類型輸出,false 轉(zhuǎn)換成字符串值

    • text-value-default-null=false 字典文本的值是否默認(rèn)為null,true 默認(rèn)為null,false 默認(rèn)為空字符串

    • on-boot-refresh-dict=true 是否在啟動的時候刷新字典

    • map-value=false 是否把字典值轉(zhuǎn)換成 Map 形式,包含字典值和文本。false 時在 json 中插入字段顯示字典文本;true 時把原字段的值變成 Map 數(shù)據(jù)

    • refresh-dict-interval=60000 兩次刷新字典事件的時間間隔;兩次刷新事件時間間隔小于配置參數(shù)將不會刷新。單位:毫秒

  • system.dict.cache DictUtil 工具字典緩存

    • enabled=true 是否啟用緩存

    • maximumSize=500 緩存最大容量

    • initialCapacity=50 緩存初始化容量

    • duration=30s 有效期時長

    • missNum=50 在有效期內(nèi)同一個字典值未命中指定次數(shù)將快速返回,不再重復(fù)請求獲取數(shù)據(jù)字典信息

  • system.dict.controller 默認(rèn)控制器

    • enabled=true 是否啟用 WEB 請求接口

    • prefix=/dict WEB 請求接口前綴

 

瀏覽 29
點贊
評論
收藏
分享

手機(jī)掃一掃分享

編輯 分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機(jī)掃一掃分享

編輯 分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 高清无码视频免费| 中文字幕日韩有码| 91精品国产aⅴ一区二区| 99久久伊人| 最新亚洲中文字幕| 精品九九九九九九| 91羞羞网站| 国产精品免费在线| 制服丝袜乱伦| 黑人人妻黑人ThePorn| AA丁香综合激情| 女生自慰网站免费| 五月激情婷婷网| 成人亚洲天堂| 999精品视频在线| 国产午夜福利电影| 黄色A片网站| 国产黄色免费乱伦片| 五月丁香狠狠爱| 一插菊花网| 九一久色| 内射视频免费看| 天天搞天天色| 亚洲中文无码第一页| 国产三级毛片| 三级av在线| 亚洲国产精品久久人人爱| 激情五月在线| 欧美第二页| 特黄AAAAAAAAA真人毛片| 九九九九综合| 日韩精品无码一区二区三区| 天天毛片| 在线免费观看国产视频| 亚洲成人怡红院| 日本老妇操屄视频| 日韩激情视频| 超碰97免费| 国产女18毛片多18精品| 亚洲无码在线播放| 亚洲AV无码成人精品区欧洲| 国产综合久久久7777777| 高潮AV在线观看| 成人性爱视频在线播放| 黄色毛片在线| 欧美内射在线| 日本黄色A片免费看| 久9久9久9久9久9久9| 东北女人毛多又黑A片| 吴梦梦一区二区在线观看| www超碰在线| 国产激情欧洲在线观看一区二区三区| 色玖玖| 国产成人高清| 91人妻无码一区二区三区| 日毛片| 91精品人妻一区二| 精品一级| 日本少妇高潮| 色呦呦中文字幕| 91中文字幕+乱码| 美女91视频网站| www.天天射| 欧美狂操| 北条麻妃无码精品| 91免费成人| 中文字幕不卡视频| 亚洲涩情91日韩一区二区| 97精品在线观看| 射死你天天日| 台湾一区二区| 东京热三区| 久久久无码视频| AV无码在线播放| 五月丁香婷婷综合网| XXXXⅩHD亚洲人HD| 久久午夜一级A片| 日韩在线视频中文字幕| 成年人黄色视频在线观看| 水蜜桃网站在线观看| 丰满人妻一区二区三区视频54| 俺去俺来也www色官网黑人 | 九色国产| 色婷婷视频在线| 日逼综合网| a天堂视频| 国产精品TV| 尤物无码| 欧美草逼| 爽好紧别夹喷水无码| 国产无码高清| 久久黄色| 短发妹子双人啪啪秀| 久操视频一区二区三区| 熊猫视频91| 午夜久操| 免费欧美三级片| 欧美怕怕| 黃色毛片A片AAAA级20| 色国产视频| 五月天久久综合| 欧美MV日韩MV国产网站| 波多野结衣操逼| 免费自拍视频| 免费在线观看视频黄| 上海熟妇搡BBBB搡BBBB| 亚洲.欧美.丝袜.中文.综合 | 91视频你懂的| 日韩欧美精品| 亚洲色久悠悠| 99精品免费| 九九视频在线观看| 精品国产91| 精品人妻一区二区三区浪潮在线| 大香蕉视频在线观看| 甘肃WBBBB搡wBBBB| 美女大吊,网站视频| 久久精品水多多www| 国产精品一级二级三级| 久久久久久无码精品亚洲日韩麻豆| 日韩乱伦网站| 91精品婷婷国产综合久久蝌蚪| 性中国熟妇| 一区二区三区四区免费看| 91国产视频在线观看| 97在线观看免费视频| 国产在线导航| 日韩精品免费| 不迷路福利视频| 二区三区不卡| 无码视频一二三区| 大鸡吧操视频| 一插菊花综合| 69色综合| 高清无码电影| 俺去俺来也www色视频| 黄色一区二区三区| 国产欧美日本视频| 熟女视频一区二区| 五月天婷婷网址| 久久午夜无码鲁丝片主演是谁| 黄色片视频| 欧美在线视频免费观看| 精品人无码一区二区三区下载| 欧美浮力| 1024黄| 午夜人妻无码| 亚洲AV毛片成人精品网站| 人人澡视频| www.日本色| 99九九久久| 中文字幕乱码人妻二区三区| 免费在线黄片| 国产AV一区二区三区四区五区| 伊人色色色| 国产精品毛片一区二区在线看| 日韩性爱A片| 亚洲欧美国产视频| 久久天堂网| 亚欧精品久久久久久久久久久| 亚洲色视频在线观看| 日韩v亚洲| 黄片视频在线免费看| 欧美一级久久| 肏屄视频在线| 黄色A级片| 国产色婷婷一区二区| 伊人色色| 大香蕉天天操| 九九热国产视频| 免费看黄色视频| 欧美精品在线观看| 亚洲成人无码片| 国产精品福利在线播放| 强奸乱伦五月天| 国产激情片| 国产三级片视频| 88海外华人免费一区| 日韩国产在线观看| 国产午夜成人视频| 亚洲爆乳无码一区二区三区| 国产1级a毛a毛1级a毛1级| 日韩在线观看免| www日本黄色| 香蕉视频免费| 91丝袜足交| 88AV视频| www一个人免费观看视频www| 久久91| 大香蕉精品视频| 天天干一干| 欧美成人三级在线观看| 99无码国产成人精品| 另类老太婆性BBWBBw| 亚洲成人娱乐网| 麻豆传媒电影| 任我操在线视频| 亚洲狼人天堂| 美女91视频网站| 欧美成人网站在线| 免费高潮视频| 高清无码视频免费看| 六月丁香综合| AAA久久久| 一本色道无码人妻精品| 国产高清无码免费在线观看| 欧美日韩性色无码免费| 午夜专区| 久久精品免费电影| 亚洲男人的天堂AV| 成人高清无码在线观看| 亚洲成人娱乐网| 国产91精品探花一区二区| 欧美不卡一区二区三区| 亚洲天堂综合网| 亚洲天堂免费观看| 人人妻人人澡人人爽人人| 国产一区二区三区四区视频| 麻豆三级| 午夜成人福利在线观看| 中文原创麻豆传媒md0052| 亚洲中文免费| 成人网站中文字幕| 日本暖暖视频| 日韩成人无码免费视频| 久久精品视| 男女AV在线| BBW老熟女BBw| 无码日逼| 中文免费高清在线观看视频 | 安徽妇搡BBBB搡BBBB| 一级色情片| 久久99热这里只频精品6学生| jizzjizz国产| 亚洲黄色片| 逼特逼视频网站| 黄片WWW| 无码专区亚洲| 少妇搡BBBB搡BBB搡AA| 国产无码一二三| 91人妻人人澡人人| 欧美你懂的| 欧美中文字幕| 亚洲中文视频在线| 成人性爱视频免费观看| 综合偷拍| 国产熟妇毛多久久久久一区| 日韩爱爱视频| 日韩欧美视频| 国产精品夜夜爽3000| 亚洲中文无码AV在线| 亚洲天堂无码AV| 欧美日韩精品在线视频| 69人妻人人澡人人爽人人精品| 91视频精品| 国产美女一级特黄大片| 91丨精品丨国产丨丝袜| 国产粉嫩在线观看| 黄色网址在线免费观看| 国产午夜成人福利在线| 亚洲一级免费免费在线观看| 天天夜夜有| 日本乱伦网站| 久久一二三区| 国产中文字幕在线| 色色视频免费看| 国产成人h| 中文无码第一页| 欧美综合在线观看| 色AV高清| 91一级A片在线观看| 男人天堂综合网| 特级黄色视频| 国产乱伦网站| 蜜桃无码一区| 精品动漫一区二区三区| 丁香五月影院| 国产成人精品视频| 日韩性生活| 人妻AV一区| 国产妞干网| 国产黄色AV| 日韩视频播放在线综合| 天天透天天干| 91AV无码| 操比视频| 操逼操逼操逼操逼操逼操逼| 爱爱爱爱视频| 黄色av免费在线观看| 特级丰满少妇免费观看| 人妻丰满精品一区二区| 尤物yw| 亚洲色图一区二区三区| 日本操骚逼| 中文字幕日韩美| 影音先锋天堂网| 亚洲成人国产| 欧美激情久久久| 免费日韩视频| 人人精品| 青青国产在线观看| 91成人无码看片在线观看网址| 久久久久久网站| 边摸边插| 亚洲视频欧美| 亚洲AV无码专区一级婬片毛片| 欧美性生活视频| 亚洲综合干| 日韩无码精品视频| 免费A片在线| 亚洲乱码在线观看| 婷婷激情综合| AV黑人| 人人看人人草| 最近中文字幕在线视频| 免费视频99| 精品人妻一区二区免费蜜桃视频| 欧美精品无码久久久精品酒店| 校园春色av| 免费日逼| 91人妻人人澡人人爽人人精品一 | 国产成人综合在线| 色婷婷一区| 一区二区三区三级片| 91蜜桃在线观看| 黃色A片一级一级一级久别的草原| 久草网在线观看| 草草久久久无码国产专区的优势| 性视频人人| 91久久人澡人妻人人做人人爽97 | 影音先锋久久久久AV综合网成人 | 人人妻人人澡| 综合精品7799| 一级女婬片A片AAAA片| 黄色网址在线观看视频| av手机版| 成人精品网| 丁香五月婷婷啪啪| 一区二区三区四区在线| 久久国产乱子伦精品免费午夜...| 精品成人电影| 91丨PORN首页| 麻豆mdapp03.tⅴ| 欧美色图网址| 国产精品久久久久久久久夜色| 亚洲国产精品一区二区三区| 中文在线资源| 妓女不卡| 午夜激情乱伦| 三级免费无限AV| 北条麻妃JUX-869无码播放| 黄色欧美视频| 精品无码蜜桃| 亚洲天堂免费视频| 性色在线| 亚洲操逼网站| 国产黄色自拍| 越南小嫩嫩BBWBBw| 国内视频一区| 嫩BBB槡BBBB槡BBB3i| 九九热视频99| 欧美老妇另类老屁XXX| 国产精品久久久久久久牛牛| 天天干夜夜骑| 国内视频一区| 北条麻妃久久| 中文字幕亚洲第一| 中文字幕在线观看第一页| 97精品人妻一区二区三区香蕉 | 97精品超碰一区二区三区| 精品在线免费视频| 中国12一13毛片| A片在线免费看| 无套内射在线| 黄色片免费在线观看| 国产精品秘ThePorn| 日韩免费AV| 亚洲一区二区三区在线视频| 免费观看色情视频| 可以免费看AV的网站| 仙踪林777777野大粗| 99成人视频| 日本高清视频九区| 精品久久久国产| 99er这里只有精品| 日韩精品电影| 亚洲无码乱码av| 影音先锋成人AV| 成年人免费视频在线观看| 嘿咻无码| 日韩无码人妻一区二区| 国产天堂av| 大地影院在线资源观看| 中文字幕精品视频在线观看| 日韩视频播放在线综合| 成人做爰100片免费观看视频| 亚洲av高清| 日本精品视频在线观看| 亚洲在线无码| 国产一级特黄aaa大片| 成人一级黄片| 亚洲AV一级| av无码在线观看| 五月天激情小说网| 91蝌蚪视频在线| 五月婷婷中文| 国产精品秘ThePorn| 色婷婷一区二区三区四区五区精品视 | 成人二区| 中文字幕巨肉乱码中文乱码| 4444操| 婷婷五月天网址| 肏屄视频在线看| 人人操超碰| 韩国精品一区二区三区| 人妻中文字幕久久| 在线观看中文字幕| 自拍偷拍精品| 韩国一级AV| 免费AV网站| www.天天射| 成人影视在线免费观看| 色五月婷婷AV| 黄色视频亚洲| 亚洲欧洲日韩综合| 在线观看免费视频无码| 亚洲无码AV电影| 可以免费看的AV| 亚洲一区二区三区免费视频| 婷婷五月天电影| 波多野结衣视频一区| 国产成人自拍视频在线| 午夜成人福利| 91禁樱桃在线| 黄色免费无码| 这里视频很精彩免费观看电视剧最新| 狠狠干在线视频| 日韩人妻码一区二区三区| 丁香六月婷| 爱福利视频| 国产色情视频| 2021国产视频| 四川少妇bbb| 久久精品大屁股| 成人国产AV| 无码AV动漫| 无码视频一二三区| 996热| 91探花国产综合在线精品| 伊人综合大香蕉| 黄色AV电影| 亚洲第一网无码性色| 国产乱子伦一区二区三精品| 日本一区二区三区在线观看网站| av亚洲波多野结衣白嫩水多波| 91精产国品一二| 久久成人片| 蜜桃av无码一区二区三区| 国产大屌| 日韩黄色视频在线观看| 欧美日韩三级片| 91日逼视频| 免费视频久久| 欧美一级黃色A片免费看蜜桃熟了| 大地8免费高清视频观看大全| 美女天天操| 国产最新视频| 色视频在线观看免费| 在线观看av资源| 日本三级片免费| 日本三级网站| 欧美成人精品一区二区三区| 小泬BBBBBB免费看| 欧美一级爱| 香蕉在线观看| 亚洲午夜AV| 美女av日逼| 五月激情综合网| 日韩性爱AV| 亚洲成人视频免费在线观看| 亚洲天堂在线观看免费视频| 一级成人电影| 欧美性BBwBBwBBwHD| jizz亚洲| 中文视频在线观看| 国产精品久久久久久久久久久久久久 | 一区二区三区av| 欧美狠狠操| 日日碰日日摸| 免费日韩视频| 无码专区中文字幕| 成人自拍视频在线| 免费在线无码视频| 天天操天天操天天操天天| 欧美日逼小视频| 嫩操影院| 免费A级毛片在线播放不收费| 日韩熟妇无码中文字幕| 超碰在线网站| 无码中文AV| 91丨九色丨熟女泻火| 日本成人一区二区| 欧美色图视频在线观看| 日韩中文无码一级A片| 少妇三区| 国产美女精品久久AV爽| 黄色在线| 国产黄色免费网站| 牛牛Av| 国产91白丝在一线播放| 免费在线看a| 亚洲视频久久| 亚洲专区中文字幕| av在线天堂网| 黄色视频免费网站| 亚洲综人网| 大香蕉伊人视频在线观看| 97精品人人A片免费看| 亚洲一区色| 国产A片免费视频| 九色在线视频| 99re视频在线| 日韩欧美网站| 亚洲无码在| 黄色无码网站| 操B视频网站| 黄色A片网站| 欧美草逼视频| 江苏妇搡BBBB搡BBBB小说 | 色九月婷婷| 国产又黄又大又粗的视频| 黄色av免费看| 久久精品国产AV一区二区三区| 成人毛片18毛片女人| 99精品欲| 国产高清无码免费视频| 亚洲护士无码| 一道本激情视频| 人人操人人妻人人| 狠狠操天天操| 国产99久久| 高潮毛片| 欧美激情xxx| 色婷婷激情在线| 超碰97成人| 日本黄在线播放| 成年人毛片视频| 狠狠躁夜夜躁人人爽视频| 小小拗女BBw搡BBBB搡| 亚洲操操操操| 中文亚洲视频| 五月天丁香花| 国产成人精品av在线观看| 日韩特一级| 亚洲一区二区在线视频| 亚洲乱伦视频| 黄色一级免费| 亚洲黄色影院| 欧美777| 日本一级片在线播放| 亚洲一级二级片| 韩国成人免费无码免费视频| 91精品人妻一区二区三区四区| 天天狠狠操| 亚洲成人二区| 免费中文字幕AV| 豆花视频logo进入官网| 性无码一区二区三区| 婷婷五月天中文字幕| 日本东京热视频| 三上悠亚一区二区| www亚洲| 免费无码婬片aaaa| 九九精品在线视频| 亚洲Av无码成人专区擼| 国产一级片免费观看| 日韩人妻精品无码久久| 久久久久久久| 91在线看18| AV电影一区| 色老板在线观看视频| 欧美亚洲日韩成人| 91婷婷五月天| 免费一区二区三区四区| 五月丁香激情六月| 色情综合| 51AV在线| 日本特级黄A片免费观看| 另类在线| 中国熟女网站| 国产在线色视频| 成人免费操| 一区二区黄| 欧美色色色色色色| 精品国产AV| 国产精品色婷婷99久久精品| 日本中文不卡| 欧美亚洲综合在线| 91成人一区二区三区| 免费AV在线| 国产精品视频免费观看| 日本熟妇HD| 婷婷五月中文| 在线成人av| 亚洲色诱| 成人影片亚洲| 青青色综合| 无码成人AV| 免费在线观看黄色视频网站| 大香蕉777| 人人人人人妻| 停停六综合| www.777av| 午夜嘿嘿| 青青草社区视频| 特黄特色大片BBBB| 久久免费视频观看| 台湾省成人网站| 精品国产久久久久| 成人A片免费观看| H片在线免费观看| 欧美日韩国产不卡视频| 中文字幕乱码中文乱码图片| 91福利视频网站| 青青国产| 国精产品九九国精产品| 操夜夜操| 国产TS丝袜人妖系列视频| 国产精品后入| 天堂资源站| 久操青青| 国产免费黄色电影| 天天天天色| 又黄又湿的视频| 黄片免费观看网站| 亚州精品国产精品乱码不99勇敢 | 欧美群交在线| 激情另类| 毛茸茸BBBBBB毛茸茸| 成人在线精品视频| 九色自拍| 久久视频这里有精品| 激情五月婷婷丁香| 91人人| 欧美激情一区二区A片成人牛牛| 日皮在线观看| 大香蕉777| 豆花成人网站在线看| 亚洲色图另类| 老熟女17页一91| 大香蕉青娱乐| 国产欧美精品| 久久婷婷影院| 一区二区三区四区在线看| 中文字幕网站| 理论毛片| 91丝袜| 亚洲AVA| 成人视频18+在线观看| 日韩视频免费| 精品交换一区二区三区无码| 久久久久蜜桃| 免费操逼网站| 少妇中文字幕| 熟妇槡BBBB槡BBBB| 亚洲日韩网站| 男人在线天堂| 日韩视频免费观看高清完整版在线观 | 久久亚洲一区| 91亚洲国产成人精品一区 | 亚洲一区欧美二区gay| 韩国免费一级a一片在线播放| 亚洲玖玖爱| 91porn国产| 日韩无码动漫| 中文字幕人成人乱| 中国黄色A片| 欧美激情色色| 亚洲码无人客一区二区三区| 国产无码一区| 四川少BBB搡BBB爽爽爽| 日韩福利在线观看| 国产人成视频| 高清无码电影| 日韩v亚洲| 蜜桃91精品秘成人取精库| 日韩一a| 激情深爱五月| 韩国三级AV| 一区二区三区四区免费看| 久久精品大屁股| 日韩日日夜夜| 国产乱子伦日B视频| 亚洲一卡二卡三卡四卡免| 日韩视频一区二区| 亚洲无码中文视频| 青青草精品| 97视频网站| 日本www色| 国产在线一区二区三区四区| 午夜看黄| 好逼天天有| 99热8| 日韩中文字幕在线人成网站| 久久AV电影| www.三级片| 国产探花视频在线免费观看 | 夜色88V精品国产亚洲| 精品人妻少妇| 亚洲视频,中文字幕| 日韩一级在线| 一级A片亲子乱中文| 日本在线一级片| 婷婷爱五月| 五月丁香在线播放| 内射无码专区久久亚洲| 欧美AAAAAAAA| 国产成人午夜| a片一级片| 亚洲AV官方网站| 北条麻妃中文字幕在线观看| 四季AV一区二区凹凸懂色桃花| 强伦轩一区二区三区四区| 91麻豆国产在线| 亚洲三级片视频| 日韩精品无码一区二区三区| 国产精品视频播放| 国产午夜精品一区二区| 天天日很很日| 狠狠操狠狠撸| 俺来也俺去www色情网| 88av在线| 无码免费毛片一区二区三区古代| 九九九成人视频| 欧美一级特黄A片免费看| 丁香六月婷| 麻豆视频在线观看| 欧美一级生活片| 欧美国产精品| 亚洲最大福利视频| 久久国产偷拍| 97国产在线视频| 俺也来www俺也色com| 欧美亚洲色色网视频| 日本親子亂子倫XXXX50路 | 中文字幕无码乱伦| 这里都是精品| 99er在线| 日本色情视频网站| 免费看无码一级A片在线播放| 国产精品综合| 欧美大香蕉伊人网| 亚洲小说区图片区| 91美女在线视频| 日韩AAA在线| 成人性爱av| 九色PORNY丨自拍蝌蚪| 成人性生活一级片| 精品乱子伦一区二区三区免费播成 | 污污污污污www网站免费观看| 久久黄色视频免费看| BBW老熟女BBw| 激情无码一区二区三区| 亚洲无码黄色电影| 强伦轩人妻一区二区三区四区| 亚洲中文字幕无码在线观看| 国产中文字幕在线| 大黄网站在线观看| 在线视频内射| 三级片日本在线| 人妻体内射精一区二区| 日日摸夜夜| 插菊花综合| 亚洲无码一级片| 手机在线毛片| 内射自拍| 国产h视频在线观看| 99天堂网| 婷婷色777777| 日韩一级在线播放| 少妇精品久久久久久久久久| 狠狠香蕉| 五月丁香影院| 四川BBBBBB搡BBBBB| 99热高清| 新亚洲天堂男子Av-| 蜜桃BBwBBWBBwBBw| 日韩一区二区三区精品| 先锋影音亚洲AV每日资源网站 | 成人亚洲AV日韩AV无码| 99久久伊人| 狼友视频免费| 男女日逼视频| 中文字幕久久人妻无码精品蜜桃| 三级毛片在线| 高清无码中文字| 亚洲一区av| 香蕉视频亚洲| 在线免费观看a| 中文字幕免费中文| 激情毛片| 国产在线中文字幕| 7799综合| 手机看片欧美+日韩+国产| 美女大吊,网站视频| 午夜性爱网| 91成人无码看片在线观看网址| 黄色一级片在线| 大香蕉伊人青青草| 国产视频久久| 自拍偷拍无码| 狠狠干五月天| 黄色电影大香蕉| 拍拍拍免费视频| 日本A片一级| 美女天天操| 国产成人av在线| 色五月婷婷基地| A片在线观看网站| 日韩精品免费一区二区在线观看| 人妻少妇av中文字幕乱码牛牛| 山东wBBBB搡wBBBB| www.99视频| 久草毛片| 日韩一级片网站| 成人综合大香蕉| 日本三级AAA三级AAAA97| 91午夜福利| 中文在线字幕电视剧免费平台 | 人人摸人人操人人射| 久久五月亭亭| 婷婷精品秘进入| 日韩精品一区二区三区四在线播放| 97超碰免费| 色五月婷婷在线| 12一15女人A片毛| 大香蕉在线啪啪| 国产精品V日韩精品V在线观看| 青娱乐国产精品一区二区| JlZZJLZZJlZZ亚洲女人17| 亚洲性爱视频在线观看| 69国产精品| 老太色HD色老太HD| 波多野结衣视频一区| 高清无码专区| 免费看黄色视频的网站| 久久无码专区| 高清无码视频免费看| 狠狠se| 蜜桃无码一区| 久久网一区| 日韩一a| 午夜成人福利在线观看| 约操少妇| 中文字幕免费在线看一区七区| 在线观看中文字幕| 国产1区| 久久久黄色| 妹子干综合| 广东BBW搡BBBB搡| A片免费网站| 精精品人妻一区二区三区| h片在线观看免费| 97人人爽人人爽人人人| 久久久亚洲熟妇熟女| 韩日无码视频| 亚洲日韩中字| 尤物网在线| 日韩中文字幕不卡| 蜜桃BBwBBWBBwBBw| 99九九久久| 人妻一区| 日韩欧美爱爱| AV在线无码| 欧美国产综合| 麻豆视频在线观看| 嫩BBB槡BBBB槡BBB3i| 五月天婷婷激情| 国产乱伦网站| 亚洲口味重一级黄片| 午夜精品久久久久久不卡8050| 少妇无码中文| 欧美激情一区| 无码一区二区三| www.日韩| 香蕉操逼小视频| 亚洲中文无码第一页| AA黄色电影| 麻豆一级片| 亚洲福利视频电影精| www.爆操| 超碰二区| 欧美日韩视频一区二区| 午夜福利在线播放| 九九热视频在线| 天天干天天干天| 男女视频91| 午夜av在线观看| 91在线播放视频| 秋霞午夜福利|