@@ -109,11 +109,12 @@ func (s *ServiceImpl) AssembleService(req *AssembleServiceRequest) error {
109109 return fmt .Errorf ("更新客户端实例peer信息失败: %w" , err )
110110 }
111111
112- // 更新数据库中客户端隧道的 peer 字段
112+ // 更新数据库中客户端隧道的 peer 字段和 service_sid
113113 clientTunnel .Peer = peer
114+ clientTunnel .ServiceSID = & req .Sid
114115 if err := s .db .Model (& models.Tunnel {}).
115116 Where ("instance_id = ?" , req .ClientInstanceId ).
116- Select ("peer" ).
117+ Select ("peer" , "service_sid" ).
117118 Updates (& clientTunnel ).Error ; err != nil {
118119 return fmt .Errorf ("更新客户端隧道peer字段失败: %w" , err )
119120 }
@@ -124,11 +125,12 @@ func (s *ServiceImpl) AssembleService(req *AssembleServiceRequest) error {
124125 return fmt .Errorf ("更新服务端实例peer信息失败: %w" , err )
125126 }
126127
127- // 更新数据库中服务端隧道的 peer 字段
128+ // 更新数据库中服务端隧道的 peer 字段和 service_sid
128129 serverTunnel .Peer = peer
130+ serverTunnel .ServiceSID = & req .Sid
129131 if err := s .db .Model (& models.Tunnel {}).
130132 Where ("instance_id = ?" , * req .ServerInstanceId ).
131- Select ("peer" ).
133+ Select ("peer" , "service_sid" ).
132134 Updates (serverTunnel ).Error ; err != nil {
133135 return fmt .Errorf ("更新服务端隧道peer字段失败: %w" , err )
134136 }
@@ -303,12 +305,19 @@ func (s *ServiceImpl) RenameService(sid, newName string) error {
303305 return fmt .Errorf ("更新客户端实例peer信息失败: %w" , err )
304306 }
305307
306- // 更新数据库中客户端隧道的 peer 字段
308+ // 更新数据库中客户端隧道的 peer 字段和 service_sid
307309 // 使用 Updates 而不是 Update,以正确触发 JSON 序列化
308310 if peerJSON , err := json .Marshal (peer ); err == nil {
311+ updates := map [string ]interface {}{
312+ "peer" : string (peerJSON ),
313+ }
314+ // 同步更新 service_sid
315+ if peer .SID != nil {
316+ updates ["service_sid" ] = * peer .SID
317+ }
309318 if err := s .db .Model (& models.Tunnel {}).
310319 Where ("instance_id = ?" , * service .ClientInstanceId ).
311- Updates (map [ string ] interface {}{ "peer" : string ( peerJSON )} ).Error ; err != nil {
320+ Updates (updates ).Error ; err != nil {
312321 return fmt .Errorf ("更新客户端隧道peer字段失败: %w" , err )
313322 }
314323 }
@@ -321,11 +330,18 @@ func (s *ServiceImpl) RenameService(sid, newName string) error {
321330 return fmt .Errorf ("更新服务端实例peer信息失败: %w" , err )
322331 }
323332
324- // 更新数据库中服务端隧道的 peer 字段
333+ // 更新数据库中服务端隧道的 peer 字段和 service_sid
325334 if peerJSON , err := json .Marshal (peer ); err == nil {
335+ updates := map [string ]interface {}{
336+ "peer" : string (peerJSON ),
337+ }
338+ // 同步更新 service_sid
339+ if peer .SID != nil {
340+ updates ["service_sid" ] = * peer .SID
341+ }
326342 if err := s .db .Model (& models.Tunnel {}).
327343 Where ("instance_id = ?" , * service .ServerInstanceId ).
328- Updates (map [ string ] interface {}{ "peer" : string ( peerJSON )} ).Error ; err != nil {
344+ Updates (updates ).Error ; err != nil {
329345 return fmt .Errorf ("更新服务端隧道peer字段失败: %w" , err )
330346 }
331347 }
@@ -362,12 +378,15 @@ func (s *ServiceImpl) DissolveService(sid string) error {
362378 return fmt .Errorf ("清空客户端实例peer信息失败: %w" , err )
363379 }
364380
365- // 清空数据库中客户端隧道的 peer 字段
381+ // 清空数据库中客户端隧道的 peer 字段和 service_sid
366382 // 使用 Updates 而不是 Update,以正确触发 JSON 序列化
367383 if peerJSON , err := json .Marshal (emptyPeer ); err == nil {
368384 if err := s .db .Model (& models.Tunnel {}).
369385 Where ("instance_id = ?" , * service .ClientInstanceId ).
370- Updates (map [string ]interface {}{"peer" : string (peerJSON )}).Error ; err != nil {
386+ Updates (map [string ]interface {}{
387+ "peer" : string (peerJSON ),
388+ "service_sid" : nil , // 清空 service_sid
389+ }).Error ; err != nil {
371390 return fmt .Errorf ("清空客户端隧道peer字段失败: %w" , err )
372391 }
373392 }
@@ -379,12 +398,15 @@ func (s *ServiceImpl) DissolveService(sid string) error {
379398 return fmt .Errorf ("清空服务端实例peer信息失败: %w" , err )
380399 }
381400
382- // 清空数据库中服务端隧道的 peer 字段
401+ // 清空数据库中服务端隧道的 peer 字段和 service_sid
383402 // 使用 Updates 而不是 Update,以正确触发 JSON 序列化
384403 if peerJSON , err := json .Marshal (emptyPeer ); err == nil {
385404 if err := s .db .Model (& models.Tunnel {}).
386405 Where ("instance_id = ?" , * service .ServerInstanceId ).
387- Updates (map [string ]interface {}{"peer" : string (peerJSON )}).Error ; err != nil {
406+ Updates (map [string ]interface {}{
407+ "peer" : string (peerJSON ),
408+ "service_sid" : nil , // 清空 service_sid
409+ }).Error ; err != nil {
388410 return fmt .Errorf ("清空服务端隧道peer字段失败: %w" , err )
389411 }
390412 }
0 commit comments