作者 王勇

完善一下用户的添加

... ... @@ -37,7 +37,6 @@ public class UserInfoController {
return userInfoService.selectUserInfoList(userInfo, pageNum, pageSize);
}
/**
* 仅,查询用户列表
*/
... ... @@ -120,4 +119,31 @@ public class UserInfoController {
return new ResultJson<>("500", "服务器异常,删除用户关系失败");
}
}
/**
* 批量删除用户(MQ服务器 and 数据库)
*/
@DeleteMapping("/batch_delete")
public ResultJson batchDeleteUser(@RequestBody List<UserInfo> userInfoList)
{
try {
return userInfoService.batchDeleteUser(userInfoList);
} catch (IOException | URISyntaxException e) {
return new ResultJson<>("500", "服务器异常,批量删除用户关系失败");
}
}
/**
* 删除用户关系(MQ服务器 and 数据库)
*/
@DeleteMapping("/batch_deleteRelation")
public ResultJson batchDeleteUserRelation(@RequestBody UserInfo userInfo)
{
String ids = userInfo.getId();
try {
return userInfoService.batchDeleteUserRelation(ids);
} catch (IOException | URISyntaxException e) {
return new ResultJson<>("500", "服务器异常,批量删除用户关系,失败!");
}
}
}
... ...
... ... @@ -36,6 +36,9 @@ public interface UserInfoService {
*
* @param record the record
* @return insert count
* @throws IOException
* @throws URISyntaxException
* @throws TimeoutException
*/
ResultJson insertSelective(UserInfo record) throws IOException, URISyntaxException, TimeoutException;
... ... @@ -113,6 +116,24 @@ public interface UserInfoService {
* @return 返回结果
*/
ResultJson deleteUserRelation(UserInfo userInfo) throws IOException, URISyntaxException;
/**
* 批量删除用户信息
*
* @param userInfoList 用户信息集合
* @return 返回结果
* @throws IOException
* @throws URISyntaxException
*/
ResultJson batchDeleteUser(List<UserInfo> userInfoList) throws IOException, URISyntaxException;
/**
* 批量删除用户关系
*
* @param ids
* @return
*/
ResultJson batchDeleteUserRelation(String ids) throws IOException, URISyntaxException;
}
... ...
... ... @@ -7,6 +7,7 @@ import com.sunyo.wlpt.message.bus.service.domain.BusServer;
import com.sunyo.wlpt.message.bus.service.domain.UserInfo;
import com.sunyo.wlpt.message.bus.service.domain.VirtualHost;
import com.sunyo.wlpt.message.bus.service.mapper.BusQueueMapper;
import com.sunyo.wlpt.message.bus.service.mapper.BusServerMapper;
import com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper;
import com.sunyo.wlpt.message.bus.service.rabbit.utils.ClientUtils;
import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils;
... ... @@ -18,7 +19,6 @@ import com.sunyo.wlpt.message.bus.service.service.VirtualHostService;
import com.sunyo.wlpt.message.bus.service.utils.IdUtils;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
... ... @@ -55,25 +55,14 @@ public class UserInfoServiceImpl implements UserInfoService {
private BusServerService busServerService;
@Resource
private BusServerMapper busServerMapper;
@Resource
private VirtualHostService virtualHostService;
@Resource
private BusQueueService busQueueService;
@Value("${spring.rabbitmq.host}")
private String host;
@Value("${spring.rabbitmq.port}")
private int port;
@Value("${spring.rabbitmq.username}")
private String rabbitUsername;
@Value("${spring.rabbitmq.password}")
private String rabbitPassword;
@Value("${spring.rabbitmq.virtual-host}")
private String vHost;
@Override
public int deleteByPrimaryKey(String id)
... ... @@ -104,10 +93,16 @@ public class UserInfoServiceImpl implements UserInfoService {
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public ResultJson insertSelective(UserInfo userInfo) throws IOException, URISyntaxException, TimeoutException
{
String errorMessage = "";
String username = userInfo.getUsername();
String password = userInfo.getPassword();
if (StringUtil.isNullOrEmpty(password) || StringUtil.isNullOrEmpty(username)) {
return new ResultJson<>("400", "用户名以及密码,不得为空,请务必选择");
}
String virtualHostId = userInfo.getVirtualHostId();
if (StringUtil.isNullOrEmpty(virtualHostId)) {
return new ResultJson<>("400", "用户关系不能为空,务必选择!");
return new ResultJson<>("400", "用户关系不能为空,务必选择!");
}
String splitItem = ",";
... ... @@ -117,26 +112,40 @@ public class UserInfoServiceImpl implements UserInfoService {
for (int i = 0; i < split_hostId.length; i++) {
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(split_hostId[i]);
if (virtualHost != null) {
userInfo.setId(IdUtils.generateId());
userInfo.setVirtualHostId(virtualHost.getId());
userInfo.setVirtualHostName(virtualHost.getVirtualHostName());
userInfo.setVirtualHostName(virtualHost.getVirtualHostName());
BusServer busServer = busServerService.selectByPrimaryKey(virtualHost.getServerId());
userInfo.setServerId(busServer.getId());
userInfo.setServerName(busServer.getServerName());
userInfo.setId(IdUtils.generateId());
int num = userInfoMapper.insertSelective(userInfo);
ClientUtils.addRabbitUser(userInfo, busServer, password);
ClientUtils.userRelation(userInfo, busServer);
createQueue(userInfo);
index = index + num;
// 判断用户关系是否存在
List<UserInfo> userInfoList = userInfoMapper.validateUserInfo(userInfo);
if (userInfoList.size() > 0) {
errorMessage = errorMessage + "用户名称:" + userInfo.getUsername() + ",服务器名称:" + userInfo.getServerName()
+ ",虚拟主机名称:" + userInfo.getVirtualHostName() + "已存在;";
continue;
}
// 判断用户的默认队列是否存在
List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(userInfo.getUsername(), userInfo.getVirtualHostId());
if (queueList.size() > 0) {
errorMessage = errorMessage + "用户名称:" + userInfo.getUsername() + ",服务器名称:" + userInfo.getServerName()
+ ",虚拟主机名称:" + userInfo.getVirtualHostName()
+ "-->的默认队列已存在,请联系管理员;" + "\r\n" + "<------->";
} else {
int num = userInfoMapper.insertSelective(userInfo);
ClientUtils.addRabbitUser(userInfo, busServer, password);
ClientUtils.userRelation(userInfo, busServer);
createQueue(userInfo);
index = index + num;
}
} else {
log.warn(split_hostId[i] + "->是服务器id");
}
}
if (!StringUtil.isNullOrEmpty(errorMessage)) {
return new ResultJson<>("201", errorMessage);
}
return index > 0
? new ResultJson<>("200", "添加用户信息,成功")
: new ResultJson<>("500", "添加用户信息,失败");
... ... @@ -155,10 +164,24 @@ public class UserInfoServiceImpl implements UserInfoService {
userInfo.setId(IdUtils.generateId());
num = userInfoMapper.insertSelective(userInfo);
ClientUtils.addRabbitUser(userInfo, busServer, password);
ClientUtils.userRelation(userInfo, busServer);
createQueue(userInfo);
// 判断用户关系是否存在
List<UserInfo> userInfoList = userInfoMapper.validateUserInfo(userInfo);
if (userInfoList.size() > 0) {
errorMessage = errorMessage + "用户名称:" + userInfo.getUsername() + ",服务器名称:" + userInfo.getServerName()
+ ",虚拟主机名称:" + userInfo.getVirtualHostName() + "已存在;";
} else {
// 判断其默认队列是否已经存在
List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(userInfo.getUsername(), userInfo.getVirtualHostId());
if (queueList.size() > 0) {
errorMessage = errorMessage + "用户名称" + userInfo.getUsername() + ",服务器名称:" + userInfo.getServerName()
+ ",虚拟主机名称:" + userInfo.getVirtualHostName() + "-->的默认队列已存在,请联系管理员";
} else {
num = userInfoMapper.insertSelective(userInfo);
ClientUtils.addRabbitUser(userInfo, busServer, password);
ClientUtils.userRelation(userInfo, busServer);
createQueue(userInfo);
}
}
} else {
log.error(userInfo.getVirtualHostId() + "->并不是虚拟主机id;故添加失败");
}
... ... @@ -298,8 +321,6 @@ public class UserInfoServiceImpl implements UserInfoService {
{
String username = userInfo.getUsername();
String serverName = userInfo.getServerName();
String virtualHostId = userInfo.getVirtualHostId();
String splitItem = ",";
List<UserInfo> userInfoList = userInfoMapper.selectByUsernameAndServerName(username, serverName);
int num = userInfoMapper.deleteByUsernameAndServerName(username, serverName);
... ... @@ -311,20 +332,22 @@ public class UserInfoServiceImpl implements UserInfoService {
/**
* TODO: 删除该用户对应的队列
*/
if (virtualHostId.contains(splitItem)) {
String[] splitHostId = virtualHostId.split(splitItem);
for (int i = 0; i < splitHostId.length; i++) {
List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, splitHostId[i]);
for (BusQueue queue : queueList) {
busQueueService.deleteByPrimaryKey(queue.getId());
}
}
} else {
List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, virtualHostId);
for (BusQueue queue : queueList) {
busQueueService.deleteByPrimaryKey(queue.getId());
}
}
// String virtualHostId = userInfo.getVirtualHostId();
// String splitItem = ",";
// if (virtualHostId.contains(splitItem)) {
// String[] splitHostId = virtualHostId.split(splitItem);
// for (int i = 0; i < splitHostId.length; i++) {
// List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, splitHostId[i]);
// for (BusQueue queue : queueList) {
// busQueueService.deleteByPrimaryKey(queue.getId());
// }
// }
// } else {
// List<BusQueue> queueList = busQueueMapper.selectByUsernameAndHostId(username, virtualHostId);
// for (BusQueue queue : queueList) {
// busQueueService.deleteByPrimaryKey(queue.getId());
// }
// }
return num > 0
? new ResultJson<>("200", "删除用户信息,成功!")
: new ResultJson<>("500", "删除用户信息,失败!");
... ... @@ -360,6 +383,77 @@ public class UserInfoServiceImpl implements UserInfoService {
? new ResultJson<>("200", "删除用户关系,成功!")
: new ResultJson<>("500", "删除用户关系,失败!");
}
/**
* 批量删除用户(不删除用户对应的队列)
*
* @param userInfoList 用户信息集合
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public ResultJson batchDeleteUser(List<UserInfo> userInfoList) throws IOException, URISyntaxException
{
int index = 0;
int num = 0;
for (UserInfo userInfo : userInfoList) {
String serverName = userInfo.getServerName();
String username = userInfo.getUsername();
if (StringUtil.isNullOrEmpty(serverName) || StringUtil.isNullOrEmpty(username)) {
continue;
}
BusServer busServer = busServerMapper.selectByServerName(serverName);
ClientUtils.deleteMQUser(username, busServer);
num = userInfoMapper.deleteByUsernameAndServerName(username, serverName);
if (num > 0) {
index = index + num;
}
}
return index > 0
? new ResultJson<>("200", "批量删除用户,成功!")
: new ResultJson<>("500", "批量删除用户,失败!");
}
/**
* 批量删除用户关系
*
* @param ids id集合
* @return
*/
@Override
public ResultJson batchDeleteUserRelation(String ids) throws IOException, URISyntaxException
{
int index = 0;
String splitItem = ",";
if (ids.contains(splitItem)) {
String[] split = ids.split(splitItem);
for (String id : split) {
UserInfo userInfo = userInfoMapper.selectByPrimaryKey(id);
String username = userInfo.getUsername();
String serverName = userInfo.getServerName();
String virtualHostName = userInfo.getVirtualHostName();
BusServer busServer = busServerMapper.selectByServerName(serverName);
int num = userInfoMapper.deleteByPrimaryKey(id);
ClientUtils.clearPermissions(busServer, virtualHostName, username);
if (num > 0) {
index = index + num;
}
}
return split.length == index
? new ResultJson<>("200", "批量删除用户关系,成功!")
: new ResultJson<>("500", "批量删除用户关系,失败!");
}
UserInfo userInfo = userInfoMapper.selectByPrimaryKey(ids);
String username = userInfo.getUsername();
String serverName = userInfo.getServerName();
String virtualHostName = userInfo.getVirtualHostName();
BusServer busServer = busServerMapper.selectByServerName(serverName);
int num = userInfoMapper.deleteByPrimaryKey(ids);
ClientUtils.clearPermissions(busServer, virtualHostName, username);
return num > 0
? new ResultJson<>("200", "批量删除用户关系,成功!")
: new ResultJson<>("500", "批量删除用户关系,失败!");
}
}
... ...