Просмотр исходного кода

添加刷新工作手机微信账号

DESKTOP-53URE31\USER 3 месяцев назад
Родитель
Сommit
b36b022de6
100 измененных файлов с 1737 добавлено и 44 удалено
  1. 2 1
      desc/all.api
  2. 19 0
      desc/wechat/workphone.api
  3. 123 0
      docker-compose/docker-compose.yaml
  4. 1 1
      go.mod
  5. 2 0
      go.sum
  6. 31 0
      internal/handler/WorkPhone/wx_refresh_handler.go
  7. 15 0
      internal/handler/routes.go
  8. 130 0
      internal/logic/WorkPhone/wx_refresh_logic.go
  9. 52 42
      internal/logic/Wx/get_wx_list_logic.go
  10. 23 0
      proto/AcceptFriendAddRequestTask.proto
  11. 10 0
      proto/AccountForceOfflineNotice.proto
  12. 9 0
      proto/AccountLogoutNotice.proto
  13. 9 0
      proto/AddEmojiTask.proto
  14. 12 0
      proto/AddFriendFromPhonebookTask.proto
  15. 12 0
      proto/AddFriendInChatRoomTask.proto
  16. 11 0
      proto/AddFriendNameCardTask.proto
  17. 18 0
      proto/AddFriendNotice.proto
  18. 13 0
      proto/AddFriendWithSceneTask.proto
  19. 16 0
      proto/AddFriendsTask.proto
  20. 11 0
      proto/AgreeJoinChatRoomTask.proto
  21. 9 0
      proto/BizContactAddNotice.proto
  22. 18 0
      proto/BizContactPushNotice.proto
  23. 27 0
      proto/BizConversPushNotice.proto
  24. 25 0
      proto/CDNDownloadFileTask.proto
  25. 13 0
      proto/CDNDownloadResultNotice.proto
  26. 21 0
      proto/CallLogPushNotice.proto
  27. 12 0
      proto/ChatMsgFilePushNotice.proto
  28. 10 0
      proto/ChatMsgIdsPushNotice.proto
  29. 31 0
      proto/ChatRoomActionTask.proto
  30. 9 0
      proto/ChatRoomAddNotice.proto
  31. 22 0
      proto/ChatRoomChangedNotice.proto
  32. 8 0
      proto/ChatRoomDelNotice.proto
  33. 11 0
      proto/ChatRoomInviteApproveTask.proto
  34. 23 0
      proto/ChatRoomMembersNotice.proto
  35. 37 0
      proto/ChatRoomPushNotice.proto
  36. 11 0
      proto/CircleCommentDeleteTask.proto
  37. 14 0
      proto/CircleCommentDeleteTaskResultNotice.proto
  38. 11 0
      proto/CircleCommentNotice.proto
  39. 13 0
      proto/CircleCommentReplyTask.proto
  40. 16 0
      proto/CircleCommentReplyTaskResultNotice.proto
  41. 8 0
      proto/CircleDelNotice.proto
  42. 9 0
      proto/CircleDetailNotice.proto
  43. 12 0
      proto/CircleLikeNotice.proto
  44. 10 0
      proto/CircleLikeTask.proto
  45. 10 0
      proto/CircleMsgClearTask.proto
  46. 11 0
      proto/CircleMsgPushNotice.proto
  47. 9 0
      proto/CircleMsgReadTask.proto
  48. 53 0
      proto/CircleNewPublishNotice.proto
  49. 14 0
      proto/CirclePushNotice.proto
  50. 9 0
      proto/ClearAllChatMsgTask.proto
  51. 32 0
      proto/ConfigPushNotice.proto
  52. 12 0
      proto/ContactInfoNotice.proto
  53. 9 0
      proto/ContactLabelAddNotic.proto
  54. 8 0
      proto/ContactLabelDelNotice.proto
  55. 10 0
      proto/ContactLabelDeleteTask.proto
  56. 13 0
      proto/ContactLabelInfoNotice.proto
  57. 12 0
      proto/ContactLabelTask.proto
  58. 10 0
      proto/ContactSetLabelTask.proto
  59. 10 0
      proto/ConvDelNotice.proto
  60. 34 0
      proto/ConversationPushNotice.proto
  61. 9 0
      proto/DeleteFriendTask.proto
  62. 9 0
      proto/DeleteSNSNewsTask.proto
  63. 16 0
      proto/DeviceAuthReq.proto
  64. 18 0
      proto/DeviceAuthRsp.proto
  65. 9 0
      proto/ErrorMessage.proto
  66. 8 0
      proto/FindContactTask.proto
  67. 20 0
      proto/FindContactTaskResultNotice.proto
  68. 13 0
      proto/ForwardMessageByContentTask.proto
  69. 14 0
      proto/ForwardMessageTask.proto
  70. 13 0
      proto/ForwardMultiMessageTask.proto
  71. 29 0
      proto/FriendAddNotice.proto
  72. 26 0
      proto/FriendAddReqListNotice.proto
  73. 19 0
      proto/FriendAddReqeustNotice.proto
  74. 10 0
      proto/FriendChangeNotice.proto
  75. 9 0
      proto/FriendDelNotice.proto
  76. 18 0
      proto/FriendDetectResultNotice.proto
  77. 14 0
      proto/FriendPushNotice.proto
  78. 15 0
      proto/FriendTalkNotice.proto
  79. 13 0
      proto/GetA8KeyTask.proto
  80. 11 0
      proto/GetContactInfoTask.proto
  81. 7 0
      proto/GetFriendDetectResult.proto
  82. 9 0
      proto/GetWeChatsReq.proto
  83. 31 0
      proto/GetWeChatsRsp.proto
  84. 29 0
      proto/GroupMemberAddProgress.proto
  85. 9 0
      proto/HeartBeat.proto
  86. 24 0
      proto/HistoryMsgPushNotice.proto
  87. 9 0
      proto/JoinGroupByQrTask.proto
  88. 12 0
      proto/ModifyFriendMemoTask.proto
  89. 13 0
      proto/MsgDelNotice.proto
  90. 12 0
      proto/OneKeyLikeTask.proto
  91. 10 0
      proto/OneKeyLikeTaskResultNotice.proto
  92. 23 0
      proto/PhoneActionTask.proto
  93. 8 0
      proto/PhoneStateTask.proto
  94. 13 0
      proto/PhoneStateTaskResultNotice.proto
  95. 13 0
      proto/PhoneStateWarningNotice.proto
  96. 7 0
      proto/PostDeleteDeviceNotice.proto
  97. 26 0
      proto/PostDeviceInfoNotice.proto
  98. 13 0
      proto/PostFriendDetectCountNotice.proto
  99. 13 0
      proto/PostFriendDetectTask.proto
  100. 8 0
      proto/PostMessageReadNotice.proto

+ 2 - 1
desc/all.api

@@ -29,4 +29,5 @@ import "./wechat/wx_card.api"
 import "./wechat/wx_card_user.api"
 import "./wechat/wx_card_visit.api"
 import "./wechat/avatar.api"
-import "./wechat/aliyun_avatar.api"
+import "./wechat/aliyun_avatar.api"
+import "./wechat/workphone.api"

+ 19 - 0
desc/wechat/workphone.api

@@ -0,0 +1,19 @@
+import "../base.api"
+
+info(
+    title: "工作手机相关接口"
+    desc: ""
+    author: "jiaheng.wu"
+    email: "wujiaheng@gkscrm.com"
+    version: "1.0"
+)
+
+@server(
+    jwt: Auth
+    group: WorkPhone
+    middleware: Authority
+)
+service Wechat {
+    @handler wxRefresh // TODO: replace handler name and delete this comment
+    post /workphone/wxaccount/refresh returns(BaseMsgResp)
+}

+ 123 - 0
docker-compose/docker-compose.yaml

