...
|
...
|
@@ -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", "批量删除用户关系,失败!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
|