## 一、概述
wbase uniframework平臺提供了一套獨立運行的開放服務子平臺。它是基于oauth2的開放接口平臺;

>[danger] 開放接口平臺,實質上,就是wbase提供的微服務內核,它不僅可用于對外充當API網關的作用,對于基于平臺的應用來說,無論是外部業務、內部應用,還是APP,也都可以通過開放服務體系,獲取授權資源;
## 二、接入流程
對于系統廠商來說,流程如下:
1、創建微服務賬號,也就是創建一個用戶,該用戶必須擁有微服務角色,這將自動的為該賬戶創建一個未啟用的開放服務應用,包含對應的appId及appSecret(在應用設置中可以看到這兩個參數) ;

>[danger] 微服務角色是平臺內置的專用于定義微服務客戶的角色;
>
2、在應用設置中,設置該賬戶訪微服務的服務器ip地址,可以有多個,設置完畢,就可以啟用該賬戶開放服務應用了;

3、設置該客戶可以使用的api,默認的,剛開通的用戶除了正式測試用的API之外,沒有任何api授權,需要根據實際業務,給客戶授權它應用擁有的api;

4,將該appId及appSecret提供給客戶,就完成了微服務開戶完整流程;
對于微服務客戶來說,流程如下:
1)、申請接口,提供調用ip地址給廠商,獲取自己的appId和appSecret;
2)、閱讀接口文檔(定義具體api及其語義的),編寫測試代碼,提交測試ip;
3)、測試完畢,上線;
## 三、開通服務
api服務地址:http://ip:port/oauth/service,
>[danger]
> 1、api服務地址+api的url組合,構成了客戶端api請求的完整地址;
> 2、比如平臺內置提供了一個用于測試驗證的api,其url是/test/validation,那么實際完整的請求地址應當為:http://ip:port/oauth/service/test/validation
## 四、技術要求
1.所有接口的請求,采用httpPost方式提交,發出http請求的時候,請求content-type需設定為:application/x-www-form-urlencoded;charset=UTF-8 ,參數按照普通表單參數傳值,不必包裹成一個json字符串;
2.所有接口的響應,采用json格式,編碼為UTF-8,響應的content-type為:application/json;charset=UTF-8;
3.提供ip白名單功能,僅供授權的ip調用;
4.每個對外提供服務的api,都必須包含的參數為appId及timeStamp;
5.每個對外提供服務的api,都必須包含一個sign參數,該參數是通過算法計算出來的值;
6.考慮服務器承載量,目前限制每個ip訪問接口頻率,程序中不得做高頻率輪詢;
7.接口服務自身的設計與開發是基于BASE理論。因此,也強烈建議代碼編寫者遵循該理論;程序開發者必需考慮接口服務器因機房網絡故障、域名解析故障、例行檢修、程序升級、依賴服務中斷等因素導致當前服務不可用。因此,業務邏輯的編寫必須嚴格的核對響應碼,并且必須編寫消費接口服務的異常分支邏輯;
>[danger] 只有responseCode為1,才說明您的api執行成功,其他的任何數字都是失敗的,只是失敗的原因不同;
## 五、時間戳格式
1.獲取從1970, 00:00:00開始到當前的毫秒數(13位)
2.每個api請求的有效時間為3分鐘,所以,務必確保當前服務請求的時間是準確的;
## 六、簽名算法
假設:paramstrings = 當前api的所有參數(除sign自身外),根據參數名升序排序,以“參數名=值&”的方式連接起來;
結果:sign = md5(md5(paramstrings)+appSecret)
>[danger] 注意:
> 1、是雙層md5加密,中間那個"+"僅表示兩段字符相連,組合的結果并不包括該符號本身;
> 2、簽名計算放到參數傳值的最后,因為要用到接口所有參數(除sign自身外)參與加密計算;
## 七、接口限流
對外服務的每個API接口當訪問頻率或者并發量超過其承受范圍時候,我們就必須考慮限流來保證接口的可用性或者降級可用性.以防止非預期的請求對系統壓力過大而引起的系統癱瘓;
### (1) 算法
平臺采用令牌桶算法進行限流,針對每個appId(客戶端),都限制其每秒鐘可以接收的請求數,確保整個對外服務正常有序;
令牌桶算法的原理是系統會以一個恒定的速度往桶里放入令牌,而如果請求需要被處理,則需要先從桶里獲取一個令牌,當桶里沒有令牌可取時,則拒絕服務;

