From 9e71d9a60fc0959c00e49e7e543eecd165e1474b Mon Sep 17 00:00:00 2001
From: laodaming <11058467+laudamine@user.noreply.gitee.com>
Date: Tue, 10 Oct 2023 17:49:47 +0800
Subject: [PATCH 1/4] fix

---
 .../collection/internal/logic/testailogic.go  |  1 +
 .../internal/logic/ws_render_image.go         | 25 ++++++++++++++++---
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/server/collection/internal/logic/testailogic.go b/server/collection/internal/logic/testailogic.go
index aeaa29a6..e3600734 100644
--- a/server/collection/internal/logic/testailogic.go
+++ b/server/collection/internal/logic/testailogic.go
@@ -48,6 +48,7 @@ func (l *TestAiLogic) TestAi(req *types.TestAiReq, userinfo *auth.UserInfo) (res
 			logx.Error("测试异常:", err)
 		}
 	}()
+	//lenAiHost := len(l.svcCtx.Config.)
 	begin := time.Now().UTC().UnixMilli()
 	errChan := make(chan string)
 	w := sync.WaitGroup{}
diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go
index 441bc393..ae1e1417 100644
--- a/server/websocket/internal/logic/ws_render_image.go
+++ b/server/websocket/internal/logic/ws_render_image.go
@@ -34,10 +34,11 @@ type renderProcessor struct {
 // 云渲染属性
 type extendRenderProperty struct {
 	renderChan          chan websocket_data.RenderImageReqMsg //渲染消息入口的缓冲队列
-	renderCtx           context.Context                       //渲染控制上下文(用于切换模板标签/颜色取消之前发送的不相同的任务)
+	renderCtx           context.Context                       //渲染控制上下文(用于切换模板标签/颜色/logo取消之前发送的不相同的任务)
 	renderCtxCancelFunc context.CancelFunc                    //渲染控制上下文取消方法
-	selectColorIndex    int                                   //选择的颜色索引
-	templateTag         string                                //模板标签
+	selectColorIndex    int                                   //选择的颜色索引(用于标记连接当前连接选择的颜色)
+	templateTag         string                                //模板标签 (用于标记连接当前连接选择的模板标签)
+	Logo                string                                //logo地址 (用于标记连接当前连接选择的logo)
 }
 
 // 处理分发到这里的数据
@@ -49,10 +50,22 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
 		logx.Error("invalid format of websocket render image message", err)
 		return
 	}
-	if renderImageData.RenderData.TemplateTag != w.extendRenderProperty.templateTag || renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex {
+	//颜色/模板标签/logo变更
+	ifCancelOldCtx := false
+	if renderImageData.RenderData.TemplateTag != w.extendRenderProperty.templateTag {
+		ifCancelOldCtx = true
+	}
+	if renderImageData.RenderData.TemplateTagColor.SelectedColorIndex != w.extendRenderProperty.selectColorIndex {
+		ifCancelOldCtx = true
+	}
+	if renderImageData.RenderData.Logo != w.extendRenderProperty.Logo {
+		ifCancelOldCtx = true
+	}
+	if ifCancelOldCtx {
 		//赋值
 		w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag
 		w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex
+		w.extendRenderProperty.Logo = renderImageData.RenderData.Logo
 		//让之前的失效
 		w.extendRenderProperty.renderCtxCancelFunc()
 		//重新赋值
@@ -94,6 +107,10 @@ func (w *wsConnectItem) consumeRenderImageData() {
 				//logx.Info("颜色不一致,丢弃消息")
 				continue
 			}
+			//logo不一样
+			if data.RenderData.Logo != w.extendRenderProperty.Logo {
+				continue
+			}
 			limitChan <- struct{}{}
 			go func(d websocket_data.RenderImageReqMsg) {
 				defer func() {

From a0106e30ccc05559e88b19a468626b43c359599f Mon Sep 17 00:00:00 2001
From: laodaming <11058467+laudamine@user.noreply.gitee.com>
Date: Tue, 10 Oct 2023 17:50:56 +0800
Subject: [PATCH 2/4] fix

---
 server/websocket/internal/logic/ws_render_image.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/websocket/internal/logic/ws_render_image.go b/server/websocket/internal/logic/ws_render_image.go
index ae1e1417..3a8b52b8 100644
--- a/server/websocket/internal/logic/ws_render_image.go
+++ b/server/websocket/internal/logic/ws_render_image.go
@@ -62,7 +62,7 @@ func (r *renderProcessor) allocationMessage(w *wsConnectItem, data []byte) {
 		ifCancelOldCtx = true
 	}
 	if ifCancelOldCtx {
-		//赋值
+		//赋值新的
 		w.extendRenderProperty.templateTag = renderImageData.RenderData.TemplateTag
 		w.extendRenderProperty.selectColorIndex = renderImageData.RenderData.TemplateTagColor.SelectedColorIndex
 		w.extendRenderProperty.Logo = renderImageData.RenderData.Logo

From 8cf76c7051d09bb3043f64753553a0dcbd1633cd Mon Sep 17 00:00:00 2001
From: laodaming <11058467+laudamine@user.noreply.gitee.com>
Date: Tue, 10 Oct 2023 18:08:58 +0800
Subject: [PATCH 3/4] fix

---
 server/collection/internal/config/config.go     |  4 ++++
 server/collection/internal/logic/testailogic.go | 16 ++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/server/collection/internal/config/config.go b/server/collection/internal/config/config.go
index 1a92cdd3..0cc51abf 100644
--- a/server/collection/internal/config/config.go
+++ b/server/collection/internal/config/config.go
@@ -10,4 +10,8 @@ type Config struct {
 	SourceMysql    string
 	Auth           types.Auth
 	SourceRabbitMq string
+	BLMService     struct {
+		Version string
+		Urls    []string
+	}
 }
diff --git a/server/collection/internal/logic/testailogic.go b/server/collection/internal/logic/testailogic.go
index e3600734..c7f99d32 100644
--- a/server/collection/internal/logic/testailogic.go
+++ b/server/collection/internal/logic/testailogic.go
@@ -48,13 +48,21 @@ func (l *TestAiLogic) TestAi(req *types.TestAiReq, userinfo *auth.UserInfo) (res
 			logx.Error("测试异常:", err)
 		}
 	}()
-	//lenAiHost := len(l.svcCtx.Config.)
+	lenAiHost := len(l.svcCtx.Config.BLMService.Urls)
+	if lenAiHost == 0 {
+		return resp.SetStatusWithMessage(basic.CodeServiceErr, "ai host list is 0")
+	}
 	begin := time.Now().UTC().UnixMilli()
 	errChan := make(chan string)
 	w := sync.WaitGroup{}
+	b := -1
 	for i := 0; i < req.Num; i++ {
 		w.Add(1)
-		go func() {
+		b++
+		if b > lenAiHost-1 {
+			b = 0
+		}
+		go func(hostIndex int) {
 			defer func() {
 				if err := recover(); err != nil {
 					logx.Error("测试异常2:", err)
@@ -69,7 +77,7 @@ func (l *TestAiLogic) TestAi(req *types.TestAiReq, userinfo *auth.UserInfo) (res
 			}
 			var resultBLM constants.BLMServiceUrlResult
 			err := curl.NewClient(l.ctx, &curl.Config{
-				BaseUrl:        "http://ai.fusen.3718.cn:8999",
+				BaseUrl:        l.svcCtx.Config.BLMService.Urls[hostIndex],
 				Url:            constants.BLMServiceUrlLogoCombine,
 				RequireTimeout: time.Second * 15,
 			}).PostJson(postMap, &resultBLM)
@@ -77,7 +85,7 @@ func (l *TestAiLogic) TestAi(req *types.TestAiReq, userinfo *auth.UserInfo) (res
 				errChan <- err.Error()
 				return
 			}
-		}()
+		}(b)
 	}
 	go func() {
 		w.Wait()

From 97ae9e4d8e024d47e9430f19aec3513aeae73faa Mon Sep 17 00:00:00 2001
From: laodaming <11058467+laudamine@user.noreply.gitee.com>
Date: Tue, 10 Oct 2023 18:11:47 +0800
Subject: [PATCH 4/4] fix

---
 server/collection/internal/logic/testailogic.go | 1 +
 1 file changed, 1 insertion(+)

diff --git a/server/collection/internal/logic/testailogic.go b/server/collection/internal/logic/testailogic.go
index c7f99d32..4f7de99f 100644
--- a/server/collection/internal/logic/testailogic.go
+++ b/server/collection/internal/logic/testailogic.go
@@ -76,6 +76,7 @@ func (l *TestAiLogic) TestAi(req *types.TestAiReq, userinfo *auth.UserInfo) (res
 				return
 			}
 			var resultBLM constants.BLMServiceUrlResult
+			logx.Info("正在请求:" + l.svcCtx.Config.BLMService.Urls[hostIndex])
 			err := curl.NewClient(l.ctx, &curl.Config{
 				BaseUrl:        l.svcCtx.Config.BLMService.Urls[hostIndex],
 				Url:            constants.BLMServiceUrlLogoCombine,