@@ -0,0 +1,123 @@
+version: '3'
+
+volumes:
+  fms:
+
+
+networks:
+  docker_default:
+    external: true
+
+services:
+  core-rpc:
+    image: ryanpower/core-rpc-docker:v1.4.9
+    container_name: core-rpc
+    restart: always
+    ports:
+      - '9101:9101'
+    environment:
+      DATABASE_TYPE: 'mysql'
+      DATABASE_USERNAME: 'root'
+      DATABASE_PASSWORD: 'p@ssw0rd123456'
+      DATABASE_HOST: 'mysql-server'
+      DATABASE_PORT: 3306
+      DATABASE_DBNAME: 'wechat-admin'
+    networks:
+      docker_default:
+        aliases:
+          - core-rpc
+    extra_hosts:
+      - 'host.docker.internal:host-gateway'
+      - 'mysql-server:host-gateway'
+
+  job-rpc:
+    image: ryanpower/job-rpc-docker:v1.4.9
+    container_name: job-rpc
+    restart: always
+    ports:
+      - '9105:9105'
+    environment:
+      DATABASE_TYPE: 'mysql'
+      DATABASE_USERNAME: 'root'
+      DATABASE_PASSWORD: 'p@ssw0rd123456'
+      DATABASE_HOST: 'mysql-server'
+      DATABASE_PORT: 3306
+      DATABASE_DBNAME: 'wechat-job'
+      AUTH_SECRET: 'LnQD46hBde0AgFXBer8ZZZe3FgC'
+    networks:
+      docker_default:
+        aliases:
+          - job-rpc
+    extra_hosts:
+      - 'host.docker.internal:host-gateway'
+      - 'job-rpc:host-gateway'
+      - 'mysql-server:host-gateway'
+
+  core-api:
+    image: ryanpower/core-api-docker:v1.4.9
+    container_name: core-api
+    restart: always
+    environment:
+      #     I18N_DIR: '/app/etc/'
+      DATABASE_TYPE: 'mysql'
+      DATABASE_USERNAME: 'root'
+      DATABASE_PASSWORD: 'p@ssw0rd123456'
+      DATABASE_HOST: 'mysql-server'
+      DATABASE_PORT: 3306
+      DATABASE_DBNAME: 'wechat-admin'
+      AUTH_SECRET: 'LnQD46hBde0AgFXBer8ZZZe3FgC'
+    ports:
+      - '9100:9100'
+    networks:
+      docker_default:
+        aliases:
+          - core-api
+    extra_hosts:
+      - 'host.docker.internal:host-gateway'
+      - 'job-rpc:host-gateway'
+      - 'mysql-server:host-gateway'
+
+  fms-api:
+    image: ryanpower/fms-api-docker:v1.4.9
+    container_name: fms-api
+    restart: always
+    environment:
+      SERVER_URL: 'https://wxadmin.gkscrm.com/fms-file'
+      DATABASE_TYPE: 'mysql'
+      DATABASE_USERNAME: 'root'
+      DATABASE_PASSWORD: 'p@ssw0rd123456'
+      DATABASE_HOST: 'mysql-server'
+      DATABASE_PORT: 3306
+      DATABASE_DBNAME: 'wechat-fms'
+      AUTH_SECRET: 'LnQD46hBde0AgFXBer8ZZZe3FgC'
+    ports:
+      - '9102:9102'
+      - '81:80'
+    volumes:
+      - fms:/data/wechat/fms-data
+    networks:
+      docker_default:
+        aliases:
+          - fms-api
+    extra_hosts:
+      - 'host.docker.internal:host-gateway'
+      - 'mysql-server:host-gateway'
+
+  mcms-rpc:
+    image: ryanpower/mcms-rpc-docker:v1.4.9
+    container_name: mcms-rpc
+    restart: always
+    environment:
+      DATABASE_TYPE: 'mysql'
+      DATABASE_USERNAME: 'root'
+      DATABASE_PASSWORD: 'p@ssw0rd123456'
+      DATABASE_HOST: 'mysql-server'
+      DATABASE_PORT: 3306
+      DATABASE_DBNAME: 'wechat-mcms'
+    networks:
+      docker_default:
+        aliases:
+          - mcms-rpc
+    extra_hosts:
+      - 'host.docker.internal:host-gateway'
+      - 'mysql-server:host-gateway'

+ 1 - 1
go.mod

@@ -148,7 +148,7 @@ require (
 	google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect
 	google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
 	google.golang.org/grpc v1.62.1 // indirect
-	google.golang.org/protobuf v1.34.2 // indirect
+	google.golang.org/protobuf v1.35.2 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/ini.v1 v1.67.0 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect

+ 2 - 0
go.sum

@@ -966,6 +966,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
 google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
+google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

+ 31 - 0
internal/handler/WorkPhone/wx_refresh_handler.go

@@ -0,0 +1,31 @@
+package WorkPhone
+
+import (
+	"net/http"
+
+	"github.com/zeromicro/go-zero/rest/httpx"
+
+	"wechat-api/internal/logic/WorkPhone"
+	"wechat-api/internal/svc"
+)
+
+// swagger:route post /workphone/wxaccount/refresh WorkPhone WxRefresh
+//
+
+//
+
+//
+// Responses:
+//  200: BaseMsgResp
+
+func WxRefreshHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		l := WorkPhone.NewWxRefreshLogic(r.Context(), svcCtx)
+		resp, err := l.WxRefresh()
+		if err != nil {
+			httpx.ErrorCtx(r.Context(), w, err)
+		} else {
+			httpx.OkJsonCtx(r.Context(), w, resp)
+		}
+	}
+}

+ 15 - 0
internal/handler/routes.go

@@ -9,6 +9,7 @@ import (
 	Msg "wechat-api/internal/handler/Msg"
 	User "wechat-api/internal/handler/User"
 	WechatServer "wechat-api/internal/handler/WechatServer"
+	WorkPhone "wechat-api/internal/handler/WorkPhone"
 	Wx "wechat-api/internal/handler/Wx"
 	Wxhook "wechat-api/internal/handler/Wxhook"
 	agent "wechat-api/internal/handler/agent"
@@ -1401,4 +1402,18 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
 		),
 		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
 	)
+
+	server.AddRoutes(
+		rest.WithMiddlewares(
+			[]rest.Middleware{serverCtx.Authority},
+			[]rest.Route{
+				{
+					Method:  http.MethodPost,
+					Path:    "/workphone/wxaccount/refresh",
+					Handler: WorkPhone.WxRefreshHandler(serverCtx),
+				},
+			}...,
+		),
+		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
+	)
 }

+ 130 - 0
internal/logic/WorkPhone/wx_refresh_logic.go

@@ -0,0 +1,130 @@
+package WorkPhone
+
+import (
+	"context"
+	"fmt"
+	"github.com/imroc/req/v3"
+	"github.com/suyuan32/simple-admin-common/msg/errormsg"
+	"strconv"
+	"time"
+	"wechat-api/ent"
+	"wechat-api/ent/wx"
+	"wechat-api/internal/utils/dberrorhandler"
+
+	"wechat-api/internal/svc"
+	"wechat-api/internal/types"
+
+	"github.com/zeromicro/go-zero/core/logx"
+)
+
+type WxRefreshLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewWxRefreshLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WxRefreshLogic {
+	return &WxRefreshLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx}
+}
+
+type GetWeChatsResp struct {
+	Code int64 `json:"code"`
+	Data []struct {
+		Accountid   string      `json:"accountid"`
+		Avatar      string      `json:"avatar"`
+		Brand       string      `json:"brand"`
+		Cid         int64       `json:"cid"`
+		City        string      `json:"city"`
+		Cname       interface{} `json:"cname"`
+		Country     string      `json:"country"`
+		Deviceid    string      `json:"deviceid"`
+		Devnickname string      `json:"devnickname"`
+		Gender      int64       `json:"gender"`
+		Groupid     interface{} `json:"groupid"`
+		ID          int64       `json:"id"`
+		Isonline    int64       `json:"isonline"`
+		LoginTime   int64       `json:"login_time"`
+		ModifyTime  int64       `json:"modify_time"`
+		Module      string      `json:"module"`
+		Province    string      `json:"province"`
+		Snumber     int64       `json:"snumber"`
+		Wechatid    string      `json:"wechatid"`
+		Wechatnick  string      `json:"wechatnick"`
+		Wechatno    string      `json:"wechatno"`
+	} `json:"data"`
+	Msg string `json:"msg"`
+}
+
+func (l *WxRefreshLogic) WxRefresh() (resp *types.BaseMsgResp, err error) {
+	var result GetWeChatsResp
+	client := req.C().DevMode()
+	client.SetCommonRetryCount(2).
+		SetCommonRetryBackoffInterval(1*time.Second, 5*time.Second).
+		SetCommonRetryFixedInterval(2 * time.Second).SetTimeout(30 * time.Second)
+	res, err := client.R().SetSuccessResult(&result).Post("http://chat.gkscrm.com:13086/pc/GetWeChatsReq?id=13")
+
+	if err != nil {
+		return
+	}
+	if !res.IsSuccessState() {
+		err = fmt.Errorf("GetWeChats failed with status code %d", res.StatusCode)
+		return
+	}
+
+	for _, account := range result.Data {
+		wxinfo, err := l.svcCtx.DB.Wx.Query().
+			Where(
+				wx.WxidEQ(account.Wechatid),
+			).
+			Only(l.ctx)
+
+		if err != nil && !ent.IsNotFound(err) {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, account)
+		}
+		var status uint8
+		if account.Isonline == 0 {
+			status = 1
+		} else {
+			status = 0
+		}
+		if wxinfo != nil {
+			err = l.svcCtx.DB.Wx.UpdateOneID(wxinfo.ID).
+				SetServerID(0).
+				SetPort(account.Deviceid).
+				SetProcessID(strconv.FormatInt(account.Cid, 10)).
+				SetAccount(account.Wechatno).
+				SetNickname(account.Wechatnick).
+				SetHeadBig(account.Avatar).
+				SetStatus(status).
+				Exec(l.ctx)
+
+			if err != nil {
+				return nil, dberrorhandler.DefaultEntError(l.Logger, err, account)
+			}
+		} else {
+			l.Debug("wxinfo is nil")
+			_, err := l.svcCtx.DB.Wx.Create().
+				SetServerID(0).
+				SetPort(account.Deviceid).
+				SetProcessID(strconv.FormatInt(account.Cid, 10)).
+				SetWxid(account.Wechatid).
+				SetAccount(account.Wechatno).
+				SetHeadBig(account.Avatar).
+				SetNickname(account.Wechatnick).
+				SetStatus(status).
+				SetAllowList([]string{}).SetBlockList([]string{}).SetGroupAllowList([]string{}).SetGroupBlockList([]string{}).
+				Save(l.ctx)
+			l.Error("wxinfo save", err)
+			if err != nil {
+				return nil, dberrorhandler.DefaultEntError(l.Logger, err, account)
+			}
+		}
+	}
+
+	return &types.BaseMsgResp{Msg: errormsg.Success}, nil
+
+	return
+}

