From 65be1263b9fe241e11c54708895c91e3f6592357 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 15 Feb 2022 18:28:54 +0800 Subject: [PATCH 1/8] make file --- cmd/open_im_cms_api/Makefile | 25 +++++++++ cmd/rpc/open_im_admin_cms/Makefile | 23 ++++++++ cmd/rpc/open_im_message_cms/Makefile | 23 ++++++++ cmd/rpc/open_im_msg/main.go | 2 +- cmd/rpc/open_im_statistics/Makefile | 23 ++++++++ cmd/rpc/open_im_user/main.go | 2 +- config/config.yaml | 6 +-- internal/rpc/group/group.go | 2 - .../mysql_model/im_mysql_model/group_model.go | 52 ++++++++++++++++--- 9 files changed, 145 insertions(+), 13 deletions(-) create mode 100644 cmd/rpc/open_im_admin_cms/Makefile create mode 100644 cmd/rpc/open_im_message_cms/Makefile create mode 100644 cmd/rpc/open_im_statistics/Makefile diff --git a/cmd/open_im_cms_api/Makefile b/cmd/open_im_cms_api/Makefile index e69de29bb..31304542d 100644 --- a/cmd/open_im_cms_api/Makefile +++ b/cmd/open_im_cms_api/Makefile @@ -0,0 +1,25 @@ +.PHONY: all build run gotool install clean help + +BINARY_NAME=open_im_cms_api +BIN_DIR=../../bin/ + + +all: gotool build + +build: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" + +run: + @go run ./ + +gotool: + go fmt ./ + go vet ./ + +install: + make build + mv ${BINARY_NAME} ${BIN_DIR} + +clean: + @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi + diff --git a/cmd/rpc/open_im_admin_cms/Makefile b/cmd/rpc/open_im_admin_cms/Makefile new file mode 100644 index 000000000..f6efc1c08 --- /dev/null +++ b/cmd/rpc/open_im_admin_cms/Makefile @@ -0,0 +1,23 @@ +.PHONY: all build run gotool install clean help + +BINARY_NAME=open_im_admin_cms +BIN_DIR=../../../bin/ + +all: gotool build + +build: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" + +run: + @go run ./ + +gotool: + go fmt ./ + go vet ./ + +install: + make build + mv ${BINARY_NAME} ${BIN_DIR} + +clean: + @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi diff --git a/cmd/rpc/open_im_message_cms/Makefile b/cmd/rpc/open_im_message_cms/Makefile new file mode 100644 index 000000000..4ac4cba3a --- /dev/null +++ b/cmd/rpc/open_im_message_cms/Makefile @@ -0,0 +1,23 @@ +.PHONY: all build run gotool install clean help + +BINARY_NAME=open_im_message_cms +BIN_DIR=../../../bin/ + +all: gotool build + +build: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" + +run: + @go run ./ + +gotool: + go fmt ./ + go vet ./ + +install: + make build + mv ${BINARY_NAME} ${BIN_DIR} + +clean: + @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi diff --git a/cmd/rpc/open_im_msg/main.go b/cmd/rpc/open_im_msg/main.go index b79d53f1a..7344facf4 100644 --- a/cmd/rpc/open_im_msg/main.go +++ b/cmd/rpc/open_im_msg/main.go @@ -6,7 +6,7 @@ import ( ) func main() { - rpcPort := flag.Int("port", 10301, "rpc listening port") + rpcPort := flag.Int("port", 10300, "rpc listening port") flag.Parse() rpcServer := rpcChat.NewRpcChatServer(*rpcPort) rpcServer.Run() diff --git a/cmd/rpc/open_im_statistics/Makefile b/cmd/rpc/open_im_statistics/Makefile new file mode 100644 index 000000000..37dbb3efe --- /dev/null +++ b/cmd/rpc/open_im_statistics/Makefile @@ -0,0 +1,23 @@ +.PHONY: all build run gotool install clean help + +BINARY_NAME=open_im_statistics +BIN_DIR=../../../bin/ + +all: gotool build + +build: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" + +run: + @go run ./ + +gotool: + go fmt ./ + go vet ./ + +install: + make build + mv ${BINARY_NAME} ${BIN_DIR} + +clean: + @if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi diff --git a/cmd/rpc/open_im_user/main.go b/cmd/rpc/open_im_user/main.go index 4382dc9fe..91b6e55b5 100644 --- a/cmd/rpc/open_im_user/main.go +++ b/cmd/rpc/open_im_user/main.go @@ -6,7 +6,7 @@ import ( ) func main() { - rpcPort := flag.Int("port", 10101, "rpc listening port") + rpcPort := flag.Int("port", 10100, "rpc listening port") flag.Parse() rpcServer := user.NewUserServer(*rpcPort) rpcServer.Run() diff --git a/config/config.yaml b/config/config.yaml index eea6bcbb7..bdd51bb57 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -8,7 +8,7 @@ etcd: etcdAddr: [ 127.0.0.1:2379 ] mysql: - dbMysqlAddress: [ 127.0.0.1:13306 ] + dbMysqlAddress: [ 43.128.5.63:13306 ] dbMysqlUserName: root dbMysqlPassword: openIM dbMysqlDatabaseName: openIM @@ -19,7 +19,7 @@ mysql: dbMaxLifeTime: 120 mongo: - dbAddress: [ 127.0.0.1:37017 ] + dbAddress: [ 43.128.5.63:37017 ] dbDirect: false dbTimeout: 10 dbDatabase: openIM @@ -30,7 +30,7 @@ mongo: dbRetainChatRecords: 7 redis: - dbAddress: 127.0.0.1:16379 + dbAddress: 43.128.5.63:16379 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 2a0f59f8d..4fc915971 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -696,7 +696,6 @@ func (s *groupServer) GetGroup(_ context.Context, req *pbGroup.GetGroupReq) (*pb groupMember, err := imdb.GetGroupMaster(v.GroupID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMaster error", err.Error()) - continue } resp.CMSGroups = append(resp.CMSGroups, &pbGroup.CMSGroup{ GroupInfo: &open_im_sdk.GroupInfo{ @@ -738,7 +737,6 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* groupMember, err := imdb.GetGroupMaster(v.GroupID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - continue } resp.CMSGroups = append(resp.CMSGroups, &pbGroup.CMSGroup{ GroupInfo: &open_im_sdk.GroupInfo{ 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 a1e8318fd..46ec80738 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 @@ -6,6 +6,7 @@ import ( "Open_IM/pkg/utils" "errors" "fmt" + "github.com/jinzhu/gorm" "time" ) @@ -124,17 +125,56 @@ func OperateGroupRole(userId, groupId string, roleLevel int32) error { groupMember := db.GroupMember{ UserID: userId, GroupID: groupId, - RoleLevel: roleLevel, } updateInfo := db.GroupMember{ RoleLevel: roleLevel, } - result := dbConn.Table("group_members").Find(&groupMember).Update(updateInfo) - if result.Error != nil { - return result.Error + groupMaster := db.GroupMember{ } - if result.RowsAffected == 0 { - return errors.New(fmt.Sprintf("user %s not exist in group %s or already operate", userId, groupId)) + switch roleLevel { + case constant.GroupOwner: + return 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, + }) + 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)) + } + + result = dbConn.Table("group_members").First(&groupMember).Update(updateInfo) + 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 nil + }) + case constant.GroupOrdinaryUsers: + return 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)) + } + if groupMaster.UserID == userId { + return errors.New(fmt.Sprintf("user %s is master of %s, cant set to ordinary user", userId, groupId)) + } else { + result = dbConn.Table("group_members").Find(&groupMember).Update(updateInfo) + 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 nil + }) } return nil } From 2996d8537df333a79e49601df0e7ee1df7f0cb2a Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 15 Feb 2022 18:29:38 +0800 Subject: [PATCH 2/8] add makefile --- config/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index bdd51bb57..eea6bcbb7 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -8,7 +8,7 @@ etcd: etcdAddr: [ 127.0.0.1:2379 ] mysql: - dbMysqlAddress: [ 43.128.5.63:13306 ] + dbMysqlAddress: [ 127.0.0.1:13306 ] dbMysqlUserName: root dbMysqlPassword: openIM dbMysqlDatabaseName: openIM @@ -19,7 +19,7 @@ mysql: dbMaxLifeTime: 120 mongo: - dbAddress: [ 43.128.5.63:37017 ] + dbAddress: [ 127.0.0.1:37017 ] dbDirect: false dbTimeout: 10 dbDatabase: openIM @@ -30,7 +30,7 @@ mongo: dbRetainChatRecords: 7 redis: - dbAddress: 43.128.5.63:16379 + dbAddress: 127.0.0.1:16379 dbMaxIdle: 128 dbMaxActive: 0 dbIdleTimeout: 120 From a533a3e0ef751a28e3b3a40665979995820053e4 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 15 Feb 2022 18:43:03 +0800 Subject: [PATCH 3/8] makefile --- script/path_info.cfg | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/script/path_info.cfg b/script/path_info.cfg index ea9fa76e9..7fe9622b6 100644 --- a/script/path_info.cfg +++ b/script/path_info.cfg @@ -39,11 +39,15 @@ config_path="../config/config.yaml" service_source_root=( #api service file ../cmd/open_im_api/ + ../cmd/open_im_cms_api/ #rpc service file ../cmd/rpc/open_im_user/ ../cmd/rpc/open_im_friend/ ../cmd/rpc/open_im_group/ ../cmd/rpc/open_im_auth/ + ../cmd/rpc/open_im_admin_cms/ + ../cmd/rpc/open_im_message_cms/ + ../cmd/rpc/open_im_statistics/ ${msg_gateway_source_root} ${msg_transfer_source_root} ${msg_source_root} @@ -56,11 +60,15 @@ service_source_root=( service_names=( #api service filename open_im_api + open_im_cms_api #rpc service filename open_im_user open_im_friend open_im_group open_im_auth + open_im_admin_cms + open_im_message_cms + open_im_statistics ${msg_gateway_name} ${msg_transfer_name} ${msg_name} From 994cebea82b1ad957792ff3577a82ce274134345 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 15 Feb 2022 18:57:41 +0800 Subject: [PATCH 4/8] makefile --- script/start_rpc_service.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/script/start_rpc_service.sh b/script/start_rpc_service.sh index 9491a4fe8..bc5f41e3d 100644 --- a/script/start_rpc_service.sh +++ b/script/start_rpc_service.sh @@ -8,11 +8,15 @@ source ./function.sh service_filename=( #api open_im_api + open_im_cms_api #rpc open_im_user open_im_friend open_im_group open_im_auth + open_im_admin_cms + open_im_message_cms + open_im_statistics ${msg_name} ) @@ -20,11 +24,15 @@ service_filename=( service_port_name=( #api port name openImApiPort + openImCmsApiPort #rpc port name openImUserPort openImFriendPort openImGroupPort openImAuthPort + openImAdminCmsPort + openImMessageCmsPort + openImStatisticsPort openImOfflineMessagePort ) From 2647e1cdac801e0217d8bde172a97cf961403e5c Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 16 Feb 2022 11:06:35 +0800 Subject: [PATCH 5/8] alter yaml cfg --- config/config.yaml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index eea6bcbb7..c92b13536 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -60,6 +60,7 @@ serverip: 0.0.0.0 # endpoints 内部组件间访问的端点host名称,访问时,可以内部直接访问 host:port 来访问 endpoints: api: openim_api + cmsapi: openim_cms_api push: openim_push msg_gateway: openim_msg_gateway rpc_auth: openim_rpc_auth @@ -67,6 +68,9 @@ endpoints: rpc_group: openim_rpc_group rpc_msg: openim_rpc_msg rpc_user: openim_rpc_user + rpc_statistic: openim_rpc_statistic + rpc_admin_cms: openim_rpc_admin_cms + rpc_message_cms: openim_rpc_admin_cms api: openImApiPort: [ 10000 ] @@ -94,8 +98,8 @@ rpcport: openImPushPort: [ 10700 ] openImOpenImStatisticPort: [ 10800 ] OpenImMessageCMSPort: [ 10900 ] - openImAdminCMSPort: [11000] - c2c: + openImAdminCMSPort: [ 11000 ] + c2c:git callbackBeforeSendMsg: switch: false timeoutStrategy: 1 #1:send @@ -153,7 +157,7 @@ push: pushIntent: "intent:#Intent;component=io.openim.app.enterprisechat/io.openim.app.enterprisechat.MainActivity;end" manager: appManagerUid: [ "openIM123456","openIM654321", "openIM333", "openIMAdmin"] - secrets: [ "openIM1","openIM2", "openIM333" ] + secrets: [ "openIM1","openIM2", "openIM333", "openIMAdmin"] secret: tuoyun From 028171a91a635416a253ea57d48b81cffc4d2781 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 16 Feb 2022 11:13:13 +0800 Subject: [PATCH 6/8] yaml cfg alter --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index c92b13536..ecbbb0894 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -99,7 +99,7 @@ rpcport: openImOpenImStatisticPort: [ 10800 ] OpenImMessageCMSPort: [ 10900 ] openImAdminCMSPort: [ 11000 ] - c2c:git + c2c: callbackBeforeSendMsg: switch: false timeoutStrategy: 1 #1:send From 36d39669e4df0c9016596d65262cc6741a89f0f5 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 16 Feb 2022 12:23:08 +0800 Subject: [PATCH 7/8] alter deploy --- config/config.yaml | 6 +++--- script/check_all.sh | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index ecbbb0894..ed3001e8b 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -96,9 +96,9 @@ rpcport: openImGroupPort: [ 10500 ] openImAuthPort: [ 10600 ] openImPushPort: [ 10700 ] - openImOpenImStatisticPort: [ 10800 ] - OpenImMessageCMSPort: [ 10900 ] - openImAdminCMSPort: [ 11000 ] + openImStatisticsPort: [ 10800 ] + OpenImMessageCmsPort: [ 10900 ] + openImAdminCmsPort: [ 11000 ] c2c: callbackBeforeSendMsg: switch: false diff --git a/script/check_all.sh b/script/check_all.sh index 0c7313743..b94aa893a 100644 --- a/script/check_all.sh +++ b/script/check_all.sh @@ -4,6 +4,7 @@ source ./style_info.cfg source ./path_info.cfg source ./function.sh service_port_name=( + openImCmsApiPort openImApiPort openImUserPort openImFriendPort @@ -15,6 +16,9 @@ service_port_name=( openImWsPort openImSdkWsPort openImDemoPort + openImAdminCmsPort + openImMessageCmsPort + openImStatisticsPort ) switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}') for i in ${service_port_name[*]}; do From a599a334a3c7faa9b6c5942b51b876d2d8b68f81 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Wed, 16 Feb 2022 14:11:47 +0800 Subject: [PATCH 8/8] alter cfg --- config/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index ed3001e8b..f40bfa62a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -75,7 +75,7 @@ endpoints: api: openImApiPort: [ 10000 ] cmsapi: - openImCMSPort: [ 8000 ] + openImCmsApiPort: [ 8000 ] sdk: openImSdkWsPort: [ 30000 ] @@ -97,7 +97,7 @@ rpcport: openImAuthPort: [ 10600 ] openImPushPort: [ 10700 ] openImStatisticsPort: [ 10800 ] - OpenImMessageCmsPort: [ 10900 ] + openImMessageCmsPort: [ 10900 ] openImAdminCmsPort: [ 11000 ] c2c: callbackBeforeSendMsg: