久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

金蝶云星空k3cloud插件開發(fā)入門:從環(huán)境搭建到事件觸發(fā)

金蝶云星空k3cloud插件開發(fā)入門:從環(huán)境搭建到事件觸發(fā) 簡介本資源是一份面向K/3 Cloud初學(xué)者的BOS插件開發(fā)入門指南聚焦企業(yè)個性化業(yè)務(wù)擴(kuò)展場景系統(tǒng)講解插件開發(fā)環(huán)境搭建、四類核心插件動態(tài)表單、服務(wù)、校驗(yàn)規(guī)則、表單構(gòu)建的定位與應(yīng)用以及BOS架構(gòu)模型與開發(fā)實(shí)操要點(diǎn)。文檔內(nèi)容覆蓋VS2012開發(fā)配置、SQL Server/Oracle數(shù)據(jù)庫要求、IIS與Silverlight客戶端適配、編譯路徑設(shè)置及插件注冊調(diào)試全流程并附有Hello World級代碼示例與關(guān)鍵配置注意事項(xiàng)。資源為單文件Word文檔.docx共1個文件大小1.9MB格式規(guī)范、圖文結(jié)合便于邊學(xué)邊練。目前已有216人學(xué)習(xí)下載適合零基礎(chǔ)開發(fā)者快速建立BOS插件開發(fā)認(rèn)知框架掌握從環(huán)境部署到簡單功能擴(kuò)展的完整能力鏈。1. 初學(xué)者為什么一上手 k3cloud 插件開發(fā)就卡在“連不上系統(tǒng)”和“改了代碼不生效”這不是你環(huán)境沒配好而是你還沒摸清 k3cloud 插件開發(fā)的底層契約它不是寫個獨(dú)立程序扔進(jìn)去就能跑的 Web 應(yīng)用而是一套深度嵌入金蝶云·星空k3cloud服務(wù)端生命周期的事件驅(qū)動式擴(kuò)展機(jī)制。插件本質(zhì)是 .NET Framework 4.5 編譯的 DLL必須通過 k3cloud 的「插件管理」界面注冊、啟用并由其宿主進(jìn)程K3Cloud.WebApi.exe 或 K3Cloud.ServiceHost.exe動態(tài)加載——這意味著本地調(diào)試不能靠 F5 啟動編譯輸出不能直接復(fù)制粘貼連日志都得去服務(wù)器上的K3Cloud\Logs目錄翻。我見過太多某高校實(shí)訓(xùn)班學(xué)員花三天配 IIS、裝 SQL Server、調(diào) CORS結(jié)果第一行Log.Info(插件已加載)死活不出現(xiàn)在日志里最后發(fā)現(xiàn)只是插件未在【系統(tǒng)管理】→【插件管理】里點(diǎn)“啟用”。本文不講抽象概念只拆解一個初學(xué)者能當(dāng)天復(fù)現(xiàn)、當(dāng)天看到日志、當(dāng)天觸發(fā)第一個業(yè)務(wù)事件的最小閉環(huán)從新建類庫項(xiàng)目開始到在單據(jù)保存時彈出自定義校驗(yàn)提示。所有步驟基于 k3cloud V7.5 SP2 及以上版本實(shí)測適配當(dāng)前主流部署形態(tài)IIS SQL Server避坑點(diǎn)全部來自某公司內(nèi)部插件開發(fā)規(guī)范文檔與三年線上事故回溯。2. 用 Visual Studio 2019 創(chuàng)建可被 k3cloud 識別的插件項(xiàng)目k3cloud 對插件項(xiàng)目的結(jié)構(gòu)、引用、簽名有硬性要求。常見錯誤是直接新建 ASP.NET Web 項(xiàng)目或 .NET Core 類庫——這兩者在 k3cloud 宿主進(jìn)程里根本無法加載。必須嚴(yán)格使用 .NET Framework 類庫Class Library且目標(biāo)框架鎖定為.NET Framework 4.5.2V7.5 默認(rèn)最低支持版本高版本如 4.8 雖可運(yùn)行但部分反射 API 行為有差異不建議新手越級。2.1 新建項(xiàng)目并配置基礎(chǔ)屬性打開 Visual Studio 2019VS2022 對 .NET Framework 4.5.2 支持不穩(wěn)定生產(chǎn)環(huán)境仍推薦 VS2019執(zhí)行文件 → 新建 → 項(xiàng)目 → 模板Visual C# → 類庫 (.NET Framework) 項(xiàng)目名稱K3Cloud.Plugin.Demo 目標(biāo)框架.NET Framework 4.5.2提示項(xiàng)目名無需帶“K3Cloud”前綴但建議按K3Cloud.Plugin.[業(yè)務(wù)域]命名便于后期在插件管理界面識別。不要勾選“創(chuàng)建解決方案目錄”避免路徑嵌套過深導(dǎo)致發(fā)布失敗。創(chuàng)建后右鍵項(xiàng)目 → 【屬性】→ 【應(yīng)用程序】選項(xiàng)卡程序集名稱K3Cloud.Plugin.Demo默認(rèn)命名空間K3Cloud.Plugin.Demo程序集版本1.0.0.0后續(xù)升級需同步修改k3cloud 按版本號判斷是否覆蓋2.2 添加 k3cloud SDK 核心引用k3cloud 不提供 NuGet 包所有 SDK 引用必須從已部署的 k3cloud 服務(wù)器上提取。登錄運(yùn)行 k3cloud 的 Windows 服務(wù)器定位到以下路徑以默認(rèn)安裝為例C:\Program Files (x86)\Kingdee\K3Cloud\Server\Bin\從中拷貝以下 4 個 DLL 到本地開發(fā)機(jī)放入項(xiàng)目根目錄下新建的Libs文件夾文件名作用說明Kingdee.BOS.dllBOS 平臺核心提供元數(shù)據(jù)、上下文、服務(wù)總線訪問Kingdee.BOS.Core.dllBOS 核心邏輯含實(shí)體基類、服務(wù)契約定義Kingdee.BOS.App.Data.dll數(shù)據(jù)訪問層封裝含DBUtils、SqlBuilder等常用工具Kingdee.BOS.Contracts.dll服務(wù)契約接口定義如IInteractorService在 VS 中右鍵【引用】→ 【添加引用】→ 【瀏覽】→ 選擇這 4 個 DLL。關(guān)鍵動作選中每個引用 → 右側(cè)屬性窗口 → 將【復(fù)制到輸出目錄】設(shè)為“不復(fù)制”。k3cloud 宿主進(jìn)程會從自身 Bin 目錄加載這些程序集插件 DLL 中若包含副本會導(dǎo)致類型加載沖突System.TypeLoadException。2.3 編寫最簡插件入口繼承PluginBase并重寫OnInitializek3cloud 要求插件必須實(shí)現(xiàn)Kingdee.BOS.Core.DynamicPlugin.PluginBase抽象類。新建類DemoPlugin.csusing Kingdee.BOS.Core.DynamicPlugin; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.ConvertElement; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Metadata.ViewElement; using Kingdee.BOS.Core.Metadata.BusinessElement; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement......## 1. 初學(xué)者為什么一上手 k3cloud 插件開發(fā)就卡在“連不上系統(tǒng)”和“改了代碼不生效” 這不是你環(huán)境沒配好而是你還沒摸清 k3cloud 插件開發(fā)的底層契約它不是寫個獨(dú)立程序扔進(jìn)去就能跑的 Web 應(yīng)用而是一套深度嵌入金蝶云·星空k3cloud服務(wù)端生命周期的**事件驅(qū)動式擴(kuò)展機(jī)制**。插件本質(zhì)是 .NET Framework 4.5 編譯的 DLL必須通過 k3cloud 的「插件管理」界面注冊、啟用并由其宿主進(jìn)程K3Cloud.WebApi.exe 或 K3Cloud.ServiceHost.exe動態(tài)加載——這意味著本地調(diào)試不能靠 F5 啟動編譯輸出不能直接復(fù)制粘貼連日志都得去服務(wù)器上的 K3Cloud\Logs 目錄翻。我見過太多某高校實(shí)訓(xùn)班學(xué)員花三天配 IIS、裝 SQL Server、調(diào) CORS結(jié)果第一行 Log.Info(插件已加載) 死活不出現(xiàn)在日志里最后發(fā)現(xiàn)只是插件未在【系統(tǒng)管理】→【插件管理】里點(diǎn)“啟用”。本文不講抽象概念只拆解一個初學(xué)者能當(dāng)天復(fù)現(xiàn)、當(dāng)天看到日志、當(dāng)天觸發(fā)第一個業(yè)務(wù)事件的最小閉環(huán)從新建類庫項(xiàng)目開始到在單據(jù)保存時彈出自定義校驗(yàn)提示。所有步驟基于 k3cloud V7.5 SP2 及以上版本實(shí)測適配當(dāng)前主流部署形態(tài)IIS SQL Server避坑點(diǎn)全部來自某公司內(nèi)部插件開發(fā)規(guī)范文檔與三年線上事故回溯。 --- ## 2. 用 Visual Studio 2019 創(chuàng)建可被 k3cloud 識別的插件項(xiàng)目 k3cloud 對插件項(xiàng)目的結(jié)構(gòu)、引用、簽名有硬性要求。常見錯誤是直接新建 ASP.NET Web 項(xiàng)目或 .NET Core 類庫——這兩者在 k3cloud 宿主進(jìn)程里根本無法加載。必須嚴(yán)格使用 .NET Framework 類庫Class Library且目標(biāo)框架鎖定為 **.NET Framework 4.5.2**V7.5 默認(rèn)最低支持版本高版本如 4.8 雖可運(yùn)行但部分反射 API 行為有差異不建議新手越級。 ### 2.1 新建項(xiàng)目并配置基礎(chǔ)屬性 打開 Visual Studio 2019VS2022 對 .NET Framework 4.5.2 支持不穩(wěn)定生產(chǎn)環(huán)境仍推薦 VS2019執(zhí)行 bash 文件 → 新建 → 項(xiàng)目 → 模板Visual C# → 類庫 (.NET Framework) 項(xiàng)目名稱K3Cloud.Plugin.Demo 目標(biāo)框架.NET Framework 4.5.2提示項(xiàng)目名無需帶“K3Cloud”前綴但建議按K3Cloud.Plugin.[業(yè)務(wù)域]命名便于后期在插件管理界面識別。不要勾選“創(chuàng)建解決方案目錄”避免路徑嵌套過深導(dǎo)致發(fā)布失敗。創(chuàng)建后右鍵項(xiàng)目 → 【屬性】→ 【應(yīng)用程序】選項(xiàng)卡程序集名稱K3Cloud.Plugin.Demo默認(rèn)命名空間K3Cloud.Plugin.Demo程序集版本1.0.0.0后續(xù)升級需同步修改k3cloud 按版本號判斷是否覆蓋2.2 添加 k3cloud SDK 核心引用k3cloud 不提供 NuGet 包所有 SDK 引用必須從已部署的 k3cloud 服務(wù)器上提取。登錄運(yùn)行 k3cloud 的 Windows 服務(wù)器定位到以下路徑以默認(rèn)安裝為例C:\Program Files (x86)\Kingdee\K3Cloud\Server\Bin\從中拷貝以下 4 個 DLL 到本地開發(fā)機(jī)放入項(xiàng)目根目錄下新建的Libs文件夾文件名作用說明Kingdee.BOS.dllBOS 平臺核心提供元數(shù)據(jù)、上下文、服務(wù)總線訪問Kingdee.BOS.Core.dllBOS 核心邏輯含實(shí)體基類、服務(wù)契約定義Kingdee.BOS.App.Data.dll數(shù)據(jù)訪問層封裝含DBUtils、SqlBuilder等常用工具Kingdee.BOS.Contracts.dll服務(wù)契約接口定義如IInteractorService在 VS 中右鍵【引用】→ 【添加引用】→ 【瀏覽】→ 選擇這 4 個 DLL。關(guān)鍵動作選中每個引用 → 右側(cè)屬性窗口 → 將【復(fù)制到輸出目錄】設(shè)為“不復(fù)制”。k3cloud 宿主進(jìn)程會從自身 Bin 目錄加載這些程序集插件 DLL 中若包含副本會導(dǎo)致類型加載沖突System.TypeLoadException。2.3 編寫最簡插件入口繼承PluginBase并重寫OnInitializek3cloud 要求插件必須實(shí)現(xiàn)Kingdee.BOS.Core.DynamicPlugin.PluginBase抽象類。新建類DemoPlugin.csusing Kingdee.BOS.Core.DynamicPlugin; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.ConvertElement; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Metadata.ViewElement; using Kingdee.BOS.Core.Metadata.BusinessElement; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement...... // ← 實(shí)際開發(fā)中請用 VS 的“智能提示”自動補(bǔ)全此處為示意省略 using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; namespace K3Cloud.Plugin.Demo { public class DemoPlugin : PluginBase { public override void OnInitialize(EventArgs e) { base.OnInitialize(e); // 插件初始化時執(zhí)行僅在宿主進(jìn)程啟動時調(diào)用一次 Log.Info(DemoPlugin 已加載版本 1.0.0.0); } } }邏輯說明OnInitialize是插件生命周期第一個鉤子k3cloud 啟動時掃描所有已啟用插件并調(diào)用此方法。Log.Info會輸出到K3Cloud\Logs\BosLog\下的日期文件中如BosLog_20240520.log這是驗(yàn)證插件是否被識別的最直接證據(jù)。參數(shù)說明EventArgs e暫無實(shí)際用途但必須保留簽名否則編譯失敗。2.4 設(shè)置強(qiáng)名稱簽名必需否則注冊失敗k3cloud 要求所有插件 DLL 必須帶強(qiáng)名稱Strong Name。右鍵項(xiàng)目 → 【屬性】→ 【簽名】選項(xiàng)卡勾選【為程序集簽名】選擇【新建】→ 輸入密鑰文件名K3Cloud.Plugin.Demo.snk→ 取消勾選【使用密碼保護(hù)密鑰文件】生產(chǎn)環(huán)境可加但新手易因密碼輸錯導(dǎo)致編譯失敗生成后項(xiàng)目根目錄下會出現(xiàn).snk文件。此步不可跳過未簽名的 DLL 在【插件管理】界面上傳時會報錯 “程序集未簽名無法注冊”。3. 在 k3cloud 管理端完成插件注冊、啟用與日志驗(yàn)證本地編譯只是第一步。k3cloud 插件必須經(jīng)由其 Web 管理界面完成注冊才能被宿主進(jìn)程加載。這個過程涉及權(quán)限控制、版本校驗(yàn)和熱加載機(jī)制不能通過文件復(fù)制繞過。3.1 編譯輸出并定位 DLL 文件在 VS 中將解決方案配置設(shè)為Release目標(biāo)平臺為Any CPUk3cloud 宿主進(jìn)程是 32 位或 64 位取決于 IIS 應(yīng)用池設(shè)置Any CPU 可兼容。點(diǎn)擊【生成】→ 【重新生成解決方案】。成功后DLL 位于K3Cloud.Plugin.Demo\bin\Release\K3Cloud.Plugin.Demo.dll注意該 DLL 必須是Release 版本。Debug 版本因包含調(diào)試符號和優(yōu)化禁用在 k3cloud 宿主進(jìn)程中可能觸發(fā) JIT 編譯異?;蛐阅芨婢?.2 登錄 k3cloud 管理端上傳插件使用擁有【系統(tǒng)管理】權(quán)限的賬號如 admin登錄 k3cloud Web 端http://[服務(wù)器IP]/K3Cloud導(dǎo)航至【系統(tǒng)管理】→ 【插件管理】→ 【插件注冊】點(diǎn)擊【新增】按鈕【插件名稱】輸入演示插件 - 基礎(chǔ)版【插件編碼】輸入DEMO_BASE全大寫下劃線唯一標(biāo)識后續(xù)代碼中會用到【版本號】1.0.0.0必須與項(xiàng)目屬性中設(shè)置的程序集版本一致【描述】初學(xué)者插件開發(fā)驗(yàn)證插件【文件】點(diǎn)擊【選擇文件】上傳K3Cloud.Plugin.Demo.dll【啟用】? 勾選關(guān)鍵不勾選則不會加載點(diǎn)擊【保存】。若出現(xiàn)紅色錯誤提示常見原因見后文「避坑」章節(jié)。3.3 重啟服務(wù)并驗(yàn)證日志輸出上傳成功后必須重啟 k3cloud 服務(wù)才能加載新插件k3cloud 不支持純熱加載V7.5 SP2 后仍需重啟登錄 k3cloud 服務(wù)器打開【服務(wù)】services.msc找到并重啟以下兩個服務(wù)順序無關(guān)Kingdee K3Cloud Service HostKingdee K3Cloud Web API等待 30 秒打開日志目錄C:\Program Files (x86)\Kingdee\K3Cloud\Server\Logs\BosLog\找到最新生成的BosLog_YYYYMMDD.log文件用記事本或 VS Code 打開搜索關(guān)鍵詞DemoPlugin。若看到如下內(nèi)容證明插件已成功加載2024-05-20 14:22:38,765 [INFO] DemoPlugin 已加載版本 1.0.0.0提示日志時間是服務(wù)器本地時間非瀏覽器時間若搜不到先確認(rèn)服務(wù)是否真正重啟任務(wù)管理器看進(jìn)程是否存在、DLL 是否為 Release 版本、簽名是否生效用sn -vf K3Cloud.Plugin.Demo.dll命令驗(yàn)證。4. 避坑初學(xué)者插件開發(fā)的 4 個高頻翻車點(diǎn)與血淚解法插件開發(fā)不是寫完代碼就結(jié)束k3cloud 的運(yùn)行時約束極強(qiáng)。以下問題均來自某公司內(nèi)部故障庫 Top 5每一條都對應(yīng)真實(shí)線上事故。4.1 現(xiàn)象插件注冊時提示 “程序集未簽名無法注冊”原因項(xiàng)目未啟用強(qiáng)名稱簽名或簽名后未重新編譯。.snk文件存在但項(xiàng)目屬性中未勾選【為程序集簽名】。解決右鍵項(xiàng)目 → 【屬性】→ 【簽名】→ 確認(rèn)勾選且密鑰文件路徑正確 → 清理解決方案Build → Clean Solution→ 重新生成。用命令行驗(yàn)證sn -vf bin\Release\K3Cloud.Plugin.Demo.dll返回Public key token is ...即成功。4.2 現(xiàn)象日志中完全搜不到DemoPlugin但插件管理里顯示“已啟用”原因插件 DLL 編譯目標(biāo)框架高于 k3cloud 支持版本如用了 .NET 4.7.2或引用了 k3cloud Bin 目錄外的第三方 DLL如 Newtonsoft.Json導(dǎo)致宿主進(jìn)程加載失敗并靜默跳過。解決確認(rèn)目標(biāo)框架為 .NET Framework 4.5.2檢查引用屬性中【復(fù)制到輸出目錄】均為“不復(fù)制”刪除所有非 k3cloud SDK 的引用插件內(nèi)禁止使用HttpClient、RestSharp等網(wǎng)絡(luò)庫需用BOS提供的WebApiService。4.3 現(xiàn)象修改代碼后重新生成、上傳、重啟服務(wù)日志仍是舊內(nèi)容原因插件管理界面中【啟用】狀態(tài)未重新勾選或上傳時未更換版本號k3cloud 按版本號判斷是否覆蓋同版本號不會替換文件。解決每次修改后必須在【插件管理】中① 取消勾選【啟用】→ 保存 → ② 再次編輯 → 修改【版本號】如1.0.0.1→ 重新上傳 DLL → 勾選【啟用】→ 保存 → 重啟服務(wù)。4.4 現(xiàn)象插件能加載但自定義事件如單據(jù)保存完全不觸發(fā)原因未在插件類上添加[Kingdee.BOS.Core.DynamicPlugin.DynamicPluginAttribute]特性或特性中FormId值拼寫錯誤大小寫敏感、多空格、少下劃線。解決在DemoPlugin類聲明上方添加特性示例見下一章FormId必須與 k3cloud 中實(shí)際表單 ID 完全一致可通過【系統(tǒng)管理】→ 【表單管理】中查看。5. 讓插件真正干活監(jiān)聽采購申請單PUR_PurchaseApply保存事件并彈窗校驗(yàn)光有OnInitialize只能證明插件“活著”要體現(xiàn)業(yè)務(wù)價值必須綁定具體業(yè)務(wù)事件。k3cloud 提供AbstractOperationServicePlugIn和AbstractBillPlugIn兩類擴(kuò)展基類初學(xué)者推薦從AbstractBillPlugIn入手——它專為單據(jù)Bill設(shè)計封裝了DataChanged、BeforeSave、AfterSave等標(biāo)準(zhǔn)鉤子語義清晰不易出錯。5.1 繼承AbstractBillPlugIn并指定監(jiān)聽表單新建類PurchaseApplyValidator.csusing Kingdee.BOS.Core.DynamicPlugin; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.ConvertElement; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Metadata.ViewElement; using Kingdee.BOS.Core.Metadata.BusinessElement; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; using Kingdee.BOS.Core............ // 同上用 VS 智能提示補(bǔ)全 using Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; namespace K3Cloud.Plugin.Demo { [Kingdee.BOS.Core.DynamicPlugin.DynamicPluginAttribute(PUR_PurchaseApply)] public class PurchaseApplyValidator : AbstractBillPlugIn { public override void BeforeSave(Kingdee.BOS.Core.DynamicPlugin.Args.SaveArgs e) { base.BeforeSave(e); // 獲取當(dāng)前單據(jù)主表數(shù)據(jù)采購申請單頭 var head this.Model.DataObject as Kingdee.BOS.Core.Metadata.BusinessElement.BusinessObject.BusinessObject; if (head null) return; // 獲取申請日期字段值字段名需與表單實(shí)際一致 var applyDate head[FApplyDate] as DateTime?; if (!applyDate.HasValue) throw new Exception(申請日期不能為空請?zhí)顚懞蟊4?; // 獲取申請人FApplicantId并校驗(yàn)是否為當(dāng)前用戶 var applicantId head[FApplicantId] as long?; var currentUserId this.Context.UserId; if (applicantId ! currentUserId) { throw new Exception(申請人必須為當(dāng)前登錄用戶請檢查單據(jù)信息); } } } }邏輯說明[DynamicPluginAttribute(PUR_PurchaseApply)]告訴 k3cloud 此插件只對采購申請單表單 IDPUR_PurchaseApply生效BeforeSave在單據(jù)點(diǎn)擊【保存】按鈕、數(shù)據(jù)寫入數(shù)據(jù)庫前觸發(fā)適合做強(qiáng)校驗(yàn)。throw new Exception(...)會中斷保存流程并在 Web 端彈出紅色提示框這是 k3cloud 內(nèi)置的錯誤處理機(jī)制。參數(shù)說明SaveArgs e包含保存上下文但初學(xué)者無需深究重點(diǎn)是this.Model.DataObject它代表當(dāng)前正在操作的單據(jù)數(shù)據(jù)對象所有字段通過字符串鍵如FApplyDate訪問。5.2 表單字段名怎么查別猜用官方方式確認(rèn)k3cloud 所有字段名Field ID均以F開頭但具體拼寫必須與系統(tǒng)一致。錯誤示例把FApplyDate寫成FApplydate或F_ApplyDate會導(dǎo)致取值為null。正確查法三步登錄 k3cloud → 【系統(tǒng)管理】→ 【表單管理】搜索“采購申請單”點(diǎn)擊右側(cè)【設(shè)計】按鈕在表單設(shè)計器中選中任意字段如“申請日期”→ 右側(cè)屬性面板 → 查看【標(biāo)識】屬性值即 Field ID提示某公司內(nèi)部規(guī)范要求所有自定義字段也必須以F開頭因此FApplyDate是標(biāo)準(zhǔn)命名。若查不到該字段說明你打開的是舊版表單或權(quán)限不足。5.3 重新編譯、上傳、啟用實(shí)測校驗(yàn)效果按第 3 章流程重新生成項(xiàng)目確保PurchaseApplyValidator.cs已加入編譯上傳新 DLL 到【插件管理】版本號改為1.0.0.1啟用插件并重啟服務(wù)登錄 Web 端 → 新建一張采購申請單 → 故意清空【申請日期】→ 點(diǎn)擊【保存】預(yù)期結(jié)果頁面不跳轉(zhuǎn)頂部彈出紅色提示框“申請日期不能為空請?zhí)顚懞蟊4妗彬?yàn)證技巧若未彈窗先檢查日志中是否有BeforeSave相關(guān)異常堆棧再確認(rèn)DynamicPluginAttribute中的表單 ID 是否拼寫正確最后確認(rèn)該單據(jù)是否處于【編輯】狀態(tài)只讀單據(jù)不會觸發(fā)BeforeSave。6. 進(jìn)階技巧用Log記錄結(jié)構(gòu)化調(diào)試信息快速定位業(yè)務(wù)邏輯問題Log.Info是插件開發(fā)的“后悔藥”。很多初學(xué)者只在OnInitialize里打一行日志等業(yè)務(wù)邏輯出錯時才發(fā)現(xiàn)無從下手。真正的調(diào)試能力在于讓每條日志自帶上下文、可過濾、能回溯。6.1 日志分級與結(jié)構(gòu)化輸出k3cloudLog類支持Debug/Info/Warn/Error四級。初學(xué)者應(yīng)養(yǎng)成習(xí)慣Log.Debug僅開發(fā)期使用記錄變量值、分支路徑上線前應(yīng)關(guān)閉或降級Log.Info記錄關(guān)鍵節(jié)點(diǎn)如“單據(jù)保存開始”、“校驗(yàn)通過”Log.Warn記錄非致命異常如“申請人ID為空跳過校驗(yàn)”Log.Error記錄catch中的異常必須帶ex.ToString()public override void BeforeSave(SaveArgs e) { try { Log.Info($【PUR_PurchaseApply】BeforeSave 開始單據(jù)ID: {this.Model.DataObject[FID]}); var head this.Model.DataObject as DynamicObject; if (head null) { Log.Warn(【PUR_PurchaseApply】DataObject 為空跳過校驗(yàn)); return; } var applyDate head[FApplyDate] as DateTime?; Log.Debug($【PUR_PurchaseApply】申請日期值: {applyDate?.ToString(yyyy-MM-dd) ?? null}); if (!applyDate.HasValue) { Log.Error(【PUR_PurchaseApply】申請日期校驗(yàn)失敗拋出異常); throw new Exception(申請日期不能為空請?zhí)顚懞蟊4?; } } catch (Exception ex) { Log.Error($【PUR_PurchaseApply】BeforeSave 異常: {ex.ToString()}); throw; // 重新拋出保證前端可見 } }關(guān)鍵點(diǎn)每條日志開頭加【表單ID】標(biāo)簽便于用文本工具如 VS Code 的搜索批量過濾Debug日志用ToString(yyyy-MM-dd)格式化時間避免null報錯Error日志必須包含完整ex.ToString()否則堆棧丟失。6.2 日志文件管理與快速檢索k3cloud 默認(rèn)按天生成日志但BosLog_YYYYMMDD.log文件可能達(dá)百 MB。某公司內(nèi)部實(shí)踐推薦場景推薦做法日常調(diào)試用 PowerShell 實(shí)時監(jiān)控Get-Content C:\Program Files (x86)\Kingdee\K3Cloud\Server\Logs\BosLog\BosLog_$(Get-Date -Format yyyyMMdd).log -Wait -Tail 10問題回溯將日志復(fù)制到本地用 VS Code 打開 →CtrlShiftH全局搜索【PUR_PurchaseApply】生產(chǎn)環(huán)境禁用Log.Debug將Log.Info級別日志單獨(dú)輸出到PluginDemo.log需自定義Log4Net配置超出本文范圍6.3 一個血淚教訓(xùn)永遠(yuǎn)不要在BeforeSave里寫數(shù)據(jù)庫 INSERT/UPDATE曾有某開發(fā)者為記錄校驗(yàn)日志在BeforeSave中直接調(diào)用DBUtils.Execute插入一條日志表。結(jié)果導(dǎo)致事務(wù)嵌套失敗——k3cloud 的單據(jù)保存本身就是一個大事務(wù)插件內(nèi)再啟事務(wù)會破壞一致性輕則報錯重則鎖表。正確做法用Log記錄如需持久化改用 k3cloud 提供的BusinessDataService提交異步任務(wù)或在AfterSave中通過this.Context.Session獲取已提交的單據(jù) ID 后再操作。我?guī)н^的某高校實(shí)訓(xùn)班學(xué)員90% 的第一版插件都在BeforeSave里手寫 SQL然后卡在事務(wù)死鎖上三天。后來我們定下鐵律插件內(nèi)禁止任何INSERT/UPDATE/DELETE所有數(shù)據(jù)操作走 BOS 服務(wù)。這看似限制實(shí)則是幫你避開金蝶底層最黑的黑匣子。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲美腿丝袜香蕉影视欧美成人| 国产区日韩区在线观看| 青青操轻轻| 亚洲资源吧| 亚洲精品丝袜-不卡成人免费……| 国产搭汕a级片| 亚洲另类综合欧美| 国产精品自在自拍视频| 91无遮挡| 视频在线97| 91xingse| 97人人草| 成人黑料社久久| 青青青国产手线观看视频2| 日韩中文字幕2020| 麻豆天天躁天天揉揉AV| 亚洲自拍一区夜夜操| 欧美网站免费| wwwcaobibi| 妇女性内射冈站HDWWWCOM| 精品无码人妻一区二区免费蜜桃| 在线综合 亚洲 欧美中文字幕 | 蜜臀在线免费观看在线免费观看| 亚洲熟女中文字幕在线| 欧美视频一区二区在线| 亚洲欧美电影| 强奸乱伦资源| 一级免费啪啪片| 亚爽爽爽爽爽爽爽爽| 丁香五月社区| 欧插网站| 97色色国产视频| 久久人妻四季| 国产乱弄免费在线视频。 | 欧美一区二区| 免费观看一区| 成人26uuu| 欧美亚洲| 久久亚洲AV无码专区首页| 国产v片在线免费观看| 欧洲在线性爱视频| 在线岛| 亚洲最新中文字幕免费| 717影院理论午夜伦八戒| **一级毛片国产| 精品国产Av无码久久久亚洲| 97视频在线看| 久久av无码| 国产高清在线观看欧美| 私色综合网| 日韩99神马视频片| 熟女熟妇一区二区三四区| 91宗合网| 天天草天天干天天日| 成人日韩欧美| 啊啊啊啊好疼视频| 农村女一级毛卡片| 丁香五月激情五月| 蜜臀无码一区二区| 极品销魂美女一区二区| 3p国产色噜噜一区| 久久日本熟女精品一区| 亚洲色图欧美| 日本三级久| 九九九只有精品| 日韩少妇丰满亚洲| av优播| 亚洲男人天堂网久久| 精国久久一区二区三区98| 天天综合~91| 日韩欧美成人综合在线| 啪啪91| 91色欧美| 开心五月深爱五月| 日韩一级二级三级| www.狠狠| 中文字幕丰满人妻日本| www.夜夜| 高潮精品| 大香蕉伊人在线成人AV在线观看| 97免费视频在线观看| 久久激情视频| 97国产精品| 五十路熟女,国产欧美精品区一区二区三区| 老熟妇91| 色老汉玖玖爱| 亚洲激情在线观看一区| 欧美少妇高潮久久91| 人人干黄色| 丝袜性亚洲| 中文?日韩?免费?精品| 亚洲 中文 女同| 狠狠操,使劲操| 青青操在线亚洲视频观看欧美在线 | 欧美.亚洲.另类.丝袜.制服.诱惑| 亚洲精品蜜桃久久久| 97色婷婷| 日本不卡高清视频| 欧美桃色网| 加勒比大香蕉视频在线| 日韩高清黄片| 日本一级特级毛片视频| 久久国产逼| 69麻豆天美| 国产原创剧情在线丝袜 | 97天天爽| 天堂8在线新版官网| 夜色综合| 亚洲熟妇AV日韩熟妇在线| 精品毛片久久久精品毛片| 91日韩网站| 久久日韩毛| 欧美亚洲| 亚洲图片激情综合另类| 精品一级毛片在线观看| 亚洲第二页| 和协影院中文字幕三区| 亚洲18禁| 天美传媒国产原创中文字幕亚洲欧美另类| 东北丰满熟女国产一区| 草草电影院| 东京热,男人的天堂| 亚洲天堂美臀在线| 蜜臀网 一区| 亚洲人成网www| 国产综合网站在线播放 | 天天爱天天韩国日本牛牛牛牛| 国产成人91一区二区三区| 人人妻天天做天天爽| 亚洲精品丝袜-不卡成人免费……| 日本熟妇浓毛hdsex| 欧美色图99| 色婷婷五月综合激情中文字幕| 中文字幕第9页萱萱影音先锋| 中文无线日韩一区| 亚洲图片视频小说| 大香蕉手机在线| 色拍偷亚洲| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 操婷婷逼| 亚洲av淫乱| 国产精品一区午夜福利| 国产日逼视频| 2021久久国产综合精品青草| 在线无码视频| 国产黄色 A 片免费看| 欧美成人A天堂片在线观看| 97视频网站| 东北熟女91| 一区二区高清视频| 翔田千里爆乳巨臀无码| 在线观看高清AV| 色综合国产在线观看| 亚洲av性爱电影| a级免费在线观看| 易易A毛视频| JuliaAnn丝袜熟女系列| 内射老妇BBWX0C0CK| 蜜臀无码视频在线观看| 日本欧美一区二区三区免费| 久操大香蕉| 中文字幕一区av| 欧美第38页| 亚州男人的天堂| 东北女人性交| 亚洲av综合色区图片亚洲| 伦伦成年午夜免费视频| 亚洲色五月| 安徽熟妇视频| 精品人妻一区二区三区免费视频| 国产日韩精品suv| 青椒国产97在线熟女| 99热这里是精品| 亚洲国产剧情少妇激情| 亚洲 欧美 日本 国内 首页| 日韩精品色呦呦| 五月激情在线| 欧美激情亚洲情色| 四虎国产精品永久在线囯在线| 久久久九九| 95自拍视频在线观看| 久久精品国产亚洲AV无码电影| 亚洲精品亚洲人成人网| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 亚洲三区视频| 欧美国产视频| 天天草天天日| 蜜桃久久综合视频| 亚洲 欧美综合| 黄片免费久久久久久久| 中国黑人三级片网站上区| 久久风骚城市人| 日韩激情啪啪啪| 色91综合网| 另类图片综合| 人妻精品综合中文字幕在线 | 久久香蕉网| 亚洲色图 91| 亚洲无线码一区国产欧美国| 久草在| 色综合久久av| 亚洲91射| 亚洲综合五月天婷婷丁香| 色网亚洲人| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 99热精品在线播放| 9999久久久| av大香蕉网站| 天堂中文资源在线bt| 97亚洲国产| 亚洲激情av| 中文字幕欧美日韩三级| 欧美日韩青操| 激情综合五月| 精久久久| 日本午夜福利影院| 天天色综亚洲91污| 性色A∨91| 激情综合色| 蜜臀在线视频| 熟女熟妇伦久久影院毛片一区二区 | 亞洲久久直播| 精品欧美老熟女一二区| 后入福利| 97视频网站在线观看| 国产精品久久久久亚洲av| 丝袜加勒比| 老熟女熟妇| 欧美性爱五月天| 伊人精品久久网站| 思思热在线视频免费| 天美传媒精品久久视频| 精品176精品2| 亚洲综合码| 日日干日日| 精品成人亚洲午夜电影| 中文啪啪视频| 亚洲操操操| 丰满人妻一区二区三区色-百度| 欧洲精品欧洲精品| 在线亚洲丝袜视频网站| 欧美亚洲日韩16色| 欧美情色贴图| 亚洲综合九| 亚洲熟女乱熟乱熟妇综合网二区| 婷婷国产精品九区| 欧美色图亚洲色图成人在在线| 超碰人人在线| 丁香五月天视频| 成人日韩欧美| 99啪| 国产乱人妻精品入口| 国产精品91一样| 精彩视频日韩| 国产青视频| 亚洲 欧美 另类 日韩 人妻一区| 麻豆婷婷成人一二三| 熟妇一区二区三区| 新精精品久久精品| 操屄不卡视频| 90后后入| 草久在线| 国产极品粉嫩馒头一线天av| 国产一区二区三区久久久精品| 91人妻在线视频| 视频不卡中文字幕| 亚洲 一区二区 自拍| 国产精品无码av| 大香蕉久| 欧美中文狠| 96超碰网| 99999国产精品| 久久久久免费看少妇A片特黄| 美國A片| 日韩精品国产精品五码一区二区| 精品久久青青草| 大乔未久88一区| 无码78| 一区二区三区 日韩欧美| 日本熟女免费視颖| 国产天天骚| 亚洲中文sv| 翔田千里AⅤHD无码| 热九九精品| 日本超碰色精品| 狠狠91| 99色| 亚洲中文字幕一区二区| 九九99精品视频在线观看| 国产青视频| a级免费在线观看| 制服乱伦| 日韩啪啪视频| 日本三级韩国三级99| 天天日熟妇| 天天做日日做| 色亚州人久干视频在线观看免费版| 欧美后入| 青青草乱入乱欲视频在线观看| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 日夜精品| 男人亚洲91首页在线| 草草草草视频| av草草在线电影| 国产又黄又粗的视频| 宅男91视频在线播放| 欧美18老人禁| 蜜桃久久久久久久久久久久| 亚洲色图日韩精品| 青青操视频在线| 久久‘黄片视频| 无码精品啪啪啪一区二区三区三州| 国产一级不卡在线观看| 日本国产二线女色| 夜夜操天| 久久久无码av精| av日韩中文字幕| 操美女高潮抽搐白浆| 风韵犹存大大大大香蕉 | 亚洲图片欧洲图片aⅴ| 伊人 俄罗斯 a v| 91超级碰| 久久久久久日韩| 猛猛干| 欧美色图天堂网m| 约操熟妇| 秋霞午夜成人福利片片| 欧美精品亚洲精品日韩传电影| 国产欧美一区激情交| 日韩av免费一级电影| 中文字幕精品专区搜索结果91| 日韩啪啪啪啪啪| 巨爆乳一区二区爆乳区| 花花AV导航| 丰满精品人妻少妇久久字幕| 草草影院在线视频| 色噜噜狠狠色综无码久久合欧美| 国产精品久久久久亚洲av| 激情小说激情视频| 亚洲人妻久久久| 日韩精品电影| 伊人在线大香蕉视频久久| 久久综合18p| 欧美后进式| 婷婷综合五月| 婷婷五月天激情小说| 99精品视频在线观看免费| 一区二区你上我| 日韩一级二级三级免费看完整版| 色噜噜人妻av中文字幕| 丁香成人五月天| 激情综合五月丁香| 七久久久| 成人A片男人的天堂| 日本不卡三级网在线播放| 亚洲熟女国产综合另类| 亚洲精品一二三四区| 青青操青娱乐| 日少妇亚洲版| 色偷偷人人玩人人舔人人操人人摸人人爽| 蜜臀人妻少妇久久在线观看| 久久久久久午夜男人的天堂| 啊啊啊不要好疼视频| 1区2区3区在线视频| 97超碰国产精品| 91美女视频在线| SUV一区二区在线看| 日日干夜夜欢| 青青在线视频日韩欧美| 黑人白女精品一区| 日韩乱插| 91激情网| 日日嗷| 一级毛片电影免费看| 国产第12页| 另类在线| 人妻黑丝袜电影| www.男人的天堂| 亚洲一区日韩精品| 校园春色 男人天堂| 熟妇高潮一区二| 91丝袜美女视频| 26uuu国产免费观看| 蜜桃色色网站视频三区| 欧美人妻一区二区| 丰满人妻一区二区三区免费| 久久受www免费人成| 日韩在线视频1234| 久久久久久人体| 人妻在线视频| 男人的天堂2000| 欧美精品精品一区二区| 日韩三级一区 | 91精品人妻电影| 另类 综合 日韩 欧美 亚洲| 日日爽夜夜爽| 欧美一区二区三区大综合| 久久国产免费激情视频| 日本大片日本一区二区免费高清| 无码男人天堂| 日本成人A片免费看| 99蜜桃臀亚洲成人在线观看| 婷婷色色五月天福利| 欧美精品99久久久| 久久久久人| 国产精品一二三在线看| 欧美一级专区免费大片| 成人网站 免费观看| 青青草一区二区三区四| 婷婷中文网| 色97欧美| 欧洲免费一区二| 亚洲色图尤物视频| 人人搡人人肉久久精品| 丁香五月综合| 久久精品国产亚洲AV先锋| JULIA人妻风俗店中出电影| 亚洲无992tv| 精品久久九| 伊人五月天| 国产品精品自在在线午夜免费| 91在线美女| 欧美伊人久久综合网| 亚洲丝袜色图| 青青青国产手线观看视频2| 久久久性爱视频| 欧美性爱中文字幕无线码| 99热线麻豆 | 亚欧美综合| 久久久久久性爱片| 欧美一区二区三区日韩| 国产精品成人AV片免费看网站| 欧美中字二区| 在线啊啊啊啊| 色婷婷久久| 久热精品在线国产| 色约约一区=区三区| 国产免费久久精品99re韩国| 国产久久一区二区午夜| 国产强奸超碰AV| AV在线性爱| 农村女一级毛卡片| 麻豆AV一区二区天美传媒| 强奸熟女一区二区三区| 超碰人妻中文在线| 青青伊人加勒比海| a片亚洲一本通视频| 宗合情欲网| 久9精品| 欧美高潮| 欧美综合777| 亭亭在线资源| 色制服丝袜夫妻av一区| 人、人、摸,人、人、草| 成人无码在线视频网站| 欧美亚洲国产91在线| 日产操逼| 操屄日韩| 黄片国产精品一区二区| A V视频日本| 亚洲一区二区AV| 少妇久久久| 17c嫩草51久久91嫩草| 91超碰在线| 老熟女搡BBBB搡BBBB视频| 日韩av电影成人在线| 亚洲天堂中文字| 欧美另类精品xxxx| 天天综合色| 日韩一级二级在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 毛片视频白嫩| 欧美精品,四区。五区| 精品三级在线专区| 青青11操操操操操操操操| 欧洲一区二区三区四区在线观看| 国内亚洲精彩视频在线| 精品97久久综合| 亚欧免费观看视频| 中文字幕丝袜人妻| 欧美色图片| 中亚精品极乱| 亚洲男人天堂手机版| 日韩,欧美,中文在线| 97精品国产精品免费观看| 96精品久久久久久久久久| 九九99精品| 蜜臀99久| 欧美色三级片91| 久久精品| 亚洲精品欧美专业| 一级毛片久久久久久久女人18| 色诱中文字幕| 久久二| 日本99视频| 亚洲色性| 亚洲 91 在线| .精品人妻一区二区三| 亚洲精品欧洲精品| 自拍偷拍 高清无码| A男人的天堂| 5278欧美一区二区三区| 色淫网站优优视频| 亚洲色图激情小说| 无码区蜜乳| 亚洲Av噜噜一区二区三区妖精| 国产一区二区a毛片| 久久精品高清无码一区| 日韩成人性爱AV| 91天天日| 手机在线播放国产福利| 日韩人妻精品| 91碰碰碰| 国产精品久久久无码aV去| 久9久9精品| 欧美性爱十八禁| 91丝袜在线播放| 中国黑人三级片网站上区| 国内毛片婷婷六月色| 亚洲成人AB| 丝袜狠狠草尤物人妻av91| 国产女s强制榨精视频| 男人的天堂久久狠| 红杏大香蕉| 欧美日韩黄片精品在线| 天天操福利视频综合网站| 很很干很很操| 无码av永久免费专区网站| 97se亚洲| 久久久111| 污啪啪啪视频| 国产精品黄色三级av| 激情在线青青操| 人妻无码后入| 欧美亚洲玖玖玖| 国产一级内射无挡观看| 亚州男人天堂| av草草在线电影| 蜜桃久久久久久久| 亚洲色欲天天人妻无码系列专区| 综合激情二| 91亚洲影视| 97欧美精品综合| 久久香蕉影院| a v网站在线播放| 国产400孕妇孕交群| 亚洲AV乱码专区国产噜噜亚洲 | 欧美色66| 青草视频在线看看看看看看看看看| 成人青青草原伊人| 亚洲综合 欧美| 天天天乱色综合全| 99久久这里只有精品| 亚洲精品第一| 大香焦A片| 精品人妻中文字幕高清| 日本二三四区| 欧美桃色网| 欧美综合网1| 久久只有精品一区二区三区| 大香蕉免| 亚洲欧洲视频小说在线观看| 九九热最新| 性爱1区| 黄色小视频日本txt| 老子午夜伦不卡影院| 99re免费| 激情综合网激情综合| 无码九九| 九九九久| 蜜臀久久99精品久久久久久成人小说| 中文字幕色AV| 成人草草视频| 国产日韩怡红院| 精品视频一区二区| 激情在线青青操| 少妇的嫩逼图片| 亚洲综合色图欧美| 好吊色综合| 97超碰中文在线| 国产女大学生AV| 天天日天天操天天射河南省| 国内毛片欧美香蕉精品| 韩美日操逼| A级毛片在线看免费| 欧美日韩不卡a片| 国产日逼视频| 熟女人妻一区二区三区| 五月婷婷色色| 九九热男人天堂| 你草精品在线视频| 日本孕妇孕交| 亚洲男人天堂网站| 中日韩免费看男女操逼大全| 亚洲电影中字一区二区| 免费超碰97在线观看| 亚洲综合精品国产一区| 欧美男人一区| 久久精品72| 亚洲自拍欧美色综合| 成人资源中文字幕在线观看| 老鸭窝在线视频播放| 欧美黄业| 在线欧美69V免费观看视频| 国产精品无码AV网站| 99成人| 青青草日本中文字幕| 91无码人妻| 亚洲一区二区av| 久久精品人人做人人看| 在线强奷到舒服的无码视频| 久久极品一区二区| 成人在线永久| 少妇淫妇久久久久久久| 五月天我淫我色av| 国产精品老师| A啊啊在线观看| 欧美97网| 精品人妻av在线播放| 久久97| 欧美亚洲AN| 三四中文字幕| aaaa少妇高潮大片| 亚熟在线| 97超色| 亚洲自拍偷拍视频在线| 日韩性爱网址| 日本天天干天天搞一区| 日日夜夜精品视频| 久久丁香五月婷婷| 一区二区三区成人| 亚欧无码线免费观看视频| 91麻豆va国产精品| 99精品高潮| 国产成人91一区二区三区| 性爱1区| 中文字幕日韩人妻视频一区二区三区交换夫妻| 91精品国产91熟女| 国产超碰人人操| 黄资源| 超碰精品国产无码| av优播| 97操碰| 凸凹视频在线观看| AV99热18这里只有精品| 亚洲中字幕日本一区二区三区| 亚洲精品视频在线播放| 偷拍2020| 黄在线| 欧亚成人在线视频| 在线无码视频| 日韩午夜国产| 国产精品白丝在线播放| 动漫片子网站3黄| 欧美色图亚洲激情| 囯产操逼片| 中文字幕第23区| 操迟操逼在巾线Fre看| 99re视频在线观看这里只有精品| 精品久操| 色牛牛AV| 欧美成人一区二区| 黑人操一区二区| 欧美97日韩精品| 午夜精品久久久久久久久久蜜桃 | 国语精品av| 偷窥自拍亚洲天堂网爆| 老鸭窝在线视频播放| 国产高清成人传媒影视| 日本三级久| 天堂无码| 亚洲av总站| 日韩一级欧美一级国产一级台湾| 丰满人妻一区二区三区在线| 国产成人久久精品蜜臀| 国产精品国产自产拍高清AV| 欧洲精品二区| 另类图片五月| 日本孕妇一区二区视频操逼免费看 | 四虎免费视频| 国产免费操逼| 色噜噜人妻av中文字幕| 99视频只有精品| 狠操91,com| 91精品久久久久久77777| 91制服丝袜| 中文字幕一区 二区三四五 区日 日骚| 美欧色综合| 超碰久热| 色波多| 欲香欲色天天天综合和网| 一类无码操逼视频| 一卡二卡三卡| 国产性刺激| 精品成人动漫一区二区| 蜜桃臀一区二区三区久久| 久热无码| 亚洲日韩在线a不卡99精品| 日韩人妻精品中文字幕| 欧美中出1| 国产色图乱伦| 亚洲另类久操网| 久久av一级av少妇av高潮| 蜜臀Av一区二区三区| 97久久资源| 国产精品久久99日日| 97鸡把在线视频| 一区 欧美 日韩 麻豆| 五月天玖玖资源站| 91久久久亚洲| 久超碰这里只有精品| 久久一区无码| 操B在线观看| 女性91网站| 婷婷久久综合| 一二三区操逼国产91| 97久久国产精品| 欧美嗯啊……在线观看视频免费| www.91逼逼.com| 亚洲AV无码乱码| 劲爆欧美人妖三区91| 99热这里只有精| 精品国产精品一区二区| 一区二区三区在线美女| 超碰碰97资源站| 91女优在线观看| 大香蕉十区| 国产67194| 人妻日日干| 一级成人性爱| 97综合网| 久久精品无码专区| 蜜桃狠狠色伊人亚洲综合 | 蜜伊人色综合97| 日本天天操| 7777欧美成是人在线观看| 一二三四视频中文字幕在线看| 综合色欧美| 人人澡人人澡人人| 啊啊啊要高潮了| 亚洲射综合网| 欧美亚洲丝袜人妻制服99| 国产精品一区二区 尿失禁| 久久精品一区二区三区四区五区| 国产精品禁久久久精品| 久久精品六区| 亚洲偷91色| 四虎在线免费视频| 成人精品欧洲亚洲| 国产午夜视频| 求求你操操我| 欧美久久婷婷| 亚州久久9| 精品国产72| 75大香蕉| 超碰综合色| 今日头条成人一区二区三区四虎精品| 怡红院怡春院| 欧色综合| 欧美精品第四五页中文字幕在线观看| www九九热| 99无码视频| 99热思思| 九九九综合精品| 九九热精品视频在线观看| 狠狠操狠狠插| 激情专区综合| www.狠狠| 另类图片五月天| 亚洲 图片 综合91| 国产丝袜美女诱惑| 97在线欧洲| AV天堂电影网| 精品人妻一区二区三区视频| 亚洲国内精品成人不卡| 精品乱码在线观看| 亚洲91网站| 福利大香蕉| 99精品综合久久久久五月天| 亚洲性天堂| 国产综合日韩伦理| 51国产午夜精品视频| 在线色导航| 中文字幕国产| 操逼逼无码| 91色综| 日夜久久久九九九久| 97爱啪| 欧美日韩传媒| 国产精品毛片?v一区二区三区| 日韩精品中文字幕一| 91九色首页| 欧美少妇内射| 色69大色97香蕉| 国内外内射高清视频| 超碰欧美| 久久久久亚洲Aⅴ无码| 五月天婷婷小说| 啊啊啊啊啊好大好舒服想要| 成人资源中文字幕在线观看| 久操电影网| 香蕉欧美| 性色av婷婷久久一区二区点复制| 日韩三级网址| 欧美综合在线第一页| 粉嫩av在线| 在线可观看的黄色网址| 五月天综合在线| 久久綜合很很很| 99操逼| 中文字幕国产| 欧美熟爽综合| 91挑色欧美| 天天射日日干| 人人操人人叉人人插人人| 国产玖玖| 热热色国产一二区AV| 国产综合色精品在线观看| 久久精品国产免费观看99| 97色色色综合网站| 俞拍久久国应视频| 国产www色在线观看| sss视频华人在线| 久久久一区二区三区麻豆| 久久大| 欧美日韩国产在线| 亚洲诱惑天堂| 国产日韩欧美操逼视频| 大香蕉伊人色偷偷在线| 死我十八禁| 亚洲国产成人福利在线观看| 欧美熟妇精品黑人巨大一二三区| 亚洲天天自拍| a级理论午夜日本| 超碰97久久观看| 欧美高清无码免费视频高清版| 涩五月婷婷| 桑老女人九区| 深夜国产一区二区三区在线看| 精品超碰中文在线| 一本色道人妻久久| 91久久久久久久久18| 日韩av情韩国爱禁区av一区二区| 翔田千里AⅤHD无码| 久久9 9 9精品| 久久啊啊| 亚洲国产欧美日韩人妻日中文| 精品玖九九久| 人妻22p| 欧美色97| 五月婷婷六月丁香| 欧美色另类| 秋霞蝌科网日本一区| 内射黑丝袜| 日本视频在线观看污污污| 2017超碰| 自拍偷拍2025在线观看| 941超碰| 中文字幕一区二区三区视频播放| 欧美精品亚洲精品日韩传电影| www色婷婷| 99999精品| 伊人操操| 韩国黄色片精品久久久| 人妻丝袜美腿中文字幕| 亚洲一区二区三区麻豆传媒| 尤物视频偷拍免费| 无码99| 国产大陆天天艹| 欧美性五月| 欧美日韩99精品麻豆传媒| 欧美人人曰人人操人人射射| 97情超碰色| 综合久草| 国产精品自在线发布| 中文字幕乱妇免费视频| 欧美香蕉视xxx| 97国产成人精品免费视频| 久久久久国产精品久久久| 97视频900| 中文字幕啊啊啊在线观看视频| 国产综合在线视频网站| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲阿v天堂在线| 夜色97| 观看免费区二区三区二| A片三级无码| 白丝被操91| 97超碰超| 欧洲亚洲综合| 欧美性,亚州色| 91啪啪视频| 韩国一级AAA| 亚洲国产精品久久AV| 免看60秒涩涩视频| 青青草视频导航官网| 99热这里只有精品9| 久久久久久电影| 国产精品日日摸夜夜添骚逼| 91精品婷婷国产综合久久| 亚洲一区二区三区麻豆传媒| 婷婷五月色| 日韩 欧美 另类 人妻| 免费观看日本操逼视频| 国产白丝网站| 久久久草草精品| 91五月天| 97色论| 久久天天性久久伊人| 99爱爱| 操屄不卡视频| 老司机老司机午夜影院| 性videos欧美熟妇hdx| 不卡日本一区二区| 有码专区最新中文字幕有码| 久久原创中文| 青青伊人加勒比海| 色 亚洲 91| A啊啊在线观看| 国产精品久久久视频| 三级三级三级日本99| 无套内射性感少妇视频| av午夜影院在线播放| 国产99精品一区二区三区免费| 9久在线视频只有精品| 97超碰中文在线| 日本精品一区二区不卡| 久久久一区二区三区麻豆| 亚洲成人在线资源| 亚洲天堂一区二区| 久久精品国产97欧美精品亚洲 | 欧美三级不卡| 久久久蜜桃一区二区三区| 99热91| 激情深爱五月天| 久操大香蕉手机视频在线看| 五月综合久久| 青青草视频这里只有精品| 亚洲欧美精品一区天堂久久 | 激情五月天丁香社区| 日韩欧美亚洲一区二区三区影院| 久久人人舔人人爽舔人人av片| 成年人黄色小视频网站| 亚洲免费成人精品电影| 国产欧美日韩精品中文| 亚洲各类熟们中文字幕| 婷婷久久大香蕉| 25国产精品免费观看| 91欧美高清| av情色影音| 夜夜 中文视频rt| 女人天堂网| 欧综合网| 精品国模无码| 亚洲精品人妻在线| 欧美性爱另类综合| 五月天激情综合网| 国产精品久久久久久夜夜夜| 校园春色综合色| 啊啊啊啊啊啊啊啊啊在线观看| 蜜桃臀久久| 国语少妇精| 一级性爱视频免费在线| 欧美一级国产一级| 99热自拍| 亚洲丝袜B诱惑| 精品美女人人干| 久久岛国| 亚洲综合另类小说色区亚洲成av人片在www | 亚洲AV噜噜狠狠网址蜜桃动漫| 久久久麻豆精品| 最新欧洲欧美日本激情网站| 青青草精品| 97久久久网站| 欧美性爱日韩高清| 国产情侣自拍在线播放| 九九精品美女高溯喷水| AV色五月天| 欧美综合自拍| 激情视屏国产乱伦强奸| 人妻啊啊人妻啊啊| 久久久久久久久久久久久久久久9| 亚洲在线综合| 亚洲一区中文精品| 九九无码视频| 91久久久视| 男人的天堂99| www.av在线视频| 97久精品| 国产丁香精品露脸视频| 国产JDAV无码视频在线观看| 欧美在线播放aaaa| 亚洲丝袜色图| 夜夜欧美 | 欧美亚洲高清晰| 一道α片欧美| 99热精品在线观看| 日韩人妻精品| 国产精品久久久久久久久久梁医生| 桃花色涩综合影院| 日本99一区二区| 日韩无码一区二区三区| 欧美在线观看综合国产| 日韩 成人 有码| 精品九九九九九| 91久热| 天天影视之亚洲综合网| 欧美呦呦性爱| 精品国产自在在线99| 97久久超碰国产精品| 多毛小伙内射老太婆| 超碰色中文| 日本一区二区三区四区五区六区七区八区九区| 久久久久久久国产a∨| 久久精品一区| 黑人猛交| 欧美毛片在线网| 蜜臀久久99精品久久久久久成人小说| yellow网站免费观看日韩高清无码| 欧美亚洲丝袜美女电影| 91另类| 欧美日不卡| 91美女小视频| www.夜夜操| 精品人妻少妇| 五月婷婷性爱| 十八禁黄色| 婷婷九月| 麻豆91熟妇人妻中文字幕茄子| 不卡免费av在线播放 | 精品婷婷| 亚洲猛交| 91日韩在线| 欧美se综合| 一区二区日韩欧美久久| 嗯嗯啊啊啊好爽| 狠狠综合网| 欧美人妻少妇| 亚洲欧美一区二区三区在钱蜜桃| 伊人九九九| 在线观看一卡二卡| 久久春色| 真实高潮91| 久久久精品中文字幕爱豆| 上床不卡网站| AAAAAAAAA黄片| 亚洲文学偷乱拍啪啪啪啪| 人人妻人人狠人人| 天天影视综合色| 男人的天堂不卡一区二区| 日本媚薬中文字幕在线| av天天在线观看| 日韩欧无码一区二区三区免费不卡 | 超碰欧美COM| 中文字幕 人妻不满 在线视频| 欧美色图 色综合图| 欧美78p| 蜜乳成人AV| 蜜桃久久精品一区二区三区| 国产精品无码在线| 清纯唯美激情| 伊人青青一区成人视频在线观看区| 操b在线观看| 中文字幕视频免费| 90后性网国产欧美| 亚洲欧美不卡线| 一牛一区二区三区久久| 欧美亚洲日本视频久久久 | 欧美亚洲性爱一区二区| 国产综合在线视频网站| 国产女主播视频在线观看| 婷婷在线视频| 91精品亚洲内射孕妇| 久草线上视频免费看| 伊人亚洲国产一成人久久精品,久久| 成 人 A V免费视频在线观看| 欧美一区二区三区黄色影视| 凹凸视频特色日本特黄| 国内毛片欧美香蕉精品| 中文字幕欧美日本乱码一线二线 | 亚洲色婷婷久久91| 大屁股熟女一区二区三区| 9 9精品一区二区三区| 欧美亚洲素人制服精品| 亚洲中文字幕久久无码精品| 91AV老熟女视频| 日本午夜操逼| 久久91| 九草九九九| 日韩影片中文字幕一区二区三区| 手机在线播放国产福利| 久久这里只有精品9| 强奸熟女一区二区三区| 人妻啊啊人妻啊啊| 日韩视频啪啪| 久久国产AⅤ| 人妻熟女一区二区三区视频| 久草新免费| 天天摸,夜夜摸| 国产综合永久精品日韩鬼片| 国产9区| 日日摸日日弄日日拍| 又摸又舔在线观看网站| 亚洲中文字幕噜噜噜久久久| 国产精品自在线发布| 精品一级毛片在线观看| 欧美97av| 色欲色香天天天综合网www-亚洲综合国| 99热这里是精品| 99在线无码精品秘 入口黑人 | 精品一国2| 亚洲最大的黄色电影网站。| 婷婷激情五月| 亚洲色图欧美视频| 91精品女厕偷拍视频| 立川理惠被中出无码| 91亚洲图片| 99精品无码| 久久久内射良家| 欧美日韩青操| 日本日日色视频| 91国产丝袜足交精品视频| 99在线精品视频| 大香蕉综合在线| 欧美性爱一级操| 日va操| 操操逼操操逼操操逼逼| 熟妇xxxxx性春色| 人人模人人看| 国产精品午夜AV完会免费| 九九九九精品精| 乱操9999| 国产黄片在线免费观看| 久久无码精品| 五月开心久久AV官网| 无码免费精品高清| 999亚洲国产视频| 午夜超爽| 亚洲精品人妻在线| 三级色综合| 亚洲色系另类精品国产| 久久性爱精品一区| 中字幕人妻一区二区三区| 极品销魂美女一区二区| 久操免费在线| 乱欲视频| 日本国产亚洲一区在线观看| 香港澳门日本三级网站| 日韩无码极品| 久久专区| 超碰在线人妻中文字幕| 欧美真人抽搐一进一出gif| 国产丝袜美女在线一区| 国产隔壁老王影院在线| 天天操天天射天天日| 亚洲最大成人a毛毛片| 亚洲无码?第一页| 精品性爱无码在线播放| 久久久久人妻| 丁香五月天婷婷姐|