function.go 2.56 KB
package logic

import (
	"HttpServer/jsonconf"
	"HttpServer/redishandler"
	"common/logger"
	"common/redis"
	"encoding/json"
	"strconv"
	"time"
)

func SaveUserInfo(data *UserData, uniqueid string) error {

	savestr, err := json.Marshal(data)
	if err != nil {
		return err
	}

	err = redishandler.GetRedisClient().HSet(redis.USER_INFO__KEY, uniqueid, string(savestr))

	return err
}

func GetUserInfo(uid string) (*UserData, error) {

	data, err := redishandler.GetRedisClient().HGet(redis.USER_INFO__KEY, uid)
	if err != nil {
		return nil, err
	}
	var tmp UserData
	err = json.Unmarshal([]byte(data), &tmp)
	if err != nil {
		return nil, err
	}

	return &tmp, nil
}

//初始化玩家信息
func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) {
	udata := new(UserData)
	udata.Gold = 0
	udata.Love = 0
	udata.InviteId = data.Fromid
	udata.Highestlv = 0
	udata.CurBoxLv = 1
	udata.IsDouble = 0
	udata.IsAuto = 0
	udata.IsBoxAcc = 0
	udata.RandGiftDay = time.Now().Day()
	udata.RandGiftNum = 6
	udata.RandGiftTime = int(time.Now().Unix())
	udata.Redbag = 0
	udata.IsFirstRedBgCat = 0

	//初始化16个猫爬架
	for i := 0; i < 16; i++ {
		var d1 PosData
		d1.Pos = i
		d1.Catlv = 0
		udata.PosInfo = append(udata.PosInfo, d1)
		var d2 DataDesc
		d2.Pos = i
		d2.Catlv = 0

	}
	udata.Goldrate = 0
	udata.Loverate = 0


	//初始化商店信息
	initcatcfg := jsonconf.GetCatConfig(1)
	if initcatcfg == nil {
		logger.Error("get 1catcfg err")
		return
	}
	var info BuyCatInfoData
	info.Buytime = 0
	info.CurPrice,_= strconv.ParseInt(initcatcfg.Price,10,64)
	info.IsMaxBuytime = 0
	udata.BuyCatInfo = append(udata.BuyCatInfo, info)

	//初始化猫咖门店数据
	udata.CatShopInfo.LeftTime = 0
	udata.CatShopInfo.Chapter = 1
	udata.CatShopInfo.DayNum = time.Now().Day()
	udata.CatShopInfo.IsPlaying = 0
	udata.CatShopInfo.PlayTimes = 0
	udata.CatShopInfo.Section = 1
	udata.CatShopInfo.ThisIsWatch = 0
	udata.CatShopInfo.TotalWatchNumLeft = 8 //

	logger.Info("Init user data=%v", udata)

	//保存redis
	SaveUserInfo(udata, strconv.Itoa(uuid))


	//初始化玩家仓库信息
	pware := new(UserWareHouseData)
	for i := 0; i < 15; i++ {
		var tmp WareHouseDesc
		tmp.Warelv = 0
		pware.Info = append(pware.Info, tmp)
	}
	wares, err := json.Marshal(pware)
	if err != nil {
		logger.Info("InitUserInfo warehouse failed err=%v", err)
	}
	redishandler.GetRedisClient().HSet(redis.USER_WAREHOUSE_INFO, strconv.Itoa(uuid), string(wares))

	//保存此次计算时间
	nowtimestr := strconv.Itoa(int(time.Now().Unix()))
	redishandler.GetRedisClient().HSet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid), nowtimestr)
}