package sop_task import ( "context" "wechat-api/ent/soptask" "wechat-api/ent/wx" "wechat-api/internal/utils/dberrorhandler" "wechat-api/internal/svc" "wechat-api/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type GetBotByTaskIdLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewGetBotByTaskIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetBotByTaskIdLogic { return &GetBotByTaskIdLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx} } func (l *GetBotByTaskIdLogic) GetBotByTaskId(req *types.GetBotByTaskIdReq) (resp *types.GetBotByTaskIdResp, err error) { taskId := req.TaskId task, err := l.svcCtx.DB.SopTask.Query(). Where(soptask.ID(uint64(taskId))). First(l.ctx) if err != nil { l.Error("查询任务失败", err) return nil, dberrorhandler.DefaultEntError(l.Logger, err, req) } if len(task.BotWxidList) == 0 { return &types.GetBotByTaskIdResp{Data: []types.BotList{}}, nil } var list []types.BotList err = l.svcCtx.DB.Wx.Query(). Where(wx.WxidIn(task.BotWxidList...)). Select(wx.FieldWxid, wx.FieldNickname). Scan(l.ctx, &list) if err != nil { l.Error("查询机器人信息失败", err) return nil, err } return &types.GetBotByTaskIdResp{Data: list}, nil }