Beispiel #1
0
func Login(userInfo *model.UserInfo, reqData []byte) (ackData []byte, err error) {
	log.Println("登录数据包是:", reqData)
	_req := &LoginReq{}
	_ack := &LoginAck{}
	err = decode(reqData, _req)
	if err != nil {
		log.Println("数据包格式不对", err)
		return nil, err
	}
	reCode := message.SUCCESS
	roleInfo := model.NewRoleInfo()

	err = userInfo.CheckLogin(_req.Username, _req.Password)
	if err != nil {
		reCode = message.ERR_LOGIN
		err = nil
	} else {
		//根据用户uid得到角色信息
		err = roleInfo.GetRoleInfo(userInfo.Uid, userInfo.Role_Id)
		log.Println(err, roleInfo)
		if err != nil {
			log.Println("获取角色信息出错")
			return nil, err
		}
	}

	//建立当前会话信息

	log.Println("登陆返回的uid为:", userInfo.Uid)
	_ack.UserInfo = userInfo
	_ack.RoleInfo = roleInfo
	ackData = encode(userInfo.Uid, message.MSG_LOGIN, reCode, _ack)
	return
}