package aiSearch import ( "aiChat/api/aiSearch/v1" "app.yhyue.com/moapp/jybase/encrypt" "context" "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" ) func (c *ControllerV1) SessionDetail(ctx context.Context, req *v1.SessionDetailReq) (res *v1.SessionDetailRes, err error) { sid := gconv.Int(encrypt.SE.Decode4HexByCheck(req.Sid)) results, err := g.Model("ai_search_chat").Where("session_id = ? and status = 1", sid).OrderDesc("create_time").All() if err != nil { g.Log().Error(ctx, "会话详情查询异常:%s", err) return nil, gerror.NewCode(gcode.CodeInternalError) } list := make([]*v1.SsDetailList, 0) for _, r := range results { item := &v1.SsDetailList{} r1 := r.Map() item.Id = encrypt.SE.Encode2HexByCheck(gconv.String(r1["id"])) item.Question = gconv.String(r1["question"]) item.Like = gconv.Int(r1["like"]) item.Collect = gconv.Int(r1["collect"]) item.CreateTime = *gconv.GTime(r1["create_time"]) blist := make([]*v1.ResBidding, 0) for _, v := range gconv.Maps(r1["answer"]) { bidding := &v1.ResBidding{} _ = gconv.Struct(v, bidding) bidding.InfoId = encrypt.SE.Encode2HexByCheck(bidding.InfoId) blist = append(blist, bidding) } item.Answer = &v1.ChatRes{ Status: gconv.Int(r1["answer_status"]), Count: gconv.Int(r1["list_count"]), List: blist, } list = append(list, item) } res = &v1.SessionDetailRes{ Data: list, } return res, nil }