package controller 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{} // GetBaseTokenItemPage 获取列表-分页 func (r *BaseTokenItem) GetBaseTokenItemPage(c *gin.Context) { baseTokenItemRequest := requests.BaseTokenItemRequest{} req := baseTokenItemRequest.GetBaseTokenItemPage 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 } if req.Page == 0 { req.Page = 1 } if req.PageSize == 0 { req.PageSize = 20 } baseTokenItemDao := dao.BaseTokenItemDao{} baseTokenItem, total, err := baseTokenItemDao.GetBaseTokenItemPageSearch(req, req.Page, req.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetBaseTokenItemListDto(baseTokenItem) result := make(map[string]interface{}) result["page"] = req.Page result["page_size"] = req.PageSize result["total"] = total result["data"] = g responses.OkWithData(result, c) } // GetBaseTokenItemList 获取列表 func (r *BaseTokenItem) GetBaseTokenItemList(c *gin.Context) { baseTokenItemRequest := requests.BaseTokenItemRequest{} req := baseTokenItemRequest.GetBaseTokenItemList 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 } baseTokenItemDao := dao.BaseTokenItemDao{} baseTokenItem, err := baseTokenItemDao.GetBaseTokenItemListSearch(req) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetBaseTokenItemListDto(baseTokenItem) if err != nil { responses.FailWithMessage(err.Error(), c) return } 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) }