aiSearch_v1_session_detail.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package aiSearch
  2. import (
  3. "aiChat/api/aiSearch/v1"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "context"
  6. "github.com/gogf/gf/v2/errors/gcode"
  7. "github.com/gogf/gf/v2/errors/gerror"
  8. "github.com/gogf/gf/v2/frame/g"
  9. "github.com/gogf/gf/v2/util/gconv"
  10. )
  11. func (c *ControllerV1) SessionDetail(ctx context.Context, req *v1.SessionDetailReq) (res *v1.SessionDetailRes, err error) {
  12. sid := gconv.Int(encrypt.SE.Decode4HexByCheck(req.Sid))
  13. results, err := g.Model("ai_search_chat").Where("session_id = ? and status = 1", sid).OrderDesc("create_time").All()
  14. if err != nil {
  15. g.Log().Error(ctx, "会话详情查询异常:%s", err)
  16. return nil, gerror.NewCode(gcode.CodeInternalError)
  17. }
  18. list := make([]*v1.SsDetailList, 0)
  19. for _, r := range results {
  20. item := &v1.SsDetailList{}
  21. r1 := r.Map()
  22. item.Id = encrypt.SE.Encode2HexByCheck(gconv.String(r1["id"]))
  23. item.Question = gconv.String(r1["question"])
  24. item.Like = gconv.Int(r1["like"])
  25. item.Collect = gconv.Int(r1["collect"])
  26. item.CreateTime = *gconv.GTime(r1["create_time"])
  27. blist := make([]*v1.ResBidding, 0)
  28. for _, v := range gconv.Maps(r1["answer"]) {
  29. bidding := &v1.ResBidding{}
  30. _ = gconv.Struct(v, bidding)
  31. bidding.Id = encrypt.SE.Encode2HexByCheck(bidding.Id)
  32. blist = append(blist, bidding)
  33. }
  34. item.Answer = &v1.ChatRes{
  35. Status: gconv.Int(r1["answer_status"]),
  36. Count: gconv.Int(r1["list_count"]),
  37. List: blist,
  38. }
  39. list = append(list, item)
  40. }
  41. res = &v1.SessionDetailRes{
  42. Data: list,
  43. }
  44. return res, nil
  45. }