knowledge-api/api/service/QuestionQaItem.go
2024-07-02 17:37:50 +08:00

85 lines
1.8 KiB
Go

package service
import (
"errors"
"knowledge/api/dao"
"knowledge/api/requests"
"knowledge/global"
"strconv"
)
type QuestionQaItemService struct {
}
// DeleteQuestionQaItem 删除问答题库明细
func (r *QuestionQaItemService) DeleteQuestionQaItem(req requests.DeleteQuestionQaItem) (bool, error) {
questionQaItemDao := dao.QuestionQaItemDao{}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
for _, itemId := range req.ItemId {
// 将字符串转换为int64类型
itemId, err := strconv.ParseInt(itemId, 10, 64)
if err != nil {
tx.Rollback()
return false, errors.New("删除失败")
}
_, err = questionQaItemDao.GetQuestionQaItemById(itemId)
if err != nil {
tx.Rollback()
return false, errors.New("明细不存在")
}
err = questionQaItemDao.DeleteQuestionQaItemById(tx, itemId)
if err != nil {
tx.Rollback()
return false, errors.New("删除失败")
}
}
tx.Commit()
return true, nil
}
// PutQuestionQaItemMust 修改必选
func (r *QuestionQaItemService) PutQuestionQaItemMust(itemId int64, req requests.PutQuestionQaItemMust) (bool, error) {
questionQaItemDao := dao.QuestionQaItemDao{}
questionQaItem, err := questionQaItemDao.GetQuestionQaItemById(itemId)
if err != nil {
return false, errors.New("题目不存在")
}
// 分享密码
if req.IsMustSelect == questionQaItem.IsMustSelect {
return true, nil
}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
questionQaItemData := make(map[string]interface{})
questionQaItemData["is_must_select"] = req.IsMustSelect
err = questionQaItemDao.EditQuestionQaItemById(tx, itemId, questionQaItemData)
if err != nil {
tx.Rollback()
return false, errors.New(err.Error())
}
tx.Commit()
return true, nil
}