package com.pj.project4sp.admin;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.pj.utils.sg.AjaxError;
import com.pj.utils.sg.NbUtil;

import cn.dev33.satoken.stp.StpUtil;

/**
 * admin工具类 
 * @author kong
 *
 */
@Component
public class SpAdminUtil {

	public static SpAdminMapper spAdminMapper;
	@Autowired
	public void setSpAdminMapper(SpAdminMapper spAdminMapper) {
		SpAdminUtil.spAdminMapper = spAdminMapper;
	}
	
	/**
	 * 当前admin
	 * @return
	 */
	public static SpAdmin getCurrAdmin() {
		long adminId = StpUtil.getLoginIdAsLong();
		return spAdminMapper.getById(adminId);
	}
	
	/**
	 * 检查指定姓名是否合法 ,如果不合法，则抛出异常 
	 */
	public static void checkAdminName(SpAdmin s) {
		AjaxError.notIsNull(s.getName(), "账号名称不能为空");
		AjaxError.notTrue(NbUtil.isNumber(s.getName()), "账号名称不能为纯数字");
		
		// 如果能查出来数据，而且不是本人，则代表与已有数据重复
		SpAdmin s2 = spAdminMapper.getByName(s.getName());
		AjaxError.notTrue(s2 != null && (long)s2.getId() != s.getId(), "账号名称已有账号使用，请更换");	
	}

	/** 校验一个账号的phone是否可用 */
	public static void checkPhone(SpAdmin s) {
		if(NbUtil.isNull(s.getPhone()) == false) {
			AjaxError.notTrue(NbUtil.isPhone(s.getPhone()) == false, "手机号格式不正确：" + s.getPhone());	
			SpAdmin s2 = spAdminMapper.getByPhone(s.getPhone());
			AjaxError.notTrue(s2 != null && (long)s2.getId() != s.getId(), "该手机号已注册：" + s.getPhone());	
		}
	}
	
	/**
	 * 检查整个admin是否合格 
	 * @param a
	 * @return
	 */
	public static void checkAdmin(SpAdmin s) {
		// 检查姓名 
		checkAdminName(s);
		AjaxError.notIsNull(s.getPassword2(), "密码不得为空");	// 检查密码 
		AjaxError.notTrue(s.getPassword2().length() < 6, "密码不得低于6位");	// 检查密码 
		AjaxError.notIsNull(s.getAvatar(), "头像不得为空");	
		AjaxError.notIsNull(s.getRoleId(), "必须选择一个角色");	
		checkPhone(s);
	}
	
}
