package middleware

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"time"
	"zhenyihuibao/business/cache"
	"zhenyihuibao/business/utils"
	"zhenyihuibao/common/constData"
	"zhenyihuibao/conf"
	"zhenyihuibao/models"
	"zhenyihuibao/pkg/logging"
)

func MemberAuth() gin.HandlerFunc {
	return func(c *gin.Context) {

		token := c.GetHeader("token")
		if token == "" {
			constData.ReturnHandle.Error(c, 10001, "请先登录再操作")
			return
		}
		encryToken := utils.EncryptionToken(token, conf.Cnf.TokenSecretKey)
		memInfo := &cache.MemberInfo{}
		memberRow, err := memInfo.GetMemeberInfoByToken(encryToken)
		fmt.Println("getMemberRow", memberRow)
		if err != nil {
			constData.ReturnHandle.Error(c, 10001, err.Error())
			return
		}
		curTimeStamp := time.Now().Unix()
		if curTimeStamp > memberRow.LoginExpiretime {
			constData.ReturnHandle.Error(c, 10001, "登录过期,请重新登录")
			return
		}
		if memberRow.Status == models.UserStatusOff {
			constData.ReturnHandle.Error(c, 10002, "用户尚未通过审核")
			return
		}
		logging.MyLogger.Infof("用户ID[%v], 用户token=%s", memberRow.Id, memberRow.Token)
		c.Set("user_id", memberRow.Id)
		c.Set("userToken", memberRow.Token)
		userKey := fmt.Sprintf("member.%v", memberRow.Id)
		c.Set(userKey,memberRow)

		c.Next()
	}
}