精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久久精品成人| 男人舔女人下面高潮视频| 亚洲精品久久久狠狠狠爱 | 精品日韩一区二区三区| 国产一二三在线视频| 男女网站在线观看| 久久国产夜色精品鲁鲁99| 欧美国产日韩在线| 亚洲色图第四色| 91精品国产自产精品男人的天堂| 色综合天天视频在线观看| 宅男在线精品国产免费观看| 天天操天天舔天天干| 美女视频网站黄色亚洲| 亚州国产精品久久久| 人妻无码一区二区三区免费| 国产精品17p| 欧美日韩视频一区二区| 日本在线xxx| 女女色综合影院| 久久亚洲捆绑美女| 97人人做人人人难人人做| 日韩不卡高清视频| 最新国产拍偷乱拍精品| 日韩有码在线电影| 欧亚乱熟女一区二区在线| 免费视频观看成人| 日本女优在线视频一区二区| 欧美激情在线观看视频| 韩国三级丰满少妇高潮| 欧美天堂视频| 精品久久久久久国产91| 在线观看三级网站| 2017亚洲天堂1024| 成人av网站在线| 999热视频| 国产精品无码在线播放| 免费人成黄页网站在线一区二区| 国模精品系列视频| 久久久久成人精品无码| 香蕉视频国产精品| 中文字幕一精品亚洲无线一区| 久久午夜夜伦鲁鲁片| 日韩一区网站| 91精品国产综合久久久久久久久久| 成年人观看网站| 国产美女精品写真福利视频| 亚洲伊人色欲综合网| 一级一片免费播放| 麻豆传媒在线观看| 国产精品第一页第二页第三页| 日本一区免费| 邻居大乳一区二区三区| 久久婷婷一区二区三区| 久久国产日韩欧美| 手机福利小视频在线播放| 成人爱爱电影网址| 国产精品亚洲综合| 丰满人妻一区二区三区免费| 国产成人精品一区二区三区四区| 91视频99| 免费看日韩av| 成人中文字幕合集| 精品麻豆av| 男人av在线| 国产视频不卡一区| 午夜一区二区三视频在线观看| 91露出在线| 亚洲欧美另类小说| 欧美日韩激情四射| av中文在线资源| 欧美日韩亚洲高清| 久久九九国产视频| 99精品国产九九国产精品| 7777精品伊人久久久大香线蕉| 一级做a免费视频| 日韩精品一区二区三区中文在线| 337p日本欧洲亚洲大胆精品| 日本护士做爰视频| 红桃成人av在线播放| 中文日韩在线视频| 免费网站看av| 国产亚洲毛片在线| 国产精品一区=区| 亚洲第一页在线观看| 91原创在线视频| 婷婷精品国产一区二区三区日韩| 国产精品刘玥久久一区| 亚洲高清视频的网址| 精品国产免费av| 国产精品久久久久久久久免费高清| 欧美一区二区精品在线| 中文成人无字幕乱码精品区| 欧美自拍偷拍| 欧美国产激情18| 91午夜精品亚洲一区二区三区| 黑人巨大精品欧美一区| 国产一区视频观看| 在线观看免费高清完整| 午夜精品影院在线观看| 无尽裸体动漫2d在线观看| 国产无遮挡裸体免费久久| 中文字幕精品久久久久| 伊人365影院| 美腿丝袜亚洲一区| 久99久在线| 黄色网址视频在线观看| 日韩欧美有码在线| 四虎1515hh.com| 精品国产乱码久久久| 欧美精品久久久久久久久| 精品一区二三区| 不卡的av在线播放| 亚洲国产另类久久久精品极度| 超碰在线公开| 日韩欧美高清在线| 91香蕉国产视频| 久久福利影视| 国产精品久久久久久久久婷婷| 三区四区在线视频| 色香蕉久久蜜桃| 亚洲啪av永久无码精品放毛片| 视频在线不卡免费观看| 亚洲视频日韩精品| 精品无码免费视频| 国产在线精品一区二区不卡了 | 日韩欧美国产片| 香蕉久久夜色精品国产更新时间| 欧美日韩不卡合集视频| 中文字字幕在线观看| 久久人人97超碰com| 欧美精品一区二区三区三州| 日韩精品一区二区三区免费视频| 色伦专区97中文字幕| 无码人妻一区二区三区线| 97国产一区二区| 无码人妻少妇伦在线电影| 精品视频在线一区| 欧美成人免费va影院高清| 中文字幕在线网址| 欧美国产乱子伦| 99草草国产熟女视频在线| 美国成人xxx| 97色在线视频观看| 免费av网站观看| 亚洲国产一区二区视频| 欧美午夜精品一区二区| 国产一区二区三区四区三区四| 91精品黄色| 欧美一卡二卡| 精品国内片67194| 九九九免费视频| 国产白丝精品91爽爽久久| av中文字幕av| 亚洲国产欧美国产第一区| 麻豆成人在线看| 精品人妻少妇嫩草av无码专区| 亚洲精品国产第一综合99久久| 古装做爰无遮挡三级聊斋艳谭| 亚洲蜜桃视频| 成人91免费视频| wwww在线观看免费视频| 亚洲国产精品女人久久久| 精品欧美一区二区三区免费观看| 97久久超碰国产精品| 毛片在线视频播放| 国产不卡一二三区| 国产久一一精品| 牛牛电影国产一区二区| 亚洲精品大尺度| 夜夜爽妓女8888视频免费观看| 久久精品一区二区三区四区| 正在播放久久| 国内不卡的一区二区三区中文字幕| 蜜臀久久99精品久久久久久宅男| 精品人妻少妇嫩草av无码专区| 五月婷婷久久丁香| 精品无码人妻一区二区免费蜜桃| 免费日本视频一区| 久久亚洲a v| 在线亚洲a色| 91麻豆国产精品| 91jq激情在线观看| 在线播放国产精品| www.热久久| 色天天综合色天天久久| 538精品在线视频| av一区二区久久| 久久99999| 欧美视频不卡| 欧美伦理一区二区| 国产高清日韩| 国产极品精品在线观看| av在线导航| 亚洲欧美日韩精品久久| 国产偷拍一区二区| 色菇凉天天综合网| 久草网视频在线观看| 亚洲国产成人自拍| 精品熟女一区二区三区| 免费欧美在线视频| 欧美网站免费观看| 欧美+日本+国产+在线a∨观看| 六十路精品视频| 一区二区三区免费在线看| 国产精品久久久久久搜索| rebdb初裸写真在线观看| 深夜福利国产精品| 四虎在线视频| 日韩欧美亚洲一区二区| 成人黄色三级视频| 精品国产福利视频| 免费国产羞羞网站美图| 国产视频不卡一区| 日本一区二区在线免费观看| 久久丁香综合五月国产三级网站| 国产一区二区网| 亚洲一区 二区 三区| 婷婷五月色综合| 西野翔中文久久精品字幕| 亚洲资源在线看| 欧美天堂一区二区| 国产成人在线视频| 国模套图日韩精品一区二区| 韩国福利视频一区| 伊人电影在线观看| 久久韩剧网电视剧| 成人亚洲性情网站www在线观看| 亚洲精品国精品久久99热| www黄色在线观看| 欧美一区二区免费| 国产精品久久免费| 欧美日韩高清一区| 亚洲图片在线播放| 在线观看日韩电影| 成年人av网站| 色八戒一区二区三区| 潘金莲一级淫片aaaaaa播放| 精品久久久中文| 日韩免费一级片| 亚洲成av人片一区二区| 九九视频在线观看| 亚洲精品免费看| 国产这里有精品| 亚洲自拍偷拍图区| 国产一级在线观看视频| 亚洲午夜久久久久久久久久久| 国产探花在线免费观看| 亚洲精品乱码久久久久久黑人| 中日韩一级黄色片| 亚洲欧美自拍偷拍| 性欧美疯狂猛交69hd| 亚洲日本电影在线| 欧美精品久久久久性色| 亚洲影院免费观看| 日韩精品一区二区av| 五月激情综合网| 一级片在线观看免费| 在线免费观看视频一区| 日本欧美www| 欧美日韩久久一区二区| 91福利在线观看视频| 91精品国产综合久久小美女| 亚洲大尺度视频| 日韩av中文在线| 国产二区视频在线观看| 中文字幕综合一区| 顶级网黄在线播放| 午夜免费日韩视频| 久久精品女人天堂av免费观看| 国产精品久久久久影院日本 | 欧美三级乱人伦电影| 7777久久亚洲中文字幕| 欧美成人乱码一区二区三区| 五月婷婷六月色| 亚洲欧洲视频在线| 日本不卡在线| 久久久久国产精品www| 蜜臀久久精品| 国产精品毛片a∨一区二区三区|国| 亚洲日日夜夜| 国产精品日韩高清| 精品国产乱码久久久久久果冻传媒| 自拍偷拍视频在线| 中日韩视频在线观看| 免费看涩涩视频| 不卡影院免费观看| 国产欧美小视频| 亚洲午夜在线观看视频在线| 亚洲欧美一二三区| 91精品国产一区二区三区香蕉| 三级网站在线看| 色多多国产成人永久免费网站| 免费电影视频在线看| 国产精品第七十二页| 少妇精品在线| 午夜精品一区二区三区在线观看 | 欧美激情在线播放| 国产一区二区精品调教| 国产成人av一区二区三区| 国产一区二区三区四区二区| a级片一区二区| 久久久久久久波多野高潮日日| 日本特黄在线观看| 久久精品水蜜桃av综合天堂| 久久免费公开视频| 欧美午夜电影在线播放| 日韩中文字幕免费在线观看| 日韩性生活视频| 人人鲁人人莫人人爱精品| 91精品国产综合久久久久久丝袜| 欧美亚洲激情| 97国产在线播放| 国产成人av一区二区三区在线观看| 69视频在线观看免费| 无吗不卡中文字幕| 国产哺乳奶水91在线播放| 中文在线不卡视频| 中国色在线日|韩| 国产成人精品日本亚洲11 | 久久久精品久久| 欧美精品资源| 女人一区二区三区| 亚洲大片av| 第一页在线视频| 最新欧美精品一区二区三区| 国产精品久久久久久久久夜色| 亚洲国产精品久久久久秋霞不卡| 污污的视频在线观看| 成人网在线观看| 欧美电影一区| 在线看的黄色网址| 国产精品全国免费观看高清 | 日韩欧美精品在线视频| 欧美激情办公室videoshd| 国产精品久久久久久av下载红粉 | 成人免费电影视频| 欧美成人黄色网| 日韩一区二区三| 一区二区三区伦理| 亚洲一区二区三区视频| 亚洲经典一区| 中文字幕avav| 亚洲一区二区在线免费看| www.激情五月| 欧美精品电影免费在线观看| 色播一区二区| 男人添女人荫蒂免费视频| 成人美女在线观看| www.国产成人| 精品亚洲va在线va天堂资源站| 人成在线免费网站| 欧美激情第六页| 三级欧美在线一区| 中文字幕人妻一区二区三区在线视频| 在线欧美小视频| 日本中文字幕在线看| 91沈先生在线观看| 国产综合激情| 久久精品一区二区免费播放| 一本在线高清不卡dvd| bbbbbbbbbbb在线视频| 国产精品女主播| 亚洲精品一区二区在线看| 四虎1515hh.com| 天天爽夜夜爽夜夜爽精品视频| 外国精品视频在线观看| 国产www精品| 欧美大人香蕉在线| 亚洲一区和二区| 色综合网色综合| 日本视频在线免费观看| 91传媒免费看| 国产女优一区| 四虎影视一区二区| 日韩美一区二区三区| 成人片免费看| 伊人久久大香线蕉精品| 国产精品99久久久久久似苏梦涵 | 欧美视频一区二区三区四区| 超鹏97在线| 欧美精品v日韩精品v国产精品| 久久成人免费日本黄色| 久草视频免费播放| 亚洲性猛交xxxxwww| 不卡一区视频| 国产亚洲天堂网| 亚洲欧美国产高清| 天天干,夜夜爽| 91色精品视频在线| 亚洲综合不卡| 看片网站在线观看| 亚洲欧美日本另类| 精品中文字幕一区二区三区| 波多野结衣家庭教师在线播放| 中文字幕五月欧美| 四虎影视2018在线播放alocalhost| 成人精品在线视频| 香蕉国产精品偷在线观看不卡| 国产va在线播放|