99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

NC65開(kāi)發(fā)入門(mén):核心API與實(shí)戰(zhàn)參數(shù)全解析

NC65開(kāi)發(fā)入門(mén):核心API與實(shí)戰(zhàn)參數(shù)全解析 簡(jiǎn)介面向用友 NC65 二次開(kāi)發(fā)者的常見(jiàn) API 速查手冊(cè)內(nèi)容緊扣平臺(tái)開(kāi)發(fā)中的高頻需求覆蓋獲取表體行列、設(shè)置初始化默認(rèn)值、控制字段可編輯狀態(tài)、小數(shù)位數(shù)設(shè)置、報(bào)表合計(jì)行顯示、查詢面板取值、時(shí)間比較、編輯公式、按鈕權(quán)限控制、彈出提示框、打印查詢條件、清空表體與緩沖數(shù)據(jù)、查詢對(duì)話框默認(rèn)值、界面數(shù)據(jù)訪問(wèn)及導(dǎo)出導(dǎo)入數(shù)據(jù)庫(kù)等典型場(chǎng)景。每個(gè) API 均配有可直接參考的 Java 代碼示例并說(shuō)明適用位置與操作要點(diǎn)適合新手對(duì)照學(xué)習(xí)或作為日常開(kāi)發(fā)手冊(cè)查閱。資源包只有一個(gè) PDF 文檔體積僅 193KB輕量易用目前已吸引 579 人學(xué)習(xí)下載。文檔后段還整理了管理型界面單據(jù)類繼承關(guān)系、UI 工廠自定義按鈕、根據(jù)單據(jù)狀態(tài)控制按鈕可用性、單據(jù)開(kāi)發(fā)一般步驟、List/Map/Set 操作等進(jìn)階內(nèi)容能幫助開(kāi)發(fā)者減少摸索成本快速形成規(guī)范的 NC65 開(kāi)發(fā)思路。無(wú)論是剛接觸 NC65 的初學(xué)者還是需要快速定位接口的開(kāi)發(fā)者都能從這份精煉手冊(cè)中受益。1. NC65 開(kāi)發(fā)入門(mén)為什么先要搞懂這幾個(gè) APINC65 是用友基于 Java EE 體系構(gòu)建的企業(yè)級(jí) ERP 平臺(tái)客開(kāi)客戶化開(kāi)發(fā)是繞不開(kāi)的主題。新手拿到 NC65 的二次開(kāi)發(fā)任務(wù)第一反應(yīng)往往是打開(kāi) IDE 寫(xiě)代碼但真正的門(mén)檻在于搞清楚「NC65 把數(shù)據(jù)操作封裝到了哪一層」。前端界面是 NCClient后端邏輯跑在中間件上數(shù)據(jù)庫(kù)是 Oracle 或 SQL Server這三層之間的數(shù)據(jù)流轉(zhuǎn)全部依賴平臺(tái)自帶的 API。你直接寫(xiě) JDBC 也能跑但很快就會(huì)遇到單據(jù)模板取數(shù)、審批流狀態(tài)回寫(xiě)、組織權(quán)限過(guò)濾這些問(wèn)題手動(dòng)處理成本極高。這一篇從實(shí)際開(kāi)發(fā)視角出發(fā)圍繞 NC65 里出現(xiàn)頻率最高的一組 API基礎(chǔ)檔案查詢queryByCondition、單據(jù)保存save/update、審批流操作、SQL 查詢引擎persistenceApi / NCApi以及參數(shù)配置nc.uap.mw.sp.pub.sf.BaseAppServlet把「拿來(lái)就能用」的代碼和參數(shù)講透。目標(biāo)讀者是剛接手 NC65 項(xiàng)目、或者從其他 Java Web 框架轉(zhuǎn)過(guò)來(lái)的開(kāi)發(fā)讀完后能獨(dú)立完成最常見(jiàn)的增刪改查和 Rest 接口發(fā)布并知道報(bào)錯(cuò)時(shí)去哪個(gè)日志目錄找原因。2. 環(huán)境與依賴NC65 開(kāi)發(fā)前必須確認(rèn)的三件事2.1 NC65 技術(shù)棧與 API 調(diào)用的底層邏輯NC65 的二次開(kāi)發(fā)基于插件機(jī)制Plugin和組件框架Module。你在 eclipse 里寫(xiě)的每一個(gè)類最終會(huì)被打包成 jar 或 class 文件部署到 NC 的external或modules目錄下由 NC 中間件動(dòng)態(tài)加載。這個(gè)過(guò)程決定了你在代碼里能調(diào)用的 API 范圍nc.vo是值對(duì)象包nc.itf是接口包nc.impl是平臺(tái)實(shí)現(xiàn)包nc.pubitf是公共接口包。舉例來(lái)說(shuō)查詢一張銷售訂單的基本信息最常見(jiàn)的寫(xiě)法是使用nc.bs.pub.pf.PfQueryBuilder拼接查詢條件再調(diào)用nc.itf.uap.IUAPQueryBS的queryByCondition拿到結(jié)果集。這套 API 之所以重要是因?yàn)樗詣?dòng)幫你處理了多語(yǔ)言、多幣種、權(quán)限模板過(guò)濾等 NC 平臺(tái)的附加邏輯。直接寫(xiě)SELECT * FROM sale_b雖然能查到數(shù)據(jù)但一旦用戶被分配了數(shù)據(jù)權(quán)限結(jié)果集會(huì)與界面顯示不一致。import nc.bs.pub.pf.PfQueryBuilder; import nc.itf.uap.IUAPQueryBS; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.pub.ProxyFactory; import nc.vo.scm.salebill.SalebillBVO; // 獲取查詢服務(wù)通過(guò) ProxyFactory 拿到平臺(tái)實(shí)現(xiàn) IUAPQueryBS queryBS ProxyFactory.create(IUAPQueryBS.class); // 構(gòu)建查詢條件表名為 SalebillBVO 對(duì)應(yīng)的物理表 sale_b PfQueryBuilder builder new PfQueryBuilder(SalebillBVO.class); builder.addWhere(csaleid ?, 1001A1100000000ABCDE); builder.addOrderBy(dbilldate desc); // 執(zhí)行查詢返回的是平臺(tái) VO 對(duì)象數(shù)組可直接用于前端展示 Object[] result queryBS.queryByCondition(SalebillBVO.class, builder.toSQL());這里的ProxyFactory.create是 NC65 獲取遠(yuǎn)程服務(wù)的關(guān)鍵如果直接new一個(gè)實(shí)現(xiàn)類在集群環(huán)境下會(huì)繞過(guò)負(fù)載均衡。注意PfQueryBuilder的addWhere參數(shù)是可變長(zhǎng)的第一個(gè)參數(shù)是帶?占位符的 SQL 片段后續(xù)參數(shù)是實(shí)際值平臺(tái)會(huì)自動(dòng)做防注入處理不要自行拼接字符串。2.2 必備 Jar 包與 Maven 依賴配置本地環(huán)境搭建重點(diǎn)很多新手卡在第一步代碼寫(xiě)好了但import找不到類。NC65 開(kāi)發(fā)不需要你手動(dòng)去下載每個(gè) jar平臺(tái)安裝目錄的lib和external/lib下已經(jīng)包含了完整依賴。本地環(huán)境搭建時(shí)用友官方推薦的做法是使用nc_dev_env插件配合 eclipse它會(huì)自動(dòng)加載$NC_HOME/lib下的所有 jar。但如果你習(xí)慣 Maven 管理依賴需要手動(dòng)將平臺(tái) jar 安裝到本地倉(cāng)庫(kù)mvn install:install-file -DfileE:/NCHOME/lib/nc.uap.mw.jar \ -DgroupIdcom.yonyou \ -DartifactIdnc.uap.mw \ -Dversion65 \ -Dpackagingjar必須引入的核心依賴包括Jar 包名作用必選理由nc.uap.mw.jar平臺(tái)基礎(chǔ)運(yùn)行時(shí)不引則代碼直接編譯失敗nc.bs.framework.jar組件框架與服務(wù)分發(fā)提供 ProxyFactory、AppExceptionnc.vo.pub.jar值對(duì)象與數(shù)據(jù)庫(kù)類型映射所有 BVO / MasterVO 的父類nc.database.jar數(shù)據(jù)庫(kù)方言適配兼容 Oracle / SQL Server參數(shù)說(shuō)明-Dfile的路徑不要放在中文目錄下NC65 的類加載器對(duì)中文路徑支持不好會(huì)出現(xiàn)ClassNotFoundException但不是 jar 缺失導(dǎo)致的詭異問(wèn)題。此外nc.uap.mw.jar在不同小版本里包名會(huì)變比如部分版本是nc.uap.mw.module.jar建議先在lib里按名字搜一下再執(zhí)行 install 命令。2.3 NC65 的持久化 APIpersistenceApi 與 NCApi 怎么選NC65 里有兩套持久化 API新手經(jīng)常搞混但選錯(cuò)會(huì)導(dǎo)致無(wú)法保存隨單據(jù)流轉(zhuǎn)的擴(kuò)展字段。nc.bs.pub.pf.PfPersistence是老牌的持久化組件核心方法有saveVO、updateVO、deleteVO內(nèi)部走的是 JDBC SQL 拼裝性能好但它不會(huì)自動(dòng)維護(hù)審批狀態(tài)和單據(jù)號(hào)適合基礎(chǔ)檔案維護(hù)操作。NCApi則是 NC65 新增的實(shí)體服務(wù)組件Entity Service它基于元數(shù)據(jù)模型驅(qū)動(dòng)能聯(lián)動(dòng)處理單據(jù)號(hào)分配、審批流回寫(xiě)、版本控制等后臺(tái)邏輯。如果你寫(xiě)的是自定義單據(jù)的新增、修改建議直接用NCApiimport nc.itf.uap.IUAPQueryBS; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.pub.ProxyFactory; import nc.vo.scm.salebill.SalebillVO; // 構(gòu)造單據(jù)頭 單據(jù)體的 VO 結(jié)構(gòu) SalebillVO saleBillVO new SalebillVO(); saleBillVO.setPrimaryKey(PKGenerator.generatePK(salebill)); saleBillVO.setCcustid(1001A1100000000ABCDE); saleBillVO.setDbilldate(new java.sql.Date(System.currentTimeMillis())); // 獲取 NCApi 的單據(jù)服務(wù)注意此處不是 ProxyFactory nc.bs.framework.common.InitSession.init(null); nc.bs.framework.common.NCLocator.getInstance().lookup(nc.itf.scm.ISalebillMaintain.class);上面的代碼只展示了前半段獲取到ISalebillMaintain后調(diào)用它的save方法才真正落庫(kù)。需要特別提醒的是NCLocator.getInstance().lookup()必須在InitSession.init()之后調(diào)用否則會(huì)拋SessionTimeoutException。而且 NC65 的NCLocator是通過(guò) RMI 遠(yuǎn)程調(diào)用實(shí)現(xiàn)類它要求在nc.uap.mw模塊注冊(cè)了對(duì)應(yīng)的實(shí)現(xiàn)類如果你的代碼跑在非 IBA 模塊下lookup 會(huì)失敗這個(gè)坑后面在部署章節(jié)也會(huì)提到。3. 核心開(kāi)發(fā) API查、增、改、刪的標(biāo)準(zhǔn)寫(xiě)法與參數(shù)解析3.1 查詢 API 的三個(gè)核心方法queryByCondition、queryByCondition4Page、queryAllNC65 的查詢接口定義在IUAPQueryBS最常用的三個(gè)方法如下注意它們的返回類型和適用場(chǎng)景不同。// 方法一無(wú)條件或少量條件查詢返回全部匹配結(jié)果 public Object[] queryByCondition(Class voClass, String condition) throws BusinessException // 方法二分頁(yè)查詢適用于列表頁(yè)展示 public Object[] queryByCondition4Page(Class voClass, String condition, int pageIndex, int pageSize) throws BusinessException // 方法三查詢所有數(shù)據(jù)不推薦生產(chǎn)環(huán)境直接用 public Object[] queryAll(Class voClass, boolean isCheckPower) throws BusinessExceptioncondition參數(shù)傳的是 SQL WHERE 子句比如csaleid 1001A1100000000ABCDE注意單引號(hào)和大小寫(xiě)Oracle 里表字段名默認(rèn)大寫(xiě)。isCheckPower表示是否做數(shù)據(jù)權(quán)限過(guò)濾生產(chǎn)環(huán)境建議傳true否則用戶能看到別的組織的數(shù)據(jù)。分頁(yè)查詢的實(shí)現(xiàn)細(xì)節(jié)NC65 內(nèi)部會(huì)在condition外包一層ROWNUM或OFFSET/FETCH具體取決于連接的數(shù)據(jù)庫(kù)方言。因此pageIndex從 0 開(kāi)始不是 1。你傳pageIndex1, pageSize20會(huì)拿到第二頁(yè)。3.2 新增與保存用 saveVO 還是 NCApi 的 submit先看一個(gè)最常見(jiàn)的「保存」場(chǎng)景分歧。平臺(tái)標(biāo)準(zhǔn)單據(jù)界面上的「保存」按鈕走后端nc.bs.pubapp.pf.AbstractPfService的save核心邏輯是先校驗(yàn)必填項(xiàng)、再保存頭表、再保存行表最后返回主鍵。如果你在代碼里要復(fù)現(xiàn)這個(gè)動(dòng)作有兩種選擇。選擇一是直接用持久化 API 手工處理頭行import nc.bs.pub.pf.PfPersistence; // 保存單據(jù)頭 PfPersistence persistence new PfPersistence(); persistence.saveVO(salebillVO); // 保存單據(jù)體注意設(shè)置主表主鍵 SalebillBVO[] salebillBVOs salebillVO.getSalebillBVO(); for (SalebillBVO bvo : salebillBVOs) { bvo.setCsaleid(salebillVO.getPrimaryKey()); } persistence.saveVOArray(salebillBVOs);選擇二是走流程平臺(tái)讓submit自動(dòng)觸發(fā)審批import nc.bs.pubapp.pf.PfSubmitHelper; import nc.vo.pubapp.pattern.exception.ExceptionUtils; // 提交審批流approveType 為提交動(dòng)作標(biāo)識(shí) try { Object[] result PfSubmitHelper.submit(salebillVO, approve, 提交, null); } catch (Exception e) { ExceptionUtils.wrapBusinessException(單據(jù)提交失敗原因 e.getMessage()); }參數(shù)說(shuō)明PfSubmitHelper.submit的第三個(gè)參數(shù)是審批意見(jiàn)會(huì)寫(xiě)入審批歷史表第四個(gè)參數(shù)是附加數(shù)據(jù)對(duì)象一般傳null。這個(gè)方法會(huì)自動(dòng)控制在途單據(jù)同一單據(jù)不能同時(shí)被兩個(gè)用戶提交如果單據(jù)已在審批流中會(huì)拋BusinessException。3.3 更新與刪除避免臟寫(xiě)與假刪除的四種注意點(diǎn)NC65 的更新操作有兩個(gè)陷阱。第一是并發(fā)控制updateVO默認(rèn)不帶樂(lè)觀鎖后提交的會(huì)覆蓋先提交的。標(biāo)準(zhǔn)接口里通過(guò)ts字段時(shí)間戳做版本控制你自己寫(xiě)更新邏輯時(shí)要在 VO 里保留ts原始值否則更新SalebillBVO時(shí)需要先查一次原始數(shù)據(jù)。// 先查出數(shù)據(jù)庫(kù)中的原始 VO再修改字段后更新 Object[] oldVOs queryBS.queryByCondition(SalebillVO.class, csaleid pk , false); SalebillVO oldVO (SalebillVO) oldVOs[0]; oldVO.setNrealnum(oldVO.getNrealnum().add(new BigDecimal(10))); persistence.updateVO(oldVO);刪除推薦用「邏輯刪除」NC65 很多單據(jù) VO 都有dr字段值為 0 表示有效1 表示刪除。你寫(xiě)DELETE FROM sale_b會(huì)破壞單據(jù)號(hào)連續(xù)性也影響審批歷史追溯。正確做法是把dr置 1SalebillVO vo new SalebillVO(); vo.setPrimaryKey(pk); vo.setDr(1); vo.setTs(oldVO.getTs()); // 必須帶上原始 ts persistence.updateVO(vo);注意如果oldVO.getTs()為null平臺(tái)會(huì)拋UnsupportedOperationException因?yàn)闊o(wú)法確定版本號(hào)。這也是新手做刪除時(shí)最容易忽略的 NPE——不是「查不到」而是「沒(méi)查」。3.4 獲取未執(zhí)行 SQL 的調(diào)試技巧關(guān)鍵NC65 API 的queryByCondition最終會(huì)拼出完整 SQL但有時(shí)候你查不到數(shù)據(jù)需要看它實(shí)際生成的 SQL 來(lái)定位問(wèn)題。平臺(tái)提供了一個(gè)低調(diào)的接口nc.bs.pub.pf.PfQueryBuilder#toSQL()但在某些版本中它返回的是帶參數(shù)占位符的預(yù)編譯 SQL。這時(shí)可以用另一個(gè)方法拿到可執(zhí)行的完整 SQL// 直接打印 SqlBuilder 生成的 SQL PfQueryBuilder builder new PfQueryBuilder(SalebillBVO.class); builder.addWhere(csaleid ?, 1001A1100000000ABCDE); System.out.println(builder.toSQL()); // 借助平臺(tái)自帶的 SQL 日志攔截器控制臺(tái)會(huì)輸出真實(shí) SQL // 需要修改配置文件$NC_HOME/bin/prop.xml 中增加 // property namelog.sql valuetrue /toSQL()返回的 SQL 里?占位符還在原位置如果你需要在數(shù)據(jù)庫(kù)客戶端里手動(dòng)執(zhí)行把占位符替換成實(shí)際值即可。當(dāng)log.sqltrue生效時(shí)NC 中間件會(huì)在后臺(tái)輸出每一次查詢的完整 SQL 和耗時(shí)這是排查性能瓶頸最直接的手段建議開(kāi)發(fā)環(huán)境直接打開(kāi)生產(chǎn)環(huán)境謹(jǐn)慎開(kāi)啟日志量會(huì)增大。3.5 基礎(chǔ)檔案與單據(jù)的 API 入口對(duì)照表開(kāi)發(fā)對(duì)象推薦服務(wù)接口典型實(shí)現(xiàn)方法典型 VO客戶檔案nc.itf.uap.IUAPQueryBSqueryByConditionCustomerVO存貨檔案nc.itf.uap.IUAPQueryBSqueryByConditionMaterialVO銷售訂單nc.itf.scm.ISalebillMaintainsave/updateSalebillVO采購(gòu)訂單nc.itf.scm.IPoMaintainsave/updatePurchaseOrderVO審批流nc.bs.pubapp.pf.PfSubmitHelpersubmit/approve—自定義查詢nc.bs.pub.pf.PfQueryBuildertoSQL/queryByCondition任意 BVO這個(gè)對(duì)照表是「做客開(kāi)時(shí)最先要記」的清單。遇到一個(gè)新單據(jù)先看它的接口服務(wù)名和 VO 類名就能大致判斷查詢邏輯怎么寫(xiě)。如果不確定服務(wù)是否存在用NCLocator.lookup(接口.class)前先查 module 注冊(cè)文件META-INF\services確認(rèn)接口在哪個(gè)模塊下避免運(yùn)行時(shí)找不到服務(wù)。4. 發(fā)布 Rest 接口從 NC65 到外部系統(tǒng)的最短路徑含參數(shù)配置4.1 前置準(zhǔn)備啟動(dòng) NC65 的 Rest 服務(wù)與注冊(cè) URLNC65 發(fā)布 Rest 接口不需要額外安裝框架平臺(tái)已內(nèi)置基于 Jersey 的 Rest 支持。你只需要把類注冊(cè)到nc.uap.mw的 JAX-RS 服務(wù)注冊(cè)表里。但很多新手卡在第一步URL 訪問(wèn)報(bào) 404 或 401。打開(kāi)nc.uap.mw模塊的META-INF\rest-services.xml確認(rèn)以下內(nèi)容存在?xml version1.0 encodingUTF-8? rest-services service namenc.itf.uap.IUAPQueryBS/name url/query/url auth0/auth /service /rest-servicesauth0表示匿名訪問(wèn)auth1表示需要登錄態(tài)。生產(chǎn)環(huán)境建議改成1用NC 登錄接口換取 token后訪問(wèn)否則接口裸奔在公網(wǎng)風(fēng)險(xiǎn)極大。4.2 手寫(xiě)一個(gè)帶參數(shù)的查詢接口完整代碼package nc.demo.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import nc.bs.pub.pf.PfQueryBuilder; import nc.itf.uap.IUAPQueryBS; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.pub.ProxyFactory; import nc.vo.scm.salebill.SalebillBVO; import com.alibaba.fastjson.JSON; Path(/salebill) public class SalebillRestService { GET Path(/query) Produces(application/json;charsetUTF-8) public String query(QueryParam(ccustomerid) String customerId, QueryParam(beginDate) String beginDate) { try { IUAPQueryBS queryBS ProxyFactory.create(IUAPQueryBS.class); PfQueryBuilder builder new PfQueryBuilder(SalebillBVO.class); // 客戶主鍵不為空時(shí)追加查詢條件 if (customerId ! null !customerId.isEmpty()) { builder.addWhere(ccustomerid ?, customerId); } // 日期條件使用 注意格式與數(shù)據(jù)庫(kù)一致 if (beginDate ! null !beginDate.isEmpty()) { builder.addWhere(dbilldate to_date(?, yyyy-mm-dd), beginDate); } Object[] result queryBS.queryByCondition(SalebillBVO.class, builder.toSQL()); return JSON.toJSONString(result); } catch (BusinessException e) { return {\error\:\ e.getMessage() \}; } } }邏輯說(shuō)明Path指定了類級(jí)別的訪問(wèn)路徑QueryParam接收 URL 上的查詢參數(shù)。返回 JSON 使用fastjson因?yàn)?NC65 自帶該依賴不必額外引入 Jackson。注意builder.toSQL()是執(zhí)行前的最后一步如果條件為空字符串會(huì)生成WHERE 11這在 Oracle 下沒(méi)問(wèn)題但 SQL Server 下建議顯式判斷后再拼條件。4.3 Rest 接口的權(quán)限與參數(shù)校驗(yàn)必須配置的三處發(fā)布后必須在 NC 的權(quán)限管理里給角色分配該菜單或動(dòng)作的權(quán)限否則即使auth0也可能出現(xiàn)信任域校驗(yàn)失敗的提示。常見(jiàn)做法是在rest-services.xml注冊(cè)的服務(wù)名要與代碼中的Path類完全對(duì)應(yīng)部署位置$NC_HOME/modules/你所在模塊/META-INF/rest-services.xml重啟 NC 中間件然后通過(guò)http://ip:port/service/模塊標(biāo)識(shí)/訪問(wèn)接口參數(shù)校驗(yàn)不能在 Servlet 里做Rest 服務(wù)不走 Servlet建議在query方法開(kāi)頭獨(dú)立寫(xiě)校驗(yàn)邏輯并統(tǒng)一異常返回格式。以下是一個(gè)簡(jiǎn)單工具方法private boolean checkParam(String value) { // 只允許數(shù)字、字母和常見(jiàn)的橫線、下劃線防止 SQL 注入 return value ! null value.matches([a-zA-Z0-9_\\-]); }5. 報(bào)錯(cuò)排查NC65 API 調(diào)用失敗的常見(jiàn)原因與定位手段5.1ProxyFactory.create拋出BusinessException的定位順序ProxyFactory.create(IUAPQueryBS.class)在 NC65 里是通過(guò)Module配置動(dòng)態(tài)裝配的如果某個(gè)模塊沒(méi)有注冊(cè)iuap.querybs實(shí)現(xiàn)調(diào)用時(shí)直接拋BusinessException: 找不到服務(wù)實(shí)現(xiàn)。新手常誤認(rèn)為項(xiàng)目缺 jar其實(shí)只要打開(kāi)$NC_HOME/modules/uap/META-INF/module.xml檢查public-service聲明即可。如果確認(rèn)服務(wù)已注冊(cè)接下來(lái)排查用戶是否有權(quán)限。NC65 的queryByCondition權(quán)限邏輯是先取當(dāng)前登錄用戶的pk_corp和角色再拼進(jìn) SQL 的org過(guò)濾條件。用InitSession初始化一個(gè)空 session 去調(diào)用通常會(huì)因?yàn)闆](méi)有默認(rèn)組織而查不到數(shù)據(jù)報(bào)錯(cuò)卻是空指針。5.2 單據(jù)保存報(bào)「當(dāng)前操作者與提交者不一致」的解決思路在 NC65 的審批流場(chǎng)景下PfSubmitHelper.submit會(huì)檢查當(dāng)前 session 用戶與單據(jù)創(chuàng)建人是否一致。如果你是在定時(shí)任務(wù)里自動(dòng)提交必須手動(dòng)模擬 sessionnc.bs.framework.common.InitSession.init(0001A11000000000000P); // 管理員用戶 pk nc.bs.framework.common.InitSession.setCorp(1001A1100000000000A);InitSession.init的第一個(gè)參數(shù)是用戶主鍵第二個(gè)是公司主鍵通過(guò)setCorp設(shè)置。注意init只能調(diào)用一次進(jìn)程生命周期內(nèi)有效多次調(diào)用會(huì)覆蓋之前的信息。定時(shí)任務(wù)里用完要記得InvocationInfoProxy.getInstance().setUserId()清理否則后續(xù)代碼全部繼承這個(gè)用戶態(tài)容易出現(xiàn)越權(quán)。5.3 日志查看NC65 的nclog與異常堆棧讀取NC65 的日志默認(rèn)輸出到$NC_HOME/nclog按模塊分文件。開(kāi)發(fā)期出問(wèn)題第一眼看nclog/run.log和nclog/err.log# 查看最近 100 行運(yùn)行日志過(guò)濾業(yè)務(wù)異常關(guān)鍵字 tail -100 $NC_HOME/nclog/run.log | grep -E Exception|ERROR|Caused by # 跟蹤實(shí)時(shí)日志 tail -f $NC_HOME/nclog/run.logrun.log里記錄了每次 API 調(diào)用的入口和耗時(shí)err.log是堆棧異常匯總。出現(xiàn)ORA-00942: table or view does not exist的情況往往是調(diào)用的 VO 類對(duì)應(yīng)的表在數(shù)據(jù)庫(kù)里沒(méi)建此時(shí)要在 NC 的「系統(tǒng)監(jiān)控→數(shù)據(jù)字典」中確認(rèn)實(shí)體是否已發(fā)布而不是改代碼。6. 進(jìn)階優(yōu)化NC65 API 調(diào)用的性能瓶頸與批量處理技巧6.1 批量操作saveVOArray與逐條saveVO的性能差距NC65 的saveVO內(nèi)部每調(diào)一次就開(kāi)一個(gè)事務(wù)、提交一次。批量保存 500 條單據(jù)如果循環(huán)調(diào)用saveVO耗時(shí)會(huì)呈指數(shù)級(jí)上升數(shù)據(jù)庫(kù)日志文件也會(huì)瘋狂膨脹。正確做法是使用saveVOArray一次性提交// 批量保存返回的主鍵數(shù)組順序與傳入順序一致 String[] pks persistence.saveVOArray(salebillVOs);實(shí)測(cè)在 Oracle 11g 下300 條數(shù)據(jù)逐條保存耗時(shí)約 1.8 秒批量保存約 90 毫秒差距近 20 倍。原因是批量模式會(huì)一次性拼接多條INSERT配合 JDBC 的addBatch執(zhí)行節(jié)省了往返數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)時(shí)間。如果單據(jù)還有行表saveVOArray不會(huì)自動(dòng)幫你保存行表必須先把行表 VO 也構(gòu)造成數(shù)組并分兩次保存這一點(diǎn)很多從 Hibernate 轉(zhuǎn)過(guò)來(lái)的開(kāi)發(fā)者容易忽略。6.2 大數(shù)據(jù)量查詢時(shí)的 fetchSize 與分頁(yè)參數(shù)調(diào)優(yōu)queryByCondition4Page支持分頁(yè)但服務(wù)器默認(rèn)的 fetchSize 是 50如果你一次性查 1 萬(wàn)條數(shù)據(jù)做報(bào)表平臺(tái)會(huì)自動(dòng)做 200 次 fetch網(wǎng)絡(luò)開(kāi)銷極大。此時(shí)可以在構(gòu)建查詢前設(shè)置 JDBC 的 fetchSize// 獲取連接并設(shè)置 fetchSize注意用完即還 java.sql.Connection conn nc.bs.framework.common.NCLocator.getInstance().lookup(java.sql.DataSource.class) .getConnection(); conn.setAutoCommit(false); java.sql.PreparedStatement ps conn.prepareStatement(sql); ps.setFetchSize(1000);參數(shù)說(shuō)明setFetchSize的單位是行數(shù)Oracle 驅(qū)動(dòng)會(huì)忽略該參數(shù)SQL Server 驅(qū)動(dòng)最多支持 8 的整數(shù)倍。如果遇到 fetchSize 不生效檢查是否用了 NC 自帶連接池的PreparedStatement包裝類它可能覆寫(xiě)了該方法。6.3 緩存策略NC65 API 的查詢結(jié)果能否復(fù)用NC65 平臺(tái)自帶的緩存機(jī)制是「基于主鍵」的 VO 緩存queryByCondition不會(huì)緩存結(jié)果每次調(diào)用都查庫(kù)。但在高并發(fā)讀多寫(xiě)少的場(chǎng)景你可以用nc.bs.pub.pf.PfCacheManager手動(dòng)管理import nc.bs.pub.pf.PfCacheManager; // 緩存 10 分鐘 Object[] cached PfCacheManager.get(salebill_list, 600); if (cached null) { cached queryBS.queryByCondition(SalebillBVO.class, condition); PfCacheManager.put(salebill_list, cached); }這里有個(gè)注意點(diǎn)PfCacheManager.put緩存的 VO 數(shù)組是對(duì)象引用。如果后續(xù)代碼修改了數(shù)組里的某個(gè) VO緩存也會(huì)變臟下次拿到的是修改后的數(shù)據(jù)。所以只緩存明確不會(huì)被修改的只讀查詢寫(xiě)操作直接繞過(guò)緩存。6.4 寫(xiě)出適合 NC65 平臺(tái)的 SQL 的三個(gè)原則原則一不要用SELECT *NC65 的 VO 與表的字段映射是「按需取列」缺列會(huì)導(dǎo)致VO 取值為 null而不是報(bào)錯(cuò)排查起來(lái)非常隱蔽。原則二日期條件用to_date(?, yyyy-mm-dd)或 sysdate - 30不要用字符串直接比較否則不走索引。原則三有 OR 條件的 SQL 建議拆成兩個(gè)子查詢 unionNC65 的 SQL 生成器對(duì) OR 的優(yōu)化能力有限大表上容易全表掃描。如果你在 NC65 上做報(bào)表匯總、外部接口對(duì)接這幾個(gè)原則能直接決定接口響應(yīng)是 200ms 還是 5s。最后留一個(gè)自查建議上線前把log.sqltrue打開(kāi)跑一遍核心接口記錄每條 SQL 的執(zhí)行計(jì)劃把TABLE ACCESS FULL的表補(bǔ)上索引——這一步做完NC65 接口的穩(wěn)定性基本就穩(wěn)了。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狠狠狠狠免费| 丁香婷婷五月天在线视频| 99热超碰| 成人va视频| 97超碰欧美中文字幕| 丁香九九九九| 深爱激情网综合| 日日操夜夜操无码免费| 国产欧美熟妇另类久久久| 午夜性爱影视一区77| 五月四色激情| 国产暴力强伦轩1区二区小说| 国模淫穴色图| 激情五月天黄色小说| 99热在线播放| 婷婷激情五月| 激情色情五月天| 金品在线视频99| 97av在线视频| 精品五月天| 婷婷五月天激情AV影院| 99精品色色| 97超碰色| 狠狠婷婷综合| 国产精产国品一二三在观看| 色色亚洲| 天天拍天天操| 99性爱视频| 五月天啪啪啪| 亚洲天堂aaa| 色五月网址| 第四色色色色色丁香五月天| 五月激香蕉网| 日韩欧美成人一区二区三区| 疯狂做受XXXX高潮A片| 日韩成人AV在线播放| 丁香五月激情视频在线| 天天射射夜| 久久九九玖玖| 久热在线观看视频9| 激情五月婷婷视频一区二区三区| 丁香五月色色| 在线播放成人网站| 婷婷五月天丁香| 亚洲狠狠干| 国产又黄又爽又激情不遮挡视频在线观看 | 六月激情综合| 色五月AV| 综合久久99| 色五月天网| 99在线er热| 国产av基地| 另类图片五月天激情| 成人午夜天| 性爱网五月天| 九九人人操| 五月激情婷婷播播开心| 991精品在线视频| 丁香五月婷婷婷婷欧美综合| 天天肏屄夜夜爽| 99热自拍| 亚洲五月婷婷在线| 色婷五月| 婷婷五月天久久| 人人人人人人人草| 97色色视频| 一起草性爱不卡视频| 五月丁香五月天现场视频| WWW色五月天| 欧美噜噜免费观看| 五月丁香久久呀| 日日干综合| 婷婷五月天播| 婷婷五月天成人基地| 色婷婷五月天天天天天| 久久机热思思热| 99热只有国产在线精品| 五月丁香婷婷成人综合网| 999影院成人在线影院| 亚洲国产va| 天天搞天天色综合| 91色婷婷综合久久中文字幕二区| 欧美日韩成人在线| 婷婷99视频在线| 99原创自拍视频在线观看| www久久久久久久久久久| 日韩成人无码| 丁香五月婷婷综合精品素人| sisi热国产| 五月丁香综合精品| 综合五月丁香六月婷婷| 婷婷99狠狠躁天天躁| 玖玖热视频| 中文字幕日产A片在线看| www.久久| 99爱99操| 激情色视频| 亚洲婷婷欧美婷婷| 久久XX| 九热网站| 亚洲小电影在线观看黄999| www.五月婷婷.com| 开心五月婷婷99| 大香线蕉伊人| 91国产精品视频播放| 六月丁香婷婷综合影院| 色五月之第四色| 国语精品探花| 日本狠狠干| 五月天另类小说久久小说网| 激情五月天啪啪视频| 思思热久久久在线| 香蕉久久国产AV一区二区| 日产精品一线二线三线芒果| 五月婷啪| 日狠狠| 五月婷婷综合网| YW无码| 亚洲色五月| 免费播放99性爱视频| 激情四射婷婷| 丁香六月婷婷色XXXXX| 欧美色婷婷| 五月婷婷丁香色吧网| 最新色色五月天| 日韩人妻白浆视频系列| 亚洲欧洲色色| 六月丁丁香| 9精品久久999| 超碰免费成人| 99久久婷婷五月综合| AV在线不卡播放| 99啪啪视频| 国模淫穴色图| 高清资源站日A美A欧亚…| 一起草av在线观看| 人人干AV| 成人美女网| 91人人操人人| 99啪啪视频| 五月久久| 亚洲国产精品VA在线看黑人| 在线中文字幕免费视频| 天天爽天天爽夜夜爽| 夜夜资源站| 欧美色偷偷大香| 五月丁香直播| 无码成人AAAAA毛片AI换脸| 99re免费精品视频| 久色网址| 任你草| 五月天激情综合| 禁片二区| 丁香五月婷婷啪啪| 久久A区B区| 中文字幕性爱视频| 颜射 精品性爱av| 天天日天天摸| 国产小网站| 国产精品A片| 开心五月激情网| www.超碰| 雪千夏麻豆| 天天综合五月| 久久久精品AV| 好叼操在线观看| 婷婷丁香人妻天久久| 99er热精品视频| 亚洲乱码日产精品BD| 99色五月| www.婷婷五月| 桃色Av色哟哟| 久久综合99| 伊人久久婷婷| aaaaaa片| 婷婷在线中文字幕| 婷婷五月天狠狠搞干| 国产精品色情AAAAA片软件| 五月婷丁香花| 亚洲视频在线观看| 五月丁香在线婷婷美女| 婷婷五月综合色小姐小说| 婷婷丁香五月激情中文字幕版| 99久久久99久久91熟女| 天天摸天天高潮天天爽| 综合aV在线| 亚洲欧洲自拍图片专区五月天| 久久激情视频| 99热这里只有精品2024| 五月婷婷之综合激情在线| 综合五月激情| 日韩AV中文字幕在线| 日日狠狠久久偷偷四色综合免费| 五月婷av| www.婷婷| 色狠狠狠干| 久热这里只有精品99re| 丁香五月激情六月综合| 99se丁香| 人人播| 777久久久| 天天干电影| 99九精品| 人人摸人人| 99热这里只有精品国产免费| 玖玖爱伊人网| 激情五月丁香亭亭| 激情婷婷五月久久| www.99色在线| 五月婷婷人人人操| 深夜婷婷五月丁香| 五月婷婷精品视频| 天天干天天操天天爽| 丁香五月婷婷婷婷欧美综合| 九九精品9| 六月色播| 丁香五月天啪啪| 久久99热这里只频精品6学生| 人人色性网| 99久久超级| 欧美婷婷综合| 日91高清无玛| 欧美日韩欧美| 91激情五月开心| 五月丁香色| 人妻少妇色综合| 男人综合网| 中文在线视频久9| 97视频.干com| 日韩AAA| 色综合色婷色基地| 五月丁香影院| 亚洲天堂色色| 久久伊人日日夜夜| 丁香五月网址| 操操自拍| 婷婷丁香成人网址| 人妻AV在线| 五月丁香婷婷伊人| 色色激情五月天| 色丁香在线视频| www综合久久| 99操逼| 色色色9| 日本啪啪网| 九九九热精品| 久久婷婷欧美| 色综合天堂| 99热在线观看| 亚洲综合成人网| 成 久久| 色婷婷免费视频| 日本三级成人秘书精品片| 婷婷97碰碰| 激情综合色五月六月婷婷| 五月天怕怕| 久久99综合| 天堂综合久久 | 无码网| 91操在线观看| www日本熟妇99在线视频| 日韩欧美一级大黄网站| 国产激情综合五月久久| 天天插天天| 久久久久这里都是精品| 久久人人九九| 我去色色网五雨天| 99九九免费精品| 99在线精品视频| 噜噜久| caop在线视频| 操操天堂| 中文字幕精品在线观看| 五月丁香婷色| 七七久久婷婷| 蒲京久久无码视频| 色婷婷五月综合激情中文字幕| 天天日日夜夜| 婷婷开心激情| 色宗合久久五月婷婷| 激情综合网五月在线播放| 五月婷婷9| 国产偷人爽久久久久久老妇APP| 九月激情网| 亚洲天堂色色| 天天干 夜夜爽| 热久久66| 日日激情网| 99成人精品六| 天天激情夜夜干| 伊人春天av| 五月天天堂久久| 狠狠综合区| 99原创自拍视频在线观看| 五月丁香在线观看| 五月天色五月| 国产成人精品亚洲线观看| 色综合五月天| 性一交一乱一交A片久| 亚洲色网络| 亚洲激情四射| 99久久99九九99九九九| 亚洲亚洲人成综合网络| 伊人丁香在线| 99久久人人| 婷婷在线中文字幕| av五月丁香| 婷婷六久久| 色婷丁香91| BBWCUCKOLD精品熟妇| 99热最新| 成人丁香婷婷| 九九re视频在线视频| av五月天婷婷丁香| 久久婷婷激情四射五月天| 欧美人人超级碰| 99久久婷婷国产综合亚洲| 婷婷狠狠青青| 2015超碰| 99精品热| www.五月天婷婷姐姐| 天天操夜夜夜拍拍拍| 日日婷婷不卡| 老司机伊人| 日本狠狠干| 97九色视频| 99九九在线| 九九热在线99| 久热婷婷综合| www五月天com| 丁香五月天欧美成人| 深爱婷婷基地| 一本综合丁香日日狠狠色| wwwwww.色| 五月综合精品| 91热在线| 丁香六月在线综合| 亚洲色夜| 色五月在线| 久久精品亚洲热| 欧美成人精品A片免费一区99| 五月丁香亭亭操逼| 极品人妻VIDEOSSS人妻| 99热www| 91丨九色丨高潮丰满日本| 久热只有这里有精品| 日日噜噜久久婷婷五月天| 五月婷婷丁香色播网| 丁香五月天堂网| 激情综合五月丁香| XX色综合| 国产免费AV网站| 五月丁香六月婷婷在线小说视频| 日韩AAAAA| 五月天婷婷色色| 桃色五月天| 91人妻人人操| 久久草人妻| 亚洲性爱区无码区| 成人短视频在线观看| www.色五月| 日本99视频精品免费播放| 激情综合网五月丁香| 五月综亚洲| 96丁香六月婷婷蜜桃综合久久| 狠狠操狠狠操| 啪啪视频99| 久九色| www.色擼擼.com| 涩五月婷婷| 狠狠婷婷色| 99在线热| 激情五月天网| 黄色中文字目| 激情综合自拍五月婷婷色五月| 久久A V无码视频| 色色色色色色色色网站| www.cao.com久久| 99热99在线| 色色色色综合| 色色色com| 久久五月视频| 国产VA亚洲VA96| 色婷久久| 久久久久久综合88| 久狠狠| 五月天婷婷影院影院观看| 99热最新| 99碰碰中文| 五月丁香在线精品| 五月丁香综合啪啪| 九九99免费理论| 天天婷婷| 人人插操| 激情综合婷婷| 综合色播| 五月婷婷AV| 天天激情欧美美女| 日噜噜色| 人人干Av| 欧美性生交XXXXX无码小说| 亚洲视频国产一区| 丁香五月在线观看| 丁香五月天亚洲综合| 午夜不卡成人一区二区| 国产这里只有精品| 五月天激日本色情在线| 婷婷综合五月天| 六月色播| 99综合在线| 九九99在线| 亚洲色色色色| 99在线精品免费视频| 99ri精品| 五月丁香啪啪啪综合网| 五月天婷婷綜合院| 九九这里有精品| 五六月婷婷久久| 这里只有精品在线播放| 青青草视频免费观看| 婷婷久久婷婷色五月| 五月丁香婷婷色色| 婷婷啪啪| 久操婷婷| 日本熟妇人妻在线| 亚洲成AV人片在线观看| 久久这里99| 国精产品一区一区三区免费视频| 色婷婷4| 五月开心久久| 五月天激日本色情在线| 日欧一片内射VA在线影院| yazhou seshipin| 99这里有精品视频| 69er小视频| co超碰在线观看| 天天插天天干天天舔| 国产精产国品一二三在观看| 婷婷丁香综合| 成人丁香五月婷| 激情五月婷婷老师| 97久久久免费福利网址| 黄网免费看| 婷婷五月丁香五月| 色噜噜狠狠色综无码久久合欧美| 五月丁香六月欧美| 潮汕成人AV片在线| 青青草轻轻操| 伊人丁香六月婷婷| 91丨九色丨首页| 激情六月一二| 91|九色|动漫| 激情五月婷婷视频一区二区三区| 六月丁香深深爱| 无码色| 天天日天天操天天干| 97碰 在线视频观看| 美女天天爽| 色婷婷色五月综合| www.五月天婷婷| 91dy.av| 伊人婷婷99热精品| 久狠狠狠| 26uuu淫色| 日本44久久在线| 亭亭玉月丁香| 天天色情站| 黄色录像网点| 色激情五月| 久久网日本| 色一情一乱一伦一区二区三区| 思思热在线视频99| 婷婷五月丁香香蕉| 五月丁香激情啪啪| AV人人操| 淫视馆aV二区一区| 99情色五月天| 五月综合视频| 色色色色色网| 欧美色骚婷婷五月天| 九九久久玖玖爱| 成人午夜无码视频| 情婷婷五月天| 日本三级韩三级99久久| 色综合婷婷99| 六月婷婷综合| 九九无码| 久久久精久人妻| 色99热| 97色五月婷婷在线| 色玖玖| 丁香六月婷婷综合在线| 久操综合| 狠狠婷婷综合| 久久ww| 丁香婷婷六月男男| 狠狠色综合777| 一起操 91N.com| 久久人妻久久| 色五月婷婷五月丁香五月| 九九热九九| 丁香婷婷综合影院| 婷婷精品| 97碰碰视频| 99热这里只有精品1998| 99色色| 午夜在线成人网站免费观看| 大香蕉综合| 婷婷五月天美女视频| 久久五月丁香婷婷| www久久艹| 骚逼视频一区2区| 人妻熟妇国产精品| 亚洲婷婷欧美婷婷| 丁香婷婷五月基地| 日日噜狠狠色综合久久| WWW色色色COm| 色欧美日| 五月婷婷欧洲| 婷婷五月天网| 99视频久久| 182TV大香蕉| 婷婷五月天亚洲色| 婷婷五月天免费小说| 久久免费丁香| 九9九9无码| 波多野结衣不卡AV| 婷婷五月天成人网| 欧美成人精品A片免费一区99| 婷婷五月情天| 色狠狠图片| 99国产er热视频| 国产脫衣舞一区二区三区| 欧美色必爱| 免费视频无码| 五月丁香人妻| 国产成人99久久亚洲综合精品| www.日本91| 激情五月久久| www.婷婷五月| 综合网啪| 婷婷综合97| 狠狠干,狠狠操| 五月婷婷婷婷婷婷艺术| 色婷婷先锋| 久久狠色噜噜狠狠狠狠97| 开心五月六月婷婷| 性爱五月婷| 日韩欧美不卡| 日逼AV影音先锋男人资源站| 国产午夜成人AV在线播放| 激情综合五月天| 激情五月综合| 成人亚洲精品久久久久| 五月婷婷操操| 九月色婷婷综合亚洲| 亚洲中文AV| 97超级碰人人| www.久9| 新男人天堂人妻| 久爱综合| .comwww在线观看免费操| 热久综合| 4438成人电影| 91超碰在线观看| 久久精品婷婷| 综合激情婷婷| 五月 婷 久| 五月天婷婷色综合| 丁香五月很很肏| 丁香五月黄色| 97干在线视频| 色狠狠综合网| 亚洲成人婷婷| 丁香五月天啪啪| 国产日比| 亚洲春色奇米影视| 99热高清在线| 五月丁香六月香香蕉| 五月婷婷无码| 色丁香在线视频| 这里只有精品视频一区| 婷婷五月婷婷| www.99在线| 欧美性爱丁香五月| 18久久| 97人人操人人干| 五月丁香六月欧美综合| 色五月丁香六月欧美综合| 先锋资源91| 久久久五月天| 久久久九九视频精品18| 成人综合AV| 3pAV| 91精品久久久久、久五月天| 丁香六月在线| 激情精品久久| 色噜噜狠狠色综| 袁子仪视频观看| 丁香五月天在线| 九月婷婷综合| 五月丁香六月停停停| 久操无码| 甈你aaaaa| 激情婷婷五月| 一级AV片| 色五月色五天色情网| 精品人妻久久久| 激情五月久久| 久久五月婷6 9| 欧美在线视频免费播放| 色亚洲婷婷| 九热...av| 综合久久十三| 婷婷五月天色色| 婷婷干五月综合在线播放| 91久热| 五月丁香久久激情综合| 六月丁香激情综合网| 色婷婷丁香中文在线播放| 色色丁香五月天| 97成人操| 韩国情人在线电视剧免费观看高清版全集 | 午夜成人综合| 五月天激情av| 无码激情AAAAA片-区区| 丁香大香蕉| 婷婷五月视屏| 日本色五月| 情趣视频66| 五月丁香六月激情综合| 亚洲成人无码免费| 天天拍天天做视频| 日韩有码一区| 色香久久| 婷婷最新地址| 五月丁香婷婷中文| 婷婷六月丁香色| 伊人五月天在线| 久久艹99| 懂色AⅤ| 五月婷婷六月丁香激情| 大香蕉婷婷丁香视频在线| αV电影| 丁香狠狠| www.99精品在线| 岛囯综合激情网| 亚洲天天免费| 亚洲va成人va成人va在线观看| 激情丁香久久久久久| 亚洲Av入口| 五月婷婷丁香六月| 91丨九色丨国产打屁股| 综合久久影院| 婷婷五月色综合| 激情五月天com| 天天综合网~91| 玖玖九九99| 精品夜夜澡人妻无码AV| 人妻乱码久久久| 夜夜躁爽日日| 99热99ai| 亚洲黄色影视| 亚洲丁香五月综合| 91操碰| 99re热精品在线视频| 97热在线精品| 欧美在线看| 国产成人在线精品| 色情五月综合婷婷| 五月天色婷婷综合| 天天爱天天日| 久青草影院| 国产成人VA| 欧美成人精品三区综合A片| 久久亚洲婷婷综合色五月| 色色色五月婷婷| 欧美色偷偷大香| 婷婷综合五月天亚洲综合| 97干资源在线观看| 亚洲操B| 天堂网色色| 情婷婷五月天| 人人干人人操外国| 99热精品在线在线| 97碰超级人人看| 激情色色| 熟女重口味αV| 九九热青草| 日日操天天| 激情婷| 无码髙清| 婷婷偷拍网| 精品一二三区久久AAA片| 丁香综合伊人AV| 久久无码成人| 五月丁激情| 99在线视频操999| 99无码黄色视频| 26uuu丁香婷婷五月| 99色色网| 久久狠狠色| 亚洲啪| 综合XX网| 丁香五月色色| 亚洲第一成人无码A片| 色女伊人| 香蕉综合在线| 日韩成人中文| 丁香五月天亚洲视频| 国产成人AV在线| 色一情一乱一伦一区二区三区| 婷婷五月色亚洲| 色噜久| www.五月天| 日本性激情色播| 六月婷基地| 婷婷综合爱| 色综合久久综合中文综合网| 国产欧美熟妇另类久久久| 久热网在线视频| 色播婷婷五月天| 天天日天天久久青青| 天天做天天爱| 97丁香五月天| 操操自拍| 欧美成人AAA片一区国产精品| 另类小说激情五月天| 婷婷五月天久久久| 激情五月天伊人av| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 五月天综合| 久久精品国产色| 激情国产五月| 99在线精品视频| 婷色成人| 天堂中文国产| 一本色道久久综合狠狠躁一二三 | 婷婷欧美综合| www.ywav| 99碰碰| 五月婷婷在线免费观看| 久久久久久草黄色片AV在线观看| 婷婷五月天AV在| 无码少妇高潮喷水A片免费| 狠狠色噜噜狠狠| 激情五月天婷婷免费观看| 一级黄色操B| 婷婷亚洲综合| 色婷婷综合久久久久| 欧美激情综合色综合| 一起草无码| 91在线视频观看午夜福利| 五月天综合色| 五月天激情四射网站| 六月色国内综合| 99惹在线精品免费观看| 九九干视频| 亚洲精品九九| 操人妻AV| 99热只有这里有精品| www.天天干| 天天综合影院| 免费久久这里只有精品99| 九九久久精品| 九九激情视频| 91av视频| 1024操逼| 202丰满熟女妇大| 99这里只有| 夜夜爽天天日| 天天日人人爽| 免费的日逼视频| 色狠狠色| 97人妻碰碰碰久| 91人碰| 五月丁香亭亭AV女优| 人五月天婷婷喷水| 日韩成人精品中文字幕电影| 开心五月激情网| 中文字幕视频在线播放| 色综合久久88色综合天天99| 五月草影视| 天天草天天日| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 久久婷婷五月天蜜桃| 亚洲久热无码| 婷婷丁香人妻久久在线观看| 狠狠999| 情欲综合网| 婷婷五月天激情偷拍| 天天插天天玩天天干| 538任你爽| 色婷婷97| 天天开心天天色| 久久九九网| 婷婷色综合| 五月婷婷干干干| 五月丁香美女视频| 丁香六月婷月91婷月| 婷婷丁香社区网| 久久婷婷伊人| 六月婷色| 99色综合网| 精品思思久久| 99色在线视频观看| 99热这里只有精品268| 大香蕉久久伊人婷婷五月丁香| 亚洲婷婷在线播放十月| 欧美VA视频| 激情图片婷婷| 丁香五月久久| 天天爽天天弄| 久久久五月婷婷| 日韩十国产极品久久| 五月婷婷在线免费| 99热最新精品| 色婷视频| a网站免费观看| 九九9久九9国产视频| 操逼电影免费看| 色婷婷播放| 日本久久人| 操操碰| 婷婷爱综合| 激情综合色| 人人爱摸视频| 最新久久网址| 激情综合网激情五月天| 狠狠色综合五月人人| 爱操天堂| AV色婷婷| 婷婷激情综合无月| 996日日爱| 丁香五月网址| 熟妇人妻中文字幕无码老熟妇 | 五月丁香中文字幕| 欧美婷婷丁香五月社区| AAA久久| 色135综合网| 色婷婷性爱| 九九热在线观看6| WWW色综合| 色99欧洲色19| 超碰在线人人| 9热网站| 97亚洲婷婷| 色婷婷五月六月丁香综合视频| 青草热视频这里只有精品| 99这里有精品视频| 婷色五月| 狠狠色狠狠色综合日日91| 婷婷五月丁香花综合| 色情五月丁香婷婷网| 亚洲麻豆乱码国产2028| 五月丁香成人视频| 99操逼| 久cao香蕉影院| 大香蕉九操| 思思精品久久艹| 天天色图| 噢美99| 久久性视频| 五月开心深深爱激情综合| 99久re热视频精品98| 日本欧美成人片AAAA| 婷婷六月综合基地| 综合99在线| 看片视频在线免费日产在线看| 92久久| 91狼友视频网页更新| 久久色情| 人妻久久久久久久 | 大香蕉啪啪啪| 九九人人自拍| 综合久久五月| 亚洲五月婷婷| 黑人无码一区| 性99网站| www.五月天婷婷| 91婷婷在线观看| 97婷婷丁香五月| 午夜丁香婷婷| 97五月天婷婷综合激情网| 四虎婷婷五月天| 大香蕉九九| 婷婷婷五月香蕉| 五月天婷婷色播| 99热这里都是精品| 婷婷五月六月| 亚洲五月天婷婷综合| 久久激情五月婷婷| caopeng97人人| 99热这里只有精品1998| 婷婷五月天激情网| 操B五月天| 天天做天天爽| 一区二区你懂的| 久久婷婷婷婷伊人| 六月丁丁香| 久久网日本| 丁香激情网| 亲子乱av一区二区三区的| 婷婷成人丁香色情基地30| 99精品亚洲| 超碰在线视屏| 婷婷五月天另类网站| 大地9中文在线观看免费高清| 九九热av| 五月婷婷综合网| 9 9热这里有精品| 婷婷六月色播| 五婷婷综合网| 成年人99热| www.久久| 色射7856五月天激情四射| 精品一区二区三区四区五区六区介绍| 精品婷婷| 综合大香蕉| 97干网站| 影音先锋一区| 99操逼视频| 午夜成人AV在线| 超碰在线9| 在线观看av网站| 玖玖婷婷五月| 丁香九月综合| 丝袜人妻| 色婷婷久久综合| 久久婷婷丁香| 9久国产精品| 亚洲欧美综合7777色婷婷| 站长推荐无码播放| 五月丁香免费视频| 久久这里精彩免费在线观看| 五月婷婷香| 久Se视频在线观看| 99热久草| 六月婷婷色综合| 九九99久久| 免费精品66| 91chinese在线| 久久久久综合激动五月天| 国产偷人爽久久久久久老妇APP| 五月婷婷激情色情网| 操操操97| 五月婷婷六月综合| 先锋资源婷婷| 激情av| 婷婷五月丁香综合| 五月花免费视频| 韩国情人在线电视剧免费观看高清版全集| 亭亭五月色男人| 综合99在线| 99燥99日| 天天搞天天色综合| 亚洲99在线| 色婷婷六月天| 天天做天天爱天天摸| 亚洲欧洲中文日韩久久AV乱码| 思思热久久婷婷五月天| 天天网曰日曰夜夜综合永久免费| 五月丁香婷婷网在线在线| 色色色干| 国产精品18久久久| 五月婷av| 婷婷综合五月天| 狠狠干综合| www.五月激情红色| 婷婷第一页| 99re8这里只有精品99re8热视频| 色婷婷婷婷成人网| 婷婷国产五月天17c| 99热亚洲| 久久99热这里只有精品首| 亚洲操人| 久久A区B区| 91狠狠色色丁香婷婷综合久久| 色综合99| 看国产探花操逼三级片| 性爱111111| 五月天综合久久| 色情丁香五月天| 99色.com| 婷婷伊人网| 六月色丁香中文字幕| 97干视频在线| 精品一区二区三区免费毛片爱| 色五月婷婷丁香五月| 九九久久五月天综合伊人| 99国产精品久久久久久久久久久| 欧美激情凹凸丁香网| 91婷婷色五月| 1024操逼| 999热在线视频| 九九免费在线视频| 久9热视频在线观看| 久久久国产精品黄毛片| 天天干一干| 五月熟妇婷婷久久| 六月久久婷婷| 五月婷婷 婷婷五月 一区二区 久久久 | 91狠狠色| 久久激情五月网| 亚洲啪啪啪啪| 婷婷9月天| 免费视频99| 综合婷婷都市激情| 五月丁香六月婷婷综合网| 成人永久免费视频在线观看| 成人丁香五月天| 色色色色色色网| 婷婷六月综合在线| 九色91国产| 日韩在线看AV| 激情五月天网站| 日日爽夜夜爽| 五月丁香久久久| 激情五月丁香五月| 51精品国内探花| 乱岳熟女50岁| 婷婷久热| www.夜夜操.com| 狠狠狠狠狠操| 99在线精品视频| 9999热精品| 青柠影视免费高清电视剧 | 91日日日| 无码 色| 婷婷亚洲丁香五月| 国产性爱一级| 伊人9草在线观看| 青草青草视频2免费观看| 色婷婷综合久久久久| 色色色综合色| 去干网最新版本亚洲版| 五月情综合| 激情五月婷黄版| 欧美婷婷日本| 夜色综合网| 一级AV片| 北京熟妇搡BBBB搡BBBB| 久久婷婷伊人| 俺去也综合| 九九精品网| 99操逼| 丁香五月天成人| 色婷婷综合久色AV五色最新| 五月婷婷激情| 99福利导航| 国产成人在线不卡AV| 五月天久久激情| 影音先锋男人av资源站| 五月婷婷很很色| 亚洲操人| www.99在线| 久久怡红院| 99只有精品| 日狠狠| 色色网站在线| 丁香六月色婷婷| 999久久久国产精品| 99精品综合| 热久精品| 综合色色婷婷| 婷婷娌伦网| 狼人婷婷综合| 五月丁香综合激情网| 五月激激激情综合网| 色五月婷婷丁香五月| 狠狠干综合网| 天天干天天干天天干天天干天天干| 天天激情| 亚洲激情.com| 丁香婷婷超碰 | 五月婷在线| 国产激情久久久| 开心激情婷婷| 97五月婷| 九九伦子片| 激情丁香久久| 极品色丁香| 五月婷婷九九热| 在线观看免费狠狠色丁香香综合| 久99热在线观看| 网色99| 久久婷婷五月综合一| 99亚洲精美视频在线观看| 狠狠99| 日本三级日本三级99| ay2区| 操操啪| 777久久精品| 26UUU在线观看| 99re视频精品| 国产成人亚洲综合A∨婷婷| 大香蕉久久婷婷| 五月丁香六月色| 五月丁香六月婷婷网| 欧美大肥婆大肥BBBBB| 香蕉AV777XXX色综合一区| 六六久久黄色| 91在线视频综合| 噜噜噜噜噜久| ji'qing'luan'ren'lun| 亚洲欧洲色色| 乱色色色| 另类激情五月| 久久久人妻| 人人操婷婷| 4438全国最大视频成人网站在线观看| 久9精品| 久热大香蕉| 亚洲综合新99视频| 色噜噜婷婷| 久久性操| 少妇高潮呻吟A片免费看软件| 777精品久无码人妻蜜桃| 国产人人操| 久久丁香| 六月狠狠综合| 国产精品日日躁夜夜躁| 99久热| 色色婷婷婷丁香五月天| 久热久| 五月婷婷六月激情在线| 亚洲99精品欧美一区| 色婷婷影视| 色欲一区二区三区精品A片| 99草在线免费观看视频| 天天综合网91| 热99这里只有精品视频| WWW免费视频碰碰碰碰| 国产亚洲精品久久久久苍井松| 色婷婷综合电影| 91精品综合久久婷婷九色| 激情欧美婷五月| 26uuu另类亚洲欧美日本一| 天天操夜夜玩!| 色五月婷婷在线| 五月丁香啪啪啪| 日本99视频精品免费播放| 天天情天天狠天天透| 久久久久久久久久人妻| 深爱开心激情| 婷五月天| 五月丁香五月丁香| 五月天丁香| 亚洲成人AV电影在线| 久草五月婷婷| 99er久久| 久久ww| 欧美婷婷综合| 伊人婷婷青青cao| 五月丁香啪啪| 婷婷D区| 日本的α片xxxwww| 激情六月天婷婷| 精品亚洲国产成AV人片传媒| 亚洲碰碰碰| 国语精品探花| 五月婷婷色色| aa久久| 日韩成人精品一区久久久久| 色色色色色色色色五月先| 久久99久久99久久99| 色六月天天激情综合网| 天天做天天爽| 亚洲xx在线| 国产色婷婷亚洲| a在线观看| 哇嘎成人久久| 情婷婷五月天| 色五月亚洲| 久久久99婷婷久久久久久| 99亚洲色色| 国产精产国品一二三在观看| 99re熱| 中文字幕av在线| 色五月婷婷伊人| 欧美激情凹凸丁香网| www.久久爱| www.zbzhongsen.com| 色色色在线观看| 婷婷综合五月天| 狠狠综合| 婷婷五月激情图片| 成人免费网站免费看| 九九在线这里只有精品视频| 97亚洲视频在线| 色婷婷成人在线| 五月天婷婷小说| 久操人妻| 丁香五月另类色婷婷麻豆| 六月丁香停| 思思热精品免费视频| 玖玖在线视频| 无码九九| 婷婷免费视频| 五月婷婷人人人操| 亚洲色热| 激情五月成年| 五月丁花色综合网| 欧美黑人巨大性生话| 五月婷婷新网站| 夜夜爽天天爽| 日日爱678| 五月丁香花开综合网| 色情五月综合婷婷| 开心六月丁香五月婷婷| 色色色色色色色色综合网| 日本3级片一区2区| 五月丁香免费看| 亚洲av另类在线观看| 色五月婷激情| 九九爱精品网站| 99视频在线精品免费观看2| 日本在线观看aaa 99| 九九亚洲小视频| 激情床戏| 99热99干| 亚洲激情久久| 超碰免费99| 欧美久久婷婷| 91综合色| 色五月婷婷五月| 国产精品美女| 91操熟女| 精热在线综合网| 丁香五月激情综合| 26uuu亚洲欧美| 国精产品一区一区三区免费视频| www.思思99热| 狠狠色综合无线观看| 操操操Av| 国产成人综合在线| 日韩aaa| 色在线五月天免费| 亚洲va久久久噜噜噜久久天堂| 天天日天天草| 色婷婷偷拍| 99热手机在线精品| 五月天无码视屏播放| 国产69久久久欧美黑人A片| 伊人九九综合| 婷婷操逼| 人妻乱码久久久| 婷婷五月天 丁香五月天 裸体| jiZZdr| 另类视屏| 五月天婷婷爱| 欧美六月| 人妻内射一区二区在线视频| 开心丁五月| 182.t午在线观看| 亚洲成人中心| 精品99这里有| 久99在线| 日本激情91| 久久亚洲网| 九月婷婷在线观看| 97色97干| 婷婷六月综合在线| 激情98色婷婷五| 亚洲99精品欧美一区| 五月婷婷影院|