### (2) 設置
系統參數配置中,可以設定每個appId每秒請求數限制:

### (3) 注意
>[danger]正常的訪問平臺是通過接口限流策略,實現了業務可用性保障;對應非正常的訪問,平臺則通過DDOS防御設施,實現業務可用性保障;
## 八、同步服務接口與異步服務接口
微服務的服務類型包括兩種:
>[danger]
> 1、同步服務,請求該服務的時候,立即實時返回結果;
> 2、異步服務,請求該服務的時候,微服務只是將該請求記錄下來,后續通過調度服務平臺來執行一系列的動作或命令。適合比較耗時的業務,優點是提高客戶端的體驗,讓它無須長時間等待即可返回;
## 九、典型接口說明
~~~[api]
post:/test/validation
*string:appId=s123#聯系我們獲取
*string:timeStamp=1584362438966#當前時間戳,13位數字,該時間戳在30分鐘內會失效,30分鐘后訪問該地址,會返回請求時間戳不合法;
*paramLong#參數1
*paramFloat#參數2
*string:sign=xxrreedfasdfsafsfs231999999oo#簽名,按照約定規則
<<<
success
{
"responseMessage": "成功",
"responseCode": 1,
"requestStartTime": 1584837900324,
"requestEndTime": 1584837901513,
"responseCostTime": "1189毫秒",
"feedback": {
"isBusinessSuccess": true,
"executionMessage": "實時接口,直接顯示查詢結果",
"data": "data"
}
}
<<<
error
{
"responseCode": -99,
"responseMessage": "失敗",
"requestStartTime": 1584837900324,
"requestEndTime": 1584837901513,
"responseCostTime": "1189毫秒"
}
~~~
>[danger] 只有responseCode為1,才能說明這個api執行成功了,否則,都是失敗,只是失敗原因各不相同,具體可以參照下表;
>
| 錯誤碼 | 錯誤原因 |
| --- | --- |
| -1 | 當前ip地址不在訪問白名單,請聯系管理員. |
| -2 | 不支持當前http請求模式 |
| -3 | 當前請求的url不符合約定的組成語法,一般是您的url請求地址沒按照約定提供 |
| -4 | 當前請求參數沒有包含appId. |
| -5 | 當前請求參數沒有包含時間戳. |
| -6 | 當前請求參數沒有包含簽名. |
| -7 | 當前請求appId無效. |
| -8 | 當前請求簽名不合法. |
| -9 | 當前請求時間已經超時. |
| -10 | 當前請求的api不存在. |
| -11 | 當前appId請求數超過允許的限制 |
| -12 | 當前請求的api沒有獲得授權 |
| -99 | 業務自身錯誤信息 |
## 十、平臺功能
平臺提供了相關的功能,具體可以參考:[系統平臺/開放服務](系統平臺/開放服務.md)
- 前言
- 01、系統平臺
- 術語字典
- 技術術語
- 業務術語
- 系統管理
- 組織類型
- 單位管理
- 基本功能
- SAAS功能
- 組織管理
- 角色管理
- 人員管理
- 賬號管理
- 賬戶體系
- 賬號綁定
- 賬號鎖定
- 團隊管理
- 模板管理
- 補丁管理
- 字段管理
- 靜態字典
- 動態字典
- 系統配置
- 菜單配置
- 路由配置
- 編碼規則
- 訪問控制
- 系統參數
- 字典配置
- 參數定義
- 參數配置
- 屬性定義
- 屬性設置
- 樹形定義
- 樹形設置
- 系統監控
- 業務維護
- 工作監控
- 調度監控
- 導入監控
- 日志管理
- 在線監控
- 附件管理
- 附件監控
- 附件應用
- 附件授權
- 上傳監控
- 字段監控
- 系統提醒
- 場景配置
- 事件監控
- 提醒記錄
- 事件歷史
- 日期設置
- 節假日期
- 工作時間
- 日歷編制
- 工作日歷
- 開放平臺
- 微信應用
- 配置信息
- 更新菜單
- 釘釘應用
- 配置信息
- 開放服務
- 應用設置
- 服務管理
- 請求監控
- 請求跟蹤
- 移動應用
- 發布管理
- 導航菜單
- 個人管理
- 個人資料
- 內部消息
- 短信中心
- 流程管理
- 流程定義
- 流程環節
- 處理人
- 流程提醒
- 流程簽收
- 流程目錄
- 流程微調
- 轉移動作
- 定義校驗
- 流程綁定
- 流程實體設定
- 單業務多流程
- 動態表單綁定
- 環節字段設定
- 轉移路由設定
- 流程監控
- 流程催辦
- 流程會話
- 流程啟動
- 通用待辦
- 流程驅動
- 通用已辦
- 示范實例
- 流程啟動
- 流程待辦
- 流程已辦
- 常見問題
- 表單管理
- 預留字段
- 字段定義
- 業務應用
- 動態輔表
- 輔表定義
- 輔表應用
- 輔表監控
- 動態主表
- 主表定義
- 業務定義
- 元數據
- 產生機制
- 應用場景
- 技術平臺
- 02、基礎模塊
- 基礎設置
- 物料類型
- 倉庫管理
- 匯率管理
- 公司設置
- 賬期設置
- 單據打印
- 單據導出
- 基礎資料
- 物料管理
- 初始庫存導入
- 成本
- 副產品
- 工藝
- 單位
- 供應商
- 客戶
- 二維碼
- 條碼
- 注銷
- 刪除
- 客戶管理
- 供應商管理
- 03、通用規則
- 單據業務
- 審批流程
- 鎖定規則
- 靜態字典
- 04、物料清單
- 清單編制
- 分類清單
- 分層清單
- 清單啟用
- 清單審核
- 清單啟用
- 清單查詢
- 歷史清單
- 分階查詢
- 清單維護
- 替代公式
- 批量維護
- 05、庫存模塊
- 庫存操作
- 入庫管理
- 新增入庫
- 修改入庫
- 入庫審核
- 出庫管理
- 新增出庫
- 修改出庫
- 出庫審核
- 盤點管理
- 新增盤點
- 修改盤點
- 盤點審核
- 調撥管理
- 新增調撥
- 修改調撥
- 調撥審核
- 庫存查詢
- 明細查詢
- 匯總查詢
- 按庫查詢
- 按批查詢
- 單據查詢
- 入庫查詢
- 出庫查詢
- 盤點查詢
- 調撥查詢
- 庫存檢測
- 庫存檢測
- 檢測歷史
- 動態庫存
- 06、銷售模塊
- 銷售訂單
- 訂單管理
- 新增訂單
- 修改訂單
- 訂單審核
- 訂單查詢
- 訂單監控
- 訂單修正
- 銷貨管理
- 銷貨開單
- 基于訂單銷貨
- 基于客戶銷貨
- 銷貨管理
- 銷貨修改
- 查看打印
- 銷貨審批
- 銷貨查詢
- 退貨管理
- 退貨開單
- 退貨管理
- 修改退貨
- 查看打印
- 退貨審批
- 退貨查詢
- 業務規則
- 標記設定
- 07、采購模塊
- 采購計劃
- 計劃管理
- 依請購新增
- 依訂單新增
- 計劃審核
- 計劃采購
- 計劃監控
- 采購訂單
- 訂單管理
- 手動發起
- 采購計劃
- 訂單審核
- 訂單查詢
- 訂單監控
- 訂單修正
- 到貨管理
- 采購到貨
- 發起采購單到貨
- 發起供應商到貨
- 到貨管理
- 到貨審核
- 到貨查詢
- 退貨管理
- 采購退貨
- 退貨管理
- 退貨審核
- 退貨查詢
- 業務規則
- 超到邏輯
- 標記設定
- 08、生產管理
- 工序管理
- 工序定義
- 路線定義
- 工序看板
- 工單管理
- 生產類型
- 核心算法
- 工單編制
- 訂單需求創建
- 手工直接創建
- 工單審核
- 工單查詢
- 制料查詢
- 工單監控
- 生產領料
- 新增領料
- 領料管理
- 領料審核
- 領料查詢
- 生產退料
- 新增退料
- 退料管理
- 退料審核
- 退料查詢
- 生產轉移
- 啟動轉移
- 轉移處理
- 轉移日志
- 工單跟蹤
- 條碼監控
- 生產入庫
- 相關算法
- 新增入庫
- 入庫管理
- 入庫審核
- 入庫查詢
- 生產退回
- 新增退回
- 退回管理
- 退回審核
- 退回查詢
- 09、質量管理
- 檢驗管理
- 檢驗發起
- 新增檢驗
- 編輯檢驗
- 結果錄入
- 檢驗審核
- 檢驗查詢
- 10、批次模塊
- 批號管理
- 批號生成
- 應用場景
- 批次庫存
- 11、財務模塊
- 應收管理
- 對賬管理
- 基于訂單
- 手工新增
- 對賬審核
- 對賬監控
- 收款管理
- 對賬收款
- 收款管理
- 收款審核
- 對賬開票
- 發票管理
- 發票審核
- 應付管理
- 對賬管理
- 基于訂單
- 手工新增
- 對賬審核
- 對賬監控
- 付款管理
- 對賬支付
- 支付管理
- 支付審核
- 對賬收票
- 發票管理
- 發票審核
- 成本核算
- 物料成本
- 生產成本
- 12、任務管理
- 任務發起
- 項目管理
- 我的任務
- 任務調度
- 任務監控
- 任務查詢
- 任務維護
- 任務執行
- 我的待辦
- 我的已辦
- 13、人力資源
- 基礎資料
- 社會保險
- 公積金
- 人事管理
- 人員檔案
- 轉正管理
- 轉正待辦
- 離職管理
- 離職待辦
- 獎懲管理
- 獎懲待辦
- 變動管理
- 變動待辦
- 考勤管理
- 班次設定
- 打卡管理
- 薪資管理
- 工資項目
- 工資方案
- 工資造表
- 工資結果
- 招聘管理
- 簡歷管理
- 面試管理
- 福利管理
- 社保方案
- 公積金方案
- 商業保險
- 培訓管理
- 培訓教材
- 培訓機構
- 培訓講師
- 培訓申請
- 人事關系
- 保險理賠
- 14、協同辦公
- 記事管理
- 記事本
- 歷史記事
- 備忘管理
- 備忘錄
- 我的備忘
- 歷史備忘
- 日程管理
- 我的日程
- 組織日程
- 信息管理
- 信息采編
- 信息管理
- 信息查看
- 文件管理
- 文件分組
- 文件查詢
- 文件瀏覽
- 財務流程
- 借款申請
- 借款待辦
- 報銷申請
- 報銷待辦
- 核銷申請
- 核銷待辦
- 付款申請
- 付款待辦
- 發票申請
- 發票待辦
- 行政流程
- 請假申請
- 請假待辦
- 出差申請
- 出差待辦
- 工作報告
- 我的報告
- 報告查詢
- 15、無線呼叫
- 硬件配置
- 工位設備
- 服務定義
- 報文管理
- 呼叫器報文
- 呼叫應答報文
- 應答器報文
- 應答反饋報文
- 業務處理
- 呼叫待辦
- 呼叫管理
- 業務查詢
- 呼叫看板
- 呼叫查詢
- 16、條碼管理
- 條碼設置
- 相關設置
- 生成規則
- 條碼生成
- 條碼管理
- 條碼資料
- 條碼監控
- 條碼查詢
- 條碼操作
- 掃碼關聯
- 條碼關聯
- 條碼盤轉
- 二維碼
- 溯源系統
- 17、客戶關系
- 銷售漏斗
- 名單收集
- 名單分配
- 名單跟蹤
- 我的名單
- 我的歷史
- 名單篩選
- 歷史名單
- 客戶管理
- 客戶公海
- 客戶資料
- 轉正式
- 人員
- 項目
- 評價
- 我的客戶
- 團隊客戶
- 分享客戶
- 分配管理
- 客戶分配
- 團隊分配
- 分配記錄
- 跟進管理
- 客戶跟進
- 跟進批示
- 我的批示
- 跟進記錄
- 銷售日報
- 我的日報
- 團隊日報
- 批示日報
- 日報查詢
- 客戶評價
- 指標定義
- 評價查詢
- 18、外勤模塊
- 考勤管理
- 考勤時間
- 考勤打卡
- 拜訪管理
- 拜訪計劃
- 拜訪記錄
- 活動管理
- 活動記錄
- 19、外貿模塊
- 報關管理
- 報關商品
- 報關要素
- 報關發起
- 報關審核
- 報關管理
- 20、合同模塊
- 預報價單
- 我的預報價
- 預報價審核
- 預報價查詢
- 報價管理
- 客戶報價
- 報價審核
- 報價管理
- 我的報價
- 合同簽約
- 訂金管理
- 合同簽訂
- 合同審核
- 財務復核
- 合同管理
- 合同收款
- 合同收款
- 收款復核
- 合同查詢
- 合同查詢
- 變更記錄
- 21、項目管理
- 整體設計
- 核心業務
- 附件設計
- 相關配置
- 項目計劃
- 項目模板
- 項目立項
- 項目計劃
- 項目屬性
- 任務屬性
- 項目執行
- 立項審批
- 填報審核
- 任務執行
- 填報流程
- 我的已辦
- 分解發布
- 項目監控
- 任務查詢
- 項目查詢
- 項目跟蹤
- 項目干預
- 任務干預
- 項目文件
- 22、服務管理
- 服務定義
- 服務定義
- 服務運行
- 服務目錄
- 服務待辦
- 服務監控
- 服務已辦
- 服務查詢
- 我的服務
- 23、查詢統計
- 人員范圍
- 單據查詢
- 報表查詢
- 圖表查詢
- 24、業務監控
- 單據監控
- 清單監控
- 實體監控
- 價格歷史
- 25、報表打印
- 簡明指引
- 報表設計
- 技術教程
- 通用設計
- 單據設計
- 庫存相關單據
- 采購相關單據
- 銷售相關單據
- 生產相關單據
- 常見問題
- 26、手機應用
- 參數配置
- 技術平臺
- 功能設計
- 系統功能
- 應用升級
- 業務模塊
- 27、微信應用
- 參數配置
- 多公眾號
- 技術平臺
- 業務功能
- 平臺功能
- 微信客服
- 微信公號
- 28、開放服務
- 接入示例
- 實施方案
- nginx安裝
- nginx配置
- nginx運行
- nginx限流
- 實現方案
- 業務操作
- 代碼示意
- 29、產品實施
- 簡明指引
- 實施流程
- 實施過程
- 文檔模板
- 表格模板
- 方案綱要
- 系統安裝
- 部署方案
- 單獨tomcat部署
- nginx+tomcat部署
- 安裝過程
- 主體應用
- 調度服務器
- 工作服務器
- 自動備份
- 系統升級
- 主體應用
- 實施期升級
- 維護期升級
- 調度服務器
- 工作服務器
- 實施培訓
- 實施風險
- 常見問題
- 30、產品發布
- 測試方案
- 發布方案
- 31、常見問題
- 性能優化
- 啟動優化
- 解決方案
- 實體操作沖突
- 算法說明
- 檢驗算法
- 注意事項
- 瀏覽器
- 插件
- 郵箱配置
- 系統維護
- 維護日志
- 維護腳本
- 開發環境
- 32、版本記錄
- 研發進程
- 更新日志
- 規劃記錄
- 33、版權信息
- 平臺版權
- 產品版權
- 后記