+ 52 - 42
internal/logic/Wx/get_wx_list_logic.go

@@ -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)
 			}
 		}
 

+ 23 - 0
proto/AcceptFriendAddRequestTask.proto

@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+
+message AcceptFriendAddRequestTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string FriendId = 3; // 请求的好友微信内部全局唯一识别码
+    bool AddWithWW = 4; // 去企业微信添加
+    EnumFriendAddOperation Operation = 5; // 处理结果
+    string Remark = 6; // 备注信息
+    string FriendNick = 7; // 好友的微信昵称 没用
+    string ReplyMsg = 8;  // 拒绝时的回复消息
+    int64 TaskId = 9; //任务Id
+    bool OnlyWW = 10; // 只在企微添加
+
+    enum EnumFriendAddOperation {
+        Ignore = 0; // 忽略消息
+        Accept = 1; // 接受
+        Reject = 2; // 拒绝
+    }
+}

+ 10 - 0
proto/AccountForceOfflineNotice.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message AccountForceOfflineNoticeMessage {
+    EnumForceOfflineReason Reason = 1; //被强制下线的原因
+    string Message = 2; //补充文字描述
+    string WeChatId = 3; // 商家个人微信内部全局唯一识别码
+}

+ 9 - 0
proto/AccountLogoutNotice.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message AccountLogoutNoticeMessage {
+    int64 UnionId = 1; // Juketool UnionId
+    EnumAccountType AccountType = 2; // 账号类型
+}

+ 9 - 0
proto/AddEmojiTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddEmojiTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string Md5 = 2; // md5
+    int64 TaskId = 4; //任务Id
+}

+ 12 - 0
proto/AddFriendFromPhonebookTask.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddFriendFromPhonebookTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    int32 Count = 2; // 添加多少人
+    bool Reset = 3; // 废弃
+    string Message = 4; // 招呼语
+    int64 TaskId = 5; //任务Id
+    int32 Index = 6; // 开始位置
+}

+ 12 - 0
proto/AddFriendInChatRoomTask.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddFriendInChatRoomTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string ChatroomId = 2; // 所在的群聊id
+    string FriendId = 3; // 请求加好友微信内部全局唯一识别码
+    string Message = 4; // 招呼语
+    string Remark = 5; // 备注信息
+    int64 TaskId = 6; //任务Id
+}

+ 11 - 0
proto/AddFriendNameCardTask.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddFriendNameCardTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    int64 MsgSvrId = 3; // 名片消息id
+    string Message = 4; // 招呼语
+    string Remark = 5; // 备注信息
+    int64 TaskId = 6; //任务Id
+}

+ 18 - 0
proto/AddFriendNotice.proto

@@ -0,0 +1,18 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message AddFriendNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string FriendId = 2; // 请求好友微信内部全局唯一识别码
+    string FriendNo = 3; // 微信号
+    string FriendNick = 4; // 好友的微信昵称
+    string Reason = 5; // 招呼语
+    string Avatar = 6; //微信头像 
+    int32 Source = 7; // 来源
+    string SourceUser = 8; // 来源的微信id(推荐人,群聊房间号)
+    EnumGender Gender = 9; //性别
+    string Province = 10; //省份
+    string City = 11; //城市
+}

+ 13 - 0
proto/AddFriendWithSceneTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddFriendWithSceneTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string Friend = 2; // 要添加的手机号码,微信号(后期支持v1 stranger?)
+    string Message = 3; // 发送的验证消息
+    int32 Scene = 4; // 添加场景(0 搜索,1 通过群聊(无效), 2 通讯录, 3 名片(未测试), 4 附近的人(未测试))
+    string Remark = 5; //备注名
+    int64 TaskId = 6; //任务Id
+    string Label = 7; // 标签
+}

+ 16 - 0
proto/AddFriendsTask.proto

@@ -0,0 +1,16 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AddFriendsTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    repeated string Phones = 2; // 要添加的手机号码,只执行一个(历史原因)
+    string message = 3; // 发送的验证消息
+    int64 TaskId = 4; //任务Id
+    string Label = 5; //标签
+    string Remark = 6; //备注名
+    string FiledStr1 = 7; //客户自定义
+    string FiledStr2 = 8; //客户自定义
+    string FiledStr3 = 9; //客户自定义
+    int64 CustomId = 10; //客户自定义
+}

+ 11 - 0
proto/AgreeJoinChatRoomTask.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message AgreeJoinChatRoomTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string Talker = 2; // 邀请者
+    int64 MsgSvrId = 3; // 邀请消息的msgSvrId
+    string MsgContent = 4; // 回传邀请信息的内容(json)
+    int64 taskId = 5;
+}

+ 9 - 0
proto/BizContactAddNotice.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "BizContactPushNotice.proto";
+
+message BizContactAddNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    BizContactMessage Contact = 2; //
+}

+ 18 - 0
proto/BizContactPushNotice.proto

@@ -0,0 +1,18 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message BizContactMessage {
+    string Username = 1; // id
+    string Alias = 2; // 微信号
+    string Nickname = 3; // 昵称
+    string Avatar = 4; //头像 
+    string Icon = 5;// 公众号图标
+    string Desc = 6;  // 描述
+    string Company = 7; // 注册公司
+}
+message BizContactPushNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    repeated BizContactMessage Contacts = 2; //
+    int64 TaskId = 3;
+}

+ 27 - 0
proto/BizConversPushNotice.proto

@@ -0,0 +1,27 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message BizConversMessage {
+    string UserName = 1; // 全局唯一识别码
+    string Digest = 2; // 消息概要显示
+    string DigestUser = 3; // 消息发送者id
+    bool IsSend = 4; // 最后消息是否自己发送
+    int32 MsgCnt = 5; // 消息条数
+    int32 UnreadCnt = 6; // 未读消息条数
+    int64 UpdateTime = 7; // 最后消息的时间
+    //bool IsTop = 8; // 是否置顶
+    //bool IsSilent = 9; // 是否消息免打扰
+    //int32 ChatMode = 10; //是否可以发消息
+    string ShowName = 11; // 会话名称(备注或昵称)
+    string Avatar = 12; // 头像
+}
+
+message BizConversPushNoticeMessage {
+    string WeChatId = 1; // 客服个微全局唯一识别码
+    repeated BizConversMessage Convers = 2;
+    int32 Size = 3;
+    int32 Count = 4;
+    int32 Page = 5;
+    int64 TaskId = 6;
+}

