// 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 }