/** * @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 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 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); } }