精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于 MongoDB 的智能家居數據中臺:從存儲到分析的全鏈路實現

數據庫 MongoDB
在物聯網技術滲透家居場景的今天,溫度、濕度、空氣質量等高頻異構數據的處理成為智能家居系統的核心挑戰。MongoDB作為文檔型NoSQL數據庫,憑借動態schema、高吞吐、分布式擴展等特性,成為解決這類問題的優選方案。

引言

在物聯網技術滲透家居場景的今天,溫度、濕度、空氣質量等高頻異構數據的處理成為智能家居系統的核心挑戰。

MongoDB作為文檔型NoSQL數據庫,憑借動態schema、高吞吐、分布式擴展等特性,成為解決這類問題的優選方案。

架構設計:智能家居數據中臺的核心鏈路

圖片圖片

智能家居數據中臺的核心目標是實現數據采集 - 存儲 - 分析 - 應用的閉環,整體架構分為四層,各層職責清晰且協同聯動:

數據接入層:多源設備的統一入口

  • 支持溫濕度傳感器、光照檢測儀、空氣質量監測設備等多類型終端接入,通過 HTTP 接口接收異構數據。
  • 提供數據格式校驗與補全機制,自動填充采集時間戳,確保數據完整性。
  • 適配高頻數據上報場景,支持每秒萬級數據的并發接收與轉發。

數據存儲層:MongoDB 的優化配置

  • 采用集合拆分策略,將環境數據與設備配置分離存儲,分別對應environment_data和device_config集合。
  • 針對查詢場景創建專項索引:為collectTime字段配置TTL索引實現數據自動過期,為deviceId、room字段創建普通索引提升查詢效率。
  • 支持單機部署與分片集群部署無縫切換,滿足從家庭到社區級的規模擴展需求。

數據處理層:智能分析與業務聯動

  • 實現閾值校驗引擎,基于設備配置自動判斷環境指標是否超標,觸發多級報警機制。
  • 提供數據聚合分析能力,支持按時間維度(小時 / 日 / 周)、空間維度(房間 / 設備)統計均值、極值等指標。
  • 內置數據清洗邏輯,過濾異常值與重復數據,保障分析結果準確性。

應用服務層:面向多場景的接口封裝

  • 提供數據上報、查詢、配置管理三類核心接口,支持前端可視化、設備聯動等上層應用調用。
  • 接口設計遵循RESTful規范,支持時間范圍、設備ID、房間名稱等多條件組合查詢。
  • 統一返回格式與錯誤處理機制,降低前后端協作成本。

技術實現

連接池配置

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/smart_home_db
      database: smart_home_db
      connection-timeout: 30000ms
      read-timeout: 10000ms
      write-timeout: 10000ms
      max-connection-pool-size: 50
      min-connection-pool-size: 10

數據模型

@Data
@Document(collection = "environment_data")
public class EnvironmentData {
    @Id
    private String id;

    @NotBlank(message = "設備ID不能為空")
    private String deviceId;

    @NotBlank(message = "房間名稱不能為空")
    private String room;

    @NotNull(message = "環境指標不能為空")
    private Map<String, Double> metrics; // 支持temperature、humidity、pm25、co2、illumination等

    @Indexed(expireAfterSeconds = 2592000) // 30天自動過期
    private Instant collectTime;

    private String dataStatus; // 數據狀態:NORMAL(正常)、ABNORMAL(異常)、PENDING(待校驗)
}

業務邏輯

@Service
@Slf4j
public class EnvironmentDataServiceImpl implements EnvironmentDataService {

    @Autowired
    private EnvironmentDataRepository dataRepository;

    @Autowired
    private DeviceConfigService configService;

    @Autowired
    private AlertService alertService;

    // 時間格式化器(用于圖表數據)
    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter
            .ofPattern("yyyy-MM-dd HH:mm")
            .withZone(ZoneId.systemDefault());

