houyaf 3 лет назад
Родитель
Сommit
2d299206fb

+ 112 - 0
repositories/system/app_repo.go

@@ -0,0 +1,112 @@
+package system
+
+import (
+	"fmt"
+	"time"
+	"xorm.io/xorm"
+	"xps/datamodels"
+	"xps/viewmodels"
+)
+
+type AppRepo struct {
+	engine *xorm.Engine
+}
+
+func NewAppRepo(engine *xorm.Engine) *AppRepo {
+	return &AppRepo{
+		engine: engine,
+	}
+}
+
+func (d *AppRepo) GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+	keywords := m["keywords"].(string)
+	limit := m["limit"].(int)
+	page := m["page"].(int)
+
+	sqlSelect := `SELECT A.*`
+	sqlFrom := `FROM   app   AS A
+                  LEFT  JOIN app_cat AS B ON(A.app_cat_id = B.app_cat_id)`
+	sqlWhere := `WHERE A.deleted_flag = 0 `
+	if keywords != "" {
+		sqlWhere += ` AND A.app_title like ` + "'%" + keywords + "%'"
+	}
+
+	sqlCount := `SELECT COUNT(*) `
+	total, err1 := d.engine.SQL(sqlCount + sqlFrom + sqlWhere).Count(new(datamodels.App))
+	if err1 != nil {
+		return nil, err1
+	}
+
+	sqlOrderBy := " ORDER BY app_id DESC "
+	pageStart := (page - 1) * limit
+	sqlLimit := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
+
+	datalist := make([]datamodels.App, 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 *AppRepo) GetByList(m map[string]interface{}) ([]viewmodels.AppInfo, error) {
+	keywords := m["keywords"].(string)
+
+	sqlSelect := `SELECT     A.* `
+	sqlFrom := `FROM       app   AS A
+                  LEFT  JOIN app_cat AS B ON(A.app_cat_id = B.app_cat_id)`
+	sqlWhere := `WHERE A.deleted_flag = 0 `
+	if keywords != "" {
+		sqlWhere += ` AND   A.app_title like ` + "'%" + keywords + "%'"
+	}
+
+	sqlOrderBy := " ORDER BY app_id DESC "
+	datalist := make([]viewmodels.AppInfo, 0)
+	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+	if err != nil {
+		return nil, err
+	}
+	return datalist, nil
+}
+
+func (d *AppRepo) GetById(ocId int64, appId int64) (*viewmodels.AppInfo, error) {
+	data := &viewmodels.AppInfo{}
+	ok, err := d.engine.Where("app_id = ?", appId).Get(data)
+	if !ok && err == nil {
+		return nil, err
+	} else {
+		return data, nil
+	}
+}
+
+func (d *AppRepo) Create(data *datamodels.App) error {
+	data.CreatedAt = time.Now()
+	_, err := d.engine.Insert(data)
+	return err
+}
+
+func (d *AppRepo) Update(data *datamodels.App) error {
+	appId := data.AppId
+
+	data.UpdatedAt = time.Now()
+	_, err := d.engine.Where("app_id = ?", appId).Update(data)
+	return err
+}
+
+func (d *AppRepo) Delete(m map[string]interface{}) error {
+	appId := m["appId"].(int64)
+	deletedBy := m["deletedBy"].(int64)
+
+	data := &datamodels.App{}
+	data.DeletedFlag = 1
+	data.DeletedBy = deletedBy
+	data.DeletedAt = time.Now()
+	_, err := d.engine.Where("app_id = ?", appId).Update(data)
+	return err
+}

+ 52 - 0
service/system/app_service.go

@@ -0,0 +1,52 @@
+package system
+
+import (
+	"xps/datamodels"
+	"xps/datasource"
+	"xps/repositories/system"
+	"xps/viewmodels"
+)
+
+type AppService interface {
+	GetByList(m map[string]interface{}) ([]viewmodels.AppInfo, error)
+	GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error)
+	GetById(ocId int64, appId int64) (*viewmodels.AppInfo, error)
+	Create(d *datamodels.App) error
+	Update(d *datamodels.App) error
+	Delete(m map[string]interface{}) error
+}
+
+type appService struct {
+	repo *system.AppRepo
+}
+
+func NewAppService() AppService {
+	return &appService{
+		repo: system.NewAppRepo(datasource.InstanceMaster()),
+	}
+}
+
+func (s *appService) GetByList(m map[string]interface{}) ([]viewmodels.AppInfo, error) {
+	return s.repo.GetByList(m)
+}
+
+func (s *appService) GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
+	return s.repo.GetByPage(m)
+}
+
+func (s *appService) GetById(ocId int64, appId int64) (*viewmodels.AppInfo, error) {
+	return s.repo.GetById(ocId, appId)
+}
+
+func (s *appService) Create(App *datamodels.App) error {
+	App.AppId = NewID()
+	return s.repo.Create(App)
+}
+
+func (s *appService) Update(App *datamodels.App) error {
+	return s.repo.Update(App)
+}
+
+func (s *appService) Delete(m map[string]interface{}) error {
+	return s.repo.Delete(m)
+}