+ 25 - 0
proto/CDNDownloadFileTask.proto

@@ -0,0 +1,25 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+enum CDNFileType {
+    NoteMsg_Picture = 0; //笔记消息内容中的图片
+    NoteMsg_Thumb = 1; //笔记消息内容中的图片视频的缩略图
+    NoteMsg_Video = 2; //笔记消息内容中的视频
+    NoteMsg_File = 3; //笔记消息内容中的文件(html,语音(speex),pdf,ppt,doc等其他文件)
+    ChatMsg_Picture = 4; //聊天消息的图片 // 未实现
+    ChatMsg_Thumb = 5; //聊天消息的缩略图(图片,视频的缩略图)// 未实现
+    ChatMsg_Video = 6; //聊天消息的视频 // 未实现
+    ChatMsg_File = 7; //聊天消息的文件 // 未实现
+    ChatMsg_Emoji =8; //聊天消息表情 // 未实现
+}
+message CDNDownloadFileTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string CdnUrl = 2;
+    string CdnKey = 3;
+    CDNFileType FileType = 4; // 文件下载的场景
+    string FileId = 5; // 文件id,返回结果标识匹配,如果没有自己生成一个(比如用msgSvrId)
+    string FileFmt = 6; // 文件格式(后缀)
+    int32 FileSize = 7; // 文件大小
+    int64 MsgSvrId = 8; // 聊天消息id(msgSvrId) 可不传,没有cndUrl,可只传图片,视频,文件消息的msgSvrid // 未实现
+}

+ 13 - 0
proto/CDNDownloadResultNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CDNDownloadResultNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    bool Success = 2; // 是否成功
+    string ErrMsg = 3;// 错误内容描述 Success = true 忽略
+    string FileId = 4; // 任务请求的文件id
+    int64 MsgSvrId = 5; // 任务请求的msgsvrid
+    string Url = 6; //
+
+}

+ 21 - 0
proto/CallLogPushNotice.proto

@@ -0,0 +1,21 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CallLogMessage {
+    int32 Id = 1;
+    string Number = 2; //
+    int32 Type = 3; // 1 incoming,2 outgoing,3 missed 4 voicemail 5 rejected 6 blocked 7 ANSWERED_EXTERNALLY
+    int64 Date = 4; // 呼入呼出时间 UTC时间,秒
+    int32 Duration = 5; // 通话时长
+    string Record = 6; // 通话录音url
+    int32 SimId = 7;
+    int32 BlockType = 8;
+}
+
+message CallLogPushNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string IMEI = 2; // 手机设备号
+    CallLogMessage Messages = 3; //
+
+}

+ 12 - 0
proto/ChatMsgFilePushNotice.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ChatMsgFilePushNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    int64 MsgSvrId = 2; // 消息唯一id
+    int32 MsgType = 3; // 消息类型
+    string Url = 4; //
+    int64 FileSize = 5; //
+    int32 SubType = 6; // 文件类型(图片消息:0 大图,1 原图 )
+}

+ 10 - 0
proto/ChatMsgIdsPushNotice.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ChatMsgIdsPushNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    int64 StartTime = 2;
+    int64 EndTime = 3;
+    repeated int64 Ids = 4;
+}

+ 31 - 0
proto/ChatRoomActionTask.proto

@@ -0,0 +1,31 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+enum EnumChatRoomAction {
+    RoomName = 0; // 改群名 content=群昵称
+    ModifyPublicNoti = 1;// 改公告 content=公告内容
+    AddMember = 2; // 拉人 content=微信id,用','分隔
+    KickMember = 3; // 踢人 content=微信id,用','分隔
+    RoomShowName = 4; // 修改群内显示名 content=显示名
+    AddToPhonebook = 5; // 加入通讯录 IntValue=0 取消,IntValue=1 加入
+    NewMsgNoti = 6; // 新消息通知 IntValue=0 (消息免打扰 ),IntValue=1 通知,可设置单个联系人
+    ExitRoom = 7;// 退群
+    CreateRoom = 8;// 建群 content=初始成员微信id,用','分隔
+    ViewAllMember = 9; // 查看所有群成员
+    TransferOwner = 10; // 群主转让
+    SetVerify = 11; // 设置群聊邀请确认 IntValue=0 关闭,IntValue=1 打开
+    AddManager = 12; // 设置群管理员 content=微信id,用','分隔,最多3个id
+    DelManager = 13; // 删除群管理员 content=微信id,用','分隔
+    SetRemark = 14; // 设置备注 7.0.14版本新功能 content=备注名,最长32
+    SetTop = 16; //设置置顶 IntValue=0 取消置顶,IntValue=1 置顶,可设置单个联系人
+}
+
+message ChatRoomActionTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string ChatRoomId = 2; // 群聊id
+    EnumChatRoomAction Action = 3; // 指令
+    string Content = 4; // 指令内容
+    int32 IntValue = 5; //
+    int64 taskId = 6;
+}

+ 9 - 0
proto/ChatRoomAddNotice.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "ChatRoomPushNotice.proto";
+
+message ChatRoomAddNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    ChatRoomMessage ChatRoom = 2;
+}

+ 22 - 0
proto/ChatRoomChangedNotice.proto

@@ -0,0 +1,22 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+enum EnumChatRoomChange {
+    Change_MemberList = 0; // 群成员
+    Change_PublicNotice = 1; // 公告
+    Change_NickName = 2; // 群昵称
+    Change_ShowName = 3; // 群显示名,内容格式:[username:showname,]
+    Change_MyShowName = 4; // 自己的群显示名
+    Change_Owner = 5; // 群主
+    Change_Avatar = 6; // 群聊头像
+    Change_MemberAdd = 7; // 群成员新增
+    Change_MemberDel = 8; // 群成员减少
+}
+
+message ChatRoomChangedNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string UserName = 2;
+    EnumChatRoomChange What = 3;
+    string Content = 4;
+}

+ 8 - 0
proto/ChatRoomDelNotice.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ChatRoomDelNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string RoomId = 2; // 删除的群聊
+}

+ 11 - 0
proto/ChatRoomInviteApproveTask.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ChatRoomInviteApproveTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string RoomId = 2; // 群聊id
+    int64 MsgSvrId = 3;
+    string MsgContent = 4; // 回传群邀请信息的内容(json)
+    int64 taskId = 5;
+}

+ 23 - 0
proto/ChatRoomMembersNotice.proto

@@ -0,0 +1,23 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "TransportMessage.proto";
+
+message StrangerMessage {
+    string Wxid = 1; // 微信号
+    string Alias = 2; // 微信别名
+    string Nickname = 3; // 好友的微信昵称
+    string Avatar = 4; //微信头像 
+    int32 Type = 5; // 联系人类型,判断是否为好友
+    EnumGender Gender = 6; //性别
+    string Country = 7; //国家 (非必传)
+    string Province = 8; //省份
+    string City = 9; //城市
+    string Memo = 10; // 机主的备注
+    string Signature = 11; //签名
+}
+
+message ChatRoomMembersNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    repeated StrangerMessage Members = 3; // 联系人信息
+}

+ 37 - 0
proto/ChatRoomPushNotice.proto

@@ -0,0 +1,37 @@
+    syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ChatRoomMessage {
+    string UserName = 1;
+    string NickName = 2;
+    repeated string MemberList = 3;
+    string Owner = 4;
+    string Notice = 5;
+    repeated DisplayNameMessage ShowNameList = 6;
+    string SelfDisplayName = 7;
+    string Avatar = 8; //微信头像 
+    int32 Verify = 9; // 群聊邀请确认
+    bool MsgSilent = 10; // 消息免打扰
+    string Remark = 11; // 群聊备注,7.0.14版本才有
+    int32 Type = 12; // type字段,供参考 (4.6.16版本开始:&2048 置顶)
+    bool IsUnusual = 30; // 是否异常
+
+    message DisplayNameMessage{
+        string UserName = 1; // 群成员
+        string ShowName = 2; // 群显示名
+        string Inviter = 3; // 邀请者
+        int32 Flag = 4; // &2048 群管理员,其他未知
+    }
+}
+
+// 注意MessageType大小写: ChatroomPushNotice = 2031; // 手机端推送群聊列表
+message ChatRoomPushNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    repeated ChatRoomMessage ChatRooms = 2; // 好友信息模型 多个
+    int32 Size = 3;
+    int32 Count = 4;
+    int32 Page = 5;
+    int64 TaskId = 6;
+}
+

