package com.app.admin.framework.system.administrator.service;

import com.app.admin.framework.system.administrator.model.SysAdministrator;
import com.app.framework.core.support.auth.LoginUser;
import com.app.framework.core.support.enums.common.StateEnum;
import com.app.framework.core.support.service.CrudBaseService;
import com.app.framework.core.support.view.form.AjaxResult;

/**
 * 系统账号管理
 */
public interface SysAdministratorService extends CrudBaseService<SysAdministrator> {

    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 登录密码,标准md5加密
     * @param usertype 用户类型,可为空(注册会员登录时建议不要为空)
     */
    AjaxResult login(String username, String password, Integer usertype);

    /**
     * 根据用户名加载用户信息
     *
     * @param username 用户名
     * @return
     */
    SysAdministrator findByUsername(String username);

    /**
     * 保存系统用户
     *
     * @param entity
     */
    AjaxResult saveSysUser(SysAdministrator entity, LoginUser loginUser);

    /**
     * 修改密码
     *
     * @param oid    用户ID
     * @param newPwd 新密码,MD5加密后
     */
    AjaxResult updateUserPwd(Long oid, String newPwd);

    /**
     * 修改用户头像
     *
     * @param oid        用户Id
     * @param headImgUrl 头像URL
     * @return true: 修改成功	 fasle: 修改失败
     */
    boolean updateHeadImgUrl(Long oid, String headImgUrl);

    /**
     * 修改状态
     *
     * @param oid   用户Id
     * @param stateEnum 状态
     * @return true: 修改成功	 fasle: 修改失败
     */
    boolean updateState(Long oid, StateEnum stateEnum);

    /**
     * 保存组织机构管理员
     *
     * @param administrator 管理员
     */
    SysAdministrator saveOrgAdministrator(SysAdministrator administrator);

    /**
     * 获取组织机构管理员
     *
     * @param organizationId 组织机构Id
     */
    SysAdministrator getOrgAdministrator(Long organizationId);
}