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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kFeedback开源啦

發布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kFeedback开源啦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

kFeedback的更多介紹,請詳見:http://my.oschina.net/kzhou/blog/98855

為什么開發kFeedback?

我像很多人一樣,平時在閑暇之余做一些app,本人的作品主要有:


  • 基于HTML5(jQuery Mobile)的企業通訊錄,后來通過PhoneGap封裝成apk,她的名字是kLink。目前使用人數350人;
  • 黑龍江省交通違章信息推送系統,當你的車有交通違法信息時,會通過短信息第一時間通知車主;目前使用人數200人
  • ... ...
  • 今后還會有更多的app發布,我在想,好的app離不開用戶的反饋,如果每一個app內嵌一個反饋(又叫留言)的話,反饋信息會分散,不利于作者進行統一的受理,所以才有了今天的kFeedback。kFeedback發布幾天來,目前已有60人在試用,而我現在唯一擔心的是,CloudFoundry能不能頂住?

    廢話不多說了,接下來我將kFeedback源碼發出,感興趣的朋友可以參考,由于系統比較簡單,我想下邊的源碼可能也就會對初學者有點幫助,老手們不要“恥笑”。

    kFeedback用了哪些技術?


    jsp + html5 + BootStrap + jQuery + servlet + spring(jdbcTemplate) + mySQL?

    源碼:

    工程目錄結構:


    Action.java - 一個DispatchServlet

    Demo.java - 一個基于HttpClient的測試類

    Service.java - 封裝了所有業務的Dao

    index.jsp - 首頁

    main.jsp - 主頁面

    其它的沒啥了,都是一些基本(標準)的配置文件。

    我們從Service.java說起:

    code:

    package k.feedback;import java.security.MessageDigest; import java.util.HashMap; import java.util.Map;import javax.sql.DataSource;import org.apache.commons.mail.Email; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; import org.springframework.jdbc.core.JdbcTemplate;import sun.misc.BASE64Encoder;import com.alibaba.fastjson.JSON;public class Service {final static int PAGE_QTY = 15;//每頁展示的記錄數private JdbcTemplate jdbcTemplate;public void setDataSource(DataSource dataSource) {this.jdbcTemplate = new JdbcTemplate(dataSource); }//初始化數據庫表結構 public void initDB(){//drop tablethis.jdbcTemplate.execute("drop table IF EXISTS feedback");this.jdbcTemplate.execute("drop table IF EXISTS app");this.jdbcTemplate.execute("drop table IF EXISTS emp");System.out.println("table drop ok");StringBuilder emp = new StringBuilder();emp.append(" CREATE TABLE emp( ");emp.append(" emp_id INT AUTO_INCREMENT, ");emp.append(" emp_email VARCHAR(128), ");emp.append(" emp_login_pwd VARCHAR(40), ");emp.append(" cdate TIMESTAMP, ");emp.append(" PRIMARY KEY (emp_id) ");emp.append(" )ENGINE=MYISAM ");StringBuilder app = new StringBuilder();app.append(" CREATE TABLE app( ");app.append(" app_id INT AUTO_INCREMENT, ");app.append(" emp_id INT, ");app.append(" app_name VARCHAR(255), ");app.append(" app_desc VARCHAR(255), ");app.append(" app_token VARCHAR(40), ");app.append(" app_feedback_qty INT, ");app.append(" cdate TIMESTAMP, ");app.append(" PRIMARY KEY (app_id) ");app.append(" )ENGINE=MYISAM ");StringBuilder feedback = new StringBuilder();feedback.append(" CREATE TABLE feedback( ");feedback.append(" feedback_id INT AUTO_INCREMENT, ");feedback.append(" emp_id INT, ");feedback.append(" app_id INT, ");feedback.append(" feedback_time TIMESTAMP, ");feedback.append(" feedback_info TEXT, ");feedback.append(" PRIMARY KEY (feedback_id) ");feedback.append(" )ENGINE=MYISAM ");String alter1 = "ALTER TABLE app ADD CONSTRAINT Refemp1 FOREIGN KEY (emp_id) REFERENCES emp(emp_id)";String alter2 = "ALTER TABLE feedback ADD CONSTRAINT Refemp2 FOREIGN KEY (emp_id) REFERENCES emp(emp_id)";String alter3 = "ALTER TABLE feedback ADD CONSTRAINT Refapp3 FOREIGN KEY (app_id) REFERENCES app(app_id)";String createIndex4Emp = "create unique index idx_email_pwd on emp(emp_email,emp_login_pwd)";String createIndex4App = "create unique index idx_token on app(app_token)";this.jdbcTemplate.execute(emp.toString());System.out.println("emp table created");this.jdbcTemplate.execute(app.toString());System.out.println("app table created");this.jdbcTemplate.execute(feedback.toString());System.out.println("feedback table created");this.jdbcTemplate.execute(alter1);this.jdbcTemplate.execute(alter2);this.jdbcTemplate.execute(alter3);System.out.println("alter ok");this.jdbcTemplate.execute(createIndex4Emp);this.jdbcTemplate.execute(createIndex4App);//創建默認賬戶this.jdbcTemplate.update("INSERT INTO emp(emp_id,emp_email, emp_login_pwd ) values(1,?,?)","kzhou.hrb@gmail.com",encodeByMd5("111111"));System.out.println("kFeedback default user create ok");//創建默認appthis.jdbcTemplate.update("INSERT INTO app(app_id, emp_id, app_name, app_desc, app_token, app_feedback_qty) VALUES (1, 1, 'kFeedback-云反饋', '把你的產品反饋信息放在云上進行統一管理', 'kFeedback', 0)");System.out.println("kFeedback default app create ok");System.out.println("kFeedback db create ok"); }//開發者注冊 public int reg(String email,String pwd){//check email is existint rv = this.jdbcTemplate.queryForInt("select count(*) from emp where emp_email = ?",email);if(rv == 0){final String sql = "INSERT INTO emp(emp_email, emp_login_pwd ) values(?,?)";return this.jdbcTemplate.update(sql,email,encodeByMd5(pwd));}else{return -999;} } //開發者修改密碼 public void updPwd(String empId,String newPwd){final String sql = "update emp set emp_login_pwd = ? where emp_id = ?";this.jdbcTemplate.update(sql,encodeByMd5(newPwd),empId); } //登錄 public String login(String email,String pwd){final String sql = "select convert(emp_id,char) as emp_id,emp_email from emp where emp_email = ? and emp_login_pwd = ?";Map<String,Object> map = new HashMap<String,Object>();try {map = this.jdbcTemplate.queryForMap(sql,email,encodeByMd5(pwd));map.put("result", "1");return JSON.toJSONString(map);} catch (Exception e) {map.put("result", "0");return JSON.toJSONString(map);} } //忘記密碼 public int forgetPwd(String email){int rv = this.jdbcTemplate.queryForInt("select count(*) from emp where emp_email = ?",email);if(rv > 0){//get new pwdString newPwd = this.getAppToken();//upd emp pwdthis.jdbcTemplate.update("update emp set emp_login_pwd = ? where emp_email = ?",encodeByMd5(newPwd),email);//send new pwd to email boxStringBuilder msg = new StringBuilder();msg.append("您好,您的kFeedback新密碼為:").append(newPwd).append("\n\n").append("請重新登錄;http://kfeedback.cloudfoundry.com");this.sendEmail("來自kFeedback的密碼重置郵件", email, msg.toString());return 1;//成功}else{return 0;} } //新增產品-strings[0],strings[1],strings[2]=emp_id,app_name,app_desc public void insApp(String...strings){final String sql = "INSERT INTO app (emp_id, app_name, app_desc,app_feedback_qty, app_token) values(?,?,?,0,?)";this.jdbcTemplate.update(sql,strings[0],strings[1],strings[2],getAppToken()); } //刪除產品 public void delApp(String appId){this.jdbcTemplate.update("delete from feedback where app_id = ?",appId);this.jdbcTemplate.update("delete from app where app_id = ?",appId); } //修改產品-strings[0],strings[1],strings[2]=app_name,app_desc,app_id public void updApp(String...strings){final String sql = "update app set app_name=?,app_desc=? where app_id = ?";this.jdbcTemplate.update(sql,strings[0],strings[1],strings[2]); } //查詢產品 public String getApp(String empId){if(empId.equals("1")){return JSON.toJSONString(this.jdbcTemplate.queryForList("select convert(app_id,char) as app_id,convert(emp_id,char) as emp_id,app_name,app_desc,app_token,convert(app_feedback_qty,char) as app_feedback_qty,convert(DATE_FORMAT(cdate,'%Y-%m-%d'),char) as cdate from app where emp_id = ?",empId));}else{return JSON.toJSONString(this.jdbcTemplate.queryForList("select convert(app_id,char) as app_id,convert(emp_id,char) as emp_id,app_name,app_desc,app_token,convert(app_feedback_qty,char) as app_feedback_qty,convert(DATE_FORMAT(cdate,'%Y-%m-%d'),char) as cdate from app where app_id = 1 union all select convert(app_id,char) as app_id,convert(emp_id,char) as emp_id,app_name,app_desc,app_token,convert(app_feedback_qty,char) as app_feedback_qty,convert(DATE_FORMAT(cdate,'%Y-%m-%d'),char) as cdate from app where emp_id = ?",empId));} } //根據app_token反查app_id private Map<String,Object> getAppIdByToken(String token){return this.jdbcTemplate.queryForMap("select convert(a.emp_id,char) as emp_id,convert(a.app_id,char) as app_id,e.emp_email,a.app_name from app a,emp e where a.emp_id = e.emp_id and a.app_token = ?",token); } //根據產品查詢反饋信息 public String getFeedback(String appId){final String sql = "select convert(feedback_id,char) as feedback_id,convert(DATE_FORMAT(feedback_time,'%Y-%m-%d %H:%i:%s'),char) as feedback_time,feedback_info from feedback where app_id = ? order by feedback_time";return JSON.toJSONString(this.jdbcTemplate.queryForList(sql,appId)); } //刪除反饋信息 public void delFeedback(String feedbackId){this.jdbcTemplate.update("delete from feedback where feedback_id = ?",feedbackId); }//開放api //新增反饋-strings[0],strings[1]]=app_token,feedback_info public void insFeedback(String...strings){Map<String,Object> map = getAppIdByToken(strings[0]);String appId = map.get("app_id").toString();final String sql = "INSERT INTO feedback (emp_id, app_id, feedback_info) values(?,?,?)";this.jdbcTemplate.update(sql,map.get("emp_id"),appId,strings[1]);int feedbackQty = this.jdbcTemplate.queryForInt("select count(*) from feedback where app_id = ?",appId);this.jdbcTemplate.update("update app set app_feedback_qty=? where app_id = ?",feedbackQty,appId);//send email to app creator // StringBuilder msgTitle = new StringBuilder(); // msgTitle.append("[來自kFeedback]:您的<").append(map.get("app_name").toString()).append(">App收到了新的反饋信息"); // StringBuilder msg = new StringBuilder(); // msg.append("[來自kFeedback]:您的<").append(map.get("app_name").toString()).append(">App收到了新的反饋信息").append("\n\n"); // msg.append("新的反饋信息為:\n\n"); // msg.append("TA說: ").append(strings[1]).append("\n\n").append("請訪問;http://kfeedback.cloudfoundry.com").append("\n\n"); // this.sendEmail(msgTitle.toString(), map.get("emp_email").toString(), msg.toString()); } //開發api end//MD5 private String encodeByMd5(String str) {MessageDigest md5;try {md5 = MessageDigest.getInstance("MD5");BASE64Encoder base64en = new BASE64Encoder();return base64en.encode(md5.digest(str.getBytes("utf-8")));} catch (Exception e) {return str;} } //UUID public String getAppToken(){return System.currentTimeMillis()+""; }/*** 發送電子郵件* @param title* @param emailAddr* @param msg* @throws EmailException*/ public void sendEmail(String title,String emailAddr,String msg){try {Email email = new SimpleEmail();email.setHostName("smtp.163.com");email.setAuthentication("username", "password");email.setFrom("kfeedback@163.com");email.setSubject(title);email.setCharset("utf8");email.setMsg(msg);email.addTo(emailAddr);email.send();} catch (Exception e) {} } }


    Action.java

    code:

    package k.feedback;import java.io.IOException;import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils;/*** Servlet implementation class Action*/ public class Action extends HttpServlet {private static final long serialVersionUID = 1L;private WebApplicationContext ctx = null;/*** @see HttpServlet#HttpServlet()*/public Action() {super();}/*** @see Servlet#init(ServletConfig)*/public void init(ServletConfig config) throws ServletException {ctx = WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // request.setCharacterEncoding("utf-8"); // response.setCharacterEncoding("utf-8");response.setHeader("Cache-Control", "no-cache"); response.setContentType("text/javascript");Service service = (Service)ctx.getBean("service");String callback = request.getParameter("callback");String method = request.getParameter("m");System.out.println("request method : " + method);if(method == null || method.trim().length() == 0){response.getWriter().print("您的請求是非法的!");}else{if(method.equals("login")){this.login(service,request,response,callback);}else if(method.equals("reg")){this.reg(service,request,response,callback);}else if(method.equals("updPwd")){this.updPwd(service,request,response,callback);}else if(method.equals("insApp")){this.insApp(service,request,response,callback);}else if(method.equals("getApp")){this.getApp(service,request,response,callback);}else if(method.equals("getFeedback")){this.getFeedback(service,request,response,callback);}else if(method.equals("updApp")){this.updApp(service,request,response,callback);}else if(method.equals("delApp")){this.delApp(service,request,response,callback);}else if(method.equals("insFeedback")){this.insFeedback(service,request,response,callback);}}}private void insFeedback(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String token = request.getParameter("token");String fb = request.getParameter("fb");service.insFeedback(token,fb);response.getWriter().write(callback+"({\"result\" : \"1\"})");}private void delApp(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String appId =request.getParameter("appId");service.delApp(appId);response.getWriter().write(callback+"({\"result\" : \"1\"})");}private void updApp(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String appId = request.getParameter("appId");String appName = request.getParameter("appName");String appDesc = request.getParameter("appDesc");service.updApp(appName,appDesc,appId);response.getWriter().write(callback+"({\"result\" : \"1\"})");}private void getFeedback(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String appId = request.getParameter("appId");String feedbackJson = service.getFeedback(appId);response.getWriter().write(callback+"("+feedbackJson+")");}private void getApp(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String empId = request.getParameter("empId");String appJson = service.getApp(empId);response.getWriter().write(callback+"("+appJson+")");}private void insApp(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String empId = request.getParameter("empId");String appName = request.getParameter("appName");String appDesc = request.getParameter("appDesc");service.insApp(empId,appName,appDesc);response.getWriter().write(callback+"({\"result\" : \"1\"})");}private void updPwd(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String empId = request.getParameter("empId");String newPwd = request.getParameter("newPwd");service.updPwd(empId, newPwd);response.getWriter().write(callback+"({\"result\" : \"1\"})");}private void reg(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException {String reg_email = request.getParameter("reg_email");String reg_pwd = request.getParameter("reg_pwd");int rv = service.reg(reg_email, reg_pwd);String output = callback+"({})";if(rv == 1){output = callback+"({\"result\" : \"1\"})";//reg成功}else{output = callback+"({\"result\" : \"0\"})";//reg失敗}response.getWriter().write(output);}private void login(Service service, HttpServletRequest request,HttpServletResponse response, String callback) throws IOException, ServletException {String email = request.getParameter("email");String pwd = request.getParameter("pwd");String loginInfo = service.login(email, pwd);response.getWriter().write(callback+"("+loginInfo+")");} } index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>kFeedback - 云反饋!</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="feedback system on Cloud Foundry"><meta name="author" content="zhoukai"><!-- Le styles --><link href="css/bootstrap.css" rel="stylesheet"><style type="text/css">body {padding-top: 15px;}</style><link href="css/bootstrap-responsive.css" rel="stylesheet"><!-- HTML5 shim, for IE6-8 support of HTML5 elements --><!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--> </head><body><div class="container"><!-- Main hero unit for a primary marketing message or call to action --><div class="hero-unit"><h1>kFeedback - 云反饋!</h1><p>kFeedback是一個極簡主義作品。</p><p>成功的產品離不開用戶的反饋;kFeedback就是你的產品與最終用戶之間的溝通橋梁。</p></div><!-- Example row of columns --><div class="row"><div class="span4"><blockquote><p><strong>kFeedback基本路徑(Guide).</strong></p><small>kFeedback使用指南</small></blockquote><p><ol><li>注冊kFeedback賬號(Reg account)</li><li>登錄kFeedback(Login)</li><li>創建App(New app)</li><li>將系統生成的API嵌入到你的產品中(Embed kFeedback post-api in your projduct)</li><li>OK</li></ol></p></div><div class="span4"><blockquote><p><strong>登錄kFeedback系統(Login).</strong></p><small>用您注冊的電子郵件和密碼登錄系統</small></blockquote><p><label class="control-label" for="login_email">電子郵件(Email)</label><input type="text" id="login_email" placeholder="Email"><label class="control-label" for="login_pwd">登錄密碼(Password)</label><input type="password" id="login_pwd" placeholder="Password"><p><button id="btn_login" class="btn btn-primary">登錄(Login now!)</button></p></p></div><div class="span4"><blockquote><p><strong>注冊kFeedback賬號(Register).</strong></p><small>提供您的電子郵件及登錄密碼,瞬間即可完成注冊</small></blockquote> <p><label class="control-label" for="reg_email">電子郵件</label><input type="text" id="reg_email" placeholder="Login email"><label class="control-label" for="reg_pwd">登錄密碼</label><input type="password" id="reg_pwd" placeholder="Login pwd"><label class="control-label" for="reg_repwd">確認密碼</label><input type="password" id="reg_repwd" placeholder="Confirm pwd"><p><button id="btn_reg" class="btn btn-primary">注冊(Register now!)</button></p></p></div></div><hr><footer><div class="row"><div class="span4">&copy; <i class="icon-user"></i>愷哥作品 - <a href="mailto:kzhou.hrb@gmail.com?subject=to 愷哥">kzhou.hrb@gmail.com</a></div><div class="span4"></div><div class="span4"><a target="_blank" href="http://www.oschina.net" title="OSChina"><img src="img/osc.ico" alt="OSChina"></a><a target="_blank" href="http://www.cloudfoundry.com/" title="CloudFoundry"><img src="img/cf.ico" alt="Cloudfoundry"></a><a target="_blank" href="http://twitter.github.com/bootstrap/" title="Bootstrap"><img src="img/bootstrap.ico" alt="Bootstrap"></a></div></div></footer><!-- dialog --><div id="myAlertModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><div id="alertInfo"></div></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button></div></div></div> <!-- /container --><!-- Le javascript================================================== --><!-- Placed at the end of the document so the pages load faster --><script src="js/jquery-1.8.3.js"></script><script src="js/bootstrap.js"></script><script type="text/javascript">var app = "http://kfeedback.cloudfoundry.com";var url = app + "/Action?callback=?";$(document).ready(function() {//login email focusvar localStorageLoginInfo = localStorage.getItem("login_email");if(!$.isEmptyObject(localStorageLoginInfo)){$("#login_email").val(localStorageLoginInfo);$("#login_pwd").focus();}else{$("#login_email").focus();}$("#btn_reg").click(function(){var reg_email = $("#reg_email").val();var reg_pwd = $("#reg_pwd").val();var reg_repwd = $("#reg_repwd").val();var alertInfo = checkRegForm(reg_email,reg_pwd,reg_repwd);if($.isEmptyObject(alertInfo)){$.getJSON(url,{m:"reg",reg_email:reg_email,reg_pwd:reg_pwd},function(json){if(json.result == "1"){//init login form$("#login_email").val(reg_email);$("#login_pwd").val(reg_pwd);$("#alertInfo").html("<p class=\"text-success\">賬號注冊成功,請登錄kFeedback!</p>");$('#myAlertModal').modal('show');}else{$("#alertInfo").html("<p class=\"text-error\">賬號注冊失敗,您提供的電子郵件已被使用,請重新嘗試!</p>");$('#myAlertModal').modal('show');}});}else{$("#alertInfo").html(alertInfo);$('#myAlertModal').modal('show');}});$("#login_pwd").keydown(function(e){if(e.keyCode==13){ //回車$("#btn_login").click();}});$("#btn_login").click(function(){var login_email = $("#login_email").val();var login_pwd = $("#login_pwd").val();if($.isEmptyObject(login_email) || $.isEmptyObject(login_pwd)){$("#alertInfo").html("<p class=\"text-error\">登錄時,電子郵件和登錄密碼是必須的.</p>");$('#myAlertModal').modal('show');}else{$.getJSON(url,{m:"login",email:login_email,pwd:login_pwd},function(json){if(json.result == "0"){$("#alertInfo").html("<p class=\"text-error\">登錄失敗,用戶名或密碼錯誤,請重新嘗試!</p>");$('#myAlertModal').modal('show');}else{sessionStorage.setItem("email", login_email);sessionStorage.setItem("empId", json.emp_id);localStorage.setItem("login_email",login_email);location.href=app+"/main.jsp";}});}});});//check reg formfunction checkRegForm(reg_email,reg_pwd,reg_repwd){var alertInfo = "";//check reg_emailif($.isEmptyObject(reg_email)){alertInfo += "<p class=\"text-error\">注冊時,電子郵件不能為空.</p>";}if(!verifyEmail(reg_email)){alertInfo += "<p class=\"text-error\">您提供的電子郵件格式不合法.</p>";}if($.isEmptyObject(reg_pwd)){alertInfo += "<p class=\"text-error\">注冊時,登錄密碼不能為空.</p>";}if(reg_pwd != reg_repwd){alertInfo += "<p class=\"text-error\">登錄密碼不一致,請重新檢查.</p>";}return alertInfo;}//email checkerfunction verifyEmail(emailStr){var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;if(emailStr.search(emailRegEx) == -1) {return false;}else{return true;}} </script></body> </html> main.html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html><head><meta charset="utf-8"><title>kFeedback - 云反饋!</title><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="feedback system on Cloud Foundry"><meta name="author" content="zhoukai"><!-- Le styles --><link href="css/bootstrap.css" rel="stylesheet"><style type="text/css">body {padding-top: 60px;padding-bottom: 5px;}</style><link href="css/bootstrap-responsive.css" rel="stylesheet"><link href="css/prettify.css" rel="stylesheet"><script src="js/prettify.js"></script><!-- HTML5 shim, for IE6-8 support of HTML5 elements --><!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]--></head><body onload="prettyPrint()"><div class="navbar navbar-inverse navbar-fixed-top"><div class="navbar-inner"><div class="container"><a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><a class="brand" href="#">kFeedback - 云反饋!</a><div class="nav-collapse collapse"><ul class="nav"><li><a href="#" id="goto_index">首頁(Home)</a></li><li><a href="#" id="goto_about">關于(About)</a></li><li><a href="#" id="goto_demo">示例(Demo)</a></li><li><a href="#" id="goto_updpwd">修改密碼(Upd pwd)</a></li><li class="active"><a href="#"><i class="icon-user icon-white"></i><span id="login_email"></span></a></li></ul></div><!--/.nav-collapse --></div></div></div><div class="container"><h2>App反饋監控臺(App feedback console)</h2><hr><div class="tabbable tabs-left"><ul id="appList" class="nav nav-tabs"><li class="active"><a href="#addApp" data-toggle="tab"><i class="icon-plus"></i>新增App(New App)</a></li></ul><div id="appList_content" class="tab-content"><!-- 固定存在 --><div class="tab-pane active" id="addApp"><p><div class="control-group"><label class="control-label" for="app_name">App名稱(&lt;=100個字.)</label><div class="controls"><input class="input-xlarge" type="text" id="app_name" maxlength="100" placeholder="App name"></div></div><div class="control-group"><label class="control-label" for="app_desc">App描述(&lt;=150個字.)</label><div class="controls"><textarea maxlength="150" class="input-xlarge" id="app_desc" rows="3"></textarea></div></div><div class="control-group"><div class="controls"><button id="btn_addApp" class="btn btn-primary">新增App(New app now!)</button></div></div></p></div><!-- 固定存在 end--></div></div> <hr><footer><div class="row"><div class="span4">&copy; <i class="icon-user"></i>愷哥作品 - <a href="mailto:kzhou.hrb@gmail.com?subject=to 愷哥">kzhou.hrb@gmail.com</a></div><div class="span4"></div><div class="span4"><a target="_blank" href="http://www.oschina.net" title="OSChina"><img src="img/osc.ico" alt="OSChina"></a><a target="_blank" href="http://www.cloudfoundry.com/" title="CloudFoundry"><img src="img/cf.ico" alt="cloudfoundry"></a><a target="_blank" href="http://twitter.github.com/bootstrap/" title="Bootstrap"><img src="img/bootstrap.ico" alt="Bootstrap"></a></div></div></footer><!-- dialog --><div id="updPwdModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><h4><span id="loginer"></span>修改密碼</h4><div id="updPwd_error_info"></div><p><label class="control-label" for="upd_new_pwd">新密碼</label><input type="password" id="upd_new_pwd" placeholder="New pwd"><label class="control-label" for="upd_new_repwd">確認新密碼</label><input type="password" id="upd_new_repwd" placeholder="Confirm new pwd"></p></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button><button id="btn_updpwd" class="btn btn-primary">提交(Update now!)</button></div></div><div id="updAppModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><h4>修改App信息</h4><div id="updApp_error_info"></div><p><label class="control-label" for="upd_app_token">App Token</label><input type="text" disabled="disabled" class="input-xlarge uneditable-input" id="upd_app_token" placeholder=""><label class="control-label" for="upd_app_name">App名稱(<=100個字.)</label><input type="text" maxlength="100" class="input-xlarge" id="upd_app_name" placeholder=""><input type="hidden" id="upd_app_id" ><label class="control-label" for="upd_app_desc">App描述(<=150個字.)</label><textarea maxlength="150" class="input-xlarge" id="upd_app_desc" rows="3"></textarea></p></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button><button id="btn_updApp" class="btn btn-primary">提交(Update now!)</button></div></div><div id="myAlertModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><div id="alertInfo"></div></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button></div></div><div id="myAlertModal4Reload" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><div id="alertInfo4Reload"></div></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button></div></div><div id="delAppModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback信息提示窗</h3></div><div class="modal-body"><h4>刪除App - <span id="delAppName"></span></h4><p>刪除App的同時,也會刪除該App的所有反饋信息,請注意.</p><p>刪除App點擊[刪除App]按鈕,取消刪除操作請點擊[取消]按鈕.</p><input type="hidden" id="del_app_id" ></div><div class="modal-footer"><button class="btn" data-dismiss="modal">取消(Cancel)</button><button id="btn_delApp" class="btn btn-primary">刪除App(Delete app now!)</button></div></div><div id="aboutModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">關于kFeedback</h3></div><div class="modal-body"><div class="thumbnail"><img src="img/me.png" alt="愷哥"><div class="caption"><h4>周愷(<a href="http://weibo.com/u/2697324452" target="_blank">@新浪微博</a>)</h4><p>聯通系統集成有限公司黑龍江省分公司 信息系統開發部 技術經理.</p></div></div></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button></div></div><div id="demoModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h3 id="myModalLabel">kFeedback Demo(示例)</h3></div><div class="modal-body"><h4>如何將Post-API嵌入到您的產品中</h4><div class="caption"><h5>基于Apache HttpClient(推薦)</h5><p> <pre class="prettyprint "> public static void sendFeedback(String appToken,String fb){DefaultHttpClient httpclient = new DefaultHttpClient();StringBuilder url = new StringBuilder();url.append("http://kfeedback.cloudfoundry.com/Action");try {HttpPost httpost = new HttpPost(url.toString());List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("m", "insFeedback")); params.add(new BasicNameValuePair("token", appToken)); params.add(new BasicNameValuePair("fb", fb)); httpost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));ResponseHandler<String> responseHandler = new BasicResponseHandler();httpclient.execute(httpost, responseHandler);} catch (Exception e) {}finally{httpclient.getConnectionManager().shutdown();} } </pre></p></div></div><div class="modal-footer"><button class="btn" data-dismiss="modal">Close</button></div></div></div> <!-- /container --><!-- Le javascript================================================== --><!-- Placed at the end of the document so the pages load faster --><script src="js/jquery-1.8.3.js"></script><script src="js/bootstrap.js"></script><script type="text/javascript">$(document).ready(function(){var app = "http://kfeedback.cloudfoundry.com";var url = app + "/Action?callback=?";//init login_info$("#login_email").html(sessionStorage.getItem("email")+"("+sessionStorage.getItem("empId")+")");//init app tab$("#appList").empty();//清空列表$("#appList").append("<li class=\"active\"><a href=\"#addApp\" data-toggle=\"tab\"><i class=\"icon-plus\"></i>新增App(New App)</a></li>");$.getJSON(url,{m:"getApp",empId:sessionStorage.getItem("empId")},function(json){$.each(json, function(i,item){var appInfo = "<li><a id=\""+item.app_id+"\" href=\"#"+item.app_id+"t\" data-toggle=\"tab\" title=\""+item.app_desc+"\">"+item.app_name+" - <span class=\"badge badge-info\">"+item.app_feedback_qty+"</span></a></li>";$("#appList").append(appInfo);$("#"+item.app_id).bind("click",function(){if(item.app_id == 1){if(sessionStorage.getItem("empId") == "1"){//init app detail infovar appTabContent = "<div class=\"tab-pane\" id=\""+item.app_id+"t\">";appTabContent += " <p> <div class=\"row\"> ";if(item.app_feedback_qty > 0){appTabContent += " <div class=\"span3\"><i class=\"icon-list\"></i><strong><a href=\"#\" id=\"loadAppFB"+item.app_id+"\">加載"+item.app_name+"的反饋信息</a></strong></div> ";}else{appTabContent += " <div class=\"span3\"><i class=\"icon-list\"></i><strong>"+item.app_name+"無信息</strong></div> ";}appTabContent += " <div class=\"span3\"><i class=\"icon-edit\"></i><strong><a href=\"#\" id=\"go2updApp"+item.app_id+"\">修改"+item.app_name+"的信息</a></strong></div> ";appTabContent += " <div class=\"span3\"><i class=\"icon-remove\"></i><strong><a href=\"#\" id=\"go2delApp"+item.app_id+"\">刪除"+item.app_name+"的所有信息</a></strong></div> ";appTabContent += " </div><hr> ";appTabContent += " <div class=\"row\"> ";appTabContent += " <div class=\"span2\"><p><strong>創建時間</strong></p><p>"+item.cdate+"</p></div> ";appTabContent += " <div class=\"span4\"><p><strong>描述</strong></p><p>"+item.app_desc+"</p></div> ";appTabContent += " <div class=\"span3\"><p><strong>Token</strong></p><p>"+item.app_token+"</p></div> ";appTabContent += " </div> </p> <hr> ";//init feedback infoappTabContent += " <p> ";appTabContent += " <table class=\"table table-striped\"> ";appTabContent += " <thead> ";appTabContent += " <tr> ";appTabContent += " <th>#</th> ";appTabContent += " <th><i class=\"icon-time\"></i>反饋時間(Feedback time)</th> ";appTabContent += " <th><i class=\"icon-info-sign\"></i>反饋內容(Feedback content)</th> ";appTabContent += " <th><i class=\"icon-wrench\"></i>操作(Operate)</th> ";appTabContent += " </tr> ";appTabContent += " </thead> ";appTabContent += " <tbody id=\"fb_tbody"+item.app_id+"\"> ";appTabContent += " </tbody> ";appTabContent += " </table> ";appTabContent += " </p> ";appTabContent += "</div>";$("#appList_content").append(appTabContent);}else{//init app detail infovar appTabContent = "<div class=\"tab-pane\" id=\""+item.app_id+"t\">";appTabContent += "<div class=\"input-append\">";appTabContent += " <input class=\"span6\" placeholder=\"留下您對kFeedback的感受\" id=\"feedback_info\" type=\"text\">";appTabContent += " <button class=\"btn btn-info\" id=\"bth_addFeedback"+item.app_id+"\" type=\"button\">提交反饋</button>";if(item.app_feedback_qty > 0){appTabContent += " <button class=\"btn btn-primary\" id=\"btnLoadAppFB"+item.app_id+"\" type=\"button\">加載反饋信息</button>";}appTabContent += "</div>";appTabContent += " <hr> ";appTabContent += " <div class=\"row\"> ";appTabContent += " <div class=\"span2\"><p><strong>創建時間</strong></p><p>"+item.cdate+"</p></div> ";appTabContent += " <div class=\"span4\"><p><strong>描述</strong></p><p>"+item.app_desc+"</p></div> ";appTabContent += " <div class=\"span3\"><p><strong>Token</strong></p><p>"+item.app_token+"</p></div> ";appTabContent += " </div> </p> <hr> ";//init feedback infoappTabContent += " <p> ";appTabContent += " <table class=\"table table-striped\"> ";appTabContent += " <thead> ";appTabContent += " <tr> ";appTabContent += " <th>#</th> ";appTabContent += " <th><i class=\"icon-time\"></i>反饋時間(Feedback time)</th> ";appTabContent += " <th><i class=\"icon-info-sign\"></i>反饋內容(Feedback content)</th> ";appTabContent += " <th><i class=\"icon-wrench\"></i>操作(Operate)</th> ";appTabContent += " </tr> ";appTabContent += " </thead> ";appTabContent += " <tbody id=\"fb_tbody"+item.app_id+"\"> ";appTabContent += " </tbody> ";appTabContent += " </table> ";appTabContent += " </p> ";appTabContent += "</div>";$("#appList_content").append(appTabContent);}}else{//init app detail infovar appTabContent = "<div class=\"tab-pane\" id=\""+item.app_id+"t\">";appTabContent += " <p> <div class=\"row\"> ";if(item.app_feedback_qty > 0){appTabContent += " <div class=\"span3\"><i class=\"icon-list\"></i><strong><a href=\"#\" id=\"loadAppFB"+item.app_id+"\">加載"+item.app_name+"的反饋信息</a></strong></div> ";}else{appTabContent += " <div class=\"span3\"><i class=\"icon-list\"></i><strong>"+item.app_name+"無信息</strong></div> ";}appTabContent += " <div class=\"span3\"><i class=\"icon-edit\"></i><strong><a href=\"#\" id=\"go2updApp"+item.app_id+"\">修改"+item.app_name+"的信息</a></strong></div> ";appTabContent += " <div class=\"span3\"><i class=\"icon-remove\"></i><strong><a href=\"#\" id=\"go2delApp"+item.app_id+"\">刪除"+item.app_name+"的所有信息</a></strong></div> ";appTabContent += " </div><hr> ";appTabContent += " <div class=\"row\"> ";appTabContent += " <div class=\"span2\"><p><strong>創建時間</strong></p><p>"+item.cdate+"</p></div> ";appTabContent += " <div class=\"span4\"><p><strong>描述</strong></p><p>"+item.app_desc+"</p></div> ";appTabContent += " <div class=\"span3\"><p><strong>Token</strong></p><p>"+item.app_token+"</p></div> ";appTabContent += " </div> </p> <hr> ";//init feedback infoappTabContent += " <p> ";appTabContent += " <table class=\"table table-striped\"> ";appTabContent += " <thead> ";appTabContent += " <tr> ";appTabContent += " <th>#</th> ";appTabContent += " <th><i class=\"icon-time\"></i>反饋時間(Feedback time)</th> ";appTabContent += " <th><i class=\"icon-info-sign\"></i>反饋內容(Feedback content)</th> ";appTabContent += " <th><i class=\"icon-wrench\"></i>操作(Operate)</th> ";appTabContent += " </tr> ";appTabContent += " </thead> ";appTabContent += " <tbody id=\"fb_tbody"+item.app_id+"\"> ";appTabContent += " </tbody> ";appTabContent += " </table> ";appTabContent += " </p> ";appTabContent += "</div>";$("#appList_content").append(appTabContent);}$("#bth_addFeedback"+item.app_id).bind("click",function(){var fbInfo = $("#feedback_info").val();if($.isEmptyObject(fbInfo)){$("#alertInfo").html("<p class=\"text-error\">提交反饋失敗!反饋信息不能為空!</p>");$('#myAlertModal').modal('show');}else{$.getJSON(url,{m:"insFeedback",token:"kFeedback",fb:fbInfo},function(json){if(json.result == "1"){$("#feedback_info").val("");$("#alertInfo4Reload").html("<p class=\"text-success\">新增成功!感謝您對kFeedback的支持.</p>");$('#myAlertModal4Reload').modal('show');}else{$("#alertInfo").html("<p class=\"text-error\">新增失敗!</p>");$('#myAlertModal').modal('show');}});}});$("#btnLoadAppFB"+item.app_id).bind("click",function(){$.getJSON(url,{m:"getFeedback",appId:item.app_id},function(json){//clear tbody$("#fb_tbody"+item.app_id).empty();var tbody = "";if(json.length > 0){$.each(json, function(j,feedbackItem){tbody += "<tr>";tbody += "<td>" + feedbackItem.feedback_id + "</td>";tbody += "<td>" + feedbackItem.feedback_time + "</td>";tbody += "<td>" + feedbackItem.feedback_info + "</td>";tbody += "<td><i class=\"icon-comment\"></i><strong><a href=\"#\">預留</a></strong></td>";tbody += "</tr>";});$("#fb_tbody"+item.app_id).append(tbody);}});});//bind load feedback info click event$("#loadAppFB"+item.app_id).bind("click",function(){$.getJSON(url,{m:"getFeedback",appId:item.app_id},function(json){//clear tbody$("#fb_tbody"+item.app_id).empty();var tbody = "";if(json.length > 0){$.each(json, function(j,feedbackItem){tbody += "<tr>";tbody += "<td>" + feedbackItem.feedback_id + "</td>";tbody += "<td>" + feedbackItem.feedback_time + "</td>";tbody += "<td>" + feedbackItem.feedback_info + "</td>";tbody += "<td><i class=\"icon-comment\"></i><strong><a href=\"#\">預留</a></strong></td>";tbody += "</tr>";});$("#fb_tbody"+item.app_id).append(tbody);}});});//bind updApp and delApp click event$("#go2updApp"+item.app_id).bind("click",function(){$("#upd_app_id").val(item.app_id);$("#upd_app_token").val(item.app_token);$("#upd_app_name").val(item.app_name);$("#upd_app_desc").val(item.app_desc);$('#updAppModal').modal('show');});$("#go2delApp"+item.app_id).bind("click",function(){$("#del_app_id").val(item.app_id);$("#delAppName").html("<strong>"+item.app_name+"</strong>");$('#delAppModal').modal('show');});});});});//init app tab end$("#goto_index").click(function(){//clear sessionStoragesessionStorage.clear();//forwardlocation.href = app + "/index.jsp";});$("#goto_about").click(function(){$('#aboutModal').modal('show');});$("#goto_demo").click(function(){$('#demoModal').modal('show');});$("#goto_updpwd").click(function(){$("#updPwd_error_info").html("");$("#upd_new_pwd").val("");$("#upd_new_repwd").val("");$("#loginer").html(sessionStorage.getItem("email")+"("+sessionStorage.getItem("empId")+")");$('#updPwdModal').modal('show');});$("#btn_updpwd").click(function(){var upd_new_pwd = $("#upd_new_pwd").val();var upd_new_repwd = $("#upd_new_repwd").val();if(!$.isEmptyObject(upd_new_pwd) && (upd_new_pwd == upd_new_repwd)){$.getJSON(url,{m:"updPwd",empId:sessionStorage.getItem("empId"),newPwd:upd_new_pwd},function(json){if(json.result == "1"){$("#updPwd_error_info").html("<p class=\"text-success\">修改密碼成功.</p>");$("#upd_new_pwd").val("");$("#upd_new_repwd").val("");}else{$("#updPwd_error_info").html("<p class=\"text-error\">修改密碼失敗.</p>"); }});}else{$("#updPwd_error_info").html("<p class=\"text-error\">修改密碼失敗,新密碼為空或密碼不一致,請重新嘗試.</p>");}});$("#btn_addApp").click(function(){var app_name = $("#app_name").val();var app_desc = $("#app_desc").val();if(!$.isEmptyObject(app_name) && !$.isEmptyObject(app_desc)){$.getJSON(url,{m:"insApp",empId:sessionStorage.getItem("empId"),appName:app_name,appDesc:app_desc},function(json){if(json.result == "1"){$("#app_name").val("");$("#app_desc").val("");$("#alertInfo4Reload").html("<p class=\"text-success\">App新增成功!</p>");$('#myAlertModal4Reload').modal('show');}else{$("#alertInfo").html("<p class=\"text-error\">App新增失敗!</p>");$('#myAlertModal').modal('show');}});}else{$("#alertInfo").html("<p class=\"text-error\">App名稱與描述為必填字段!</p>");$('#myAlertModal').modal('show');}});$("#btn_updApp").click(function(){var upd_app_id = $("#upd_app_id").val();var upd_app_name = $("#upd_app_name").val();var upd_app_desc = $("#upd_app_desc").val();if(!$.isEmptyObject(upd_app_id) && !$.isEmptyObject(upd_app_name) && !$.isEmptyObject(upd_app_desc)){$.getJSON(url,{m:"updApp",appId:upd_app_id,appName:upd_app_name,appDesc:upd_app_desc},function(json){if(json.result == "1"){$("#upd_app_id").val("");$("#upd_app_token").val("");$("#upd_app_name").val("");$("#upd_app_desc").val("");$('#updAppModal').modal('hide');$("#alertInfo4Reload").html("<p class=\"text-success\">App修改成功!</p>");$('#myAlertModal4Reload').modal('show');}else{$("#alertInfo").html("<p class=\"text-error\">App修改失敗!</p>");$('#myAlertModal').modal('show');}});}else{$("#updApp_error_info").html("<p class=\"text-error\">App名稱與描述為必填字段!</p>");}});$("#btn_delApp").click(function(){$.getJSON(url,{m:"delApp",appId:$("#del_app_id").val()},function(json){if(json.result == "1"){$("#del_app_id").val("");$('#delAppModal').modal('hide');$("#alertInfo4Reload").html("<p class=\"text-success\">App刪除成功!</p>");$('#myAlertModal4Reload').modal('show');}else{$("#alertInfo").html("<p class=\"text-error\">App刪除失敗!</p>");$('#myAlertModal').modal('show');}});});$('#myAlertModal4Reload').on('hidden', function () {location.reload(true);//是的,我承認我偷懶了});});</script></body> </html> 以上就是kFeedback的所有代碼,配置文件比較簡單,我就不提供了,如有需要,可給我留言。


    為了方便大家學習和調試代碼,我將完整的工程提供給大家,歡迎斧正

    https://github.com/kongit/kFeedback

    http://git.oschina.net/kzhou-hrb/kfeedback


    轉載于:https://my.oschina.net/kzhou/blog/100731

    總結

    以上是生活随笔為你收集整理的kFeedback开源啦的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    狠狠色丁香九九婷婷综合五月 | 在线免费观看一区二区三区 | 91中文字幕在线观看 | 97免费中文视频在线观看 | 99麻豆视频 | 久久免费美女视频 | 正在播放一区 | 国产成人黄色av | 国产又粗又猛又爽又黄的视频先 | 久久久久久美女 | 国产精品乱码久久久久久1区2区 | 午夜18视频在线观看 | 天天综合网国产 | 91在线精品一区二区 | 91成年人在线观看 | 特黄色大片 | 中文字幕色综合网 | 国产日韩精品一区二区 | 男女精品久久 | a黄色大片| av在线网站大全 | 亚洲高清资源 | 国产白浆视频 | av中文字幕在线播放 | 久久久精选 | 成人av日韩 | 黄色网在线免费观看 | 激情综合网色播五月 | 综合网婷婷 | 日韩免费播放 | 欧美无极色 | 少妇精品久久久一区二区免费 | 久久久私人影院 | 2022国产精品视频 | www.人人草| 亚洲第一香蕉视频 | 亚洲人成人在线 | 久久一区二区三区超碰国产精品 | 99性视频| 爱情影院aqdy鲁丝片二区 | 麻豆视频在线免费观看 | 亚洲另类人人澡 | 91亚洲免费 | 91大神精品视频在线观看 | 午夜精品三区 | 日韩电影一区二区三区 | 特级黄录像视频 | 国产精品爽爽久久久久久蜜臀 | 97品白浆高清久久久久久 | 少妇搡bbbb搡bbb搡aa | 久久久片 | 久久久久久久久久久福利 | 久久综合福利 | 亚洲一级二级三级 | 一级成人免费视频 | 成人黄色影片在线 | 日本公妇在线观看高清 | 狠狠干中文字幕 | 黄免费在线观看 | av片子在线观看 | 欧美一区二视频在线免费观看 | 久久国产精品久久国产精品 | 涩涩网站在线播放 | 亚洲精品综合一区二区 | 日本中出在线观看 | 四虎伊人 | 欧美一级在线观看视频 | 97人人澡人人添人人爽超碰 | 亚洲爱视频| 四虎永久免费网站 | 日日夜夜天天久久 | 91九色蝌蚪视频网站 | 色综合天天综合 | 激情网站五月天 | 日韩免费网站 | www.狠狠插.com| 中文字幕色在线 | 欧美aa级| 狠狠亚洲 | 国产精品99久久久久久久久 | 玖玖视频网 | 久久久久欧美精品999 | 久久久毛片 | av在线电影网站 | 国产精品爽爽久久久久久蜜臀 | 国产成在线观看免费视频 | 欧美二区视频 | 精品一二区 | 国产涩涩网站 | 久99久在线 | 久草在线视频首页 | 国产欧美久久久精品影院 | 国产一级片播放 | 高清av免费一区中文字幕 | 成人观看视频 | 国产精品永久在线观看 | 中文字幕电影高清在线观看 | 人人爱爱人人 | 亚洲国内精品视频 | 狠狠色狠狠色综合系列 | 国产精品国产三级国产aⅴ无密码 | 免费观看一级一片 | 久久99久久久久 | 91麻豆精品国产午夜天堂 | 婷婷亚洲综合五月天小说 | 欧美日本在线视频 | 久久午夜国产精品 | 久久久精品网站 | 天天色官网 | 日韩在观看线 | 国产精品白浆视频 | 99精品国产一区二区三区不卡 | 国产精品一区欧美 | 久久99久久99精品免观看粉嫩 | 免费久久精品视频 | 日韩欧美专区 | 日韩精品欧美专区 | 国产成人在线免费观看 | a级片韩国 | 成人黄色在线看 | 色资源网在线观看 | 国产精品久久久777 成人手机在线视频 | 日韩av电影一区 | 国产午夜精品久久久久久久久久 | 免费在线观看视频a | 久久影院午夜论 | 久久精品综合视频 | 亚洲精品午夜视频 | 色在线视频网 | 日日夜夜免费精品 | 丁香在线观看完整电影视频 | 怡红院av久久久久久久 | 色综合天天 | 狠狠色狠狠综合久久 | 日韩欧美专区 | 国产精品婷婷 | 日日夜夜精品免费观看 | 正在播放国产精品 | 亚洲欧美日韩国产精品一区午夜 | 国产精品免费一区二区三区在线观看 | 91大神视频网站 | 亚洲毛片久久 | 九九九九九精品 | 奇米影视777影音先锋 | 色婷婷综合五月 | 一区二区三区免费在线观看 | 精品国产一区二区三区久久久蜜臀 | av免费高清观看 | 久一久久 | www亚洲国产 | 97人人模人人爽人人喊网 | 在线观看亚洲免费视频 | 中文乱幕日产无线码1区 | 免费看在线看www777 | 亚洲 综合 国产 精品 | 成年人三级网站 | 日韩精品免费一区二区三区 | 日韩电影在线视频 | 一区二区不卡视频在线观看 | 国产特级毛片aaaaaaa高清 | 波多野结衣电影一区 | 亚洲精品美女 | 黄色小说视频在线 | 中文字幕第 | 欧美日韩久久不卡 | 九九免费在线观看视频 | 91av视频免费观看 | 午夜a区| 麻豆免费视频网站 | 一区二区三区电影在线播 | 一区二区三区在线免费 | 一区二区三区国产精品 | 免费观看v片在线观看 | 国产精品福利视频 | 97久久久免费福利网址 | 中文字幕在线观看完整版 | 天天草夜夜 | 一级黄色电影网站 | 久久久久亚洲精品中文字幕 | 毛片久久久 | 91精品对白一区国产伦 | 欧美不卡在线 | 日韩在线第一 | 日韩欧美69| 成人免费看片98欧美 | 亚洲成人资源在线观看 | 婷婷久久亚洲 | 香蕉97视频观看在线观看 | av在线专区 | 久久久受www免费人成 | 日本资源中文字幕在线 | 午夜精品久久久久久久99婷婷 | 91精品一区二区三区久久久久久 | 久久视频免费 | a成人在线 | 日韩av进入 | 亚洲高清在线 | 99国产免费网址 | 日韩欧美精品一区二区三区经典 | 久免费视频 | 国产综合久久 | 国产日韩在线看 | 国产麻豆视频网站 | 伊人小视频 | 亚洲精选在线 | 成 人 黄 色视频免费播放 | 成人免费在线观看入口 | 国产在线免费观看 | 96视频免费在线观看 | 亚洲天堂网在线观看视频 | 操碰av| 日韩一区在线播放 | 在线播放日韩 | 免费看特级毛片 | 精品一区精品二区 | 正在播放 国产精品 | 欧美午夜性生活 | 国产精品二区在线观看 | 国内精品久久久久久久97牛牛 | 欧美一级久久 | 久久激情小说 | 99在线免费观看视频 | 国产日本在线 | 亚洲欧美观看 | 人人爽夜夜爽 | 大荫蒂欧美视频另类xxxx | 中文字幕一区二区三区乱码在线 | 免费毛片一区二区三区久久久 | 91在线一区二区 | 国产成人专区 | 国产精品久久精品国产 | 成人免费视频播放 | 97超碰人人澡人人爱 | 久久久久99精品国产片 | 久久av免费观看 | 日日操天天操夜夜操 | 不卡中文字幕在线 | 久久精品中文字幕少妇 | ,午夜性刺激免费看视频 | 亚洲精选视频在线 | 欧洲一区二区三区精品 | 婷婷午夜 | 亚洲区色 | 中日韩欧美精彩视频 | 激情校园亚洲 | 国产999精品久久久影片官网 | 成人黄色资源 | 国产日韩高清在线 | 婷婷电影在线观看 | 91插插插网站 | 最新极品jizzhd欧美 | 久久艹国产 | 中文字幕欲求不满 | 久久天天躁夜夜躁狠狠85麻豆 | 国产精品永久久久久久久久久 | 国产午夜三级一二三区 | 久久不卡免费视频 | 日韩中文三级 | 深爱激情站 | 日本精品视频在线播放 | 国产成人精品午夜在线播放 | 国产精品高潮呻吟久久久久 | 久草久草视频 | 精品视频免费看 | 怡红院av久久久久久久 | 久久国产a | 99热亚洲精品 | 日韩欧美在线一区 | 国产精品1区2区3区 久久免费视频7 | 99视频在线精品国自产拍免费观看 | 97网在线观看 | av官网| 欧美另类xxxxx| 国产精品一区免费观看 | 精品一区二区日韩 | 天天操操操操操 | 狠狠色狠狠色综合日日小说 | 97成人在线视频 | 日韩av在线一区二区 | 97视频在线免费播放 | 婷婷久久综合九色综合 | 国产女教师精品久久av | 亚洲精品色视频 | 欧美色综合天天久久综合精品 | 国产精品系列在线观看 | 在线观看黄色大片 | 一区二区三区动漫 | 女人18毛片a级毛片一区二区 | 极品久久久久久久 | 婷婷丁香激情五月 | 久久视频一区 | 少妇视频一区 | 福利视频精品 | 亚洲精品视频www | 国产污视频在线观看 | 国产高清久久久久 | 91精品亚洲影视在线观看 | 久久久精品久久日韩一区综合 | 91网站观看 | 五月天久久 | 91九色网站 | 深爱综合网 | 99久久久久久久久 | 视频一区久久 | 美女福利视频在线 | 制服丝袜一区二区 | av三级在线看 | 一级免费av | 日操操| 日韩欧美精品一区二区三区经典 | 国产三级精品三级在线观看 | 精精国产xxxx视频在线播放 | 天天干天天在线 | 天天插视频 | 欧美a在线免费观看 | 视频在线观看一区 | 精品伦理一区二区三区 | 在线国产一区 | 日韩一区二区三区观看 | 九九热在线观看视频 | 99热在线精品观看 | 久久亚洲综合色 | 日韩电影黄色 | 日韩av一区二区三区 | 久保带人 | 国产三级视频在线 | 精品久久久久久国产 | 欧美精品中文在线免费观看 | 久久精品国产一区二区三 | 日韩专区 在线 | 深爱开心激情网 | a在线免费观看视频 | 免费中文字幕视频 | 狠狠干夜夜操 | 久久精品老司机 | 中文字幕在线观看播放 | 日本在线观看一区二区 | 69国产成人综合久久精品欧美 | 欧美 日韩 国产 中文字幕 | 日韩成人邪恶影片 | 美女免费视频观看网站 | 中文在线a在线 | 久草在线免费看视频 | 亚洲欧洲精品久久 | 中文字幕在线观看网 | 九九热免费视频在线观看 | 国产成a人亚洲精v品在线观看 | 亚洲高清视频在线播放 | 中文视频在线看 | 91自拍成人| 国产精品v欧美精品 | 九九热免费在线视频 | 国产免费嫩草影院 | a√天堂中文在线 | 免费日韩 精品中文字幕视频在线 | 国产亚洲欧美精品久久久久久 | 狠狠色伊人亚洲综合网站野外 | 这里只有精品视频在线观看 | av一二三区| 日韩午夜电影网 | 最近中文字幕在线播放 | 国产91成人在在线播放 | 九九热在线免费观看 | 亚洲精品www久久久久久 | 97超碰人人干 | 国产精国产精品 | 久一久久 | 在线看av的网址 | 日本h视频在线观看 | 久久成人国产精品入口 | 天天射天天添 | 99热国内精品 | 成人资源网 | 久草在线费播放视频 | 激情久久综合 | 99这里都是精品 | 国产美女无遮挡永久免费 | 99国产情侣在线播放 | 91久久久国产精品 | 国产精品黄网站在线观看 | 探花视频免费在线观看 | 4438全国亚洲精品观看视频 | 高清av免费观看 | 伊人激情网 | 最近最新中文字幕 | 99精品黄色 | 久久人人97超碰国产公开结果 | 成人资源站| 在线免费观看黄色 | 精品免费在线视频 | 欧美日本一二三 | 欧洲不卡av | 亚洲三级国产 | 一区二区视频在线看 | 黄色免费观看视频 | 久久精品这里热有精品 | 久久久久久久久艹 | 99热在线网站| 91久久爱热色涩涩 | 国产v在线观看 | 天天综合久久综合 | 91久久久国产精品 | 久久激情视频 久久 | 五月天最新网址 | 中文字幕日本在线 | 91夜夜夜 | 激情视频综合网 | 色综合久久中文字幕综合网 | 欧美在线观看视频一区二区三区 | 国产精品成人免费 | 久久精品欧美 | 中文字幕美女免费在线 | 日韩一区二区在线免费观看 | 亚洲精品网页 | 国产资源网 | 在线免费黄色av | 国产精品久久久久久久久久 | 成人a视频片观看免费 | 91新人在线观看 | 麻豆国产精品视频 | 国产精品久久久一区二区三区网站 | 精品国产1区2区3区 国产欧美精品在线观看 | 911精品视频 | 免费福利片2019潦草影视午夜 | 亚洲永久国产精品 | 午夜av电影院 | 99久久精品网 | 国产午夜在线观看 | 91干干干 | 亚洲第一伊人 | av成人动漫在线观看 | 亚洲一本视频 | 黄在线免费看 | 在线国产视频一区 | 99热在线免费观看 | 97视频资源| 欧美成年性 | 九草在线视频 | 免费毛片aaaaaa | 婷婷在线免费观看 | 五月天网页 | 国产精品综合久久久久久 | 中文字幕在线看视频国产 | 亚洲日韩中文字幕 | 婷婷综合视频 | 日本中文字幕在线播放 | 天天干天天插 | 欧美一区二区在线免费看 | 国内精品久久久久久 | 国产精品视频在线看 | 在线观看一区 | 美女视频永久黄网站免费观看国产 | 国产黄在线看 | 激情影院在线观看 | 久久精品站 | 字幕网在线观看 | 久久精品中文视频 | 精品久久久久久综合日本 | 日韩精品视频免费在线观看 | 久久在线视频在线 | 中文字幕视频三区 | 福利一区视频 | 美女免费视频观看网站 | www.香蕉视频在线观看 | 成人午夜片av在线看 | 中文字幕高清免费日韩视频在线 | 91精品啪在线观看国产线免费 | 亚洲午夜精品福利 | 青青久草在线视频 | 国产一区免费看 | 久草精品视频在线看网站免费 | 2020天天干天天操 | 久久视频国产 | 中文字幕在线观看av | 综合在线亚洲 | 国产人成一区二区三区影院 | 精品人人人 | 久久国精品 | 国产香蕉97碰碰久久人人 | 91精品国自产拍天天拍 | 国产免费视频一区二区裸体 | 欧美一级大片在线观看 | 久草在线视频免费资源观看 | 精品久久福利 | 99人久久精品视频最新地址 | 精品国产一区二区三区男人吃奶 | 视频一区在线播放 | 欧美日韩免费看 | 美女福利视频网 | 国产在线高清精品 | 西西4444www大胆视频 | 激情久久五月 | 久久66热这里只有精品 | 黄色高清视频在线观看 | 92国产精品久久久久首页 | 中文字幕乱码亚洲精品一区 | 日韩毛片精品 | 中文字幕超清在线免费 | 久久久久99999 | 在线免费观看的av | 午夜国产一区 | 久久精品直播 | 少妇搡bbbb搡bbb搡69 | 色wwww| 天天舔天天射天天操 | 欧美一区二区三区四区夜夜大片 | 奇米影视999 | av在线免费观看黄 | 成人国产精品一区 | 久久久久久网站 | 成人av资源在线 | 午夜精品久久久久久久久久 | 久久久久久久网站 | 91精品麻豆 | 亚洲免费国产视频 | 亚洲精品高清在线 | 九色激情网 | 欧美日韩高清在线 | 成年人视频免费在线播放 | 午夜在线免费观看 | 超碰公开在线观看 | 日本精品久久久久 | 欧美人人 | 婷婷九九| 久久曰视频 | adc在线观看 | 色综合久久五月 | 五月婷婷激情 | 免费日韩av片 | 97天天干 | 在线观看色网站 | 日韩中文字幕免费在线观看 | 精品国产一区二区三区不卡 | 亚洲国产午夜精品 | 97人人超碰在线 | 在线黄色国产电影 | 国产一区二区三区免费视频 | 九九视频免费在线观看 | 色综合天天在线 | 欧美日韩精品在线免费观看 | 夜夜躁狠狠燥 | 亚洲国产精品999 | 久草电影免费在线观看 | 日韩在线观看视频网站 | 久久久久高清 | 久久视频国产 | 黄色一级免费 | 久久不见久久见免费影院 | 国产69精品久久99的直播节目 | 黄色的片子 | 国产精品乱看 | 亚洲最新av | av电影免费看 | 日韩免费观看视频 | 午夜精品久久一牛影视 | av在线网站免费观看 | 久久精品欧美一 | 日产乱码一二三区别在线 | 欧美成人精品在线 | 国产精品久久久久免费 | 欧美精品一区在线发布 | 免费黄色a网站 | 高清不卡免费视频 | 天天插天天色 | 麻豆91在线 | 日韩一级电影在线观看 | 免费黄在线观看 | 日韩精品中文字幕有码 | 色就色,综合激情 | 成片免费观看视频 | 97精品国产97久久久久久免费 | 国产高清精品在线 | 五月综合激情网 | 精品久久美女 | 国产精品久久久久影院日本 | 国产精品美女久久久 | 一区二区三区手机在线观看 | 麻豆极品 | 午夜91在线 | 国产在线久久久 | 午夜国产一区 | 免费日韩高清 | 亚洲一区二区视频在线播放 | 二区在线播放 | 不卡视频一区二区三区 | 亚洲va韩国va欧美va精四季 | 9999精品视频 | 欧美大片在线观看一区 | 国产精品女 | 在线日韩视频 | 麻豆91在线观看 | 91禁在线看 | 日韩性网站 | 午夜骚影| 成年人在线观看 | 99久热在线精品视频成人一区 | 91视频91蝌蚪 | 欧美日韩激情视频8区 | 久久99久久精品国产 | 久久精品综合一区 | 一级黄色片在线播放 | 国产精品男女视频 | 成人a视频片观看免费 | 国产一级a毛片视频爆浆 | 欧美性生活小视频 | 国产精品亚洲综合久久 | 免费看黄网站在线 | 色综合 久久精品 | www五月| 国产一区在线免费观看 | 久久亚洲欧美 | www麻豆视频| 日韩视频免费看 | 婷婷在线观看视频 | 亚洲成人家庭影院 | 中文字幕在线观看91 | 96久久欧美麻豆网站 | 婷婷综合激情 | 午夜精品久久久久久久99水蜜桃 | 中文字幕你懂的 | 欧美久久电影 | 日韩三级中文字幕 | 伊人影院在线观看 | 国产在线中文字幕 | 久久成人麻豆午夜电影 | 视频1区2区 | 久久久久这里只有精品 | 综合色亚洲 | 欧美一级xxxx| 国产精品初高中精品久久 | 国产精品色在线 | 国产免费嫩草影院 | 国产精品久久久久久久午夜片 | 精品欧美一区二区精品久久 | 99热超碰在线 | 亚洲无吗天堂 | 91精品国产99久久久久 | 午夜精品久久久久久久99无限制 | 日韩av三区| 狠狠干综合 | 国产精品欧美久久久久三级 | 成人小视频在线播放 | 在线观看视频你懂得 | 日韩在线第一区 | 夜夜嗨av色一区二区不卡 | 91大神在线观看视频 | 91av电影网 | 日韩高清免费在线观看 | 免费涩涩网站 | 91尤物在线播放 | 天天人人| 丁香激情婷婷 | 久久精品这里都是精品 | 日韩有码中文字幕在线 | 在线免费观看黄 | 欧美高清成人 | 日韩经典一区二区三区 | 欧美性极品xxxx娇小 | 综合激情伊人 | 成人精品电影 | 91成人精品一区在线播放69 | 国产电影黄色av | 欧美一二三区在线观看 | 中文字幕在线看 | 国产第一页在线观看 | 911久久香蕉国产线看观看 | 国产亚洲精品久久19p | 精品国产一区二区三区蜜臀 | 91在线91拍拍在线91 | 亚洲综合精品在线 | 国产高清视频在线 | 欧美日韩高清一区二区 | 久久草av | 98涩涩国产露脸精品国产网 | 五月婷网站 | 久久国产精品二国产精品中国洋人 | 一本一本久久a久久精品综合 | 五月婷婷影院 | 久久国产精品久久久久 | 免费看一级片 | 又黄又爽又无遮挡的视频 | 国产精品嫩草影院99网站 | 日韩网站免费观看 | 月下香电影 | 久久久久国产精品视频 | 黄色网址在线播放 | 在线亚洲欧美日韩 | 日韩精品在线播放 | www久久久 | 国内外成人在线 | 美女视频久久 | 国产99免费视频 | 日免费视频| 久久国产精彩视频 | 中文 一区二区 | 色吧av色av| 伊人亚洲综合网 | 日韩av免费一区二区 | 久久国产精品久久久久 | 国产999视频在线观看 | 精品久久久久久国产 | 日韩三级不卡 | 久久精品免费观看 | 国产99爱| 主播av在线 | 久久久久亚洲精品中文字幕 | 成人久久18免费网站麻豆 | 亚洲aⅴ乱码精品成人区 | www.色午夜.com | 97超碰人人模人人人爽人人爱 | 国产91影院| 日韩视频免费观看高清完整版在线 | 中文视频在线播放 | 九七视频在线 | 免费在线观看成人 | 超碰在线9 | 久草电影网| 99视频在线看 | 欧美日产在线观看 | 亚洲天天综合 | 五月婷婷一区 | 99色网站| 狠狠网亚洲精品 | 国产精品一区二区三区四区在线观看 | 国产精品成久久久久 | 亚洲 欧美 另类人妖 | 亚洲人av免费网站 | 亚洲天堂激情 | 成人免费观看完整版电影 | 天堂久久电影网 | 久久国产综合视频 | 五月天色网站 | 亚洲精品国产精品国自产观看浪潮 | 亚洲婷婷在线 | 亚洲国产mv | 99免费在线观看 | 亚洲激情电影在线 | 欧美网站黄色 | 日韩美一区二区三区 | 日韩精品一区二区三区水蜜桃 | 国产网红在线 | 久久精品久久精品久久 | 久久久久久久久免费 | 五月婷婷影院 | 中文字幕在线久一本久 | 欧美色精品天天在线观看视频 | 久久久久久久久久久影视 | 国产人成看黄久久久久久久久 | 天天操夜夜看 | 久久激情视频 | 欧美一级性生活片 | 国产一区av在线 | 91精品久久久久久 | 91福利小视频| 精品在线亚洲视频 | 国产精品丝袜久久久久久久不卡 | 婷婷色网视频在线播放 | 在线观看黄污 | 欧美视频在线观看免费网址 | 狠狠狠色丁香婷婷综合激情 | 99视频在线精品 | 一区免费观看 | 狠狠躁日日躁狂躁夜夜躁 | 日韩动态视频 | 国产99免费 | 国产精品视频大全 | 亚洲午夜精品在线观看 | 青青视频一区 | 99免费精品| 99精品国产99久久久久久福利 | 在线观看中文字幕亚洲 | 香蕉在线视频观看 | 国产成人三级在线观看 | 国产专区在线播放 | 91成人免费电影 | 色婷婷狠狠五月综合天色拍 | 日日夜夜免费精品视频 | 久久无码av一区二区三区电影网 | 成人影视免费看 | www成人精品 | 九九热精 | 在线之家免费在线观看电影 | 国产免码va在线观看免费 | 亚洲精品理论片 | 手机看片中文字幕 | 二区三区在线观看 | 亚洲热视频 | 国产精品麻豆99久久久久久 | 久久国产剧场电影 | 人人舔人人干 | 五月婷香| 日韩av快播电影网 | 亚洲一一在线 | 91精品看片| 国产黄av | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91精品国产福利在线观看 | 久久久久免费精品视频 | 欧美色噜噜 | www.五月天婷婷 | 成人手机在线视频 | 久久99国产一区二区三区 | 亚洲成a人片在线www | 天天综合天天综合 | 国产最新在线观看 | 久久精品国产第一区二区三区 | 国产一区二区不卡在线 | 亚洲黄色高清 | 香蕉影视app| 岛国大片免费视频 | 国产91精品久久久久久 | 五月婷婷六月丁香 | 精品欧美一区二区在线观看 | 97超碰人人模人人人爽人人爱 | 国产高清免费av | 欧美久久久久久久久久久久久 | 亚洲第一久久久 | 国产直播av| 91九色自拍| 四虎影视国产精品免费久久 | 性色va| 1024手机看片国产 | 国内精品视频在线 | 国产亚洲免费观看 | 久草在| 国产三级国产精品国产专区50 | av免费电影网站 | 亚洲精品理论 | 亚洲精品国产第一综合99久久 | 在线观看成人福利 | 在线播放日韩 | 中文字幕专区高清在线观看 | 日韩中文在线电影 | 色黄视频免费观看 | 亚洲精品国产精品乱码在线观看 | 中文字幕丰满人伦在线 | 91九色蝌蚪国产 | 国产在线观看,日本 | 亚洲成人一二三 | 99久热在线精品 | 日韩欧美精品在线 | 国产玖玖在线 | 超碰免费公开 | 在线一二三四区 | 欧美了一区在线观看 | 欧美日韩国产一区二区三区在线观看 | 中文乱码视频在线观看 | 久草在线资源观看 | 国产99久久久国产精品 | 美女免费av | 精品成人久久 | 国产乱码精品一区二区三区介绍 | 日本在线观看黄色 | 91亚洲欧美 | 日韩视频一区二区三区在线播放免费观看 | 久久成人在线视频 | 丁香5月婷婷久久 | 久久男人中文字幕资源站 | 日韩一级片网址 | 日本三级久久 | 成人免费在线观看av | 最近中文字幕国语免费av | 中文字幕免费在线看 | 米奇影视7777 | 黄色在线观看免费 | 日本不卡123| 国产手机视频在线 | 国产精品久久久久久久久久不蜜月 | 人人爽人人爱 | 在线观看网站你懂的 | 欧美精品一区二区免费 | 久久久久五月 | 黄色亚洲| 91手机视频在线 | 成人午夜剧场在线观看 | 欧美999| 超碰免费久久 | 久久久久激情 | 国产精品久久久av久久久 | 亚洲一区二区黄色 | 成人资源站| 91插插插免费视频 | 亚洲综合视频在线播放 | 日韩高清一区二区 | 国产精品网红直播 | 91av中文字幕 | 亚洲欧美国产视频 | 成年人视频在线 | 天天干天天操天天拍 | 国产97碰免费视频 | 久久久久久久免费 | 丁香婷婷自拍 | 亚洲婷婷综合色高清在线 | 亚洲特级片 | 日韩精品久久久久久久电影99爱 | 精品嫩模福利一区二区蜜臀 | 97av视频在线观看 | 韩国在线视频一区 | 日韩在线小视频 | 国内精品国产三级国产aⅴ久 | 97免费在线观看 | 欧美精品久久久久久久久老牛影院 | 久久国产精品久久w女人spa | 免费成人av在线看 | 麻豆影视网 | 99九九热只有国产精品 | 亚洲视频 在线观看 | 97激情影院 | 国产精品视频你懂的 | 欧美天天综合网 | 国产精品中文在线 | 制服丝袜成人在线 | 色综合婷婷 | 亚洲国产中文在线 | 久久 国产一区 | 精品国产视频在线观看 | 国产黄色av影视 | 婷婷九九| 国产盗摄精品一区二区 | av片一区 | 激情丁香综合 | 日韩欧美高清免费 | wwwwww黄| 国产最新在线 | 日韩视频免费在线观看 | 99免费观看视频 | 高清免费av在线 | 夜夜躁狠狠躁日日躁视频黑人 | 成年人免费观看国产 | 97国产精品亚洲精品 | 99操视频| 日韩欧美专区 | 国产亚洲一区 | 久久精品久久精品久久 | 久久久久国| 香蕉日日 | 91国内产香蕉 | 六月丁香六月婷婷 | 久久久久久久久久久网站 | 国产成人精品电影久久久 | 日韩a在线 | 国产精品一区二区三区四区在线观看 | 国产在线a视频 | 在线观看精品国产 | 国产伦精品一区二区三区… | 久久成人免费视频 | 91久久黄色 | 日韩试看 | 在线成人免费av | 日韩xxxx视频| 人人涩 | 国产综合片 | 天天操天天草 | 天天干天天草天天爽 | www.国产在线观看 | 久久久色| 在线免费观看黄色 | 亚洲一级片av | 亚洲欧美国产精品 | 亚洲国产午夜 | 日韩欧美一区二区三区在线观看 | 欧美色伊人 | 国产精品21区 | 91精品啪在线观看国产 | 手机在线观看国产精品 | 操操操影院 | 最近中文字幕在线 | 视频在线亚洲 | 91免费黄视频| 一级黄色视屏 | 久久精品一二三区白丝高潮 | 欧美福利精品 | 精品夜夜嗨av一区二区三区 | 香蕉97视频观看在线观看 | 国产一级做a | 亚洲成人黄色在线 | 亚洲成人动漫在线观看 | 久久成人福利 | 在线观看av的网站 | 国产免费资源 | 91日韩精品视频 | 草久在线观看视频 | 国产精品福利视频 | 白丝av在线 | 久久一久久 | 91漂亮少妇露脸在线播放 | 国产一区二区在线免费播放 | 成人动漫精品一区二区 | 免费观看一区 | 日本电影久久 | 亚洲劲爆av| 日本一区二区三区视频在线播放 | 超碰com| 黄色动态图xx | 国产欧美在线一区 | 久草免费在线视频观看 | 中文字幕乱偷在线 | 狠狠色丁香久久婷婷综 |