+ 0 - 1
viewmodels/access_token.go

@@ -1,6 +1,5 @@
 package viewmodels
 
-// UserToken RoleMember Data Model
 type AccessToken struct {
 	AccessToken string      `json:"accessToken"     `
 	User        interface{} `json:"user"            `

+ 19 - 14
viewmodels/app_info.go

@@ -1,17 +1,22 @@
 package viewmodels
 
-type App struct {
-	AppId     int64  `json:"appId"             xorm:"'app_id'      bigint     pk comment('主键ID')         "`
-	AppCatId  int64  `json:"appCatId"          xorm:"'app_cat_id'      bigint     pk comment('主键ID')         "`
-	AppTitle  string `json:"appTitle"          xorm:"'app_title'   varchar(127)   comment('名称')     "`
-	AppCode   string `json:"appCode"           xorm:"'app_code'    varchar(127)   comment('编码')     "`
-	AppParam  string `json:"appParam"          xorm:"'app_param'   varchar(127)   comment('Param')     "`
-	AppUrl    string `json:"appUrl"            xorm:"'app_url'     varchar(511)   comment('Url')     "`
-	AppLog    string `json:"appLogo"           xorm:"'app_logo'    varchar(255)   comment('Url')     "`
-	Status    int64  `json:"status"            xorm:"'status'      bigint         comment('Status')         "`
-	IfStore   int64  `json:"ifStore"           xorm:"'if_store'      bigint         comment('Status')         "`
-	AppKey    string `json:"appKey"            xorm:"'app_key'     varchar(255)   comment('Url')     "`
-	AppSecret string `json:"appSecret"         xorm:"'app_secret'  varchar(255)   comment('Url')     "`
-	AppDesc   string `json:"appDesc"           xorm:"'app_desc'    varchar(50)   comment('描述')            "`
-	IsFixed   int64  `json:"isFixed"           xorm:"'is_fixed'        int           comment('是否可修改')         "`
+type AppInfo struct {
+	AppId       int64  `json:"appId"             xorm:"'app_id'         bigint     pk   comment('主键ID')     "`
+	AppCatId    int64  `json:"appCatId"          xorm:"'app_cat_id'     bigint     pk   comment('主键ID')     "`
+	AppTitle    string `json:"appTitle"          xorm:"'app_title'      varchar(127)    comment('名称')       "`
+	AppCatTitle string `json:"appCatTitle"       xorm:"'app_cat_title'  varchar(127)    comment('名称')       "`
+	AppCode     string `json:"appCode"           xorm:"'app_code'       varchar(127)    comment('编码')       "`
+	AppParam    string `json:"appParam"          xorm:"'app_param'      varchar(127)    comment('Param')     "`
+	AppUrl      string `json:"appUrl"            xorm:"'app_url'        varchar(511)    comment('Url')       "`
+	AppLog      string `json:"appLogo"           xorm:"'app_logo'       varchar(255)    comment('Url')       "`
+	Status      int64  `json:"status"            xorm:"'status'         bigint          comment('Status')    "`
+	IfStore     int64  `json:"ifStore"           xorm:"'if_store'       bigint          comment('Status')    "`
+	AppKey      string `json:"appKey"            xorm:"'app_key'        varchar(255)    comment('Url')       "`
+	AppSecret   string `json:"appSecret"         xorm:"'app_secret'     varchar(255)    comment('Url')       "`
+	AppDesc     string `json:"appDesc"           xorm:"'app_desc'       varchar(50)     comment('描述')       "`
+	IsFixed     int64  `json:"isFixed"           xorm:"'is_fixed'       int             comment('是否可修改')  "`
+}
+
+func (t *AppInfo) TableName() string {
+	return "app"
 }

+ 101 - 0
web/controllers/app_controller.go

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

+ 5 - 0
web/router/routes.go

@@ -104,6 +104,11 @@ func Configure(b *bootstrap.Bootstrapper) {
 	app := b.Party("/app", crs).AllowMethods(iris.MethodOptions)
 	{
 		app.Use(middleware.AuthToken)
+		appService := system.NewAppService()
+		appApp := mvc.New(app.Party(""))
+		appApp.Register(appService)
+		appApp.Handle(new(controllers.AppController))
+
 		appCatService := system.NewAppCatService()
 		appCatApp := mvc.New(app.Party("/cat"))
 		appCatApp.Register(appCatService)