micro-account/pkg/dao/chatAutoReplyRulerDao.go
2025-06-12 17:17:38 +08:00

127 lines
3.6 KiB
Go

// Package dao -----------------------------
// @author : JJXu
// @contact : wavingbear@163.com
// @time : 2025-06-12 09:22:01
// -------------------------------------------
package dao
import (
"errors"
"fmt"
"github.com/fonchain_enterprise/micro-account/api/accountFiee"
"github.com/fonchain_enterprise/micro-account/pkg/common/db"
"github.com/fonchain_enterprise/micro-account/pkg/m"
"github.com/fonchain_enterprise/micro-account/pkg/model"
)
type chatAutoReplyRulerDao struct {
}
var ChatAutoReplyRulerDao = new(chatAutoReplyRulerDao)
// 创建自动回复规则
func (chatAutoReplyRulerDao) CreateChatAutoReplyRuler(data *model.ChatAutoReplyRuler) error {
return model.DB.Create(data).Error
}
// 删除自动回复规则
func (chatAutoReplyRulerDao) DeleteChatAutoReplyRulers(id int64, ids []int64) (err error) {
if id != 0 {
err = model.DB.Delete(&model.ChatAutoReplyRuler{}, id).Error
} else if len(ids) > 0 {
err = model.DB.Delete(&model.ChatAutoReplyRuler{}, ids).Error
}
if err != nil {
//log.L().Error("CreateChatAutoReplyRuler Err", zap.Error(err))
err = errors.New(m.DBError)
}
return nil
}
// 更新自动回复规则
func (chatAutoReplyRulerDao) UpdateChatAutoReplyRuler(data *model.ChatAutoReplyRuler) (err error) {
var thisData model.ChatAutoReplyRuler
if err = model.DB.First(&thisData, "id = ?", data.ID).Error; err != nil {
return err
}
if data.ID != 0 {
thisData.ID = data.ID
}
if data.Title != "" {
thisData.Title = data.Title
}
if data.Ruler != "" {
thisData.Ruler = data.Ruler
}
if data.RulerStatus != 0 {
thisData.RulerStatus = data.RulerStatus
}
if err = model.DB.Updates(&thisData).Error; err != nil {
return err
}
//更新关联关系
return
}
// 覆盖自动回复规则
func (chatAutoReplyRulerDao) SaveChatAutoReplyRuler(data *model.ChatAutoReplyRuler) (err error) {
if err = model.DB.Omit("created_at,deleted_at").Save(&data).Error; err != nil {
return err
}
//更新关联关系
return
}
// 使用map更新自动回复规则
func (chatAutoReplyRulerDao) UpdateUseMap(id string, updateMap map[string]any) (err error) {
if err = model.DB.Model(&model.ChatAutoReplyRuler{}).Where("id =?", id).Updates(&updateMap).Error; err != nil {
return err
}
return
}
// 使用id查询自动回复规则
func (chatAutoReplyRulerDao) GetChatAutoReplyRulerById(id int) (res model.ChatAutoReplyRuler, err error) {
err = model.DB.Where("id = ?", id).First(&res).Error
if err != nil {
//log.L().Error("GetChatAutoReplyRuler Err", zap.Error(err))
err = errors.New(m.DBError)
}
return
}
// 批量查询自动回复规则
func (chatAutoReplyRulerDao) GetChatAutoReplyRulerList(info *accountFiee.GetChatAutoReplyRulerListRequest) (resp []model.ChatAutoReplyRuler, total int64, err error) {
var dbQuery = model.DB.Model(&model.ChatAutoReplyRuler{})
if info.Query != nil {
if info.Query.ID != 0 {
dbQuery = dbQuery.Where(" = ?", info.Query.ID)
}
if info.Query.Title != "" {
dbQuery = dbQuery.Where(fmt.Sprintf("title like '%%%v%%'", info.Query.Title))
}
if info.Query.Ruler != "" {
dbQuery = dbQuery.Where("ruler =?", info.Query.Ruler)
}
if info.Query.RulerStatus != 0 {
dbQuery = dbQuery.Where("ruler_status = ?", info.Query.RulerStatus)
}
}
if info.Where != "" {
dbQuery = dbQuery.Where(info.Where)
}
if info.Order != "" {
dbQuery = dbQuery.Order(info.Order)
}
//数据查询
dbQuery.Count(&total)
err = dbQuery.Scopes(db.Pagination(info.Page, info.PageSize)).Find(&resp).Error
if err != nil {
//log.L().Error("GetChatAutoReplyRulerList Err", zap.Error(err))
err = errors.New(m.DBError)
}
return
}