package com.norteksoft.acs.web.organization;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import com.norteksoft.acs.base.utils.ExportUserInfo;
import com.norteksoft.acs.base.utils.Ldaper;
import com.norteksoft.acs.base.web.struts2.CRUDActionSupport;
import com.norteksoft.acs.entity.authorization.BusinessSystem;
import com.norteksoft.acs.entity.authorization.Role;
import com.norteksoft.acs.entity.organization.Company;
import com.norteksoft.acs.entity.organization.Department;
import com.norteksoft.acs.entity.organization.User;
import com.norteksoft.acs.entity.organization.UserInfo;
import com.norteksoft.acs.entity.organization.Workgroup;
import com.norteksoft.acs.service.authorization.BusinessSystemManager;
import com.norteksoft.acs.service.organization.CompanyManager;
import com.norteksoft.acs.service.organization.DepartmentManager;
import com.norteksoft.acs.service.organization.ImportUserManager;
import com.norteksoft.acs.service.organization.UserInfoManager;
import com.norteksoft.acs.service.organization.UserManager;
import com.norteksoft.acs.service.sale.SubsciberManager;
import com.norteksoft.acs.web.eunms.AddOrRomoveState;
import com.norteksoft.product.api.ApiFactory;
import com.norteksoft.product.api.utils.BeanUtil;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.CollectionUtils;
import com.norteksoft.product.util.ContextUtils;
import com.norteksoft.product.util.Md5;
import com.norteksoft.product.util.PageUtils;
@SuppressWarnings("deprecation")
@Namespace("/organization")
@ParentPackage("default")
@Results( {
@Result(name = CRUDActionSupport.RELOAD, location = "user?synchronousLdapMessage=${synchronousLdapMessage}&message=${message}", type = "redirectAction"),
@Result(name = "deleteList", location = "user!deleteList", type = "redirectAction"),
@Result(name = "redirect_url", location = "${redirectUrl}", type = "redirect")})
public class UserAction extends CRUDActionSupport<UserInfo> {
private static final long serialVersionUID = 4814560124772644966L;
private Page<User> page = new Page<User>(0, true);// 每页5项,自动查询计算总页数.
private Page<Department> pageUserToDepart = new Page<Department>(20, true);// 每页5项,自动查询计算总页数.
private Page<Workgroup> pageUserToWork = new Page<Workgroup>(20, true);// 每页5项,自动查询计算总页数.
private UserInfoManager userInfoManager;
private UserManager userManager;
private DepartmentManager departmentManager;
private List<UserInfo> allUser;
private List<Department> allDepartment;
private List<Workgroup> allWorkGroup;
private List<Long> checkedWorkGroupIds;
private List<Long> checkedDepartmentIds;
private Long userInfoIds;
private User user;
private UserInfo entity;
private List<UserInfo> userInfos;
private Long id;
private String passWord_CreateTime;
private String ids;
private List<Long> workGroupIds;
private List<Long> departmentIds;
private String dids;
private Long userId;
private List<Role> allRoles;
private List<Long> roleIds;
private List<Long> checkedRoleIds;
private List<Long> passWordOverdueIds;
private Map<Long,Integer> passwordOverNoticeId;
private Integer isAddOrRomove;
private String flag;
private List<BusinessSystem> systems;
private BusinessSystemManager businessSystemManager;
private CompanyManager companyManager;
private SubsciberManager subsciberManager;
private String redirectUrl;
private String password;
private String states;
private Long companyId;
private String historyUserName;
private String synchronousLdapMessage;
private String message;
private String departmentName;
private String deId;
private String type;
private String depIds;
private String usersId;
private String mode;
private String lookId;
private String look;
private String looked;
private String oldDid;
private String oldType;
private String olDid;
private String olType;
private String passWordChange;
private String departmId;
private String departmType;
private String edit;
private String edited;;
private String oraginalPassword;
private Boolean isPasswordChange;
private String levelpassword;
private File file;
private String fileName;
private String oneDid;
private String mainDepartmentName;
private String comy;
private String fromWorkgroup;
private String fromChangeMainDepartment;//来自批量更换主职部门
private Long newMainDepartmentId;
@Autowired
private ImportUserManager importUserManager;
@Action("list")
public String toList() throws Exception{
return SUCCESS;
}
/**
*=================用户管理==================== 用户管理的列表界面 条件是用户信息的dr字段等于0
*/
@Override
@Action("user")
public String list() throws Exception {
if(departmId!=null&&departmType!=null){
if(departmType.equals("USERSBYDEPARTMENT"))
departmentId=Long.parseLong(departmId);
}
if(departmentId != null){
return getUserByDepartment();
}else if(workGroupId != null){
return getUserByWorkGroup();
}else if(departmType!=null&&(departmType.equals("NODEPARTMENT")||departmType.equals("NODEPARTMENT_USER"))){
return getNoDepartmentUsers();
}else if(departmType!=null&&departmType.equals("DELETED")){
return deleteList();
}else if(departmType!=null&&departmType.equals("allDepartment")){
return getUserByCompanyHasLog();
}else if(departmType!=null&&departmType.equals("company")){
return getUserByCompanyHasLog();
}else{
flag = "true";
return search();
}
}
public String getUserByCompanyHasLog()throws Exception{
if(page.getPageSize() <= 1){
return SUCCESS;
}else{
ApiFactory.getBussinessLogService().log("用户管理","查看用户列表",ContextUtils.getSystemId("acs"));
page = userInfoManager.queryUsersByCompany(page, companyManager.getCompanyId());
renderHtml(PageUtils.pageToJson(page));
return null;
}
}
public void prepareSearch() throws Exception {
prepareModel();
}
public String search() throws Exception {
if(page.getPageSize() <= 1){
ApiFactory.getBussinessLogService().log("用户管理","查看用户列表",ContextUtils.getSystemId("acs"));
return SUCCESS;
}else{
page = userInfoManager.getSearchUser(page, entity, 0, false);
//passWordOverdueIds = userInfoManager.getPassWordOverdueId(page.getResult());
//passwordOverNoticeId = userInfoManager.passwordOverNotice(page.getResult());
this.renderText(PageUtils.pageToJson(page));
return null;
}
}
@Override
public String save() throws Exception {
boolean logSign=true;//该字段只是为了标识日志信息:true表示新建用户、false表示修改用户
if(id!=null)logSign=false;
Long oldDeptId = entity.getUser().getMainDepartmentId();
if(StringUtils.isNotEmpty(oneDid)){//正职部门id
entity.getUser().setMainDepartmentId(Long.valueOf(oneDid));
}
if((entity!=null&&entity.getId()==null)||"yes".equals(passWordChange)){
entity.setPasswordUpdatedTime(new Date());
}
userInfoManager.save(entity);
id = entity.getId();
//新建用户是默认给用户portal普通用户权限
userInfoManager.giveNewUserPortalCommonRole(entity.getUser());
//修改ldap密码
if(Ldaper.isStartedAboutLdap()){
Company company = companyManager.getCompany(ContextUtils.getCompanyId());
List<Department> departments = userManager.getDepartmentsByUser(entity.getId());
message = Ldaper.modifyUser(entity.getUser(), company.getCode(), departments, false, entity.getUser().getLoginName());
}
// 处理部门关系,正职或兼职有修改
Set<Long> addDeptIds = new HashSet<Long>();
List<Long> delDeptIds = new ArrayList<Long>();
//dids是新兼职部门id //deId为原来的兼职部门id
if(StringUtils.isNotEmpty(oneDid)){
addDeptIds.add(Long.valueOf(oneDid));
if(oldDeptId != null) delDeptIds.add(oldDeptId);
}else{
if(oldDeptId != null) delDeptIds.add(oldDeptId);
}
if(StringUtils.isEmpty(dids)){// 新兼职部门没有值
if(StringUtils.isNotEmpty(deId)){ // 而原来的兼职部门有值,删除原来的
String[] tempDelIds = deId.split("=");
delDeptIds.addAll(CollectionUtils.changeList(tempDelIds));
}
}else{ // 新兼职部门有值
// 增加的新兼职部门
String[] tempAddIds = dids.split("=");
addDeptIds.addAll(CollectionUtils.changeList(tempAddIds));
if(StringUtils.isNotEmpty(deId)){ // 而原来的兼职部门有值,删除原来的
String[] tempDelIds = deId.split("=");
delDeptIds.addAll(CollectionUtils.changeList(tempDelIds));
}
}
if(!delDeptIds.isEmpty()){// 删除的
userManager.deleteDepartmemtToUser(delDeptIds, entity.getUser().getId());
deId=null;
}
if(!addDeptIds.isEmpty()){ // 增加的
departmentIds = new ArrayList<Long>();departmentIds.addAll(addDeptIds);
userManager.addDepartmentToUserDel(entity.getId(), departmentIds, 0);
}
setUserDeptmentInfo(entity.getUser());
if(logSign){
ApiFactory.getBussinessLogService().log("用户管理",
"新建用户:"+entity.getUser().getName(),ContextUtils.getSystemId("acs"));
}else{
ApiFactory.getBussinessLogService().log("用户管理",
"修改用户:"+entity.getUser().getName(),ContextUtils.getSystemId("acs"));
}
return INPUT;
}
/**
* 弹选多个部门树
*/
public String chooseDepartments(){
return "departmentTree";
}
/**
* 弹选单个部门树
*/
public String chooseOneDepartment(){
return "departmentSingleTree";
}
/**
* 修改密码方法
*/
public void prepareModifyPassWord() throws Exception {
prepareModel();
}
public String modifyPassWord()throws Exception {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
passWord_CreateTime = sdf.format(new Date());
return "modify-password";
}
/**
*各项目中的 修改密码的方法
*/
public void prepareUpdateUserPassword() throws Exception {
userId=ContextUtils.getUserId();
prepareModel();
}
public String updateUserPassword()throws Exception {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
passWord_CreateTime = sdf.format(new Date());
User u=userManager.getUserById(ContextUtils.getUserId());
oraginalPassword=u.getPassword();
return "update-user-password";
}
public void prepareSavePassWord() throws Exception {
prepareModel();
}
public String savePassWord()throws Exception {
if(Md5.toMessageDigest(levelpassword).equals(oraginalPassword)){
entity.setPasswordUpdatedTime(new Date());
userInfoManager.savePassWord(entity);
Company company = companyManager.getCompany(ContextUtils.getCompanyId());
List<Department> departments = userManager.getDepartmentsByUser(entity.getId());
if(Ldaper.isStartedAboutLdap()){
message = Ldaper.modifyUser(entity.getUser(), company.getCode(), departments, false, entity.getUser().getName());
}
isPasswordChange=true;
}else{
isPasswordChange=false;
User myuser = entity.getUser();
myuser.setPassword(oraginalPassword);
userManager.saveUser(myuser);
addActionMessage("原密码错误");
}
ApiFactory.getBussinessLogService().log("所有系统中",
"修改用户密码",ContextUtils.getSystemId("acs"));
return "update-user-password";
}
public String input() throws Exception {
if(id!=null){
entity = user.getUserInfo();
setUserDeptmentInfo(user);
looked=look;
edited=edit;
ApiFactory.getBussinessLogService().log("用户管理",
"修改用户",ContextUtils.getSystemId("acs"));
}else{
ApiFactory.getBussinessLogService().log("用户管理",
"新建用户",ContextUtils.getSystemId("acs"));
if(departmentIds.size()>0&&departmentIds.get(0)!=null&&departmentIds.get(0)!=0){
Department department=departmentManager.getDepartment(departmentIds.get(0));
if(department!=null){
mainDepartmentName = department.getName();
}
}
}
return INPUT;
}
private void setUserDeptmentInfo(User user){
// 正职部门
if(user.getMainDepartmentId()!=null){
Department d = departmentManager.getDepartmentById(user.getMainDepartmentId());
mainDepartmentName = (d==null?"":d.getName());
}
// 兼职部门
List<Department> departments= userManager.getDepartmentsByUser(user.getId());
departmentName="";deId="";
if(departments.size()>0){
for(Department department:departments){
if(!department.getName().equals(mainDepartmentName)){
departmentName+=department.getName()+",";
deId+=department.getId()+"=";
}
}
if(StringUtils.isNotEmpty(deId)) deId=deId.substring(0, deId.length()-1);
if(StringUtils.isNotEmpty(departmentName)) departmentName=departmentName.substring(0,departmentName.length()-1);
}
}
public void prepareInputLook() throws Exception {
prepareModel();
}
public String inputLook() throws Exception {
if(id!=null){
user=userInfoManager.getUserInfoById(id).getUser();
if(user.getMainDepartmentId()!=null){
Department d = departmentManager.getDepartment(user.getMainDepartmentId());
mainDepartmentName = (d==null?"":d.getName());
}
List<Department> departments= userManager.getDepartmentsByUser(user.getId());
departmentName="";
if(departments.size()>0){
for(Department department:departments){
if(!department.getName().equals(mainDepartmentName))
departmentName+=department.getName()+",";
}
if(departmentName.length() > 0) departmentName = departmentName.substring(0,departmentName.length()-1);
}
looked=look;
}
return INPUT;
}
public String checkUserRegister()throws Exception{
Integer maxUser = subsciberManager.getAllowedNumbByCompany(userInfoManager.getCompanyId());
Integer currentUser = userInfoManager.getCompanyIsUsers();
HttpServletRequest request = ServletActionContext.getRequest();
String weburl = request.getParameter("weburl");
if(maxUser.intValue()<(currentUser.intValue()+1)){
renderText("1");
}else{
renderText(weburl);
}
return null;
}
/**
* 删除用户
* @return
* @throws Exception
*/
public String falseDelete() throws Exception {
String logSign="";//该字段只是为了标识日志信息:用户1,用户2,...
String[] arr=ids.split(",");
for(String userId:arr){
userInfoManager.falseDelete(Long.valueOf(userId),departmentIds);
user=userManager.getUserById(Long.valueOf(userId));
if(StringUtils.isNotEmpty(logSign)){
logSign+=",";
}
logSign+=user.getName();
}
if(departmentIds.get(0)!=null){
departmentId=departmentIds.get(0);
}else{
if(StringUtils.isEmpty(departmType)){
departmType = "NODEPARTMENT";
}
}
ApiFactory.getBussinessLogService().log("用户管理",
"删除用户:"+logSign,ContextUtils.getSystemId("acs"));
return list();
}
/**
* 判断是否是管理员
* @return
* @throws Exception
*/
public String checkIsAdmin() throws Exception {
//User user = userManager.getUserById(id);
String roles = "";
String result = "";
String[] arr=ids.split(",");
for(String userId : arr){
user = userManager.getUserById(Long.valueOf(userId));
roles = userManager.getRolesExcludeTrustedRole(user);
if(roles.indexOf("Admin")>-1){
result = "yes";
}
}
renderText(result);
return null;
}
/**
* 用户禁用
*/
public void forbidden() throws Exception {
userInfoManager.forbidden(id);
}
/**
* 用户启用
*/
public void invocation() throws Exception {
userInfoManager.invocation(id);
}
/**
* 用户解锁
*/
public void unblock() throws Exception {
userInfoManager.unblock(id);
}
/**
* 锁定用户
*/
public void lock() throws Exception {
userInfoManager.lock(id);
}
public void prepareUserManger() throws Exception {
prepareModel();
}
public String userManger()throws Exception{
return "state";
}
public String saveUserState()throws Exception{
if(StringUtils.isEmpty(states)){
return RELOAD;
}else{
boolean logSign=true;//该字段只是为了标识日志信息:true表示启用、false表示禁用
entity = userInfoManager.getUserInfoById(id);
String[] stateStr = states.split(",");
for (int i=0;i<stateStr.length;i++) {
if(stateStr[i].equals("accountUnLock"))//用户密码过期解锁
unblock();
if(stateStr[i].equals("accountLock"))//用户密码过期不解锁
lock();
if(stateStr[i].equals("forbidden"))//禁用
forbidden();
logSign=false;
if(stateStr[i].equals("invocation")){//启用
invocation();
logSign=true;
}
}
if(logSign){
ApiFactory.getBussinessLogService().log("用户管理",
"改变用户状态:启用"+entity.getUser().getName(),ContextUtils.getSystemId("acs"));
}else{
ApiFactory.getBussinessLogService().log("用户管理",
"改变用户状态:禁用"+entity.getUser().getName(),ContextUtils.getSystemId("acs"));
}
return RELOAD;
}
}
/**
* ================已删除用户管理==============
*
*/
@Override
public String delete() throws Exception {
userInfoManager.delete(ids);
ApiFactory.getBussinessLogService().log("已删除用户管理",
"彻底删除用户",ContextUtils.getSystemId("acs"));
return deleteList();
}
/**
* 已删除用户的列表界面
*/
public String deleteList() throws Exception {
if(page.getPageSize() <= 1){
return "delete";
}else{
page = userInfoManager.getSearchUser(page, entity, 0, true);
renderHtml(PageUtils.pageToJson(page));
ApiFactory.getBussinessLogService().log("已删除用户管理",
"已删除用户列表",ContextUtils.getSystemId("acs"));
return null;
}
}
/**
* 无部门人员列表
*/
public String getNoDepartmentUsers() throws Exception{
//passWordOverdueIds = userInfoManager.getPassWordOverdueId(page.getResult());
//passwordOverNoticeId = userInfoManager.passwordOverNotice(page.getResult());
if(page.getPageSize() <= 1){
return SUCCESS;
}else{
ApiFactory.getBussinessLogService().log("用户管理",
"查看用户列表",ContextUtils.getSystemId("acs"));
userInfoManager.getNoDepartmentUsers(page);
renderHtml(PageUtils.pageToJson(page));
return null;
}
}
/**
* 已删除用户管理查询方法
*/
public void prepareSearchDelete() throws Exception {
prepareModel();
}
public String searchDelete() throws Exception {
page = userInfoManager.getSearchUser(page, entity,0, true);
return "delete";
}
/**
* 跳转到己删除用户添加部门页面
*/
public void prepareToDepartmentToUsersDel() throws Exception {
//entity =userInfoManager.getUserInfoById(userId);
userInfos=new ArrayList<UserInfo>();
String[] arr=ids.split(",");
for(int i=0;i<arr.length;i++){
User user=userManager.getUserById(Long.valueOf(arr[i]));
userInfos.add(user.getUserInfo());
}
}
public String toDepartmentToUsersDel()throws Exception{
pageUserToDepart = userManager.getDepartmentList(pageUserToDepart);
//checkedDepartmentIds = userManager.getCheckedDepartmentIds(userId);
isAddOrRomove=AddOrRomoveState.ADD.code;
return "deleted-department-list";
}
/**
* 给用户(己删除)分配部门
*/
public String saveDepartmentToUserDel() throws Exception{
String[] arr=ids.split(",");
for(int i=0;i<arr.length;i++){
User user = userManager.getUserById(Long.valueOf(arr[i]));
user.getUserInfo().setDr(0);
user.getUserInfo().setDeleted(false);
user.setDeleted(false);
Department department=departmentManager.getDepartment(departmentId);
if(department != null){
user.setMainDepartmentId(departmentId);
}
userInfoManager.save(user.getUserInfo());
userManager.saveUser(user);
List<Long> dIds = new ArrayList<Long>();
dIds.add(departmentId);
userManager.addDepartmentToUserDel(user.getUserInfo().getId(), dIds,0);
}
return "delete";
}
/**
* 批量更换用户的主职部门
*/
public String batchChangeUserMainDepartment() throws Exception{
userManager.batchChangeMainDepartment(ids,newMainDepartmentId);
String logSign="";//该字段只是为了标识日志信息:用户1,用户2,...
if(StringUtils.isNotEmpty(ids)){
String[] userids=ids.split(",");
Department department = departmentManager.getDepartment(newMainDepartmentId);
for(String userid:userids){
user=userManager.getUserById(Long.valueOf(userid));
if(StringUtils.isNotEmpty(logSign)){
logSign+=",";
}
logSign+=user.getName();
}
ApiFactory.getBussinessLogService().log("用户管理",
"更改用户"+logSign+"正职部门为"+department.getName(),ContextUtils.getSystemId("acs"));
}
return list();
}
/**
* 给用户分配部门
*/
public String changeDepartment(){
String[] d=depIds.split("=");
String[] u=usersId.split(",");
List<Long> departIds=CollectionUtils.changeList(d);
List<Long> uIds=CollectionUtils.changeList(u);
for(Long id:uIds){
List<Department> departments=userManager.getDepartmentsByUser(id);
if(departments.size()>0){
List<Long> depaIds=new ArrayList<Long>();
for(Department department :departments){
depaIds.add(department.getId());
}
userManager.deleteDepartmemtToUser(depaIds,id);
}
userManager.addDepartmentToUserDel(id,departIds ,0);
}
return RELOAD;
}
/**
* 用户分配角色
*/
public String listRoles() throws Exception {
isAddOrRomove = 0;
userId = entity.getUser().getId();
systems = businessSystemManager.getAllBusiness();
checkedRoleIds = userManager.getCheckedRoleIdsByUser(userId);
return "role";
}
/**
* 用户移除角色
*/
public String removeRoles() throws Exception{
isAddOrRomove = 1;
userId = entity.getUser().getId();
systems = businessSystemManager.getAllBusiness();
checkedRoleIds = userManager.getCheckedRoleIdsByUser(userId);
return "role";
}
/**
* 给用户分配角色
*/
public String addRolesToUser() {
userManager.addRolesToUser(userId, roleIds, isAddOrRomove);
addActionMessage(getText("department.addRolesSuccess"));
return RELOAD;
}
/**
* 跳转到人员添加部门页面
*/
public void prepareAddDepartmentToUsers() throws Exception {
//entity =userInfoManager.getUserInfoById(userId);
}
public String addDepartmentToUsers()throws Exception{
pageUserToDepart = userManager.getDepartmentList(pageUserToDepart);
//checkedDepartmentIds = userManager.getCheckedDepartmentIds(userId);
isAddOrRomove=AddOrRomoveState.ADD.code;
return "department-list";
}
/**
* 跳转到人员移除部门页面
*/
public void prepareRemoveDepartmentToUsers() throws Exception {
entity = userInfoManager.getUserInfoById(userId);
}
public String removeDepartmentToUsers()throws Exception{
pageUserToDepart = userManager.userToRomoveDepartmentList(pageUserToDepart, null, userId);
isAddOrRomove=AddOrRomoveState.ROMOVE.code;
return "department-list";
}
/**
* 给用户分配部门
*/
public String addDepartmentToUser() {
userManager.addDepartmentToUser(userId, departmentIds,isAddOrRomove);
addActionMessage(getText("user.addDepartmentSuccess"));
return RELOAD;
}
/**
* 跳转到人员添加工作组页面
*/
public void prepareAddWorkGroupToUsers() throws Exception {
entity = userInfoManager.getUserInfoById(userId);
}
public String addWorkGroupToUsers()throws Exception{
pageUserToWork = userManager.getWorkGroupList(pageUserToWork);
checkedWorkGroupIds = userManager.getCheckedWorkGroupIds(userId);
isAddOrRomove=AddOrRomoveState.ADD.code;
return "work-group-list";
}
/**
* 跳转人员移除工作组页面
*/
public void prepareRemoveWorkGroupToUsers() throws Exception {
entity = userInfoManager.getUserInfoById(userId);
}
public String removeWorkGroupToUsers()throws Exception{
pageUserToWork = userManager.userToRomoveWorkGroupList(pageUserToWork, null, userId);
isAddOrRomove=AddOrRomoveState.ROMOVE.code;
return "work-group-list";
}
/**
* 给用户分配工作组
*/
public String addWorkGroupToUser() {
userManager.addWorkGroupToUser(userId, workGroupIds,isAddOrRomove);
addActionMessage(getText("user.addWorkGroupSuccess"));
return RELOAD;
}
/**
* 同步LDAP的用户
* @return
* @throws Exception
*/
public String synchronous() throws Exception{
synchronousLdapMessage = userInfoManager.synchronize();
renderText(synchronousLdapMessage);
ApiFactory.getBussinessLogService().log("用户管理", "同步Ldap",ContextUtils.getSystemId("acs"));
return null;
}
public String validateLdapStart() throws Exception{
boolean falg = userInfoManager.validateLdapStart();
if(falg){
renderText("true");
}else{
renderText("false");
}
return null;
}
public String checkLoginPassword() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
String orgPassword = request.getParameter("orgPassword");
boolean istrue = userInfoManager.checkLoginPassword(orgPassword);
if(istrue){
renderText("");
return null;
}
renderText(getText("user.rulesNotMatch"));
return null;
}
public String checkOldPassword() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String oldPassword = request.getParameter("oldPassword");
Long id = Long.valueOf(request.getParameter("id"));
User user = userManager.getUserById(id);
if(oldPassword==null || "".equals(oldPassword.trim())){
this.renderText("false");
}else if(oldPassword.equals(user.getPassword())){
//}else if(PasswordEncoder.encode(oldPassword).equals(user.getPassword())){
this.renderText("true");
}else{
this.renderText("false");
}
return null;
}
public String updatePassword() throws Exception{
User user = userManager.getUserById(id);
String oldPassword = Md5.toMessageDigest(oraginalPassword);
if(StringUtils.isNotBlank(oraginalPassword) && oldPassword.equals(user.getPassword())){
user.getUserInfo().setPasswordUpdatedTime(new Date());
user.setPassword(password);
userManager.saveUser(user);
renderText("");
}else{
renderText("old_pwd_error");
}
return null;
}
public void overdueUnblock()throws Exception{
userInfoManager.overdueUnblock(id);
}
public void overdueblock()throws Exception{
userInfoManager.overdueblock(id);
}
public String showImportUser() throws Exception{
return "import-user";
}
public String importUser() throws Exception{
String result = "";
try {
result = ApiFactory.getDataImporterService().importData(file, fileName,importUserManager);
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
renderText(result);
return null;
}
public String exportUser() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
response.reset();
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("用户信息.xls","UTF-8"));
List<Department> depts = departmentManager.getAllDepartment();
ExportUserInfo.exportUser(response.getOutputStream(), depts, ContextUtils.getCompanyId());
ApiFactory.getBussinessLogService().log("用户管理",
"导出用户",ContextUtils.getSystemId("acs"));
return null;
}
/**
* 用户解锁
* @return
* @throws Exception
*/
public String unlockUser() throws Exception{
String logSign="";//该字段只是为了标识日志信息:用户1,用户2,...
if(StringUtils.isNotEmpty(ids)){
String[] userids=ids.split(",");
for(String userid:userids){
user=userManager.getUserById(Long.valueOf(userid));
if(StringUtils.isNotEmpty(logSign)){
logSign+=",";
}
logSign+=user.getName();
}
}
this.renderText(userManager.unlockUser(ids));
ApiFactory.getBussinessLogService().log("用户管理",
"用户解锁:"+logSign,ContextUtils.getSystemId("acs"));
return null;
}
@Override
protected void prepareModel() throws Exception {
if (id != null) {
entity = userInfoManager.getUserInfoById(id);
}else if(userId != null){
user = userManager.getUserById(userId);
entity = user.getUserInfo();
id = entity.getId();
}else {
entity = new UserInfo();
entity.setUser(new User());
}
}
public UserInfo getModel() {
return entity;
}
public User getUser() {
return user;
}
public Long getUserInfoIds() {
return userInfoIds;
}
public UserInfo getEntity() {
return entity;
}
public List<Long> getCheckedWorkGroupIds() {
return checkedWorkGroupIds;
}
public List<Long> getCheckedDepartmentIds() {
return checkedDepartmentIds;
}
public Integer getIsAddOrRomove() {
return isAddOrRomove;
}
public void setIsAddOrRomove(Integer isAddOrRomove) {
this.isAddOrRomove = isAddOrRomove;
}
@Required
public void setUserInfoManager(UserInfoManager userInfoManager) {
this.userInfoManager = userInfoManager;
}
@Required
public void setDepartmentManager(DepartmentManager departmentManager) {
this.departmentManager = departmentManager;
}
@Required
public void setCompanyManager(CompanyManager companyManager) {
this.companyManager = companyManager;
}
public UserManager getUserManager() {
return userManager;
}
@Required
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public void setCheckedWorkGroupIds(List<Long> checkedWorkGroupIds) {
this.checkedWorkGroupIds = checkedWorkGroupIds;
}
public void setCheckedDepartmentIds(List<Long> checkedDepartmentIds) {
this.checkedDepartmentIds = checkedDepartmentIds;
}
public List<UserInfo> getAllUser() {
return allUser;
}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public Page<User> getPage() {
return page;
}
public void setPage(Page<User> page) {
this.page = page;
}
public Page<Workgroup> getPageUserToWork() {
return pageUserToWork;
}
public void setPageUserToWork(Page<Workgroup> pageUserToWork) {
this.pageUserToWork = pageUserToWork;
}
public List<Department> getAllDepartment() {
return allDepartment;
}
public void setAllDepartment(List<Department> allDepartment) {
this.allDepartment = allDepartment;
}
public List<Long> getDepartmentIds() {
return departmentIds;
}
public void setDepartmentIds(List<Long> departmentIds) {
this.departmentIds = departmentIds;
}
public void setUserInfoIds(Long userInfoIds) {
this.userInfoIds = userInfoIds;
}
public List<Role> getAllRoles() {
return allRoles;
}
public List<Workgroup> getAllWorkGroup() {
return allWorkGroup;
}
public void setWorkGroupIds(List<Long> workGroupIds) {
this.workGroupIds = workGroupIds;
}
public void setAllRoles(List<Role> allRoles) {
this.allRoles = allRoles;
}
public List<Long> getRoleIds() {
return roleIds;
}
public void setRoleIds(List<Long> roleIds) {
this.roleIds = roleIds;
}
public List<Long> getCheckedRoleIds() {
return checkedRoleIds;
}
public void setCheckedRoleIds(List<Long> checkedRoleIds) {
this.checkedRoleIds = checkedRoleIds;
}
public void setEntity(UserInfo entity) {
this.entity = entity;
}
public void prepareListRoles() throws Exception {
entity = userInfoManager.getUserInfoById(userId);
}
public void prepareRemoveRoles() throws Exception {
entity = userInfoManager.getUserInfoById(userId);
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Page<Department> getPageUserToDepart() {
return pageUserToDepart;
}
public void setPageUserToDepart(Page<Department> pageUserToDepart) {
this.pageUserToDepart = pageUserToDepart;
}
public String getUserByDepartment() throws Exception{
if(departmentId != null){
//passWordOverdueIds = userInfoManager.getPassWordOverdueId(page.getResult());
//passwordOverNoticeId = userInfoManager.passwordOverNotice(page.getResult());
if(page.getPageSize() <= 1){
return SUCCESS;
}else{
ApiFactory.getBussinessLogService().log("用户管理",
"查看用户列表",ContextUtils.getSystemId("acs"));
page = userInfoManager.queryUsersByDepartment(page, departmentId);
renderHtml(PageUtils.pageToJson(page));
return null;
}
}else{
search();
}
return SUCCESS;
}
public String getUserByCompany()throws Exception{
if(page.getPageSize() <= 1){
return SUCCESS;
}else{
page = userInfoManager.queryUsersByCompany(page, companyManager.getCompanyId());
renderHtml(PageUtils.pageToJson(page));
return null;
}
}
/**
* 检测用户名是否注册
* @return
* @throws Exception
*/
public String checkUserName() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String userName = request.getParameter("userName");
UserInfo ui = userInfoManager.checkUserName(userName);
if(ui==null){
this.renderText("true");
}else{
this.renderText(userName);
}
return null;
}
public String getUserByWorkGroup() throws Exception{
look = "look";
fromWorkgroup = "fromWorkgroup";
if(page.getPageSize() <= 1){
return SUCCESS;
}else{
if(workGroupId != null){
ApiFactory.getBussinessLogService().log("用户管理",
"查看用户列表",ContextUtils.getSystemId("acs"));
page = userInfoManager.queryUsersByWorkGroup(page, workGroupId);
}
renderHtml(PageUtils.pageToJson(page));
return null;
}
}
private Long workGroupId;
private Long departmentId;
public Long getWorkGroupId() {
return workGroupId;
}
public void setWorkGroupId(Long workGroupId) {
this.workGroupId = workGroupId;
}
public Long getDepartmentId() {
return departmentId;
}
public void setDepartmentId(Long departmentId) {
this.departmentId = departmentId;
}
public String getPassWord_CreateTime() {
return passWord_CreateTime;
}
public void setPassWord_CreateTime(String passWord_CreateTime) {
this.passWord_CreateTime = passWord_CreateTime;
}
public List<Long> getPassWordOverdueIds() {
return passWordOverdueIds;
}
public void setPassWordOverdueIds(List<Long> passWordOverdueIds) {
this.passWordOverdueIds = passWordOverdueIds;
}
public Map<Long, Integer> getPasswordOverNoticeId() {
return passwordOverNoticeId;
}
public void setPasswordOverNoticeId(Map<Long, Integer> passwordOverNoticeId) {
this.passwordOverNoticeId = passwordOverNoticeId;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public List<BusinessSystem> getSystems() {
return systems;
}
public void setSystems(List<BusinessSystem> systems) {
this.systems = systems;
}
public String getRedirectUrl() {
return redirectUrl;
}
public void setRedirectUrl(String redirectUrl) {
this.redirectUrl = redirectUrl;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Required
public void setBusinessSystemManager(BusinessSystemManager businessSystemManager) {
this.businessSystemManager = businessSystemManager;
}
public SubsciberManager getSubsciberManager() {
return subsciberManager;
}
@Required
public void setSubsciberManager(SubsciberManager subsciberManager) {
this.subsciberManager = subsciberManager;
}
public String getStates() {
return states;
}
public void setStates(String states) {
this.states = states;
}
public Long getCompanyId() {
return ContextUtils.getCompanyId();
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public void setHistoryUserName(String historyUserName) {
this.historyUserName = historyUserName;
}
public String getSynchronousLdapMessage() {
return synchronousLdapMessage;
}
public void setSynchronousLdapMessage(String synchronousLdapMessage) {
this.synchronousLdapMessage = synchronousLdapMessage;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<UserInfo> getUserInfos() {
return userInfos;
}
public void setUserInfos(List<UserInfo> userInfos) {
this.userInfos = userInfos;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDids() {
return dids;
}
public void setDids(String dids) {
this.dids = dids;
}
public String getDeId() {
return deId;
}
public void setDeId(String deId) {
this.deId = deId;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDepIds() {
return depIds;
}
public void setDepIds(String depIds) {
this.depIds = depIds;
}
public String getUsersId() {
return usersId;
}
public String getLookId() {
return lookId;
}
public void setLookId(String lookId) {
this.lookId = lookId;
}
public String getLook() {
return look;
}
public void setLook(String look) {
this.look = look;
}
public void setUsersId(String usersId) {
this.usersId = usersId;
}
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
}
public String getLooked() {
return looked;
}
public void setLooked(String looked) {
this.looked = looked;
}
public String getOldDid() {
return oldDid;
}
public void setOldDid(String oldDid) {
this.oldDid = oldDid;
}
public String getOldType() {
return oldType;
}
public void setOldType(String oldType) {
this.oldType = oldType;
}
public String getOlDid() {
return olDid;
}
public void setOlDid(String olDid) {
this.olDid = olDid;
}
public String getOlType() {
return olType;
}
public void setOlType(String olType) {
this.olType = olType;
}
public String getPassWordChange() {
return passWordChange;
}
public void setPassWordChange(String passWordChange) {
this.passWordChange = passWordChange;
}
public String getDepartmId() {
return departmId;
}
public void setDepartmId(String departmId) {
this.departmId = departmId;
}
public String getDepartmType() {
return departmType;
}
public void setDepartmType(String departmType) {
this.departmType = departmType;
}
public String getEdit() {
return edit;
}
public void setEdit(String edit) {
this.edit = edit;
}
public String getEdited() {
return edited;
}
public void setEdited(String edited) {
this.edited = edited;
}
public void setOraginalPassword(String oraginalPassword) {
this.oraginalPassword = oraginalPassword;
}
public String getOraginalPassword() {
return oraginalPassword;
}
public Boolean getIsPasswordChange() {
return isPasswordChange;
}
public void setLevelpassword(String levelpassword) {
this.levelpassword = levelpassword;
}
public void setFile(File file) {
this.file = file;
}
public void setFileFileName(String fileName) {
this.fileName = fileName;
}
public String getOneDid() {
return oneDid;
}
public void setOneDid(String oneDid) {
this.oneDid = oneDid;
}
public String getMainDepartmentName() {
return mainDepartmentName;
}
public void setMainDepartmentName(String mainDepartmentName) {
this.mainDepartmentName = mainDepartmentName;
}
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
public String getComy() {
return comy;
}
public void setComy(String comy) {
this.comy = comy;
}
public String getFromWorkgroup() {
return fromWorkgroup;
}
public void setFromWorkgroup(String fromWorkgroup) {
this.fromWorkgroup = fromWorkgroup;
}
public String getFromChangeMainDepartment() {
return fromChangeMainDepartment;
}
public void setFromChangeMainDepartment(String fromChangeMainDepartment) {
this.fromChangeMainDepartment = fromChangeMainDepartment;
}
public Long getNewMainDepartmentId() {
return newMainDepartmentId;
}
public void setNewMainDepartmentId(Long newMainDepartmentId) {
this.newMainDepartmentId = newMainDepartmentId;
}
}