|
@@ -36,6 +36,11 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
|
|
|
isAdmin := l.ctx.Value("isAdmin").(bool)
|
|
|
servers, err := l.svcCtx.DB.Server.Query().All(l.ctx)
|
|
|
serverSet := make(map[uint64]*ent.Server, len(servers))
|
|
|
+ serverSet[0] = &ent.Server{
|
|
|
+ ID: 0,
|
|
|
+ Name: "工作手机",
|
|
|
+ Status: 1,
|
|
|
+ }
|
|
|
for _, s := range servers {
|
|
|
serverSet[s.ID] = s
|
|
|
}
|
|
@@ -82,20 +87,23 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
|
|
|
// 创建 hookClient 客户端
|
|
|
serverInfo := serverSet[v.ServerID]
|
|
|
|
|
|
- hookClient := hook.NewHook(serverInfo.PrivateIP, serverInfo.AdminPort, v.Port)
|
|
|
var loginStatus uint8 = 0
|
|
|
-
|
|
|
- if serverInfo.Status == 1 {
|
|
|
- // 获取登录状态
|
|
|
- loginInfo, err := hookClient.IsLoginStatus()
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- l.Error("退出登录失败", err)
|
|
|
- } else {
|
|
|
- if loginInfo.Onlinestatus == "3" {
|
|
|
- loginStatus = 1
|
|
|
+ hookClient := hook.NewHook(serverInfo.PrivateIP, serverInfo.AdminPort, v.Port)
|
|
|
+ if v.ServerID > 0 {
|
|
|
+ if serverInfo.Status == 1 {
|
|
|
+ // 获取登录状态
|
|
|
+ loginInfo, err := hookClient.IsLoginStatus()
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ l.Error("退出登录失败", err)
|
|
|
+ } else {
|
|
|
+ if loginInfo.Onlinestatus == "3" {
|
|
|
+ loginStatus = 1
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ loginStatus = v.Status
|
|
|
}
|
|
|
|
|
|
processID := v.ProcessID
|
|
@@ -110,39 +118,41 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
|
|
|
l.Error("获取部门信息失败", err)
|
|
|
}
|
|
|
|
|
|
- if loginStatus == 1 {
|
|
|
- // 如果处于登录状态,获取登录信息
|
|
|
- wxInfo, _ := hookClient.GetSelfLoginInfo()
|
|
|
- if err != nil {
|
|
|
- l.Error("获取登录信息失败", err)
|
|
|
+ if v.ServerID > 0 {
|
|
|
+ if loginStatus == 1 {
|
|
|
+ // 如果处于登录状态,获取登录信息
|
|
|
+ wxInfo, _ := hookClient.GetSelfLoginInfo()
|
|
|
+ if err != nil {
|
|
|
+ l.Error("获取登录信息失败", err)
|
|
|
+ } else {
|
|
|
+ if wxid != wxInfo.Wxid {
|
|
|
+ l.svcCtx.Rds.HDel(l.ctx, "wx_info", wxid)
|
|
|
+ l.svcCtx.Rds.HDel(l.ctx, "wx_info", wxInfo.Wxid)
|
|
|
+ l.svcCtx.Rds.HDel(l.ctx, "crontask_wx_server_info", wxid)
|
|
|
+ l.svcCtx.Rds.HDel(l.ctx, "crontask_wx_server_info", wxInfo.Wxid)
|
|
|
+ }
|
|
|
+ processID = wxInfo.ProcessID
|
|
|
+ wxid = wxInfo.Wxid
|
|
|
+ account = wxInfo.Account
|
|
|
+ nickname = wxInfo.Nickname
|
|
|
+ tel = wxInfo.Tel
|
|
|
+ headBig = wxInfo.HeadBig
|
|
|
+ _ = l.svcCtx.DB.Wx.UpdateOneID(v.ID).
|
|
|
+ SetNotNilStatus(&loginStatus).
|
|
|
+ SetNotNilProcessID(&wxInfo.ProcessID).
|
|
|
+ SetNotNilWxid(&wxInfo.Wxid).
|
|
|
+ SetNotNilAccount(&wxInfo.Account).
|
|
|
+ SetNotNilNickname(&wxInfo.Nickname).
|
|
|
+ SetNotNilTel(&wxInfo.Tel).
|
|
|
+ SetNotNilHeadBig(&wxInfo.HeadBig).
|
|
|
+ Exec(l.ctx)
|
|
|
+ }
|
|
|
} else {
|
|
|
- if wxid != wxInfo.Wxid {
|
|
|
- l.svcCtx.Rds.HDel(l.ctx, "wx_info", wxid)
|
|
|
- l.svcCtx.Rds.HDel(l.ctx, "wx_info", wxInfo.Wxid)
|
|
|
- l.svcCtx.Rds.HDel(l.ctx, "crontask_wx_server_info", wxid)
|
|
|
- l.svcCtx.Rds.HDel(l.ctx, "crontask_wx_server_info", wxInfo.Wxid)
|
|
|
+ if loginStatus != v.Status {
|
|
|
+ _ = l.svcCtx.DB.Wx.UpdateOneID(v.ID).
|
|
|
+ SetNotNilStatus(&loginStatus).
|
|
|
+ Exec(l.ctx)
|
|
|
}
|
|
|
- processID = wxInfo.ProcessID
|
|
|
- wxid = wxInfo.Wxid
|
|
|
- account = wxInfo.Account
|
|
|
- nickname = wxInfo.Nickname
|
|
|
- tel = wxInfo.Tel
|
|
|
- headBig = wxInfo.HeadBig
|
|
|
- _ = l.svcCtx.DB.Wx.UpdateOneID(v.ID).
|
|
|
- SetNotNilStatus(&loginStatus).
|
|
|
- SetNotNilProcessID(&wxInfo.ProcessID).
|
|
|
- SetNotNilWxid(&wxInfo.Wxid).
|
|
|
- SetNotNilAccount(&wxInfo.Account).
|
|
|
- SetNotNilNickname(&wxInfo.Nickname).
|
|
|
- SetNotNilTel(&wxInfo.Tel).
|
|
|
- SetNotNilHeadBig(&wxInfo.HeadBig).
|
|
|
- Exec(l.ctx)
|
|
|
- }
|
|
|
- } else {
|
|
|
- if loginStatus != v.Status {
|
|
|
- _ = l.svcCtx.DB.Wx.UpdateOneID(v.ID).
|
|
|
- SetNotNilStatus(&loginStatus).
|
|
|
- Exec(l.ctx)
|
|
|
}
|
|
|
}
|
|
|
|