logic.go 1.23 KB
package logic

import (
	"HttpServer/redishandler"
	"common/logger"
	"common/redis"
	"encoding/json"
	"fmt"
	"net/http"
	"strconv"
)

func HandlerLogin(w http.ResponseWriter, data string, uuid int) {
	SetHeader(w)
	var resp UserLoginResp
	resp.Code = 0
	var rdata UserLoginReq
	err := json.Unmarshal([]byte(data), &rdata)
	for {
		if err != nil {
			logger.Info("json decode HandlerLogin data failed:%v,for:%v", err, data)
			resp.Message = "json unmarshal failed"
			resp.Code = ERROR_JSONUNMASH_ERROR
		}

		//先判断一下是否是新用户
		isexist,err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, strconv.Itoa(uuid))
		if err != nil {
			logger.Error("redis failed err=%v", err)
			resp.Message = "ERROR_SRV_ERROR"
			resp.Code = ERROR_SRV_ERROR
		}

		if !isexist {
			//不存在
			//属于新登录的玩家数据
			err = InitUserInfo(&rdata, &resp, uuid)
		} else {
			//已经登陆过了 需要获取玩家数据
			err = GetUserData(uuid, &resp)
		}

		if err != nil {
			logger.Error("redis failed err=%v", err)
			resp.Message = "ERROR_SRV_ERROR"
			resp.Code = ERROR_SRV_ERROR
		}
	}

	//回包
	respstr, _ := json.Marshal(&resp)
	fmt.Fprint(w, string(respstr))

	logger.Info("###HandlerLogin###rdata:%v", string(respstr))
}