package service import ( "errors" "knowledge/api/dao" "knowledge/api/model" "knowledge/api/requests" "knowledge/global" "strconv" ) type LabelService struct { } // AddLabel 新增标签 func (r *LabelService) AddLabel(req requests.AddLabel) (bool, error) { labelDao := dao.LabelDao{} var parentId int64 if req.LabelLevel != 1 { if req.ParentId == "" || req.ParentId == "0" { return false, errors.New("请填写父级标签") } parentId, err := strconv.ParseInt(req.ParentId, 10, 64) if err != nil { return false, err } _, err = labelDao.GetLabelFirstById(parentId) if err != nil { return false, errors.New("父级标签错误") } } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() // 新增题目 label := &model.Label{ LabelName: req.LabelName, ParentId: parentId, LabelLevel: req.LabelLevel, } label, err := labelDao.AddLabel(tx, label) if err != nil { tx.Rollback() return false, errors.New("新增失败") } tx.Commit() return true, nil } // PutLabel 修改标签 func (r *LabelService) PutLabel(labelId int64, req requests.PutLabel) (bool, error) { labelDao := dao.LabelDao{} _, err := labelDao.GetLabelFirstById(labelId) if err != nil { return false, errors.New("标签不存在") } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() labelData := make(map[string]interface{}) labelData["label_name"] = req.LabelName err = labelDao.EditLabelById(tx, labelId, labelData) if err != nil { tx.Rollback() return false, errors.New(err.Error()) } tx.Commit() return true, nil }