+ 11 - 0
proto/CircleCommentDeleteTask.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleCommentDeleteTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2;
+    int64 CommentId = 3;
+    int64 PublishTime = 4;
+    int64 TaskId = 5;
+}

+ 14 - 0
proto/CircleCommentDeleteTaskResultNotice.proto

@@ -0,0 +1,14 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message CircleCommentDeleteTaskResultNoticeMessage {
+    bool Success = 1; // 是否成功
+    EnumErrorCode Code = 2; // 错误码 Success = true 忽略
+    string ErrMsg = 3;// 错误内容描述 Success = true 忽略
+    int64 CircleId = 4; // 朋友圈去id
+    int64 CommentId = 5; // 评论id
+    int64 TaskId = 6; // jkt 本地存储的主键id
+    string WeChatId = 7; // 商家所属微信号
+}

+ 11 - 0
proto/CircleCommentNotice.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "CircleNewPublishNotice.proto";
+message CircleCommentNoticeMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 朋友圈id
+    bool IsDelete = 3;  // 是否是评论
+    CircleCommentMessage Comment = 4; // 评论内容(必选,删除也需要使用)
+}

+ 13 - 0
proto/CircleCommentReplyTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleCommentReplyTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 所属朋友圈
+    string ToWeChatId = 3; // 回复的好友
+    string Content = 4;  // 回复的内容
+    int64 ReplyCommentId = 5; // 回复的评论id
+    int64 TaskId = 6; // 本地的评论表数据id (重发需要传递)
+    bool IsResend = 7; // 是否是重发 (手机端忽略)
+}

+ 16 - 0
proto/CircleCommentReplyTaskResultNotice.proto

@@ -0,0 +1,16 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message CircleCommentReplyTaskResultNoticeMessage {
+    bool Success = 1; // 是否成功
+    EnumErrorCode Code = 2; // 错误码 Success = true 忽略
+    string ErrMsg = 3;// 错误内容描述 Success = true 忽略
+    int64 CommentId = 4; // 聊天Id
+    int64 ReplyCommentId = 5; // 回复的评论id
+    int64 TaskId = 6; // 请求中传递过去的jkt本地的表主键id
+    int64 PusblishTime = 7; // 发布时间
+    int64 CircleId = 8; // 朋友圈id
+    string WeChatId = 9; // 商家所属微信号
+}

+ 8 - 0
proto/CircleDelNotice.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleDelNoticeMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 朋友圈id
+}

+ 9 - 0
proto/CircleDetailNotice.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "CircleNewPublishNotice.proto";
+message CircleDetailNoticeMessage {
+    string WeChatId = 1; // 所属微信号
+    CircleInformationMessage Circle = 2; // 朋友圈信息
+}

+ 12 - 0
proto/CircleLikeNotice.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleLikeNoticeMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 朋友圈id
+    string FriendId = 3; // 好友id
+    bool IsDelete = 4; // 是否是点赞
+    int64 PublishTime = 5; // 点赞时间
+    string NickName = 6; //点赞好友昵称
+}

+ 10 - 0
proto/CircleLikeTask.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleLikeTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 所属朋友圈
+    bool IsCancel = 3; // 是否取消点赞
+    int64 TaskId = 4;
+}

+ 10 - 0
proto/CircleMsgClearTask.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleMsgClearTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 所属朋友圈,传0为全部
+    int32 CommentId = 3;
+    bool IsRead = 4; // 全删时删已读还是全部
+}

+ 11 - 0
proto/CircleMsgPushNotice.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "CircleNewPublishNotice.proto";
+message CircleMsgPushNoticeMessage {
+  string WeChatId = 1; // 商家所属微信号
+  repeated CircleCommentMessage Comments = 2; //
+  repeated CircleLikeMessage Likes = 3; //
+  int64 TaskId = 4;
+}

+ 9 - 0
proto/CircleMsgReadTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleMsgReadTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 所属朋友圈,传0为全部已读
+    int32 CommentId = 3;
+}

+ 53 - 0
proto/CircleNewPublishNotice.proto

@@ -0,0 +1,53 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message CircleCommentMessage {
+    int64 CommentId = 1; // 微信本地数据库的id
+    int64 ReplyCommentId = 2; // 回复的微信本地数据库的id
+    string Content = 3; // 评论内容
+    string FromWeChatId = 4; // 评论人的微信号
+    string ToWeChatId = 5;  // 评论对象的微信号
+    int64 PublishTime = 6; // 评论时间
+    string FromName = 7;
+    string ToName = 8;
+    int64 CircleId = 9;
+    int32 Read = 10;
+}
+
+message CircleLikeMessage {
+    string FriendId = 1;
+    int64 PublishTime = 2;
+    string NickName = 3;
+    int64 CircleId = 4;
+    int32 Read = 5;
+}
+
+message CircleInformationMessage {
+    string WeChatId = 1; // 发布者
+    int64 CircleId = 2; // 朋友圈id
+    CircleContentMessage Content = 3; // 朋友圈内容
+    repeated CircleLikeMessage Likes = 4; // 点赞好友friendid
+    repeated CircleCommentMessage Comments = 5; // 评论好友
+    int64 PublishTime = 6; // 发布时间
+
+    message CircleContentMessage {
+        string Text = 1; // 文本描述
+        repeated CircleNewsContentMessage Images = 2; // 图片列表
+        CircleNewsContentMessage Link = 3; // 链接、分享
+        CircleNewsContentMessage Video = 4; // 视频
+        string Ext = 5;
+
+        message CircleNewsContentMessage {
+            string ThumbImg = 1; // 缩略图
+            string Url = 2; // 链接地址 视频地址等
+            string Description = 3; // 标题等
+            string mediaId = 4; // 媒体id
+        }
+    }
+}
+
+message CircleNewPublishNoticeMessage {
+    string WeChatId = 1; // 所属微信号
+    CircleInformationMessage Circle = 2; // 朋友圈信息
+}

+ 14 - 0
proto/CirclePushNotice.proto

@@ -0,0 +1,14 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "CircleNewPublishNotice.proto";
+message CirclePushNoticeMessage {
+  string WeChatId = 1; // 商家所属微信号
+  repeated CircleInformationMessage Circles = 2; // 好友信息模型 多个
+  int32 Size = 3;
+  int32 Count = 4;
+  int32 Page = 5;
+  int32 RetCode = 6; // 获取朋友圈返回结果代码(0 还有更多,203 ? 207 已是最底 2001 ? 2003 拉黑? 2004 展示三天 2005 展示一个月 )
+  string RetTips = 7; // 朋友圈底线提示:非对方的朋友只显示最近十条朋友圈,朋友仅展示最近三天的朋友圈,。。。
+}

+ 9 - 0
proto/ClearAllChatMsgTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ClearAllChatMsgTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    int32 Flag = 2; // 预留的参数
+    int64 TaskId = 3; //
+}

+ 32 - 0
proto/ConfigPushNotice.proto

@@ -0,0 +1,32 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message BoolConfigMessage {
+    string Key = 1;
+    bool Value = 2;
+    string Name = 3;
+    string Desc = 4;
+}
+
+message IntConfigMessage {
+    string Key = 1;
+    int32 Value = 2;
+    string Name = 3;
+    string Desc = 4;
+}
+
+message StrConfigMessage {
+    string Key = 1;
+    string Value = 2;
+    string Name = 3;
+    string Desc = 4;
+}
+
+message ConfigPushNoticeMessage {
+    string IMEI = 1; // 设备号
+    string WeChatId = 2; //
+    repeated BoolConfigMessage BoolConfs = 7;
+    repeated IntConfigMessage IntConfs = 8;
+    repeated StrConfigMessage StrConfs = 9;
+}

+ 12 - 0
proto/ContactInfoNotice.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "ChatRoomMembersNotice.proto";
+
+message ContactInfoNoticeMessage {
+    string WeChatId = 1; //
+    StrangerMessage Contact = 2; // 联系人信息
+    int64 TaskId = 3;
+    bool Success = 4; // 是否成功
+    string ErrMsg = 5;// 错误内容描述 Success = true 忽略
+}

+ 9 - 0
proto/ContactLabelAddNotic.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "ContactLabelInfoNotice.proto";
+
+message ContactLabelAddNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    LabelInfoMessage Label = 2; // 标签
+}

+ 8 - 0
proto/ContactLabelDelNotice.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ContactLabelDelNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    int32 LabelId = 2; // 标签id
+}

