// Package service - 预制话术服务 // 功能:预制话术的增删改查 package service import ( "context" "customer-server/dao" "customer-server/model/dto" "fmt" "github.com/gogf/gf/v2/util/gconv" ) var ( ScriptedSpeechService = new(scriptedSpeechService) ) type scriptedSpeechService struct{} // Add 添加预制话术 // 参数: ctx - 上下文,req - 添加预制话术请求 // 返回: res - 添加成功后的预制话术ID,err - 错误信息 // 功能: 创建新的预制话术记录 func (s *scriptedSpeechService) Add(ctx context.Context, req *dto.AddScriptedSpeechReq) (res *dto.AddScriptedSpeechRes, err error) { count, err := dao.ScriptedSpeech.Count(ctx, &dto.ListScriptedSpeechReq{ DatasetId: req.DatasetId, SceneType: req.SceneType, }) if err != nil { return } if count > 0 { err = fmt.Errorf("话术场景已存在") return } // 插入数据库 id, err := dao.ScriptedSpeech.Insert(ctx, req) if err != nil { return } res = &dto.AddScriptedSpeechRes{Id: id} return } // Update 更新预制话术 // 参数: ctx - 上下文,req - 更新预制话术请求 // 返回: err - 错误信息 // 功能: 更新预制话术信息 func (s *scriptedSpeechService) Update(ctx context.Context, req *dto.UpdateScriptedSpeechReq) (err error) { _, err = dao.ScriptedSpeech.Update(ctx, req) return } // Delete 删除预制话术 // 参数: ctx - 上下文,req - 删除预制话术请求 // 返回: err - 错误信息 // 功能: 逻辑删除预制话术记录 func (s *scriptedSpeechService) Delete(ctx context.Context, req *dto.DeleteScriptedSpeechReq) (err error) { _, err = dao.ScriptedSpeech.Delete(ctx, req) return } // Get 获取单个预制话术 // 参数: ctx - 上下文,req - 获取预制话术请求 // 返回: res - 预制话术信息,err - 错误信息 // 功能: 根据ID获取单个预制话术详情 func (s *scriptedSpeechService) Get(ctx context.Context, req *dto.GetScriptedSpeechReq) (res *dto.ScriptedSpeechVO, err error) { r, err := dao.ScriptedSpeech.GetById(ctx, req) if err != nil { return } err = gconv.Struct(r, &res) return } // List 获取预制话术列表 // 参数: ctx - 上下文,req - 列表查询请求 // 返回: res - 预制话术列表及分页信息,err - 错误信息 // 功能: 分页查询预制话术记录 func (s *scriptedSpeechService) List(ctx context.Context, req *dto.ListScriptedSpeechReq) (res *dto.ListScriptedSpeechRes, err error) { list, total, err := dao.ScriptedSpeech.List(ctx, req) if err != nil { return } res = &dto.ListScriptedSpeechRes{ Total: total, } err = gconv.Struct(list, &res.List) return }