/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.um.service;
import java.util.List;
import java.util.Map;
import com.jinhe.tss.component.log.Logable;
import com.jinhe.tss.component.support.persistence.pagequery.PageInfo;
import com.jinhe.tss.um.entity.User;
import com.jinhe.tss.um.helper.UMQueryCondition;
public interface IUserService {
/**
* <p>
* 新建用户的页面需要的初始化数据
* </p>
* @param groupId
* @return
*/
Map<String, Object> getInfo4CreateNewUser(Long groupId);
/**
* <p>
* 编辑用户的页面需要的初始化数据
* </p>
* @param userId
* @return
*/
Map<String, Object> getInfo4UpdateExsitUser(Long userId);
/**
* 更改用户
* @param user
*/
@Logable(operateTable="用户", operateType="修改",
operateInfo="修改用户 ${args[0]} "
)
void updateUser(User user);
/**
* <p>
* 设置用户的密码策略
* </p>
* @param userId
* @param ruleId
*/
void updateUserPasswordRule(Long userId, Long ruleId);
/**
* 根据ID查询用户
* @param id
* @return Object
*/
User getUserById(Long id);
/**
* <p>
* 新建/修改一个User对象的明细信息、用户对用户组信息、用户对角色的信息
* </p>
* @param mainGroupId
* 用户必须对应一个主用户组
* @param user
* @param groupIdsStr
* @param roleIdsStr
*/
@Logable(operateTable="用户", operateType="新建/修改",
operateInfo="新建/修改了 ${args[1]} 用户(用户对用户组信息 ${args[2]}、用户对角色的信息 ${args[3]?default(\"\")})"
)
void createOrUpdateUserInfo(Long mainGroupId, User user, String groupIdsStr, String roleIdsStr);
/**
* <p>
* 删除用户 辅助组用户删除用户要删除关系表 辅助组以外的用户只删除用户,不删除关系表
* </p>
* @param groupId
* @param userId
* @param groupType
*/
@Logable(operateTable="用户", operateType="删除",
operateInfo="删除了 (ID: ${args[1]}) 用户"
)
void deleteUser(Long groupId, Long userId, Integer groupType);
/**
* <p>
* 自动映射用户
* </p>
* @param groupId
* 其他应用组Id
* @param toGroupId
* 主用户组Id
* @param mappingColumn
* 对应字段 1-按照登陆帐号对应 2-按照工号对应 3-按照证件号码对应 4-按照姓名对应
* @param mode
* 对应方式 0-对应当前组 1-同时对应子组
*/
void editAutoMappingInfo(Long groupId, Long toGroupId, Integer mappingColumn, Integer mode);
/**
* <p>
* 用户密码统一初始化
* </p>
*
* @param groupId
* 用户组Id
* @param initPassword
* 初始化的用户密码
*/
@Logable(operateTable="用户", operateType="初始化密码",
operateInfo="初始化组(ID:${args[0]})下的密码为:${args[1]}"
)
void initPasswordByGroupId(Long groupId, String initPassword);
/**
* <p>
* 统一认证方式
* </p>
* @param groupId
* @param authenticateMethod
*/
void uniteAuthenticateMethod(Long groupId, String authenticateMethod);
/**
* <p>
* 根据用户登录名获取用户实体
* </p>
* @param loginName
* 登录名
* @return User 用户实体对象
*/
User getUserByLoginName(String loginName);
/**
* <p>
* 用户自注册
* </p>
* @param user
*/
@Logable(operateTable="用户", operateType="注册",
operateInfo=" 用户(${args[0]})完成注册。"
)
void registerUser(User user);
/**
* <p>
* 根据组的Id取的该组手动映射的信息
* </p>
* @param groupId
* @return List
*/
List<User> getManualMappingInfo(Long groupId);
/**
* <p>
* 编辑手动映射的用户
* </p>
* @param userId
* 需要对应的用户
* @param appUserId
* 对应的主用户组的用户
*/
void editManualMappingInfo(Long userId, Long appUserId, String applicationId);
/**
* <p>
* 移动用户。可用于用户更换部门等场景使用。
* 其他用户组的用户暂时不允许移动
* </p>
* @param groupId
* @param toGroupId
* @param userId
*/
@Logable(operateTable="用户", operateType="移动",
operateInfo=" 移动(ID: ${args[0]}) 用户组中的(ID:${args[2]})用户至 (ID: ${args[1]}) 用户组 "
)
void moveUser(Long groupId, Long toGroupId, Long userId);
/**
* <p>
* 导入用户到
* 其他用户组的用户导入到主用户组,并形成对应关系
* </p>
* @param groupId
* @param toGroupId
* @param userId
*/
@Logable(operateTable="用户", operateType="导入",
operateInfo=" 导入(ID: ${args[0]}) 其它用户组中的(ID:${args[2]})用户至 (ID: ${args[1]}) 主用户组 "
)
void importUser(Long groupId, Long toGroupId, Long userId);
/**
* <p>
* 用户排序
* </p>
* @param userId
* @param toUserId
* @param direction
* +1/向下 -1/向上
*/
@Logable(operateTable="用户", operateType="排序",
operateInfo=" 排序(ID: ${args[0]}) 用户组中的(ID: ${args[1]})用户至 (ID: ${args[2]}) 用户 "
)
void sortUser(Long groupId, Long userId, Long toUserId, int direction);
/**
* <p>
* 启用停用用户
* </p>
* @param loginUserId
* @param userId
* @param accountState
* @param groupId
*/
@Logable(operateTable="用户", operateType="启用/停用",
operateInfo=" 启用/停用用户 (ID: ${args[1]}) ${args[2]} "
)
void startOrStopUser(Long userId, Integer accountState, Long groupId);
/**
* 处理过期用户
*/
void overdue();
/**
* <p>
* 根据用户组ID获取所有的用户
* </p>
* @param groupId
* @param pageNum
* 当前页数
* @return
*/
PageInfo getUsersByGroupId(Long groupId, Integer pageNum);
/**
* <p>
* 根据用户组ID获取所有的用户
* </p>
* @param groupId
* @param pageNum
* 当前页数
* @param fields
* @param orderType
* @return
*/
PageInfo getUsersByGroupId(Long groupId, Integer pageNum, String orderBy);
/**
* 根据用户组ID获取所有的用户(不分页)
* @param groupId
* @param groupType
* @return
*/
List<User> getUsersByGroup(Long groupId);
/**
* <p>
* 根据条件搜索用户(分页)
* </p>
* @param qyCondition
* @param userId
* @param pageNum
* @return
*/
PageInfo searchUser(UMQueryCondition qyCondition, Integer pageNum);
}