Эх сурвалжийг харах

Merge remote-tracking branch 'origin/feature/v1.0.2' into dev_v1.0.2_wh

WH01243 5 сар өмнө
parent
commit
6c9425abf7

+ 28 - 20
api/aiSearch/v1/aiSearchApi.go

@@ -1,6 +1,9 @@
 package v1
 
-import "github.com/gogf/gf/v2/frame/g"
+import (
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/os/gtime"
+)
 
 type CreateNewSessionReq struct {
 	g.Meta `path:"/session/newCreate" tags:"AiSearch" method:"get" summary:"创建新会话"`
@@ -45,9 +48,16 @@ type SessionDetailReq struct {
 }
 
 type SessionDetailRes struct {
-	ErrorCode int         `json:"errorCode"     dc:"状态码"`
-	ErrorMsg  string      `json:"errorMsg"    dc:"错误信息"`
-	Data      interface{} `json:"data" dc:"返回数据"`
+	Data []*SsDetailList `json:"data" dc:"返回数据"`
+}
+
+type SsDetailList struct {
+	Id         string     `json:"id" dc:"问题id"`
+	Question   string     `json:"question"`
+	Answer     *ChatRes   `json:"answer" dc:"答案列表"`
+	Like       int        `json:"like" dc:"点赞状态"`
+	Collect    int        `json:"collect" dc:"收藏状态"`
+	CreateTime gtime.Time `json:"create_time"`
 }
 
 type ProblemConfigurationReq struct {
@@ -67,7 +77,7 @@ type ChatReq struct {
 }
 
 type ChatRes struct {
-	Status int           `json:"status" dc:"状态;0:服务器繁忙 1:成功"`
+	Status int           `json:"status" dc:"状态;0:服务器繁忙 1:成功"`
 	Count  int           `json:"count" dc:"列表长度"`
 	List   []*ResBidding `json:"list" dc:"答案列表"`
 }
@@ -80,19 +90,17 @@ type BiddingListRes struct {
 	Data []ResBidding `json:"data" dc:"返回数据"`
 }
 type ResBidding struct {
-	InfoId        string `json:"infoId" dc:"内容"`
-	Id            string `json:"id" dc:""`
-	Title         string `json:"title" dc:"标题"`
-	Area          string `json:"area" dc:"地区"`
-	City          string `json:"city" dc:"地区"`
-	District      string `json:"district" dc:"地区"`
-	Subtype       string `json:"subtype" dc:"信息类型"`
-	Industry      string `json:"industry" dc:"信息行业"`
-	Annex         int    `json:"annex" dc:"是否有附件;0:否 1:是"`
-	Subscopeclass string `json:"subscopeclass" dc:"信息行业"`
-	Buyerclass    string `json:"buyerclass" dc:"采购单位行业"`
-	Budget        int64  `json:"budget" dc:"预算"`
-	Bidamount     int64  `json:"bidamount" dc:"中标金额"`
-	Publishtime   int64  `json:"publishtime" dc:"发布时间"`
-	Collect       int    `json:"collect" dc:"是否收藏;0:否 1:是"`
+	InfoId      string `json:"infoId" dc:"标讯id"`
+	Title       string `json:"title" dc:"标题"`
+	Area        string `json:"area" dc:"省份"`
+	City        string `json:"city" dc:"城市"`
+	District    string `json:"district" dc:"区县"`
+	Subtype     string `json:"subtype" dc:"信息类型"`
+	Industry    string `json:"industry" dc:"信息行业"`
+	Annex       int    `json:"annex" dc:"是否有附件;0:否 1:是"`
+	Buyerclass  string `json:"buyerclass" dc:"采购单位行业"`
+	Budget      int64  `json:"budget" dc:"预算"`
+	Bidamount   int64  `json:"bidamount" dc:"中标金额"`
+	Publishtime int64  `json:"publishtime" dc:"发布时间"`
+	Collect     int    `json:"collect" dc:"是否收藏;0:否 1:是"`
 }

+ 3 - 1
go.mod

@@ -1,6 +1,8 @@
 module aiChat
 
-go 1.20
+go 1.21
+
+toolchain go1.23.6
 
 require (
 	app.yhyue.com/moapp/jybase v0.0.0-20250220061341-81c668b6c7ea

+ 9 - 9
internal/controller/aiSearch/aiSearch_v1_chat.go

@@ -32,9 +32,9 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 		return
 	}
 	startTime := gtime.Now().Format("Y-m-d h:m:s.u")
-	success := 0
+	answerStatus := 0
 	prompt := fmt.Sprintf(g.Cfg("ai_search.yaml").MustGet(ctx, "doubaoPrompt").String(), gtime.Now().Format("Ymd"), req.Question)
-	large_model := "doubao"
+	largeModel := "doubao"
 	callLogs := g.List{}
 	content, largeModelReply, err, isLimit := c.doubao(ctx, prompt)
 	if !isLimit {
@@ -46,7 +46,7 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 		}
 		callLogs = append(callLogs, g.Map{
 			"position_id":           sess.PositionId,
-			"large_model":           large_model,
+			"large_model":           largeModel,
 			"large_model_reply":     largeModelReply,
 			"large_model_starttime": startTime,
 			"large_model_endtime":   gtime.Now().Format("Y-m-d h:m:s.u"),
@@ -57,7 +57,7 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 	if isLimit || err != nil {
 		prompt = fmt.Sprintf(g.Cfg("ai_search.yaml").MustGet(ctx, "zhipuPrompt").String(), gtime.Now().Format("Ymd"), req.Question)
 		content, largeModelReply, err, _ = c.zhipu(ctx, prompt)
-		large_model = "zhipu"
+		largeModel = "zhipu"
 		large_model_success := 1
 		error_msg := ""
 		if err != nil {
@@ -66,7 +66,7 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 		}
 		callLogs = append(callLogs, g.Map{
 			"position_id":           sess.PositionId,
-			"large_model":           large_model,
+			"large_model":           largeModel,
 			"large_model_reply":     largeModelReply,
 			"large_model_starttime": startTime,
 			"large_model_endtime":   gtime.Now().Format("Y-m-d h:m:s.u"),
@@ -76,9 +76,9 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 	}
 	large_model_endtime := gtime.Now().Format("Y-m-d h:m:s.u")
 	if err == nil {
-		success = 1
+		answerStatus = 1
 	} else {
-		large_model = ""
+		largeModel = ""
 	}
 	bs, bsErr := bidSearch.NewBidSearch(ctx, sess.PersonId, content)
 	if bsErr != nil {
@@ -113,12 +113,12 @@ func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatR
 			"starttime":           startTime,
 			"large_model_endtime": large_model_endtime,
 			"endtime":             gtime.Now().Format("Y-m-d h:m:s.u"),
-			"success":             success,
 			"es_query":            query,
 			"list_count":          len(list),
 			"session_id":          sid,
 			"status":              1,
-			"large_model":         large_model,
+			"large_model":         largeModel,
+			"answer_status":       answerStatus,
 			"create_time":         gtime.Datetime(),
 		})
 		if chatErr != nil {

+ 2 - 0
internal/controller/aiSearch/aiSearch_v1_history_ss_list.go

@@ -17,6 +17,7 @@ type ChatItem struct {
 	Id           int        `json:"id"`
 	Question     string     `json:"question"`
 	QuestionTime gtime.Time `json:"question_time"`
+	QuestionItem int        `json:"question_Item"`
 }
 
 func (c *ControllerV1) HistorySsList(ctx context.Context, req *v1.HistorySsListReq) (res *v1.HistorySsListRes, err error) {
@@ -46,6 +47,7 @@ func (c *ControllerV1) HistorySsList(ctx context.Context, req *v1.HistorySsListR
 		m1 := g.Map{}
 		m1["id"] = encrypt.SE.Encode2HexByCheck(gconv.String(item.Id))
 		m1["question"] = gconv.String(item.Question)
+		m1["question_item"] = gconv.Int(item.QuestionItem)
 		m1["question_time"] = item.QuestionTime
 		if item.QuestionTime.Truncate(24 * time.Hour).Equal(now) { // 今天
 			today = append(today, m1)

+ 21 - 17
internal/controller/aiSearch/aiSearch_v1_session_detail.go

@@ -4,22 +4,12 @@ import (
 	"aiChat/api/aiSearch/v1"
 	"app.yhyue.com/moapp/jybase/encrypt"
 	"context"
-	"fmt"
 	"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/os/gtime"
 	"github.com/gogf/gf/v2/util/gconv"
 )
 
-type SsDetail struct {
-	Id         int
-	Passport   string
-	Password   string
-	NickName   string
-	CreateTime *gtime.Time
-}
-
 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()
@@ -27,18 +17,32 @@ func (c *ControllerV1) SessionDetail(ctx context.Context, req *v1.SessionDetailR
 		g.Log().Error(ctx, "会话详情查询异常:%s", err)
 		return nil, gerror.NewCode(gcode.CodeInternalError)
 	}
-	list := make([]g.Map, 0)
+	list := make([]*v1.SsDetailList, 0)
 	for _, r := range results {
+		item := &v1.SsDetailList{}
 		r1 := r.Map()
-		r1["id"] = encrypt.SE.Encode2HexByCheck(fmt.Sprint(r1["id"]))
-		r1["session_id"] = encrypt.SE.Encode2HexByCheck(fmt.Sprint(r1["session_id"]))
-		list = append(list, r1)
+		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.Id = encrypt.SE.Encode2HexByCheck(bidding.Id)
+			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{
-		ErrorCode: 0,
-		ErrorMsg:  "",
-		Data:      list,
+		Data: list,
 	}
 	return res, nil
 }