    @Override
    @Transactional
    public void processAndSaveData(EnvironmentData data) {
        // 1. 補全采集時間(未傳則用當前時間)
        if (data.getCollectTime() == null) {
            data.setCollectTime(Instant.now());
        }

        // 2. 校驗指標并標記數據狀態
        String dataStatus = getMetricsStatus(data);
        data.setDataStatus(dataStatus);

        // 3. 保存數據
        dataRepository.save(data);
        log.info("環境數據保存成功:設備ID={}, 房間={}, 狀態={}",
                data.getDeviceId(), data.getRoom(), dataStatus);

        // 4. 異常數據觸發報警
        if ("ABNORMAL".equals(dataStatus)) {
            Optional<DeviceConfig> configOpt = configService.getConfigByDeviceId(data.getDeviceId());
            configOpt.ifPresent(config -> alertService.triggerAlert(data, config));
        }
    }

    @Override
    public List<EnvironmentData> queryAbnormalData(String deviceId, Instant startTime, Instant endTime) {
        // 設備ID為空則查詢所有設備的異常數據
        if (StringUtils.isEmpty(deviceId)) {
            // 此處簡化實現:查詢所有房間的異常數據(實際可擴展MongoRepository方法)
            return dataRepository.findByRoomAndDataStatusAndCollectTimeBetween(
                    "", "ABNORMAL", startTime, endTime);
        }
        // 按設備ID+時間范圍+異常狀態查詢
        return dataRepository.findByDeviceIdAndCollectTimeBetween(deviceId, startTime, endTime).stream()
                .filter(data -> "ABNORMAL".equals(data.getDataStatus()))
                .collect(Collectors.toList());
    }

    @Override
    public List<ChartDataDTO> getChartData(String room, String metricType, Instant startTime, Instant endTime) {
        // 1. 查詢指定房間、時間范圍的數據
        List<EnvironmentData> dataList = dataRepository.findByRoomAndDataStatusAndCollectTimeBetween(
                room, "NORMAL", startTime, endTime);

        // 2. 轉換為圖表所需格式(時間字符串+指標值)
        return dataList.stream()
                .map(data -> {
                    ChartDataDTO dto = new ChartDataDTO();
                    // 格式化時間
                    dto.setTime(DATE_TIME_FORMATTER.format(data.getCollectTime()));
                    // 獲取指定指標值(無則設為0.0)
                    Double metricValue = data.getMetrics().getOrDefault(metricType, 0.0);
                    dto.setValue(metricValue);
                    return dto;
                })
                .collect(Collectors.toList());
    }

    /**
     * 校驗指標是否超標,返回數據狀態
     */
    private String getMetricsStatus(EnvironmentData data) {
        Optional<DeviceConfig> configOpt = configService.getConfigByDeviceId(data.getDeviceId());
        // 無配置則設為“待校驗”
        if (!configOpt.isPresent()) {
            return"PENDING";
        }

        DeviceConfig config = configOpt.get();
        Map<String, Double> thresholds = config.getThresholdConfig();
        Map<String, Double> metrics = data.getMetrics();

        // 遍歷指標,判斷是否有超標項
        for (Map.Entry<String, Double> metricEntry : metrics.entrySet()) {
            String metricKey = metricEntry.getKey();
            Double metricValue = metricEntry.getValue();
            Double threshold = thresholds.get(metricKey);

            if (threshold != null && metricValue > threshold) {
                log.warn("指標超標:設備ID={}, 指標={}, 當前值={}, 閾值={}",
                        data.getDeviceId(), metricKey, metricValue, threshold);
                return"ABNORMAL";
            }
        }
        return"NORMAL";
    }
}

聚合分析工具類

@Component
public class DataAggregationUtil {

    @Autowired
    private MongoTemplate mongoTemplate;

    // 按時間區間統計房間指標均值
    public Map<String, Object> calculateRoomMetricAvg(String room, String metricType, Instant startTime, Instant endTime) {
        Aggregation aggregation = Aggregation.newAggregation(
                Aggregation.match(Criteria.where("room").is(room)
                        .and("collectTime").gte(startTime).lte(endTime)),
                Aggregation.group("room")
                        .avg("metrics." + metricType).as("averageValue"),
                Aggregation.project("averageValue").and("room").previousOperation()
        );

        AggregationResults<MetricAvgDTO> results = mongoTemplate.aggregate(
                aggregation, "environment_data", MetricAvgDTO.class);

        MetricAvgDTO result = results.getUniqueMappedResult();
        return result != null ? Map.of("room", result.getRoom(), "averageValue", result.getAverageValue()) : Map.of();
    }
}

@Data
class MetricAvgDTO {
    private String room;
    private Double averageValue;
}

數據查詢接口

