/** * */ package com.product.admin.service; import com.alibaba.druid.util.StringUtils; import com.product.admin.config.CmnConst; import com.product.admin.config.SystemCode; import com.product.admin.service.idel.ISystemManagementUserService; import com.product.core.config.CoreConst; import com.product.core.config.Global; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldMetaEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; import com.product.core.service.support.AbstractBaseService; import com.product.core.service.support.QueryFilterService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; import com.product.email.service.SendEmailService; import com.product.module.sys.entity.SystemUser; import com.product.module.sys.service.UserService; import com.product.util.BaseUtil; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.net.URLEncoder; import java.util.Arrays; import java.util.Date; import java.util.Map; /** * Copyright LX-BASE * * @Title: SystemManagementUserService * @Project: LX-BASE-SERVER * @Date: 2020年6月3日 下午4:40:01 * @Author: 郑盟 * @Description: 系统管理员设置 */ @Component public class SystemManagementUserService extends AbstractBaseService implements ISystemManagementUserService { @Autowired private BaseDao baseDao; @Autowired private UserService userService; @Autowired private RolesService rolesService; @Autowired private SendEmailService sendEmailService; @Autowired private UpdateLoginUserInfoService updateLoginUserInfoService; @Autowired private QueryFilterService queryFilterService; /** * 账号解冻 * @param fse * @return * @throws BaseException */ public boolean accountUnfreeze(FieldSetEntity fse) throws BaseException { if (!com.product.common.lang.StringUtils.isEmpty(fse.getUUID())) { //user 表 uuid return baseDao.executeUpdate("update product_sys_users set status=1 where uuid=?", new Object[]{fse.getUUID()}); } return false; } /** * 新增管理员 manager_type 1超级管理员 2.普通管理员 3.隐藏管理员 4.系统管理员 * * @throws BaseException */ @Transactional public String addUser(FieldSetEntity fs, int manager_type) throws BaseException { String staffs_uuid = fs.getString("staffs_uuid"); fs.setValue("login_url", URLEncoder.encode(Global.getSystemConfig("resetpwd.lxlogin_url", "")));//获取配置的管理员登录界面,保存fs中 // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(staffs_uuid)) { return addStaffsManager(fs, manager_type); } else { return addManager(fs, manager_type); } } /** * 绑定人员的情况下创建管理员 */ public String addStaffsManager(FieldSetEntity fs, int manager_type) throws BaseException { // 对staffs进行修改 String staffs_uuid = fs.getString(CmnConst.STAFFS_UUID); String pwd = fs.getString(CmnConst.USER_PWD); String user_account = fs.getString(CmnConst.USER_ACCOUNT); FieldSetEntity staffsFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_STAFFS, staffs_uuid, false); staffsFs.setValue("is_org_admin", 1); boolean updateStaffsFs = baseDao.executeUpdate("update product_sys_staffs set is_org_admin=1 where uuid=?", new String[]{staffsFs.getString(CmnConst.UUID)}); // 对user进行修改 if (!updateStaffsFs) return null; String user_id = staffsFs.getString(CmnConst.USER_ID); boolean updateUserFs = baseDao.executeUpdate("update product_sys_users set is_manager=1 where user_id=?", new String[]{user_id}); if (!updateUserFs) return null; // 创建manager FieldSetEntity managerFs = new FieldSetEntity(); managerFs.setTableName(CmnConst.PRODUCT_SYS_ORG_MANAGER); managerFs.setValue(CmnConst.USER_ID, user_id); managerFs.setValue(CmnConst.ORG_LEVEL_UUID, fs.getString(CmnConst.ORG_LEVEL_UUID)); managerFs.setValue(CmnConst.MANAGER_TYPE, manager_type); managerFs.setValue(CmnConst.ROLE_UUIDS, fs.getString(CmnConst.ROLE_UUID)); // 郑盟 2020年12月21日 下午14:05 managerFs.setValue(CmnConst.IS_USED, "1"); managerFs.setValue(CmnConst.CLIENTS_UUID, fs.getString(CmnConst.CLIENTS_UUID)); managerFs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); managerFs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date()); String add = baseDao.add(managerFs); if (!StringUtils.isEmpty(add) && !StringUtils.isEmpty(user_id)) { // xupengcheng updateTime 2020年11月28日10:33:25 管理员绑定员工更新菜单、user对象信息 updateLoginUserInfoService.updateUserInfoByManagerStaffBindClient(user_id, false); } // 新增单位管理员发送邮件 // 邮件内容 String login_url = fs.getString(CmnConst.LOGIN_URL); FieldSetEntity nfs = new FieldSetEntity(); nfs.setTableName(CmnConst.STAFF_EMAIL_CONTENT); nfs.setValue(CmnConst.LOGIN_URL, login_url);// 登录页面 nfs.setValue(CmnConst.USER_ACCOUNT, user_account);// 用户名 nfs.setValue(CmnConst.PASS_WORD, pwd);// 密码 String olu = fs.getString(CmnConst.ORG_LEVEL_UUID); if (olu.indexOf(",") != -1) { olu = olu.replace(",", "','"); } String sql = "product_sys_org_levels where uuid in ('" + olu + "')"; StringBuilder oln = new StringBuilder(); DataTableEntity dtt = baseDao.listTable(sql); if (dtt.getRows() > 0) { for (int i = 0; i < dtt.getRows(); i++) { FieldSetEntity dfs = dtt.getFieldSetEntity(i); String na = dfs.getString(CmnConst.ORG_LEVEL_NAME); if (i < 1) { oln.append(na); } else { oln.append(","); oln.append(na); } } } // nfs.setValue(CmnConst.ORG_LEVEL_NAME, oln);// 公司 // nfs.setValue(CmnConst.USER_PRIMARY_EMAIL, fs.getString(CmnConst.USER_PRIMARY_EMAIL));// 邮箱地址 // try { // String resultInfo = sendEmailService.parseMailTemplate(CmnConst.NEW_ACCOUNT_MANAGER_ACTIVATION, nfs); // if (SystemCode.SYSTEM_OPERATION_SUCCESS.getText().equals(resultInfo)) { // return add; // } else { // throw new BaseException(SystemCode.SYSTEM_MAIL_SEND_FAIL.getValue(), // SystemCode.SYSTEM_MAIL_SEND_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); // } // } catch (Exception e) { // throw new BaseException(SystemCode.SYSTEM_MAIL_SEND_FAIL.getValue(), // SystemCode.SYSTEM_MAIL_SEND_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); // } //返回信息 return com.product.email.config.SystemCode.SYSTEM_OPERATION_SUCCESS.getText(); } /** * 不绑定人员的情况下创建管理员 */ public String addManager(FieldSetEntity fs, int manager_type) throws BaseException { String user_account = fs.getString(CmnConst.USER_ACCOUNT); DataTableEntity listTable = baseDao.listTable(CmnConst.PRODUCT_SYS_USERS, "user_account='" + user_account + "'"); if (listTable.getRows() > 0) { throw new BaseException(SystemCode.SYSTEM_REPEAT_USER_FAIL.getValue(), SystemCode.SYSTEM_REPEAT_USER_FAIL.getText(), this.getClass(), "addUser"); } String user_primary_email = fs.getString(CmnConst.USER_PRIMARY_EMAIL); DataTableEntity email = baseDao.listTable(CmnConst.PRODUCT_SYS_USERS, "user_primary_email='" + user_primary_email + "'"); if (email.getRows() > 0) { throw new BaseException(SystemCode.SYSTEM_REPEAT_EMAIL_FAIL.getValue(), SystemCode.SYSTEM_REPEAT_EMAIL_FAIL.getText(), this.getClass(), "addUser"); } fs.setValue(CmnConst.IS_MANAGER, 1); fs.setValue(CmnConst.USER_PWD, userService.createPassWord(fs.getString(CmnConst.USER_ACCOUNT), fs.getString(CmnConst.USER_PWD))); fs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date()); String add = baseDao.add(fs, false); // 处理manager公司uuid forManagerUuid(fs, add); FieldSetEntity rolefs = new FieldSetEntity(); rolefs.setTableName(CmnConst.PRODUCT_SYS_ROLE); FieldMetaEntity ff = new FieldMetaEntity(); ff.setTableName(new Object[]{CmnConst.PRODUCT_SYS_ROLE}); rolefs.setMeta(ff); FieldSetEntity managerFs = new FieldSetEntity(); FieldSetEntity userFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, "uuid=? ", new String[]{add}, false); FieldMetaEntity f = new FieldMetaEntity(); f.setTableName(new Object[]{CmnConst.PRODUCT_SYS_ORG_MANAGER}); managerFs.setMeta(f); managerFs.setValue(CmnConst.USER_ID, userFs.getString(CmnConst.USER_ID)); // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(fs.getString(CmnConst.ORG_LEVEL_UUID))) { managerFs.setValue(CmnConst.ORG_LEVEL_UUID, fs.getString(CmnConst.ORG_LEVEL_UUID)); } managerFs.setValue(CmnConst.MANAGER_TYPE, manager_type); // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(fs.getString(CmnConst.CLIENTS_UUID))) { managerFs.setValue(CmnConst.CLIENTS_UUID, fs.getString(CmnConst.CLIENTS_UUID)); } else { managerFs.setValue(CmnConst.CLIENTS_UUID, null); } // 新增管理员 manager_type 1超级管理员 2.普通管理员 3.隐藏管理员 4.系统管理员 choiceManagerType(manager_type, managerFs); // 郑盟 2020年12月21日 下午14:05 managerFs.setValue(CmnConst.IS_USED, "1"); managerFs.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); managerFs.setValue(CmnConst.CREATED_UTC_DATETIME, new Date()); String addManager = baseDao.add(managerFs); if (addManager == null) return addManager; // 更新企业表 uodateCompanyData(fs); // 新增单位管理员发送邮件 // 邮件内容 // FieldSetEntity nfs = new FieldSetEntity(); // addManagerSendMail(fs, user_account, pwd, nfs); // return returnAdd(manager_type, nfs, add); //返回信息 return com.product.email.config.SystemCode.SYSTEM_OPERATION_SUCCESS.getText(); } private void forManagerUuid(FieldSetEntity fs, String add) { for (String client_uuid : fs.getString(CmnConst.ORG_LEVEL_UUID).split(",")) { DataTableEntity org_levels = baseDao.listTable(CmnConst.PRODUCT_SYS_ORG_LEVELS, " uuid=?", new String[]{client_uuid}); if (org_levels.getRows() > 0) { for (int i = 0; i < org_levels.getRows(); i++) { FieldSetEntity org_level = org_levels.getFieldSetEntity(i); String org_level_manager_uuid = null; // 郑盟 2020年12月17日 下午16:05 if (org_level != null && (StringUtils.isEmpty(org_level.getString(CmnConst.ORG_LEVEL_MANAGER_UUID)))) { org_level_manager_uuid = add; org_level.setValue(CmnConst.ORG_LEVEL_MANAGER_UUID, org_level_manager_uuid); } else if (org_level != null && !StringUtils.isEmpty(org_level.getString(CmnConst.ORG_LEVEL_MANAGER_UUID))) { org_level_manager_uuid = org_level.getString(CmnConst.ORG_LEVEL_MANAGER_UUID) + "," + add; org_level.setValue(CmnConst.ORG_LEVEL_MANAGER_UUID, org_level_manager_uuid); } else { continue; } String sql = "update product_sys_org_levels set org_level_manager_uuid=? where uuid=?"; baseDao.executeUpdate(sql, new Object[]{org_level_manager_uuid, org_level.getUUID()}); } } } } private void choiceManagerType(int manager_type, FieldSetEntity managerFs) { FieldSetEntity fss = null; if (manager_type == 2) { fss = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ROLE, " uuid=?", new String[]{CoreConst.ROLE_ADMIN_UUID_COMPANY}, false); } if (manager_type == 1) { fss = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ROLE, " uuid=?", new String[]{CoreConst.ROLE_ADMIN_UUID_ADMINISTRATOR}, false); } if (manager_type == 3) { fss = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ROLE, " uuid=?", new String[]{CoreConst.ROLE_ADMIN_UUID_HIDDEN}, false); } if (manager_type == 4) { fss = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ROLE, " uuid= ? ", new String[]{CoreConst.ROLE_ADMIN_UUID_PLANTFORM}, false); } if (fss != null) { managerFs.setValue(CmnConst.ROLE_UUIDS, fss.getUUID()); } else { throw new BaseException(SystemCode.SYSTEM_GET_ROLEUUID_FAIL.getValue(), SystemCode.SYSTEM_GET_ROLEUUID_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); } } private void uodateCompanyData(FieldSetEntity fs) { if (fs.getString(CmnConst.CLIENTS_UUID) != null) { String[] clients_uuid = fs.getString(CmnConst.CLIENTS_UUID).split(","); if (clients_uuid != null) { for (int i = 0; i < clients_uuid.length; i++) { String client_uuid = clients_uuid[i]; DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_SYS_ORG_LEVELS, "client_uuid=?", new String[]{client_uuid}); dt = baseDao.listInternationDataTable(dt, null); forManagerDt(dt, fs); } } } } private void forManagerDt(DataTableEntity dt, FieldSetEntity fs) { if (dt.getRows() > 0) { for (int j = 0; j < dt.getRows(); j++) { FieldSetEntity fsd = dt.getFieldSetEntity(j); // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID))) { boolean ifuuidss = ifuuidss(fsd, fs); if (!ifuuidss) continue; } else { fsd.setValue(CmnConst.ORG_LEVEL_MANAGER_UUID, fs.getString("uuid")); } String sql = "update product_sys_org_levels set org_level_manager_uuid='" + fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID) + "' where uuid=?"; baseDao.executeUpdate(sql, new String[]{fsd.getUUID()}); } } } private boolean ifuuidss(FieldSetEntity fsd, FieldSetEntity fs) { String uuidss = fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID); String[] uuids = new String[100]; if (uuidss != null && uuidss.contains(",")) { uuids = fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID).split(","); } else { uuids[0] = uuidss; } if (Arrays.asList(uuids).contains(fs.getUUID())) { return false; } else { fsd.setValue(CmnConst.ORG_LEVEL_MANAGER_UUID, fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID) + "," + fs.getString("uuid")); return true; } } private void addManagerSendMail(FieldSetEntity fs, String user_account, String pwd, FieldSetEntity nfs) { String login_url = fs.getString(CmnConst.LOGIN_URL); nfs.setTableName(CmnConst.STAFF_EMAIL_CONTENT); nfs.setValue(CmnConst.LOGIN_URL, login_url);// 登录页面 nfs.setValue(CmnConst.USER_ACCOUNT, user_account);// 用户名 nfs.setValue(CmnConst.PASS_WORD, pwd);// 密码 String olu = fs.getString(CmnConst.ORG_LEVEL_UUID); if (olu.indexOf(",") != -1) { olu = olu.replace(",", "','"); } // 郑盟 2020年12月17日 下午16:05 if (StringUtils.isEmpty(olu)) { throw new BaseException(SystemCode.SYSTEM_GET_COMPANY_FAIL.getValue(), SystemCode.SYSTEM_GET_COMPANY_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); } String sql = "product_sys_org_levels where uuid in ('" + olu + "') "; StringBuilder oln = new StringBuilder(); DataTableEntity dtt = baseDao.listTable(sql); if (dtt.getRows() > 0) { for (int i = 0; i < dtt.getRows(); i++) { FieldSetEntity dfs = dtt.getFieldSetEntity(i); String na = dfs.getString(CmnConst.ORG_LEVEL_NAME); if (i < 1) { oln.append(na); } else { oln.append(","); oln.append(na); } } } if (oln.length() == 0) { throw new BaseException(SystemCode.SYSTEM_GET_COMPANY_FAIL.getValue(), SystemCode.SYSTEM_GET_COMPANY_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); } nfs.setValue(CmnConst.ORG_LEVEL_NAME, oln);// 公司 nfs.setValue(CmnConst.USER_PRIMARY_EMAIL, fs.getString(CmnConst.USER_PRIMARY_EMAIL));// 邮箱地址 } private String returnAdd(int manager_type, FieldSetEntity nfs, String add) { String resultInfo = null; if (manager_type == 2) { resultInfo = sendEmailService.parseMailTemplate(CmnConst.NEW_ACCOUNT_MANAGER_ACTIVATION, nfs); } else if (manager_type == 3) { resultInfo = sendEmailService.parseMailTemplate(CmnConst.NEW_HIDDEN_ADMINISTRATOR_ACTIVATION, nfs); } else if (manager_type == 4) { resultInfo = sendEmailService.parseMailTemplate(CmnConst.NEW_PLATFORM_ADMINISTRATOR_ACTIVATION, nfs); } if (SystemCode.SYSTEM_OPERATION_SUCCESS.getText().equals(resultInfo)) { return add; } else { throw new BaseException(SystemCode.SYSTEM_MAIL_SEND_FAIL.getValue(), SystemCode.SYSTEM_MAIL_SEND_FAIL.getText(), this.getClass(), CmnConst.SEND_PASSWORD_RESET_EMAIL); } } /** * 更新系统管理员 * * @throws BaseException */ @Transactional public boolean updateUser(FieldSetEntity fs) throws BaseException { DataTableEntity subDataTable = fs.getSubDataTable(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION); String user_uuid = fs.getString("uuid"); // 郑盟 2020年12月17日 下午16:05 if (StringUtils.isEmpty(user_uuid)) return false; FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, user_uuid, false); FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ORG_MANAGER, "user_id= ?", new String[]{userFs.getString(CmnConst.USER_ID)}, false); managerFs.setValue(CmnConst.CLIENTS_UUID, fs.getString(CmnConst.CLIENTS_UUID)); boolean update = baseDao.update(managerFs); if (!update) return update; forClientsUuid(fs); if (subDataTable != null) { for (int i = 0; i < subDataTable.getRows(); i++) { subDataTable.setFieldValue(i, CmnConst.ROLE_UUID, managerFs.getString(CmnConst.ROLE_UUIDS)); subDataTable.setFieldValue(i, CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); subDataTable.setFieldValue(i, CmnConst.CREATED_UTC_DATETIME, new Date()); } boolean updatePermission = rolesService.updatePermission(subDataTable); if (!updatePermission) return false; } Map subData = fs.getSubData(); if (fs.getSubDataTable(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION) != null) { subData.remove(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION); } fs.setSubData(subData); fs.setValue("is_manager", 1); fs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); if (!BaseUtil.strIsNull(fs.getString(CmnConst.USER_ID))) { // xupengcheng updateTime 2020年11月28日10:33:25 管理员绑定员工更新菜单、user对象信息 updateLoginUserInfoService.updateUserInfoByManagerStaffBindClient(fs.getString(CmnConst.USER_ID), false); } if ("1".equals(fs.getString(CmnConst.STATUS)) && "0".equals(userFs.getString(CmnConst.STATUS))) { fs.setValue("login_fail_num", null); fs.setValue("locked_expire_time", null); } return baseDao.update(fs); } private void forClientsUuid(FieldSetEntity fs) { String[] clients_uuid = null; // 更新企业表 if (!StringUtils.isEmpty(fs.getString(CmnConst.CLIENTS_UUID))) { clients_uuid = fs.getString(CmnConst.CLIENTS_UUID).split(","); } if (clients_uuid != null) { for (int i = 0; i < clients_uuid.length; i++) { String client_uuid = clients_uuid[i]; DataTableEntity dt = baseDao.listTable("product_sys_org_levels", "client_uuid=?", new String[]{client_uuid}); forDt(dt, fs); } } } private void forDt(DataTableEntity dt, FieldSetEntity fs) { if (dt.getRows() > 0) { for (int j = 0; j < dt.getRows(); j++) { FieldSetEntity fsd = dt.getFieldSetEntity(j); String org_level_manager_uuid = null; // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID))) { String[] uuids = fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID).split(","); if (Arrays.asList(uuids).contains(fs.getString("uuid"))) { continue; } else { org_level_manager_uuid = fsd.getString(CmnConst.ORG_LEVEL_MANAGER_UUID) + "," + fs.getString("uuid"); } } else { org_level_manager_uuid = fsd.getString("uuid"); } baseDao.executeUpdate(" update product_sys_org_levels set org_level_manager_uuid=? where uuid=?", new String[]{org_level_manager_uuid, fsd.getString("uuid")}); } } } /** * 系统管理员列表 * * @return */ public DataTableEntity listUser(FieldSetEntity fse, String manager_type) throws BaseException { String queryFilters = ""; if (!BaseUtil.dataTableIsEmpty(fse.getSubDataTable("systemSeniorQueryString"))) { queryFilters = " and " + queryFilterService.getQueryFilter(fse); } DataTableEntity dt = getUserType(queryFilters, manager_type, fse); // baseDao.loadPromptData(dt); return dt; } private DataTableEntity getUserType(String queryFilters, String manager_type, FieldSetEntity fse) { SystemUser user = SpringMVCContextHolder.getCurrentUser(); if (user.getUserType() == 1) { return getUserTypeOne(queryFilters, "2,4", fse); } else if (3 == user.getUserType()) { return getUserTypeThree(queryFilters, fse, user); } else { return getUserTypeOther(queryFilters, manager_type, fse, user); } } public DataTableEntity getUserTypeOne(String queryFilters, String manager_type, FieldSetEntity fse) { StringBuilder sql = new StringBuilder( " SELECT a.*,b.uuid uuid1,b.clients_uuid,b.org_level_uuid,b.manager_type FROM product_sys_users a JOIN product_sys_org_manager b on a.user_id= b.user_id "); sql.append("WHERE 1=1 " + queryFilters + " and b.manager_type in("); sql.append(manager_type); sql.append(") "); sql.append(" ORDER BY b.clients_uuid,b.org_level_uuid,b.manager_type"); DataTableEntity listTable = baseDao.listTable(sql.toString(), new Object[]{}, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); baseDao.loadPromptData(listTable); return listTable; } public DataTableEntity getUserTypeThree(String queryFilters, FieldSetEntity fse, SystemUser user) { // 隐藏管理员权限 2020年12月22日17:05:30 xupengcheng // 隐藏管理员所管理的客户uuid String manager_client_uuid = user.getClientUuid(); StringBuilder sql = new StringBuilder(); sql.append(" SELECT "); sql.append(" a.*, "); sql.append(" b.uuid uuid1, "); sql.append(" b.clients_uuid, "); sql.append(" b.org_level_uuid, "); sql.append(" b.manager_type "); sql.append(" FROM "); sql.append("product_sys_users a "); sql.append(" JOIN product_sys_org_manager b ON a.user_id = b.user_id "); sql.append(" AND b.clients_uuid = ? "); sql.append(" AND concat( ',', b.org_level_uuid, ',' ) LIKE concat( '%,',?, ',%' ) "); if (!StringUtils.isEmpty(queryFilters)) { sql.append(" AND "); sql.append(queryFilters); } return baseDao.listInternationDataTable( baseDao.listTable(sql.toString(), new Object[]{manager_client_uuid, user.getOrg_level_uuid()}, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)), null); } public DataTableEntity getUserTypeOther(String queryFilters, String manager_type, FieldSetEntity fse, SystemUser user) { if (user.getCurrentManager() != null && !StringUtils.isEmpty(user.getCurrentManager().getString(CmnConst.CLIENTS_UUID)) && user.getUserType() == 4) { String[] levels = user.getCurrentManager().getString(CmnConst.CLIENTS_UUID).split(","); StringBuilder filter = new StringBuilder(" client_uuid=? "); if (levels.length > 1) { for (int i = 1; i < levels.length; i++) { filter.append(" or client_uuid=? "); } } DataTableEntity org_levels = baseDao.listTable("product_sys_org_levels", filter.toString(), levels); StringBuilder sql = new StringBuilder(); sql.append( " SELECT a.*,b.uuid uuid1,b.clients_uuid,b.org_level_uuid,b.manager_type FROM product_sys_users a JOIN product_sys_org_manager b on a.user_id= b.user_id WHERE b.manager_type in (" + manager_type + ") " + queryFilters + ""); if (org_levels.getRows() > 0) { sql.append(" and (b.org_level_uuid like Concat('%','" + org_levels.getFieldSetEntity(0).getString("uuid") + "','%')"); for (int i = 1; i < org_levels.getRows(); i++) { sql.append("or b.org_level_uuid like Concat('%','" + org_levels.getFieldSetEntity(i).getString("uuid") + "','%')"); } sql.append(") ORDER BY b.clients_uuid,b.org_level_uuid,b.manager_type"); } return baseDao.listInternationDataTable(baseDao.listTable(sql.toString(), new Object[]{}, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)), null); } else if (user.getCurrentManager() != null && StringUtils.isEmpty(user.getCurrentManager().getString(CmnConst.CLIENTS_UUID)) && user.getUserType() == 4) { return baseDao.listTable( "SELECT a.*,b.uuid uuid1,b.clients_uuid,b.org_level_uuid,b.manager_type FROM product_sys_users a JOIN product_sys_org_manager b on a.user_id= b.user_id WHERE 1>2 " + queryFilters + "", new Object[]{}); } else { String sql = " SELECT a.*,b.uuid uuid1,b.clients_uuid,b.org_level_uuid,b.manager_type FROM product_sys_users a JOIN product_sys_org_manager b on a.user_id= b.user_id WHERE b.manager_type in(" + manager_type + ") " + queryFilters + " ORDER BY b.clients_uuid,b.org_level_uuid,b.manager_type"; return baseDao.listInternationDataTable(baseDao.listTable(sql, new Object[]{}, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)), null); } } /** * 系统管理员删除 * * @return */ @Transactional public boolean deleteUser(String uuid) throws BaseException { FieldSetEntity fs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, " uuid =?", new String[]{uuid}, false); FieldSetEntity mfs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ORG_MANAGER, " user_id =?", new String[]{fs.getString(CmnConst.USER_ID)}, false); if (mfs != null && !BaseUtil.strIsNull(mfs.getString(CmnConst.USER_ID))) { boolean delete = baseDao.delete(CmnConst.PRODUCT_SYS_ORG_MANAGER, " uuid = ?", new String[]{mfs.getString("uuid")}); if (delete) { // xupengcheng updateTime 2020年11月28日10:33:25 管理员绑定员工更新菜单、user对象信息 updateLoginUserInfoService.updateUserInfoByManagerStaffBindClient(mfs.getString(CmnConst.USER_ID), false); } } FieldSetEntity staffs_fs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_STAFFS, " user_id= ?", new String[]{fs.getString(CmnConst.USER_ID)}, false); if (null == staffs_fs || null == staffs_fs.getUUID()) { return baseDao.delete(CmnConst.PRODUCT_SYS_USERS, " uuid = ?", new String[]{uuid}); } else { boolean updateStaffsFs = baseDao.executeUpdate("update product_sys_staffs set is_org_admin=0 where uuid=?", new String[]{staffs_fs.getString("uuid")}); if (!updateStaffsFs) { return updateStaffsFs; } return baseDao.executeUpdate("update product_sys_users set is_manager=0 where user_id=?", new String[]{fs.getString(CmnConst.USER_ID)}); } } /** * 系统管理员详情 */ public FieldSetEntity findUser(FieldSetEntity fs) throws BaseException { String user_uuid = fs.getString("uuid"); if (StringUtils.isEmpty(user_uuid)) return null; FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, user_uuid, false); FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_ORG_MANAGER, " user_id=?", new String[]{userFs.getString(CmnConst.USER_ID)}, false); FieldSetEntity staffsFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_STAFFS, " user_id=?", new String[]{userFs.getString(CmnConst.USER_ID)}, false); if (null != managerFs) { String role_uuid = managerFs.getString(CmnConst.ROLE_UUIDS); String sql = "select * FROM product_sys_function_permission where role_uuid in('" + role_uuid.replace(",", "','") + "')"; DataTableEntity listTable = baseDao.listTable(sql, new Object[]{}); if (null != listTable && listTable.getRows() > 0) { userFs.addSubDataTable(listTable); } // 郑盟 2020年12月17日 下午16:05 if (!StringUtils.isEmpty(managerFs.getString(CmnConst.CLIENTS_UUID))) { userFs.setValue(CmnConst.CLIENTS_UUID, managerFs.getString(CmnConst.CLIENTS_UUID)); } userFs.setValue(CmnConst.MANAGER_TYPE, managerFs.getString(CmnConst.MANAGER_TYPE)); userFs.setValue(CmnConst.ORG_LEVEL_UUID, managerFs.getString(CmnConst.ORG_LEVEL_UUID)); } if (null != staffsFs) { userFs.setValue("staffs_uuid", staffsFs.getString("uuid")); } // 处理名字国际化 // DataTableEntity user_name = baseDao.listTable(.PRODUCT_SYS_language_cont_values", // "data_uuid=? and field_name='user_name'", new String[] { user_uuid }); // if (user_name.getRows() > 0) { // List> user_names = new ArrayList<>(); // for (int i = 0; i < user_name.getRows(); i++) { // Map map = new HashedMap(); // map.put(user_name.getFieldSetEntity(i).getString("language_code"), // user_name.getFieldSetEntity(i).getString("field_value")); // map.put("uuid", user_name.getFieldSetEntity(i).getString("uuid")); // user_names.add(map); // } // userFs.setValue(CmnConst.USER_NAME, user_names); // } return userFs; } /** * 重置密码 */ public boolean resetPassword(FieldSetEntity fs) throws BaseException { String uuid = fs.getString("uuid"); FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, uuid, false); if (null == userFs) return false; // 后端配置,重置密码模工=mail,则随机生成8位密码,发送到邮件,否则是默认初始密码 String passWord =CmnConst.RESET_PWD_MODEL_MAIL.equals(Global.getSystemConfig(CmnConst.RESET_PWD_MODEL,CmnConst.RESET_PWD_MODEL_MAIL))? RandomStringUtils.randomAlphanumeric(8):Global.getSystemConfig(CmnConst.INITIAL_PWD, null); // 加密默认密码 String pwd = userService.createPassWord(userFs.getString(CmnConst.USER_ACCOUNT), passWord); userFs.setValue(CmnConst.USER_PWD, pwd); if(CmnConst.RESET_PWD_MODEL_MAIL.equals(Global.getSystemConfig(CmnConst.RESET_PWD_MODEL,CmnConst.RESET_PWD_MODEL_MAIL))) { // 密码重置成功发送邮件(无模板,暂未调用) FieldSetEntity nfs = new FieldSetEntity(); nfs.setTableName(CmnConst.STAFF_EMAIL_CONTENT); nfs.setValue(CmnConst.LOGIN_URL, fs.getString(CmnConst.LOGIN_URL));// 登录页面 nfs.setValue(CmnConst.USER_ACCOUNT, userFs.getString(CmnConst.USER_ACCOUNT));// 用户名 nfs.setValue(CmnConst.PASS_WORD, passWord);// 随机新密码 nfs.setValue(CmnConst.USER_PRIMARY_EMAIL, userFs.getString(CmnConst.USER_PRIMARY_EMAIL));// 接受邮件邮箱地址 sendEmailService.parseMailTemplate(CmnConst.PLATFORM_ADMINISTRATOR_RESET_PASSWORD_EMAIL, nfs); } return baseDao.update(userFs); } /** * 禁用账号 */ public boolean disableAccount(FieldSetEntity fs) throws BaseException { String uuid = fs.getString("uuid"); FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, uuid, false); userFs.remove(CmnConst.USER_NAME); FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, "user_id=?", new String[]{userFs.getString(CmnConst.USER_ID)}, false); // 郑盟 2020年12月21日 下午14:05 managerFs.setValue(CmnConst.IS_USED, fs.getString(CmnConst.STATUS)); managerFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); managerFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); boolean managerUpdate = baseDao.update(managerFs); if (!managerUpdate) return managerUpdate; FieldSetEntity staffsFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_STAFFS, "user_id=?", new String[]{userFs.getString(CmnConst.USER_ID)}, false); if (staffsFs == null) { userFs.setValue(CmnConst.STATUS, fs.getString(CmnConst.STATUS)); userFs.setValue(CmnConst.IS_MANAGER, fs.getString(CmnConst.STATUS)); userFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); userFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); return baseDao.update(userFs); } else { staffsFs.setValue("is_org_admin", fs.getString(CmnConst.STATUS)); staffsFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); staffsFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); boolean update = baseDao.update(staffsFs); if (!update) return update; userFs.setValue(CmnConst.IS_MANAGER, fs.getString(CmnConst.STATUS)); userFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id()); userFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); return baseDao.update(userFs); } } }