diff --git a/cmd/Open-IM-SDK-Core b/cmd/Open-IM-SDK-Core index 855e89361..992f76df0 160000 --- a/cmd/Open-IM-SDK-Core +++ b/cmd/Open-IM-SDK-Core @@ -1 +1 @@ -Subproject commit 855e893610c905e3105484c3519613b993301bd2 +Subproject commit 992f76df0ee500a0377523b0780d3a85f2275755 diff --git a/config/config.yaml b/config/config.yaml index c38960b68..d4a8c3e87 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -4,44 +4,44 @@ serverversion: 2.0.0 #---------------Infrastructure configuration---------------------# etcd: - etcdSchema: openIM - etcdAddr: [ 127.0.0.1:2379 ] + etcdSchema: openIM #默认即可 + etcdAddr: [ 127.0.0.1:2379 ] #单机部署时,默认即可 mysql: - dbMysqlAddress: [ 127.0.0.1:13306 ] - dbMysqlUserName: root - dbMysqlPassword: openIM - dbMysqlDatabaseName: openIM_v2 - dbTableName: eMsg + dbMysqlAddress: [ 127.0.0.1:13306 ] #mysql地址 目前仅支持单机,默认即可 + dbMysqlUserName: root #mysql用户名,建议修改 + dbMysqlPassword: openIM # mysql密码,建议修改 + dbMysqlDatabaseName: openIM_v2 #默认即可 + dbTableName: eMsg #默认即可 dbMsgTableNum: 1 dbMaxOpenConns: 20 dbMaxIdleConns: 10 dbMaxLifeTime: 120 mongo: - dbAddress: [ 127.0.0.1:37017 ] + dbAddress: [ 127.0.0.1:37017 ] #redis地址 目前仅支持单机,默认即可 dbDirect: false dbTimeout: 10 - dbDatabase: openIM + dbDatabase: openIM #mongo db 默认即可 dbSource: admin - dbUserName: - dbPassword: + dbUserName: #mongo用户名,建议先不设置 + dbPassword: #mongo密码,建议先不设置 dbMaxPoolSize: 20 - dbRetainChatRecords: 7 + dbRetainChatRecords: 3650 #mongo保存离线消息时间(天),根据需求修改 redis: - dbAddress: 127.0.0.1:16379 + dbAddress: 127.0.0.1:16379 #redis地址 目前仅支持单机,默认即可 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 - dbPassWord: openIM + dbPassWord: openIM #redis密码 建议修改 kafka: ws2mschat: - addr: [ 127.0.0.1:9092 ] + addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ws2ms_chat" ms2pschat: - addr: [ 127.0.0.1:9092 ] + addr: [ 127.0.0.1:9092 ] #kafka配置,默认即可 topic: "ms2ps_chat" consumergroupid: msgToMongo: mongo @@ -55,6 +55,7 @@ kafka: # The service ip default is empty, # automatically obtain the machine's valid network card ip as the service ip, # otherwise the configuration ip is preferred +#如果是单机模式,用0.0.0.0或者不填,默认即可 serverip: 0.0.0.0 # endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问 @@ -73,27 +74,28 @@ endpoints: rpc_message_cms: openim_rpc_admin_cms api: - openImApiPort: [ 10000 ] + openImApiPort: [ 10000 ] #api服务端口,默认即可,需要开放此端口或做nginx转发 cmsapi: - openImCmsApiPort: [ 8000 ] + openImCmsApiPort: [ 8000 ] #管理后台api服务端口,默认即可,需要开放此端口或做nginx转发 sdk: - openImSdkWsPort: [ 30000 ] + openImSdkWsPort: [ 30000 ] #jssdk服务端口,默认即可,项目中使用jssdk才需开放此端口或做nginx转发 -credential: +credential: #腾讯cos,发送图片、视频、文件时需要,请自行申请后替换,必须修改 tencent: appID: 1302656840 region: ap-chengdu bucket: echat-1302656840 secretID: AKIDGNYVChzIQinu7QEgtNp0hnNgqcV8vZTC secretKey: kz15vW83qM6dBUWIq681eBZA0c0vlIbe - minio: + minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化时相应改动 bucket: openim location: us-east-1 endpoint: http://127.0.0.1:9000 accessKeyID: minioadmin secretAccessKey: minioadmin -rpcport: + +rpcport: #rpc服务端口 默认即可 openImUserPort: [ 10100 ] openImFriendPort: [ 10200 ] openImOfflineMessagePort: [ 10300 ] @@ -114,7 +116,7 @@ rpcport: stateChange: switch: false -rpcregistername: +rpcregistername: #rpc注册服务名,默认即可 openImUserName: User openImFriendName: Friend openImOfflineMessageName: OfflineMessage @@ -129,52 +131,55 @@ rpcregistername: log: storageLocation: ../logs/ rotationTime: 24 - remainRotationCount: 5 - remainLogLevel: 6 + remainRotationCount: 5 #日志数量 + remainLogLevel: 6 #日志级别 6表示全都打印,测试阶段建议设置为6 elasticSearchSwitch: false elasticSearchAddr: [ 127.0.0.1:9201 ] elasticSearchUser: "" elasticSearchPassword: "" -modulename: +modulename: #日志文件按模块命名,默认即可 longConnSvrName: msg_gateway msgTransferName: msg_transfer pushName: push longconnsvr: - openImWsPort: [ 17778 ] + openImWsPort: [ 17778 ] # ws服务端口,默认即可,要开放此端口或做nginx转发 websocketMaxConnNum: 10000 websocketMaxMsgLen: 4096 websocketTimeOut: 10 push: - tpns: + tpns: #腾讯推送,暂未测试 暂不要使用 ios: accessID: 1600018281 secretKey: 3cd68a77a95b89e5089a1aca523f318f android: accessID: 111 secretKey: 111 - jpns: + jpns: #极光推送 在极光后台申请后,修改以下四项,必须修改 appKey: cf47465a368f24c659608e7e masterSecret: 02204efe3f3832947a236ee5 pushUrl: "https://api.jpush.cn/v3/push" pushIntent: "intent:#Intent;component=io.openim.app.enterprisechat/io.openim.app.enterprisechat.MainActivity;end" manager: + #app管理员userID和对应的secret 建议修改。 用于管理后台登录,也可以用户管理后台对应的api appManagerUid: [ "openIM123456","openIM654321", "openIM333", "openIMAdmin"] secrets: [ "openIM1","openIM2", "openIM333", "openIMAdmin"] secret: tuoyun - +# 多端互踢策略 +# 1:多平台登录:Android、iOS、Windows、Mac 每种平台只能一个在线,web端可以多个同时在线 multiloginpolicy: 1 #token config tokenpolicy: - accessSecret: "open_im_server" + accessSecret: "open_im_server" #token生成相关,默认即可 # Token effective time day as a unit - accessExpire: 7 + accessExpire: 3650 #token过期时间(天) 默认即可 messagecallback: + callbackSwitch: false callbackUrl: "http://www.xxx.com/msg/judge" #TimeOut use second as unit callbackTimeOut: 10 @@ -189,7 +194,7 @@ messagejudge: # state: # stateChange: # switch: false - +#ios系统推送声音以及标记计数 iospush: pushSound: "xxx" badgeCount: true @@ -378,11 +383,11 @@ notification: unreadCount: false offlinePush: switch: true - title: "Deleted a friend" - desc: "Deleted a friend" - ext: "Deleted a friend" + title: "deleted a friend" + desc: "deleted a friend" + ext: "deleted a friend" defaultTips: - tips: "Deleted a friend" # + tips: "deleted a friend" # friendRemarkSet: @@ -405,11 +410,11 @@ notification: unreadCount: false offlinePush: switch: true - title: "Blocked a user" - desc: "Blocked a user" - ext: "Blocked a user" + title: "blocked a user" + desc: "blocked a user" + ext: "blocked a user" defaultTips: - tips: "Blocked a user" # + tips: "blocked a user" # blackDeleted: @@ -435,7 +440,7 @@ notification: desc: "Remove a blocked user" ext: "Remove a blocked user" defaultTips: - tips: "Remove a blocked user" + tips: "remove a blocked user" #####################conversation######################### conversationOptUpdate: @@ -454,23 +459,24 @@ notification: #---------------demo configuration---------------------# #The following configuration items are applied to openIM Demo configuration +#是否启动demo,如果自身没有账号体系,设置为true demoswitch: true demo: - openImDemoPort: [ 42233 ] - alismsverify: - accessKeyId: LTAI5tJPkn4HuuePdiLdGqe71 - accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV1 - signName: OpenIM Corporation - verificationCodeTemplateCode: SMS_2268101641 - superCode: 666666 + openImDemoPort: [ 42233 ] #demo对外服务端口,默认即可,需要开放此端口或做nginx转发 + alismsverify: #阿里云短信配置,在阿里云申请成功后修改以下四项,必须修改 + accessKeyId: LTAI5tJPkn4HuuePdiLdGqe7 + accessKeySecret: 4n9OJ7ZCVN1U6KeHDAtOyNeVZcjOuV + signName: 托云信息技术 + verificationCodeTemplateCode: SMS_226810164 + superCode: 666666 #超级验证码,建议修改掉,收不到短信验证码时可以用此替代 # second - codeTTL: 60 - mail: + codeTTL: 300 + mail: #仅支持qq邮箱,具体操作参考 https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256 必须修改 title: "openIM" - senderMail: "1765567899@qq.com" - senderAuthorizationCode: "1gxyausfoevlzbfag" + senderMail: "765567899@qq.com" + senderAuthorizationCode: "gxyausfoevlzbfag" smtpAddr: "smtp.qq.com" - smtpPort: 25 + smtpPort: 25 #需开放此端口 出口方向 diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go index f09b9acd7..8ff3e5906 100644 --- a/internal/api/manage/management_chat.go +++ b/internal/api/manage/management_chat.go @@ -7,12 +7,14 @@ package manage import ( + api "Open_IM/pkg/base_info" "Open_IM/pkg/common/config" "Open_IM/pkg/common/constant" "Open_IM/pkg/common/log" "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" pbChat "Open_IM/pkg/proto/chat" + "Open_IM/pkg/proto/sdk_ws" open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" @@ -40,11 +42,13 @@ func newUserSendMsgReq(params *ManagementSendMsgReq) *pbChat.SendMsgReq { newContent = utils.StructToJsonString(params.Content) default: } - options := make(map[string]bool, 2) + var options map[string]bool if params.IsOnlineOnly { + options = make(map[string]bool, 5) utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false) utils.SetSwitchFromOptions(options, constant.IsHistory, false) utils.SetSwitchFromOptions(options, constant.IsPersistent, false) + utils.SetSwitchFromOptions(options, constant.IsSenderSync, false) } pbData := pbChat.SendMsgReq{ OperationID: params.OperationID, @@ -152,20 +156,16 @@ func ManagementSendMsg(c *gin.Context) { log.Info("", "", "api ManagementSendMsg call, api call rpc...") - reply, err := client.SendMsg(context.Background(), pbData) + RpcResp, err := client.SendMsg(context.Background(), pbData) if err != nil { log.NewError(params.OperationID, "call delete UserSendMsg rpc server failed", err.Error()) c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call UserSendMsg rpc server failed"}) return } - log.Info("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String()) - - c.JSON(http.StatusOK, gin.H{ - "errCode": reply.ErrCode, - "errMsg": reply.ErrMsg, - "sendTime": reply.SendTime, - "msgID": reply.ClientMsgID, - }) + log.Info("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), RpcResp.String()) + resp := api.ManagementSendMsgResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, ResultList: server_api_params.UserSendMsgResp{ServerMsgID: RpcResp.ServerMsgID, ClientMsgID: RpcResp.ClientMsgID, SendTime: RpcResp.SendTime}} + log.Info(params.OperationID, "ManagementSendMsg return", resp) + c.JSON(http.StatusOK, resp) } diff --git a/internal/demo/register/login.go b/internal/demo/register/login.go index b6ec445f6..3a477e12e 100644 --- a/internal/demo/register/login.go +++ b/internal/demo/register/login.go @@ -37,7 +37,7 @@ func Login(c *gin.Context) { r, err := im_mysql_model.GetRegister(account) if err != nil { - log.NewError(params.OperationID, "user have not register", params.Password, account) + log.NewError(params.OperationID, "user have not register", params.Password, account, err.Error()) c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "Mobile phone number is not registered"}) return } diff --git a/internal/demo/register/verify.go b/internal/demo/register/verify.go index b362fd340..01fafbb92 100644 --- a/internal/demo/register/verify.go +++ b/internal/demo/register/verify.go @@ -45,9 +45,16 @@ func Verify(c *gin.Context) { log.NewInfo("0", " params.VerificationCode != config.Config.Demo.SuperCode", params.VerificationCode, config.Config.Demo) log.NewInfo(params.OperationID, "begin get form redis", account) if params.UsedFor == 0 { - params.UsedFor = 1 + params.UsedFor = constant.VerificationCodeForRegister } - accountKey := account + "_" + constant.VerificationCodeForRegisterSuffix + var accountKey string + switch params.UsedFor { + case constant.VerificationCodeForRegister: + accountKey = account + "_" + constant.VerificationCodeForRegisterSuffix + case constant.VerificationCodeForReset: + accountKey = account + "_" + constant.VerificationCodeForResetSuffix + } + code, err := db.DB.GetAccountCode(accountKey) log.NewInfo(params.OperationID, "redis phone number and verificating Code", accountKey, code, params) if err != nil { diff --git a/internal/msg_transfer/logic/db.go b/internal/msg_transfer/logic/db.go index edc269f9f..806b782c0 100644 --- a/internal/msg_transfer/logic/db.go +++ b/internal/msg_transfer/logic/db.go @@ -18,6 +18,6 @@ func saveUserChat(uid string, msg *pbMsg.MsgDataToMQ) error { pbSaveData := pbMsg.MsgDataToDB{} pbSaveData.MsgData = msg.MsgData log.NewInfo(msg.OperationID, "IncrUserSeq cost time", utils.GetCurrentTimestampByMill()-time) - return db.DB.SaveUserChat(uid, pbSaveData.MsgData.SendTime, &pbSaveData) + return db.DB.SaveUserChatMongo2(uid, pbSaveData.MsgData.SendTime, &pbSaveData) // return db.DB.SaveUserChatMongo2(uid, pbSaveData.MsgData.SendTime, &pbSaveData) } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 6e39ab266..40255d071 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -746,6 +746,7 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* OwnerUserID: v.CreatorUserID, Status: v.Status, CreatorUserID: v.CreatorUserID, + CreateTime: uint32(v.CreateTime.Unix()), }, GroupMasterId: groupMember.UserID, GroupMasterName: groupMember.Nickname, @@ -890,10 +891,9 @@ func (s *groupServer) AddGroupMembersCMS(_ context.Context, req *pbGroup.AddGrou resp.Failed = append(resp.Failed, userId) } else { resp.Success = append(resp.Success, userId) - chat.MemberInvitedNotification(req.OperationId, req.GroupId, req.OpUserId, "admin add", resp.Success) } - } + chat.MemberInvitedNotification(req.OperationId, req.GroupId, req.OpUserId, "admin add you to group", resp.Success) return resp, nil } diff --git a/internal/rpc/msg/pull_message.go b/internal/rpc/msg/pull_message.go index 126c6eb29..10a0978aa 100644 --- a/internal/rpc/msg/pull_message.go +++ b/internal/rpc/msg/pull_message.go @@ -39,8 +39,8 @@ func (rpc *rpcChat) GetMaxAndMinSeq(_ context.Context, in *pbMsg.GetMaxAndMinSeq func (rpc *rpcChat) PullMessageBySeqList(_ context.Context, in *open_im_sdk.PullMessageBySeqListReq) (*open_im_sdk.PullMessageBySeqListResp, error) { log.NewInfo(in.OperationID, "rpc PullMessageBySeqList is arriving", in.String()) resp := new(open_im_sdk.PullMessageBySeqListResp) - msgList, err := commonDB.DB.GetMsgBySeqList(in.UserID, in.SeqList, in.OperationID) -// msgList, err := commonDB.DB.GetMsgBySeqListMongo2(in.UserID, in.SeqList, in.OperationID) + //msgList, err := commonDB.DB.GetMsgBySeqList(in.UserID, in.SeqList, in.OperationID) + msgList, err := commonDB.DB.GetMsgBySeqListMongo2(in.UserID, in.SeqList, in.OperationID) if err != nil { log.ErrorByKv("PullMessageBySeqList data error", in.OperationID, in.String()) resp.ErrCode = 201 diff --git a/internal/timed_task/timed_task.go b/internal/timed_task/timed_task.go index bda907ea7..5b0264123 100644 --- a/internal/timed_task/timed_task.go +++ b/internal/timed_task/timed_task.go @@ -17,7 +17,7 @@ func (t *TimeTask) timedDeleteUserChat() { for i := 0; i < count; i++ { time.Sleep(10 * time.Millisecond) uid, _ := db.DB.MgoSkipUID(i) - db.DB.DelUserChat(uid) + db.DB.DelUserChatMongo2(uid) } go func() { diff --git a/pkg/base_info/manage_api_struct.go b/pkg/base_info/manage_api_struct.go index 61e2bbba4..4b2061b57 100644 --- a/pkg/base_info/manage_api_struct.go +++ b/pkg/base_info/manage_api_struct.go @@ -2,6 +2,7 @@ package base_info import ( pbRelay "Open_IM/pkg/proto/relay" + "Open_IM/pkg/proto/sdk_ws" pbUser "Open_IM/pkg/proto/user" ) @@ -36,3 +37,8 @@ type AccountCheckResp struct { CommResp ResultList []*pbUser.AccountCheckResp_SingleUserStatus `json:"data"` } + +type ManagementSendMsgResp struct { + CommResp + ResultList server_api_params.UserSendMsgResp `json:"data"` +} diff --git a/pkg/base_info/user_api_struct.go b/pkg/base_info/user_api_struct.go index f4be785f2..10f20376c 100644 --- a/pkg/base_info/user_api_struct.go +++ b/pkg/base_info/user_api_struct.go @@ -10,8 +10,8 @@ type GetUsersInfoReq struct { } type GetUsersInfoResp struct { CommResp - UserInfoList []*open_im_sdk.PublicUserInfo - Data []map[string]interface{} `json:"data"` + UserInfoList []*open_im_sdk.PublicUserInfo `json:"-"` + Data []map[string]interface{} `json:"data"` } type UpdateSelfUserInfoReq struct { diff --git a/pkg/call_back_struct/common.go b/pkg/call_back_struct/common.go new file mode 100644 index 000000000..90b77eda8 --- /dev/null +++ b/pkg/call_back_struct/common.go @@ -0,0 +1 @@ +package call_back_struct diff --git a/pkg/call_back_struct/message.go b/pkg/call_back_struct/message.go new file mode 100644 index 000000000..90b77eda8 --- /dev/null +++ b/pkg/call_back_struct/message.go @@ -0,0 +1 @@ +package call_back_struct diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 50c0e544f..c5e2d38b9 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -54,10 +54,16 @@ const ( FriendRemarkSetNotification = 1206 //set_friend_remark? BlackAddedNotification = 1207 //add_black BlackDeletedNotification = 1208 //remove_black + ConversationOptChangeNotification = 1300 // change conversation opt + UserNotificationBegin = 1301 UserInfoUpdatedNotification = 1303 //SetSelfInfoTip = 204 + ConversationNotification = 1307 + ConversationNotNotification = 1308 + ConversationDefault = 0 + UserNotificationEnd = 1399 - ConversationOptChangeNotification = 1300 // change conversation opt + GroupNotificationBegin = 1500 GroupCreatedNotification = 1501 GroupInfoSetNotification = 1502 @@ -126,10 +132,10 @@ const ( MinioDurationTimes = 3600 // verificationCode used for - VerificationCodeForRegister = 1 - VerificationCodeForReset = 2 + VerificationCodeForRegister = 1 + VerificationCodeForReset = 2 VerificationCodeForRegisterSuffix = "_forRegister" - VerificationCodeForResetSuffix = "_forReset" + VerificationCodeForResetSuffix = "_forReset" ) var ContentType2PushContent = map[int64]string{ @@ -183,4 +189,4 @@ func GroupIsBanPrivateChat(status int32) bool { return true } - const BigVersion = "v3" \ No newline at end of file +const BigVersion = "v3" diff --git a/pkg/common/db/model.go b/pkg/common/db/model.go index f990d95a3..0576e6286 100644 --- a/pkg/common/db/model.go +++ b/pkg/common/db/model.go @@ -3,15 +3,20 @@ package db import ( "Open_IM/pkg/common/config" "Open_IM/pkg/common/log" -// "context" -// "fmt" + "Open_IM/pkg/utils" + "fmt" + "go.mongodb.org/mongo-driver/mongo/options" + + // "context" + // "fmt" "github.com/garyburd/redigo/redis" "gopkg.in/mgo.v2" "time" + "context" //"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" -// "go.mongodb.org/mongo-driver/mongo/options" + // "go.mongodb.org/mongo-driver/mongo/options" ) @@ -29,61 +34,60 @@ func key(dbAddress, dbName string) string { } func init() { - var mgoSession *mgo.Session + //var mgoSession *mgo.Session var mongoClient *mongo.Client var err1 error //mysql init initMysqlDB() // mongo init // "mongodb://sysop:moon@localhost/records" - // uri := "mongodb://user:pass@sample.host:27017/?maxPoolSize=20&w=majority" - //uri := fmt.Sprintf("mongodb://%s:%s@%s/%s/?maxPoolSize=%d", - // config.Config.Mongo.DBUserName, config.Config.Mongo.DBPassword, - // config.Config.Mongo.DBAddress[0],config.Config.Mongo.DBDatabase, - // config.Config.Mongo.DBMaxPoolSize) - // - //mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) - //if err != nil{ - // log.NewError(" mongo.Connect failed, try ", err.Error(), uri) - // time.Sleep(time.Duration(30) * time.Second) - // mongoClient, err1 = mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) - // if err1 != nil { - // log.NewError(" mongo.Connect failed, panic", err.Error(), uri) - // panic(err1.Error()) - // } - //} - - - - mgoDailInfo := &mgo.DialInfo{ - Addrs: config.Config.Mongo.DBAddress, - Direct: config.Config.Mongo.DBDirect, - Timeout: time.Second * time.Duration(config.Config.Mongo.DBTimeout), - Database: config.Config.Mongo.DBDatabase, - Source: config.Config.Mongo.DBSource, - Username: config.Config.Mongo.DBUserName, - Password: config.Config.Mongo.DBPassword, - PoolLimit: config.Config.Mongo.DBMaxPoolSize, - } - mgoSession, err := mgo.DialWithInfo(mgoDailInfo) - - if err != nil { + uri := "mongodb://sample.host:27017/?maxPoolSize=20&w=majority" + uri = fmt.Sprintf("mongodb://%s/%s/?maxPoolSize=%d", + config.Config.Mongo.DBAddress[0],config.Config.Mongo.DBDatabase, + config.Config.Mongo.DBMaxPoolSize) - mgoSession, err1 = mgo.DialWithInfo(mgoDailInfo) + mongoClient, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) + if err != nil{ + log.NewError(" mongo.Connect failed, try ", utils.GetSelfFuncName(), err.Error(), uri) + time.Sleep(time.Duration(30) * time.Second) + mongoClient, err1 = mongo.Connect(context.TODO(), options.Client().ApplyURI(uri)) if err1 != nil { - log.NewError(" mongo.Connect failed, panic", err.Error()) + log.NewError(" mongo.Connect retry failed, panic", err.Error(), uri) panic(err1.Error()) } } + log.NewInfo("0", utils.GetSelfFuncName(), "mongo driver client init success") DB.mongoClient = mongoClient - DB.mgoSession = mgoSession - DB.mgoSession.SetMode(mgo.Monotonic, true) - c := DB.mgoSession.DB(config.Config.Mongo.DBDatabase).C(cChat) - err = c.EnsureIndexKey("uid") - if err != nil { - panic(err.Error()) - } + //mgoDailInfo := &mgo.DialInfo{ + // Addrs: config.Config.Mongo.DBAddress, + // Direct: config.Config.Mongo.DBDirect, + // Timeout: time.Second * time.Duration(config.Config.Mongo.DBTimeout), + // Database: config.Config.Mongo.DBDatabase, + // Source: config.Config.Mongo.DBSource, + // Username: config.Config.Mongo.DBUserName, + // Password: config.Config.Mongo.DBPassword, + // PoolLimit: config.Config.Mongo.DBMaxPoolSize, + //} + //mgoSession, err = mgo.DialWithInfo(mgoDailInfo) + // + //if err != nil { + // + // mgoSession, err1 = mgo.DialWithInfo(mgoDailInfo) + // if err1 != nil { + // log.NewError(" mongo.Connect failed, panic", err.Error()) + // panic(err1.Error()) + // } + //} + + //DB.mgoSession = mgoSession + //DB.mgoSession.SetMode(mgo.Monotonic, true) + //c := DB.mgoSession.DB(config.Config.Mongo.DBDatabase).C(cChat) + //err = c.EnsureIndexKey("uid") + //if err != nil { + // panic(err.Error()) + //} + // // redis pool init DB.redisPool = &redis.Pool{ diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 7a9c4b302..3b489af23 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -65,7 +65,12 @@ func (d *DataBases) GetMinSeqFromMongo(uid string) (MinSeq uint32, err error) { //return MinSeq, nil } +func (d *DataBases) GetMinSeqFromMongo2(uid string) (MinSeq uint32, err error) { + return 1, nil +} + func (d *DataBases) GetMsgBySeqList(uid string, seqList []uint32, operationID string) (seqMsg []*open_im_sdk.MsgData, err error) { + log.NewInfo(operationID, utils.GetSelfFuncName(), uid, seqList) var hasSeqList []uint32 singleCount := 0 session := d.mgoSession.Clone() diff --git a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go index 2e5d7df86..897e5e212 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/demo_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/demo_model.go @@ -30,7 +30,7 @@ func SetPassword(account, password, ex string) error { func ResetPassword(account, password string) error { r := db.Register{ - Password:password, + Password: password, } dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn.LogMode(true) diff --git a/script/sdk_svr_start.sh b/script/sdk_svr_start.sh index 2ba1295cd..e9604e5ea 100644 --- a/script/sdk_svr_start.sh +++ b/script/sdk_svr_start.sh @@ -6,7 +6,6 @@ source ./function.sh list1=$(cat $config_path | grep openImApiPort | awk -F '[:]' '{print $NF}') list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}') list3=$(cat $config_path | grep openImSdkWsPort | awk -F '[:]' '{print $NF}') -list4=$(cat $config_path | grep openImCmsApiPort | awk - F '[:]' '{print $NF}') list_to_string $list1 api_ports=($ports_array) list_to_string $list2 @@ -14,7 +13,6 @@ ws_ports=($ports_array) list_to_string $list3 sdk_ws_ports=($ports_array) list_to_string $list4 -cms_api_ports=($ports_array)