You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
3.2 KiB
183 lines
3.2 KiB
package role
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
"product/backend/handlers/base"
|
|
"product/backend/models"
|
|
"product/backend/moo/log"
|
|
)
|
|
|
|
// Post 添加
|
|
func Post(ctx *gin.Context) {
|
|
// bind request data
|
|
req := &PostReq{}
|
|
if err := ctx.ShouldBind(&req); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": base.Translate(err),
|
|
})
|
|
return
|
|
}
|
|
|
|
// insert
|
|
model := req.Role
|
|
model.Privs = models.PrivFilter(model.Privs)
|
|
if err := models.RoleRowInsert(&model); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据添加错误",
|
|
})
|
|
return
|
|
}
|
|
|
|
// build response
|
|
row, err := models.RoleRow(model.ID)
|
|
if err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据添加错误",
|
|
})
|
|
return
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
"data": row,
|
|
})
|
|
}
|
|
|
|
// Put 更新全部
|
|
func Put(ctx *gin.Context) {
|
|
// bind request data
|
|
req := &PutReq{}
|
|
if err := ctx.ShouldBind(&req); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": base.Translate(err),
|
|
})
|
|
return
|
|
}
|
|
|
|
// update
|
|
model := req.Role
|
|
model.ID = req.ID
|
|
if model.ID == 1 {
|
|
model.Privs = ""
|
|
} else {
|
|
model.Privs = models.PrivFilter(req.Privs)
|
|
}
|
|
if err := models.RoleRowUpdate(&model); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据更新错误",
|
|
})
|
|
return
|
|
}
|
|
|
|
// build response
|
|
row, err := models.RoleRow(model.ID)
|
|
if err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据更新错误",
|
|
})
|
|
return
|
|
}
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
"data": row,
|
|
})
|
|
}
|
|
|
|
// Delete 删除
|
|
func Delete(ctx *gin.Context) {
|
|
req := &DelReq{}
|
|
if err := req.BindAndInit(ctx); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": base.Translate(err),
|
|
})
|
|
return
|
|
}
|
|
|
|
if err := models.RoleRowDel(req.ID); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据删除错误",
|
|
})
|
|
return
|
|
}
|
|
|
|
// response
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
})
|
|
}
|
|
|
|
// Get 获取
|
|
func Get(ctx *gin.Context) {
|
|
// get request param
|
|
req := &GetReq{}
|
|
if err := req.BindAndInit(ctx); err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": base.Translate(err),
|
|
})
|
|
return
|
|
}
|
|
|
|
if req.ID == 0 { // list
|
|
// fetch rows
|
|
list, total, err := models.RoleRows(req.Pager, true, req.Keyword)
|
|
if err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据未找到",
|
|
})
|
|
return
|
|
}
|
|
|
|
// response
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
"data": gin.H{
|
|
"list": list,
|
|
"total": total,
|
|
"keyword": req.Keyword,
|
|
"pageIndex": req.PageIndex,
|
|
"pageSize": req.PageSize,
|
|
"sortField": req.SortField,
|
|
"sortOrder": req.SortOrder,
|
|
},
|
|
})
|
|
} else {
|
|
// fetch row
|
|
row, err := models.RoleRow(req.ID)
|
|
if err != nil {
|
|
log.Error(err)
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 1,
|
|
"message": "数据未找到",
|
|
})
|
|
return
|
|
}
|
|
|
|
// response
|
|
ctx.JSON(http.StatusOK, gin.H{
|
|
"code": 0,
|
|
"data": row,
|
|
})
|
|
}
|
|
}
|