簡(jiǎn)介
QBasic快速開發(fā)框架,Q是Quick的縮寫,QBasic就是快速基礎(chǔ)之意。QBasic的開發(fā)初衷是為開發(fā)人員提供一款小而美,輕量而又靈活的項(xiàng)目腳手架。QBasic對(duì)目前主流的一些前后端框架做了整合,提供了一個(gè)軟件項(xiàng)目必須要有的身份驗(yàn)證、權(quán)限校驗(yàn)、日志、緩存、全局異常處理、API接口文檔等基礎(chǔ)功能。來新項(xiàng)目了,開發(fā)人員不必再?gòu)念^開發(fā)這些基礎(chǔ)功能,直接從業(yè)務(wù)功能開始開發(fā),減少了大量的重復(fù)性工作。
開發(fā)原則
- 編碼規(guī)范
- 遵循阿里巴巴Java開發(fā)手冊(cè)。
- 前后端職責(zé)分離
- 后端代碼中沒有任何HTML代碼,視圖層不包含任何后端業(yè)務(wù)邏輯代碼。
- 前端視圖層又做了職責(zé)分離,采用MVVM模式,將視圖UI和業(yè)務(wù)邏輯分開。
- 輕量
- 數(shù)據(jù)庫(kù)只有最基礎(chǔ)的表和字段。
- 框架只實(shí)現(xiàn)了最基礎(chǔ)的功能。
- 功能頁面前端只引用了Vue,jQuery,Element UI框架。
- 代碼簡(jiǎn)潔
- Controller層沒有異常捕獲,權(quán)限驗(yàn)證,請(qǐng)求參數(shù)檢驗(yàn),業(yè)務(wù)日志代碼,統(tǒng)一交給Aop切面處理,Controller層只有業(yè)務(wù)邏輯代碼。
- 使用Java8新特性lambda表達(dá)式,stream流。
- 性能優(yōu)化
- 能在應(yīng)用服務(wù)器做的事,不交給數(shù)據(jù)庫(kù)做;能在客戶端做的事,不交給應(yīng)用服務(wù)器做。
- 熱點(diǎn)數(shù)據(jù)做緩存,如用戶身份信息,權(quán)限列表做了緩存。
- Bootstrap模板AdminLTE的CSS和JS代碼做了深度精簡(jiǎn),只保留了主頁框架頁面的部分,加快主頁渲染速度。
技術(shù)選型
1、后端
- Java8:lambda表達(dá)式、stream流、optional可空類型等新特性。
- Spring Boot:內(nèi)嵌式tomcat部署方便;約定大于配置,再不用繁瑣的XML配置。
- Spring+Spring MVC+Mybatis:標(biāo)準(zhǔn)的web應(yīng)用三件套。
- Apache Shiro:安全框架,處理身份認(rèn)證,授權(quán),會(huì)話管理等。
- Thymeleaf:Spring官方推薦的模板引擎。
- Druid:阿里巴巴開源的高性能數(shù)據(jù)庫(kù)連接池。
- Ehcache:緩存框架。
- slf4j+logback:日志框架。
- Apache Commons Lang:常用工具包。
- fastJSON:JSON處理工具包。
- Joda-Time:日期處理工具包。
- Swagger:API接口文檔自動(dòng)生成。
2、前端
- Vue+jQuery:基礎(chǔ)JS框架。
- Element UI:餓了嗎前端團(tuán)隊(duì)開源的Vue組件庫(kù),CSS苦手的福音。
- Bootstrap:UI框架。
- AdminLTE:Bootstrap模板。
- Font Awesome:圖標(biāo)字體。
- CKEditor4:功能強(qiáng)大的富文本編輯器。
- moment:前端日期處理工具包。
后臺(tái)管理功能概述
- 用戶登錄/登出
- 權(quán)限校驗(yàn)
- 用戶權(quán)限控制到按鈕級(jí)別
- 系統(tǒng)管理
- 用戶管理
- 角色管理
- 資源管理
- 機(jī)構(gòu)管理
- 數(shù)據(jù)字典
- 系統(tǒng)配置
- 定時(shí)任務(wù)
- 數(shù)據(jù)集管理
- 運(yùn)維工具
- 數(shù)據(jù)查詢
- 業(yè)務(wù)日志
- 錯(cuò)誤日志
- 應(yīng)用監(jiān)控
- 內(nèi)容發(fā)布
- 內(nèi)容管理
- 欄目管理
- 多級(jí)審核
- 全文檢索
- 文件存儲(chǔ)服務(wù)
- 本地磁盤
- 阿里云OSS服務(wù)
- 工作流引擎
- 流程分類
- 流程定義
- 流程配置
- 示例代碼庫(kù)
- 導(dǎo)出Word文檔
- 導(dǎo)出Excel文檔
- 全局異常處理
- 全局日志記錄
- 緩存
- 用戶身份信息
- 用戶權(quán)限信息
- Controller層用戶請(qǐng)求、響應(yīng)參數(shù)封裝
- 用戶請(qǐng)求參數(shù)校驗(yàn)
- 前端、后端請(qǐng)求參數(shù)Double Check
- 主頁框架頁
- 菜單樹
- 收縮側(cè)邊欄
- 面包屑導(dǎo)航
- 內(nèi)容頁高度自適應(yīng)
- 錯(cuò)誤頁面
- 400頁面
- 401頁面
- 404頁面
- 500頁面
- 檢查當(dāng)前用戶會(huì)話是否過期
- 避免出現(xiàn)點(diǎn)擊菜單鏈接內(nèi)容頁嵌套登錄頁的情況
- 公共HTML模板頁
- API接口文檔
- 代碼生成器,生成單表的增刪改查全套代碼
接入說明
- 后臺(tái)管理站端口8000,管理員賬號(hào):admin/123456,測(cè)試賬號(hào):test/123456
- 后臺(tái)管理站接口文檔地址/docs,需要先登錄
- 業(yè)務(wù)日志不需要寫數(shù)據(jù)庫(kù)的API,請(qǐng)?jiān)贑ontroller方法上添加DbLogIgnore注解
- RESTFUL API接口規(guī)范
請(qǐng)求參數(shù)示例
@ApiModel
public class EditParamReq extends BaseRequest {
@NotNull(message = "pId不能為空")
@Min(value = 1, message = "pId必須大于0")
private Integer pId;
@ApiModelProperty("字典類型")
@NotEmpty(message = "字典類型不能為空")
@Length(max = 50, message = "字典類型不能超過50個(gè)字符")
private String pType;
@ApiModelProperty("字典key")
@NotEmpty(message = "字典key不能為空")
@Length(max = 50, message = "字典key不能超過50個(gè)字符")
private String pKey;
@ApiModelProperty("字典value")
@NotEmpty(message = "字典value不能為空")
@Length(max = 50, message = "字典value不能超過50個(gè)字符")
private String pValue;
@ApiModelProperty("字典排序")
@NotNull(message = "字典排序不能為空")
@Range(min = 0, message = "字典排序不能小于0")
private Integer sort;
@ApiModelProperty("備注")
private String remark;
public Integer getpId() {
return pId;
}
public void setpId(Integer pId) {
this.pId = pId;
}
public String getpType() {
return pType;
}
public void setpType(String pType) {
this.pType = pType;
}
public String getpKey() {
return pKey;
}
public void setpKey(String pKey) {
this.pKey = pKey;
}
public String getpValue() {
return pValue;
}
public void setpValue(String pValue) {
this.pValue = pValue;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
返回示例
{
"status": 200,
"msg":"成功",
"result": {
...
}
}
返回參數(shù)說明
| 參數(shù)名 | 類型 | 說明 |
|---|---|---|
| status | int | 響應(yīng)狀態(tài)碼 |
| msg | String | 響應(yīng)提示信息 |
| result | Object | 響應(yīng)結(jié)果 |
status響應(yīng)狀態(tài)碼說明
| 狀態(tài)碼 | 說明 |
|---|---|
| 200 | 請(qǐng)求成功 |
| 400 | 接口請(qǐng)求參數(shù)不合法,比如手機(jī)號(hào)不合法 |
| 401 | 身份校驗(yàn)失敗 |
| 404 | 服務(wù)器找不到請(qǐng)求的API |
| 500 | 系統(tǒng)異常,操作失敗,需要客戶端做容錯(cuò)處理 |