package com.baidu.sso.login.utils;

import cn.hutool.crypto.SecureUtil;
import com.baidu.sso.login.entity.UserDo;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "login")
public class LoginUtils {
    
    List<UserDo> users;
    
    private String cardNo;
    
    private String account;
    
    private String loginAddress;
    
    /**
     * 根据用户名获取用户对象
     * @param name 用户名
     * @return 用户对象，如果不存在则返回null
     */
    public UserDo getUser(String name) {
        for (UserDo userDo : users) {
            if (userDo.getName().equals(name)) {
                return userDo;
            }
        }
        return null;
    }
    
    /**
     * 检查给定的用户名和密码是否有效
     * @param name 用户名
     * @param password 密码
     * @return 如果密码有效则返回true，否则返回false
     */
    public boolean checkPsd(String name, String password){
        if(password == null || password.isEmpty()){
            return false;
        }
        UserDo userDo = getUser(name);
        if(userDo == null){
            return false;
        }
        return password.equals(userDo.getPsd());
    }
    
    /**
     * 获取签名
     *
     * @param user 用户对象
     * @param timestamp 时间戳
     * @return 签名字符串
     */
    public String getSign(UserDo user , Long timestamp){
        return SecureUtil.md5(cardNo + user.getName() + user.getSsoPsd() + timestamp );
    }
    
    /**
     * 获取当前时间戳
     * @return 时间戳
     */
    public Long getTimestamp(){
        return (System.currentTimeMillis()/1000)*1000;
    }
}
