diff --git a/deploy/config.example.yaml b/deploy/config.example.yaml index 9f14c96d4..f0ae8314e 100644 --- a/deploy/config.example.yaml +++ b/deploy/config.example.yaml @@ -73,6 +73,8 @@ api: openImApiPort: [ 10000 ] sdk: openImSdkWsPort: [ 30000 ] +cmsapi: + openImCmsApiPort: [ 8000 ] credential: tencent: @@ -91,7 +93,9 @@ rpcport: openImGroupPort: [ 10500 ] openImAuthPort: [ 10600 ] openImPushPort: [ 10700 ] - + openImStatisticsPort: [ 10800 ] + openImMessageCmsPort: [ 10900 ] + openImAdminCmsPort: [ 11000 ] rpcregistername: openImUserName: User diff --git a/internal/demo/register/send_code.go b/internal/demo/register/send_code.go index ad5fda3d6..37e355b46 100644 --- a/internal/demo/register/send_code.go +++ b/internal/demo/register/send_code.go @@ -60,9 +60,9 @@ func SendVerificationCode(c *gin.Context) { case constant.VerificationCodeForReset: accountKey = account + "_" + constant.VerificationCodeForResetSuffix } - log.NewInfo(params.OperationID, params.UsedFor,"begin store redis", accountKey) rand.Seed(time.Now().UnixNano()) code := 100000 + rand.Intn(900000) + log.NewInfo(params.OperationID, params.UsedFor,"begin store redis", accountKey, code) err := db.DB.SetAccountCode(accountKey, code, config.Config.Demo.CodeTTL) if err != nil { log.NewError(params.OperationID, "set redis error", accountKey, "err", err.Error()) diff --git a/internal/demo/register/verify.go b/internal/demo/register/verify.go index 958e513c1..b362fd340 100644 --- a/internal/demo/register/verify.go +++ b/internal/demo/register/verify.go @@ -49,9 +49,9 @@ func Verify(c *gin.Context) { } accountKey := account + "_" + constant.VerificationCodeForRegisterSuffix code, err := db.DB.GetAccountCode(accountKey) - log.NewInfo(params.OperationID, "redis phone number and verificating Code", account, code) + log.NewInfo(params.OperationID, "redis phone number and verificating Code", accountKey, code, params) if err != nil { - log.NewError(params.OperationID, "Verification code expired", account, "err", err.Error()) + log.NewError(params.OperationID, "Verification code expired", accountKey, "err", err.Error()) data := make(map[string]interface{}) data["account"] = account c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code expired!", "data": data}) diff --git a/internal/msg_transfer/logic/history_msg_handler.go b/internal/msg_transfer/logic/history_msg_handler.go index 78b3ba79c..b78695c11 100644 --- a/internal/msg_transfer/logic/history_msg_handler.go +++ b/internal/msg_transfer/logic/history_msg_handler.go @@ -32,7 +32,7 @@ func (mc *HistoryConsumerHandler) Init() { } func (mc *HistoryConsumerHandler) handleChatWs2Mongo(msg []byte, msgKey string) { - log.InfoByKv("msg come mongo!!!", "", "msg", string(msg)) + log.NewInfo("msg come mongo!!!", "", "msg", string(msg)) time := utils.GetCurrentTimestampByNano() msgFromMQ := pbMsg.MsgDataToMQ{} err := proto.Unmarshal(msg, &msgFromMQ) diff --git a/internal/msg_transfer/logic/persistent_msg_handler.go b/internal/msg_transfer/logic/persistent_msg_handler.go index c90901212..59c338294 100644 --- a/internal/msg_transfer/logic/persistent_msg_handler.go +++ b/internal/msg_transfer/logic/persistent_msg_handler.go @@ -33,7 +33,7 @@ func (pc *PersistentConsumerHandler) Init() { } func (pc *PersistentConsumerHandler) handleChatWs2Mysql(msg []byte, msgKey string) { - log.InfoByKv("msg come here mysql!!!", "", "msg", string(msg)) + log.NewInfo("msg come here mysql!!!", "", "msg", string(msg)) msgFromMQ := pbMsg.MsgDataToMQ{} err := proto.Unmarshal(msg, &msgFromMQ) if err != nil { diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 7d5fd547f..6e39ab266 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -778,10 +778,26 @@ func (s *groupServer) DeleteGroup(_ context.Context, req *pbGroup.DeleteGroupReq func (s *groupServer) OperateUserRole(_ context.Context, req *pbGroup.OperateUserRoleReq) (*pbGroup.OperateUserRoleResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String()) resp := &pbGroup.OperateUserRoleResp{} - if err := imdb.OperateGroupRole(req.UserId, req.GroupId, req.RoleLevel); err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "OperateGroupRole error", err.Error()) + oldOwnerUserID, err := imdb.GetGroupMaster(req.GroupId) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMaster failed", err.Error()) return resp, http.WrapError(constant.ErrDB) } + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) + client := pbGroup.NewGroupClient(etcdConn) + var reqPb pbGroup.TransferGroupOwnerReq + reqPb.OperationID = req.OperationID + reqPb.NewOwnerUserID = req.UserId + reqPb.GroupID = req.GroupId + reqPb.OpUserID = "cms admin" + reqPb.OldOwnerUserID = oldOwnerUserID.UserID + reply, err := client.TransferGroupOwner(context.Background(), &reqPb) + if reply.CommonResp.ErrCode != 0 || err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "TransferGroupOwner rpc failed") + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) + } + } return resp, nil } @@ -838,6 +854,8 @@ func (s *groupServer) RemoveGroupMembersCMS(_ context.Context, req *pbGroup.Remo OpUserID: req.OpUserId, } chat.MemberKickedNotification(reqKick, resp.Success) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "success: ", resp.Success) + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "failed: ", resp.Failed) return resp, nil } diff --git a/pkg/common/config/config.go b/pkg/common/config/config.go index 8f89376cb..ae0d3cadc 100644 --- a/pkg/common/config/config.go +++ b/pkg/common/config/config.go @@ -25,6 +25,9 @@ type config struct { Api struct { GinPort []int `yaml:"openImApiPort"` } + CmsApi struct{ + GinPort []int `yaml:"openImCmsApiPort"` + } Sdk struct { WsPort []int `yaml:"openImSdkWsPort"` } diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_model.go index 46ec80738..a9fe13236 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_model.go @@ -116,10 +116,10 @@ func DeleteGroup(groupId string) error { return nil } -func OperateGroupRole(userId, groupId string, roleLevel int32) error { +func OperateGroupRole(userId, groupId string, roleLevel int32) (string, string, error) { dbConn, err := db.DB.MysqlDB.DefaultGormDB() if err != nil { - return err + return "", "", err } dbConn.LogMode(true) groupMember := db.GroupMember{ @@ -133,7 +133,7 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) error { } switch roleLevel { case constant.GroupOwner: - return dbConn.Transaction(func(tx *gorm.DB) error { + err = dbConn.Transaction(func(tx *gorm.DB) error { result := dbConn.Table("group_members").Where("group_id = ? and role_level = ?", groupId, constant.GroupOwner).First(&groupMaster).Update(&db.GroupMember{ RoleLevel: constant.GroupOrdinaryUsers, }) @@ -153,14 +153,15 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) error { } return nil }) + case constant.GroupOrdinaryUsers: - return dbConn.Transaction(func(tx *gorm.DB) error { + err = dbConn.Transaction(func(tx *gorm.DB) error { result := dbConn.Table("group_members").Where("group_id = ? and role_level = ?", groupId, constant.GroupOwner).First(&groupMaster) if result.Error != nil { return result.Error } if result.RowsAffected == 0 { - return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) + return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) } if groupMaster.UserID == userId { return errors.New(fmt.Sprintf("user %s is master of %s, cant set to ordinary user", userId, groupId)) @@ -170,13 +171,13 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) error { return result.Error } if result.RowsAffected == 0 { - return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) + return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) } } return nil }) } - return nil + return "", "", nil } func GetGroupsCountNum(group db.Group) (int32, error) { diff --git a/pkg/common/db/redisModel.go b/pkg/common/db/redisModel.go index 9245e7b1f..c8529b97c 100644 --- a/pkg/common/db/redisModel.go +++ b/pkg/common/db/redisModel.go @@ -41,7 +41,7 @@ func (d *DataBases) JudgeAccountEXISTS(account string) (bool, error) { } func (d *DataBases) SetAccountCode(account string, code, ttl int) (err error) { key := AccountTempCode + account - _, err = d.Exec("SET", key, code) + _, err = d.Exec("SET", key, code, "ex", ttl) return err } func (d *DataBases) GetAccountCode(account string) (string, error) { @@ -49,7 +49,6 @@ func (d *DataBases) GetAccountCode(account string) (string, error) { return redis.String(d.Exec("GET", key)) } - //Perform seq auto-increment operation of user messages func (d *DataBases) IncrUserSeq(uid string) (uint64, error) { key := userIncrSeq + uid diff --git a/script/sdk_svr_start.sh b/script/sdk_svr_start.sh index 97c694233..2ba1295cd 100644 --- a/script/sdk_svr_start.sh +++ b/script/sdk_svr_start.sh @@ -6,13 +6,15 @@ 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 ws_ports=($ports_array) list_to_string $list3 sdk_ws_ports=($ports_array) - +list_to_string $list4 +cms_api_ports=($ports_array) diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index bc5f41e3d..bbd7f3c5a 100644 --- a/script/start_rpc_service.sh +++ b/script/start_rpc_service.sh @@ -29,7 +29,7 @@ service_port_name=( openImUserPort openImFriendPort openImGroupPort - openImAuthPort + openImAdminCmsPort openImMessageCmsPort openImStatisticsPort