127 lines
3.6 KiB
Go
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
|
||
|
}
|