From 8eeeb199fcc5a2dd75d51370add877a5a45acf66 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 11 Apr 2024 15:20:57 +0800 Subject: [PATCH] 1 --- server/imserver_new/guild/guildmgr.go | 117 +++++++++------------- server/imserver_new/model/guild.go | 30 ++++++ server/imserver_new/model/guild_member.go | 38 +++++++ 3 files changed, 113 insertions(+), 72 deletions(-) create mode 100644 server/imserver_new/model/guild.go create mode 100644 server/imserver_new/model/guild_member.go diff --git a/server/imserver_new/guild/guildmgr.go b/server/imserver_new/guild/guildmgr.go index 6d6fec59..ae231626 100644 --- a/server/imserver_new/guild/guildmgr.go +++ b/server/imserver_new/guild/guildmgr.go @@ -5,6 +5,7 @@ import ( "f5" "main/common" "main/constant" + "main/model" "fmt" "mt" "strings" @@ -181,63 +182,26 @@ func (this *guildMgr) isValidGuildJob(guildJob int32) bool { func (this *guildMgr) asyncCreateGuildTask(task *f5.LockAsyncTask, guildId string, accountId string, avatar int32, name string, cb func(int32, string, string)) { - if this.internalGetGuildByAccountId(accountId) != nil { - task.SetFail() - cb(3, "You already have a cube", "") - return - } - if this.internalGetGuildByGuildName(name) != nil { - task.SetFail() - cb(4, "Cube name already exists", "") - return - } - if this.isUsingName(name) { - task.SetFail() - cb(4, "Cube name already exists", "") - return - } this.addUsingName(name) nowTime := f5.GetApp().GetNowSeconds() - f5.GetJsStyleDb().Insert( - constant.FRIEND_DB, - "t_guild", - [][]string{ - {"guild_id", guildId}, - {"guild_name", name}, - {"owner_id", accountId}, - {"creator_id", accountId}, - {"badge", q5.ToString(avatar)}, - {"max_members", q5.ToString(constant.GuildMaxMembers)}, - {"createtime", q5.ToString(nowTime)}, - {"modifytime", q5.ToString(nowTime)}, - }, + model.Guild.New( + guildId, + name, + accountId, + avatar, + nowTime, func (err error, lastInsertId int64, rowsAffected int64) { - this.removeUsingName(name) + defer this.removeUsingName(name) if err != nil { task.SetFail() cb(500, "server internal error", "") return } - f5.GetJsStyleDb().Upsert( - constant.FRIEND_DB, - "t_guild_member", - [][]string{ - {"member_id", accountId}, - }, - [][]string{ - {"guild_id", guildId}, - {"guild_job", q5.ToString(constant.GuildMemberLevelLeader)}, - {"deleted", q5.ToString(0)}, - {"join_time", q5.ToString(nowTime)}, - }, - [][]string{ - {"guild_id", guildId}, - {"guild_job", q5.ToString(constant.GuildMemberLevelLeader)}, - {"member_id", accountId}, - {"join_time", q5.ToString(nowTime)}, - {"createtime", q5.ToString(nowTime)}, - {"modifytime", q5.ToString(nowTime)}, - }, + model.GuildMember.Force( + accountId, + guildId, + constant.GuildMemberLevelLeader, + nowTime, func (err error, lastInsertId int64, rowsAffected int64) { if err != nil { task.SetFail() @@ -276,35 +240,41 @@ func (this *guildMgr) asyncCreateGuildTask(task *f5.LockAsyncTask, func (this *guildMgr) AsyncCreateGuild(accountId string, sessionId string, avatar int32, name string, cb func(int32, string, string)) { guildId := q5.ToString(f5.GetApp().NewNodeUuid()) + verifyFunc := func (task *f5.LockAsyncTask, cb func(int32, string, string)) bool { + if len(name) <= 0 { + task.SetFail() + cb(1, "Name cantnot be empty", "") + return false + } + if this.isNameTooLong(name) { + task.SetFail() + cb(2, "Name is to long", "") + return false + } + if !this.isValidName(name) { + task.SetFail() + cb(2, "Name is invalid", "") + return false + } + if this.GetGuildByAccountId(accountId) != nil { + task.SetFail() + cb(3, "You already have a cube", "") + return false + } + if this.GetGuildByGuildName(name) != nil { + task.SetFail() + cb(4, "Cube name already exists", "") + return false + } + return true + } f5.NewLockAsyncTask([][]string{ {constant.GUILD_ID_LOCK_KEY, guildId}, {constant.GUILD_NAME_LOCK_KEY, name}, {constant.GUILD_MEMBER_LOCK_KEY, accountId}, }, func (task *f5.LockAsyncTask) { - if len(name) <= 0 { - task.SetFail() - cb(1, "Name cantnot be empty", "") - return - } - if this.isNameTooLong(name) { - task.SetFail() - cb(2, "Name is to long", "") - return - } - if !this.isValidName(name) { - task.SetFail() - cb(2, "Name is invalid", "") - return - } - if this.GetGuildByAccountId(accountId) != nil { - task.SetFail() - cb(3, "You already have a cube", "") - return - } - if this.GetGuildByGuildName(name) != nil { - task.SetFail() - cb(4, "Cube name already exists", "") + if !verifyFunc(task, cb) { return } params := map[string]string{ @@ -327,6 +297,9 @@ func (this *guildMgr) AsyncCreateGuild(accountId string, sessionId string, avata cb(4, "item not enough", "") return } + if !verifyFunc(task, cb) { + return + } this.asyncCreateGuildTask(task, guildId, accountId, avatar, name, cb) }) }) diff --git a/server/imserver_new/model/guild.go b/server/imserver_new/model/guild.go new file mode 100644 index 00000000..34e2e297 --- /dev/null +++ b/server/imserver_new/model/guild.go @@ -0,0 +1,30 @@ +package model + +import ( + "q5" + "f5" + "main/constant" +) + +type guild struct { + +} + +var Guild = new (guild) + +func (this *guild) New(guildId string, guildName string, creatorId string, avatar int32, nowTime int64, + cb func (error, int64, int64)) { + f5.GetJsStyleDb().Insert( + constant.FRIEND_DB, + "t_guild", + [][]string{ + {"guild_id", guildId}, + {"guild_name", guildName}, + {"creator_id", creatorId}, + {"badge", q5.ToString(avatar)}, + {"max_members", q5.ToString(constant.GuildMaxMembers)}, + {"createtime", q5.ToString(nowTime)}, + {"modifytime", q5.ToString(nowTime)}, + }, + cb) +} diff --git a/server/imserver_new/model/guild_member.go b/server/imserver_new/model/guild_member.go new file mode 100644 index 00000000..89a38dee --- /dev/null +++ b/server/imserver_new/model/guild_member.go @@ -0,0 +1,38 @@ +package model + +import ( + "q5" + "f5" + "main/constant" +) + +type guildMember struct { + +} + +var GuildMember = new (guildMember) + +func (this *guildMember) Force(memberId string, guildId string, guildJob int32, nowTime int64, + cb func (error, int64, int64)) { + f5.GetJsStyleDb().Upsert( + constant.FRIEND_DB, + "t_guild_member", + [][]string{ + {"member_id", memberId}, + }, + [][]string{ + {"guild_id", guildId}, + {"guild_job", q5.ToString(guildJob)}, + {"deleted", q5.ToString(0)}, + {"join_time", q5.ToString(nowTime)}, + }, + [][]string{ + {"guild_id", guildId}, + {"guild_job", q5.ToString(guildJob)}, + {"member_id", memberId}, + {"join_time", q5.ToString(nowTime)}, + {"createtime", q5.ToString(nowTime)}, + {"modifytime", q5.ToString(nowTime)}, + }, + cb) +}