houyaf 3 years ago
parent
commit
c00e92e98f

+ 24 - 0
datamodels/api.go

@@ -0,0 +1,24 @@
+package datamodels
+
+import "time"
+
+type Api struct {
+    ModId       int64     `json:"modId"             xorm:"'mod_id'       bigint     pk comment('主键ID')   "`
+    ApiId       int64     `json:"apiId"             xorm:"'api_id'       bigint     pk comment('主键ID')   "`
+    ApiTitle    string    `json:"apiTitle"          xorm:"'api_title'    varchar(127)  comment('名称')     "`
+    ApiCode     string    `json:"apiCode"           xorm:"'api_code'     varchar(127)  comment('编码')     "`
+    ApiParams   string    `json:"apiParams"         xorm:"'api_params'   varchar(127)  comment('Param')   "`
+    Status      int64     `json:"status"            xorm:"'status'       bigint        comment('Status')  "`
+    ApiDesc     string    `json:"apiDesc"           xorm:"'api_desc'     varchar(50)   comment('描述')      "`
+    CreatedBy   int64     `json:"createdBy"         xorm:"'created_by'"`
+    CreatedAt   time.Time `json:"createdAt"         xorm:"'created_at'"`
+    UpdatedBy   int64     `json:"updatedBy"         xorm:"'updated_by'"`
+    UpdatedAt   time.Time `json:"updatedAt"         xorm:"'updated_at'"`
+    DeletedFlag int64     `json:"deletedFlag"       xorm:"'deleted_flag'"`
+    DeletedBy   int64     `json:"deletedBy"         xorm:"'deleted_by'"`
+    DeletedAt   time.Time `json:"deletedAt"         xorm:"'deleted_at'"`
+}
+
+func (t *Api) TableName() string {
+    return "ps_api"
+}

+ 19 - 0
datamodels/api_req.go

@@ -0,0 +1,19 @@
+package datamodels
+
+import "time"
+
+type ApiReq struct {
+    OcId        int64       `json:"ocId"          xorm:"'oc_id'        bigint      pk comment('OcId')      "`
+    AccountId   int64       `json:"accountId"     xorm:"'account_id'   bigint      pk comment('AccountId') "`
+    AppId       int64       `json:"appId"         xorm:"'app_id'       bigint      pk comment('AppId')     "`
+    ApiId       int64       `json:"apiId"         xorm:"'api_id'       bigint      pk comment('ApiId')     "`
+    ReqId       int64       `json:"reqId"         xorm:"'req_id'       bigint      pk comment('ReqId')     "`
+    ReqCode     string      `json:"reqCode"       xorm:"'req_code'     varchar(127)   comment('编码')       "`
+    ReqParams   string      `json:"reqParams"     xorm:"'req_params'   varchar(127)   comment('Param')     "`
+    ReqData     string      `json:"reqData"       xorm:"'req_data'     varchar(2047)  comment('Status')    "`
+    ReqTime     time.Time   `json:"reqTime"       xorm:"'req_time'     datetime       comment('ReqTime')   "`
+}
+
+func (t *ApiReq) TableName() string {
+    return "ps_api_req"
+}

+ 21 - 0
datamodels/module.go

@@ -0,0 +1,21 @@
+package datamodels
+
+import "time"
+
+type Module struct {
+    ModId       int64     `json:"modId"           xorm:"'mod_id'        bigint     pk comment('主键ID')      "`
+    ModTitle    string    `json:"modTitle"        xorm:"'mod_title'     varchar(50)   comment('模型名称')     "`
+    ModDesc     string    `json:"modDesc"         xorm:"'mod_desc'      varchar(50)   comment('描述')        "`
+    IsFixed     int64     `json:"isFixed"         xorm:"'is_fixed'      int           comment('是否可修改')   "`
+    CreatedBy   int64     `json:"createdBy"       xorm:"'created_by'"`
+    CreatedAt   time.Time `json:"createdAt"       xorm:"'created_at'"`
+    UpdatedBy   int64     `json:"updatedBy"       xorm:"'updated_by'"`
+    UpdatedAt   time.Time `json:"updatedAt"       xorm:"'updated_at'"`
+    DeletedFlag int64     `json:"deletedFlag"     xorm:"'deleted_flag'"`
+    DeletedBy   int64     `json:"deletedBy"       xorm:"'deleted_by'"`
+    DeletedAt   time.Time `json:"deletedAt"       xorm:"'deleted_at'"`
+}
+
+func (t *Module) TableName() string {
+    return "ps_module"
+}

