feat(item): 添加物品相关功能并优化任务和宠物逻辑
- 新增物品检查和添加功能 - 优化任务重置和完成逻辑 - 改进宠物信息获取和展示 - 调整玩家登录和保存机制
This commit is contained in:
@@ -4,10 +4,28 @@ import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/item"
|
||||
"blazing/modules/blazing/model"
|
||||
)
|
||||
|
||||
func (h Controller) UserItemList(data *item.ItemListInboundInfo, c *service.Player) (result *item.ItemListOutboundInfo, err errorcode.ErrorCode) {
|
||||
result = &item.ItemListOutboundInfo{}
|
||||
result.ItemList = make([]model.SingleItemInfo, 0)
|
||||
|
||||
re := c.Service.ItemCheak()
|
||||
|
||||
for _, v := range re {
|
||||
if int32(v.ItemId) > int32(data.Param1) && int32(v.ItemId) < int32(data.Param2) {
|
||||
v.LeftTime = 360000
|
||||
result.ItemList = append(result.ItemList, v)
|
||||
}
|
||||
}
|
||||
|
||||
return result, 0
|
||||
}
|
||||
func (h Controller) PlayerGoldCount(data *item.GoldOnlineRemainInboundInfo, c *service.Player) (result *item.GoldOnlineRemainOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
return &item.GoldOnlineRemainOutboundInfo{
|
||||
|
||||
uint32(c.Info.GoldBean) * 100,
|
||||
}, 0
|
||||
}
|
||||
|
||||
@@ -35,26 +35,29 @@ func (h *Controller) Login(data *login.InInfo, c *service.Conn) (result *login.O
|
||||
h.RPCClient.Kick(data.Head.UserID) //先踢人
|
||||
|
||||
t := socket.GetPlayer(c, data.Head.UserID)
|
||||
t.Info = blservice.NewUserService(data.Head.UserID).Person()
|
||||
t.Service = blservice.NewUserService(data.Head.UserID)
|
||||
t.Info = t.Service.Person()
|
||||
t.Info.UserID = data.Head.UserID
|
||||
t.Onlinetime = uint32(time.Now().Unix()) //保存时间戳
|
||||
t.Onlinetime = uint32(time.Now().Unix()) //保存时间戳
|
||||
|
||||
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
|
||||
|
||||
if !IsToday(t.Info.LastResetTime) { //判断是否是今天
|
||||
t.Info.LastResetTime = time.Now()
|
||||
//每天login时候检查重置时间,然后把电池,任务,挖矿重置
|
||||
t.Info.TimeToday = 0 //重置电池
|
||||
taskservice := blservice.NewUserService(t.ID())
|
||||
for i := 400; i < 500; i++ { //每日任务区段
|
||||
t.Info.TaskList[i] = 0 //重置每日任务
|
||||
go func() {
|
||||
for i := 400; i < 500; i++ { //每日任务区段
|
||||
t.Info.TaskList[i] = 0 //重置每日任务
|
||||
|
||||
_, ok := taskservice.TaskInfo((uint32(i)))
|
||||
if ok {
|
||||
taskservice.TaskSet((uint32(i)), model.TaskInfo{
|
||||
Info: []uint32{},
|
||||
})
|
||||
_, ok := t.Service.TaskInfo((uint32(i)))
|
||||
if ok {
|
||||
t.Service.TaskSet((uint32(i)), model.TaskInfo{
|
||||
Info: []uint32{},
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
}
|
||||
if t.MapID() > 10000 {
|
||||
@@ -68,8 +71,6 @@ func (h *Controller) Login(data *login.InInfo, c *service.Conn) (result *login.O
|
||||
result = login.NewOutInfo() //设置登录消息
|
||||
|
||||
result.PlayerInfo = *t.Info
|
||||
//result.TaskList = blservice.NewUserService(t.Info.UserID).GenTask()
|
||||
//result.PetList = blservice.NewUserService(t.Info.UserID).GetPetList(1)
|
||||
|
||||
tt := maps.NewOutInfo()
|
||||
//copier.Copy(t.Info, tt)
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/xmlres"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/pet"
|
||||
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"blazing/modules/blazing/model"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
)
|
||||
@@ -15,11 +16,15 @@ func (h *Controller) GetPetInfo(
|
||||
data *pet.InInfo,
|
||||
c *service.Player) (result *pet.OutInfo,
|
||||
err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
return &pet.OutInfo{
|
||||
PetInfo: pi,
|
||||
}, 0
|
||||
}
|
||||
|
||||
t := blservice.NewUserService(c.Info.UserID).GetPetInfo(data.CatchTime)
|
||||
return &pet.OutInfo{
|
||||
PetInfo: t,
|
||||
}, 0
|
||||
}
|
||||
return result, errorcode.ErrorCodes.ErrNoPrerequisiteFacility
|
||||
}
|
||||
|
||||
// 获取仓库列表
|
||||
@@ -29,7 +34,7 @@ func (h *Controller) GetPetList(
|
||||
err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = &pet.GetPetListOutboundInfo{}
|
||||
|
||||
tt := blservice.NewUserService(c.Info.UserID).GetPetList(0) //获得未放生的精灵
|
||||
tt := c.Service.GetPetList(0) //获得未放生的精灵
|
||||
result.ShortInfoList = make([]pet.PetShortInfo, len(tt))
|
||||
for i, v := range tt {
|
||||
|
||||
@@ -51,7 +56,7 @@ func (h *Controller) PetRelease(
|
||||
result = &pet.PetReleaseOutboundInfo{}
|
||||
result.Flag = uint32(data.Flag)
|
||||
|
||||
t := blservice.NewUserService(c.Info.UserID).PetM(int(data.CatchTime), int(data.Flag))
|
||||
t := c.Service.PetM(int(data.CatchTime), int(data.Flag))
|
||||
switch data.Flag {
|
||||
case 0:
|
||||
|
||||
@@ -79,3 +84,53 @@ func (h *Controller) PetRelease(
|
||||
//service.NewUserService(c.Info.UserID).PetAdd( *r)
|
||||
return result, 0
|
||||
}
|
||||
|
||||
// 精灵展示
|
||||
func (h *Controller) PlayerShowPet(
|
||||
data *pet.PetShowInboundInfo, c *service.Player) (result *pet.PetShowOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
results := pet.PetShowOutboundInfo{}
|
||||
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
copier.Copy(&results, pi)
|
||||
results.Flag = data.Flag
|
||||
results.UserID = data.Head.UserID
|
||||
data.Broadcast(c.Info.MapID, results) //同步广播
|
||||
}
|
||||
|
||||
}
|
||||
return result, -1
|
||||
|
||||
}
|
||||
func (h *Controller) PetOneCure(
|
||||
data *pet.PetOneCureInboundInfo, c *service.Player) (result *pet.PetOneCureOutboundInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = &pet.PetOneCureOutboundInfo{
|
||||
data.CatchTime,
|
||||
}
|
||||
var temp []model.PetInfo
|
||||
|
||||
for _, pi := range c.Info.PetList {
|
||||
if pi.CatchTime == data.CatchTime {
|
||||
pi.Hp = pi.MaxHp
|
||||
// 恢复技能PP值
|
||||
var skillList [4]model.SkillInfo
|
||||
for i, skill := range pi.SkillList {
|
||||
// 跳过无效技能
|
||||
if skill.ID == 0 {
|
||||
continue
|
||||
}
|
||||
// 恢复至最大PP值(从配置表获取)
|
||||
if maxPP, ok := xmlres.SkillMap[int(skill.ID)]; ok {
|
||||
skill.PP = uint32(maxPP.MaxPP)
|
||||
skillList[i] = skill
|
||||
}
|
||||
}
|
||||
pi.SkillList = skillList
|
||||
}
|
||||
temp = append(temp, pi)
|
||||
}
|
||||
|
||||
c.Info.PetList = temp
|
||||
return result, 0
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import (
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/task"
|
||||
"blazing/modules/blazing/model"
|
||||
blservice "blazing/modules/blazing/service"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
@@ -37,14 +36,14 @@ func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *service.Play
|
||||
// isdaliy = true
|
||||
// }
|
||||
result = &task.AddTaskBufOutboundInfo{}
|
||||
taskservice := blservice.NewUserService(c.Info.UserID)
|
||||
_, ok := taskservice.TaskInfo(data.TaskId)
|
||||
|
||||
_, ok := c.Service.TaskInfo(data.TaskId)
|
||||
if ok {
|
||||
taskservice.TaskSet(data.TaskId, model.TaskInfo{
|
||||
c.Service.TaskSet(data.TaskId, model.TaskInfo{
|
||||
Info: data.TaskList,
|
||||
})
|
||||
} else {
|
||||
taskservice.TaskADD(data.TaskId, model.TaskInfo{
|
||||
c.Service.TaskADD(data.TaskId, model.TaskInfo{
|
||||
|
||||
Info: data.TaskList,
|
||||
})
|
||||
@@ -94,7 +93,7 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
|
||||
r := model.GenPetInfo(1, []int{0, 31}, []int{0, 24}, []int{0}, []int{0}, []int{5})
|
||||
result.CaptureTime = r.CatchTime
|
||||
result.PetTypeId = r.ID
|
||||
blservice.NewUserService(c.Info.UserID).PetAdd(*r)
|
||||
c.Service.PetAdd(*r)
|
||||
}
|
||||
if data.TaskId == 87 { //新手注册任务
|
||||
|
||||
@@ -107,6 +106,11 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
|
||||
result.ItemList = append(result.ItemList, task.ItemInfo{ItemId: 1, ItemCount: 5000})
|
||||
|
||||
}
|
||||
var ttt []model.SingleItemInfo
|
||||
for _, v := range result.ItemList {
|
||||
ttt = append(ttt, model.SingleItemInfo{ItemId: v.ItemId, ItemCnt: v.ItemCount})
|
||||
}
|
||||
c.ItemAdd(ttt)
|
||||
return result, 0
|
||||
}
|
||||
|
||||
@@ -114,7 +118,7 @@ func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *service
|
||||
* 获取任务状态
|
||||
*/
|
||||
func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *service.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) {
|
||||
info, _ := blservice.NewUserService(c.Info.UserID).TaskInfo(data.TaskId)
|
||||
info, _ := c.Service.TaskInfo(data.TaskId)
|
||||
result = &task.GetTaskBufOutboundInfo{}
|
||||
result.TaskId = data.TaskId
|
||||
result.TaskList = info.Info
|
||||
|
||||
@@ -58,7 +58,7 @@ func (h *TomeeHandler) Handle(c gnet.Conn, data []byte) { //处理接收到的
|
||||
|
||||
header.Result, _ = tempdata.ReadUInt32()
|
||||
header.Data = tempdata.BytesAvailable()
|
||||
fmt.Println("接收封包", header)
|
||||
//fmt.Println("接收封包", header)
|
||||
h.Callback(NewConn(c), header)
|
||||
//return header
|
||||
}
|
||||
|
||||
@@ -516,6 +516,7 @@ func (f *FightC) enterturn(fattack, sattack info.BattleActionI) {
|
||||
"自身剩余血量:", attacker.CurrentPet.Info.Hp,
|
||||
"对手剩余血量:", defender.CurrentPet.Info.Hp,
|
||||
)
|
||||
skill.Skill.Info.PP-- //减少PP
|
||||
if defender.CurrentPet.Info.Hp == 0 {
|
||||
defender.CanChange = true //被打死就可以切精灵了
|
||||
if attacker.IsWin(defender.CurrentPet.Info.CatchTime) { //然后检查是否战斗结束
|
||||
@@ -527,35 +528,7 @@ func (f *FightC) enterturn(fattack, sattack info.BattleActionI) {
|
||||
}
|
||||
defer f.Broadcast(func(ff *Input) {
|
||||
//todo 将血量和技能pp传回enterturn
|
||||
pl, ok := ff.Player.(*Player)
|
||||
if ok { //说明是玩家,需要传回数据
|
||||
var temp []model.PetInfo //先初始化一个临时的数据
|
||||
|
||||
for _, pi := range pl.Info.PetList {
|
||||
|
||||
for _, v := range attacker.AllPet {
|
||||
if v.Info.CatchTime == pi.CatchTime { //如果找到精灵
|
||||
pi.Hp = v.Info.Hp
|
||||
|
||||
for i, v := range v.Skills {
|
||||
|
||||
for _, v1 := range pi.SkillList {
|
||||
|
||||
if v1.ID == uint32(v.ID) {
|
||||
pi.SkillList[i].PP = uint32(v.PP)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
temp = append(temp, pi)
|
||||
}
|
||||
pl.Info.PetList = temp
|
||||
}
|
||||
ff.Player.SendFightEndInfo(info.FightOverInfo{
|
||||
WinnerId: WinnerId,
|
||||
})
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package item
|
||||
|
||||
import "blazing/logic/service"
|
||||
import (
|
||||
"blazing/logic/service"
|
||||
"blazing/modules/blazing/model"
|
||||
)
|
||||
|
||||
// 实现了入站消息接口(Go中通过方法集隐式实现)
|
||||
type ItemListInboundInfo struct {
|
||||
@@ -15,18 +18,20 @@ type ItemListInboundInfo struct {
|
||||
|
||||
type ItemListOutboundInfo struct {
|
||||
// 物品列表,
|
||||
ItemListLen uint32 `struc:"sizeof=ItemList"`
|
||||
ItemList []SingleItemInfo `autoCodec:"true" messageType:"Item_List" fieldDesc:"物品列表"`
|
||||
ItemListLen uint32 `struc:"sizeof=ItemList"`
|
||||
ItemList []model.SingleItemInfo `autoCodec:"true" messageType:"Item_List" fieldDesc:"物品列表"`
|
||||
}
|
||||
|
||||
// SingleItemInfo 单个物品信息结构体,对应Java的SingleItemInfo类
|
||||
type SingleItemInfo struct {
|
||||
// 物品Id,
|
||||
ItemId uint32
|
||||
// 物品数量,
|
||||
ItemCnt uint32
|
||||
// 固定值360000,
|
||||
LeftTime uint32
|
||||
// 固定值0,
|
||||
ItemLevel uint32
|
||||
|
||||
type GoldOnlineRemainInboundInfo struct {
|
||||
Head service.TomeeHeader `cmd:"1106" struc:"[0]pad"`
|
||||
}
|
||||
|
||||
// GoldOnlineRemainOutboundInfo 对应Java的GoldOnlineRemainOutboundInfo
|
||||
// 实现OutboundMessage接口,包含金豆数量信息
|
||||
type GoldOnlineRemainOutboundInfo struct {
|
||||
// GoldNumber 金豆数量(后端返回实际数量需要*100)
|
||||
// 对应Java的@UInt long类型,使用uint64
|
||||
GoldNumber uint32 `json:"goldNumber" fieldDescription:"金豆数量, 后端返回实际数量需要*100" uint:"true"`
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package pet
|
||||
|
||||
import (
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/space"
|
||||
"blazing/modules/blazing/model"
|
||||
)
|
||||
|
||||
@@ -29,3 +30,38 @@ type PetReleaseInboundInfo struct {
|
||||
CatchTime uint32 `json:"catch_time" fieldDescription:"精灵生成时间" autoCodec:"true" uint:"true"`
|
||||
Flag uint32 `json:"flag" fieldDescription:"0为放入仓库,1为放入背包" autoCodec:"true" uint:"true"`
|
||||
}
|
||||
|
||||
type PetShowInboundInfo struct {
|
||||
Head service.TomeeHeader `cmd:"2305" struc:"[0]pad"`
|
||||
|
||||
CatchTime uint32 `codec:"catchTime" inboundMessageType:"Pet_Show"`
|
||||
Flag uint32 `codec:"flag"`
|
||||
}
|
||||
|
||||
func (t *PetShowInboundInfo) Broadcast(mapid uint32, o PetShowOutboundInfo) {
|
||||
|
||||
space.GetSpace(mapid).Range(func(playerID uint32, player service.PlayerI) bool {
|
||||
t.Head.Result = 0
|
||||
|
||||
player.SendPack(t.Head.Pack(&o))
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
type PetShowOutboundInfo struct {
|
||||
UserID uint32 `codec:"UserID" description:"米米号"`
|
||||
CatchTime uint32 `codec:"CatchTime" description:"精灵获得的时间"`
|
||||
ID uint32 `codec:"PetID" description:"精灵编号"`
|
||||
Flag uint32 `codec:"flag" description:"1为显示 0为收回"`
|
||||
Dv uint32 `codec:"dv" description:"个体"`
|
||||
Shiny uint32 `codec:"shiny" description:"闪光状态标识"`
|
||||
SkinID uint32 `codec:"skinID" description:"皮肤ID"`
|
||||
Reserved1 [3]uint32
|
||||
}
|
||||
type PetOneCureInboundInfo struct {
|
||||
Head service.TomeeHeader `cmd:"2310" struc:"[0]pad"`
|
||||
CatchTime uint32 `json:"catchTime" fieldDescription:"精灵捕捉时间" uint:"true"`
|
||||
} // PetOneCureOutboundInfo 宠物单个治疗出站消息
|
||||
type PetOneCureOutboundInfo struct {
|
||||
CatchTime uint32 `json:"catchTime" fieldDescription:"精灵捕捉时间" uint:"true"`
|
||||
}
|
||||
|
||||
@@ -96,6 +96,7 @@ type Player struct {
|
||||
Onlinetime uint32 //当前登录时间
|
||||
OgreInfo *OgreInfo
|
||||
FightC *FightC //绑定战斗标识 替代本身的是否战斗标记 //IsFighting bool
|
||||
Service *blservice.UserService
|
||||
//FightInfo info.NoteReadyToFightInfo
|
||||
}
|
||||
|
||||
@@ -129,6 +130,19 @@ func (p *Player) GetAction() {
|
||||
return
|
||||
}
|
||||
|
||||
// 添加物品
|
||||
func (p *Player) ItemAdd(t []model.SingleItemInfo) {
|
||||
var ttt []model.SingleItemInfo
|
||||
for _, v := range t {
|
||||
if v.ItemId > 10000 {
|
||||
ttt = append(ttt, v)
|
||||
}
|
||||
|
||||
}
|
||||
p.Service.ItemAdd(ttt)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Player) ID() uint32 {
|
||||
|
||||
return p.Info.UserID
|
||||
@@ -195,7 +209,7 @@ func (p *Player) Save() {
|
||||
p.Info.TimeToday = p.Info.TimeToday + uint32(time.Now().Unix()) - uint32(p.Onlinetime) //保存电池时间
|
||||
p.Onlinetime = uint32(time.Now().Unix())
|
||||
|
||||
blservice.NewUserService(p.Info.UserID).Save(p.Info)
|
||||
p.Service.Save(p.Info)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,20 +12,24 @@ type Item struct {
|
||||
PlayerID uint64 `gorm:"not null;index:idx_player_bag_item_by_player_id;comment:'所属玩家ID'" json:"player_id"`
|
||||
Data string `gorm:"type:text;not null;comment:'全部数据'" json:"data"`
|
||||
}
|
||||
type ItemE struct {
|
||||
ID int32 `gorm:"not null;comment:'道具唯一编号'" json:"item_id"`
|
||||
Count int32 `gorm:"not null;default:0;comment:'拥有数量 '" json:"count"`
|
||||
Max int32 `gorm:"not null;default:0;comment:'最大数量 '" json:"max"`
|
||||
Total int32 `gorm:"not null;default:0;comment:'使用次数'" json:"total"`
|
||||
type SingleItemInfo struct {
|
||||
// 物品Id,
|
||||
ItemId uint32 `json:"itemId"`
|
||||
// 物品数量,
|
||||
ItemCnt uint32 `json:"itemCnt"`
|
||||
// 固定值360000,
|
||||
LeftTime uint32 `json:"leftTime"`
|
||||
// 固定值0,
|
||||
ItemLevel uint32 `json:"itemLevel"`
|
||||
}
|
||||
|
||||
// TableName PlayerBagItem's table name
|
||||
func (*ItemE) TableName() string {
|
||||
func (*Item) TableName() string {
|
||||
return TableNamePlayerBagItem
|
||||
}
|
||||
|
||||
// GroupName PlayerBagItem's table group
|
||||
func (*ItemE) GroupName() string {
|
||||
func (*Item) GroupName() string {
|
||||
return "default"
|
||||
}
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
func (s *UserService) ItemExec(t func([]model.ItemE) []model.ItemE) {
|
||||
func (s *UserService) ItemExec(t func([]model.SingleItemInfo) []model.SingleItemInfo) {
|
||||
//todo待测试
|
||||
var player model.Item
|
||||
m1 := cool.DBM(s.reg.Model).Where("player_id", s.userid)
|
||||
m1.Scan(&player)
|
||||
var tt []model.ItemE
|
||||
var tt []model.SingleItemInfo
|
||||
json.Unmarshal([]byte(player.Data), &tt)
|
||||
t(tt)
|
||||
tmep, _ := json.Marshal(tt)
|
||||
@@ -19,3 +19,46 @@ func (s *UserService) ItemExec(t func([]model.ItemE) []model.ItemE) {
|
||||
m1.Save(player)
|
||||
|
||||
}
|
||||
func (s *UserService) ItemCheak() []model.SingleItemInfo {
|
||||
|
||||
//todo待测试
|
||||
var player model.Item
|
||||
m1 := cool.DBM(s.item.Model).Where("player_id", s.userid)
|
||||
var rer []model.SingleItemInfo
|
||||
m1.Scan(&player)
|
||||
json.Unmarshal([]byte(player.Data), &rer)
|
||||
//return gjson.Parse(player.Data)
|
||||
return rer
|
||||
}
|
||||
func (s *UserService) ItemAdd(t []model.SingleItemInfo) {
|
||||
|
||||
//todo待测试
|
||||
var player model.Item
|
||||
m1 := cool.DBM(s.item.Model).Where("player_id", s.userid)
|
||||
var rer []model.SingleItemInfo
|
||||
|
||||
m1.Scan(&player)
|
||||
json.Unmarshal([]byte(player.Data), &rer)
|
||||
player.PlayerID = uint64(s.userid)
|
||||
if len(rer) == 0 {
|
||||
fff, _ := json.Marshal(append(rer, t...))
|
||||
player.Data = string(fff)
|
||||
|
||||
_, err := m1.Insert(player)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
fff, _ := json.Marshal(append(rer, t...))
|
||||
player.Data = string(fff)
|
||||
|
||||
_, err := m1.Update(player)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
//return gjson.Parse(player.Data)
|
||||
|
||||
}
|
||||
|
||||
@@ -82,6 +82,15 @@ func (s *UserService) TaskSet(id uint32, ret model.TaskInfo) {
|
||||
//gg.TaskID = id
|
||||
cool.DBM(s.task.Model).Where("player_id", s.userid).Where("task_id", id).Update(gg)
|
||||
|
||||
}
|
||||
func (s *UserService) TaskReset() {
|
||||
var gg model.Task
|
||||
|
||||
tt, _ := json.Marshal(&model.TaskInfo{})
|
||||
gg.Data = string(tt)
|
||||
//gg.TaskID = id
|
||||
cool.DBM(s.task.Model).Where("player_id", s.userid).Update(gg)
|
||||
|
||||
}
|
||||
func (s *UserService) TaskADD(id uint32, ret model.TaskInfo) {
|
||||
var gg model.Task
|
||||
|
||||
Reference in New Issue
Block a user