免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
WWW.亚洲无码| 一本色道久久综合狠狠躁小说| 秋霞成人毛片一级A片| 这里只有精品视频在线看| 色碰碰视频| 色色图五月天| 开心五月激情五月丁香五月婷婷| 九九99在线观看视频| 色狠狠色综合| 五月天丁香| 国产精品日日躁夜夜躁| 99综合自拍| 另类五月激情| 无码人妻一区二区一牛影视| 欧美日韩成人高清在线| 色九亚洲| www.99热在线| 99爱爱| 国产精品国产| 天天综合网~91综合网| 九月婷婷综合网| 婷婷五月天六月丁香| 亚洲精品字幕在线观看| 婷婷色系婷色| 丁香五月天堂婷婷| 五月丁香操婷逼| 在线播放人妻| www.五月婷婷| 日本色图综合| 狠狠五月婷婷| 99色色色色| 播丁香五月婷婷欧美| 大香蕉婷婷五月天| 婷婷色婷婷| 亚洲成人中文字幕| 热99免费在线| 99天天操夜夜操| 天天做 天天爱| 在线看片av| 91九色欧美| 99色啊| 国产精品18久久久| 99色网站| 9久热在线视频精品| 亚洲成人网在线观看| 丁香五月成人丝袜| 婷婷五月色| 婷婷激情综合网| 超碰99在线观看| 日韩色色一区| 97在线精品视频| 久久久婷丁香五月天激情综合| 婷婷五月综合欧美在线播放| 五月丁香综合| 九月丁香| 天天射影| 91成人看片| 亚洲夜五月| 国产99久久久国产精品免费看| 丁香五月激情视频在线| 麻豆精品| 久久AV无码精品人妻系列试探| 26UUU成人网| 熟惀91九色在线| 九九99九九精品免费 | 九九在线这里只有精品视频| 9久热在线视频精品| 婷婷色五天| 天天情天天狠天天透| 青草五月天| 九月丁香亭亭| 成人丁香婷婷| 婷婷久久综合| 97luluse| 九九九激情综合| 六月婷婷之青青草| 五月色色色| 色碰碰视频| oumeisesewang| 日99网站| 国产日韩欧美| 情色婷婷五月天| 91精品久久久久久综合五月天| 色停停五月,在线观看| 青草青草久热这里只有精品| 青青草国产亚洲精品久久| 丁香五月激情五月| 99视频这里有精品| 九九人人精品| 丁香六月亚洲| 一区三区视频有限公司| 99热日本| 五月亭亭狠狠| 俺也去在线视频| 91色五月| 天天色天天搡| 亚洲xx在线| 伊人玖玖网| 五月婷高清视频| 精品久热69| 99热这里是精品| 五月综合激情图片| 日本欧美成人片AAAA| 夜夜爽天天日| 另类综合网| 激情婷婷在线中文字幕| 狠狠色丁香久久婷婷综合五月| 色色色综合| 97色天堂| 色亚洲欧洲| 五月婷婷综合网在线播放| 991精品在线视频| 91干| 婷婷玖玖五月天| 五月天激情婷婷五月天久久| 亚洲第一色网站| 丁香五月网址| 99久99久| 99热热热99精品丁香| 婷婷五月天成人| 嫩草国产| 婷婷综合一二三| www.婷婷com| 色综合99| 99热精品观看| 91人人爽狠狠狠| 无月播播激情在线观看视频| 99精品小视频| 99亚洲精品视频| 99热在线免费| 丰满熟女人妻一区二区三 | 99色在线观看视频| 美欧日韩国产成人在战| 婷婷色导航| 99日本黄站| 一區四區歐美日韓| 另类激情五月| 《诡秘之主》在线观看| 精品国产乱码久久久久夜深人妻| 少妇高潮呻吟A片免费看软件| 久草大| 色色日本欧美| 久久精品这里只有精品免费首页| 久久久婷丁香五月天激情综合| 91se精品国产| 五月婷婷导航| 97视频久久| 色色五月婷婷| 99亚洲综合| 人妻AV在线| 综合AV在线| 中文字幕综合网| 91精品久久久久久久| 另类精品视频在线观看| 激情另类综合| 开心五月婷| 韩日AV片| 狠狠色噜噜狠狠色噜噜噜999| 五月六月丁香婷婷在线观看| 99热在线看| 九九久久这里只有精品XB| 五月天婷婷爱| 9久精品| 久久丁香| 色色五月天激情| 99久视频| 五月婷色激情五月| 97操操| 免费看欧美成人A片无码| 丁香五月天堂| 婷婷综合色| 婷婷丁香人妻天天| 中文字幕一色哟哟哟哟| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 午夜丁香六月婷| 日本成人小说婷婷六月| 久综合网| 国产在线视频1234| 五月丁香网中文字幕| 视频色色色色色色| 婷婷操逼| 琪琪狠狠干| 九九视频这里只有精品在线播放 | 99精品成人无码A片观看金桔| ..真实国产乱子伦对白在线_欧 | 黑人糟蹋人妻HD中文字幕| 丁香五月激情欧美| 五月天色婷婷图片| 五月综合视频| www五月天com| 99热热九九| 六月久久狠狠| 六月丁香婷婷爱| 九九亚洲综合| 亚洲旡码| 日本在线观看aaa 99| www.天天色综合| 婷婷五月开心中文字幕在线| 婷婷色综合| 国产亚洲99久久精品熟| 天天撸夜夜爽| 色五月综合在线| 深爱1激情网| site:pnnrt.com| www,婷婷,com| 丁香色婷婷| 99青青草| 国产91在线视频| 青青热视频| 久超超碰| 亚洲久艹| 卡视频1区2区| 久久草婷婷丁香网站| 97操碰| 自拍视频99| 婷婷五月激情片| 日本美女五月天| 丰满女老板BD高清A片| 亚洲色图81p| 五月天婷婷激情干干| 这里只有精彩小视频视频网站| 99ri精品在线| 成人啪啪色婷婷久| 五月丁香六月婷婷综合网缴情| 九九精品热| 亚洲成人电影aaaa| 日日操夜夜撸| 激情五月婷黄版| 色色免费网站| 99在线资源| 人人摸人人摸| 丁香婷婷色五月| 天天爱综合网| 五月花激情网| 无码色色色| 91ncm视频| 丁香六月在线| 99在线看片| 欧美一级操逼视频| 97色色综合| 天天插天天| 国产精品久久久久久亚洲毛片| 日本ww亚洲| 国产熟妇的荡欲午夜视频| 天天操夜夜夜夜爽| 丁香五月婷婷基地| 欧美综合激情五月丁香| 97在线干| 狠狠干狠狠色| 久久最新色| 国产熟妇的荡欲午夜视频| 五月婷色| ..真实国产乱子伦对白在线_欧| 艾小青av| 亚洲精品中文字幕成人片| 26uuu另类亚洲欧美日本一| 日韩一级淫乱片一区二区三区| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品| 日韩成人AV在线| www·五月天| 丁香五月婷婷基地| 五月激情天天干| 国产操碰| 六月婷婷五月丁香| 丁香五月六月欧美| 熟女91九色| 久久五月天综合| 五月天婷婷深深爱| 98色花堂98t.R| AV电影在线播放| 蜜臀丁香黄色婷婷五月天| 丁香五月av| 超碰99热| 99re8热精品免费视频| 99视频网| 丁香五月首页| 婷婷色综合| 激情五月色播五月| 亚洲无码色色| 天天爽天天做| 美女va| 色婷六月| 五月天丁香婷婷久久九| 婷婷五月天Av| 狠狠色激情综合| 久久国产高潮白浆免费观看99| 97在线精品| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 五月天激情网站| 五月天婷婷青青草| 成人免费在线电影| 97干干干丁香| 色激情五月| 这里只有国产精品在线| 99欧美| 99精品女人天堂| 丁香婷婷六月激情文学| 久9免费视频| 99热精品中文字幕| 野战毛片三一3| 高清无码 一区 二区 三区| 亚洲无码免费看| 婷婷久久大香蕉| 思思久热6| 婷婷五月天亚洲色| 亚洲熟女色| 色婷婷六月| www.夜夜操.com| WWW,婷婷,COM| 99成人网站| 欧美成人Va| chaopengdaxiangjiao| 狠狠综合久久| 丁XX 成人| 深爱激情网综合| 99热官网精品在线| www.婷婷五月天,com| ..真实国产乱子伦对白在线_欧| 3pAV| 国产精品久久..4399| 色色色色色五月| 激情综合五月| 3p日韩网站视频| 97亚洲色 torrent magnet| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 狠狠搞亚洲| 久久99热只有精品| 激情婷婷五六月天| 天天噜天天插| 丁香五月天色| 天天做天天要天天爱| www.99久久久久99| 日本色婷婷| 第2色五月婷| 97干在线视频| 任你操精品免费| 亚洲AV成人在线观看| 极品人妻VIDEOSSS人妻| www91色网站| 26uuu成人网| 狠狠爱五月婷婷| 欧美婷婷色五月| 丁香五月六月激情| 亚洲激情精品| 停婷丁五月在线| 色5月婷婷| 丁香五月天视频在线播放| 五月天另类小说亚洲| 久久婷婷色色| 国产精品 的国产| 伊人99热| 草美女在线观看视频在线播放 | 日韩1区2区| 人人97碰| 婷婷亚洲天堂| 午夜美女人啪最红院| 操逼棍操逼| 色综合久久88色综合中文字幕| 九九人人操| 丁香香五月激情免费视频| 亚洲热手机在线观看| 五月天操逼网| 欧美丁香婷婷天天操| 亚洲激情亚洲激情| 婷婷五月天伊人网在线观看视频| 性婷婷| 丁香五月天精品| 久99热| 99热在线观看免费精品| 这里有精品| 97色色网| 激情图片亚洲| 中文字幕婷婷| 综合激情开心五月| 色五月丁香五月婷婷五月成人网| 操骚货在线| www.色五月.com| 欧美槡BBBB槡BBB少妇| 欧洲电影在线观看免费版英语版| 五月天大香蕉AV| 97电影99热| 色综合xx| 五月天堂色| 狠狠综合| 99色中文| 色色色色色级无码| 99综合视频一体| 婷婷五月欧美| 色99视| 色色色色热| 人妻九九九九| 婷婷五月综合国产精品| 婷婷六月综合基地| 人人人操B超碰| 午夜爱爱网站| 精品国产一区二区三区四区阿崩| 亚洲精品成人| 丁香 婷婷 亚洲 熟女| 欧美日比视频| 91干婷婷| 欧美成人五月天| 色色色99| 成人在线不卡| 五月丁香在线观看| 亚洲精品一区无码A片| 欧美激情伊人| 五月婷婷av| 婷婷五月丁香五月| 99热只有精品在线播放| 丁香五月综合图片在线观看| 亚洲色啪| 99热最新精品| 这里有精品2| 国产精品A成V人在线播放| 欧美婷婷丁香五月| www,五月天激情| 狠狠操狠狠爱| 97影院一级片| 五月丁香偷拍| 婷婷亚洲在线| 五月天精品视频| 免费视频在线观看的网站| 中文激情网| 激情五月,激情综合网| 久久精品这里只有精品免费首页| 天天射综合网站| 狠狠色丁婷婷日日,伊人激情综合网| 五月丁香激情啪啪| 欧美婷婷丁香五月社区| 天天日天天舔| 黄色激情久久| 伊人网啪啪| 久久久久视剧HD| 婷丁香五月天| 狠狠婷婷色| 色99在线视频| 婷婷啪啪| 婷婷丁香综合色AV| 婷婷五月丁香五月综合网| 艳妇野外情欲放荡HD| 激情色视频| 影音 五月 婷婷 久久| 五月丁香直播| av不卡网站| 丁香五月综合在线播放| 任你弄在线视频免费| 日日狠夜夜狠| 国产综合久久久777777| 久婷婷婷| www99热| 九九这里有精品| 色哟哟性爱av| 天天搞天天爽| 五月噜噜| 丁香五月黄色| 97视频91| 婷婷的激情五月| 综合色图婷婷| 成人在线99| 99 频99热国里只有精品| 天天干天天拍| 色XX综合网| 黄网在线免费播放| 亚洲欧洲中文日韩久久AV乱码 | 婷婷综合网伊人| 成人.在线日韩| 亭亭五月激情亚洲在线| 色五月婷婷久久| 天天爽,天天操。| 色婷婷中文| 婷婷淫淫狠狠六月| 丁香五月激情宗合网| 日本狠狠干| 可以直接看的av| 另类视频综合| 久久亭亭电影| 日本婷婷| 婷婷激情九月| 99色色最新视频| 碰碰操91| 中文字幕乱码亚洲精品一区| 天天日日| 色综合九九| 国产真实乱对白精彩| 丁香五月成人社区| 欧洲色区| 无套内射极品大美女| 99色在线| 五月丁香啪啪婷婷| 日日影院 | 久久综合五月天| 色五月首页| 亚洲成人无码专区| 丁香五月自拍| 激情五月丁香六月| 婷婷久久五月| 殴美激情综合网| 婷婷五月激情综合网| 少妇大叫太大太粗太爽了A片| 99只有这里是精品| 色五月婷色彩免播放器| 色色婷婷婷丁香五月天| http:色情日本com| 色色色色综合网| 再次出发二| 另类视在线| 成人无码髙潮喷水A片| 九九热视| 亚洲av网站在线观看| 人妻无码视频网| 色五月天丁香| 激情五月婷婷综合| 五月婷婷五月天亚洲无码| 婷香五月网在线| 色综合久久8| 七月婷婷色香综合网| 日本天天操| 九九色人| 婷婷丁香五月综合| 自拍盗摄 另类| 亚洲成人AV在线播放| 午夜福利成人AV91| 亚洲不卡123| 大战熟女丰满人妻AV| 91精品婷婷国产综合久久| 国产婷婷色综合AV蜜臀AV| 天天综合亚洲综合网天天αⅴ| 草草女人亚洲| 五月丁香在线观看| 五月激情视频| 色丁香婷婷| 婷婷五月天色播| 激情美女五月天激情在线| 26uuu色噜噜精品一区| 丁香五月婷婷狠狠色| 婷婷 伊人 久久| 五月丁香色欲| 色色999三级片| 99ER热精品视频| 另类小说五月天| 色色色免费视频| 99色在线观看视频| 六月婷婷综合| A短视频免费在线观看| 99视频内射三四| 精品久热| 91色综合久久| 97色综合| 日韩在线一级| 99啪啪| 欧洲永久精品| 亚洲狠狠婷婷综合久久久| 丁香六月狠狠| 五月天综合影院| 亚洲人人操| 97久久人人| 狠狠精品干练久久久无码中文字幕| 丰满女老板BD高清A片| 一本道在线电影| 97超级啪啪在线观看| 久久久潮喷-久久久九九-成人AV| av线电影| 97五月天婷婷午夜| 人人人人人人人草| 黄色三级日本| 91精品综合久久久五月天| 99WWW免费视频| 亚洲精品乱码久久久久久综合| 五月丁香综合激情在线观看| 狠狠色噜噜狠狠狠狠综合| 日韩另类| 色欲丁香| 国产精品a无线| H亚洲| 久久婷婷综| 九九草热在线观看| 欧美影院婷婷| 丁香五月激情网| 9久热在线精品| 黄网网站在线播放| 五月丁香六月婷婷国产视频| 婷婷香蕉| 久久婷婷丁香五月宗合| 婷婷天天舔| 五月丁香六月激情在线| 成人做爰A片免费看网站找不到了| 热婷婷在线视频| 色噜噜综合网| 五月天婷婷综合免费| 婷婷五月av| 色999五月色| 国产99久9在线| 婷婷伊人激情婷婷| 久久久久久人妻| 啪啪操操| 色五月婷婷丁香五月| 久久视频婷婷视频| 性爱五月丁香| 色色网五月激情| 日本丁香五月| 六月丁香综合| 成功精品影院| 日日爽日日| 91色逼| 色婷婷婷婷| 日韩无码色色| 丁香六月婷婷综情欧美| 成人色五婷婷| 久久综合五月天| 婷婷亚洲天堂| 五月婷婷六月丁香| 久久久久8888| 久久激情五月天| 99超碰在线观看| 国产婷婷五月天| 色综合婷婷99| 人妻久久人妻久久第一区| 亚洲狠狠爱婷婷| 婷婷成人在线| 欧美情色电影一区二区| 人妻人人操| 日韩黄黄| 噜噜色天天开心| 久久久婷婷| 人妻自慰在线| 思思久久99热只有频精品66| 在线色五月婷婷| 国产美女无遮挡裸体毛片A片| 大香蕉操操| 色婷婷在线播放| 色综合久久综合中文综合网| 99亚洲精品视频| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 丁香九九九九| 777色色色| www色婷婷久久综合久色 | 久久人操| 六月丁香婷| 五月天色婷婷视频| 色五月天 丁香| 色五月婷婷激情| 综合 蜜月 婷婷| 丁五月激情视频免费| 欧美、日韩、中文、制服、人妻| 日韩欧美一级大黄网站| 26uuu欧美日本| 天天日综合网射| 色欧美一级| 久久这里只| 久热一区| 亚欧州精品视频| 深爱五月激情综合| 国产中文字幕在线视频免费观看| 婷婷射图| 丁香五月激情综合网激情五月| 96色婷婷| 成人在线99| 欧美日韓成人亚洲精品另类| 久久日曰| 大香蕉综合在线| 91在线日| www.五月天婷婷姐姐| 91精品啪| 超碰在线91| 久久久久久人妻久久久久久久久久人妻久久久| 色人久久| 激情色情五月天| 五月天激情网图片| 99精品视频偷拍| 天天干天天爽天天操| 26UUU欧美激情一区二区| 婷婷娌伦网| 美女五月天婷婷| 综合久久8| 亚洲无码色| 天天干电影| 99色在线观看免费| 婷婷五月精品| 久久激情视频| 另类激情五月| 色五月xxx| 丝袜激情网| 五月婷婷综合在线| 五月天激情国产综合婷婷婷| 激情色播| 国产激情在线| 久久婷婷五月综合色和| 丁香激情合作五月| 亚洲行行色色| 久色姿源| 26uuu淫色| 久久国产AV| 婷婷99狠| 夜色五月天| 激情AV| 色婷网| 99色热视频| 天天激情欧美美女| 99热这里只有精品22| 5月婷婷性视频| 蜘蛛女免费观看完整版高清电影| 成人网址在线观看| AV成人在线播放| 五月叮香啪| 疯狂做受XXXX高潮A片| 六月丁香激情网| 97人人草| 97福利视频| 极品人妻VideOssS人妻| 91碰碰碰| 99热精品在线| 婷婷伊人网| 色香欲综合| www.五月天婷婷| 可以免费观看的av| 五月色色色| 五月天久久婷婷| 狠狠色综合网| 99网| 国产操B| 日韩成人无码片| 中文字幕av在线播放| 色婷婷五月综合在线| www.激情| 91精品国产91久久久久青草| 天天玩夜夜操| 男女啪啪做爰高潮无遮挡| 熟妇国产| 182TV大香蕉| 六月大香蕉| 在线成人网址| 婷婷色五月激情| 99热6精品| 99日本黄站| 五月丁香婷婷啪啪| 五月激情四射网站| 大香蕉九九操| 五月婷婷六月丁香| 五月婷婷在线网站| 色五月 五月婷婷| 热久久国产视频| 五月丁香五月综合欧美| 五月婷婷丁香综合网| 99久久婷婷五月综合| 日日操天天操| 1024人妻无码中文字幕| 玖玖激情五月天| 69精品人人人人人人| 六月丁香综合| 99爱视频在线免费观看| 色五月婷婷五月天| 丁香五月久久| 狠狠色丁香久久综合婷婷亚洲成人福利 | 色亭亭五月天网扯| 五月婷婷AV| 亚洲不卡| 亚洲操逼网| 欧美午夜乱妇午夜福利| 夜色综合网| 99re这里只有精品视频6| 夜夜夜夜夜操| 综合福利网| 另类亚洲2| 日韩九九视频| 人人干av| 婷婷色色亚洲| 秋霞日本免费毛片A片| 99这里只有精品8| 激情网婷婷五月天| 2025神马午夜福利| 色情性爱视频网址| 免费在线观看欧美激情xx小视频| 香蕉久久国产AV一区二区| 国产肏屄大片| 人人干AV| 五月综合色| 人妻在线网站| 五月停停丁香| 久久9视频| 日韩操逼大片| 99爱视频在线观看这里只有精品| 成AV人片一区二区三区久久| 中文字幕人妻在线| 婷婷婷婷色| 免费无码毛片一区二区A片| 久婷五月| 欧美色性色好| 伊人五月综合网| 六月狠狠综合| 熟妇人妻中文字幕无码老熟妇| 日本一级一片免费视频| 伊人久久婷婷| 91人妻视频| 99色天堂| 色综合夜夜| 婷婷丁香成人| 午夜成人综合| 99re免费精品视频| 久久久久久9| 亚洲五月停停| 性爱五月婷婷| 婷婷五月天综合蜜桃| 久久久久9| 久久激情五月| 丁香六月久久| 九九操操| 秋霞影音91人妻久久| 色婷婷成人做爰A片免费看网站| 大香蕉综合视频在线| 欧美性二区| 五月婷婷在线免费| cao视频,现在观看| 丁香五月天欧美在线| 成人做爰高潮A片免费视频| 二人电影免费版在线观看| 欧美99| 久久激情视频99| 91碰碰| 亭亭丁香aV| 人妻人人操| 丁香五月婷婷六月婷| 99色综合| 免费久久这里只有精品99| 无遮挡国产高潮视频免费观看| 五月天激情站| 五月婷婷爽爽爽| 综合久久婷婷| 婷婷精品视频| 丁香五月婷婷乱| 拍色综合| 五月天综合在线| 91操片| 99视频精品在线| 日本色婷婷| 亚洲无码99| 69久久99精品久久久久婷婷| 亚洲人妻av伦理| 很很干五月天| 久久网婷婷| 亚洲成人网在线观看| 天天插天天玩天天干| 免费无码毛片一区二区A片 | 久久久久久五月天| 女人天堂 AV| 六月丁香婷婷综合影院| 午夜免费试看| 精品九九在线观看| 五月四色激情| 天天射影院| 丁香婷婷老司机久操| 色婷婷19| 五月激情偷拍婷婷| 色情丁香五月婷婷精品| 图片区 小说区 区 亚洲五月| 日韩人妻操逼视频| 任我鲁这里有精品视频| 色播五月| 五月婷婷AV| 丁香综合伊人| 葵花AV在线| 激情五月天婷婷五月天| 久热播这里只有精品| 五月丁香啪啪婷婷| 激情操逼婷婷| 黄色成人网站在线播放| 天天色色婷婷| www.玖玖婷婷在线| 狠狠做婷婷| 思思 热 99| 99re这里只有精品9| 亚洲殴洲精品Av在线| 欧美 日韩 人妻 高清 中文 | 人人色人人摸人人看| 能看的av| 色五月婷婷九月| 色五月婷婷狠狠撸| 在线视频区| 免费精品99| 秋霞午夜理论| 激情图片久久| 99热亚洲只有色| se99视频| 91无码高清| 五月天自拍视频| 综合色情网| 色色综合网。| 99精品久久| 色综合丁香婷婷| 欧美激情综合色综合色| 伊人五月天日日夜夜久久久天天| Blackedraw视频一区二区| 香蕉综合在线| 开心网五月色婷婷| 能看的AV网站| 狠狠操之狠狠操| 丁香玖玖| 狠狠色综合无线观看| 99热99热在线| 国色天香伊人狠狠色| 99思思在线视频| 日韩在线99| 9 大屁股在线视频精品| 日韩AV无码影片| 99色视频| 五月婷婷激情五月| 久久多色| 久热这里只有精品在线| 深爱开心激情网| 青草青草久热这里只有精品| 亚洲小电影在线观看黄999| 在线播放成人| 五月天另类小说久久小说网| 91爱啪啪| 五月婷婷色情| 国产免费一区二区三州老师F1F1| 欧美五月丁香| 久久探花91swag| 丁香九月激情| 香蕉婷婷| 色综合久| 久久五月婷| 激情开心五月天| 色五月丁香五月天| 五月婷婷六月丁香色| 久久五月激情| 婷婷五月综合色中文字幕| WWW、日本色丁香、co m| 天天插天天爱| 久久伊人大香蕉| 狠狠爱成人综合网| 九九热视频精品999| 久久精品熟女亚洲AV麻豆| 婷婷色五月大香蕉在线| 色情成人五月天| 日本人妻伦在线中文字幕| 亚洲精品99| 大地9中文在线观看免费高清 | 天天操天天干天天日| 夜夜操夜夜操| 一级二级色大片| 婷婷五月电影| 五月天综合| 偷偷与邻居做爰完整视频| 久热免费视频| 色欲色欲久久宗合网| 99热只有| 在线中文AV| 91碰操| 大香蕉人人人| 99热国产精品| 乱码操操| 思思色综合网站| 天天舔天天插天天干| 色五月丁香伊人| 国产婷婷五月在线视频| 99精品在这里| 亚洲电影在线观看| 一区二区你懂的| 中文字幕不卡网站| 五月色激情综合网| 超碰99在线| 欧美丁香六月激情视频| 欧美va在线| 日韩成人AV在线| 综合网亚洲| http://www.com久久久精品一区| 日韩精品一曲二曲三曲四曲五曲| 久久免费操| 色婷婷五月天av在线| 玖玖爱伊人| 综合激情五月丁香| 夜夜骑天天操| 五月天激情影院| 99热老司机| 国产精品久久久久久久久久免费 | 色五月美女| 在线观看亚洲AV| 五月丁婷香| 国产午夜精品一区二区| 天天操夜夜夜拍拍拍| 欧美日本另类| 激情五月婷婷| 婷婷丁香综合色AV| 淫视馆AV在线| 激情二色月| 97精品在线| 久久婷婷青青草| 91丨九色丨熟女|新版| 国产伦理精品高清在线观看网站一区二区 | 中文字幕成人日韩| 91九色首页| 天天做天天爱天天做| www夜夜操com| 久久激情综合| 色www.con| 欧洲日韩一区二区三区| A片一曲| 欧美丁香婷婷五月| 人人操91色| 2025最新亚洲激情在线| 亚洲激情97五月天| 国产67194| 成人av在线电影| 亚洲九九视频| 99无码视频| 91人无码久久久久久| 天天日中文| 天天操天天爱天天日| 婷婷情色激情| 熟妇人妻中文字幕无码老熟妇 | 天天拍夜夜爽| 日本三级大片| 在线免费视频caop| 天天干、天天日日| 婷婷香蕉| 久久婷婷视频| 丁香狠狠色婷婷| 亚洲精品无码A片一区二区| 国产永久一二一起草| 五月天婷婷丁香六月| 99久久婷婷国产综合精品草原| 久久婷婷网| 天天干天天射综合网| 狠狠色中色| 欧美va| 欧美成人AAA片一区国产精品 | 激情五月天啪啪| 精品一区二区三区三区| 天天色综合综合| 久久久国产精品黄毛片| 欧美久久五月婷婷| 色综合色色| 性日本激情| 99啪99| 深夜男女福利刺激影院一区| 九九99热久久精品66中文字幕| 色婷婷狠狠禁久久| 天天摸天天高潮天天爽| 久热婷婷| 亚洲AV成人在线| 日本三级日本三级99| 涩综合网| 开心五月激情网| 色婷婷久久综合久色综| 热99在线精品| www.日韩国产| 久操激情| 色婷婷久久综合久色综| 五月天六月婷| 97资源欧美日韩大香蕉超碰一区| 五月天社区婷婷丁香社区| 色一情一乱一乱一区9| 激情图片五月天| 色五月中文字幕| 五月婷婷,狠狠操| 亚洲婷婷丁香| 另类综合国产| 亚洲色色色色色| 97碰碰人人| 五月丁香婷婷综合视频| 先锋男人99资源| 中文字幕网伦射乱中文| 五月丁香狠狠地噜噜噜噜| 果冻传媒A片一二三区| 深夜A片| 99热99思午夜精品| 生活片五区| 色10月婷婷视频| 国产精品18久久久| 久久人妻情侣| 色色婷婷综合| 人人人人人人人人人草| 激情五月黄色| 久久久久综合激动五月天| A片试看50分钟做受视频| 天天天天天天天操| 大香蕉视频婷婷| 国产avapp 网| 狠狠香婷婷五月| 五月天丁香婷婷网| 婷婷另类小说| 亚洲综合丁香五月| 久久综合九色综合88i| www.99热在线观看| 激情婷婷五月少妇| 激情五月天色网站| 丁香五月亭亭六月综合激情网| 久久久亚洲精品一区二区三区浴池| WWW.99热| 91vip在线观看| 婷婷五月天大香蕉在线视频观看| 婷婷五月花| 思思精品久久艹| 日本毛片内射| 操大屄五月天视频| 亚洲婷婷五月天| 91精品电影18T| 婷婷五月天堂| 熟女强人妻一区二区三区四区无| 久久综合五月天| 66精品国产成人| 久9综合| 97人妻碰碰中文无码久热丝袜| 五月婷色丁香| 婷婷激情人妻| 欧美精品在线观看| 久久婷婷婷| 久久人妻情侣| PORNY九色9l自拍视频成人| 91色在线/日韩| 99精品久久久久久久婷婷久久 | 久久久国产精品黄毛片| 婷婷成人视频| 啪啪干伊人婷婷| 激情婷婷久久| 久久婷婷五月综合色欧美| 中文字幕av久久爽一区| 九九热这里只有精品一| 大香蕉婷婷五月天| 精品综合网在线| 亚洲天堂热| 99r久久这里只有精品| 97久久五月丁香婷婷| 国产精品18久久久| 性色天| 激情宗合网激情五月天| 久久er视频6| 久久九⑨| 久久综合婷婷激情| 久久久久久性爱视频| 亚洲狠狠婷婷综合久久久| www.五月婷婷| 超级碰碰99| 成人美女网| 67194成I人在线观看线路1| 婷婷日日夜夜| 婷婷五月天精品| 日本久久婷| 婷婷五月天综合久久日| 另类专区在线| 五月丁香淫淫婷婷婷| 丁香六月天婷婷色| 99色视| 色9月| 热久久思思热思思| 色99网| 热99一二三| 大地9中文在线观看免费高清| 综合九九| 六月婷婷五月天| 播四月婷婷六月丁香| 五月色色激情网| 激情五月色综合| 常久最新免费的色吊丝| 激情网综合| 激情五月天偷拍综合网| www.夜夜| 狠狠爱五月婷婷| 九热视频| 91视频五月丁香| 香蕉综合在线| www色色com| 中文人妻AV久久人妻18| 激情涩播| 极品五月天| 欧美色图天堂网色| 久久五月综合| 六月丁婷婷| 这里只有精品视频在线看| 精品久久66| 色偷偷综合| 99这里只有精| 久热免费视频| 99热人人操人人操| 日本在线视频播放91| 无码人妻电影| 亚洲综合网激情小说| 久久网思思| 国产精品国产| 99精品久久| 丁香六月婷婷操逼网| 琪琪色影音先锋| 色久婷婷五月| 色噜综| 99九九在线观看免费| 久久久婷婷婷| 99在线视频操999| 五月丁香六月成人| 4399在线观看免费高清电视剧| 色噜噜在线| 亚洲丁香网| 日本在线视频www色| 色五月婷婷777| 美国不卡视频| 欧美色色色色色色色色色色影视| 五月色精品| 五月丁香色婷婷色| 国产又爽又猛又粗的视频A片| 丁香五月性爱爱五月| 琪琪理论片| 精品亚洲VA网站| 深爱五月天| 人人搡人人| 色狠狠激情五月| 亚洲综合五月| 夜夜爽77777妓女免费下载| www.玖玖婷婷在线| 欧美美女国产日韩一区二区久| 伊人色综合网| 国产精品91抖高| 91丨九色丨丰满人妖| 五月综合六月丁| 久久国产色| 青青999| 五月丁香综合伦理片| 熟女激情网| 万月丁香狠狠爱| 美女va| 丁香蜜臀黄色婷婷五月天| 日韩黄在免| www.粉嫩av.com| 超碰人人99| 成人 在线观看国产| 五月色综合| AAA亚洲AV| 久久丁香| 99久久99久久综合| 久久婷婷综合五月趴| 97热91| 激情综合青草| 久草大| 香蕉久久国产AV一区二区 | 思思w99| 97色婷婷| 超碰在线网站| 在线可以看的av网址| 强辱丰满人妻HD中文字幕| 丁香婷婷五月天激情四射| 激情五月婷婷五月| 亚洲黄网在线| 免费精品66| www,天天干| 91色五月| 婷婷九月丁香| 99在线爽| 五月天涩涩| 日本V在线观看不卡视频网站| 开心深爱五月天| 99精品在线观看视频| 另类在线观看视频| 五月亭亭网成人在线视频| 五月色情婷婷| 久热这里只有精品66| 7EzOBIhNq85TO| 五月丁香啪啪啪啪| 亚洲色啪| 欧美日韩AAAAA| 99热在线播放| 可以免费观看的av网址| 九九色热| 五月噜噜噜色综合| 九九综合久久| 五月丁色AV| 中字幕视频在线永久在线观看免费| 婷婷久久久久久久| 亚洲综合在线视频|