Browse Source

#2908

update
medal-v1
chenyifan01 2 years ago
parent
commit
a83afede2f
6 changed files with 60 additions and 36 deletions
  1. +9
    -5
      models/badge.go
  2. +5
    -4
      routers/badge/badge.go
  3. +3
    -3
      routers/badge/category.go
  4. +3
    -0
      routers/response/response_list.go
  5. +21
    -13
      services/badge/badge.go
  6. +19
    -11
      services/badge/category.go

+ 9
- 5
models/badge.go View File

@@ -30,8 +30,9 @@ func (m *Badge) ToUserShow() *Badge4UserShow {
} }


type GetBadgeOpts struct { type GetBadgeOpts struct {
BadgeType BadgeType
LO ListOptions
BadgeType BadgeType
CategoryId int64
ListOpts ListOptions
} }


type BadgeAndCategory struct { type BadgeAndCategory struct {
@@ -118,19 +119,22 @@ type UserAllBadgeInCategory struct {
} }


func GetBadgeList(opts GetBadgeOpts) (int64, []*BadgeAndCategory, error) { func GetBadgeList(opts GetBadgeOpts) (int64, []*BadgeAndCategory, error) {
if opts.LO.Page <= 0 {
opts.LO.Page = 1
if opts.ListOpts.Page <= 0 {
opts.ListOpts.Page = 1
} }
var cond = builder.NewCond() var cond = builder.NewCond()
if opts.BadgeType > 0 { if opts.BadgeType > 0 {
cond = cond.And(builder.Eq{"badge_category.type": opts.BadgeType}) cond = cond.And(builder.Eq{"badge_category.type": opts.BadgeType})
} }
if opts.CategoryId > 0 {
cond = cond.And(builder.Eq{"badge_category.id": opts.CategoryId})
}
n, err := x.Join("INNER", "badge_category", "badge_category.ID = badge.category_id").Where(cond).Count(&BadgeAndCategory{}) n, err := x.Join("INNER", "badge_category", "badge_category.ID = badge.category_id").Where(cond).Count(&BadgeAndCategory{})
if err != nil { if err != nil {
return 0, nil, err return 0, nil, err
} }
r := make([]*BadgeAndCategory, 0) r := make([]*BadgeAndCategory, 0)
if err = x.Join("INNER", "badge_category", "badge_category.ID = badge.category_id").Where(cond).OrderBy("badge.created_unix desc").Limit(opts.LO.PageSize, (opts.LO.Page-1)*opts.LO.PageSize).Find(&r); err != nil {
if err = x.Join("INNER", "badge_category", "badge_category.ID = badge.category_id").Where(cond).OrderBy("badge.created_unix desc").Limit(opts.ListOpts.PageSize, (opts.ListOpts.Page-1)*opts.ListOpts.PageSize).Find(&r); err != nil {
return 0, nil, err return 0, nil, err
} }
return n, r, nil return n, r, nil


+ 5
- 4
routers/badge/badge.go View File

@@ -15,8 +15,9 @@ import (


func GetCustomizeBadgeList(ctx *context.Context) { func GetCustomizeBadgeList(ctx *context.Context) {
page := ctx.QueryInt("page") page := ctx.QueryInt("page")
category := ctx.QueryInt64("category")
pageSize := 50 pageSize := 50
n, r, err := badge.GetBadgeList(models.GetBadgeOpts{BadgeType: models.CustomizeBadge, LO: models.ListOptions{PageSize: pageSize, Page: page}})
n, r, err := badge.GetBadgeList(models.GetBadgeOpts{CategoryId: category, BadgeType: models.CustomizeBadge, ListOpts: models.ListOptions{PageSize: pageSize, Page: page}})
if err != nil { if err != nil {
log.Error("GetCustomizeBadgeList error.%v", err) log.Error("GetCustomizeBadgeList error.%v", err)
ctx.JSON(http.StatusOK, response.ServerError(err.Error())) ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
@@ -32,7 +33,7 @@ func GetCustomizeBadgeList(ctx *context.Context) {
func OperateBadge(ctx *context.Context, req models.BadgeOperateReq) { func OperateBadge(ctx *context.Context, req models.BadgeOperateReq) {
action := ctx.Params(":action") action := ctx.Params(":action")


var err error
var err *response.BizError
switch action { switch action {
case "edit": case "edit":
err = badge.EditBadge(req, ctx.User) err = badge.EditBadge(req, ctx.User)
@@ -41,12 +42,12 @@ func OperateBadge(ctx *context.Context, req models.BadgeOperateReq) {
case "del": case "del":
err = badge.DelBadge(req.ID, ctx.User) err = badge.DelBadge(req.ID, ctx.User)
default: default:
err = errors.New("action type error")
err = response.NewBizError(errors.New("action type error"))
} }


if err != nil { if err != nil {
log.Error("OperateBadge error ,%v", err) log.Error("OperateBadge error ,%v", err)
ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
ctx.JSON(http.StatusOK, response.ResponseError(err))
return return
} }
ctx.JSON(http.StatusOK, response.Success()) ctx.JSON(http.StatusOK, response.Success())


+ 3
- 3
routers/badge/category.go View File

@@ -29,7 +29,7 @@ func GetBadgeCategoryList(ctx *context.Context) {
func OperateBadgeCategory(ctx *context.Context, category models.BadgeCategory4Show) { func OperateBadgeCategory(ctx *context.Context, category models.BadgeCategory4Show) {
action := ctx.Params(":action") action := ctx.Params(":action")


var err error
var err *response.BizError
switch action { switch action {
case "edit": case "edit":
err = badge.EditBadgeCategory(category, ctx.User) err = badge.EditBadgeCategory(category, ctx.User)
@@ -38,12 +38,12 @@ func OperateBadgeCategory(ctx *context.Context, category models.BadgeCategory4Sh
case "del": case "del":
err = badge.DelBadgeCategory(category.ID, ctx.User) err = badge.DelBadgeCategory(category.ID, ctx.User)
default: default:
err = errors.New("action type error")
err = response.NewBizError(errors.New("action type error"))
} }


if err != nil { if err != nil {
log.Error("OperateBadgeCategory error ,%v", err) log.Error("OperateBadgeCategory error ,%v", err)
ctx.JSON(http.StatusOK, response.ServerError(err.Error()))
ctx.JSON(http.StatusOK, response.ResponseError(err))
return return
} }
ctx.JSON(http.StatusOK, response.Success()) ctx.JSON(http.StatusOK, response.Success())


+ 3
- 0
routers/response/response_list.go View File

@@ -3,3 +3,6 @@ package response
var RESOURCE_QUEUE_NOT_AVAILABLE = &BizError{Code: 1001, Err: "resource queue not available"} var RESOURCE_QUEUE_NOT_AVAILABLE = &BizError{Code: 1001, Err: "resource queue not available"}
var SPECIFICATION_NOT_EXIST = &BizError{Code: 1002, Err: "specification not exist"} var SPECIFICATION_NOT_EXIST = &BizError{Code: 1002, Err: "specification not exist"}
var SPECIFICATION_NOT_AVAILABLE = &BizError{Code: 1003, Err: "specification not available"} var SPECIFICATION_NOT_AVAILABLE = &BizError{Code: 1003, Err: "specification not available"}

var CATEGORY_STILL_HAS_BADGES = &BizError{Code: 1004, Err: "Please delete badges in the category first"}
var BADGES_STILL_HAS_USERS = &BizError{Code: 1005, Err: "Please delete users of badge first"}

+ 21
- 13
services/badge/badge.go View File

@@ -3,6 +3,7 @@ package badge
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/routers/response"
"code.gitea.io/gitea/services/admin/operate_log" "code.gitea.io/gitea/services/admin/operate_log"
"errors" "errors"
) )
@@ -23,50 +24,57 @@ func GetBadgeList(opts models.GetBadgeOpts) (int64, []*models.Badge4AdminShow, e
return total, r, nil return total, r, nil
} }


func AddBadge(m models.BadgeOperateReq, doer *models.User) error {
func AddBadge(m models.BadgeOperateReq, doer *models.User) *response.BizError {
_, err := models.GetBadgeCategoryById(m.CategoryId) _, err := models.GetBadgeCategoryById(m.CategoryId)


if err != nil { if err != nil {
if models.IsErrRecordNotExist(err) { if models.IsErrRecordNotExist(err) {
return errors.New("badge category is not available")
return response.NewBizError(errors.New("badge category is not available"))
} }
return err
return response.NewBizError(err)
} }
_, err = models.AddBadge(m.ToDTO()) _, err = models.AddBadge(m.ToDTO())
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
operate_log.Log4Add(operate_log.BadgeOperate, m, doer.ID, "新增了勋章") operate_log.Log4Add(operate_log.BadgeOperate, m, doer.ID, "新增了勋章")
return nil return nil
} }


func EditBadge(m models.BadgeOperateReq, doer *models.User) error {
func EditBadge(m models.BadgeOperateReq, doer *models.User) *response.BizError {
if m.ID == 0 { if m.ID == 0 {
log.Error(" EditBadge param error") log.Error(" EditBadge param error")
return errors.New("param error")
return response.NewBizError(errors.New("param error"))
} }
old, err := models.GetBadgeById(m.ID) old, err := models.GetBadgeById(m.ID)
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
_, err = models.UpdateBadgeById(m.ID, m.ToDTO()) _, err = models.UpdateBadgeById(m.ID, m.ToDTO())
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
operate_log.Log4Edit(operate_log.BadgeOperate, old, m.ToDTO(), doer.ID, "修改了勋章") operate_log.Log4Edit(operate_log.BadgeOperate, old, m.ToDTO(), doer.ID, "修改了勋章")
return err
return nil
} }


func DelBadge(id int64, doer *models.User) error {
func DelBadge(id int64, doer *models.User) *response.BizError {
if id == 0 { if id == 0 {
log.Error(" DelBadge param error") log.Error(" DelBadge param error")
return errors.New("param error")
return response.NewBizError(errors.New("param error"))
} }
old, err := models.GetBadgeById(id) old, err := models.GetBadgeById(id)
if err != nil { if err != nil {
return err
return response.NewBizError(err)
}
n, _, err := models.GetBadgeUsers(id, models.ListOptions{PageSize: 1, Page: 1})
if err != nil {
return response.NewBizError(err)
}
if n > 0 {
return response.BADGES_STILL_HAS_USERS
} }
_, err = models.DelBadge(id) _, err = models.DelBadge(id)
operate_log.Log4Del(operate_log.BadgeOperate, old, doer.ID, "删除了勋章") operate_log.Log4Del(operate_log.BadgeOperate, old, doer.ID, "删除了勋章")
return err
return nil
} }

+ 19
- 11
services/badge/category.go View File

@@ -3,6 +3,7 @@ package badge
import ( import (
"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/routers/response"
"code.gitea.io/gitea/services/admin/operate_log" "code.gitea.io/gitea/services/admin/operate_log"
"errors" "errors"
) )
@@ -23,42 +24,49 @@ func GetBadgeCategoryList(opts models.ListOptions) (int64, []*models.BadgeCatego
return total, r, nil return total, r, nil
} }


func AddBadgeCategory(m models.BadgeCategory4Show, doer *models.User) error {
func AddBadgeCategory(m models.BadgeCategory4Show, doer *models.User) *response.BizError {
_, err := models.AddBadgeCategory(m.ToDTO()) _, err := models.AddBadgeCategory(m.ToDTO())
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
operate_log.Log4Add(operate_log.BadgeCategoryOperate, m, doer.ID, "新增了勋章分类") operate_log.Log4Add(operate_log.BadgeCategoryOperate, m, doer.ID, "新增了勋章分类")
return nil return nil
} }


func EditBadgeCategory(m models.BadgeCategory4Show, doer *models.User) error {
func EditBadgeCategory(m models.BadgeCategory4Show, doer *models.User) *response.BizError {
if m.ID == 0 { if m.ID == 0 {
log.Error(" EditBadgeCategory param error") log.Error(" EditBadgeCategory param error")
return errors.New("param error")
return response.NewBizError(errors.New("param error"))
} }
old, err := models.GetBadgeCategoryById(m.ID) old, err := models.GetBadgeCategoryById(m.ID)
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
_, err = models.UpdateBadgeCategoryById(m.ID, m.ToDTO()) _, err = models.UpdateBadgeCategoryById(m.ID, m.ToDTO())
if err != nil { if err != nil {
return err
return response.NewBizError(err)
} }
operate_log.Log4Edit(operate_log.BadgeCategoryOperate, old, m.ToDTO(), doer.ID, "修改了勋章分类") operate_log.Log4Edit(operate_log.BadgeCategoryOperate, old, m.ToDTO(), doer.ID, "修改了勋章分类")
return err
return nil
} }


func DelBadgeCategory(id int64, doer *models.User) error {
func DelBadgeCategory(id int64, doer *models.User) *response.BizError {
if id == 0 { if id == 0 {
log.Error(" DelBadgeCategory param error") log.Error(" DelBadgeCategory param error")
return errors.New("param error")
return response.NewBizError(errors.New("param error"))
} }
old, err := models.GetBadgeCategoryById(id) old, err := models.GetBadgeCategoryById(id)
if err != nil { if err != nil {
return err
return response.NewBizError(err)
}
badges, err := models.GetBadgeByCategoryId(id)
if err != nil {
return response.NewBizError(err)
}
if len(badges) > 0 {
return response.CATEGORY_STILL_HAS_BADGES
} }
_, err = models.DelBadgeCategory(id) _, err = models.DelBadgeCategory(id)
operate_log.Log4Del(operate_log.BadgeCategoryOperate, old, doer.ID, "删除了勋章分类") operate_log.Log4Del(operate_log.BadgeCategoryOperate, old, doer.ID, "删除了勋章分类")
return err
return nil
} }

Loading…
Cancel
Save