diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UsersController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UsersController.java index f1abe46..3f33752 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UsersController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/UsersController.java @@ -1,1234 +1,1264 @@ -package com.lyms.platform.operate.web.controller; - - -import com.lyms.platform.biz.service.BasicConfigService; -import com.lyms.platform.biz.service.OrganizationGroupsService; -import com.lyms.platform.common.annotation.TokenRequired; -import com.lyms.platform.common.base.BaseController; -import com.lyms.platform.common.base.LoginContext; -import com.lyms.platform.common.base.PageInfo; -import com.lyms.platform.common.constants.ConstantInterface; -import com.lyms.platform.common.constants.ErrorCodeConstants; -import com.lyms.platform.common.enums.*; -import com.lyms.platform.common.utils.*; -import com.lyms.platform.operate.web.facade.AccessPermissionFacade; -import com.lyms.platform.operate.web.facade.AutoMatchFacade; -import com.lyms.platform.operate.web.facade.OrganizationGroupsFacade; -import com.lyms.platform.operate.web.result.FrontEndResult; -import com.lyms.platform.operate.web.session.SessionProvider; -import com.lyms.platform.operate.web.session.strategy.ISessionProvider; -import com.lyms.platform.permission.model.*; -import com.lyms.platform.permission.service.*; -import com.lyms.platform.pojo.BasicConfig; -import com.lyms.platform.pojo.DataPermissionsModel; -import com.lyms.platform.pojo.OrganizationGroups; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.*; -import org.apache.commons.lang.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.management.relation.Role; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.Pattern; -import java.util.*; - -/** - * Created by Administrator on 2015/9/25 0025. - */ -@Controller -public class UsersController extends BaseController { - @Autowired - private DepartmentsService departmentsService; - - @Autowired - private UsersService usersService; - @Autowired - private OrganizationGroupsFacade groupsFacade; - @Autowired - private UserRoleMapsService userRoleMapsService; - @Autowired - private RolesService rolesService; - @Autowired - UserOrganizationMapsService userOrganizationMapsService; - @Autowired - OrganizationService organizationService; - @Value("#{configProperties['login.token']}") - private String token; - @Value("#{configProperties['login.typeId']}") - private String typeId; - @Value("#{configProperties['login.defaultPwd']}") - private String defaultPwd; - @Value("#{configProperties['defaultAdminOrgId']}") - private String defaultAdminOrgId; - @Autowired - private OrganizationGroupsService groupsService; - @Autowired - private Permissions2Service permissions2Service; - @Autowired - private AccessPermissionFacade accessPermissionFacade; - @Autowired - private SessionProvider iSessionProvider; - @Autowired - private AutoMatchFacade autoMatchFacade; - @Autowired - private BasicConfigService basicConfigService; - - private static final String LYMS = "龙源美生"; - - private static final String ADMIN = "管理员"; - private static final String replacePwd = "[$#&/]-+"; - - @RequestMapping(value = "/rebuildUserRoles", method = RequestMethod.GET) - @ResponseBody - public String rebuildUserRoles(@RequestParam(value = "hospitalId") Integer hospitalId) { - StringBuffer sb = new StringBuffer(); - Organization organization = organizationService.getOrganization(hospitalId); - if (organization != null) { - RolesQuery rolesQuery = new RolesQuery(); - rolesQuery.setYn(YnEnums.YES.getId()); - List orgids = new ArrayList<>(); - orgids.add(hospitalId); - rolesQuery.setOrgIds(orgids); - List rolesList = rolesService.queryRoles(rolesQuery); - if (rolesList == null || rolesList.size() == 0) { - sb.append("机构下权限不存在:" + hospitalId); - } else { - Map rolesMap = new HashMap<>(); - for (Roles r : rolesList) { - rolesMap.put(Integer.valueOf(r.getRemarks().split("_")[1]), r); - } - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setOrgId(hospitalId); - List list = usersService.queryUsers(usersQuery); - UserRoleMapsQuery mapsQuery = new UserRoleMapsQuery(); - mapsQuery.setYn(YnEnums.YES.getId()); - for (Users users : list) { - mapsQuery.setUserId(users.getId()); - List mapsList = userRoleMapsService.queryUserRoleMaps(mapsQuery); - for (UserRoleMaps maps : mapsList) { - Roles roles = rolesMap.get(maps.getRoleId()); - if (roles == null) { - sb.append("
roles is null " + JsonUtil.obj2JsonString(maps) + " -- " + users.getId()); - } else { - UserRoleMaps dbmaps = new UserRoleMaps(); - dbmaps.setYn(1); - dbmaps.setRoleId(roles.getId()); - dbmaps.setUserId(users.getId()); - userRoleMapsService.addUserRoleMaps(dbmaps); - userRoleMapsService.deleteUserRoleMaps(maps.getId()); - sb.append("
success userid:" + users.getId() + " -- " + JsonUtil.obj2JsonString(dbmaps) + " -- " + JsonUtil.obj2JsonString(maps)); - } - } - } - } - } else { - sb.append("机构不存在:" + hospitalId); - } - return sb.toString(); - } - - /** - * 获取管理员列表 - */ - @RequestMapping(value = "/admins", method = RequestMethod.GET) - @ResponseBody - @TokenRequired - public FrontEndResult getAdminList(HttpServletResponse response, - @RequestParam(value = "keyword", required = false) String keyword, - @RequestParam(value = "rolesId", required = false) Integer rolesId, - @RequestParam(value = "page", required = false) Integer page, - @RequestParam(value = "limit", required = false) Integer limit) { - - limit = limit == null ? 10 : limit; - page = page == null ? 1 : page; - - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setNeed("true"); - usersQuery.setSort("modified desc"); - usersQuery.setYn(YnEnums.YES.getId()); - usersQuery.setKeyword(keyword); - usersQuery.setType(0); - usersQuery.setPage(page); - usersQuery.setLimit(limit); - usersQuery.setRoleId(rolesId); - - List users = usersService.queryUsers2(usersQuery); - //设置用户角色信息 - for (Users user : users) { - user.setRoles(this.getUserRoles(user.getId())); - user.setDepartmentses(departmentsService.getDepartments(user.getDeptId())); - List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(user.getId()); - user.setOrganizations(accessPermissionFacade.getOrganization(permissionsModelList)); - if (permissionsModelList != null && permissionsModelList.size() > 0) { - user.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); - } - } - - FrontEndResult frontEndResult = new FrontEndResult(); - frontEndResult.setPageInfo(usersQuery.getPageInfo()); - frontEndResult.setData(users); - frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); - return frontEndResult; - } - - @RequestMapping(value = "/users/enums", method = RequestMethod.GET) - @ResponseBody - public Map getEnums() { - Map map = new HashMap(); - for (ZhiChenEnums zhiChenEnums : ZhiChenEnums.values()) { - map.put(zhiChenEnums.getId(), zhiChenEnums.getName()); - } - return map; - } - - /** - * 获取用户列表 - */ - @RequestMapping(value = "/users", method = RequestMethod.GET) - @TokenRequired - @ResponseBody - public FrontEndResult getPermissions(HttpServletResponse response, - HttpServletRequest request, - @RequestParam(value = "keyword", required = false) String keyword, - @RequestParam(value = "rolesId", required = false) Integer rolesId, - @RequestParam(value = "page", required = false) Integer page, - @RequestParam(value = "limit", required = false) Integer limit, - @RequestParam(value = "orgId", required = false) Integer orgId, - @RequestParam(value = "deptId", required = false) Integer deptId) { - LoginContext loginContext = (LoginContext) request.getAttribute("loginContext"); - Users u = usersService.getUsers(loginContext.getId()); - - - List ids = null; - if (u.getType().equals(UserTypeEnum.NORMAL_USER.getId())) { - if (null != u.getOrgId()) { - orgId = u.getOrgId(); - } else { - FrontEndResult frontEndResult = new FrontEndResult(); - frontEndResult.setPageInfo(new PageInfo(0, 0, 0, 10)); - frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); - return frontEndResult; - } - } else if (u.getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId())) { - List organizations = accessPermissionFacade.getOrganization(accessPermissionFacade.findAccessPerminssionByUserId(u.getId())); - ids = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(organizations)) { - for (Organization organization : organizations) { - ids.add(organization.getId()); - } - } else { - FrontEndResult frontEndResult = new FrontEndResult(); - frontEndResult.setPageInfo(new PageInfo(0, 0, 0, 10)); - frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); - return frontEndResult; - } - } - - if (null != orgId) { - ids = new ArrayList<>(); - ids.add(orgId); - } - - UsersQuery usersQuery = new UsersQuery(); - limit = limit == null ? 10 : limit; - page = page == null ? 1 : page; - - usersQuery.setNeed("true"); - usersQuery.setSort("modified desc"); - usersQuery.setYn(YnEnums.YES.getId()); - usersQuery.setDeptId(deptId); - usersQuery.setKeyword(keyword); - usersQuery.setType(1); - usersQuery.setOrgIds(ids); - usersQuery.setPage(page); - usersQuery.setLimit(limit); - usersQuery.setRoleId(rolesId); - - - List users = usersService.queryUsers2(usersQuery); - List organizations = null; - //设置用户角色信息 - for (Users user : users) { - organizations = new ArrayList<>(); - Organization organization = organizationService.getOrganization(user.getOrgId()); - user.setOrganization(organization); - organizations.add(organization); - user.setOrganizations(organizations); - - user.setRoles(this.getUserRoles(user.getId())); - user.setDepartmentses(departmentsService.getDepartments(user.getDeptId())); - if (null != user.getZhiChenId()) { - user.setZhiChen(ZhiChenEnums.getById(user.getZhiChenId())); - } - List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(user.getId()); - user.setOrganizations(accessPermissionFacade.getOrganization(permissionsModelList)); - if (permissionsModelList != null && permissionsModelList.size() > 0) { - user.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); - } -// user.setPwd(StringUtils.isEmpty(user.getPwd())?user.getPwd():user.getPwd().replaceAll(".","*")); - user.setPwd(replacePwd); - } - - FrontEndResult frontEndResult = new FrontEndResult(); - frontEndResult.setPageInfo(usersQuery.getPageInfo()); - frontEndResult.setData(users); - frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); - - return frontEndResult; -// ResultUtils.buildSuccessResultAndWrite(response, frontEndResult); - } - - //获取用户角色信息 - private List getUserRoles(Integer userId) { - UserRoleMapsQuery query = new UserRoleMapsQuery(); - query.setUserId(userId); - query.setYn(YnEnums.YES.getId()); - List userRoleMapses = userRoleMapsService.queryUserRoleMaps(query); - List roles = new ArrayList<>(); - for (UserRoleMaps roleMaps : userRoleMapses) { - roles.add(rolesService.getRoles(roleMaps.getRoleId())); - } - return roles; - } - - - /** - * AMS 用户请求登录,获取token - */ - @RequestMapping(value = "/tokens", method = RequestMethod.POST) - public void usersLogin(@RequestParam(value = "account") String account, - @RequestParam(value = "vercode", required = false) String code, - @RequestParam(value = "password", required = false) String password, - HttpServletResponse response) { - Map resultMsgMap = new HashMap<>(); - if (StringUtils.isEmpty(account) && (StringUtils.isEmpty(code) || StringUtils.isEmpty(password))) { - resultMsgMap.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR);//参数错误 - resultMsgMap.put(ResultUtils.ERROR_MSG, "登录账户或者验证码为空,请输入"); - //把这个map转成一个json字符串输出到前台 - writeJson(response, JsonUtil.obj2JsonString(resultMsgMap)); - return; - } - - //code 不为空使用手机登录, password不为空时使用帐号登录 - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setYn(YnEnums.YES.getId()); - if (null != code) { - usersQuery.setPhone(account); - } - if (null != password) { - usersQuery.setAccount(account); - } - List users = usersService.queryUsers(usersQuery); - if (0 == users.size()) { - ResultUtils.buildParameterErrorResultAndWrite(response, "该账户不存在"); - return; - } - - Users u = users.get(0); - if (!u.getEnable().equals(1)) { - ResultUtils.buildParameterErrorResultAndWrite(response, "该账户已被禁用"); - return; - } - if (null != u.getOrgId()) { - Organization organization = organizationService.getOrganization(u.getOrgId()); - if (null != organization) { - if (null != organization.getStatus() && HospitalStatusEnums.TZYX.getId() == organization.getStatus()) { - ResultUtils.buildParameterErrorResultAndWrite(response, "该账户已被禁用"); - return; - } - } - } - - - LoginContext loginContext = new LoginContext(); - loginContext.setErrormsg("服务器内部错误!"); - loginContext = iSessionProvider.login(account, password, code); - /* if(null != code) { - loginContext =LoginUtil.loginByPhone(account, code, typeId, token); - } - if(null != password) { - loginContext = LoginUtil.loginByAccount(account, password, typeId, token); - }*/ - - if (null != loginContext && loginContext.getErrorcode().equals(0)) { - if (u.getLastLoginTime() != null) { - Users users1 = new Users(); - users1.setId(u.getId()); - users1.setLastLoginTime(new Date()); - usersService.updateUsers(users1); - } - - Map result = new HashMap<>(); - result.put("token", loginContext.getToken()); - ResultUtils.buildSuccessResultAndWrite(response, result); - } else { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.PARAMETER_ERROR, loginContext.getErrormsg()); - } - } - - /** - * 发送验证码 - * - * @param phone - */ - @RequestMapping(value = "/vercode", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8") - public void sendVerCode(@RequestParam("phone") String phone, - HttpServletResponse httpServletResponse) { - - if (StringUtils.isEmpty(phone)) { - ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse); - return; - } - if (!phone.matches("^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\\d{8})$")) { - ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "手机号不正确!"); - return; - } - - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setPhone(phone); - usersQuery.setYn(YnEnums.YES.getId()); - List list = usersService.queryUsers(usersQuery); - if (null == list || 0 == list.size()) { - ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "该账户不存在"); - return; - } - - if (!list.get(0).getEnable().equals(1)) { - ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "该账户已被禁用"); - return; - } - - LoginContext loginContext = LoginUtil.sendVerCode(phone, typeId, token); - if (null != loginContext) { - ResultUtils.buildResultAndWrite(httpServletResponse, loginContext.getErrorcode(), loginContext.getErrormsg()); - return; - } - ResultUtils.buildResultAndWrite(httpServletResponse, ErrorCodeConstants.SYSTEM_ERROR, "服务器内部错误"); - - } - - - /** - * 获取 登录用户信息(用户、最后登录时间) - */ - @RequestMapping(value = "/users/currentUser", method = RequestMethod.GET) - @TokenRequired - public void usersLoginMsg(HttpServletResponse response, HttpServletRequest request) { - LoginContext loginContext = (LoginContext) request.getAttribute("loginContext"); - Users users = null; - if (null != loginContext) { - users = usersService.getUsers(loginContext.getId()); - } - - List permissions = null; - List roles = new ArrayList<>(); - //超级管理员拥有所有角色和权限 - if (users.getType().equals(UserTypeEnum.SUPPER_ADMIN.getId())) { - RolesQuery rolesQuery = new RolesQuery(); - rolesQuery.setYn(YnEnums.YES.getId()); - roles = rolesService.queryRoles(rolesQuery); - - Permissions2Query permissionsQuery = new Permissions2Query(); - permissionsQuery.setYn(YnEnums.YES.getId()); - permissions = permissions2Service.queryPermissions2(permissionsQuery); - - - } - //其他用户 - else if (users.getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId()) || users.getType().equals(UserTypeEnum.NORMAL_USER.getId())) { - //获取用户角色信息 - UserRoleMapsQuery query = new UserRoleMapsQuery(); - query.setUserId(users.getId()); - query.setYn(YnEnums.YES.getId()); - List userRoleMapses = userRoleMapsService.queryUserRoleList(query); - - List permissionIds = new ArrayList<>(); - permissions = new ArrayList<>(); - String orgId = autoMatchFacade.getHospitalId(loginContext.getId()); - - int rog = NumberUtils.toInt(orgId); - for (Integer roleMaps : userRoleMapses) { - Roles roles1 = rolesService.getRoles(roleMaps); - if (roles1 != null && StringUtils.isNotEmpty(orgId)) { - if (roles1.getOrgId() == null || roles1.getOrgId() == rog) { - roles.add(roles1); - } - } - } - List local = permissions2Service.queryPermissionByRoleIds(userRoleMapses); - if (CollectionUtils.isNotEmpty(local)) { - for (Permissions2 permissions1 : local) { - if (!permissionIds.contains(permissions1.getId())) { - permissionIds.add(permissions1.getId()); - permissions.add(permissions1); - } - } - } - } - - List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(users.getId()); - if (permissionsModelList != null && permissionsModelList.size() > 0) { - users.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); - } - List organizations = new ArrayList<>(); - if (UserTypeEnum.SUPPER_ADMIN.getId().equals(users.getType())) {//超级管理员 - OrganizationQuery organizationQuery = new OrganizationQuery(); - organizationQuery.setYn(YnEnums.YES.getId()); - organizations = organizationService.queryOrganization(organizationQuery); - } else { - Organization organization = organizationService.getOrganization(users.getOrgId()); - if(null!=organization&&StringUtils.isNotEmpty(organization.getCityId())){ - BasicConfig bg= basicConfigService.getOneBasicConfigById(organization.getCityId()); - Map map = new HashMap<>(); - map.put("id",organization.getCityId()); - if(null!=bg){ - map.put("name",bg.getName()); - } - organization.setCity(map); - } - - if(null!=organization&&StringUtils.isNotEmpty(organization.getProvinceId())){ - BasicConfig bg= basicConfigService.getOneBasicConfigById(organization.getProvinceId()); - Map map = new HashMap<>(); - map.put("id",organization.getProvinceId()); - if(null!=bg){ - map.put("name",bg.getName()); - } - organization.setProvince(map); - } - - if(null!=organization&&StringUtils.isNotEmpty(organization.getAreaId())){ - BasicConfig bg= basicConfigService.getOneBasicConfigById(organization.getAreaId()); - Map map = new HashMap<>(); - map.put("id",organization.getAreaId()); - if(null!=bg){ - map.put("name",bg.getName()); - } - organization.setArea(map); - } - - organizations.add(organization); - users.setOrganization(organization); - //是否是建档医院 - users.setbStatus(organization.getbStatus()); - - String hospital = autoMatchFacade.getHospitalId(loginContext.getId()); - //设置建档方式 - String groupId = groupsFacade.findByCurrentUserId(hospital); - Integer bType = GroupEnums.BuildType.SINGLE.getbType(); - if (StringUtils.isNotEmpty(groupId)) { - OrganizationGroups groups = groupsService.findById(groupId); - if (null != groups) { - bType = groups.getbType(); - } - } - users.setbType(bType); - List list2 = accessPermissionFacade.getOrganization(permissionsModelList); - if (CollectionUtils.isNotEmpty(list2)) { - for (Organization o : list2) { - organizations.add(o); - } - } - } - users.setOrganizations(organizations); - - Map map = new HashMap<>(); - map.put("user", users); - map.put("watermark", CompressEncodeingUtil.compressNumber(users.getId().toString() + DateUtil.getymd6())); - map.put("roles", roles); - map.put("permissions", permissions); - - ResultUtils.buildSuccessResultAndWrite(response, map); - } - - /** - * 获取 用户角色信息 - */ - @RequestMapping(value = "/users/userRole/{id}", method = RequestMethod.GET) - @TokenRequired - public void userRole(HttpServletResponse response, HttpServletRequest request, @PathVariable(value = "id") Integer id) { - UserRoleMapsQuery query = new UserRoleMapsQuery(); - query.setUserId(id); - query.setYn(YnEnums.YES.getId()); - List userRoleMapses = userRoleMapsService.queryUserRoleMaps(query); - List roles = new ArrayList<>(); - for (UserRoleMaps roleMaps : userRoleMapses) { - roles.add(rolesService.getRoles(roleMaps.getRoleId())); - } - - ResultUtils.buildSuccessResultAndWrite(response, roles); - } - - - /** - * 管理员权限设置 - */ - @RequestMapping(value = "/adminPermissions", method = RequestMethod.POST) - @TokenRequired - public void adminPermissions(HttpServletResponse response, @RequestParam(value = "userId") Integer userId, @RequestParam(value = "ids") String ids) { - - if (ids == null) { - ResultUtils.buildParameterErrorResultAndWrite(response); - return; - } - - //检查账户是否存在 - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setId(userId); - List usersList = usersService.queryUsers(usersQuery); - if (usersList.size() == 0) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "用户不存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - - if (!usersList.get(0).getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId())) { - ResultUtils.buildParameterErrorResultAndWrite(response, "用户错误"); - return; - } - - //将已有映射设为失效 - UserOrganizationMapsQuery userOrganizationMapsQuery = new UserOrganizationMapsQuery(); - userOrganizationMapsQuery.setUserId(userId); - List userOrganizationMapsList = userOrganizationMapsService.queryUserOrganizationMaps(userOrganizationMapsQuery); - if (0 < userOrganizationMapsList.size()) { - for (UserOrganizationMaps userOrganizationMaps : userOrganizationMapsList) { - userOrganizationMaps.setYn(YnEnums.NO.getId()); - userOrganizationMapsService.updateUserOrganizationMaps(userOrganizationMaps); - } - } - - //添加最新权限映射 - String[] roleArrayIds = ids.split(","); - Users user = usersList.get(0); - UserOrganizationMaps userOrganizationMaps = null; - Organization organization = null; - for (String id : roleArrayIds) { - organization = organizationService.getOrganization(Integer.valueOf(id)); - if (null != organization) { - userOrganizationMaps = new UserOrganizationMaps(); - userOrganizationMaps.setUserId(user.getId()); - userOrganizationMaps.setOrgId(Integer.valueOf(id)); - userOrganizationMaps.setYn(YnEnums.YES.getId()); - userOrganizationMapsService.addUserOrganizationMaps(userOrganizationMaps); - } - } - - - //修改user相关字段 - user.setModified(new Date()); - usersService.updateUsers(user); - - ResultUtils.buildSuccessResultAndWrite(response); - } - - - private Boolean isPhone(String phone) { - return phone.matches("^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\\d{8})$"); - } - - /** - * 添加管理员信息 - */ - @RequestMapping(value = "/admins", method = RequestMethod.POST) - @TokenRequired - public void addAdmin(HttpServletResponse response, - HttpServletRequest request, - @RequestParam(value = "name", required = false) String name, - @RequestParam(value = "account", required = false) String account, - @RequestParam(value = "phone") String phone, - @RequestParam(value = "enable", required = false) Integer enable, - @RequestParam(value = "remarks", required = false) String remarks, - @RequestParam(value = "roleIds") String roleIds) { - - - //获取登录用户 - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - Users user = usersService.getUsers(loginState.getId()); - - - if (StringUtils.isBlank(roleIds) || - StringUtils.isBlank(name) || StringUtils.isBlank(phone) || null == user) { - ResultUtils.buildParameterErrorResultAndWrite(response); - return; - } - - if (!isPhone(phone)) { - ResultUtils.buildParameterErrorResultAndWrite(response, "手机号格式不正确"); - return; - } - - /* //根据当前登录的用户判断是否 有管理员的权限 - List list = userRoleMapsService.queryUserRoleName(loginState.getId()); - if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - }*/ - if (user != null) { - - //检查注册账户是否存在 - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setPhone(phone); - usersQuery.setYn(YnEnums.YES.getId()); - List usersList = usersService.queryUsers(usersQuery); - if (usersList.size() != 0) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "手机号已存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - - //准备添加数据 - Users users = new Users(); - users.setType(UserTypeEnum.PLATFORM_ADMIN.getId()); - users.setName(name); - users.setOrgId(Integer.parseInt(defaultAdminOrgId)); - users.setAccount(account); - users.setPhone(phone); - users.setEnable(enable); - users.setRemarks(remarks); - users.setPublishId(user.getId()); - users.setPublishName(user.getName()); - users.setYn(YnEnums.YES.getId()); - users.setModified(new Date()); - users.setCreated(new Date()); -// users.setLastLoginTime(new Date()); -// users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); - - //关联登录中心ID - LoginContext loginContext = null; -// loginContext = LoginUtil.register(null, phone, null, null, token, typeId); - loginContext = iSessionProvider.register(null, phone, null, null); - //0 成功 4009 已注册 - if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { - users.setLogincenterId(loginContext.getId()); - usersService.addUsers(users); - - - //如有角色,则对用户角色中间表新增 - - - String[] roleArrayIds = roleIds.split(","); - List user1 = usersService.queryUsers(usersQuery); - for (String id : roleArrayIds) { - Roles roles = rolesService.getRoles(Integer.valueOf(id)); - if (roles == null || roles.getYn() == YnEnums.NO.getId()) { - continue; - } - UserRoleMaps userRoleMaps = new UserRoleMaps(); - - if (user1.get(0).getId() != null) { - userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(id))); - userRoleMaps.setUserId(user1.get(0).getId()); - userRoleMaps.setYn(YnEnums.YES.getId()); - userRoleMapsService.addUserRoleMaps(userRoleMaps); - } - } - ResultUtils.buildSuccessResultAndWrite(response); - - } else { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, loginContext.getErrormsg()); - return; - } - } - } - - - /** - * 添加用户信息 - */ - @RequestMapping(value = "/users", method = RequestMethod.POST) - @TokenRequired - public void addUsers(HttpServletResponse response, - HttpServletRequest request, - @RequestParam(value = "orgId") Integer orgId, - @RequestParam(value = "deptId", required = false) Integer deptId, - @RequestParam(value = "ksId", required = false) Integer ksId, - @RequestParam(value = "name", required = false) String name, - @RequestParam(value = "account", required = false) String account, - @RequestParam(value = "password", required = false) String password, - @RequestParam(value = "phone", required = false) String phone, - @RequestParam(value = "enable", required = false) Integer enable, - @RequestParam(value = "remarks", required = false) String remarks, - @RequestParam(value = "roleIds") String roleIds, - @RequestParam(value = "zhiCId") Integer zhiCId) { - - - //获取登录用户 - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - Users user = usersService.getUsers(loginState.getId()); - - - if (StringUtils.isBlank(roleIds) || null == user || (StringUtils.isBlank(account) && StringUtils.isBlank(phone))) { - ResultUtils.buildParameterErrorResultAndWrite(response); - return; - } - - if (StringUtils.isNotBlank(phone) && !isPhone(phone)) { - ResultUtils.buildParameterErrorResultAndWrite(response, "手机号格式不正确"); - return; - } else if (StringUtils.isNotBlank(account) && StringUtils.isBlank(password)) { - password = defaultPwd; - } - - if (deptId == null && ksId == null) { - ResultUtils.buildParameterErrorResultAndWrite(response, "deptId or ksId required"); - return; - } - //根据当前登录的用户判断是否 有管理员的权限 - /* List list = userRoleMapsService.queryUserRoleName(loginState.getId()); - if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - }*/ - if (user != null) { - UsersQuery usersQuery = new UsersQuery(); - if (StringUtils.isNotBlank(phone)) { - //检查注册账户是否存在 - usersQuery.setPhone(phone); - usersQuery.setYn(YnEnums.YES.getId()); - List usersList = usersService.queryUsers(usersQuery); - if (usersList.size() != 0) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "该手机号已使用"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - } - - if (StringUtils.isNotBlank(account)) { - usersQuery = new UsersQuery(); - usersQuery.setAccount(account); - usersQuery.setYn(YnEnums.YES.getId()); - if (0 != usersService.queryUsersCount(usersQuery)) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "该账户已存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - } - - //准备添加数据 - Users users = new Users(); - users.setType(UserTypeEnum.NORMAL_USER.getId()); //1普通用户 - users.setDeptId(deptId); - users.setOrgId(orgId); - users.setName(name); - users.setAccount(account); - users.setPhone(phone); - users.setEnable(enable); - users.setZhiChenId(zhiCId); - users.setPwd(MD5Utils.md5(password).toUpperCase()); - users.setRemarks(remarks); - users.setKsId(ksId); - users.setPublishId(user.getId()); - users.setPublishName(user.getName()); - users.setYn(YnEnums.YES.getId()); - users.setModified(new Date()); - users.setCreated(new Date()); - users.setZhiChen(ZhiChenEnums.getById(zhiCId)); -// users.setLastLoginTime(new Date()); -// users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); - - LoginContext loginContext = new LoginContext(); - loginContext.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); - loginContext.setErrormsg("系统错误"); - //关联登录中心ID - if (StringUtils.isNotBlank(phone) || StringUtils.isNotBlank(account)) { - /**/ - String pwd = null; - if (StringUtils.isNotBlank(password)) { - pwd = MD5Utils.md5(password).toUpperCase(); - } -// loginContext = LoginUtil.register(null, phone,account, pwd, token, typeId); - loginContext = iSessionProvider.register(null, phone, account, pwd); - } - - //0 成功 4009 已注册 - if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { - users.setLogincenterId(loginContext.getId()); - usersService.addUsers(users); - - //如有角色,则对用户角色中间表新增 - - String[] roleArrayIds = roleIds.split(","); - List user1 = usersService.queryUsers(usersQuery); - for (String id : roleArrayIds) { - Roles roles = rolesService.getRoles(Integer.valueOf(id)); - if (roles == null || roles.getYn() == YnEnums.NO.getId()) { - continue; - } - UserRoleMaps userRoleMaps = new UserRoleMaps(); - - if (user1.get(0).getId() != null) { - userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(id))); - userRoleMaps.setUserId(user1.get(0).getId()); - userRoleMaps.setYn(YnEnums.YES.getId()); - userRoleMapsService.addUserRoleMaps(userRoleMaps); - } - } - ResultUtils.buildSuccessResultAndWrite(response); - } else { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, loginContext.getErrormsg()); - } - } - } - - - /** - * 用户修改 - */ - @RequestMapping(value = "/users/{id}", method = RequestMethod.PUT) - @TokenRequired - public void updateUsers(HttpServletResponse response, - HttpServletRequest request, - @PathVariable(value = "id") Integer id, - @RequestParam(value = "name", required = false) String name, - @RequestParam(value = "account", required = false) String account, - @RequestParam(value = "password", required = false) String password, - @RequestParam(value = "phone", required = false) String phone, - @RequestParam(value = "enable", required = false) Integer enable, - @RequestParam(value = "remarks", required = false) String remarks, - @RequestParam(value = "roleIds", required = false) String roleIds, - @RequestParam(value = "orgId", required = false) Integer orgId, - @RequestParam(value = "deptId", required = false) Integer deptId, - @RequestParam(value = "zhiCId") Integer zhiCId) { - - if (StringUtils.isBlank(phone) && StringUtils.isBlank(account)) { - ResultUtils.buildParameterErrorResultAndWrite(response, "帐号和手机号不能同时为空"); - return; - } - - if (null == roleIds) { - ResultUtils.buildParameterErrorResultAndWrite(response, "roleIds不能为空"); - return; - } - - if (!(null != enable && (1 == enable || 2 == enable))) { - ResultUtils.buildParameterErrorResultAndWrite(response, "enable参数错误"); - return; - } - - //获取登录用户 - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - Users user = usersService.getUsers(loginState.getId()); - if (user != null) { - - Users users = usersService.getUsers(id); - if (null != users.getOtherAccount() && "1".equals(user.getOtherAccount() + "")) { - return; - } - if (StringUtils.isNotBlank(password) && password.equals(replacePwd)) { - password = users.getPwd(); - } - - //根据当前登录的用户判断是否 有管理员的权限 - /* List list = userRoleMapsService.queryUserRoleName(loginState.getId()); - if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - }*/ - if (null == users) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "用户不存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - - - //修改了手机号, 帐号 密码 - if (!new Integer(1).equals(users.getOtherAccount())) { - if ((StringUtils.isNotBlank(account) && !account.equals(users.getAccount())) || (StringUtils.isNotBlank(phone) && !phone.equals(users.getPhone())) || (StringUtils.isNotBlank(password) && !password.equals(users.getPwd()))) { - UsersQuery usersQuery = new UsersQuery(); - List usersList; - if (StringUtils.isNotBlank(phone) && !phone.equals(users.getPhone())) { - //检查手机号是否存在 - usersQuery.setPhone(phone); - usersQuery.setYn(YnEnums.YES.getId()); - usersList = usersService.queryUsers(usersQuery); - if (0 < usersList.size()) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "手机号已存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - } - - if (StringUtils.isNotBlank(account) && !account.equals(users.getAccount())) { - //检查账户是否存在 - usersQuery = new UsersQuery(); - usersQuery.setAccount(account); - usersQuery.setYn(YnEnums.YES.getId()); - usersList = usersService.queryUsers(usersQuery); - if (0 < usersList.size()) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "该帐号已存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - } - - -// LoginContext loginContext = LoginUtil.register(users.getLogincenterId().toString(), phone, account, MD5Utils.md5(password).toUpperCase(), token, typeId); - LoginContext loginContext = iSessionProvider.register(users.getLogincenterId(), phone, account, StringUtils.isNotBlank(password) ? MD5Utils.md5(password).toUpperCase() : null); - //0 成功 4009 已注册 - if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { - users.setPhone(phone); - users.setAccount(account); - users.setLogincenterId(loginContext.getId()); - users.setPwd(StringUtils.isNotBlank(password) ? MD5Utils.md5(password).toUpperCase() : null); - } else { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, loginContext.getErrormsg()); - return; - } - } - } - - - users.setName(name); - users.setEnable(enable); - users.setRemarks(remarks); - users.setModified(new Date()); - users.setDeptId(deptId); - users.setOrgId(orgId); - users.setZhiChenId(zhiCId); -// users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); - usersService.updateUsers(users); - - - //如有角色,则对用户角色中间表先删除后新增 - if (StringUtils.isNotBlank(roleIds)) { - - UserRoleMapsQuery userRoleMapsQuery = new UserRoleMapsQuery(); - userRoleMapsQuery.setUserId(users.getId()); - userRoleMapsQuery.setYn(YnEnums.YES.getId()); - List userRoleMapses = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); - - - String[] roleArrayIds = roleIds.split(","); - //判断角色是否有更新 - Boolean flag = false; - if (CollectionUtils.isEmpty(userRoleMapses) || roleArrayIds.length != userRoleMapses.size()) - flag = true; - if (!flag) { - for (String s : roleArrayIds) { - boolean exist = false; - for (UserRoleMaps role : userRoleMapses) { - if (s.equals(role.getRoleId().toString())) { - exist = true; - } - } - if (!exist) { - flag = true; - break; - } - } - } - - if (flag) { - Integer _userId = users.getId(); - userRoleMapsQuery = new UserRoleMapsQuery(); - userRoleMapsQuery.setUserId(_userId); - List roleMapsList = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); - for (UserRoleMaps userRoleMaps : roleMapsList) { - userRoleMaps.setYn(YnEnums.NO.getId()); - userRoleMapsService.updateUserRoleMaps(userRoleMaps); - } - - - for (String tmp : roleArrayIds) { - if (StringUtils.isEmpty(tmp)) { - continue; - } - Roles roles = rolesService.getRoles(Integer.valueOf(tmp)); - if (roles == null || roles.getYn() == YnEnums.NO.getId()) { - continue; - } - - UserRoleMaps userRoleMaps = new UserRoleMaps(); - if (user.getId() != null) { - userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(tmp))); - userRoleMaps.setUserId(_userId); - userRoleMaps.setYn(YnEnums.YES.getId()); - userRoleMapsService.addUserRoleMaps(userRoleMaps); - } - } - } - } - ResultUtils.buildSuccessResultAndWrite(response); - } - } - - /** - * 用户停用 - */ - @RequestMapping(value = "/users/enable", method = RequestMethod.POST) - @TokenRequired - public void enableUsers(HttpServletResponse response, @RequestParam Integer id, @RequestParam Integer flag) { - - - //检查账户是否存在 - UsersQuery usersQuery = new UsersQuery(); - usersQuery.setId(id); - List usersList = usersService.queryUsers(usersQuery); - if (usersList.size() == 0) { - Map map = new HashMap<>(); - map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); - map.put(ResultUtils.ERROR_MSG, "用户不存在"); - writeJson(response, JsonUtil.obj2JsonString(map)); - return; - } - Users users = null; - if (CollectionUtils.isNotEmpty(usersList)) { - users = usersList.get(0); - if (null != users.getOtherAccount() && "1".equals(users.getOtherAccount() + "")) { - return; - } - } - - users = new Users(); - users.setId(id); - users.setEnable(flag); - users.setModified(new Date()); - usersService.updateUsers(users); - ResultUtils.buildSuccessResultAndWrite(response); - } - - - /** - * 用户删除 - */ - @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE) - @TokenRequired - public void deleteUsers(HttpServletResponse response, @PathVariable Integer id) { - if (null == id) { - ResultUtils.buildIdIsNull(response); - return; - } - Integer userId = id; - Users users = usersService.getUsers(userId); - if (users == null) { - ResultUtils.buildIdResultData(response); - return; - } - - if ("admin".equals(users.getAccount())) { - ResultUtils.buildParameterErrorResultAndWrite(response, "超级管理员无法删除"); - return; - } - users.setYn(YnEnums.NO.getId()); - users.setModified(new Date()); - usersService.updateUsers(users); - - - //中间表数据的删除 - UserRoleMapsQuery userRoleMapsQuery = new UserRoleMapsQuery(); - userRoleMapsQuery.setUserId(userId); - List userRoleMapsList = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); - for (UserRoleMaps userRoleMaps : userRoleMapsList) { - userRoleMaps.setYn(YnEnums.NO.getId()); - userRoleMapsService.updateUserRoleMaps(userRoleMaps);//把状态设置成无效 - } - - UserOrganizationMapsQuery userOrganizationMapsQuery = new UserOrganizationMapsQuery(); - userOrganizationMapsQuery.setUserId(userId); - List userOrganizationMapsList = userOrganizationMapsService.queryUserOrganizationMaps(userOrganizationMapsQuery); - for (UserOrganizationMaps userOrganizationMaps : userOrganizationMapsList) { - userOrganizationMaps.setYn(YnEnums.NO.getId()); - userOrganizationMapsService.updateUserOrganizationMaps(userOrganizationMaps);//把状态设置成无效 - } - - ResultUtils.buildSuccessResultAndWrite(response); - } - - - /** - * 重置用户密码 - */ - @RequestMapping(value = "/passwords/reset", method = RequestMethod.PUT) - @TokenRequired - public void updatePassword(HttpServletResponse response, @RequestParam(value = "userId") String id, - @RequestParam(value = "pwd", required = false) String pwd) { - Users users = usersService.getUsers(Integer.valueOf(id)); - if (users == null) { - ResultUtils.buildParameterErrorResultAndWrite(response, "用户ID不存在"); - return; - } - if (StringUtils.isNotBlank(pwd)) { - if (MD5Utils.md5(pwd).equals(users.getPwd())) { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.USER_PASSWORD_ERROR, "新密码不能和初始密码相同"); - return; - } - users.setPwd(MD5Utils.md5(pwd)); - } else { - users.setPwd(defaultPwd); - } - users.setModified(new Date()); - users.setLastLoginTime(users.getModified()); - usersService.updateUsers(users); - LoginContext loginContext = iSessionProvider.register(users.getLogincenterId(), users.getPhone(), users.getAccount(), users.getPwd().toUpperCase()); - if (loginContext.getErrorcode().equals(0)) { - ResultUtils.buildSuccessResultAndWrite(response); - } else { - ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, "系统错误"); - } - - } - - @RequestMapping(value = "/logout", method = RequestMethod.GET) - @ResponseBody - public Map resetToken(@RequestHeader(value = "Authorization", required = false) String token) { - if (StringUtils.isNotEmpty(token)) { - iSessionProvider.removeSession(token); - } - Map result = new HashMap<>(); - result.put("errorcode", ConstantInterface.SUCCESS); - result.put("errormsg", "update"); - return result; - } - - @RequestMapping(value = "/getUserById", method = RequestMethod.GET) - @ResponseBody - public Map getUser(@RequestParam("id") String id) { - Map result = new HashMap<>(); - Users users = usersService.getUsers(Integer.valueOf(id)); - result.put("errorcode", ConstantInterface.BUSINESS_ERROR); - result.put("errormsg", "数据不存在"); - if (null != users) { - Departments departments = departmentsService.getDepartments(users.getDeptId()); - Organization organization = organizationService.getOrganization(users.getOrgId()); - if (null != organization) { - result.put("hName", organization.getName()); - } - result.put("errorcode", ConstantInterface.SUCCESS); - result.put("errormsg", "成功"); - if (null != departments) { - result.put("kName", departments.getName()); - } - } - return result; - } -} +package com.lyms.platform.operate.web.controller; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.OrganizationGroupsService; +import com.lyms.platform.common.annotation.TokenRequired; +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.base.LoginContext; +import com.lyms.platform.common.base.PageInfo; +import com.lyms.platform.common.constants.ConstantInterface; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.GroupEnums; +import com.lyms.platform.common.enums.HospitalStatusEnums; +import com.lyms.platform.common.enums.UserTypeEnum; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.enums.ZhiChenEnums; +import com.lyms.platform.common.utils.CompressEncodeingUtil; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.LoginUtil; +import com.lyms.platform.common.utils.MD5Utils; +import com.lyms.platform.common.utils.ResultUtils; +import com.lyms.platform.operate.web.facade.AccessPermissionFacade; +import com.lyms.platform.operate.web.facade.AutoMatchFacade; +import com.lyms.platform.operate.web.facade.OrganizationGroupsFacade; +import com.lyms.platform.operate.web.result.FrontEndResult; +import com.lyms.platform.operate.web.session.SessionProvider; +import com.lyms.platform.permission.model.Departments; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.model.Permissions2; +import com.lyms.platform.permission.model.Permissions2Query; +import com.lyms.platform.permission.model.Roles; +import com.lyms.platform.permission.model.RolesQuery; +import com.lyms.platform.permission.model.UserOrganizationMaps; +import com.lyms.platform.permission.model.UserOrganizationMapsQuery; +import com.lyms.platform.permission.model.UserRoleMaps; +import com.lyms.platform.permission.model.UserRoleMapsQuery; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.model.UsersQuery; +import com.lyms.platform.permission.service.DepartmentsService; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.Permissions2Service; +import com.lyms.platform.permission.service.RolesService; +import com.lyms.platform.permission.service.UserOrganizationMapsService; +import com.lyms.platform.permission.service.UserRoleMapsService; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.pojo.DataPermissionsModel; +import com.lyms.platform.pojo.OrganizationGroups; + +/** + * Created by Administrator on 2015/9/25 0025. + */ +@Controller +public class UsersController extends BaseController { + @Autowired + private DepartmentsService departmentsService; + + @Autowired + private UsersService usersService; + @Autowired + private OrganizationGroupsFacade groupsFacade; + @Autowired + private UserRoleMapsService userRoleMapsService; + @Autowired + private RolesService rolesService; + @Autowired + UserOrganizationMapsService userOrganizationMapsService; + @Autowired + OrganizationService organizationService; + @Value("#{configProperties['login.token']}") + private String token; + @Value("#{configProperties['login.typeId']}") + private String typeId; + @Value("#{configProperties['login.defaultPwd']}") + private String defaultPwd; + @Value("#{configProperties['defaultAdminOrgId']}") + private String defaultAdminOrgId; + @Autowired + private OrganizationGroupsService groupsService; + @Autowired + private Permissions2Service permissions2Service; + @Autowired + private AccessPermissionFacade accessPermissionFacade; + @Autowired + private SessionProvider iSessionProvider; + @Autowired + private AutoMatchFacade autoMatchFacade; + @Autowired + private BasicConfigService basicConfigService; + + private static final String LYMS = "龙源美生"; + + private static final String ADMIN = "管理员"; + private static final String replacePwd = "[$#&/]-+"; + + @RequestMapping(value = "/rebuildUserRoles", method = RequestMethod.GET) + @ResponseBody + public String rebuildUserRoles(@RequestParam(value = "hospitalId") Integer hospitalId) { + StringBuffer sb = new StringBuffer(); + Organization organization = organizationService.getOrganization(hospitalId); + if (organization != null) { + RolesQuery rolesQuery = new RolesQuery(); + rolesQuery.setYn(YnEnums.YES.getId()); + List orgids = new ArrayList<>(); + orgids.add(hospitalId); + rolesQuery.setOrgIds(orgids); + List rolesList = rolesService.queryRoles(rolesQuery); + if (rolesList == null || rolesList.size() == 0) { + sb.append("机构下权限不存在:" + hospitalId); + } else { + Map rolesMap = new HashMap<>(); + for (Roles r : rolesList) { + rolesMap.put(Integer.valueOf(r.getRemarks().split("_")[1]), r); + } + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setOrgId(hospitalId); + List list = usersService.queryUsers(usersQuery); + UserRoleMapsQuery mapsQuery = new UserRoleMapsQuery(); + mapsQuery.setYn(YnEnums.YES.getId()); + for (Users users : list) { + mapsQuery.setUserId(users.getId()); + List mapsList = userRoleMapsService.queryUserRoleMaps(mapsQuery); + for (UserRoleMaps maps : mapsList) { + Roles roles = rolesMap.get(maps.getRoleId()); + if (roles == null) { + sb.append("
roles is null " + JsonUtil.obj2JsonString(maps) + " -- " + users.getId()); + } else { + UserRoleMaps dbmaps = new UserRoleMaps(); + dbmaps.setYn(1); + dbmaps.setRoleId(roles.getId()); + dbmaps.setUserId(users.getId()); + userRoleMapsService.addUserRoleMaps(dbmaps); + userRoleMapsService.deleteUserRoleMaps(maps.getId()); + sb.append("
success userid:" + users.getId() + " -- " + JsonUtil.obj2JsonString(dbmaps) + + " -- " + JsonUtil.obj2JsonString(maps)); + } + } + } + } + } else { + sb.append("机构不存在:" + hospitalId); + } + return sb.toString(); + } + + /** + * 获取管理员列表 + */ + @RequestMapping(value = "/admins", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public FrontEndResult getAdminList(HttpServletResponse response, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "rolesId", required = false) Integer rolesId, + @RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "limit", required = false) Integer limit) { + + limit = limit == null ? 10 : limit; + page = page == null ? 1 : page; + + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setNeed("true"); + usersQuery.setSort("modified desc"); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setKeyword(keyword); + usersQuery.setType(0); + usersQuery.setPage(page); + usersQuery.setLimit(limit); + usersQuery.setRoleId(rolesId); + + List users = usersService.queryUsers2(usersQuery); + //设置用户角色信息 + for (Users user : users) { + user.setRoles(this.getUserRoles(user.getId())); + user.setDepartmentses(departmentsService.getDepartments(user.getDeptId())); + List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(user + .getId()); + user.setOrganizations(accessPermissionFacade.getOrganization(permissionsModelList)); + if (permissionsModelList != null && permissionsModelList.size() > 0) { + user.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); + } + } + + FrontEndResult frontEndResult = new FrontEndResult(); + frontEndResult.setPageInfo(usersQuery.getPageInfo()); + frontEndResult.setData(users); + frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); + return frontEndResult; + } + + @RequestMapping(value = "/users/enums", method = RequestMethod.GET) + @ResponseBody + public Map getEnums() { + Map map = new HashMap(); + for (ZhiChenEnums zhiChenEnums : ZhiChenEnums.values()) { + map.put(zhiChenEnums.getId(), zhiChenEnums.getName()); + } + return map; + } + + /** + * 获取用户列表 + */ + @RequestMapping(value = "/users", method = RequestMethod.GET) + @TokenRequired + @ResponseBody + public FrontEndResult getPermissions(HttpServletResponse response, HttpServletRequest request, + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "rolesId", required = false) Integer rolesId, + @RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "limit", required = false) Integer limit, + @RequestParam(value = "orgId", required = false) Integer orgId, + @RequestParam(value = "deptId", required = false) Integer deptId) { + LoginContext loginContext = (LoginContext) request.getAttribute("loginContext"); + Users u = usersService.getUsers(loginContext.getId()); + + List ids = null; + if (u.getType().equals(UserTypeEnum.NORMAL_USER.getId())) { + /* if (null != u.getOrgId()) { + orgId = u.getOrgId(); + } else { + FrontEndResult frontEndResult = new FrontEndResult(); + frontEndResult.setPageInfo(new PageInfo(0, 0, 0, 10)); + frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); + return frontEndResult; + }*/ + List organizations = accessPermissionFacade.getOrganization(accessPermissionFacade + .findAccessPerminssionByUserId(u.getId())); + ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(organizations)) { + for (Organization organization : organizations) { + ids.add(organization.getId()); + } + } else { + FrontEndResult frontEndResult = new FrontEndResult(); + frontEndResult.setPageInfo(new PageInfo(0, 0, 0, 10)); + frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); + return frontEndResult; + } + } else if (u.getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId())) { + List organizations = accessPermissionFacade.getOrganization(accessPermissionFacade + .findAccessPerminssionByUserId(u.getId())); + ids = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(organizations)) { + for (Organization organization : organizations) { + ids.add(organization.getId()); + } + } else { + FrontEndResult frontEndResult = new FrontEndResult(); + frontEndResult.setPageInfo(new PageInfo(0, 0, 0, 10)); + frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); + return frontEndResult; + } + } + + if (null != orgId) { + ids = new ArrayList<>(); + ids.add(orgId); + } + + UsersQuery usersQuery = new UsersQuery(); + limit = limit == null ? 10 : limit; + page = page == null ? 1 : page; + + usersQuery.setNeed("true"); + usersQuery.setSort("modified desc"); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setDeptId(deptId); + usersQuery.setKeyword(keyword); + usersQuery.setType(1); + usersQuery.setOrgIds(ids); + usersQuery.setPage(page); + usersQuery.setLimit(limit); + usersQuery.setRoleId(rolesId); + + List users = usersService.queryUsers2(usersQuery); + List organizations = null; + //设置用户角色信息 + for (Users user : users) { + organizations = new ArrayList<>(); + Organization organization = organizationService.getOrganization(user.getOrgId()); + user.setOrganization(organization); + organizations.add(organization); + user.setOrganizations(organizations); + + user.setRoles(this.getUserRoles(user.getId())); + user.setDepartmentses(departmentsService.getDepartments(user.getDeptId())); + if (null != user.getZhiChenId()) { + user.setZhiChen(ZhiChenEnums.getById(user.getZhiChenId())); + } + List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(user + .getId()); + user.setOrganizations(accessPermissionFacade.getOrganization(permissionsModelList)); + if (permissionsModelList != null && permissionsModelList.size() > 0) { + user.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); + } + // user.setPwd(StringUtils.isEmpty(user.getPwd())?user.getPwd():user.getPwd().replaceAll(".","*")); + user.setPwd(replacePwd); + } + + FrontEndResult frontEndResult = new FrontEndResult(); + frontEndResult.setPageInfo(usersQuery.getPageInfo()); + frontEndResult.setData(users); + frontEndResult.setErrorcode(ErrorCodeConstants.SUCCESS); + + return frontEndResult; + // ResultUtils.buildSuccessResultAndWrite(response, frontEndResult); + } + + //获取用户角色信息 + private List getUserRoles(Integer userId) { + UserRoleMapsQuery query = new UserRoleMapsQuery(); + query.setUserId(userId); + query.setYn(YnEnums.YES.getId()); + List userRoleMapses = userRoleMapsService.queryUserRoleMaps(query); + List roles = new ArrayList<>(); + for (UserRoleMaps roleMaps : userRoleMapses) { + roles.add(rolesService.getRoles(roleMaps.getRoleId())); + } + return roles; + } + + /** + * AMS 用户请求登录,获取token + */ + @RequestMapping(value = "/tokens", method = RequestMethod.POST) + public void usersLogin(@RequestParam(value = "account") String account, + @RequestParam(value = "vercode", required = false) String code, + @RequestParam(value = "password", required = false) String password, + HttpServletResponse response) { + Map resultMsgMap = new HashMap<>(); + if (StringUtils.isEmpty(account) && (StringUtils.isEmpty(code) || StringUtils.isEmpty(password))) { + resultMsgMap.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR);//参数错误 + resultMsgMap.put(ResultUtils.ERROR_MSG, "登录账户或者验证码为空,请输入"); + //把这个map转成一个json字符串输出到前台 + writeJson(response, JsonUtil.obj2JsonString(resultMsgMap)); + return; + } + + //code 不为空使用手机登录, password不为空时使用帐号登录 + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setYn(YnEnums.YES.getId()); + if (null != code) { + usersQuery.setPhone(account); + } + if (null != password) { + usersQuery.setAccount(account); + } + List users = usersService.queryUsers(usersQuery); + if (0 == users.size()) { + ResultUtils.buildParameterErrorResultAndWrite(response, "该账户不存在"); + return; + } + + Users u = users.get(0); + if (!u.getEnable().equals(1)) { + ResultUtils.buildParameterErrorResultAndWrite(response, "该账户已被禁用"); + return; + } + if (null != u.getOrgId()) { + Organization organization = organizationService.getOrganization(u.getOrgId()); + if (null != organization) { + if (null != organization.getStatus() && HospitalStatusEnums.TZYX.getId() == organization.getStatus()) { + ResultUtils.buildParameterErrorResultAndWrite(response, "该账户已被禁用"); + return; + } + } + } + + LoginContext loginContext = new LoginContext(); + loginContext.setErrormsg("服务器内部错误!"); + loginContext = iSessionProvider.login(account, password, code); + /* if(null != code) { + loginContext =LoginUtil.loginByPhone(account, code, typeId, token); + } + if(null != password) { + loginContext = LoginUtil.loginByAccount(account, password, typeId, token); + }*/ + + if (null != loginContext && loginContext.getErrorcode().equals(0)) { + if (u.getLastLoginTime() != null) { + Users users1 = new Users(); + users1.setId(u.getId()); + users1.setLastLoginTime(new Date()); + usersService.updateUsers(users1); + } + + Map result = new HashMap<>(); + result.put("token", loginContext.getToken()); + ResultUtils.buildSuccessResultAndWrite(response, result); + } else { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.PARAMETER_ERROR, loginContext.getErrormsg()); + } + } + + /** + * 发送验证码 + * + * @param phone + */ + @RequestMapping(value = "/vercode", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE + + ";charset=utf-8") + public void sendVerCode(@RequestParam("phone") String phone, HttpServletResponse httpServletResponse) { + + if (StringUtils.isEmpty(phone)) { + ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse); + return; + } + if (!phone.matches("^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\\d{8})$")) { + ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "手机号不正确!"); + return; + } + + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setPhone(phone); + usersQuery.setYn(YnEnums.YES.getId()); + List list = usersService.queryUsers(usersQuery); + if (null == list || 0 == list.size()) { + ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "该账户不存在"); + return; + } + + if (!list.get(0).getEnable().equals(1)) { + ResultUtils.buildParameterErrorResultAndWrite(httpServletResponse, "该账户已被禁用"); + return; + } + + LoginContext loginContext = LoginUtil.sendVerCode(phone, typeId, token); + if (null != loginContext) { + ResultUtils.buildResultAndWrite(httpServletResponse, loginContext.getErrorcode(), + loginContext.getErrormsg()); + return; + } + ResultUtils.buildResultAndWrite(httpServletResponse, ErrorCodeConstants.SYSTEM_ERROR, "服务器内部错误"); + + } + + /** + * 获取 登录用户信息(用户、最后登录时间) + */ + @RequestMapping(value = "/users/currentUser", method = RequestMethod.GET) + @TokenRequired + public void usersLoginMsg(HttpServletResponse response, HttpServletRequest request) { + LoginContext loginContext = (LoginContext) request.getAttribute("loginContext"); + Users users = null; + if (null != loginContext) { + users = usersService.getUsers(loginContext.getId()); + } + + List permissions = null; + List roles = new ArrayList<>(); + //超级管理员拥有所有角色和权限 + if (users.getType().equals(UserTypeEnum.SUPPER_ADMIN.getId())) { + RolesQuery rolesQuery = new RolesQuery(); + rolesQuery.setYn(YnEnums.YES.getId()); + roles = rolesService.queryRoles(rolesQuery); + + Permissions2Query permissionsQuery = new Permissions2Query(); + permissionsQuery.setYn(YnEnums.YES.getId()); + permissions = permissions2Service.queryPermissions2(permissionsQuery); + + } + //其他用户 + else if (users.getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId()) + || users.getType().equals(UserTypeEnum.NORMAL_USER.getId())) { + //获取用户角色信息 + UserRoleMapsQuery query = new UserRoleMapsQuery(); + query.setUserId(users.getId()); + query.setYn(YnEnums.YES.getId()); + List userRoleMapses = userRoleMapsService.queryUserRoleList(query); + + List permissionIds = new ArrayList<>(); + permissions = new ArrayList<>(); + String orgId = autoMatchFacade.getHospitalId(loginContext.getId()); + + int rog = NumberUtils.toInt(orgId); + for (Integer roleMaps : userRoleMapses) { + Roles roles1 = rolesService.getRoles(roleMaps); + if (roles1 != null && StringUtils.isNotEmpty(orgId)) { + if (roles1.getOrgId() == null || roles1.getOrgId() == rog) { + roles.add(roles1); + } + } + } + List local = permissions2Service.queryPermissionByRoleIds(userRoleMapses); + if (CollectionUtils.isNotEmpty(local)) { + for (Permissions2 permissions1 : local) { + if (!permissionIds.contains(permissions1.getId())) { + permissionIds.add(permissions1.getId()); + permissions.add(permissions1); + } + } + } + } + + List permissionsModelList = accessPermissionFacade.findAccessPerminssionByUserId(users + .getId()); + if (permissionsModelList != null && permissionsModelList.size() > 0) { + users.setAreaPermission(permissionsModelList.get(0).getAreaPermission()); + } + List organizations = new ArrayList<>(); + if (UserTypeEnum.SUPPER_ADMIN.getId().equals(users.getType())) {//超级管理员 + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); + organizations = organizationService.queryOrganization(organizationQuery); + } else { + Organization organization = organizationService.getOrganization(users.getOrgId()); + if (null != organization && StringUtils.isNotEmpty(organization.getCityId())) { + BasicConfig bg = basicConfigService.getOneBasicConfigById(organization.getCityId()); + Map map = new HashMap<>(); + map.put("id", organization.getCityId()); + if (null != bg) { + map.put("name", bg.getName()); + } + organization.setCity(map); + } + + if (null != organization && StringUtils.isNotEmpty(organization.getProvinceId())) { + BasicConfig bg = basicConfigService.getOneBasicConfigById(organization.getProvinceId()); + Map map = new HashMap<>(); + map.put("id", organization.getProvinceId()); + if (null != bg) { + map.put("name", bg.getName()); + } + organization.setProvince(map); + } + + if (null != organization && StringUtils.isNotEmpty(organization.getAreaId())) { + BasicConfig bg = basicConfigService.getOneBasicConfigById(organization.getAreaId()); + Map map = new HashMap<>(); + map.put("id", organization.getAreaId()); + if (null != bg) { + map.put("name", bg.getName()); + } + organization.setArea(map); + } + + organizations.add(organization); + users.setOrganization(organization); + //是否是建档医院 + users.setbStatus(organization.getbStatus()); + + String hospital = autoMatchFacade.getHospitalId(loginContext.getId()); + //设置建档方式 + String groupId = groupsFacade.findByCurrentUserId(hospital); + Integer bType = GroupEnums.BuildType.SINGLE.getbType(); + if (StringUtils.isNotEmpty(groupId)) { + OrganizationGroups groups = groupsService.findById(groupId); + if (null != groups) { + bType = groups.getbType(); + } + } + users.setbType(bType); + List list2 = accessPermissionFacade.getOrganization(permissionsModelList); + if (CollectionUtils.isNotEmpty(list2)) { + for (Organization o : list2) { + organizations.add(o); + } + } + } + users.setOrganizations(organizations); + + Map map = new HashMap<>(); + map.put("user", users); + map.put("watermark", CompressEncodeingUtil.compressNumber(users.getId().toString() + DateUtil.getymd6())); + map.put("roles", roles); + map.put("permissions", permissions); + + ResultUtils.buildSuccessResultAndWrite(response, map); + } + + /** + * 获取 用户角色信息 + */ + @RequestMapping(value = "/users/userRole/{id}", method = RequestMethod.GET) + @TokenRequired + public void userRole(HttpServletResponse response, HttpServletRequest request, + @PathVariable(value = "id") Integer id) { + UserRoleMapsQuery query = new UserRoleMapsQuery(); + query.setUserId(id); + query.setYn(YnEnums.YES.getId()); + List userRoleMapses = userRoleMapsService.queryUserRoleMaps(query); + List roles = new ArrayList<>(); + for (UserRoleMaps roleMaps : userRoleMapses) { + roles.add(rolesService.getRoles(roleMaps.getRoleId())); + } + + ResultUtils.buildSuccessResultAndWrite(response, roles); + } + + /** + * 管理员权限设置 + */ + @RequestMapping(value = "/adminPermissions", method = RequestMethod.POST) + @TokenRequired + public void adminPermissions(HttpServletResponse response, @RequestParam(value = "userId") Integer userId, + @RequestParam(value = "ids") String ids) { + + if (ids == null) { + ResultUtils.buildParameterErrorResultAndWrite(response); + return; + } + + //检查账户是否存在 + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setId(userId); + List usersList = usersService.queryUsers(usersQuery); + if (usersList.size() == 0) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "用户不存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + + if (!usersList.get(0).getType().equals(UserTypeEnum.PLATFORM_ADMIN.getId())) { + ResultUtils.buildParameterErrorResultAndWrite(response, "用户错误"); + return; + } + + //将已有映射设为失效 + UserOrganizationMapsQuery userOrganizationMapsQuery = new UserOrganizationMapsQuery(); + userOrganizationMapsQuery.setUserId(userId); + List userOrganizationMapsList = userOrganizationMapsService + .queryUserOrganizationMaps(userOrganizationMapsQuery); + if (0 < userOrganizationMapsList.size()) { + for (UserOrganizationMaps userOrganizationMaps : userOrganizationMapsList) { + userOrganizationMaps.setYn(YnEnums.NO.getId()); + userOrganizationMapsService.updateUserOrganizationMaps(userOrganizationMaps); + } + } + + //添加最新权限映射 + String[] roleArrayIds = ids.split(","); + Users user = usersList.get(0); + UserOrganizationMaps userOrganizationMaps = null; + Organization organization = null; + for (String id : roleArrayIds) { + organization = organizationService.getOrganization(Integer.valueOf(id)); + if (null != organization) { + userOrganizationMaps = new UserOrganizationMaps(); + userOrganizationMaps.setUserId(user.getId()); + userOrganizationMaps.setOrgId(Integer.valueOf(id)); + userOrganizationMaps.setYn(YnEnums.YES.getId()); + userOrganizationMapsService.addUserOrganizationMaps(userOrganizationMaps); + } + } + + //修改user相关字段 + user.setModified(new Date()); + usersService.updateUsers(user); + + ResultUtils.buildSuccessResultAndWrite(response); + } + + private Boolean isPhone(String phone) { + return phone.matches("^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\\d{8})$"); + } + + /** + * 添加管理员信息 + */ + @RequestMapping(value = "/admins", method = RequestMethod.POST) + @TokenRequired + public void addAdmin(HttpServletResponse response, HttpServletRequest request, + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "account", required = false) String account, + @RequestParam(value = "phone") String phone, + @RequestParam(value = "enable", required = false) Integer enable, + @RequestParam(value = "remarks", required = false) String remarks, + @RequestParam(value = "roleIds") String roleIds) { + + //获取登录用户 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + Users user = usersService.getUsers(loginState.getId()); + + if (StringUtils.isBlank(roleIds) || StringUtils.isBlank(name) || StringUtils.isBlank(phone) || null == user) { + ResultUtils.buildParameterErrorResultAndWrite(response); + return; + } + + if (!isPhone(phone)) { + ResultUtils.buildParameterErrorResultAndWrite(response, "手机号格式不正确"); + return; + } + + /* //根据当前登录的用户判断是否 有管理员的权限 + List list = userRoleMapsService.queryUserRoleName(loginState.getId()); + if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + }*/ + if (user != null) { + + //检查注册账户是否存在 + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setPhone(phone); + usersQuery.setYn(YnEnums.YES.getId()); + List usersList = usersService.queryUsers(usersQuery); + if (usersList.size() != 0) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "手机号已存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + + //准备添加数据 + Users users = new Users(); + users.setType(UserTypeEnum.PLATFORM_ADMIN.getId()); + users.setName(name); + users.setOrgId(Integer.parseInt(defaultAdminOrgId)); + users.setAccount(account); + users.setPhone(phone); + users.setEnable(enable); + users.setRemarks(remarks); + users.setPublishId(user.getId()); + users.setPublishName(user.getName()); + users.setYn(YnEnums.YES.getId()); + users.setModified(new Date()); + users.setCreated(new Date()); + // users.setLastLoginTime(new Date()); + // users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); + + //关联登录中心ID + LoginContext loginContext = null; + // loginContext = LoginUtil.register(null, phone, null, null, token, typeId); + loginContext = iSessionProvider.register(null, phone, null, null); + //0 成功 4009 已注册 + if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { + users.setLogincenterId(loginContext.getId()); + usersService.addUsers(users); + + //如有角色,则对用户角色中间表新增 + + String[] roleArrayIds = roleIds.split(","); + List user1 = usersService.queryUsers(usersQuery); + for (String id : roleArrayIds) { + Roles roles = rolesService.getRoles(Integer.valueOf(id)); + if (roles == null || roles.getYn() == YnEnums.NO.getId()) { + continue; + } + UserRoleMaps userRoleMaps = new UserRoleMaps(); + + if (user1.get(0).getId() != null) { + userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(id))); + userRoleMaps.setUserId(user1.get(0).getId()); + userRoleMaps.setYn(YnEnums.YES.getId()); + userRoleMapsService.addUserRoleMaps(userRoleMaps); + } + } + ResultUtils.buildSuccessResultAndWrite(response); + + } else { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, loginContext.getErrormsg()); + return; + } + } + } + + /** + * 添加用户信息 + */ + @RequestMapping(value = "/users", method = RequestMethod.POST) + @TokenRequired + public void addUsers(HttpServletResponse response, HttpServletRequest request, + @RequestParam(value = "orgId") Integer orgId, + @RequestParam(value = "deptId", required = false) Integer deptId, + @RequestParam(value = "ksId", required = false) Integer ksId, + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "account", required = false) String account, + @RequestParam(value = "password", required = false) String password, + @RequestParam(value = "phone", required = false) String phone, + @RequestParam(value = "enable", required = false) Integer enable, + @RequestParam(value = "remarks", required = false) String remarks, + @RequestParam(value = "roleIds") String roleIds, @RequestParam(value = "zhiCId") Integer zhiCId) { + + //获取登录用户 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + Users user = usersService.getUsers(loginState.getId()); + + if (StringUtils.isBlank(roleIds) || null == user + || (StringUtils.isBlank(account) && StringUtils.isBlank(phone))) { + ResultUtils.buildParameterErrorResultAndWrite(response); + return; + } + + if (StringUtils.isNotBlank(phone) && !isPhone(phone)) { + ResultUtils.buildParameterErrorResultAndWrite(response, "手机号格式不正确"); + return; + } else if (StringUtils.isNotBlank(account) && StringUtils.isBlank(password)) { + password = defaultPwd; + } + + if (deptId == null && ksId == null) { + ResultUtils.buildParameterErrorResultAndWrite(response, "deptId or ksId required"); + return; + } + //根据当前登录的用户判断是否 有管理员的权限 + /* List list = userRoleMapsService.queryUserRoleName(loginState.getId()); + if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + }*/ + if (user != null) { + UsersQuery usersQuery = new UsersQuery(); + if (StringUtils.isNotBlank(phone)) { + //检查注册账户是否存在 + usersQuery.setPhone(phone); + usersQuery.setYn(YnEnums.YES.getId()); + List usersList = usersService.queryUsers(usersQuery); + if (usersList.size() != 0) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "该手机号已使用"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + } + + if (StringUtils.isNotBlank(account)) { + usersQuery = new UsersQuery(); + usersQuery.setAccount(account); + usersQuery.setYn(YnEnums.YES.getId()); + if (0 != usersService.queryUsersCount(usersQuery)) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "该账户已存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + } + + //准备添加数据 + Users users = new Users(); + users.setType(UserTypeEnum.NORMAL_USER.getId()); //1普通用户 + users.setDeptId(deptId); + users.setOrgId(orgId); + users.setName(name); + users.setAccount(account); + users.setPhone(phone); + users.setEnable(enable); + users.setZhiChenId(zhiCId); + users.setPwd(MD5Utils.md5(password).toUpperCase()); + users.setRemarks(remarks); + users.setKsId(ksId); + users.setPublishId(user.getId()); + users.setPublishName(user.getName()); + users.setYn(YnEnums.YES.getId()); + users.setModified(new Date()); + users.setCreated(new Date()); + users.setZhiChen(ZhiChenEnums.getById(zhiCId)); + // users.setLastLoginTime(new Date()); + // users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); + + LoginContext loginContext = new LoginContext(); + loginContext.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); + loginContext.setErrormsg("系统错误"); + //关联登录中心ID + if (StringUtils.isNotBlank(phone) || StringUtils.isNotBlank(account)) { + /**/ + String pwd = null; + if (StringUtils.isNotBlank(password)) { + pwd = MD5Utils.md5(password).toUpperCase(); + } + // loginContext = LoginUtil.register(null, phone,account, pwd, token, typeId); + loginContext = iSessionProvider.register(null, phone, account, pwd); + } + + //0 成功 4009 已注册 + if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { + users.setLogincenterId(loginContext.getId()); + usersService.addUsers(users); + + //如有角色,则对用户角色中间表新增 + + String[] roleArrayIds = roleIds.split(","); + List user1 = usersService.queryUsers(usersQuery); + for (String id : roleArrayIds) { + Roles roles = rolesService.getRoles(Integer.valueOf(id)); + if (roles == null || roles.getYn() == YnEnums.NO.getId()) { + continue; + } + UserRoleMaps userRoleMaps = new UserRoleMaps(); + + if (user1.get(0).getId() != null) { + userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(id))); + userRoleMaps.setUserId(user1.get(0).getId()); + userRoleMaps.setYn(YnEnums.YES.getId()); + userRoleMapsService.addUserRoleMaps(userRoleMaps); + } + } + ResultUtils.buildSuccessResultAndWrite(response); + } else { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, loginContext.getErrormsg()); + } + } + } + + /** + * 用户修改 + */ + @RequestMapping(value = "/users/{id}", method = RequestMethod.PUT) + @TokenRequired + public void updateUsers(HttpServletResponse response, HttpServletRequest request, + @PathVariable(value = "id") Integer id, + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "account", required = false) String account, + @RequestParam(value = "password", required = false) String password, + @RequestParam(value = "phone", required = false) String phone, + @RequestParam(value = "enable", required = false) Integer enable, + @RequestParam(value = "remarks", required = false) String remarks, + @RequestParam(value = "roleIds", required = false) String roleIds, + @RequestParam(value = "orgId", required = false) Integer orgId, + @RequestParam(value = "deptId", required = false) Integer deptId, + @RequestParam(value = "zhiCId") Integer zhiCId) { + + if (StringUtils.isBlank(phone) && StringUtils.isBlank(account)) { + ResultUtils.buildParameterErrorResultAndWrite(response, "帐号和手机号不能同时为空"); + return; + } + + if (null == roleIds) { + ResultUtils.buildParameterErrorResultAndWrite(response, "roleIds不能为空"); + return; + } + + if (!(null != enable && (1 == enable || 2 == enable))) { + ResultUtils.buildParameterErrorResultAndWrite(response, "enable参数错误"); + return; + } + + //获取登录用户 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + Users user = usersService.getUsers(loginState.getId()); + if (user != null) { + + Users users = usersService.getUsers(id); + if (null != users.getOtherAccount() && "1".equals(user.getOtherAccount() + "")) { + return; + } + if (StringUtils.isNotBlank(password) && password.equals(replacePwd)) { + password = users.getPwd(); + } + + //根据当前登录的用户判断是否 有管理员的权限 + /* List list = userRoleMapsService.queryUserRoleName(loginState.getId()); + if(CollectionUtils.isEmpty(list) ||!list.contains(ADMIN)){ + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "你没有足够的权限."); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + }*/ + if (null == users) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "用户不存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + + //修改了手机号, 帐号 密码 + if (!new Integer(1).equals(users.getOtherAccount())) { + if ((StringUtils.isNotBlank(account) && !account.equals(users.getAccount())) + || (StringUtils.isNotBlank(phone) && !phone.equals(users.getPhone())) + || (StringUtils.isNotBlank(password) && !password.equals(users.getPwd()))) { + UsersQuery usersQuery = new UsersQuery(); + List usersList; + if (StringUtils.isNotBlank(phone) && !phone.equals(users.getPhone())) { + //检查手机号是否存在 + usersQuery.setPhone(phone); + usersQuery.setYn(YnEnums.YES.getId()); + usersList = usersService.queryUsers(usersQuery); + if (0 < usersList.size()) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "手机号已存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + } + + if (StringUtils.isNotBlank(account) && !account.equals(users.getAccount())) { + //检查账户是否存在 + usersQuery = new UsersQuery(); + usersQuery.setAccount(account); + usersQuery.setYn(YnEnums.YES.getId()); + usersList = usersService.queryUsers(usersQuery); + if (0 < usersList.size()) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "该帐号已存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + } + + // LoginContext loginContext = LoginUtil.register(users.getLogincenterId().toString(), phone, account, MD5Utils.md5(password).toUpperCase(), token, typeId); + LoginContext loginContext = iSessionProvider.register(users.getLogincenterId(), phone, account, + StringUtils.isNotBlank(password) ? MD5Utils.md5(password).toUpperCase() : null); + //0 成功 4009 已注册 + if (loginContext.getErrorcode().equals(0) || loginContext.getErrorcode().equals(4009)) { + users.setPhone(phone); + users.setAccount(account); + users.setLogincenterId(loginContext.getId()); + users.setPwd(StringUtils.isNotBlank(password) ? MD5Utils.md5(password).toUpperCase() : null); + } else { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, + loginContext.getErrormsg()); + return; + } + } + } + + users.setName(name); + users.setEnable(enable); + users.setRemarks(remarks); + users.setModified(new Date()); + users.setDeptId(deptId); + users.setOrgId(orgId); + users.setZhiChenId(zhiCId); + // users.setPwd(LoginUtil.md5(NumberUtils.getRandomString(6))); + usersService.updateUsers(users); + + //如有角色,则对用户角色中间表先删除后新增 + if (StringUtils.isNotBlank(roleIds)) { + + UserRoleMapsQuery userRoleMapsQuery = new UserRoleMapsQuery(); + userRoleMapsQuery.setUserId(users.getId()); + userRoleMapsQuery.setYn(YnEnums.YES.getId()); + List userRoleMapses = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); + + String[] roleArrayIds = roleIds.split(","); + //判断角色是否有更新 + Boolean flag = false; + if (CollectionUtils.isEmpty(userRoleMapses) || roleArrayIds.length != userRoleMapses.size()) + flag = true; + if (!flag) { + for (String s : roleArrayIds) { + boolean exist = false; + for (UserRoleMaps role : userRoleMapses) { + if (s.equals(role.getRoleId().toString())) { + exist = true; + } + } + if (!exist) { + flag = true; + break; + } + } + } + + if (flag) { + Integer _userId = users.getId(); + userRoleMapsQuery = new UserRoleMapsQuery(); + userRoleMapsQuery.setUserId(_userId); + List roleMapsList = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); + for (UserRoleMaps userRoleMaps : roleMapsList) { + userRoleMaps.setYn(YnEnums.NO.getId()); + userRoleMapsService.updateUserRoleMaps(userRoleMaps); + } + + for (String tmp : roleArrayIds) { + if (StringUtils.isEmpty(tmp)) { + continue; + } + Roles roles = rolesService.getRoles(Integer.valueOf(tmp)); + if (roles == null || roles.getYn() == YnEnums.NO.getId()) { + continue; + } + + UserRoleMaps userRoleMaps = new UserRoleMaps(); + if (user.getId() != null) { + userRoleMaps.setRoleId(Integer.valueOf(Integer.valueOf(tmp))); + userRoleMaps.setUserId(_userId); + userRoleMaps.setYn(YnEnums.YES.getId()); + userRoleMapsService.addUserRoleMaps(userRoleMaps); + } + } + } + } + ResultUtils.buildSuccessResultAndWrite(response); + } + } + + /** + * 用户停用 + */ + @RequestMapping(value = "/users/enable", method = RequestMethod.POST) + @TokenRequired + public void enableUsers(HttpServletResponse response, @RequestParam Integer id, @RequestParam Integer flag) { + + //检查账户是否存在 + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setId(id); + List usersList = usersService.queryUsers(usersQuery); + if (usersList.size() == 0) { + Map map = new HashMap<>(); + map.put(ResultUtils.ERROR_CODE, ConstantInterface.PARAMETER_ERROR); + map.put(ResultUtils.ERROR_MSG, "用户不存在"); + writeJson(response, JsonUtil.obj2JsonString(map)); + return; + } + Users users = null; + if (CollectionUtils.isNotEmpty(usersList)) { + users = usersList.get(0); + if (null != users.getOtherAccount() && "1".equals(users.getOtherAccount() + "")) { + return; + } + } + + users = new Users(); + users.setId(id); + users.setEnable(flag); + users.setModified(new Date()); + usersService.updateUsers(users); + ResultUtils.buildSuccessResultAndWrite(response); + } + + /** + * 用户删除 + */ + @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE) + @TokenRequired + public void deleteUsers(HttpServletResponse response, @PathVariable Integer id) { + if (null == id) { + ResultUtils.buildIdIsNull(response); + return; + } + Integer userId = id; + Users users = usersService.getUsers(userId); + if (users == null) { + ResultUtils.buildIdResultData(response); + return; + } + + if ("admin".equals(users.getAccount())) { + ResultUtils.buildParameterErrorResultAndWrite(response, "超级管理员无法删除"); + return; + } + users.setYn(YnEnums.NO.getId()); + users.setModified(new Date()); + usersService.updateUsers(users); + + //中间表数据的删除 + UserRoleMapsQuery userRoleMapsQuery = new UserRoleMapsQuery(); + userRoleMapsQuery.setUserId(userId); + List userRoleMapsList = userRoleMapsService.queryUserRoleMaps(userRoleMapsQuery); + for (UserRoleMaps userRoleMaps : userRoleMapsList) { + userRoleMaps.setYn(YnEnums.NO.getId()); + userRoleMapsService.updateUserRoleMaps(userRoleMaps);//把状态设置成无效 + } + + UserOrganizationMapsQuery userOrganizationMapsQuery = new UserOrganizationMapsQuery(); + userOrganizationMapsQuery.setUserId(userId); + List userOrganizationMapsList = userOrganizationMapsService + .queryUserOrganizationMaps(userOrganizationMapsQuery); + for (UserOrganizationMaps userOrganizationMaps : userOrganizationMapsList) { + userOrganizationMaps.setYn(YnEnums.NO.getId()); + userOrganizationMapsService.updateUserOrganizationMaps(userOrganizationMaps);//把状态设置成无效 + } + + ResultUtils.buildSuccessResultAndWrite(response); + } + + /** + * 重置用户密码 + */ + @RequestMapping(value = "/passwords/reset", method = RequestMethod.PUT) + @TokenRequired + public void updatePassword(HttpServletResponse response, @RequestParam(value = "userId") String id, + @RequestParam(value = "pwd", required = false) String pwd) { + Users users = usersService.getUsers(Integer.valueOf(id)); + if (users == null) { + ResultUtils.buildParameterErrorResultAndWrite(response, "用户ID不存在"); + return; + } + if (StringUtils.isNotBlank(pwd)) { + if (MD5Utils.md5(pwd).equals(users.getPwd())) { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.USER_PASSWORD_ERROR, "新密码不能和初始密码相同"); + return; + } + users.setPwd(MD5Utils.md5(pwd)); + } else { + users.setPwd(defaultPwd); + } + users.setModified(new Date()); + users.setLastLoginTime(users.getModified()); + usersService.updateUsers(users); + LoginContext loginContext = iSessionProvider.register(users.getLogincenterId(), users.getPhone(), + users.getAccount(), users.getPwd().toUpperCase()); + if (loginContext.getErrorcode().equals(0)) { + ResultUtils.buildSuccessResultAndWrite(response); + } else { + ResultUtils.buildResultAndWrite(response, ErrorCodeConstants.SYSTEM_ERROR, "系统错误"); + } + + } + + @RequestMapping(value = "/logout", method = RequestMethod.GET) + @ResponseBody + public Map resetToken(@RequestHeader(value = "Authorization", required = false) String token) { + if (StringUtils.isNotEmpty(token)) { + iSessionProvider.removeSession(token); + } + Map result = new HashMap<>(); + result.put("errorcode", ConstantInterface.SUCCESS); + result.put("errormsg", "update"); + return result; + } + + @RequestMapping(value = "/getUserById", method = RequestMethod.GET) + @ResponseBody + public Map getUser(@RequestParam("id") String id) { + Map result = new HashMap<>(); + Users users = usersService.getUsers(Integer.valueOf(id)); + result.put("errorcode", ConstantInterface.BUSINESS_ERROR); + result.put("errormsg", "数据不存在"); + if (null != users) { + Departments departments = departmentsService.getDepartments(users.getDeptId()); + Organization organization = organizationService.getOrganization(users.getOrgId()); + if (null != organization) { + result.put("hName", organization.getName()); + } + result.put("errorcode", ConstantInterface.SUCCESS); + result.put("errormsg", "成功"); + if (null != departments) { + result.put("kName", departments.getName()); + } + } + return result; + } +}