diff --git a/api/controller/BaseToken.go b/api/controller/BaseToken.go index b448ff8..d9b7d71 100644 --- a/api/controller/BaseToken.go +++ b/api/controller/BaseToken.go @@ -91,7 +91,7 @@ func (r *BaseToken) GetTokenList(c *gin.Context) { func (r *BaseToken) AddBaseToken(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.AddBaseToken - if err := c.ShouldBindJSON(&req); err != nil { + if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } @@ -122,23 +122,6 @@ func (r *BaseToken) AddBaseToken(c *gin.Context) { return } - // 新增飞花令明细 - baseTokenItemDao := dao.BaseTokenItemDao{} - for _, item := range req.BaseTokenItem { - baseTokenItem := &model.BaseTokenItem{ - TokenId: baseToken.TokenId, - ItemName: item.ItemName, - ItemImage: utils.RemoveOssDomain(item.ItemImage), - ItemSort: item.ItemSort, - } - baseTokenItem, err := baseTokenItemDao.AddBaseTokenItem(tx, baseTokenItem) - if err != nil { - tx.Rollback() - responses.FailWithMessage("新增失败", c) - return - } - } - tx.Commit() responses.Ok(c) } @@ -147,7 +130,7 @@ func (r *BaseToken) AddBaseToken(c *gin.Context) { func (r *BaseToken) PutBaseToken(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.PutBaseToken - if err := c.ShouldBindJSON(&req); err != nil { + if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } @@ -201,31 +184,6 @@ func (r *BaseToken) PutBaseToken(c *gin.Context) { } } - // 删除明细 - baseTokenItemDao := dao.BaseTokenItemDao{} - err = baseTokenItemDao.DeleteBaseTokenItemByTokenId(tx, baseToken.TokenId) - if err != nil { - tx.Rollback() - responses.FailWithMessage("修改失败", c) - return - } - - // 新增飞花令明细 - for _, item := range req.BaseTokenItem { - baseTokenItem := &model.BaseTokenItem{ - TokenId: baseToken.TokenId, - ItemName: item.ItemName, - ItemImage: utils.RemoveOssDomain(item.ItemImage), - ItemSort: item.ItemSort, - } - baseTokenItem, err := baseTokenItemDao.AddBaseTokenItem(tx, baseTokenItem) - if err != nil { - tx.Rollback() - responses.FailWithMessage("修改失败", c) - return - } - } - tx.Commit() responses.Ok(c) } diff --git a/api/controller/BaseTokenItem.go b/api/controller/BaseTokenItem.go index ec210ea..67cd05a 100644 --- a/api/controller/BaseTokenItem.go +++ b/api/controller/BaseTokenItem.go @@ -4,10 +4,12 @@ import ( "github.com/gin-gonic/gin" "knowledge/api/dao" "knowledge/api/dto" + "knowledge/api/model" "knowledge/api/requests" "knowledge/api/responses" "knowledge/global" "knowledge/utils" + "strconv" ) type BaseTokenItem struct{} @@ -84,3 +86,174 @@ func (r *BaseTokenItem) GetBaseTokenItemList(c *gin.Context) { responses.OkWithData(g, c) } + +// AddBaseTokenItem 新增 +func (r *BaseTokenItem) AddBaseTokenItem(c *gin.Context) { + baseTokenItemRequest := requests.BaseTokenItemRequest{} + req := baseTokenItemRequest.AddBaseTokenItem + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + // 开始事务 + tx := global.Db.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 获取飞花令数据 + tokenId, err := strconv.ParseInt(req.TokenId, 10, 64) + if err != nil { + tx.Rollback() + responses.Fail(c) + return + } + + baseTokenDao := dao.BaseTokenDao{} + baseToken, err := baseTokenDao.GetBaseTokenById(tokenId) + if err != nil { + tx.Rollback() + responses.FailWithMessage("飞花令错误", c) + return + } + + // 新增飞花令明细 + baseTokenItemDao := dao.BaseTokenItemDao{} + baseTokenItem := &model.BaseTokenItem{ + TokenId: baseToken.TokenId, + ItemName: req.ItemName, + ItemImage: utils.RemoveOssDomain(req.ItemImage), + ItemSort: req.ItemSort, + } + baseTokenItem, err = baseTokenItemDao.AddBaseTokenItem(tx, baseTokenItem) + if err != nil { + tx.Rollback() + responses.FailWithMessage("新增失败", c) + return + } + + tx.Commit() + responses.Ok(c) +} + +// PutBaseTokenItem 修改 +func (r *BaseTokenItem) PutBaseTokenItem(c *gin.Context) { + baseTokenItemRequest := requests.BaseTokenItemRequest{} + req := baseTokenItemRequest.PutBaseTokenItem + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + id := c.Param("item_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + itemId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 获取详情 + baseTokenItemDao := dao.BaseTokenItemDao{} + baseTokenItem, err := baseTokenItemDao.GetBaseTokenItemById(itemId) + if err != nil { + responses.FailWithMessage("数据不存在", c) + return + } + + // 开始事务 + tx := global.Db.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + baseTokenItemData := make(map[string]interface{}) + if req.ItemName != baseTokenItem.ItemName { + baseTokenItemData["item_name"] = req.ItemName + } + + if req.ItemSort != baseTokenItem.ItemSort { + baseTokenItemData["item_sort"] = req.ItemSort + } + + itemImage := utils.RemoveOssDomain(req.ItemImage) + if itemImage != baseTokenItem.ItemImage { + baseTokenItemData["item_image"] = itemImage + } + + if len(baseTokenItemData) > 0 { + err := baseTokenItemDao.EditBaseTokenItemById(tx, itemId, baseTokenItemData) + if err != nil { + tx.Rollback() + responses.FailWithMessage("修改失败", c) + return + } + } + + tx.Commit() + responses.Ok(c) +} + +// DeleteBaseTokenItem 删除 +func (r *BaseTokenItem) DeleteBaseTokenItem(c *gin.Context) { + id := c.Param("item_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + itemId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 获取详情 + baseTokenItemDao := dao.BaseTokenItemDao{} + _, err = baseTokenItemDao.GetBaseTokenItemById(itemId) + if err != nil { + responses.FailWithMessage("数据不存在", c) + return + } + + // 开始事务 + tx := global.Db.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + err = baseTokenItemDao.DeleteBaseTokenItemById(tx, itemId) + if err != nil { + responses.FailWithMessage("删除失败", c) + return + } + + tx.Commit() + + responses.Ok(c) +} diff --git a/api/requests/BaseToken.go b/api/requests/BaseToken.go index 7ef1eec..51972d9 100644 --- a/api/requests/BaseToken.go +++ b/api/requests/BaseToken.go @@ -21,26 +21,10 @@ type GetTokenList struct { // AddBaseToken 新增 type AddBaseToken struct { - TokenName string `json:"token_name" form:"token_name" label:"名称" validate:"required"` // 名称 - BaseTokenItem []AddBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"明细" validate:"required"` -} - -// AddBaseTokenItem 新增-明细 -type AddBaseTokenItem struct { - ItemName string `json:"item_name" form:"item_name" label:"名称" validate:"required"` - ItemImage string `json:"item_image" form:"item_image" label:"图片地址" validate:"required"` - ItemSort int `json:"item_sort" form:"item_sort" label:"排序(越大越靠前)" validate:"required"` + TokenName string `json:"token_name" form:"token_name" label:"名称" validate:"required"` // 名称 } // PutBaseToken 修改 type PutBaseToken struct { - TokenName string `json:"token_name" form:"token_name" label:"名称" validate:"required"` // 名称 - BaseTokenItem []AddBaseTokenItem `json:"base_token_item" form:"base_token_item" label:"明细" validate:"required"` -} - -// PutBaseTokenItem 修改-明细 -type PutBaseTokenItem struct { - ItemName string `json:"item_name" form:"item_name" label:"名称" validate:"required"` - ItemImage string `json:"item_image" form:"item_image" label:"图片地址" validate:"required"` - ItemSort int `json:"item_sort" form:"item_sort" label:"排序(越大越靠前)" validate:"required"` + TokenName string `json:"token_name" form:"token_name" label:"名称" validate:"required"` // 名称 } diff --git a/api/requests/BaseTokenItem.go b/api/requests/BaseTokenItem.go index ce2daef..279e884 100644 --- a/api/requests/BaseTokenItem.go +++ b/api/requests/BaseTokenItem.go @@ -3,7 +3,8 @@ package requests type BaseTokenItemRequest struct { GetBaseTokenItemPage // 获取列表-分页 GetBaseTokenItemList // 获取列表 - AddItem // 新增 + AddBaseTokenItem // 新增 + PutBaseTokenItem // 修改 } // GetBaseTokenItemPage 获取列表-分页 @@ -20,8 +21,17 @@ type GetBaseTokenItemList struct { ItemName string `json:"item_name" form:"item_name" label:"名称"` } -// AddItem 新增 -type AddItem struct { - TokenId string `json:"token_id" form:"token_id" label:"飞花令id"` - ItemName string `json:"item_name" form:"item_name" label:"名称"` +// AddBaseTokenItem 新增 +type AddBaseTokenItem struct { + TokenId string `json:"token_id" form:"token_id" label:"飞花令id"` + ItemName string `json:"item_name" form:"item_name" label:"名称" validate:"required"` + ItemImage string `json:"item_image" form:"item_image" label:"图片地址" validate:"required"` + ItemSort int `json:"item_sort" form:"item_sort" label:"排序(越大越靠前)" validate:"required"` +} + +// PutBaseTokenItem 修改 +type PutBaseTokenItem struct { + ItemName string `json:"item_name" form:"item_name" label:"名称" validate:"required"` + ItemImage string `json:"item_image" form:"item_image" label:"图片地址" validate:"required"` + ItemSort int `json:"item_sort" form:"item_sort" label:"排序(越大越靠前)" validate:"required"` } diff --git a/api/router/router.go b/api/router/router.go index 4111804..dea5eb0 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -233,6 +233,15 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 获取列表 itemGroup.GET("/list", api.BaseTokenItem.GetBaseTokenItemList) + + // 新增 + itemGroup.POST("", api.BaseTokenItem.AddBaseTokenItem) + + // 修改 + itemGroup.PUT("/:item_id", api.BaseTokenItem.PutBaseTokenItem) + + // 删除 + itemGroup.DELETE("/:item_id", api.BaseTokenItem.DeleteBaseTokenItem) } } }