package service import ( "blazing/cool" "blazing/modules/blazing/model" "encoding/json" ) 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.SingleItemInfo json.Unmarshal([]byte(player.Data), &tt) t(tt) tmep, _ := json.Marshal(tt) player.Data = string(tmep) m1.Save(player) } func (s *UserService) ItemCheak() map[uint32]model.SingleItemInfo { //todo待测试 var player model.Item m1 := cool.DBM(s.item.Model).Where("player_id", s.userid) var rer map[uint32]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 map[uint32]model.SingleItemInfo rer = make(map[uint32]model.SingleItemInfo) m1.Scan(&player) json.Unmarshal([]byte(player.Data), &rer) player.PlayerID = uint64(s.userid) if len(rer) == 0 { fff, _ := json.Marshal(rer) player.Data = string(fff) _, err := m1.Insert(player) if err != nil { panic(err) } } for _, v := range t { tt, ok := rer[v.ItemId] if ok { tt.ItemCnt += v.ItemCnt rer[v.ItemId] = tt } else { rer[v.ItemId] = v } } fff, _ := json.Marshal(rer) player.Data = string(fff) _, err := m1.Update(player) if err != nil { panic(err) } //return gjson.Parse(player.Data) }