+ 10 - 0
proto/ContactLabelDeleteTask.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+
+message ContactLabelDeleteTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    int32 LabelId = 2; // 标签id
+    int64 taskId = 3;
+}

+ 13 - 0
proto/ContactLabelInfoNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message LabelInfoMessage{
+    int32 LabelId = 1;
+    string LabelName = 2;
+    int64 CreateTime = 3;
+}
+message ContactLabelInfoNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    repeated LabelInfoMessage Labels = 2; // 标签列表
+}

+ 12 - 0
proto/ContactLabelTask.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ContactLabelTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string LabelName = 2; // 标签名 id!=0 会设置为该标签名
+    int32 LabelId = 3; // 标签id,0则新建标签(如存在同名标签则会失败)
+    string AddList = 4; // 新增的wxid,用,分隔
+    string DelList = 5; // 删除的wxid,用,分隔
+    int64 taskId = 6;
+}

+ 10 - 0
proto/ContactSetLabelTask.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ContactSetLabelTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string FriendId = 2; // 好友id
+    repeated int32 LabelIds = 3; // 标签id列表
+    int64 taskId = 4;
+}

+ 10 - 0
proto/ConvDelNotice.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ConvDelNoticeMessage {
+    string WeChatId = 1; //
+    string FriendId = 3; // 会话Id
+    string ConvName = 4; // 会话名称
+    string Avatar = 5; // 头像
+}

+ 34 - 0
proto/ConversationPushNotice.proto

@@ -0,0 +1,34 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+//import "TransportMessage.proto";
+
+message ConversMessage {
+    string UserName = 1; // 全局唯一识别码
+    string Digest = 2; // 消息概要显示
+    string DigestUser = 3; // 消息发送者id
+    bool IsSend = 4; // 最后消息是否自己发送
+    int32 MsgCnt = 5; // 消息条数
+    int32 UnreadCnt = 6; // 未读消息条数
+    int64 UpdateTime = 7; // 最后消息的时间
+    bool IsTop = 8; // 是否置顶
+    bool IsSilent = 9; // 是否消息免打扰
+    //int32 ChatMode = 10; //是否可以发消息
+    string ShowName = 11; // 会话名称(备注或昵称)
+    string Avatar = 12; // 头像
+    int32 AtCount = 13;
+    //string Parent = 14; //上级会话
+    string Remark = 15;
+    bool IsUnusual = 30; // 是否异常
+}
+
+message ConversationPushNoticeMessage {
+    string WeChatId = 1; // 客服个微全局唯一识别码
+    repeated ConversMessage Convers = 2;
+    int32 Size = 3;
+    int32 Count = 4;
+    int32 Page = 5;
+    int64 TaskId = 6;
+    int32 Offset = 7;
+    int32 NextOffset = 8;
+}

+ 9 - 0
proto/DeleteFriendTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message DeleteFriendTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string FriendId = 2; // 要删除的微信号
+    int64 TaskId = 3; //任务Id
+}

+ 9 - 0
proto/DeleteSNSNewsTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message DeleteSNSNewsTaskMessage {
+    string WeChatId = 1; // 所属微信
+    int64 CircleId = 2; // 朋友圈Id
+    int64 TaskId = 3; //任务Id
+}

+ 16 - 0
proto/DeviceAuthReq.proto

@@ -0,0 +1,16 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message DeviceAuthReqMessage {
+    EnumAuthType AuthType = 1; //认证方式
+    string Credential = 2; //凭证信息(不同认证方式传入不同的凭证信息)
+
+    //认证方式枚举
+    enum EnumAuthType {
+        Default = 0; //默认方式,默认使用
+        DeviceCode = 1; //设备码(用于手机客户端,此方式Credential应传入手机IMEI)
+        Username = 2; //用户名密码方式(此方式Credential应传入base64(user:pwd))
+        InternalCode = 3; //内部服务间通讯方式(此方式Credential可为空,服务器根据ip白名单来认证)
+    }
+}

+ 18 - 0
proto/DeviceAuthRsp.proto

@@ -0,0 +1,18 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message DeviceAuthRspMessage {
+    string AccessToken = 1; //授权成功后颁发给客户端的accesstoken
+    ExtraMessage Extra = 2;
+
+    message ExtraMessage { // 扩展信息
+                           int64 SupplierId = 1;
+                           int64 UnionId = 2;
+                           EnumAccountType AccountType = 3;
+                           string SupplierName = 4;
+                           string NickName = 5;
+                           string Token = 6; // 访问www使用
+    }
+}

+ 9 - 0
proto/ErrorMessage.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto;
+option go_package = "./workphone";
+import "TransportMessage.proto";
+
+message ErrorMessage {
+    EnumErrorCode ErrorCode = 1; //错误码(只在响应类消息时需要赋值)
+    string ErrorMsg = 2; //错误信息(只在响应类消息时需要赋值)
+}

+ 8 - 0
proto/FindContactTask.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message FindContactTaskMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string Content = 2; // 查找的手机号,微信号,QQ号
+}

+ 20 - 0
proto/FindContactTaskResultNotice.proto

@@ -0,0 +1,20 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message FindContactTaskResultNoticeMessage {
+    string WeChatId = 1; // 商家所属微信号
+    string SearchText = 2; // 搜索的内容
+    bool Success = 3;
+    bool IsFriend = 4;
+    string UserName = 5; // 微信id(不一定准确)
+    string Alias = 6; // 微信号
+    string NickName = 7; // 微信昵称
+    EnumGender Gender = 8; //性别
+    string Country = 9; //国家 (非必传)
+    string Province = 10; //省份
+    string City = 11; //城市
+    string Avatar = 12; //微信头像 
+    string ErrMsg = 13; //错误信息
+}

+ 13 - 0
proto/ForwardMessageByContentTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ForwardMessageByContentTaskMessage {
+    string WeChatId = 1; //
+    string FriendIds = 2; //目标人群id列表,用分号;分隔
+    int64 MsgSvrId = 3; // 消息Id,
+    int32 MsgType = 4; // 消息的原始类型,一般为49,链接消息. 42 公众号名片
+    string Content = 5; // 消息的原始内容
+    int64 TaskId = 6; //
+    string Thumb = 7; // 消息缩略图url
+}

+ 14 - 0
proto/ForwardMessageTask.proto

@@ -0,0 +1,14 @@
+
+
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ForwardMessageTaskMessage {
+    int64 MsgSrvId = 1; // 消息Id
+    string WeChatId = 2; //
+    string FriendIds = 3; // 目标人群id列表,用逗号,分隔
+    string ExtMsg = 4; // 附带消息
+    string Talker = 5; // 转发消息的会话
+    int64 TaskId = 6; //任务id
+}

+ 13 - 0
proto/ForwardMultiMessageTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message ForwardMultiMessageTaskMessage {
+    string WeChatId = 1; //
+    string Talker = 2; // 消息所属的会话
+    string FriendIds = 3; //转发目标id(包含群聊),用逗号,分隔,不超过9个
+    repeated int64 MsgIds = 4; // 消息MsgSvrId列表,需同属于一个会话
+    string ExtMsg = 5; // 附带消息
+    bool SendRecord = 6; // 缺省false:逐条转发;true:合并转发,即发送聊天记录
+    int64 TaskId = 7; //任务id
+}

+ 29 - 0
proto/FriendAddNotice.proto

@@ -0,0 +1,29 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "TransportMessage.proto";
+
+message FriendMessage {
+    string FriendId = 1; // wxid
+    string FriendNo = 2; // 微信号
+    string FriendNick = 3; // 昵称
+    string Memo = 4; // 备注
+    EnumGender Gender = 5; //性别
+    string Country = 6; //国家 (非必传)
+    string Province = 7; //省份
+    string City = 8; //城市
+    string Avatar = 9; //头像
+    string Remark=10;// 业务备注
+    int32 Type = 11; // 联系人类型,参考 (&512 消息免打扰)
+    string LabelIds = 12; // 标签Id
+    string Phone=13; // 手机号
+    string Desc=14;  // 描述
+    int32 Source=15; // 好友来源
+    string SourceExt=16; //来源扩展信息
+}
+
+message FriendAddNoticeMessage {
+    string WeChatId = 1; // 全局唯一识别码
+    FriendMessage Friend = 3; // 好友信息
+}
+

+ 26 - 0
proto/FriendAddReqListNotice.proto