@RestController
@RequestMapping("/api/smarthome/data")
@Validated
@Slf4j
public class DataController {

    @Autowired
    private EnvironmentDataService dataService;

    @Autowired
    private DataAggregationUtil aggregationUtil;

    // 上報環境數據
    @PostMapping("/report")
    public ResponseEntity<String> reportEnvironmentData(@Valid @RequestBody EnvironmentData data) {
        dataService.processAndSaveData(data);
        return ResponseEntity.ok("數據上報成功");
    }

    // 查詢異常數據
    @GetMapping("/abnormal")
    public ResponseEntity<List<EnvironmentData>> getAbnormalData(
            @RequestParam(required = false) String deviceId,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant startTime,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant endTime) {
        List<EnvironmentData> abnormalData = dataService.queryAbnormalData(deviceId, startTime, endTime);
        return ResponseEntity.ok(abnormalData);
    }

    // 統計房間指標平均值
    @GetMapping("/room/metric/avg")
    public ResponseEntity<Map<String, Object>> getRoomMetricAvg(
            @RequestParam @NotBlank String room,
            @RequestParam @NotBlank String metricType,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant startTime,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant endTime) {
        Map<String, Object> avgData = aggregationUtil.calculateRoomMetricAvg(room, metricType, startTime, endTime);
        return ResponseEntity.ok(avgData);
    }

    // 獲取圖表可視化數據
    @GetMapping("/chart")
    public ResponseEntity<List<ChartDataDTO>> getChartData(
            @RequestParam @NotBlank String room,
            @RequestParam @NotBlank String metricType,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant startTime,
            @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Instant endTime) {
        List<ChartDataDTO> chartData = dataService.getChartData(room, metricType, startTime, endTime);
        return ResponseEntity.ok(chartData);
    }
}

異常處理機制

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(MongoException.class)
    public ResponseEntity<String> handleMongoException(MongoException e) {
        log.error("MongoDB操作異常:", e);
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                .body("數據處理失敗:" + e.getMessage());
    }

    @ExceptionHandler(ConstraintViolationException.class)
    public ResponseEntity<String> handleValidationException(ConstraintViolationException e) {
        String errorMsg = e.getConstraintViolations().stream()
                .map(ConstraintViolation::getMessage)
                .collect(Collectors.joining(";"));
        return ResponseEntity.badRequest().body("參數校驗失敗:" + errorMsg);
    }
}

多渠道報警實現

@Service
public class AlertService {

    @Autowired
    private JavaMailSender mailSender;

    // 郵件報警
    public void sendEmailAlert(EnvironmentData data, DeviceConfig config) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo("user@example.com");
        message.setSubject("智能家居環境異常報警");
        message.setText(String.format("設備%s(%s)%s指標超標:當前值=%.2f,閾值=%.2f",
                data.getDeviceId(), data.getRoom(),
                getOverThresholdMetric(data.getMetrics(), config.getThresholdConfig()),
                getOverThresholdValue(data.getMetrics(), config.getThresholdConfig()),
                getThreshold(data.getMetrics(), config.getThresholdConfig())));
        mailSender.send(message);
    }

    // APP推送報警(對接極光推送等第三方服務)
    public void sendAppAlert(EnvironmentData data, DeviceConfig config) {
        // 第三方推送API調用邏輯
    }
}

驗證

圖片圖片

圖片

責任編輯:武曉燕 來源: 一安未來
相關推薦

2022-07-30 23:38:12

云計算邊緣計算智能家居

2022-03-21 15:42:36

智能家居物聯網MQTT

2022-07-29 10:14:26

云到邊緣智能家居

2019-12-24 19:31:27

智能家居物聯網技術

2015-09-28 09:37:49

2021-01-15 15:36:32

人工智能智能家居機器人

2024-10-23 10:13:29

數據中臺數據飛輪

2025-07-07 08:27:22

2018-09-19 16:20:17

智能系統開源

2019-04-24 12:22:05

2021-12-13 22:50:16

物聯網智能家居數據

2023-05-16 09:53:18

ChatGPT人工智能

2021-03-23 14:37:24

可持續發展智能家居物聯網

2013-07-15 13:28:23

智能家居智能

2025-05-26 08:24:01

2023-01-30 22:34:44

Node.js前端

2023-08-02 10:50:09

智能家居物聯網

2014-06-16 16:00:09

2023-03-01 10:08:52

2023-10-25 16:33:59

智能家居物聯網
點贊
收藏

51CTO技術棧公眾號

法国空姐电影在线观看| 五月丁香综合缴情六月小说| 一区二区三区www污污污网站| 日本久久精品| 欧美一区二区国产| 17c丨国产丨精品视频| 特级丰满少妇一级aaaa爱毛片| 午夜亚洲视频| 精品久久久999| 日韩aaaaa| 欧美aaa级| 亚洲国产一区二区三区青草影视| 奇米888一区二区三区| 国产孕妇孕交大片孕| 亚洲免费观看| 日韩中文字幕视频在线| 中国xxxx性xxxx产国| av成人免费看| 午夜av电影一区| 国产高清免费在线| 涩涩视频在线观看免费| 激情五月激情综合网| 韩国三级日本三级少妇99| 五月婷婷婷婷婷| 9l视频自拍九色9l视频成人| 欧美三级视频在线| 欧美日韩一道本| 最新日本在线观看| 国产欧美日韩另类视频免费观看| 91网站在线免费观看| 久久久黄色大片| 国一区二区在线观看| 色妞一区二区三区| 最新中文字幕视频| 国产精品tv| 7777精品伊人久久久大香线蕉经典版下载 | 欧美精品一区男女天堂| 日韩一级片播放| 17videosex性欧美| 国产精品人成在线观看免费| 久久综合毛片| 色一情一乱一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩成人综合| 男女啪啪网站视频| 香蕉成人av| 欧美日韩中文在线观看| 日韩精品在线中文字幕| 呦呦在线视频| 亚洲摸摸操操av| 中文字幕免费在线不卡| 触手亚洲一区二区三区| 26uuu欧美| 噜噜噜噜噜久久久久久91| 国产 日韩 欧美 综合| 国产精品一二三区在线| 91久久久在线| 国产精品一品二区三区的使用体验| 青青草成人在线观看| 国产精品ⅴa在线观看h| 无码人妻精品一区二区蜜桃色欲| 国产一区二区三区的电影 | 春色校园综合激情亚洲| 亚洲午夜电影网| 97中文字幕在线| 99色在线观看| 精品福利樱桃av导航| 青娱乐自拍偷拍| 亚洲小少妇裸体bbw| 福利精品视频在线| 国产一区亚洲二区三区| 韩日精品一区二区| 欧美亚洲国产一区二区三区va| 熟妇人妻无乱码中文字幕真矢织江| 日韩三级影视| 欧美日韩精品一区二区在线播放| 伊人色在线观看| 91成人小视频| 亚洲精品在线一区二区| 漂亮人妻被黑人久久精品| 香蕉久久精品日日躁夜夜躁| 亚洲人成五月天| www成人啪啪18软件| 久久久久国产| 欧美精品久久久久久久久久| 西西44rtwww国产精品| 三级欧美在线一区| 国产日韩精品在线播放| 国产高清在线观看视频| 久久综合久久鬼色中文字| 日韩福利影院| 色婷婷av在线| 色婷婷综合久久久久中文| 中文字幕国产免费| 99re91这里只有精品| 亚洲国产精品人人爽夜夜爽| 日韩精品无码一区二区三区久久久 | 91精品国产一区二区三区香蕉| 337p日本欧洲亚洲大胆张筱雨| 亲子伦视频一区二区三区| 中文字幕无线精品亚洲乱码一区 | 日韩专区一区二区| 中文字幕一区二区三区在线播放| 成人国产在线看| 校园春色亚洲色图| 日韩一区二区三| 亚洲第一成人网站| 亚欧美无遮挡hd高清在线视频| 久久久爽爽爽美女图片| 少妇一级淫片日本| 成人精品视频.| 亚洲精品9999| av漫画网站在线观看| 欧美日韩高清一区二区三区| 扒开伸进免费视频| 久久人人88| 欧美野外猛男的大粗鳮| 国产片在线播放| 久久精品夜夜夜夜久久| 国产玉足脚交久久欧美| 日本午夜免费一区二区| 亚洲欧洲自拍偷拍| 久久婷婷一区二区| 麻豆精品国产91久久久久久| 久久久精品国产一区二区三区| fc2ppv国产精品久久| 在线观看不卡视频| 好吊一区二区三区视频| 自拍偷拍欧美专区| 国产精品自产拍高潮在线观看| 亚洲av成人精品毛片| 亚洲激情第一区| 天天操狠狠操夜夜操| 国产日产精品一区二区三区四区的观看方式 | 在线免费观看黄| 在线亚洲一区观看| 噜噜噜在线视频| 亚洲精品少妇| 国产99在线免费| 99福利在线| 欧美乱妇23p| 亚洲精品国产精品国自| 久久久久一区| 久久精品ww人人做人人爽| 黑人玩欧美人三根一起进| 91精品久久久久久久99蜜桃 | 禁果av一区二区三区| 2020久久国产精品| 污视频在线免费观看| 一区二区免费看| 久久久久亚洲av无码麻豆| 97精品97| 川上优av一区二区线观看| 在线看的av网站| 欧美日本国产一区| 日韩在线观看免| 毛片av中文字幕一区二区| 色女孩综合网| 国产福利亚洲| 久久精品国产一区| 国产福利第一视频| 亚洲自拍偷拍麻豆| 中国xxxx性xxxx产国| 夜夜嗨一区二区| 欧美不卡1区2区3区| 欧美成人影院| 最新69国产成人精品视频免费| 中文字幕av资源| 1024成人网| 久久久久亚洲av片无码v| 小处雏高清一区二区三区| 亚洲自拍偷拍一区| heyzo一区| 亚洲欧美制服综合另类| 亚洲 欧美 中文字幕| 国产精品久久久久久久久图文区| www午夜视频| 国产精品jizz在线观看美国| 精品国产一区二区三区麻豆免费观看完整版| 爱情岛论坛亚洲品质自拍视频网站| 日韩黄在线观看| 99re热视频| 亚洲欧洲综合另类| 成年人小视频在线观看| 久久综合婷婷| 日韩欧美一级在线| 欧美日韩看看2015永久免费 | 中文字幕手机在线视频| 亚洲欧洲韩国日本视频| 国产一精品一aⅴ一免费| 在线亚洲激情| 在线看视频不卡| 高潮久久久久久久久久久久久久 | 在线观看欧美成人| 国产又粗又大又爽视频| 亚洲第一av色| 久久中文字幕精品| 国产成人av影院| 成年人在线看片| 欧美精品99| 日本在线免费观看一区| 精品国产亚洲日本| 日韩免费高清在线观看| 大片免费在线看视频| 国产视频精品一区二区三区| 国产精品视频久久久久久| 五月婷婷另类国产| 国产稀缺精品盗摄盗拍| 久久综合色婷婷| 少妇极品熟妇人妻无码| 免费久久精品视频| 日韩中文字幕在线视频观看| 亚洲免费二区| 青娱乐国产91| 猫咪成人在线观看| 成人午夜高潮视频| 国产一区一一区高清不卡| 久久久噜噜噜久久| 成人video亚洲精品| 亚洲欧美在线第一页| 日韩一级免费毛片| 欧美一区二区视频在线观看 | 美国一级片在线观看| 91美女福利视频| 免费观看污网站| 国产精品一级片| 日本精品一区在线| 日韩av中文字幕一区二区| 欧美变态另类刺激| 国产一区视频在线观看免费| 91社在线播放| 成人同人动漫免费观看| 欧美二区在线| 丝袜久久网站| 成人三级在线| 日韩精品一区二区三区中文| 成人黄色免费片| 欧美日韩免费电影| 国产精品久久久久久久久久尿| 亚洲一级少妇| 欧美性资源免费| 伊人网在线播放| 欧美一级淫片播放口| 激情国产在线| 69av在线视频| 自拍一区在线观看| 欧美一区二区三区图| 欧美另类老肥妇| 欧美综合第一页| 亚洲校园激情春色| 奇米4444一区二区三区| 乱馆动漫1~6集在线观看| 97av在线播放| 日韩电影免费看| 日韩美女在线看| 日韩漫画puputoon| 国产日韩中文在线| 国产精品久久久久久av公交车| 91精品免费视频| 天堂va欧美ⅴa亚洲va一国产| 成人3d动漫一区二区三区91| 99亚洲乱人伦aⅴ精品| 国产一区二区自拍| 天天久久夜夜| 亚洲精品久久久久久一区二区| 欧美日韩激情在线一区二区三区| 亚洲a∨一区二区三区| 久久国产电影| 欧美一级特黄aaaaaa在线看片| 中文字幕一区二区精品区| 韩国无码av片在线观看网站| 亚洲清纯自拍| 热久久精品国产| 久久av中文字幕片| 极品白嫩的小少妇| 91色在线porny| 91视频免费看片| 亚洲影院久久精品| 日本视频在线观看免费| 欧美日韩中文字幕一区二区| 国产三级午夜理伦三级| 精品国产不卡一区二区三区| 男男激情在线| 日韩中文字幕网站| 99在线视频影院| 国产精品盗摄久久久| 久久国产精品免费一区二区三区| 国产三区二区一区久久| 精品国产中文字幕第一页| 偷拍盗摄高潮叫床对白清晰| 激情综合视频| 亚洲高清在线免费观看| 国产激情视频一区二区三区欧美 | 国产a级一级片| 国内国产精品久久| 香港三级日本三级| 中文字幕一区在线观看视频| 国产一级特黄视频| 欧美三电影在线| 欧美一区二区公司| 日韩有码片在线观看| 国产自产自拍视频在线观看| 国产裸体写真av一区二区| 国产精品毛片av| 亚洲 欧洲 日韩| 亚洲专区在线| 韩国三级在线看| 国产精品午夜电影| 天天操天天摸天天干| 欧美一区二区三区在线| 美国成人毛片| 国内精品久久久久久久久| 国产精品久久久久久久久免费高清 | 一级全黄裸体免费视频| 日韩av在线免费看| 影音先锋男人资源在线| 国产精品欧美日韩一区二区| 久久视频在线观看| 2025韩国大尺度电影| 久久久国产亚洲精品| 中文字幕99页| 亚洲精品美腿丝袜| 中文字幕欧美人妻精品| 亚洲美女av网站| 9999热视频在线观看| 成人h视频在线观看| 久久综合88| 在线观看av网页| 国产日韩欧美制服另类| 99久在线精品99re8热| 日韩免费观看高清完整版在线观看| 888av在线| 国产精品色婷婷视频| 国产伦一区二区三区| 欧美日韩在线视频一区二区三区| 国产91色综合久久免费分享| 欧美三级黄色大片| 在线成人免费视频| 老司机福利在线视频| 国产综合视频在线观看| 日韩国产专区| www.com操| 国产精品福利一区| 亚洲网站免费观看| 中文字幕亚洲情99在线| av一区在线| 色之综合天天综合色天天棕色| 久久一日本道色综合久久| 日本一区二区三区网站| 黑人极品videos精品欧美裸| 色视频精品视频在线观看| 欧美又大又硬又粗bbbbb| 色婷婷综合久久久久久| 欧美日韩亚洲一| 久久―日本道色综合久久| 欧美成人一区二区三区四区| 亚洲天堂av在线免费| 欧美影视资讯| 亚洲一区二区四区| 国产在线一区观看| 丰满少妇高潮久久三区| 欧美本精品男人aⅴ天堂| 国产盗摄在线视频网站| 精品国产一区二区三区麻豆免费观看完整版 | 91视频你懂的| av图片在线观看| 中文字幕在线观看日韩| 先锋影音网一区二区| 欧美做受777cos| 不卡的av电影| www.av88| 精品中文字幕在线2019| 日本天堂一区| 777一区二区| 亚洲国产日产av| 国产最新视频在线| 国产在线视频欧美| 国产精品大片免费观看| 中文字幕一区二区人妻电影丶| 日本精品一区二区三区四区的功能| chinese偷拍一区二区三区| 成人午夜激情网| 亚洲精品乱码| 精品亚洲aⅴ无码一区二区三区| 91精品中文字幕一区二区三区| 欧美人与性动交α欧美精品济南到 | 色综合男人天堂| 天堂99x99es久久精品免费| 五月天婷婷激情视频| 亚洲免费在线观看| 青青青草网站免费视频在线观看| 国产女人精品视频| 亚洲乱码视频| 日本美女黄色一级片| 亚洲国产欧美一区二区三区同亚洲 | 91视频福利网| 岛国av一区二区三区| 欧美性videos| 久久天天狠狠| 国产精选一区二区三区|