package com.sunda.spmsuser.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmsuser.entity.SpmsUser;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * SPMS用户信息表 服务类
 * </p>
 *
 * @author Wayne
 * @since 2021-01-25
 */
public interface ISpmsUserService extends IService<SpmsUser> {

    /** 根据用户工号查询用户信息 */
    SpmsUser getByUserId(String userId);

    SpmsUser getByUserEmail(String userId,String email);

    /** 获取系统全部用户信息-使用 mybatis-plus Wrapper 自带分页方法 */
    IPage<SpmsUser> spmsUserList(Page<SpmsUser> page);

    List<SpmsUser> getAllSpmsUserList();

    /** 新建用户，保存用户个人信息，及关联的角色、工厂、仓库、车间信息 */
    ResponseResult createSpmsUser(JSONObject doc, String MDPassword);

    /** 更新登录密码 */
    ResponseResult updatePassword(String userId, String MDPassword);

    /** OA单点登录时，如果用户不存在则实时从OA获取用户信息写入SPMS系统 */
    void oaCreateSpmsUser(Map<String, Object> map, String MDPassword);

    /** SPMS 跟 OA 系统同步用户个人信息 */
    ResponseResult updateSpmsUserInfo(Map<String, Object> map);
    
    /**创建系统用户，不跟OA关联**/
	ResponseResult createSystemUser(JSONObject jsonObject, String mDPassword, String operationUserId);
	
	/**
	 * 保存用户信息
	 * @param map
	 * @param mDPassword
	 * @return
	 */
	ResponseResult saveSpmsUser(JSONObject jsonObject, String mDPassword) throws Exception;
	
	/**
	 * 分页查询用户信息
	 * @param jsonObject
	 * @return
	 */
	IPage getUserListByParam(JSONObject jsonObject);
	
	/**
	 * 根据工号获取MDM用户信息
	 * @param userId
	 * @return
	 */
	Map<String, Object> getMdmUserInfo(String userId);
}