@@ -0,0 +1,26 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message FriendReqMessage {
+    string FriendId = 1; // 请求好友微信内部全局唯一识别码
+    string FriendNo = 2;
+    string FriendNick = 3; // 好友的微信昵称
+    string Avatar = 4; //微信头像 
+    string Reason = 5; // 招呼语
+    EnumGender Gender = 6; //性别
+    string Province = 7; //省份 (国家用不上)
+    string City = 8; //城市
+    int32 Source = 9; // 来源 (17: 名片分享)
+    string SourceUser = 10; // 来源的微信id(推荐人,群聊房间号)
+    int64 ReqTime = 11; //最后请求的时间
+    int32 State = 12; // 状态,0 未添加,1 已添加
+    int64 FirstReq = 13; // 第一次发送请求的时间
+    // 多次消息来往暂时不上传
+}
+
+message FriendAddReqListNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    repeated FriendReqMessage Requests = 2; // 请求列表,只包含未通过的请求,时间不限,多次消息来往只上传一条
+}

+ 19 - 0
proto/FriendAddReqeustNotice.proto

@@ -0,0 +1,19 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message FriendAddReqeustNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string FriendId = 2; // 请求好友微信内部全局唯一识别码
+    string FriendNo = 3; // 微信号
+    string FriendNick = 4; // 好友的微信昵称
+    string Reason = 5; // 招呼语
+    string Avatar = 6; //微信头像 
+    int32 Source = 7; // 来源 (17: 名片分享)
+    string SourceUser = 8; // 来源的微信id(推荐人,群聊房间号)
+    EnumGender Gender = 9; //性别
+    string Province = 10; //省份 (国家用不上)
+    string City = 11; //城市
+    //string ticket = 12;
+}

+ 10 - 0
proto/FriendChangeNotice.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "FriendAddNotice.proto";
+
+message FriendChangeNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    FriendMessage Friend = 3; // 好友信息
+}
+

+ 9 - 0
proto/FriendDelNotice.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message FriendDelNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string FriendId = 3; // 删除的好友微信内部全局唯一识别码
+    int32 Reason = 4; // 0 删除,1 拉黑
+}

+ 18 - 0
proto/FriendDetectResultNotice.proto

@@ -0,0 +1,18 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message FriendDetectResultNoticeMessage {
+    string WeChatId = 1; //
+    int64 TaskId = 2; // 所执行的任务ID
+    int64 StartTime = 3; // 任务开始时间
+    int64 EndTime = 4; // 任务结束时间
+    bool IsFinished = 5;  //是否清粉完毕
+    int32 Count = 6; // 已检测人数
+    int32 SkipCount = 7; // 跳过检测人数:设置时间内检测过,聊天过,朋友圈互动过
+    int32 DelCount = 8; // 已删除的人数
+    repeated string Zombies = 9; // 僵尸粉id
+    repeated string BlockedList = 10; // 拉黑的僵尸粉
+    repeated string BannedList = 11; // 账号异常(被封号)
+    repeated string CanceledList = 12; // 账号已注销
+}

+ 14 - 0
proto/FriendPushNotice.proto

@@ -0,0 +1,14 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "FriendAddNotice.proto";
+
+message FriendPushNoticeMessage {
+  string WeChatId = 1; // 商家所属微信号
+  repeated FriendMessage Friends = 2; // 好友信息模型 多个
+  int32 Size = 3;
+  int32 Count = 4;
+  int32 Page = 5;
+  int64 TaskId = 6;
+}
+

+ 15 - 0
proto/FriendTalkNotice.proto

@@ -0,0 +1,15 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "TransportMessage.proto";
+message FriendTalkNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string FriendId = 3; // 好友微信内部全局唯一识别码
+    EnumContentType ContentType = 5; // 发送的消息内容类型
+    bytes Content = 6; // 内容 二进制流
+    int64 MsgId = 7;  //服务端的主键id
+    int64 msgSvrId = 8; // 消息唯一id
+    string Ext = 9; // 扩展信息,图片视频{"length":10000, "hdlen":20000, "duration":30} 文件大小,原图大小,视频时长
+    int64 CreateTime = 10; // 消息时间
+    string NickName = 11; // 发送者昵称
+}

+ 13 - 0
proto/GetA8KeyTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message GetA8KeyTaskMessage {
+  string WeChatId = 1; //微信唯一Id
+  int32 Type = 2; // 类型,0:辅助验证 1:公众号文章
+  string Url = 3; //
+  string UserName = 4; // 消息发送者UserName,微信团队:weixin,公众号文章:公众号id
+  string MsgSvrId = 5; // 消息id,暂时不用
+  int32 Reason = 6; //备用
+  int64 TaskId = 7; //
+}

+ 11 - 0
proto/GetContactInfoTask.proto

@@ -0,0 +1,11 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message GetContactInfoTaskMessage {
+    string WeChatId = 1; //
+    string Contact = 2; // 联系人username
+    string Chatroom = 3; // 共同的群聊
+    string Ticket = 4; // 备用
+    int64 TaskId = 5;
+}

+ 7 - 0
proto/GetFriendDetectResult.proto

@@ -0,0 +1,7 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message GetFriendDetectResultMessage {
+    string WeChatId = 1; //
+}

+ 9 - 0
proto/GetWeChatsReq.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message GetWeChatsReqMessage {
+      int64 UnionId = 1; // 账号
+      EnumAccountType AccountType = 2; // 账号类型
+      }

+ 31 - 0
proto/GetWeChatsRsp.proto

@@ -0,0 +1,31 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+import "TransportMessage.proto";
+message WeChatRspMessage {
+    string WeChatId = 1;
+    string WeChatNo = 2;
+    string WeChatNick = 3;
+    string Avatar = 4;
+    string Country = 5;
+    string Province = 6;
+    string City = 7;
+    EnumGender Gender = 8;
+    bool IsOnline = 9;
+    bool IsLogined = 10;
+    bool IsDelete = 11;
+    int64 LoginTime = 12;
+    int64 ModifyTime = 13;
+    string DeviceName = 14; // 设备名称
+    int64 LoginUnionId = 15; // 登陆的人
+    EnumAccountType LoginAccountType = 16; // 登陆人的类型 
+    bool IsUpgrading = 17; // 是否升级中
+}
+
+message GetWeChatsRspMessage {
+    int64 UnionId = 1; // UID / 子账号ID
+    EnumAccountType AccountType = 2; // 账号类型
+    int64 SupplierId = 3; // 商家Id
+    repeated WeChatRspMessage WeChats = 4; // 多个个人微信号信息
+}

+ 29 - 0
proto/GroupMemberAddProgress.proto

@@ -0,0 +1,29 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message GroupMemberAddTaskDetailMessage{
+  string wxId = 1; //微信id
+  string alias = 2; //微信号(别名)
+  string nickname = 3; //昵称
+  string avatar = 4; //头像
+  int32 gender = 5; //性别【0、女,1、男】
+  string country = 6; //国家
+  string province = 7; //省份
+  string city = 8; //城市
+  int32 updateTime = 9; //更新时间
+  int32 status = 10; //状态【1、待发送,2、正在发送,3、已忽略,4、已发送,5、已通过】
+}
+
+message GroupMemberAddProgressMessage {
+  int32 status = 1; // 任务状态【1、未开始,2、执行中,3、已暂停,4、已取消,5、已结束】
+  int32 suspendType = 2; // 暂停类型状态【0、无,1、检测到风控自动暂停,2、手动暂停】
+  double progress = 3; // 进度
+  int32 totalQuantity = 4; //总数量
+  int32 waitSendQuantity = 5;// 待发送数量
+  int32 sendingQuantity = 6;  // 发送中数量
+  int32 sendedQuantity = 7; // 已发送数量
+  int32 passedQuantity = 8; // 已通过数量
+  int32 ignoredQuantity = 9; // 已忽略数量
+  repeated GroupMemberAddTaskDetailMessage detailList = 10;
+}

+ 9 - 0
proto/HeartBeat.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+
+message HeartBeatMessage {
+    string Imei = 1; // 设备号
+    string WeChatId = 2; // 商家个人微信内部全局唯一识别码
+}

+ 24 - 0
proto/HistoryMsgPushNotice.proto

