/**
|
*
|
*/
|
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<String, DataTableEntity> 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<Map<String, String>> user_names = new ArrayList<>();
|
// for (int i = 0; i < user_name.getRows(); i++) {
|
// Map<String, String> 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);
|
|
}
|
}
|
}
|