package service

import (
	"enterprise/common/dao"
	"enterprise/common/model"
	"enterprise/server/api"
	"enterprise/server/session"
	"github.com/google/uuid"
	log "github.com/sirupsen/logrus"
	"github.com/smbrave/goutil"
	"time"
)

type StaffUser struct {
}

func (s *StaffUser) Login(sess *session.AdminSession, req *api.StaffLoginReq) interface{} {
	host := sess.GetHeader().Host
	log.Infof("login host[%s] req[%s]", host, goutil.EncodeJSON(req))

	corp, err := dao.NewCorpDao().GetByHost(host)
	session.CheckDBError(err)
	session.CheckNilError(corp, "企业不存在的域名")

	user, err := dao.NewStaffUserDao().GetByUsername(corp.Id, req.Username)
	session.CheckDBError(err)
	session.CheckNilError(user, "企业用户不存在")

	if user.Password == "" || user.Password != req.Password {
		panic("密码错误")
	}

	token := new(model.StaffToken)
	token.UserId = user.Id
	token.ExpireTime = time.Now().Unix() + 86400
	token.Token = uuid.New().String()
	_, err = dao.NewStaffTokenDao().Create(token)
	session.CheckDBError(err)

	data := token.ToLogin()
	data["username"] = user.Username
	data["realname"] = user.Realname
	return data
}