日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 项目 RedisTemplate 实现轻量级消息队列

發布時間:2025/3/21 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 项目 RedisTemplate 实现轻量级消息队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景公司項目有個需求, 前端上傳excel文件, 后端讀取數據、處理數據、返回錯誤數據, 最簡單的方式同步處理, 客戶端上傳文件后一直阻塞等待響應, 但用戶體驗無疑很差, 處理數據可能十分耗時, 沒人愿意傻等, 由于項目暫未使用ActiveMQ等消息隊列中間件, 而redis的lpush和rpop很適合作為一種輕量級的消息隊列實現, 所以用它完成此次功能開發

一、本文涉及知識點

  • excel文件讀寫--阿里easyexcel sdk

  • 文件上傳、下載--騰訊云對象存儲

  • 遠程服務調用--restTemplate

  • 生產者、消費者--redisTemplate leftPush和rightPop操作

  • 異步處理數據--Executors線程池

  • 讀取網絡文件流--HttpClient

  • 自定義注解實現用戶身份認證--JWT token認證, 攔截器攔截標注有@LoginRequired注解的請求入口

  • 當然, Java實現咯 涉及的知識點比較多, 每一個知識點都可以作為專題進行學習分析, 本文將完整實現呈現出來, 后期拆分與小伙伴分享學習

    二、項目目錄結構

    項目結構

    說明:?數據庫DAO層放到另一個模塊了, 不是本文重點

    三、主要maven依賴

    1、easyexcel

    <easyexcel-latestVersion>1.1.2-beta4</easyexcel-latestVersion><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel-latestVersion}</version></dependency>

    2、JWT

    ????????<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.7.0</version></dependency>

    3、redis

    ????????<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>1.3.5.RELEASE</version></dependency>

    4、騰訊cos

    ????????<dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.4.5</version></dependency>

    四、流程

  • 用戶上傳文件

  • 將文件存儲到騰訊cos

  • 將上傳后的文件id及上傳記錄保存到數據庫

  • redis生產一條導入消息, 即保存文件id到redis

  • 請求結束, 返回"處理中"狀態

  • redis消費消息

  • 讀取cos文件, 異步處理數據

  • 將錯誤數據以excel形式上傳至cos, 以供用戶下載, 并更新處理狀態為"處理完成"

  • 客戶端輪詢查詢處理狀態, 并可以下載錯誤文件

  • 結束

  • 五、實現效果

  • 上傳文件

    上傳文件

    ?

  • 數據庫導入記錄

    數據庫導入記錄

    ?

  • 導入的數據

    導入的數據

    ?

  • 下載錯誤文件

    下載錯誤文件

    ?

  • 錯誤數據提示

    錯誤數據提示

    ?

  • 查詢導入記錄

    查詢導入記錄

    ?

  • 六、代碼實現

    1、導入excel控制層

    ????@LoginRequired@RequestMapping(value?=?"doImport",?method?=?RequestMethod.POST)public?JsonResponse?doImport(@RequestParam("file")?MultipartFile?file,?HttpServletRequest?request)?{PLUser?user?=?getUser(request);return?orderImportService.doImport(file,?user.getId());}

    2、service層

    ????@Overridepublic?JsonResponse?doImport(MultipartFile?file,?Integer?userId)?{if?(null?==?file?||?file.isEmpty())?{throw?new?ServiceException("文件不能為空");}String?filename?=?file.getOriginalFilename();if?(!checkFileSuffix(filename))?{throw?new?ServiceException("當前僅支持xlsx格式的excel");}//?存儲文件String?fileId?=?saveToOss(file);if?(StringUtils.isBlank(fileId))?{throw?new?ServiceException("文件上傳失敗,?請稍后重試");}//?保存記錄到數據庫saveRecordToDB(userId,?fileId,?filename);//?生產一條訂單導入消息redisProducer.produce(RedisKey.orderImportKey,?fileId);return?JsonResponse.ok("導入成功,?處理中...");}/***?校驗文件格式*?@param?fileName*?@return*/private?static?boolean?checkFileSuffix(String?fileName)?{if?(StringUtils.isBlank(fileName)?||?fileName.lastIndexOf(".")?<=?0)?{return?false;}int?pointIndex?=?fileName.lastIndexOf(".");String?suffix?=?fileName.substring(pointIndex,?fileName.length()).toLowerCase();if?(".xlsx".equals(suffix))?{return?true;}return?false;}/***?將文件存儲到騰訊OSS*?@param?file*?@return*/private?String?saveToOss(MultipartFile?file)?{InputStream?ins?=?null;try?{ins?=?file.getInputStream();}?catch?(IOException?e)?{e.printStackTrace();}String?fileId;try?{String?originalFilename?=?file.getOriginalFilename();File?f?=?new?File(originalFilename);inputStreamToFile(ins,?f);FileSystemResource?resource?=?new?FileSystemResource(f);MultiValueMap<String,?Object>?param?=?new?LinkedMultiValueMap<>();param.add("file",?resource);ResponseResult?responseResult?=?restTemplate.postForObject(txOssUploadUrl,?param,?ResponseResult.class);fileId?=?(String)?responseResult.getData();}?catch?(Exception?e)?{fileId?=?null;}return?fileId;}

    3、redis生產者

    @Service public?class?RedisProducerImpl?implements?RedisProducer?{@Autowiredprivate?RedisTemplate?redisTemplate;@Overridepublic?JsonResponse?produce(String?key,?String?msg)?{Map<String,?String>?map?=?Maps.newHashMap();map.put("fileId",?msg);redisTemplate.opsForList().leftPush(key,?map);return?JsonResponse.ok();}}

    4、redis消費者

    @Service public?class?RedisConsumer?{@Autowiredpublic?RedisTemplate?redisTemplate;@Value("${txOssFileUrl}")private?String?txOssFileUrl;@Value("${txOssUploadUrl}")private?String?txOssUploadUrl;@PostConstructpublic?void?init()?{processOrderImport();}/***?處理訂單導入*/private?void?processOrderImport()?{ExecutorService?executorService?=?Executors.newCachedThreadPool();executorService.execute(()?->?{while?(true)?{Object?object?=?redisTemplate.opsForList().rightPop(RedisKey.orderImportKey,?1,?TimeUnit.SECONDS);if?(null?==?object)?{continue;}String?msg?=?JSON.toJSONString(object);executorService.execute(new?OrderImportTask(msg,?txOssFileUrl,?txOssUploadUrl));}});}}

    5、處理任務線程類

    public?class?OrderImportTask?implements?Runnable?{public?OrderImportTask(String?msg,?String?txOssFileUrl,?String?txOssUploadUrl)?{this.msg?=?msg;this.txOssFileUrl?=?txOssFileUrl;this.txOssUploadUrl?=?txOssUploadUrl;} }/***?注入bean*/private?void?autowireBean()?{this.restTemplate?=?BeanContext.getApplicationContext().getBean(RestTemplate.class);this.transactionTemplate?=?BeanContext.getApplicationContext().getBean(TransactionTemplate.class);this.orderImportService?=?BeanContext.getApplicationContext().getBean(OrderImportService.class);}@Overridepublic?void?run()?{//?注入beanautowireBean();JSONObject?jsonObject?=?JSON.parseObject(msg);String?fileId?=?jsonObject.getString("fileId");MultiValueMap<String,?Object>?param?=?new?LinkedMultiValueMap<>();param.add("id",?fileId);ResponseResult?responseResult?=?restTemplate.postForObject(txOssFileUrl,?param,?ResponseResult.class);String?fileUrl?=?(String)?responseResult.getData();if?(StringUtils.isBlank(fileUrl))?{return;}InputStream?inputStream?=?HttpClientUtil.readFileFromURL(fileUrl);List<Object>?list?=?ExcelUtil.read(inputStream);process(list,?fileId);}/***?將文件上傳至oss*?@param?file*?@return*/private?String?saveToOss(File?file)?{String?fileId;try?{FileSystemResource?resource?=?new?FileSystemResource(file);MultiValueMap<String,?Object>?param?=?new?LinkedMultiValueMap<>();param.add("file",?resource);ResponseResult?responseResult?=?restTemplate.postForObject(txOssUploadUrl,?param,?ResponseResult.class);fileId?=?(String)?responseResult.getData();}?catch?(Exception?e)?{fileId?=?null;}return?fileId;}

    說明:?處理數據的業務邏輯代碼就不用貼了

    6、上傳文件到cos

    ????@RequestMapping("/txOssUpload")@ResponseBodypublic?ResponseResult?txOssUpload(@RequestParam("file")?MultipartFile?file)?throws?UnsupportedEncodingException?{if?(null?==?file?||?file.isEmpty())?{return?ResponseResult.fail("文件不能為空");}String?originalFilename?=?file.getOriginalFilename();originalFilename?=?MimeUtility.decodeText(originalFilename);//?解決中文亂碼問題String?contentType?=?getContentType(originalFilename);String?key;InputStream?ins?=?null;File?f?=?null;try?{ins?=?file.getInputStream();f?=?new?File(originalFilename);inputStreamToFile(ins,?f);key?=?iFileStorageClient.txOssUpload(new?FileInputStream(f),?originalFilename,?contentType);}?catch?(Exception?e)?{return?ResponseResult.fail(e.getMessage());}?finally?{if?(null?!=?ins)?{try?{ins.close();}?catch?(IOException?e)?{e.printStackTrace();}}if?(f.exists())?{//?刪除臨時文件f.delete();}}return?ResponseResult.ok(key);}public?static?void?inputStreamToFile(InputStream?ins,File?file)?{try?{OutputStream?os?=?new?FileOutputStream(file);int?bytesRead?=?0;byte[]?buffer?=?new?byte[8192];while?((bytesRead?=?ins.read(buffer,?0,?8192))?!=?-1)?{os.write(buffer,?0,?bytesRead);}os.close();ins.close();}?catch?(Exception?e)?{e.printStackTrace();}}public?String?txOssUpload(FileInputStream?inputStream,?String?key,?String?contentType)?{key?=?Uuid.getUuid()?+?"-"?+?key;OSSUtil.txOssUpload(inputStream,?key,?contentType);try?{if?(null?!=?inputStream)?{inputStream.close();}}?catch?(IOException?e)?{e.printStackTrace();}return?key;}public?static?void?txOssUpload(FileInputStream?inputStream,?String?key,?String?contentType)?{ObjectMetadata?objectMetadata?=?new?ObjectMetadata();try{int?length?=?inputStream.available();objectMetadata.setContentLength(length);}catch?(Exception?e){logger.info(e.getMessage());}objectMetadata.setContentType(contentType);cosclient.putObject(txbucketName,?key,?inputStream,?objectMetadata);}

    7、下載文件

    ????/***?騰訊云文件下載*?@param?response*?@param?id*?@return*/@RequestMapping("/txOssDownload")public?Object?txOssDownload(HttpServletResponse?response,?String?id)?{COSObjectInputStream?cosObjectInputStream?=?iFileStorageClient.txOssDownload(id,?response);String?contentType?=?getContentType(id);FileUtil.txOssDownload(response,?contentType,?cosObjectInputStream,?id);return?null;}public?static?void?txOssDownload(HttpServletResponse?response,?String?contentType,?InputStream?fileStream,?String?fileName)?{FileOutputStream?fos?=?null;response.reset();OutputStream?os?=?null;try?{response.setContentType(contentType?+?";?charset=utf-8");if(!contentType.equals(PlConstans.FileContentType.image)){try?{response.setHeader("Content-Disposition",?"attachment;?filename="?+?new?String(fileName.getBytes("UTF-8"),?"ISO8859-1"));}?catch?(UnsupportedEncodingException?e)?{response.setHeader("Content-Disposition",?"attachment;?filename="?+?fileName);logger.error("encoding?file?name?failed",?e);}}os?=?response.getOutputStream();byte[]?b?=?new?byte[1024?*?1024];int?len;while?((len?=?fileStream.read(b))?>?0)?{os.write(b,?0,?len);os.flush();try?{if(fos?!=?null)?{fos.write(b,?0,?len);fos.flush();}}?catch?(Exception?e)?{logger.error(e.getMessage());}}}?catch?(IOException?e)?{IOUtils.closeQuietly(fos);fos?=?null;}?finally?{IOUtils.closeQuietly(os);IOUtils.closeQuietly(fileStream);if(fos?!=?null)?{IOUtils.closeQuietly(fos);}}}

    8、讀取網絡文件流

    ????/***?讀取網絡文件流*?@param?url*?@return*/public?static?InputStream?readFileFromURL(String?url)?{if?(StringUtils.isBlank(url))?{return?null;}HttpClient?httpClient?=?new?DefaultHttpClient();HttpGet?methodGet?=?new?HttpGet(url);try?{HttpResponse?response?=?httpClient.execute(methodGet);if?(response.getStatusLine().getStatusCode()?==?200)?{HttpEntity?entity?=?response.getEntity();return?entity.getContent();}}?catch?(Exception?e)?{e.printStackTrace();}return?null;}

    9、ExcelUtil

    ????/***?讀excel*?@param?inputStream?文件輸入流*?@return?list集合*/public?static?List<Object>?read(InputStream?inputStream)?{return?EasyExcelFactory.read(inputStream,?new?Sheet(1,?1));}/***?寫excel*?@param?data?list數據*?@param?clazz*?@param?saveFilePath?文件保存路徑*?@throws?IOException*/public?static?void?write(List<??extends?BaseRowModel>?data,?Class<??extends?BaseRowModel>?clazz,?String?saveFilePath)?throws?IOException?{File?tempFile?=?new?File(saveFilePath);OutputStream?out?=?new?FileOutputStream(tempFile);ExcelWriter?writer?=?EasyExcelFactory.getWriter(out);Sheet?sheet?=?new?Sheet(1,?3,?clazz,?"Sheet1",?null);writer.write(data,?sheet);writer.finish();out.close();}

    說明:?至此, 整個流程算是完整了, 下面將其他知識點代碼也貼出來參考

    七、其他

    1、@LoginRequired注解

    /***?在需要登錄驗證的Controller的方法上使用此注解*/ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public?@interface?LoginRequired?{ }

    2、MyControllerAdvice

    @ControllerAdvice public?class?MyControllerAdvice?{@ResponseBody@ExceptionHandler(TokenValidationException.class)public?JsonResponse?tokenValidationExceptionHandler()?{return?JsonResponse.loginInvalid();}@ResponseBody@ExceptionHandler(ServiceException.class)public?JsonResponse?serviceExceptionHandler(ServiceException?se)?{return?JsonResponse.fail(se.getMsg());}@ResponseBody@ExceptionHandler(Exception.class)public?JsonResponse?exceptionHandler(Exception?e)?{e.printStackTrace();return?JsonResponse.fail(e.getMessage());}}

    3、AuthenticationInterceptor

    public?class?AuthenticationInterceptor?implements?HandlerInterceptor?{private?static?final?String?CURRENT_USER?=?"user";@Autowiredprivate?UserService?userService;@Overridepublic?boolean?preHandle(HttpServletRequest?request,?HttpServletResponse?response,?Object?handler)?{//?如果不是映射到方法直接通過if?(!(handler?instanceof?HandlerMethod))?{return?true;}HandlerMethod?handlerMethod?=?(HandlerMethod)?handler;Method?method?=?handlerMethod.getMethod();//?判斷接口是否有@LoginRequired注解,?有則需要登錄LoginRequired?methodAnnotation?=?method.getAnnotation(LoginRequired.class);if?(methodAnnotation?!=?null)?{//?驗證tokenInteger?userId?=?JwtUtil.verifyToken(request);PLUser?plUser?=?userService.selectByPrimaryKey(userId);if?(null?==?plUser)?{throw?new?RuntimeException("用戶不存在,請重新登錄");}request.setAttribute(CURRENT_USER,?plUser);return?true;}return?true;}@Overridepublic?void?postHandle(HttpServletRequest?httpServletRequest,?HttpServletResponse?httpServletResponse,?Object?o,?ModelAndView?modelAndView)?throws?Exception?{}@Overridepublic?void?afterCompletion(HttpServletRequest?httpServletRequest,?HttpServletResponse?httpServletResponse,?Object?o,?Exception?e)?throws?Exception?{} }

    4、JwtUtil

    ????public?static?final?long?EXPIRATION_TIME?=?2592_000_000L;?//?有效期30天public?static?final?String?SECRET?=?"pl_token_secret";public?static?final?String?HEADER?=?"token";public?static?final?String?USER_ID?=?"userId";/***?根據userId生成token*?@param?userId*?@return*/public?static?String?generateToken(String?userId)?{HashMap<String,?Object>?map?=?new?HashMap<>();map.put(USER_ID,?userId);String?jwt?=?Jwts.builder().setClaims(map).setExpiration(new?Date(System.currentTimeMillis()?+?EXPIRATION_TIME)).signWith(SignatureAlgorithm.HS512,?SECRET).compact();return?jwt;}/***?驗證token*?@param?request*?@return?驗證通過返回userId*/public?static?Integer?verifyToken(HttpServletRequest?request)?{String?token?=?request.getHeader(HEADER);if?(token?!=?null)?{try?{Map<String,?Object>?body?=?Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token).getBody();for?(Map.Entry?entry?:?body.entrySet())?{Object?key?=?entry.getKey();Object?value?=?entry.getValue();if?(key.toString().equals(USER_ID))?{return?Integer.valueOf(value.toString());//?userId}}return?null;}?catch?(Exception?e)?{logger.error(e.getMessage());throw?new?TokenValidationException("unauthorized");}}?else?{throw?new?TokenValidationException("missing?token");}}

    結語:?OK, 搞定,睡了, 好困

    總結

    以上是生活随笔為你收集整理的Spring Boot 项目 RedisTemplate 实现轻量级消息队列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久久精品国产免费观看一区二区 | 久草新在线| 香蕉免费| 99久久婷婷 | 天天激情天天干 | 99热国产精品 | 欧美精品小视频 | 欧美日韩在线网站 | 成人在线免费看视频 | 日日碰夜夜爽 | 精品国产乱子伦一区二区 | 亚洲少妇xxxx | 又爽又黄又无遮挡网站动态图 | 99久热在线精品视频成人一区 | 久久久久久久久久久黄色 | v片在线看 | 国产精品第一页在线观看 | 成人动漫一区二区三区 | 美女免费视频观看网站 | 色综合亚洲精品激情狠狠 | 久久午夜免费视频 | 久久综合九色九九 | 久草视频资源 | 日韩成人免费在线 | 在线观看中文字幕 | 婷婷成人综合 | 久久视频精品在线观看 | 91精品在线观看入口 | 欧美成人免费在线 | 国产亚洲人成网站在线观看 | 欧美在线18 | 久操久| 国产精品久久麻豆 | 成人国产精品久久久久久亚洲 | 91高清视频免费 | 黄色三级网站 | 狠狠狠狠狠狠天天爱 | 婷婷久久一区 | 久久激情视频 | 国产成人久久久77777 | 最新国产精品视频 | 国产精品毛片一区视频播 | 激情开心色 | 九九在线国产视频 | 国产午夜精品免费一区二区三区视频 | 国产免费一区二区三区最新 | 在线观看视频一区二区三区 | 久久精美视频 | 国精产品永久999 | 91精品一区国产高清在线gif | 中文字幕在线观看一区二区三区 | 91麻豆国产福利在线观看 | 91中文视频 | 91精品久久久久久久久久久久久 | 97av在线视频 | 在线 视频 一区二区 | 午夜的福利 | 黄色免费观看网址 | 天天天天爽 | 欧美日韩在线免费观看视频 | 尤物97国产精品久久精品国产 | 高清av网站 | 91精品91| 午夜久久久久久久久久久 | 久章草在线 | 免费看黄20分钟 | 日韩欧美一区二区三区视频 | 高清不卡毛片 | 亚洲一区 影院 | 天天玩夜夜操 | 精品国产视频在线观看 | 日韩欧美视频在线播放 | 色资源网在线观看 | 国产精品美女久久久 | 日本三级久久 | 亚洲美女在线一区 | 精品电影一区二区 | 国语精品久久 | 精品中文字幕在线观看 | 亚洲国产精品久久久久久 | 久久久久久97三级 | 国产一区在线免费观看视频 | 久久久久久久久久网 | 免费特级黄色片 | 91精品天码美女少妇 | 亚洲伦理一区二区 | 久久免费精品视频 | 亚洲精品xxx| 精品成人免费 | 中文字幕电影网 | 欧美污污视频 | 国产色黄网站 | 久久99国产一区二区三区 | 日日夜夜精品免费 | 成人av亚洲 | 99久久精品免费看国产免费软件 | 热99久久精品| 一级大片在线观看 | 精品成人网 | 91国内在线 | 公开超碰在线 | 国产第一二区 | 国产一区二区在线播放 | 国产人在线成免费视频 | 久久精品免费电影 | 色婷婷影视 | 8x8x在线观看视频 | 国内精品国产三级国产aⅴ久 | 国产自偷自拍 | 久久国产麻豆 | 午夜久久美女 | 国产精品久久久99 | 欧美另类人妖 | 成人黄色毛片视频 | 午夜在线观看影院 | 欧美视频日韩视频 | av免费试看| 日韩一区二区三区在线看 | 97精品视频在线 | 国产精品女教师 | 精品视频国产 | 91麻豆传媒 | 五月天婷亚洲天综合网精品偷 | 天天操天天操天天操天天 | 又爽又黄在线观看 | 国产91勾搭技师精品 | 美女网站在线观看 | 日本中文字幕电影在线免费观看 | 日本公乱妇视频 | 亚洲综合精品视频 | 国产人在线成免费视频 | 日日夜夜网 | 97在线免费视频观看 | 亚洲91视频| 国产精品国产亚洲精品看不卡15 | 欧美夫妻生活视频 | 国产剧情一区 | 国产一区在线看 | 一区二区 不卡 | 久久久免费在线观看 | 香蕉免费 | 黄色在线看网站 | 久久精品视频18 | 亚洲精品午夜国产va久久成人 | 国产无遮挡又黄又爽在线观看 | 特级黄色片免费看 | 欧美日韩国产在线一区 | 国产97色在线 | 国产亚洲精品综合一区91 | 欧美少妇xx | 欧美激情va永久在线播放 | 国产一区二区免费 | 99免在线观看免费视频高清 | 国产精品一区二区av | 中文字幕在线播放日韩 | 成人黄色av网站 | 日本中文字幕在线看 | 美女网站视频色 | 在线高清| 九九免费在线观看视频 | 91av在线视频免费观看 | 日日精品 | 亚洲aⅴ在线 | 国产精品久久久久永久免费观看 | 美女视频黄,久久 | 免费在线观看日韩欧美 | 黄色软件大全网站 | 国产不卡视频在线播放 | 91中文字幕在线视频 | 久久中文字幕在线视频 | 国产一区免费视频 | 久久综合久久久久88 | 国产高清在线不卡 | 中文字幕av专区 | 色婷久久| 成人黄色在线电影 | 三日本三级少妇三级99 | 99精品在线免费视频 | 国内精品久久久久久久久 | 91精品一区二区三区蜜臀 | 丝袜美女在线观看 | 69国产精品视频 | 麻豆激情电影 | 成人免费在线观看av | 国产专区在线播放 | 色综合天天干 | 久久久久久蜜av免费网站 | 国产在线视频导航 | 国产传媒中文字幕 | 夜夜躁日日躁狠狠久久88av | 婷婷五情天综123 | 色小说在线 | 免费观看国产精品视频 | 国产成人精品一二三区 | 黄污视频大全 | 精品一区二区在线免费观看 | 99热精品国产一区二区在线观看 | 久久久久久久久久福利 | 天天色天天干天天色 | 91丨九色丨国产女 | 日韩精品在线播放 | 久久看片网| 丁香av| 国产成人在线观看免费 | 国产黄色av影视 | 中文字幕在线影视资源 | 视频在线99re| 91av手机在线 | 手机av在线免费观看 | 久久免费在线 | 男女免费视频观看 | 国产一级做a爱片久久毛片a | 中文字幕在线免费看 | 国产精品美女久久久久久久久 | 丁香九月激情 | 91在线看网站 | 丝袜美腿av| 亚洲精品视频在线免费播放 | 狠狠色丁香婷婷综合久小说久 | 综合久久久 | 国产精品高清在线观看 | 成人免费观看a | 亚洲一级黄色片 | 久久久久麻豆v国产 | 一区二区免费不卡在线 | 五月婷婷六月丁香 | 99热999| 国产精品视频最多的网站 | 亚洲五月婷婷 | 2020天天干夜夜爽 | 国产精成人品免费观看 | 99久久精品久久亚洲精品 | 91精品国自产拍天天拍 | 久久免费精品视频 | 中国黄色一级大片 | 日韩精品一区二区三区高清免费 | 日韩欧美在线观看一区二区三区 | 干干操操| 国产麻豆精品免费视频 | 日韩电影黄色 | 日本在线观看一区二区三区 | 日韩欧美视频在线免费观看 | 国产视频九色蝌蚪 | 精品国产伦一区二区三区观看体验 | 亚洲欧美日韩精品久久奇米一区 | 中文成人字幕 | 国产精品11 | 最新中文字幕视频 | 中文字幕高清有码 | 日韩在线资源 | 久久久久久久久久久久久国产精品 | 精品国产大片 | 亚洲狠狠婷婷 | 国产成人免费观看 | 日韩爱爱片| 丁香婷婷激情五月 | 天天天干| 色成人亚洲 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产精品美女在线观看 | 久久精品二区 | 91精品色 | 黄色亚洲大片免费在线观看 | 西西44人体做爰大胆视频 | 91麻豆视频 | 色网站在线观看 | 激情开心 | 日韩精品视频免费看 | 久久精品一区二区国产 | www国产精品com | 欧美a级成人淫片免费看 | 亚洲五月花 | 国产精品免费观看在线 | 亚洲狠狠操 | 亚洲国产中文字幕 | 波多在线视频 | 亚洲精品高清视频在线观看 | 久久国色夜色精品国产 | 久久久久国产精品免费网站 | 精品免费观看视频 | 毛片888| 久产久精国产品 | 国产精品九九久久99视频 | 国产精品一区二区三区在线免费观看 | 亚洲国产成人精品久久 | 国产精品免费人成网站 | 波多野结依在线观看 | 视频国产在线 | 国内精品在线看 | 黄a网 | 日韩mv欧美mv国产精品 | 97精品超碰一区二区三区 | 国产一区二区三区午夜 | 奇米影视四色8888 | 成人污视频在线观看 | 欧美一区二区在线看 | 天天操天天拍 | 国产又粗又猛又黄又爽的视频 | 精品福利视频在线观看 | 日韩伦理一区二区三区av在线 | 国产乱对白刺激视频不卡 | 欧美日韩视频在线观看免费 | 黄色在线视频网址 | 欧美日韩亚洲国产一区 | 国产精品18p | 女人魂免费观看 | 91在线视频免费 | 免费情缘 | 成人av片免费观看app下载 | 日本爽妇网 | 国产v亚洲v| 国产精品一区二区三区在线看 | 日韩av综合网站 | 欧美一区二区精美视频 | 国产欧美综合视频 | 国产精品国产精品 | 久久久久久久久久久久国产精品 | 欧美淫视频 | av片在线观看免费 | 在线播放视频一区 | 7777xxxx| 手机在线看永久av片免费 | 欧美日韩国产综合一区二区 | www操操操| 久草在线电影网 | 国产天天爽 | av电影在线不卡 | 狠狠干夜夜操天天爽 | 成人性生交大片免费看中文网站 | 99久久婷婷国产一区二区三区 | 欧美成a人片在线观看久 | 97超碰影视 | 久草视频在 | 狠狠操狠狠干天天操 | 高清精品久久 | 亚洲国产精品视频在线观看 | 天天婷婷 | 日韩精品一区二区在线视频 | 在线三级播放 | 国产一区成人在线 | 精品亚洲视频在线 | 日韩高清观看 | 国产午夜影院 | 日韩一区二区三区在线看 | 婷婷在线视频观看 | 免费在线激情电影 | 91视频久久久久久 | 一区二区欧美激情 | 最新精品视频在线 | 一区二区日韩av | 一区 在线观看 | 久久综合九色九九 | 91传媒视频在线观看 | 92国产精品久久久久首页 | 久久精品久久99精品久久 | 欧美少妇xx| 欧美伦理电影一区二区 | 超碰免费观看 | 久久久精品| 西西大胆啪啪 | 亚洲激情久久 | 成人欧美一区二区三区黑人麻豆 | 久久综合九色综合久99 | 久草在线资源观看 | 日韩精品久久一区二区三区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 99久久精品久久久久久清纯 | 91麻豆精品国产91久久久久久久久 | 国产精品99精品久久免费 | 欧美久久99 | 欧美国产高清 | av中文在线影视 | 成年人免费av | 高清国产午夜精品久久久久久 | 少妇bbb| 国产无区一区二区三麻豆 | 成人三级网站在线观看 | 西西www4444大胆视频 | 97国产精品 | 精品99在线 | 中文字幕一区二区三区在线观看 | 欧美成人h版 | 99久久精品免费看国产一区二区三区 | 中文字幕观看在线 | 日日夜夜精品网站 | 91精品久久久久久综合乱菊 | 亚洲精品欧美精品 | av不卡中文 | 欧美巨乳网 | 国产最新视频在线观看 | 91精品91| 香蕉视频久久久 | 一区二区中文字幕在线播放 | 国产麻豆视频在线观看 | 一区二区中文字幕在线 | 国产精品丝袜 | 国产尤物在线观看 | 亚洲欧洲国产视频 | 国产精品久久久久毛片大屁完整版 | 国产美女精品视频 | 色综合天天天天做夜夜夜夜做 | 91精品在线播放 | 欧美在线观看视频一区二区三区 | 丁香久久久 | 激情喷水| 国产一区二区在线看 | 日韩| 精品国内自产拍在线观看视频 | 久久黄色美女 | 久久av免费观看 | 美女精品网站 | 国产精品综合av一区二区国产馆 | 少妇自拍av | 99精品在线看| 久久久久黄色 | 久久综合精品一区 | www久| 二区三区中文字幕 | 丁香五月网久久综合 | 在线韩国电影免费观影完整版 | 久久婷婷国产色一区二区三区 | 99热免费在线 | 91麻豆国产 | 成人午夜网址 | 高清av在线 | 国产网红在线观看 | 色香蕉在线视频 | 久久精品视频在线免费观看 | 日韩三级不卡 | 人人爽久久涩噜噜噜网站 | 97电影手机 | 欧美国产大片 | 免费看一级黄色大全 | 国产精品一区二区av麻豆 | 999久久国精品免费观看网站 | 亚洲黄色在线观看 | 欧美另类高潮 | 麻豆91精品91久久久 | 成人免费在线播放视频 | 亚洲精品婷婷 | 日韩高清 一区 | 欧洲av不卡 | 狠狠操电影网 | 色99导航| 亚洲成人av影片 | 成人动态视频 | av中文字幕剧情 | 亚洲精品免费观看视频 | 啪啪资源 | 永久免费精品视频 | 欧美亚洲一区二区在线 | 九九激情视频 | 亚洲欧美日本一区二区三区 | 91久久国产综合精品女同国语 | 精品国产一区二区久久 | 久久精品99视频 | 亚洲国产网址 | 国内视频一区二区 | 国产精品人人做人人爽人人添 | 日产中文字幕 | 黄网站免费大全入口 | 看毛片网站 | 免费日韩av片 | a级国产片| 中文字幕人成一区 | 97国产在线观看 | 色黄久久久久久 | 丁香九月激情综合 | 久久午夜视频 | 欧美日韩不卡在线视频 | 在线观看中文字幕网站 | 国产黄色大片免费看 | 黄色aaa级片 | 97在线影视| 久久视频这里只有精品 | 国产精品黄色在线观看 | 少妇视频一区 | 91综合色| 91九色视频在线 | 欧美analxxxx | 97国产在线 | zzijzzij日本成熟少妇 | 伊人色**天天综合婷婷 | 日韩精品一卡 | 亚洲视频999 | 亚洲激情综合 | 欧美一区二区在线 | 在线观看色网 | 日韩无在线 | 999热线在线观看 | 亚洲精品国产精品国 | 久久久午夜精品福利内容 | 国模一区二区三区四区 | 中文字幕日韩电影 | 亚洲精品动漫久久久久 | 视频国产一区二区三区 | 国产99精品在线观看 | 丁香六月天婷婷 | 色欧美88888久久久久久影院 | 日韩美一区二区三区 | 97在线资源| 免费观看日韩av | 91日韩在线播放 | 亚洲高清视频在线观看免费 | 手机在线日韩视频 | 成年人在线视频观看 | 九九色在线观看 | 男女视频久久久 | 欧美色图东方 | 亚洲成年人在线播放 | 97人人艹| 欧美人牲| 亚洲91网站| japanese黑人亚洲人4k | 亚洲最大成人网4388xx | 久久免费精品视频 | 中文字幕在线观看免费高清完整版 | 91福利社在线观看 | av在线收看 | 国产精品18久久久久久久 | av在线播放一区二区三区 | 蜜臀av网址 | 九九视频热 | 欧美极品久久 | 日韩aⅴ视频 | 国产高清不卡 | 免费看黄色毛片 | 国产精品va在线观看入 | 亚洲精品午夜aaa久久久 | 中文字幕二区在线观看 | 夜夜爽夜夜操 | 在线免费色 | www.看片网站 | 免费在线观看日韩 | 久久精品永久免费 | 亚州精品在线视频 | 亚洲国产免费av | 91欧美精品 | 这里有精品在线视频 | 五月天,com | 色婷婷午夜 | 日日射天天射 | 成年人视频在线 | 色丁香色婷婷 | 婷久久| 午夜精品久久久久久久99热影院 | 九九在线精品视频 | 香蕉免费 | 91专区在线观看 | 国产精品久久久久aaaa九色 | 99久久精品免费看国产麻豆 | 91探花在线 | 欧美日韩免费在线视频 | 亚洲 欧洲av | 久久久久久久国产精品视频 | 不卡中文字幕在线 | 伊人网av | 久草观看 | www.夜夜操.com | 91在线精品一区二区 | 国产精品99精品久久免费 | www婷婷| 午夜视频不卡 | 丁香六月激情 | 免费看片成年人 | 国产精品久久久久久久久久白浆 | 五月婷婷免费 | 天天操天天操天天操天天 | 日韩亚洲精品电影 | 久久精品视频在线免费观看 | 超碰在线免费福利 | av中文在线观看 | 51久久夜色精品国产麻豆 | 久久精品视频免费播放 | 中文字幕一区二区三区四区 | 狠狠躁18三区二区一区ai明星 | 日韩精品欧美精品 | .国产精品成人自产拍在线观看6 | 国内精自线一二区永久 | 日韩av一卡二卡三卡 | 国产伦理久久精品久久久久_ | 黄色成品视频 | 97人人澡人人添人人爽超碰 | 日韩欧美在线观看一区二区 | 日韩在线电影一区二区 | 看国产黄色片 | 欧美亚洲国产日韩 | 日本韩国欧美在线观看 | 在线亚洲精品 | 国产1区2区 | 国内亚洲精品 | 97av视频| av成人免费观看 | 日韩一区二区免费视频 | 91探花视频 | 天天激情站 | 大胆欧美gogo免费视频一二区 | 久久精品视 | 国产美女精品在线 | 日韩在线在线 | 天堂在线v | 91资源在线| 亚洲天堂精品视频在线观看 | 人人干人人上 | japanesexxxhd奶水| av片中文 | 一区二区三区在线免费 | 午夜精品久久久久久久99水蜜桃 | 99久久一区| 久久蜜桃av | 久久av免费观看 | 欧美性生活久久 | 少妇bbbb揉bbbb日本 | 亚洲性少妇性猛交wwww乱大交 | 91九色国产视频 | 2024国产在线| 日韩在线视频二区 | 91视频88av| 97电影网手机版 | 97av精品 | 日本电影黄色 | 在线视频 你懂得 | 国产精品九九视频 | 在线观看中文字幕网站 | 青青河边草免费 | 国产精品丝袜久久久久久久不卡 | japanesefreesex中国少妇 | 国产精品99久久99久久久二8 | 99热最新精品 | 五月天com | 最近日本mv字幕免费观看 | 一区在线播放 | 人人干网站| 欧美日韩不卡一区 | 在线观看视频国产一区 | 狠狠色伊人亚洲综合网站野外 | 亚洲综合在线五月 | 在线视频国产区 | 中文字幕视频在线播放 | 日韩免费中文字幕 | 国产小视频免费观看 | 久久久久久久久久久久av | 深夜男人影院 | 97人人爽人人 | 91视频观看免费 | 成人黄色免费在线观看 | 日韩在线无| 国产精品成人自拍 | 毛片网在线 | 成人久久18免费 | 日韩影视大全 | 在线观看视频一区二区 | 天堂网在线视频 | 成人91在线 | 高清视频一区二区三区 | 中文字幕一区在线观看视频 | 91亚洲网站 | 在线激情电影 | 亚州av一区| 国产日韩精品视频 | 人人艹视频 | 99精品国产aⅴ | 中国美女一级看片 | 久久视精品 | 欧美在线18 | 久久久国产影院 | 国产h在线播放 | 国产又粗又猛又色又黄视频 | 精品国产伦一区二区三区免费 | 97韩国电影 | 五月婷婷在线综合 | 美女久久久久久久 | 日韩精品一区二区在线观看视频 | 丁香九月激情综合 | 国产一区国产二区在线观看 | 中文国产成人精品久久一 | av免费网站观看 | 欧美一级片免费播放 | av免费网站观看 | 中文一区二区三区在线观看 | 欧美analxxxx | 色精品视频 | 国产一级大片免费看 | 国产成人精品免高潮在线观看 | 69亚洲精品 | 欧美aⅴ在线观看 | 欧美精品xx| 久草网在线视频 | 亚洲最大在线视频 | 97超碰中文 | 日本视频高清 | 日韩视频免费 | 亚洲年轻女教师毛茸茸 | 久草网在线视频 | 国产午夜精品久久 | 亚洲人片在线观看 | 天堂网av在线 | 天天操天天操一操 | 中文字幕 在线看 | 欧美精品二 | 丝袜+亚洲+另类+欧美+变态 | 岛国av在线不卡 | 日韩有码中文字幕在线 | 久久国产精彩视频 | 国产无套精品久久久久久 | 国产精品欧美日韩 | 18久久久久 | 久久久久久久久久免费 | 2024国产精品视频 | 亚洲电影在线看 | 中字幕视频在线永久在线观看免费 | 久久男人免费视频 | 色婷婷综合五月 | 国产一区网 | 亚洲精品久久久久久久不卡四虎 | 久久久久久久久久久久久久免费看 | 国产视频99| 欧美日韩视频免费 | 亚洲四虎| 91porny九色91啦中文 | 国产精品久久久久久久久久尿 | 成人在线免费视频 | 欧美成人xxx | 日韩欧美不卡 | 91天天操| 天天操天天干天天插 | 国产区精品| 午夜精品av | www夜夜 | 色99导航 | 免费看的黄色片 | www五月婷婷 | 国产精品久久久区三区天天噜 | 久久综合久久伊人 | 亚洲成人精品久久久 | 婷婷六月色 | 操操日日 | 午夜免费在线观看 | 欧美ⅹxxxxxx| 在线成人性视频 | 91网免费看 | 色香蕉在线| 91麻豆精品91久久久久同性 | 天天爱天天操天天射 | www夜夜操com | 500部大龄熟乱视频使用方法 | 中中文字幕av在线 | 波多野结衣一区三区 | 天天摸天天舔天天操 | www黄| 成av在线| 免费观看黄色12片一级视频 | 亚洲成av人片在线观看 | 国产成人一区二区三区免费看 | 天天草av| www色| 美女网站免费福利视频 | 超碰97公开 | 国产va饥渴难耐女保洁员在线观看 | av成人免费观看 | 午夜精品一区二区三区免费 | 国产手机在线精品 | 国产精品一区二区视频 | 黄色免费观看网址 | 尤物97国产精品久久精品国产 | 亚洲成a人片77777kkkk1在线观看 | 五月天丁香综合 | 波多野结衣日韩 | 色综合久久久久久久久五月 | 国产尤物视频在线 | 久久激情五月激情 | 亚洲精品中文在线 | 又黄又爽又色无遮挡免费 | 91网在线 | 中文字幕中文 | 欧美日韩一区二区久久 | 久久综合免费视频影院 | 国产小视频在线看 | 一级黄色在线免费观看 | 天天艹天天| 久久九九精品久久 | 成人久久久久久久久久 | 超碰97免费| 亚洲综合在线播放 | 中文在线免费视频 | 欧美性生活大片 | 91精品无人成人www | 国产亚洲精品久久久久动 | 久久久免费 | av黄色影院 | av资源免费看 | 色91av| 国产精品久久二区 | 狠狠色丁香婷婷 | 中文字幕在线观看一区 | 成人宗合网 | 亚洲精品欧美视频 | 精品国产精品国产偷麻豆 | 欧美性受极品xxxx喷水 | 免费韩国av | 免费av在线网站 | 99热网站 | 久久tv| 日韩精品视频免费看 | 国产精品入口66mio女同 | 欧美另类调教 | 欧美激情综合五月色丁香 | 久久国产电影院 | 四虎永久免费在线观看 | 国产麻豆视频免费观看 | 麻豆 free xxxx movies hd | 99爱爱| 久久看视频 | 色午夜影院 | 中文字幕中文 | 99久高清在线观看视频99精品热在线观看视频 | 中文字幕在线观看一区二区 | 国产精品久久久久久久电影 | 中文字幕一区二区三区在线播放 | 国产精品久久久久久久av大片 | 亚洲激情视频 | 91av福利视频 | 亚洲国产三级在线 | 欧美孕交vivoestv另类 | 国产99久久久国产精品免费二区 | 久久久久久久网站 | 麻豆国产精品va在线观看不卡 | 国产免费一区二区三区最新 | 日韩有码专区 | 日本精品二区 | 亚洲综合在线视频 | 日韩激情综合 | 成 人 黄 色 视频 免费观看 | 成年人免费在线播放 | 97在线免费观看 | 中文字幕免费高清在线观看 | 国产精品嫩草影视久久久 | 九九精品视频在线 | 特级西西www44高清大胆图片 | 在线观看午夜 | 国产一区视频在线观看免费 | 天天操天天拍 | 免费看av在线 | 97人人人人| 黄色aa久久| 国产精品手机在线 | 日日夜夜天天久久 | 精品影院一区二区久久久 | 在线国产欧美 | 久久久精品99 | 91精品中文字幕 | 久久精品视频国产 | 亚洲精品小区久久久久久 | 国产又黄又猛又粗 | 精品一区二区免费在线观看 | 99热在| 日韩一区二区三区观看 | 久草资源免费 | 日日操网站| 色偷偷人人澡久久超碰69 | 日b黄色片 | 天天爱av导航 | 在线小视频 | 人人干网站 | 亚洲久草在线 | 96国产精品| 91亚洲视频在线观看 | 精品在线视频播放 | 在线日韩av| 婷婷网在线 | 黄色亚洲在线 | 国色天香av | 久久色网站 | 一区二区av | 日日夜夜网站 | 五月婷婷六月丁香在线观看 | 在线日韩一区 | 亚洲免费av一区二区 | 中文字幕一区二区三区四区久久 | 亚洲人成人99网站 | 亚洲国产合集 | 国产精品久久99综合免费观看尤物 | 韩日av一区二区 | 精品一区二区免费 | 综合网伊人 | 99国产高清 | 欧美日韩中字 | 一色屋精品视频在线观看 | 黄网站色视频免费观看 | 国产一级在线视频 | 99久久婷婷 | www.com在线观看 | 中文字幕色在线视频 | 亚洲国产av精品毛片鲁大师 | 国产69久久久欧美一级 | 国产成人一区二区三区久久精品 | 中文字幕一区av | 蜜桃麻豆www久久囤产精品 | 久久久久欧美精品 | 欧美一区二区在线免费看 | 黄色片网站av | 99视频久久 | 综合精品在线 | 欧美韩国日本在线观看 | 在线观看免费中文字幕 | 亚洲精品国偷拍自产在线观看蜜桃 | 丁香六月激情 | 97看片| 五月婷婷中文网 | 手机在线小视频 | 国产免费区 | 中文字幕在线不卡国产视频 | 亚洲人成人99网站 | 香蕉视频久久久 | 中文字幕资源网 | 99电影 | 久久久久久网址 | 午夜999| 久久欧美精品 | 成人黄色电影在线观看 | 在线观看国产91 | 香蕉手机在线 | 91探花系列在线播放 | 久久人人爽人人 | 97成人在线免费视频 | 一区二区三区免费在线观看视频 | 久热超碰 | 四虎影视国产精品免费久久 | a视频在线观看 | 国产精品乱码久久 | 最近2019年日本中文免费字幕 | 人人澡人人添人人爽一区二区 | 349k.cc看片app | 日韩精品在线观看av | 在线看片视频 | 国产成人一区二区三区影院在线 | 久久这里有精品 | 黄色片网站av | 超碰公开在线 | 黄色在线成人 | 欧美在线日韩在线 | 成年人免费在线观看网站 | 91超碰免费在线 | 天堂资源在线观看视频 | 视频一区在线免费观看 | 久草影视在线 | 国产色视频网站2 | 久久精品一区八戒影视 | 激情久久综合 | 香蕉蜜桃视频 | 久久国产免费视频 | 最近高清中文字幕在线国语5 | 六月激情网 | 91九色porn在线资源 | 一区二区伦理电影 | 国产激情电影综合在线看 | 人人精品久久 | 久久有精品 | 亚洲午夜精品久久久 | 91精品老司机久久一区啪 | 欧美夫妻性生活电影 | 日韩色综合网 | 午夜色站 | 欧美日韩精品在线播放 | 国产精品免费久久久久久久久久中文 | 五月婷婷综合激情 | 中文字幕免费成人 | 在线观看av的网站 | 亚洲欧洲成人精品av97 | 国产精品久久麻豆 | 天天透天天插 | www视频免费在线观看 | 国产香蕉在线 | 99这里只有久久精品视频 | 蜜桃视频精品 | 一区二区三区在线看 | 国产日韩视频在线播放 | av在线观 | 日韩av成人在线观看 | 九色视频网址 | 国产三级午夜理伦三级 | 一区二区三区在线观看免费 | 免费福利影院 | 国产永久免费 | 日韩v欧美v日本v亚洲v国产v | 97超碰在线人人 | 一区二区三区精品在线 | 国产在线观看污片 | 夜夜爽夜夜操 | 国产黄色免费在线观看 | 伊人六月| 日韩精品三区四区 | 99国产在线视频 | 天天综合成人 | 久久专区 | 综合中文字幕 | 热久久国产精品 | 国产精品成人aaaaa网站 |