+ 1 - 1
repositories/model/object_repo.go

@@ -20,7 +20,7 @@ func NewObjectRepo(engine *xorm.Engine) *ObjectRepo {
 
 func (d *ObjectRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
 	limit := m["limit"].(int)
-	page := m["page"].(int)
+	page  := m["page"].(int)
 
 	sqlSelect := ` SELECT A.*                `
 	sqlFrom   := ` FROM   ds_object   AS A   `

+ 121 - 0
repositories/paas/api_repo.go

@@ -0,0 +1,121 @@
+package paas
+
+import (
+    "fmt"
+    "time"
+    "xorm.io/xorm"
+    "xps/datamodels"
+    "xps/viewmodels"
+)
+
+type ApiRepo struct {
+    engine *xorm.Engine
+}
+
+func NewApiRepo(engine *xorm.Engine) *ApiRepo {
+    return &ApiRepo{
+        engine: engine,
+    }
+}
+
+func (d *ApiRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    limit := m["limit"].(int)
+    page  := m["page"].(int)
+    
+    sqlSelect := ` SELECT A.*                 `
+    sqlFrom   := ` FROM   ps_api   AS A       `
+    sqlWhere  := ` WHERE  A.deleted_flag = 0  `
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+    
+    sqlCount := ` SELECT COUNT(*) `
+    total, err1 := d.engine.SQL(sqlCount + sqlFrom + sqlWhere).Count(new(datamodels.Api))
+    if err1 != nil {
+        return nil, err1
+    }
+    sqlOrderBy := " ORDER BY api_id DESC "
+    
+    pageStart  := (page - 1) * limit
+    sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
+    
+    datalist := make([]datamodels.Api, 0)
+    err2 := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy + sqlLimit).Find(&datalist)
+    if err2 != nil {
+        return nil, err2
+    }
+    
+    pageResult := &viewmodels.PageResult{}
+    pageResult.Data     = datalist
+    pageResult.Total    = total
+    pageResult.PageSize = limit
+    pageResult.Page     = page
+    return pageResult, nil
+}
+
+func (d *ApiRepo) GetList(m map[string]interface{}) ([]viewmodels.ApiInfo, error) {
+    modId     := m["modId"].(int64)
+    
+    sqlSelect := ` SELECT A.*            `
+    sqlFrom   := ` FROM   ps_api AS A    `
+    sqlWhere  := ` WHERE  A.deleted_flag = 0 AND A.mod_id =` + fmt.Sprintf("%d", modId)
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+    
+    sqlOrderBy := " ORDER BY mod_id ASC "
+    datalist := make([]viewmodels.ApiInfo, 0)
+    err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+    if err != nil {
+        return nil, err
+    } else {
+        return datalist, nil
+    }
+}
+
+func (d *ApiRepo) GetById(modId, apiId int64) (*viewmodels.ApiInfo, error) {
+    data := &viewmodels.ApiInfo{}
+    ok, err := d.engine.
+        Where("mod_id = ?", modId).
+        Where("api_id = ?", apiId).
+        Get(data)
+    if !ok && err == nil {
+        return nil, err
+    } else {
+        return data, nil
+    }
+}
+
+func (d *ApiRepo) Create(data *datamodels.Api) error {
+    data.CreatedAt = time.Now()
+    _, err := d.engine.Insert(data)
+    return err
+}
+
+func (d *ApiRepo) Update(data *datamodels.Api) error {
+    modId := data.ModId
+    apiId := data.ApiId
+    
+    data.UpdatedAt = time.Now()
+    _, err := d.engine.
+        Where("mod_id = ?", modId).
+        Where("api_id = ?", apiId).
+        Update(data)
+    return err
+}
+
+func (d *ApiRepo) Delete(m map[string]interface{}) error {
+    modId     := m["modId"].(int64)
+    apiId     := m["apiId"].(int64)
+    deletedBy := m["deletedBy"].(int64)
+    
+    data := &datamodels.Api{}
+    data.DeletedFlag = 1
+    data.DeletedBy = deletedBy
+    data.DeletedAt = time.Now()
+    _, err := d.engine.
+        Where("mod_id = ?", modId).
+        Where("api_id = ?", apiId).
+        Update(data)
+    return err
+}

+ 116 - 0
repositories/paas/api_req_repo.go

@@ -0,0 +1,116 @@
+package paas
+
+import (
+    "fmt"
+    "xorm.io/xorm"
+    "xps/datamodels"
+    "xps/viewmodels"
+)
+
+type ApiReqRepo struct {
+    engine *xorm.Engine
+}
+
+func NewApiReqRepo(engine *xorm.Engine) *ApiReqRepo {
+    return &ApiReqRepo{
+        engine: engine,
+    }
+}
+
+func (d *ApiReqRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    limit := m["limit"].(int)
+    page  := m["page"].(int)
+    
+    sqlSelect := ` SELECT A.*,
+                          B.app_title,
+                          C.api_title `
+    sqlFrom   := ` FROM       ps_api_req   AS A
+                   LEFT  JOIN app          AS B ON (A.app_id = B.app_id)
+                   LEFT  JOIN ps_api       AS C ON (A.api_id = C.api_id)`
+    sqlWhere  := ` WHERE 1 = 1  `
+    
+    if apiId, ok := m["apiId"]; ok {
+        sqlWhere += ` AND A.api_id = `+ fmt.Sprintf("%d", apiId)
+    }
+    
+    if accountId, ok := m["accountId"]; ok {
+        sqlWhere += ` AND A.account_id = `+ fmt.Sprintf("%d", accountId)
+    }
+    
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+
+    sqlCount := ` SELECT COUNT(*) `
+    total, err1 := d.engine.SQL(sqlCount + sqlFrom + sqlWhere).Count(new(datamodels.ApiReq))
+    if err1 != nil {
+        return nil, err1
+    }
+    sqlOrderBy := " ORDER BY A.req_id ASC "
+    
+    pageStart  := (page - 1) * limit
+    sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
+    
+    datalist := make([]datamodels.ApiReq, 0)
+    err2 := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy + sqlLimit).Find(&datalist)
+    if err2 != nil {
+        return nil, err2
+    }
+    
+    pageResult := &viewmodels.PageResult{}
+    pageResult.Data     = datalist
+    pageResult.Total    = total
+    pageResult.PageSize = limit
+    pageResult.Page     = page
+    return pageResult, nil
+}
+
+func (d *ApiReqRepo) GetList(m map[string]interface{}) ([]viewmodels.ApiReqInfo, error) {
+    sqlSelect := ` SELECT A.*,
+                          B.app_title,
+                          C.api_title `
+    sqlFrom   := ` FROM       ps_api_req   AS A
+                   LEFT  JOIN app          AS B ON (A.app_id = B.app_id)
+                   LEFT  JOIN ps_api       AS C ON (A.api_id = C.api_id)`
+    sqlWhere  := ` WHERE 1 = 1  `
+    
+    
+    if apiId, ok := m["apiId"]; ok {
+        sqlWhere += ` AND A.api_id = `+ fmt.Sprintf("%d", apiId)
+    }
+    
+    if accountId, ok := m["accountId"]; ok {
+        sqlWhere += ` AND A.account_id = `+ fmt.Sprintf("%d", accountId)
+    }
+    
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+    sqlOrderBy := " ORDER BY A.req_id ASC "
+    
+    datalist := make([]viewmodels.ApiReqInfo, 0)
+    err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+    if err != nil {
+        return nil, err
+    } else {
+        return datalist, nil
+    }
+}
+
+func (d *ApiReqRepo) GetById(reqId int64) (*viewmodels.ApiReqInfo, error) {
+    data := &viewmodels.ApiReqInfo{}
+    ok, err := d.engine.
+        Where("req_id = ?", reqId).
+        Get(data)
+    if !ok && err == nil {
+        return nil, err
+    } else {
+        return data, nil
+    }
+}
+
+func (d *ApiReqRepo) Create(data *datamodels.ApiReq) error {
+    _, err := d.engine.Insert(data)
+    return err
+}
+

+ 115 - 0
repositories/paas/module_repo.go

@@ -0,0 +1,115 @@
+package paas
+
+import (
+    "fmt"
+    "time"
+    "xorm.io/xorm"
+    "xps/datamodels"
+    "xps/viewmodels"
+)
+
+type ModuleRepo struct {
+    engine *xorm.Engine
+}
+
+func NewModuleRepo(engine *xorm.Engine) *ModuleRepo {
+    return &ModuleRepo{
+        engine: engine,
+    }
+}
+
+func (d *ModuleRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    limit     := m["limit"].(int)
+    page      := m["page"].(int)
+    
+    sqlSelect := ` SELECT A.*                `
+    sqlFrom   := ` FROM   ps_module   AS A   `
+    sqlWhere  := ` WHERE A.deleted_flag = 0  `
+    
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.mod_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+    
+    sqlCount    := ` SELECT COUNT(*) `
+    total, err1 := d.engine.SQL(sqlCount + sqlFrom + sqlWhere).Count(new(datamodels.Module))
+    if err1 != nil {
+        return nil, err1
+    }
+    sqlOrderBy  := " ORDER BY object_id DESC "
+    
+    pageStart   := (page - 1) * limit
+    sqlLimit    := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
+    
+    datalist := make([]viewmodels.ModuleInfo, 0)
+    err2 := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy + sqlLimit).Find(&datalist)
+    if err2 != nil {
+        return nil, err2
+    }
+    
+    pageResult := &viewmodels.PageResult{}
+    pageResult.Data     = datalist
+    pageResult.Total    = total
+    pageResult.PageSize = limit
+    pageResult.Page     = page
+    return pageResult, nil
+}
+
+func (d *ModuleRepo) GetList(m map[string]interface{}) ([]viewmodels.ModuleInfo, error) {
+    sqlSelect := ` SELECT A.*                `
+    sqlFrom   := ` FROM  ps_module   AS A    `
+    sqlWhere  := ` WHERE A.deleted_flag = 0  `
+    if keywords, ok := m["keywords"]; ok {
+        sqlWhere += ` AND A.mod_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
+    }
+    sqlOrderBy := " ORDER BY mod_id ASC "
+    
+    datalist   := make([]viewmodels.ModuleInfo, 0)
+    err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+    if err != nil {
+        return nil, err
+    } else {
+        return datalist, nil
+    }
+}
+
+func (d *ModuleRepo) GetById(modId int64) (*viewmodels.ModuleInfo, error) {
+    data := &viewmodels.ModuleInfo{}
+    ok, err := d.engine.
+        Where("mod_id = ?", modId).
+        Get(data)
+    if !ok && err == nil {
+        return nil, err
+    } else {
+        return data, nil
+    }
+}
+
+func (d *ModuleRepo) Create(data *datamodels.Module) error {
+    data.CreatedAt = time.Now()
+    _, err := d.engine.Insert(data)
+    return err
+}
+
+func (d *ModuleRepo) Update(data *datamodels.Module) error {
+    modId := data.ModId
+    
+    data.UpdatedAt = time.Now()
+    _, err := d.engine.
+        Where("mod_id = ?", modId).
+        Update(data)
+    return err
+}
+
+func (d *ModuleRepo) Delete(m map[string]interface{}) error {
+    modId     := m["modId"].(int64)
+    deletedBy := m["deletedBy"].(int64)
+    
+    data := &datamodels.Module{}
+    data.DeletedFlag = 1
+    data.DeletedBy = deletedBy
+    data.DeletedAt = time.Now()
+    _, err := d.engine.
+        Where("mod_id = ?", modId).
+        Update(data)
+    return err
+}

+ 42 - 0
service/paas/api_req_service.go

@@ -0,0 +1,42 @@
+package paas
+
+import (
+    "xps/datamodels"
+    "xps/datasource"
+    "xps/repositories/paas"
+    "xps/viewmodels"
+)
+
+type ApiReqService interface {
+    GetList(m map[string]interface{}) ([]viewmodels.ApiReqInfo, error)
+    GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
+    GetById(reqId int64) (*viewmodels.ApiReqInfo, error)
+    Create(d *datamodels.ApiReq) error
+}
+
+type apiReqService struct {
+    repo *paas.ApiReqRepo
+}
+
+func NewApiReqService() ApiReqService {
+    return &apiReqService{
+        repo: paas.NewApiReqRepo(datasource.InstanceMaster()),
+    }
+}
+
+func (s *apiReqService) GetList(m map[string]interface{}) ([]viewmodels.ApiReqInfo, error) {
+    return s.repo.GetList(m)
+}
+
+func (s *apiReqService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    return s.repo.GetPage(m)
+}
+
+func (s *apiReqService) GetById(reqId int64) (*viewmodels.ApiReqInfo, error) {
+    return s.repo.GetById(reqId)
+}
+
+func (s *apiReqService) Create(apiReq *datamodels.ApiReq) error {
+    apiReq.ApiId = NewID()
+    return s.repo.Create(apiReq)
+}

+ 62 - 0
service/paas/api_service.go

@@ -0,0 +1,62 @@
+package paas
+
+import (
+    "xps/datamodels"
+    "xps/datasource"
+    "xps/repositories/paas"
+    "xps/viewmodels"
+)
+
+type ApiService interface {
+    GetList(m map[string]interface{}) ([]viewmodels.ApiInfo, error)
+    GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
+    GetById(modId, apiId int64) (*viewmodels.ApiInfo, error)
+    Create(d *datamodels.Api) error
+    Update(d *datamodels.Api) error
+    ChangeStatus(modId, apiId, status int64) error
+    Delete(m map[string]interface{}) error
+}
+
+type apiService struct {
+    repo *paas.ApiRepo
+}
+
+func NewApiService() ApiService {
+    return &apiService{
+        repo: paas.NewApiRepo(datasource.InstanceMaster()),
+    }
+}
+
+func (s *apiService) GetList(m map[string]interface{}) ([]viewmodels.ApiInfo, error) {
+    return s.repo.GetList(m)
+}
+
+func (s *apiService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    return s.repo.GetPage(m)
+}
+
+func (s *apiService) GetById(modId, apiId int64) (*viewmodels.ApiInfo, error) {
+    return s.repo.GetById(modId, apiId)
+}
+
+func (s *apiService) Create(Api *datamodels.Api) error {
+    Api.ApiId = NewID()
+    return s.repo.Create(Api)
+}
+
+func (s *apiService) Update(Api *datamodels.Api) error {
+    return s.repo.Update(Api)
+}
+
+func (s *apiService) ChangeStatus(modId, apiId, status int64) error {
+    data := &datamodels.Api{
+        ModId: modId,
+        ApiId: apiId,
+        Status: status,
+    }
+    return s.repo.Update(data)
+}
+
+func (s *apiService) Delete(m map[string]interface{}) error {
+    return s.repo.Delete(m)
+}

+ 34 - 0
service/paas/base_service.go

@@ -0,0 +1,34 @@
+package paas
+
+import (
+    "log"
+    "xps/cache"
+    "xps/datasource"
+    "xps/viewmodels"
+)
+
+func NewID() int64 {
+    engine   := datasource.InstanceIDServer()
+    ret, err := engine.Exec("replace into uid_sequence(stub) values('a')")
+    if err != nil {
+        log.Fatal(err.Error())
+    }
+    uid, err := ret.LastInsertId()
+    if err != nil {
+        log.Fatal(err.Error())
+    }
+    return uid
+}
+
+func GetCurUser(userId int64) (*viewmodels.UserData, error){
+    return cache.GetUserData(userId)
+}
+
+func GetCurUserRoleId(userId int64) int64 {
+    userData, err := cache.GetUserData(userId)
+    if err != nil {
+        log.Fatal(err.Error())
+        return 0
+    }
+    return userData.RoleId
+}

+ 52 - 0
service/paas/module_service.go

@@ -0,0 +1,52 @@
+package paas
+
+import (
+    "xps/datamodels"
+    "xps/datasource"
+    "xps/repositories/paas"
+    "xps/viewmodels"
+)
+
+type ModuleService interface {
+    GetList(m map[string]interface{}) ([]viewmodels.ModuleInfo, error)
+    GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
+    GetById(modId int64) (*viewmodels.ModuleInfo, error)
+    Create(d *datamodels.Module) error
+    Update(d *datamodels.Module) error
+    Delete(m map[string]interface{}) error
+}
+
+type moduleService struct {
+    repo *paas.ModuleRepo
+}
+
+func NewModuleService() ModuleService {
+    return &moduleService{
+        repo: paas.NewModuleRepo(datasource.InstanceMaster()),
+    }
+}
+
+func (s *moduleService) GetList(m map[string]interface{}) ([]viewmodels.ModuleInfo, error) {
+    return s.repo.GetList(m)
+}
+
+func (s *moduleService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+    return s.repo.GetPage(m)
+}
+
+func (s *moduleService) GetById(modId int64) (*viewmodels.ModuleInfo, error) {
+    return s.repo.GetById(modId)
+}
+
+func (s *moduleService) Create(Module *datamodels.Module) error {
+    Module.ModId = NewID()
+    return s.repo.Create(Module)
+}
+
+func (s *moduleService) Update(Module *datamodels.Module) error {
+    return s.repo.Update(Module)
+}
+
+func (s *moduleService) Delete(m map[string]interface{}) error {
+    return s.repo.Delete(m)
+}

+ 15 - 0
viewmodels/api_info.go

@@ -0,0 +1,15 @@
+package viewmodels
+
+type ApiInfo struct {
+    ModId       int64     `json:"modId"        xorm:"'mod_id'       bigint     pk comment('主键ID')    "`
+    ApiId       int64     `json:"apiId"        xorm:"'api_id'       bigint     pk comment('主键ID')    "`
+    ApiTitle    string    `json:"apiTitle"     xorm:"'api_title'    varchar(127)  comment('名称')      "`
+    ApiCode     string    `json:"apiCode"      xorm:"'api_code'     varchar(127)  comment('编码')      "`
+    ApiParams   string    `json:"apiParams"    xorm:"'api_params'   varchar(127)  comment('Param')    "`
+    Status      int64     `json:"status"       xorm:"'status'       bigint        comment('Status')   "`
+    ApiDesc     string    `json:"apiDesc"      xorm:"'api_desc'     varchar(50)   comment('描述')      "`
+}
+
+func (t *ApiInfo) TableName() string {
+    return "ps_api"
+}

+ 20 - 0
viewmodels/api_req_info.go

@@ -0,0 +1,20 @@
+package viewmodels
+
+import "time"
+
+type ApiReqInfo struct {
+    OcId        int64       `json:"ocId"          xorm:"'oc_id'        bigint         comment('OcId')      "`
+    AccountId   int64       `json:"accountId"     xorm:"'account_id'   bigint         comment('AccountId') "`
+    AppId       int64       `json:"appId"         xorm:"'app_id'       bigint         comment('AppId')     "`
+    AppTitle    string      `json:"appTitle"      xorm:"'app_title'    varchar(127)   comment('AppTitle')  "`
+    ApiId       int64       `json:"apiId"         xorm:"'api_id'       bigint         comment('ApiId')     "`
+    ApiTitle    string      `json:"apiTitle"      xorm:"'api_title'    varchar(127)   comment('ApiTitle')  "`
+    ReqId       int64       `json:"reqId"         xorm:"'req_id'       bigint      pk comment('ReqId')     "`
+    ReqParams   string      `json:"reqParams"     xorm:"'req_params'   varchar(127)   comment('Param')     "`
+    ReqData     string      `json:"reqData"       xorm:"'req_data'     varchar(2047)  comment('Status')    "`
+    ReqTime     time.Time   `json:"reqTime"       xorm:"'req_time'     datetime       comment('ReqTime')   "`
+}
+
+func (t *ApiReqInfo) TableName() string {
+    return "ps_api_req"
+}

+ 12 - 0
viewmodels/module_info.go

@@ -0,0 +1,12 @@
+package viewmodels
+
+type ModuleInfo struct {
+    ModuleId    int64  `json:"modId"      xorm:"'mod_id'      bigint      pk comment('主键ID')        "`
+    ModuleTitle string `json:"modTitle"   xorm:"'mod_title'   varchar(50)    comment('群组类型名称')   "`
+    ModuleDesc  string `json:"modDesc"    xorm:"'mod_desc'    varchar(50)    comment('描述')          "`
+    IsFixed     int64  `json:"isFixed"    xorm:"'is_fixed'    bigint         comment('是否可修改')     "`
+}
+
+func (t *ModuleInfo) TableName() string {
+    return "ps_module"
+}

+ 116 - 0
web/controllers/api_controller.go

@@ -0,0 +1,116 @@
+package controllers
+
+import (
+    "github.com/kataras/iris/v12/mvc"
+    "xps/datamodels"
+    "xps/service/paas"
+)
+
+type ApiController struct {
+    Base
+    Service paas.ApiService
+}
+
+func (c *ApiController) BeforeActivation(b mvc.BeforeActivation) {
+    b.Handle("GET",         "/",                                                        "GetList"       )
+    b.Handle("GET",         "/page",                                                    "GetPage"       )
+    b.Handle("GET",         "/{modId:int64}/{apiId:int64}",                             "GetById"       )
+    b.Handle("POST",        "/add",                                                     "Create"        )
+    b.Handle("PUT",         "/update",                                                  "Update"        )
+    b.Handle("PUT",         "/updateStatus/{modId:int64}/{apiId:int64}/{status:int64}", "UpdateStatus"  )
+    b.Handle("DELETE",      "/{modId:int64}/{apiId:int64}",                             "DeleteByID"    )
+}
+
+func (c *ApiController) GetList() *JsonResult {
+    params  := c.buildParams()
+    modId   := c.Ctx.URLParamInt64Default("modId", 0)
+    if modId <= 0 {
+        return ResultErr("参数不完整", nil)
+    }
+    params["modId"] = modId
+    data, err := c.Service.GetList(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiController) GetPage() *JsonResult {
+    params  := c.buildParams()
+    modId   := c.Ctx.URLParamInt64Default("modId", 0)
+    if modId <= 0 {
+        return ResultErr("参数不完整", nil)
+    }
+    
+    params["modId"] = modId
+    data, err := c.Service.GetPage(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiController) GetById(modId, apiId int64) *JsonResult {
+    data, err := c.Service.GetById(modId, apiId)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiController) Create() *JsonResult {
+    userId     := c.GetCurUserId()
+    
+    api := datamodels.Api{}
+    if err := c.Ctx.ReadJSON(&api); err != nil {
+        return ResultErr("读取数据失败", nil)
+    }
+    
+    api.CreatedBy = userId
+    if err := c.Service.Create(&api); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("新增成功", nil)
+    }
+}
+
+func (c *ApiController) Update() *JsonResult {
+    userId     := c.GetCurUserId()
+    
+    api := datamodels.Api{}
+    if err := c.Ctx.ReadJSON(&api); err != nil {
+        return ResultErr("读取数据失败", nil)
+    }
+    
+    api.UpdatedBy = userId
+    if err := c.Service.Update(&api); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("更新成功", nil)
+    }
+}
+
+func (c *ApiController) UpdateStatus(modId, apiId, status int64)*JsonResult{
+    if err := c.Service.ChangeStatus(modId, apiId, status); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("状态变更成功", nil)
+    }
+}
+
+func (c *ApiController) DeleteByID(modId, apiId int64) *JsonResult {
+    userId := c.GetCurUserId()
+    
+    m := make(map[string]interface{})
+    m["modId"]     = modId
+    m["apiId"]     = apiId
+    m["deletedBy"] = userId
+    if err := c.Service.Delete(m); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("删除成功", nil)
+    }
+}

+ 66 - 0
web/controllers/api_req_controller.go

@@ -0,0 +1,66 @@
+package controllers
+
+import (
+    "github.com/kataras/iris/v12/mvc"
+    "time"
+    "xps/datamodels"
+    "xps/service/paas"
+)
+
+type ApiReqController struct {
+    Base
+    Service paas.ApiReqService
+}
+
+func (c *ApiReqController) BeforeActivation(b mvc.BeforeActivation) {
+    b.Handle("GET",         "/",                              "GetList"       )
+    b.Handle("GET",         "/page",                          "GetPage"       )
+    b.Handle("GET",         "/{reqId:int64}",                 "GetById"       )
+    b.Handle("POST",        "/add",                           "Create"        )
+}
+
+func (c *ApiReqController) GetList() *JsonResult {
+    params  := c.buildParams()
+    data, err := c.Service.GetList(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiReqController) GetPage() *JsonResult {
+    params  := c.buildParams()
+    data, err := c.Service.GetPage(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiReqController) GetById(reqId int64) *JsonResult {
+    data, err := c.Service.GetById(reqId)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ApiReqController) Create() *JsonResult {
+    userId := c.GetCurUserId()
+    
+    req    := datamodels.ApiReq{}
+    if err := c.Ctx.ReadJSON(&req); err != nil {
+        return ResultErr("读取数据失败", nil)
+    }
+    
+    req.ReqTime   = time.Now()
+    req.AccountId = userId
+    if err := c.Service.Create(&req); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("新增成功", nil)
+    }
+}

+ 5 - 5
web/controllers/group_controller.go

@@ -12,11 +12,11 @@ type GroupController struct {
 }
 
 func (c *GroupController) BeforeActivation(b mvc.BeforeActivation) {
-    b.Handle("GET"      ,"/"                                ,"GetList"     )
-    b.Handle("GET"      ,"/groupId:int64}"                  ,"GetById"     )
-    b.Handle("POST"     ,"/add"                             ,"Create"      )
-    b.Handle("PUT"      ,"/update"                          ,"Update"      )
-    b.Handle("DELETE"   ,"/{groupId:int64}"                 ,"DeleteById"  )
+    b.Handle("GET"      ,"/"                         ,"GetList"     )
+    b.Handle("GET"      ,"/groupId:int64}"           ,"GetById"     )
+    b.Handle("POST"     ,"/add"                      ,"Create"      )
+    b.Handle("PUT"      ,"/update"                   ,"Update"      )
+    b.Handle("DELETE"   ,"/{groupId:int64}"          ,"DeleteById"  )
 }
 
 func (c *GroupController)  GetList() *JsonResult {

+ 97 - 0
web/controllers/module_controller.go

@@ -0,0 +1,97 @@
+package controllers
+
+import (
+    "github.com/kataras/iris/v12/mvc"
+    "xps/datamodels"
+    "xps/service/paas"
+)
+
+type ModuleController struct {
+    Base
+    Service paas.ModuleService
+}
+
+func (c *ModuleController) BeforeActivation(b mvc.BeforeActivation) {
+    b.Handle("GET",         "/",                "GetList"   )
+    b.Handle("GET",         "/page",            "GetPage"   )
+    b.Handle("GET",         "/{modId:int64}",   "GetById"   )
+    b.Handle("POST",        "/add",             "Create"    )
+    b.Handle("PUT",         "/update",          "Update"    )
+    b.Handle("DELETE",      "/{modId:int64}",   "DeleteByID")
+}
+
+func (c *ModuleController) GetList() *JsonResult {
+    params    := c.buildParams()
+    data, err := c.Service.GetList(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ModuleController) GetPage() *JsonResult {
+    params    := c.buildParams()
+    data, err := c.Service.GetPage(params)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ModuleController) GetById(modId int64) *JsonResult {
+    
+    data, err := c.Service.GetById(modId)
+    if err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("获取成功", data)
+    }
+}
+
+func (c *ModuleController) Create() *JsonResult {
+    userId := c.GetCurUserId()
+    
+    mod := datamodels.Module{}
+    mod.CreatedBy = userId
+    if err := c.Ctx.ReadJSON(&mod); err != nil {
+        return ResultErr("读取数据失败", nil)
+    }
+    
+    
+    if err := c.Service.Create(&mod); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("新增成功", nil)
+    }
+}
+
+func (c *ModuleController) Update() *JsonResult {
+    userId := c.GetCurUserId()
+    
+    mod  := datamodels.Module{}
+    if err := c.Ctx.ReadJSON(&mod); err != nil {
+        return ResultErr("读取数据失败", nil)
+    }
+    
+    mod.UpdatedBy = userId
+    if err := c.Service.Update(&mod); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("更新成功", nil)
+    }
+}
+
+func (c *ModuleController) DeleteByID(modId int64) *JsonResult {
+    userId := c.GetCurUserId()
+    
+    m := make(map[string]interface{})
+    m["modId"]   = modId
+    m["deletedBy"] = userId
+    if err := c.Service.Delete(m); err != nil {
+        return ResultErr(err.Error(), nil)
+    } else {
+        return ResultOk("删除成功", nil)
+    }
+}

+ 21 - 0
web/router/routes.go

@@ -7,6 +7,7 @@ import (
 	"xps/bootstrap"
 	"xps/service/daas"
 	"xps/service/model"
+	"xps/service/paas"
 	"xps/service/system"
 	"xps/web/controllers"
 	"xps/web/middleware"
@@ -174,4 +175,24 @@ func Configure(b *bootstrap.Bootstrapper) {
 		dbTypeApp.Register(dbTypeService)
 		dbTypeApp.Handle(new(controllers.DbTypeController))
 	}
+	
+	// PaaS
+	paasParty := b.Party("/paas", crs).AllowMethods(iris.MethodOptions)
+	{
+		paasParty.Use(middleware.AuthToken)
+		moduleService := paas.NewModuleService()
+		moduleApp := mvc.New(paasParty.Party("/module"))
+		moduleApp.Register(moduleService)
+		moduleApp.Handle(new(controllers.ModuleController))
+		
+		apiService := paas.NewApiService()
+		apiApp := mvc.New(paasParty.Party("/api"))
+		apiApp.Register(apiService)
+		apiApp.Handle(new(controllers.ApiController))
+		
+		reqService := paas.NewApiReqService()
+		reqApp := mvc.New(paasParty.Party("/api/request"))
+		reqApp.Register(reqService)
+		reqApp.Handle(new(controllers.ApiReqController))
+	}
 }