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 BaseToken struct{} // GetTokenPage 获取列表-分页 func (r *BaseToken) GetTokenPage(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.GetTokenPage 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 } baseTokenDao := dao.BaseTokenDao{} baseToken, total, err := baseTokenDao.GetBaseTokenPageSearch(req, req.Page, req.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 GetQuestionPageResponses := dto.GetBaseTokenListDto(baseToken) result := make(map[string]interface{}) result["page"] = req.Page result["page_size"] = req.PageSize result["total"] = total result["data"] = GetQuestionPageResponses responses.OkWithData(result, c) } // GetTokenList 获取列表 func (r *BaseToken) GetTokenList(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.GetTokenList 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 } baseTokenDao := dao.BaseTokenDao{} baseToken, err := baseTokenDao.GetBaseTokenListSearch(req) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetBaseTokenListDto(baseToken) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.OkWithData(g, c) } // AddBaseToken 新增 func (r *BaseToken) AddBaseToken(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.AddBaseToken if err := c.ShouldBindJSON(&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() } }() // 新增飞花令 baseTokenDao := dao.BaseTokenDao{} baseToken := &model.BaseToken{ TokenName: req.TokenName, } baseToken, err := baseTokenDao.AddBaseToken(tx, baseToken) if err != nil { tx.Rollback() responses.FailWithMessage("新增失败", c) 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) } // PutBaseToken 修改 func (r *BaseToken) PutBaseToken(c *gin.Context) { baseTokenRequest := requests.BaseTokenRequest{} req := baseTokenRequest.PutBaseToken if err := c.ShouldBindJSON(&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("token_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 tokenId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取详情 baseTokenDao := dao.BaseTokenDao{} baseToken, err := baseTokenDao.GetBaseTokenById(tokenId) if err != nil { responses.FailWithMessage("数据不存在", c) return } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() baseTokenData := make(map[string]interface{}) if req.TokenName != baseToken.TokenName { baseTokenData["token_name"] = req.TokenName } if len(baseTokenData) > 0 { err := baseTokenDao.EditBaseTokenById(tx, tokenId, baseTokenData) if err != nil { tx.Rollback() responses.FailWithMessage("修改失败", c) return } } // 删除明细 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) }