This commit is contained in:
aozhiwei 2024-04-11 15:20:57 +08:00
parent 3ab4cd821b
commit 8eeeb199fc
3 changed files with 113 additions and 72 deletions

View File

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

View File

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

View File

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