```
feat(friend): 添加好友系统功能实现 完善好友管理功能,包括添加好友、回复好友请求、删除好友等操作, 同时优化了相关数据结构和接口定义。 BREAKING CHANGE: 调整了黑名单数据结构,将BlackInfo从结构体改为uint32数组 ```
This commit is contained in:
@@ -73,7 +73,7 @@ type CommendSvrInfo struct {
|
|||||||
FriendInfoLen uint32 `struc:"sizeof=FriendInfo"`
|
FriendInfoLen uint32 `struc:"sizeof=FriendInfo"`
|
||||||
FriendInfo []FriendInfo // 好友id
|
FriendInfo []FriendInfo // 好友id
|
||||||
BlackInfoLen uint32 `struc:"sizeof=BlackInfo"`
|
BlackInfoLen uint32 `struc:"sizeof=BlackInfo"`
|
||||||
BlackInfo []BlackInfo // 黑名单id
|
BlackInfo []uint32 // 黑名单id
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewInInfo 创建并返回一个新的 commendSvrInfo 结构体实例
|
// NewInInfo 创建并返回一个新的 commendSvrInfo 结构体实例
|
||||||
@@ -87,7 +87,7 @@ func NewInInfo() *CommendSvrInfo {
|
|||||||
ServerInfoLen: 0,
|
ServerInfoLen: 0,
|
||||||
ServerList: make([]ServerInfo, 0),
|
ServerList: make([]ServerInfo, 0),
|
||||||
FriendInfo: make([]FriendInfo, 0),
|
FriendInfo: make([]FriendInfo, 0),
|
||||||
BlackInfo: make([]BlackInfo, 0),
|
|
||||||
//Reversed: 0,
|
//Reversed: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,15 +120,10 @@ func newServerInfo() *ServerInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type FriendInfo struct {
|
type FriendInfo struct {
|
||||||
BlackInfo
|
Userid uint32
|
||||||
TimePoke uint32
|
TimePoke uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
type BlackInfo struct {
|
|
||||||
Userid uint32
|
|
||||||
//TimePoke uint32
|
|
||||||
}
|
|
||||||
|
|
||||||
// func Refurh() {
|
// func Refurh() {
|
||||||
// l.Lock()
|
// l.Lock()
|
||||||
// defer l.Unlock()
|
// defer l.Unlock()
|
||||||
|
|||||||
@@ -38,11 +38,16 @@ func (h Controller) GetServerOnline(data *user.SidInfo, c gnet.Conn) (result *rp
|
|||||||
|
|
||||||
result.IsVip = 1
|
result.IsVip = 1
|
||||||
result.ServerList = rpc.GetServerInfoList(service.NewBaseSysUserService().GetPerson(data.Head.UserID).Debug)
|
result.ServerList = rpc.GetServerInfoList(service.NewBaseSysUserService().GetPerson(data.Head.UserID).Debug)
|
||||||
|
ser := playerservice.NewUserService(data.Head.UserID)
|
||||||
|
f, b := ser.Friend.Get()
|
||||||
|
for _, v := range f {
|
||||||
|
result.FriendInfo = append(result.FriendInfo, rpc.FriendInfo{v, 1})
|
||||||
|
}
|
||||||
|
result.BlackInfo = b
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
||||||
// share.ShareManager.DeleteSession(t1)
|
// share.ShareManager.DeleteSession(t1)
|
||||||
|
|
||||||
ser := playerservice.NewUserService(data.Head.UserID)
|
|
||||||
kickErr := ser.Info.Kick(data.Head.UserID)
|
kickErr := ser.Info.Kick(data.Head.UserID)
|
||||||
if kickErr != nil {
|
if kickErr != nil {
|
||||||
fmt.Println("踢人失败", kickErr)
|
fmt.Println("踢人失败", kickErr)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package controller
|
|||||||
import (
|
import (
|
||||||
"blazing/common/data/xmlres"
|
"blazing/common/data/xmlres"
|
||||||
"blazing/common/socket/errorcode"
|
"blazing/common/socket/errorcode"
|
||||||
"blazing/cool"
|
|
||||||
"blazing/logic/service/fight"
|
"blazing/logic/service/fight"
|
||||||
"blazing/logic/service/pet"
|
"blazing/logic/service/pet"
|
||||||
"blazing/logic/service/player"
|
"blazing/logic/service/player"
|
||||||
@@ -120,9 +119,8 @@ func (h Controller) TogglePetBagWarehouse(
|
|||||||
|
|
||||||
index, pet, ok := player.FindPet(data.CatchTime)
|
index, pet, ok := player.FindPet(data.CatchTime)
|
||||||
if ok {
|
if ok {
|
||||||
if cool.Config.ServerInfo.IsVip == 0 { //正式服才会真正放会精灵
|
|
||||||
player.Service.Pet.UPdate(*pet)
|
player.Service.Pet.UPdate(*pet)
|
||||||
}
|
|
||||||
|
|
||||||
player.Info.PetList = append(player.Info.PetList[:index], player.Info.PetList[index+1:]...)
|
player.Info.PetList = append(player.Info.PetList[:index], player.Info.PetList[index+1:]...)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package controller
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"blazing/common/socket/errorcode"
|
"blazing/common/socket/errorcode"
|
||||||
|
"blazing/logic/service/fight"
|
||||||
"blazing/logic/service/friend"
|
"blazing/logic/service/friend"
|
||||||
"blazing/logic/service/player"
|
"blazing/logic/service/player"
|
||||||
)
|
)
|
||||||
@@ -15,3 +16,53 @@ func (h Controller) GetOnlineFriends(data *friend.SeeOnlineInboundInfo, c *playe
|
|||||||
result.Friends = make([]friend.OnlineInfo, 0)
|
result.Friends = make([]friend.OnlineInfo, 0)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FriendAdd 处理添加好友请求
|
||||||
|
// data: 包含要添加好友的用户ID
|
||||||
|
// c: 当前玩家对象
|
||||||
|
// 返回: 无数据内容的响应和错误码
|
||||||
|
func (h Controller) FriendAdd(data *friend.FriendAddInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||||
|
|
||||||
|
v, ok := c.GetSpace().User.Load(data.UserID)
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
v.SendPackCmd(8001, friend.InformMessage{
|
||||||
|
UserID: c.Info.UserID,
|
||||||
|
Nick: c.Info.Nick,
|
||||||
|
Type: data.Head.CMD,
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// FriendAnswer 处理好友请求的回复
|
||||||
|
// data: 包含发起好友请求的用户ID和回复标志(1为同意,0为拒绝)
|
||||||
|
// c: 当前玩家对象
|
||||||
|
// 返回: 无数据内容的响应和错误码
|
||||||
|
func (h Controller) FriendAnswer(data *friend.FriendAnswerInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||||
|
v, ok := c.GetSpace().User.Load(data.UserID)
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
v.SendPackCmd(8001, friend.InformMessage{
|
||||||
|
UserID: c.Info.UserID,
|
||||||
|
Nick: c.Info.Nick,
|
||||||
|
Type: data.Head.CMD,
|
||||||
|
Accept: data.Flag,
|
||||||
|
})
|
||||||
|
|
||||||
|
v.(*player.Player).Service.Friend.Add(c.Info.UserID)
|
||||||
|
c.Service.Friend.Add(data.UserID)
|
||||||
|
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// FriendRemove 删除好友
|
||||||
|
// data: 包含要删除的好友ID
|
||||||
|
// c: 当前玩家对象
|
||||||
|
// 返回: 无数据内容的响应和错误码
|
||||||
|
func (h Controller) FriendRemove(data *friend.FriendRemoveInboundInfo, c *player.Player) (result fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||||
|
c.Service.Friend.Del(data.UserID)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package friend
|
|||||||
|
|
||||||
import "blazing/logic/service/common"
|
import "blazing/logic/service/common"
|
||||||
|
|
||||||
//基地查看好友列表
|
// 基地查看好友列表
|
||||||
type SeeOnlineInboundInfo struct {
|
type SeeOnlineInboundInfo struct {
|
||||||
Head common.TomeeHeader `cmd:"2157" struc:"skip"`
|
Head common.TomeeHeader `cmd:"2157" struc:"skip"`
|
||||||
|
|
||||||
@@ -20,3 +20,34 @@ type SeeOnlineOutboundInfo struct {
|
|||||||
FriendsLen uint32 `json:"friendsLen" struc:"sizeof=Friends"`
|
FriendsLen uint32 `json:"friendsLen" struc:"sizeof=Friends"`
|
||||||
Friends []OnlineInfo `json:"friends" fieldDescription:"好友在线列表" `
|
Friends []OnlineInfo `json:"friends" fieldDescription:"好友在线列表" `
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 添加好友请求
|
||||||
|
type FriendAddInboundInfo struct {
|
||||||
|
Head common.TomeeHeader `cmd:"2151" struc:"skip"`
|
||||||
|
UserID uint32 `json:"userID"` // 添加人的玩家id
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回复好友请求
|
||||||
|
type FriendAnswerInboundInfo struct {
|
||||||
|
Head common.TomeeHeader `cmd:"2152" struc:"skip"`
|
||||||
|
UserID uint32 `json:"userID"` // 添加人的玩家id
|
||||||
|
Flag uint32 `json:"flag"` // 1为同意添加好友 0为拒绝
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除好友请求
|
||||||
|
type FriendRemoveInboundInfo struct {
|
||||||
|
Head common.TomeeHeader `cmd:"2153" struc:"skip"`
|
||||||
|
UserID uint32 `json:"userID"` // 删除的玩家id
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通知消息结构 - 服务器主动发送给前端
|
||||||
|
type InformMessage struct {
|
||||||
|
Type uint32 `json:"type"` // cmdid,如2151(添加好友)、2152(回复好友)
|
||||||
|
UserID uint32 `json:"userID"` // 对方的userid
|
||||||
|
Nick string `struc:"[16]byte"`
|
||||||
|
Accept uint32 `json:"accept"` // 是否接受: 1为接受,0为拒绝
|
||||||
|
ServerID uint32 `json:"serverID"` // 对方服务器ID
|
||||||
|
MapType uint32 `json:"mapType"` // 对方地图类型
|
||||||
|
MapID uint32 `json:"mapID"` // 对方地图ID
|
||||||
|
MapName string `struc:"[64]byte"` // 对方的地图名称,64字节UTF8
|
||||||
|
}
|
||||||
|
|||||||
38
modules/player/model/FRIEND.go
Normal file
38
modules/player/model/FRIEND.go
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"blazing/cool"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 表名常量
|
||||||
|
const TableNamePlayerFriend = "player_friend"
|
||||||
|
|
||||||
|
// Friend 对应数据库表 player_cdk_log,用于记录CDK兑换日志
|
||||||
|
type Friend struct {
|
||||||
|
Base
|
||||||
|
PlayerID uint64 `gorm:"not null;index:idx_player_friend_by_player_id;comment:'所属玩家ID'" json:"player_id"`
|
||||||
|
Friend []uint32 `gorm:"type:jsonb; comment:'好友列表'" json:"friend"`
|
||||||
|
Black []uint32 `gorm:"type:jsonb; comment:'黑名单列表'" json:"black"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TableName 返回表名
|
||||||
|
func (*Friend) TableName() string {
|
||||||
|
return TableNamePlayerFriend
|
||||||
|
}
|
||||||
|
|
||||||
|
// GroupName 返回表组名
|
||||||
|
func (*Friend) GroupName() string {
|
||||||
|
return "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFriend 创建一个新的CDK记录
|
||||||
|
func NewFriend() *Friend {
|
||||||
|
return &Friend{
|
||||||
|
Base: *NewBase(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// init 程序启动时自动创建表
|
||||||
|
func init() {
|
||||||
|
cool.CreateTable(&Friend{})
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ type Title struct {
|
|||||||
PlayerID uint64 `gorm:"not null;index:idx_player_title_by_player_id;comment:'所属玩家ID'" json:"player_id"`
|
PlayerID uint64 `gorm:"not null;index:idx_player_title_by_player_id;comment:'所属玩家ID'" json:"player_id"`
|
||||||
//TitleID uint32 `gorm:"not null;comment:'称号ID'" json:"title_id"`
|
//TitleID uint32 `gorm:"not null;comment:'称号ID'" json:"title_id"`
|
||||||
//可用称号
|
//可用称号
|
||||||
AvailableTitle []uint32 `gorm:"type:json; comment:'可用称号'" json:"available_title"`
|
AvailableTitle []uint32 `gorm:"type:jsonb; comment:'可用称号'" json:"available_title"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TableName 返回表名
|
// TableName 返回表名
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func (s *BargeService) Update(petid uint32, isskill bool) {
|
|||||||
cool.Logger.Info(context.TODO(), "测试服不消耗物品玩家数据", s.userid)
|
cool.Logger.Info(context.TODO(), "测试服不消耗物品玩家数据", s.userid)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if t, _ := s.PModel(s.Model).Where("pet_id", petid).Count(); t != 0 {
|
if t, _ := s.PModel(s.Model).Where("pet_id", petid).Exist(); t {
|
||||||
if isskill {
|
if isskill {
|
||||||
s.PModel(s.Model).Where("pet_id", petid).Increment("killed_count", 1)
|
s.PModel(s.Model).Where("pet_id", petid).Increment("killed_count", 1)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
71
modules/player/service/friend.go
Normal file
71
modules/player/service/friend.go
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"blazing/cool"
|
||||||
|
"blazing/modules/player/model"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/gogf/gf/v2/database/gdb"
|
||||||
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FriendService struct {
|
||||||
|
BaseService
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *FriendService) Get() ([]uint32, []uint32) {
|
||||||
|
m1 := s.TestModel(s.Model)
|
||||||
|
|
||||||
|
var talks *model.Friend
|
||||||
|
|
||||||
|
m1.Scan(&talks)
|
||||||
|
if talks == nil {
|
||||||
|
return []uint32{}, []uint32{}
|
||||||
|
}
|
||||||
|
return talks.Friend, talks.Black
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *FriendService) Add(id uint32) bool {
|
||||||
|
m1, _ := s.TestModel(s.Model).Exist()
|
||||||
|
|
||||||
|
if !m1 {
|
||||||
|
m := s.TestModel(s.Model)
|
||||||
|
data := g.Map{
|
||||||
|
"player_id": s.userid,
|
||||||
|
"friend": []uint32{},
|
||||||
|
"black": []uint32{},
|
||||||
|
"is_vip": cool.Config.ServerInfo.IsVip,
|
||||||
|
}
|
||||||
|
|
||||||
|
m.Data(data).Insert()
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
m := s.TestModel(s.Model)
|
||||||
|
|
||||||
|
m.Data(g.Map{
|
||||||
|
"friend": gdb.Raw(fmt.Sprintf("friend|| '%d'::jsonb", id)),
|
||||||
|
}).Update()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
func (s *FriendService) Del(id uint32) bool {
|
||||||
|
|
||||||
|
m := s.TestModel(s.Model)
|
||||||
|
|
||||||
|
m.Data(g.Map{
|
||||||
|
"friend": gdb.Raw(fmt.Sprintf("jsonb_array_remove(friend, '%d'::jsonb)", id)),
|
||||||
|
}).Update()
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewFriendService(id uint32) *FriendService {
|
||||||
|
return &FriendService{
|
||||||
|
|
||||||
|
BaseService: BaseService{userid: id,
|
||||||
|
|
||||||
|
Service: &cool.Service{Model: model.NewFriend()},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,14 +25,9 @@ func (s *InfoService) IsReg() bool {
|
|||||||
|
|
||||||
m := s.PModel(s.Model)
|
m := s.PModel(s.Model)
|
||||||
|
|
||||||
record, err := m.One()
|
record, _ := m.Exist()
|
||||||
if err != nil {
|
|
||||||
return false
|
return record
|
||||||
}
|
|
||||||
if record != nil {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 实现注册,id+昵称+颜色
|
// 实现注册,id+昵称+颜色
|
||||||
|
|||||||
@@ -9,13 +9,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (s *ItemService) Get(min, max uint32) []model.Item {
|
func (s *ItemService) Get(min, max uint32) []model.Item {
|
||||||
m := s.TestModel(s.Model).Where(g.Map{
|
|
||||||
"item_id <=": max,
|
|
||||||
"item_id >=": min,
|
|
||||||
})
|
|
||||||
|
|
||||||
var ttt []model.Item
|
var ttt []model.Item
|
||||||
m.Scan(&ttt)
|
s.TestModel(s.Model).Where(g.Map{
|
||||||
|
"item_id <=": max,
|
||||||
|
"item_id >=": min,
|
||||||
|
}).Scan(&ttt)
|
||||||
|
|
||||||
return ttt
|
return ttt
|
||||||
|
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ func (s *PetService) UPdateFree(ctime uint32, free uint32) {
|
|||||||
func (s *PetService) UPdate(t model.PetInfo) {
|
func (s *PetService) UPdate(t model.PetInfo) {
|
||||||
|
|
||||||
m := s.TestModel(s.Model).Where("player_id", s.userid).Where("catch_time", t.CatchTime)
|
m := s.TestModel(s.Model).Where("player_id", s.userid).Where("catch_time", t.CatchTime)
|
||||||
var tt model.PetEX
|
var tt *model.PetEX
|
||||||
m.Scan(&tt)
|
m.Scan(&tt)
|
||||||
if tt.CatchTime == 0 {
|
if tt == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
tt.Data = t
|
tt.Data = t
|
||||||
|
|||||||
@@ -31,10 +31,6 @@ func (s *TalkService) Cheak(mapid uint32, flag int) (int, bool) {
|
|||||||
var talks *model.Talk
|
var talks *model.Talk
|
||||||
m1.Where("talk_id", flag).Scan(&talks)
|
m1.Where("talk_id", flag).Scan(&talks)
|
||||||
if talks == nil {
|
if talks == nil {
|
||||||
talks = model.NewTalk()
|
|
||||||
talks.PlayerID = uint64(s.userid)
|
|
||||||
talks.TalkID = uint32(flag)
|
|
||||||
s.PModel(s.Model).Data(talks).FieldsEx("id").Insert()
|
|
||||||
|
|
||||||
return 0, true //如果表里没有记载数据,那么就可以直接挖矿
|
return 0, true //如果表里没有记载数据,那么就可以直接挖矿
|
||||||
}
|
}
|
||||||
@@ -61,15 +57,14 @@ func (s *TalkService) Update(flag int) {
|
|||||||
cool.Logger.Info(context.TODO(), "测试服不消耗物品玩家数据", s.userid)
|
cool.Logger.Info(context.TODO(), "测试服不消耗物品玩家数据", s.userid)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
m := s.PModel(s.Model).Where("talk_id", flag)
|
||||||
|
if condition, _ := m.Exist(); !condition {
|
||||||
|
talks := model.NewTalk()
|
||||||
|
talks.PlayerID = uint64(s.userid)
|
||||||
|
talks.TalkID = uint32(flag)
|
||||||
|
s.PModel(s.Model).Data(talks).FieldsEx("id").Insert()
|
||||||
|
}
|
||||||
|
|
||||||
m1 := s.PModel(s.Model)
|
s.PModel(s.Model).Where("talk_id", flag).Increment("count", 1)
|
||||||
|
|
||||||
var talks model.Talk
|
|
||||||
m1.Where("talk_id", flag).Scan(&talks)
|
|
||||||
|
|
||||||
//talks.PlayerID = uint64(s.userid)
|
|
||||||
//talks.TalkID = uint32(flag)
|
|
||||||
talks.Count += 1
|
|
||||||
m1.Save(talks)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,10 @@ package service
|
|||||||
import (
|
import (
|
||||||
"blazing/cool"
|
"blazing/cool"
|
||||||
"blazing/modules/player/model"
|
"blazing/modules/player/model"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/gogf/gf/v2/database/gdb"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
"github.com/samber/lo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type TitleService struct {
|
type TitleService struct {
|
||||||
@@ -27,27 +28,15 @@ func (s *TitleService) Get() []uint32 {
|
|||||||
func (s *TitleService) Can(id uint32) bool {
|
func (s *TitleService) Can(id uint32) bool {
|
||||||
m1 := s.TestModel(s.Model)
|
m1 := s.TestModel(s.Model)
|
||||||
|
|
||||||
var talks *model.Title
|
ok, _ := m1.Wheref(`available_title @> ?::jsonb`, id).Exist()
|
||||||
|
|
||||||
m1.Scan(&talks)
|
|
||||||
if talks == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
_, ok := lo.Find(talks.AvailableTitle, func(item uint32) bool {
|
|
||||||
return item == id
|
|
||||||
|
|
||||||
})
|
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TitleService) Give(id uint32) bool {
|
func (s *TitleService) Give(id uint32) bool {
|
||||||
m1 := s.TestModel(s.Model)
|
m1, _ := s.TestModel(s.Model).Exist()
|
||||||
|
|
||||||
var talks *model.Title
|
if !m1 {
|
||||||
|
|
||||||
m1.Scan(&talks)
|
|
||||||
|
|
||||||
if talks == nil {
|
|
||||||
m := s.TestModel(s.Model)
|
m := s.TestModel(s.Model)
|
||||||
data := g.Map{
|
data := g.Map{
|
||||||
"player_id": s.userid,
|
"player_id": s.userid,
|
||||||
@@ -58,8 +47,12 @@ func (s *TitleService) Give(id uint32) bool {
|
|||||||
m.Data(data).Insert()
|
m.Data(data).Insert()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
talks.AvailableTitle = append(talks.AvailableTitle, id)
|
m := s.TestModel(s.Model)
|
||||||
m1.Save()
|
|
||||||
|
m.Data(g.Map{
|
||||||
|
"available_title": gdb.Raw(fmt.Sprintf("available_title|| '%d'::jsonb", id)),
|
||||||
|
}).Update()
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,31 +11,33 @@ type BaseService struct {
|
|||||||
*cool.Service
|
*cool.Service
|
||||||
}
|
}
|
||||||
type UserService struct {
|
type UserService struct {
|
||||||
Talk *TalkService //挖矿
|
Talk *TalkService //挖矿
|
||||||
Task *TaskService //任务
|
Task *TaskService //任务
|
||||||
Info *InfoService //信息
|
Info *InfoService //信息
|
||||||
Pet *PetService //精灵
|
Pet *PetService //精灵
|
||||||
Item *ItemService //物品
|
Item *ItemService //物品
|
||||||
Done *DoneService //完成
|
Done *DoneService //完成
|
||||||
Room *RoomService
|
Room *RoomService
|
||||||
Barge *BargeService
|
Barge *BargeService
|
||||||
Title *TitleService
|
Title *TitleService
|
||||||
Cdk *CdkService
|
Cdk *CdkService
|
||||||
|
Friend *FriendService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewUserService(id uint32) *UserService {
|
func NewUserService(id uint32) *UserService {
|
||||||
return &UserService{
|
return &UserService{
|
||||||
|
|
||||||
Task: NewTaskService(id),
|
Task: NewTaskService(id),
|
||||||
Info: NewInfoService(id),
|
Info: NewInfoService(id),
|
||||||
Pet: NewPetService(id),
|
Pet: NewPetService(id),
|
||||||
Item: NewItemService(id),
|
Item: NewItemService(id),
|
||||||
Talk: NewTalkService(id),
|
Talk: NewTalkService(id),
|
||||||
Done: NewDoneService(id),
|
Done: NewDoneService(id),
|
||||||
Room: NewRoomService(id),
|
Room: NewRoomService(id),
|
||||||
Barge: NewBargeService(id),
|
Barge: NewBargeService(id),
|
||||||
Title: NewTitleService(id),
|
Title: NewTitleService(id),
|
||||||
Cdk: NewCdkService(id),
|
Cdk: NewCdkService(id),
|
||||||
|
Friend: NewFriendService(id),
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user