@@ -0,0 +1,24 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "TransportMessage.proto";
+
+message ChatMessage {
+    string FriendId = 1; // 好友微信内部全局唯一识别码
+    EnumContentType ContentType = 2; // 发送的消息内容类型
+    bytes Content = 3; // 内容 二进制流
+    int64 MsgId = 4;  //服务端的主键id
+    int64 MsgSvrId = 5; // 消息唯一id
+    bool IsSend = 6; // 发送或接收
+    int64 CreateTime = 7; // 发送时间
+    int32 Status = 8; //
+}
+
+message HistoryMsgPushNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    repeated ChatMessage Messages = 2;
+    int32 Size = 3; // 页大小,固定50
+    int32 Count = 4; // 总数,只在获取单个会话时有用,获取全部会话的时候不准确
+    int32 Page = 5; // 页码,从0开始
+    int64 TaskId = 6;
+}

+ 9 - 0
proto/JoinGroupByQrTask.proto

@@ -0,0 +1,9 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+message JoinGroupByQrTaskMessage {
+    string WeChatId = 1; //
+    string QrUrl = 2; // 二维码图片url
+    string QrContent = 3; // 二维码解析后的内容,与QrUrl二选一
+    int64 TaskId = 4; // 任务ID
+}

+ 12 - 0
proto/ModifyFriendMemoTask.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+message ModifyFriendMemoTaskMessage {
+    string WeChatId = 1; //
+    string FriendId = 2; // 联系人微信号
+    string Memo = 3; // 备注
+    int64 TaskId = 4; // 任务ID
+    string Desc = 5; // 描述
+    string Phone = 6; // 电话号码
+    int32 DelFlag = 7; // 删除标志  1 删除备注 2 删除描述 4 删除号码;可组合
+}

+ 13 - 0
proto/MsgDelNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+import "TransportMessage.proto";
+message MsgDelNoticeMessage {
+    string WeChatId = 1; //
+    string FriendId = 3; // 会话Id
+    bool IsSend = 4;
+    EnumContentType ContentType = 5; // 发送的消息内容类型
+    bytes Content = 6; // 内容 二进制流
+    int64 MsgId = 7;  //
+    int64 msgSvrId = 8; // 消息唯一id
+}

+ 12 - 0
proto/OneKeyLikeTask.proto

@@ -0,0 +1,12 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message OneKeyLikeTaskMessage {
+    string WeChatId = 1; //
+    int64 TaskId = 2; // 任务ID
+    int32 Rate = 3; // 百分比,10-100
+    int32 EndTime = 4; // 点赞朋友圈的最早时间,缺省24小时内(单位:秒)
+    int32 Num = 5; // 点赞数量,到达数量任务自动结束
+    int32 TimeOut = 6; // 任务执行时间,单位分钟,5-120分钟,缺省30分钟
+}

+ 10 - 0
proto/OneKeyLikeTaskResultNotice.proto

@@ -0,0 +1,10 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message OneKeyLikeTaskResultNoticeMessage {
+    string WeChatId = 1; //
+    int64 TaskId = 2; // 所执行的任务ID
+    int32 Count = 3; // 已点赞数量
+    int32 EndType = 4; //结束方式,0 正常 1 到达上次点赞位置 2 到达最大点赞数 3 朋友圈到底 4 任务超时
+}

+ 23 - 0
proto/PhoneActionTask.proto

@@ -0,0 +1,23 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+enum EnumPhoneAction {
+    None = 0; // 空
+    Reboot = 1; // 重启手机
+    UploadLog = 2; // 上传日志
+    UploadFile = 3; // 上传本地文件
+    CleanAppCache = 4; // 清除客服系统的图片缓存
+    CleanWxCache = 5; // 清除微信的图片视频缓存
+    CleanFileUrlCache = 6; // 清除手机缓存的文件url(用于防止重复上传)
+    PhoneCall = 7; // 拨打电话
+    RestartWx = 9; // 重启微信
+}
+message PhoneActionTaskMessage {
+    string WeChatId = 1;
+    string Imei = 2; // 备用,用wxid或imei来定位手机
+    EnumPhoneAction Action = 3; // 指令
+    string StrParam = 4; // 字符串参数,后续扩展用
+    int32 IntParam = 5; // 整型参数,后续扩展用
+    int64 TaskId = 6;
+}

+ 8 - 0
proto/PhoneStateTask.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PhoneStateTaskMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string Imei = 2; // WechatId和imei用于服务端选择通道,对客户端无用
+}

+ 13 - 0
proto/PhoneStateTaskResultNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PhoneStateTaskResultNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string Imei = 2; //
+    int32 BatteryLevel = 3; // 剩余电量百分比
+    int32 ChargingState = 4; // 0 未知 1 充电 2 满电 3 未充电
+    string NetType = 5; // 联网方式 4G WIFI
+    int64 SdcardFree = 6; // 外部存储(sdcard)剩余空间字节数
+    int64 SdcardTotal = 7; // 外部存储(sdcard)剩余空间字节数
+}

+ 13 - 0
proto/PhoneStateWarningNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PhoneStateWarningNoticeMessage {
+    string WeChatId = 1; // 商家个人微信内部全局唯一识别码
+    string Imei = 2; //
+    int32 BatteryLevel = 3; // 剩余电量百分比
+    int32 ChargingState = 4; // 0 未知 1 充电 2 满电 3 未充电
+    string NetType = 5; // 联网方式 4G WIFI
+    int64 SdcardFree = 6; // 外部存储(sdcard)剩余空间字节数
+    int64 SdcardTotal = 7; // 外部存储(sdcard)剩余空间字节数
+}

+ 7 - 0
proto/PostDeleteDeviceNotice.proto

@@ -0,0 +1,7 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PostDeleteDeviceNoticeMessage {
+  string IMEI = 1; // 设备IMEI
+}

+ 26 - 0
proto/PostDeviceInfoNotice.proto

@@ -0,0 +1,26 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PostDeviceInfoNoticeMessage {
+    string PhoneBrand = 1; // 手机品牌
+    string PhoneModel = 2; // 手机型号
+    int32 OSVerNumber = 3;
+    repeated DeviceAppInfoMessage AppInfos = 4; // App信息
+    string NetType = 5;
+    string WeChatId = 6; // 微信id
+    string IMEI = 7;
+    string IMSI1 = 8; // SIM卡1的IMSI
+    string IMSI2 = 9; // SIM卡2的IMSI,
+    string Number1 = 10; // SIM卡1的手机号,有可能读不到
+    string Number2 = 11; // SIM卡2的手机好,有可能读不到
+    bool IsHook = 12;
+    bool WxSupport = 13;
+
+    message DeviceAppInfoMessage {
+        string PackageName = 1;
+        string AppName = 2;
+        int32 VerNumber = 3;
+        string Version = 4;
+    }
+}

+ 13 - 0
proto/PostFriendDetectCountNotice.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PostFriendDetectCountNoticeMessage {
+    int64 TaskId = 1; // 所执行的任务ID
+    int32 Count = 2; // 已检测的好友人数
+    int32 DelCount = 3;  //已删除的好友人数
+    bool IsFinished = 4;  //是否清粉完毕
+    int32 SkipCount = 5; // 跳过检测人数:设置时间内检测过,聊天过,朋友圈互动过
+    repeated string Zombies = 6; // 僵尸粉id,未区分非好友和拉黑
+    string WeChatId = 7; // 商家个人微信内部全局唯一识别码
+}

+ 13 - 0
proto/PostFriendDetectTask.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PostFriendDetectTaskMessage {
+  string WeChatId = 1; // 微信id
+  int64 TaskId = 2; // 清粉任务ID
+  string Message = 3; // 消息内容(内容为空时发空名片,对方无感知;不为空则发送文本消息,对方能收到)
+  bool OnlyCheck = 4; // false 检测到立即删除,true 不删除,通知到服务端
+  int32 SkipHour = 5; // 跳过多少小时内有互动的好友(聊天,朋友圈互动,上次已检测等),缺省72小时
+  int32 Mode = 6; // &01 不检测朋友圈 (废弃,改进后朋友圈检测效率提高)
+  int32 Max = 7; // 检测最大人数(不包括跳过检测的,配合SkipHour可以将整个清粉动作分成几天完成)
+}

+ 8 - 0
proto/PostMessageReadNotice.proto

@@ -0,0 +1,8 @@
+syntax = "proto3";
+package Jubo.JuLiao.IM.Wx.Proto; //命名空间约定
+option go_package = "./workphone";
+
+message PostMessageReadNoticeMessage {
+    string WeChatId = 1; // 所属微信
+    string FriendId = 2; // 好友id
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов