account-server/internal/controller/api/template.go

200 lines
5.8 KiB
Go

package api
import (
"github.com/gin-gonic/gin"
"github.com/viletyy/yolk/convert"
"gitlink.org.cn/Gitlink/account-server/global"
"gitlink.org.cn/Gitlink/account-server/internal/service"
"gitlink.org.cn/Gitlink/account-server/pkg/app"
"gitlink.org.cn/Gitlink/account-server/pkg/errcode"
"gorm.io/gorm"
)
type Template struct{}
func NewTemplate() Template {
return Template{}
}
// @Summary 数据列表
// @Tags templates
// @Description 一段描述
// @Accept json
// @Produce json
// @Param page query int false "页码"
// @Param page_size query int false "每页数量"
// @Param name query string false "名称搜索" maxlength(100)
// @Param uuid query int false "uuid搜索"
// @Success 200 {object} model.Template "请求成功"
// @Router /templates [get]
func (template Template) List(c *gin.Context) {
param := service.TemplateListRequest{}
response := app.NewResponse(c)
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
paper := app.Pager{Page: app.GetPage(c), PageSize: app.GetPageSize(c)}
total, err := svc.CountTemplate(&service.CountTemplateRequest{Name: param.Name, Uuid: param.Uuid})
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.CountTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorCountFail)
return
}
templates, err := svc.GetTemplateList(&param, &paper)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.GetTemplateList err: %v", err)
response.ToErrorResponse(errcode.ErrorGetListFail)
return
}
response.ToResponseList(templates, total)
}
// @Summary 获取单个模板
// @Tags templates
// @Description 这是一段描述
// @Accept json
// @Produce json
// @Param id path int true "ID"
// @Success 200 {object} model.Template "请求成功"
// @Router /templates/{id} [get]
func (template Template) Get(c *gin.Context) {
templateID, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.TemplateRequest{ID: templateID}
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
dbTemplate, err := svc.GetTemplate(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.GetTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorGetFail)
return
}
response.ToResponse(dbTemplate)
}
// @Summary 新增一条模板数据
// @Tags templates
// @Description
// @Accept mpfd
// @Produce json
// @Param name formData string true "名称" minlength(1) maxlength(100)
// @Param uuid formData int false "uuid"
// @Success 200 {object} model.Template "请求成功"
// @Router /templates [post]
func (template Template) Create(c *gin.Context) {
param := service.CreateTemplateRequest{}
response := app.NewResponse(c)
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs.Errors())
return
}
svc := service.New(c.Request.Context())
dbTemplate, err := svc.CreateTemplate(&param)
if err != nil {
global.GO_LOG.Sugar().Errorf("svc.CreateTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorCreateFail)
return
}
response.ToResponse(dbTemplate)
}
// @Summary 修改模板数据
// @Tags templates
// @Description
// @Accept mpfd
// @Produce json
// @Param id path int true "ID"
// @Param name formData string false "名称" minlength(1) maxlength(100)
// @Param uuid formData int false "uuid"
// @Success 200 {object} model.Template "请求成功"
// @Router /templates/{id} [patch]
func (template Template) Update(c *gin.Context) {
templateID, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.UpdateTemplateRequest{ID: templateID}
valid, errs := app.BindAndValid(c, &param)
if !valid {
global.GO_LOG.Sugar().Errorf("app.BindAndValid errs: %v", errs)
response.ToResponseErrors(errs)
return
}
svc := service.New(c.Request.Context())
dbTemplate, err := svc.UpdateTemplate(&param)
if err != nil {
if err == gorm.ErrRecordNotFound {
global.GO_LOG.Sugar().Errorf("svc.UpdateTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorGetFail)
return
} else {
global.GO_LOG.Sugar().Errorf("svc.UpdateTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorUpdateFail)
return
}
}
response.ToResponse(dbTemplate)
}
// @Summary 删除一条数据
// @Tags templates
// @Description
// @Accept json
// @Produce json
// @Param id path int true "ID"
// @Success 200 {object} model.Template "请求成功"
// @Router /templates/{id} [delete]
func (template Template) Delete(c *gin.Context) {
templateId, err := convert.StrTo(c.Param("id")).Int64()
response := app.NewResponse(c)
if err != nil {
global.GO_LOG.Sugar().Errorf("convert.StrTo err: %v", err)
response.ToErrorResponse(errcode.InvalidParams)
return
}
param := service.DeleteTemplateRequest{ID: templateId}
svc := service.New(c.Request.Context())
dbTemplate, err := svc.DeleteTemplate(&param)
if err != nil {
if err == gorm.ErrRecordNotFound {
global.GO_LOG.Sugar().Errorf("svc.DeleteTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorGetFail)
return
} else {
global.GO_LOG.Sugar().Errorf("svc.DeleteTemplate err: %v", err)
response.ToErrorResponse(errcode.ErrorDeleteFail)
return
}
}
errcode.Success.Data = dbTemplate
response.ToErrorResponse(errcode.Success)
}