2024-07-02 17:37:50 +08:00

89 lines
1.7 KiB
Go

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
}