/**
|
* @Date: 2020年6月22日 下午4:11:13
|
* @Author: ZhengMeng
|
* @Description:
|
*/
|
|
package com.product.org.admin.service;
|
|
import java.util.Date;
|
import java.util.Map;
|
|
import com.product.common.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import com.product.org.admin.config.CmnConst;
|
import com.product.admin.config.SystemCode;
|
import com.product.admin.service.RolesService;
|
import com.product.core.dao.BaseDao;
|
import com.product.core.entity.DataTableEntity;
|
import com.product.core.entity.FieldSetEntity;
|
import com.product.core.exception.BaseException;
|
import com.product.core.service.support.AbstractBaseService;
|
import com.product.core.spring.context.SpringMVCContextHolder;
|
import com.product.core.transfer.Transactional;
|
import com.product.module.sys.service.UserService;
|
import com.product.org.admin.service.idel.IManagementUserService;
|
|
/**
|
* Copyright LX-BASE
|
*
|
* @Title:
|
* @Project: LX-BASE-SERVER
|
* @Date: 2020年6月22日 下午4:11:13
|
* @Author: 郑盟
|
* @Description:
|
*/
|
@Component
|
public class ManagementUserService extends AbstractBaseService implements IManagementUserService {
|
@Autowired
|
private BaseDao baseDao;
|
@Autowired
|
private UserService userService;
|
@Autowired
|
private RolesService rolesService;
|
|
/**
|
* 更新管理员
|
*
|
* @throws BaseException
|
*/
|
@Transactional
|
public boolean updateUser(FieldSetEntity fs) throws BaseException {
|
String userUUID = fs.getString("uuid");
|
FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, fs.getString("uuid"), false);
|
if ("1".equals(fs.getString("status")) && "0".equals(userFs.getString("status"))) {
|
fs.setValue("login_fail_num", null);
|
fs.setValue("locked_expire_time", null);
|
}
|
//郑盟 2020年12月17日 下午16:05
|
if (StringUtils.isEmpty(userUUID))
|
return false;
|
// 状态1、获取数据未绑定人员 实际数据未绑定人员
|
String staffs_uuid = fs.getString(CmnConst.STAFFS_UUID);
|
//郑盟 2020年12月17日 下午16:05
|
if (StringUtils.isEmpty(staffs_uuid)) {
|
DataTableEntity listTable = baseDao.listTable(
|
"SELECT b.uuid FROM product_sys_users a JOIN product_sys_staffs b on a.user_id =b.user_id WHERE a.uuid=?",
|
new String[]{userUUID});
|
if (listTable.getRows() > 0) {
|
// 状态1、获取数据未绑定人员 实际数据绑定人员
|
return updateUserStatusOne(fs);
|
} else {
|
// 状态2、获取数据未绑定人员 实际数据未绑定人员
|
return updateUserStatusTwo(fs);
|
}
|
} else {
|
DataTableEntity listTable = baseDao.listTable(
|
"SELECT b.uuid FROM product_sys_users a JOIN product_sys_staffs b on a.user_id =b.user_id WHERE a.uuid=?",
|
new String[]{userUUID});
|
if (listTable.getRows() > 0) {
|
// 状态3、获取数据绑定人员 实际数据绑定人员
|
return updateUserStatusThree(fs);
|
} else {
|
// 状态4、获取数据绑定人员 实际数据未绑定人员
|
return updateUserStatusFour(fs);
|
}
|
}
|
|
}
|
|
// 更具staffsUUID带出user
|
public FieldSetEntity getStaffsUser(FieldSetEntity fs) throws BaseException {
|
String uuid = fs.getString("uuid");
|
//郑盟 2020年12月17日 下午16:05
|
if (StringUtils.isEmpty(uuid))
|
return null;
|
FieldSetEntity staffsFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_STAFFS, uuid, false);
|
if (staffsFs != null) {
|
return baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, "user_id=? ",
|
new String[]{staffsFs.getString(CmnConst.USER_ID)}, false);
|
}
|
|
return null;
|
}
|
|
public boolean updateRole(FieldSetEntity fs, FieldSetEntity managerFs) throws BaseException {
|
DataTableEntity subDataTable = fs.getSubDataTable(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION);
|
if (subDataTable != null && subDataTable.getRows() > 0) {
|
for (int i = 0; i < subDataTable.getRows(); i++) {
|
subDataTable.setFieldValue(i, "role_uuid", managerFs.getString("role_uuids"));
|
subDataTable.setFieldValue(i, CmnConst.CREATED_BY,
|
SpringMVCContextHolder.getCurrentUser().getUser_id());
|
subDataTable.setFieldValue(i, CmnConst.CREATED_UTC_DATETIME, new Date());
|
}
|
return rolesService.updatePermission(subDataTable);
|
}
|
return true;
|
}
|
|
public boolean updateUserStatusTwo(FieldSetEntity fs) throws BaseException {
|
String org_level_uuid = fs.getString(CmnConst.ORG_LEVEL_UUID);
|
FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, fs.getString("uuid"), false);
|
if (null != userFs) {
|
FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, "user_id= ?",
|
new String[]{userFs.getString(CmnConst.USER_ID)}, false);
|
if (null == managerFs)
|
return false;
|
managerFs.setValue("clients_uuid", fs.getString("clients_uuid"));
|
managerFs.setValue(CmnConst.ORG_LEVEL_UUID, org_level_uuid);
|
managerFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
managerFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean update2 = baseDao.update(managerFs);
|
if (!update2)
|
return update2;
|
boolean updateRole = updateRole(fs, managerFs);
|
if (!updateRole)
|
return updateRole;
|
Map<String, DataTableEntity> subData = fs.getSubData();
|
if (fs.getString(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION) != null) {
|
subData.remove(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION);
|
}
|
fs.setSubData(subData);
|
fs.setValue(CmnConst.IS_MANAGER, 1);
|
fs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
fs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
return baseDao.update(fs);
|
}
|
return false;
|
|
}
|
|
public boolean updateUserStatusOne(FieldSetEntity fs) throws BaseException {
|
String userUUID = fs.getString("uuid");
|
FieldSetEntity userFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, "uuid=?",
|
new String[]{userUUID}, false);
|
userFs.setValue(CmnConst.IS_MANAGER, 0);
|
// 修改user管理员状态
|
boolean userUpdate = baseDao.update(userFs);
|
if (!userUpdate)
|
return false;
|
String user_id = userFs.getString(CmnConst.USER_ID);
|
FieldSetEntity staffsFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_STAFFS, " user_id=?",
|
new String[]{user_id}, false);
|
staffsFs.setValue(CmnConst.IS_ORG_ADMIN, 0);
|
// 修改staffs管理员状态
|
staffsFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
staffsFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean staffsFsUpdate = baseDao.update(staffsFs);
|
if (!staffsFsUpdate)
|
return false;
|
fs.remove("uuid");
|
// 新建用户
|
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");
|
}
|
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 addUUID = baseDao.add(fs, false);
|
if (null == addUUID)
|
return false;
|
FieldSetEntity addUser = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, addUUID, false);
|
String add_user_id = addUser.getString(CmnConst.USER_ID);
|
FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, "user_id =?",
|
new String[]{user_id}, false);
|
managerFs.setValue(CmnConst.USER_ID, add_user_id);
|
// 更换修.PRODUCT_SYS_org_manager表关联user_id
|
managerFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
managerFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean update = baseDao.update(managerFs);
|
if (!update)
|
return update;
|
return updateRole(fs, managerFs);
|
}
|
|
public boolean updateUserStatusThree(FieldSetEntity fs) throws BaseException {
|
String staffs_uuid = fs.getString(CmnConst.STAFFS_UUID);
|
FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, fs.getString("uuid"), false);
|
FieldSetEntity staffsFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_STAFFS, "user_id=? ",
|
new String[]{userFs.getString(CmnConst.USER_ID)}, false);
|
// 判断是否更改人员
|
if (staffs_uuid.equals(staffsFs.getString("uuid"))) {
|
// 如果没有更改人员:则保存基础数据
|
FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, " user_id =?",
|
new String[]{userFs.getString(CmnConst.USER_ID)}, false);
|
managerFs.setValue(CmnConst.ORG_LEVEL_UUID, fs.getString(CmnConst.ORG_LEVEL_UUID));
|
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;
|
boolean updateRole = updateRole(fs, managerFs);
|
if (!updateRole)
|
return updateRole;
|
Map<String, DataTableEntity> subData = fs.getSubData();
|
subData.remove(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION);
|
fs.setSubData(subData);
|
fs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
fs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
fs.setValue(CmnConst.USER_PWD, userService.createPassWord(fs.getString(CmnConst.USER_ACCOUNT), fs.getString(CmnConst.USER_PWD)));
|
return baseDao.update(fs);
|
} else {
|
// 如果更改人员:把被更改人管理员状态取消 更改人增加管理员状态并且关.PRODUCT_SYS_org_manager
|
userFs.setValue(CmnConst.IS_MANAGER, 0);
|
userFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
userFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean userUpdate = baseDao.update(userFs);
|
if (!userUpdate)
|
return userUpdate;
|
staffsFs.setValue(CmnConst.IS_ORG_ADMIN, 0);
|
staffsFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
staffsFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean staffsUpdate = baseDao.update(staffsFs);
|
if (!staffsUpdate)
|
return staffsUpdate;
|
FieldSetEntity Fsstaffs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_STAFFS, staffs_uuid, false);
|
Fsstaffs.setValue(CmnConst.IS_ORG_ADMIN, 1);
|
Fsstaffs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
Fsstaffs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean FsstaffsUpdate = baseDao.update(Fsstaffs);
|
if (!FsstaffsUpdate)
|
return FsstaffsUpdate;
|
FieldSetEntity FsUsers = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, " user_id =?",
|
new String[]{Fsstaffs.getString(CmnConst.USER_ID)}, false);
|
FsUsers.setValue(CmnConst.IS_MANAGER, 1);
|
FsUsers.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
FsUsers.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
FsUsers.setValue(CmnConst.USER_PWD,
|
userService.createPassWord(FsUsers.getString(CmnConst.USER_ACCOUNT), FsUsers.getString(CmnConst.USER_PWD)));
|
boolean FsUsersUpdate = baseDao.update(FsUsers);
|
FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, " user_id = ?",
|
new String[]{userFs.getString(CmnConst.USER_ID)}, false);
|
managerFs.setValue(CmnConst.USER_ID, FsUsers.getString(CmnConst.USER_ID));
|
managerFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
managerFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean update = baseDao.update(managerFs);
|
if (!update || !FsUsersUpdate)
|
return false;
|
return updateRole(fs, managerFs);
|
}
|
}
|
|
public boolean updateUserStatusFour(FieldSetEntity fs) throws BaseException {
|
String staffs_uuid = fs.getString(CmnConst.STAFFS_UUID);
|
FieldSetEntity userFs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_USERS, fs.getString("uuid"), false);
|
userFs.setValue(CmnConst.IS_MANAGER, 0);
|
userFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
userFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean userUpdate = baseDao.update(userFs);
|
if (!userUpdate)
|
return userUpdate;
|
FieldSetEntity Fsstaffs = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_STAFFS, staffs_uuid, false);
|
boolean executeUpdate = baseDao.executeUpdate("update product_sys_staffs set is_org_admin=1 where uuid=?",
|
new String[]{staffs_uuid});
|
if (!executeUpdate)
|
return executeUpdate;
|
FieldSetEntity FsUsers = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_USERS, "user_id=? ",
|
new String[]{Fsstaffs.getString(CmnConst.USER_ID)}, false);
|
FsUsers.setValue(CmnConst.IS_MANAGER, 1);
|
FsUsers.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
FsUsers.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
FsUsers.setValue(CmnConst.USER_PWD,
|
userService.createPassWord(FsUsers.getString(CmnConst.USER_ACCOUNT), FsUsers.getString(CmnConst.USER_PWD)));
|
if(!StringUtils.isEmpty(fs.getString(CmnConst.USER_NAME))){
|
FsUsers.setValue(CmnConst.USER_NAME,fs.getString(CmnConst.USER_NAME));
|
}
|
boolean FsUsersUpdate = baseDao.update(FsUsers);
|
if (!FsUsersUpdate)
|
return FsUsersUpdate;
|
FieldSetEntity managerFs = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MANAGER, "user_id=?",
|
new String[]{userFs.getString(CmnConst.USER_ID)}, false);
|
managerFs.setValue(CmnConst.USER_ID, FsUsers.getString(CmnConst.USER_ID));
|
managerFs.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());
|
managerFs.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date());
|
boolean update = baseDao.update(managerFs);
|
if (!update)
|
return update;
|
return updateRole(fs, managerFs);
|
}
|
|
|
}
|