作者 王勇

用户信息模块完成增加,删除

... ... @@ -91,10 +91,10 @@ public class CascadeController {
*/
@GetMapping("/queue")
public ResultJson getQueueList(@RequestParam(value = "virtualHostId", required = false) String virtualHostId,
@RequestParam(value = "userId", required = false) String userId)
@RequestParam(value = "username", required = false) String username)
{
// 获取查询参数
BusQueue busQueue = BusQueue.builder().virtualHostId(virtualHostId).userId(userId).build();
BusQueue busQueue = BusQueue.builder().virtualHostId(virtualHostId).username(username).build();
List<BusQueue> busQueues = busQueueService.getQueueList(busQueue);
return busQueues.size() > 0
? new ResultJson<>("200", "查询队列列表,成功", busQueues)
... ...
... ... @@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.List;
import java.util.concurrent.TimeoutException;
... ... @@ -25,6 +24,20 @@ public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@GetMapping("/list")
public ResultJson selectUserInfoList(
@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "serverName", required = false) String serverName,
@RequestParam(value = "virtualHostName", required = false) String virtualHostName,
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize
)
{
UserInfo userInfo = UserInfo.builder().username(username).serverName(serverName).virtualHostName(virtualHostName).build();
return userInfoService.selectUserInfoList(userInfo, pageNum, pageSize);
}
/**
* 仅,查询用户列表
*/
... ... @@ -44,9 +57,14 @@ public class UserInfoController {
* @return {@link ResultJson}
*/
@PostMapping("/insert")
public ResultJson insertUserByEntity(@RequestBody UserInfo userInfo) throws IOException, URISyntaxException, TimeoutException
public ResultJson insertUserInfo(@RequestBody UserInfo userInfo)
{
return userInfoService.insertSelective(userInfo);
try {
return userInfoService.insertSelective(userInfo);
} catch (IOException | URISyntaxException | TimeoutException e) {
e.printStackTrace();
return new ResultJson<>("500", "服务器异常,添加用户信息失败");
}
}
/**
... ... @@ -68,9 +86,34 @@ public class UserInfoController {
* @return
*/
@PutMapping("/updatePassword")
public ResultJson updatePassword(@RequestBody UserInfo userInfo) throws MalformedURLException, URISyntaxException
public ResultJson updatePassword(@RequestBody UserInfo userInfo) throws IOException, URISyntaxException
{
return userInfoService.updatePassword(userInfo);
}
/**
* 删除用户(MQ服务器 and 数据库)
*/
@DeleteMapping("/delete")
public ResultJson deleteUser(@RequestBody UserInfo userInfo)
{
try {
return userInfoService.deleteUserInfo(userInfo);
} catch (IOException | URISyntaxException e) {
return new ResultJson<>("500", "服务器异常,删除用户失败");
}
}
/**
* 删除数据关系(MQ服务器 and 数据库)
*/
@DeleteMapping("/deleteRelation")
public ResultJson deleteUserRelation(@RequestBody UserInfo userInfo)
{
try {
return userInfoService.deleteUserRelation(userInfo);
} catch (IOException | URISyntaxException e) {
return new ResultJson<>("500", "服务器异常,删除用户关系失败");
}
}
}
... ...
package com.sunyo.wlpt.message.bus.service.mapper;
import com.sunyo.wlpt.message.bus.service.domain.BusQueue;
import org.apache.ibatis.annotations.Mapper;import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @author 子诚
... ... @@ -97,4 +99,12 @@ public interface BusQueueMapper {
* @return
*/
List<BusQueue> getQueueList(BusQueue busQueue);
/**
* 根据用户名称查询队列信息
*
* @param username 用户名称
* @return
*/
List<BusQueue> selectByUsername(String username);
}
\ No newline at end of file
... ...
... ... @@ -69,7 +69,7 @@ public interface UserInfoMapper {
* @param username 用户登录名称
* @return {@link UserInfo}
*/
UserInfo selectByUsername(String username);
List<UserInfo> selectByUsername(String username);
/**
* 仅,查询用户列表
... ... @@ -109,4 +109,12 @@ public interface UserInfoMapper {
* @return
*/
List<UserInfo> selectByBusQueue(BusQueue busQueue);
/**
* 根据用户名称删除用户信息
*
* @param username
* @return
*/
int deleteByUsername(String username);
}
\ No newline at end of file
... ...
package com.sunyo.wlpt.message.bus.service.rabbit.utils;
import com.rabbitmq.http.client.Client;
import com.rabbitmq.http.client.domain.TopicPermissions;
import com.rabbitmq.http.client.domain.UserPermissions;
import com.sunyo.wlpt.message.bus.service.domain.BusServer;
import com.sunyo.wlpt.message.bus.service.domain.UserInfo;
... ... @@ -49,28 +48,40 @@ public class ClientUtils {
{
// 新增用户的用户名称
String username = userInfo.getUsername();
// 虚拟主机名称
String virtualHostName = userInfo.getVirtualHostName();
// 与客户端建立连接
Client client = connectClient(busServer);
ArrayList<String> list = new ArrayList<>();
// 创建用户,权限为none
client.createUser(username, password.toCharArray(), list);
}
/**
* 用户与虚拟主机建立联系
*
* @param userInfo 用户信息
* @param busServer 服务器信息
* @throws IOException
* @throws URISyntaxException
*/
public static void userRelation(UserInfo userInfo, BusServer busServer) throws IOException, URISyntaxException
{
String username = userInfo.getUsername();
String virtualHostName = userInfo.getVirtualHostName();
Client client = connectClient(busServer);
// 用户与虚拟主机建立联系
UserPermissions p = new UserPermissions();
p.setConfigure(username + ".*");
p.setRead(username + ".*");
p.setWrite(username + ".*");
client.updatePermissions(virtualHostName, username, p);
TopicPermissions topicPermissions = new TopicPermissions();
topicPermissions.setVhost(virtualHostName);
topicPermissions.setExchange("");
topicPermissions.setRead(".*");
topicPermissions.setWrite(".*");
client.updateTopicPermissions(virtualHostName, username, topicPermissions);
// TopicPermissions topicPermissions = new TopicPermissions();
// topicPermissions.setVhost(virtualHostName);
// topicPermissions.setExchange("");
// topicPermissions.setRead(".*");
// topicPermissions.setWrite(".*");
// client.updateTopicPermissions(virtualHostName, username, topicPermissions);
}
/**
... ... @@ -84,6 +95,15 @@ public class ClientUtils {
}
/**
* 删除用户
*/
public static void deleteMQUser(String username, BusServer busServer) throws IOException, URISyntaxException
{
Client client = connectClient(busServer);
client.deleteUser(username);
}
/**
* 修改MQ的用户密码
*/
public static void updatePassword(BusServer busServer, String username, String password) throws IOException, URISyntaxException
... ... @@ -102,13 +122,14 @@ public class ClientUtils {
Client client = connectClient(busServer);
client.createVhost(vHost);
}
/**
* 创建虚拟主机
*/
public static void createVirtualHost(BusServer busServer, VirtualHost vHost) throws IOException, URISyntaxException
{
Client client = connectClient(busServer);
client.createVhost(vHost.getVirtualHostName(),vHost.getDescription());
client.createVhost(vHost.getVirtualHostName(), vHost.getDescription());
}
/**
... ...
... ... @@ -104,5 +104,13 @@ public interface BusQueueService {
* @return
*/
List<BusQueue> selectByVirtualHostId(String virtualHostId);
/**
* 根据用户名查询队列信息
*
* @param username 用户名称
* @return
*/
List<BusQueue> selectByUsername(String username);
}
... ...
... ... @@ -4,7 +4,6 @@ import com.sunyo.wlpt.message.bus.service.domain.UserInfo;
import com.sunyo.wlpt.message.bus.service.response.ResultJson;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.List;
import java.util.concurrent.TimeoutException;
... ... @@ -49,14 +48,6 @@ public interface UserInfoService {
UserInfo selectByPrimaryKey(String id);
/**
* 查询,根据用户名称
*
* @param username 用户登录名称
* @return {@link UserInfo}
*/
UserInfo selectByUsername(String username);
/**
* 更新,选择性,根据主键
*
* @param record the updated record
... ... @@ -93,7 +84,33 @@ public interface UserInfoService {
* @param userInfo {@link UserInfo}
* @return
*/
ResultJson updatePassword(UserInfo userInfo) throws MalformedURLException, URISyntaxException;
ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException;
/**
* 分页查询,用户信息,用户关系
*
* @param userInfo 用户信息
* @param pageNum 当前页数
* @param pageSize 每页大小
* @return
*/
ResultJson selectUserInfoList(UserInfo userInfo, Integer pageNum, Integer pageSize);
/**
* 删除MQ用户
*
* @param userInfo {@link UserInfo}
* @return 返回结果
*/
ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException;
/**
* 删除用户关系
*
* @param userInfo {@link UserInfo}
* @return 返回结果
*/
ResultJson deleteUserRelation(UserInfo userInfo) throws IOException, URISyntaxException;
}
... ...
... ... @@ -162,13 +162,13 @@ public class BusQueueServiceImpl implements BusQueueService {
public List<BusQueue> getQueueList(BusQueue busQueue)
{
List<BusQueue> list = new ArrayList<>();
String userIds = busQueue.getUserId();
String usernames = busQueue.getUsername();
String splitItem = ",";
if (!StringUtil.isNullOrEmpty(userIds)) {
if (userIds.contains(splitItem)) {
String[] split = userIds.split(splitItem);
for (String userId : split) {
busQueue.setUserId(userId);
if (!StringUtil.isNullOrEmpty(usernames)) {
if (usernames.contains(splitItem)) {
String[] split = usernames.split(splitItem);
for (String username : split) {
busQueue.setUsername(username);
List<BusQueue> queueList = busQueueMapper.getQueueList(busQueue);
if (queueList.size() > 0) {
list.addAll(queueList);
... ... @@ -185,5 +185,11 @@ public class BusQueueServiceImpl implements BusQueueService {
{
return busQueueMapper.selectByVirtualHostId(virtualHostId);
}
@Override
public List<BusQueue> selectByUsername(String username)
{
return busQueueMapper.selectByUsername(username);
}
}
... ...
... ... @@ -175,9 +175,6 @@ public class MessageNoteServiceImpl implements MessageNoteService {
*/
public MessageNote note_fillId(MessageNote messageNote)
{
UserInfo userInfo = userInfoService.selectByUsername(messageNote.getUsername());
messageNote.setUserId(userInfo.getId());
BusServer busServer = busServerService.selectByServerName(messageNote.getServerName());
messageNote.setServerId(busServer.getId());
... ...
package com.sunyo.wlpt.message.bus.service.service.impl;
import com.rabbitmq.http.client.Client;
import com.rabbitmq.http.client.domain.TopicPermissions;
import com.rabbitmq.http.client.domain.UserPermissions;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sunyo.wlpt.message.bus.service.domain.BusQueue;
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.UserInfoMapper;
import com.sunyo.wlpt.message.bus.service.rabbit.utils.ClientUtils;
import com.sunyo.wlpt.message.bus.service.rabbit.utils.RabbitUtils;
import com.sunyo.wlpt.message.bus.service.response.ResultJson;
import com.sunyo.wlpt.message.bus.service.service.BusQueueService;
... ... @@ -16,16 +16,16 @@ import com.sunyo.wlpt.message.bus.service.service.UserInfoService;
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.util.DigestUtils;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;
... ... @@ -34,6 +34,7 @@ import java.util.concurrent.TimeoutException;
* Description:
* 时间:2020/6/29 17:15
*/
@Slf4j
@Service
public class UserInfoServiceImpl implements UserInfoService {
... ... @@ -82,32 +83,81 @@ public class UserInfoServiceImpl implements UserInfoService {
return userInfoMapper.insert(record);
}
/**
* 在MQ服务器上,添加用户信息,并根据一个or多个虚拟主机id(由于其中包含着服务器id,故不做个数判断),设置用户与虚拟主机关系
* <p>
* 并创建用户对应的队列
* <p>
* 并存储于数据库
*
* @param userInfo {@link UserInfo}
* @return {@link ResultJson}
* @throws IOException
* @throws URISyntaxException
* @throws TimeoutException
*/
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public ResultJson insertSelective(UserInfo userInfo) throws IOException, URISyntaxException, TimeoutException
{
String password = userInfo.getPassword();
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(userInfo.getVirtualHostId());
userInfo.setVirtualHostName(virtualHost.getVirtualHostName());
BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId());
userInfo.setServerName(busServer.getServerName());
ResultJson validateResult = validateUser(userInfo);
if (!"200".equals(validateUser(userInfo).getCode())) {
return validateResult;
String virtualHostId = userInfo.getVirtualHostId();
String splitItem = ",";
if (virtualHostId.contains(splitItem)) {
int index = 0;
String[] split_hostId = virtualHostId.split(splitItem);
for (int i = 0; i < split_hostId.length; i++) {
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(split_hostId[i]);
if (virtualHost != null) {
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;
} else {
log.warn(split_hostId[i] + "->是服务器id");
}
}
return index > 0
? new ResultJson<>("200", "添加用户信息,成功")
: new ResultJson<>("500", "添加用户信息,失败");
} else {
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(userInfo.getVirtualHostId());
int num = 0;
if (virtualHost != null) {
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());
num = userInfoMapper.insertSelective(userInfo);
ClientUtils.addRabbitUser(userInfo, busServer, password);
ClientUtils.userRelation(userInfo, busServer);
createQueue(userInfo);
} else {
log.error(userInfo.getVirtualHostId() + "->并不是虚拟主机id;故添加失败");
}
return num > 0
? new ResultJson<>("200", "添加用户信息,成功")
: new ResultJson<>("500", "添加用户信息,失败");
}
userInfo.setId(IdUtils.generateId());
userInfo.setPassword(DigestUtils.md5DigestAsHex(userInfo.getPassword().getBytes()));
int num = userInfoMapper.insertSelective(userInfo);
// 1.根据用户信息,在MQ创建用户
addMQUser(userInfo, password);
// 3.在对应虚拟机下创建队列
createQueue(userInfo);
return num > 0
? new ResultJson<>("200", "添加用户信息,成功")
: new ResultJson<>("500", "添加用户信息,失败");
}
/**
... ... @@ -121,9 +171,8 @@ public class UserInfoServiceImpl implements UserInfoService {
{
BusQueue busQueue = BusQueue.builder()
.id(IdUtils.generateId())
.userId(userInfo.getId())
.username(userInfo.getUsername())
.queueName(userInfo.getUsername() + "_R")
.queueName(userInfo.getVirtualHostName() + "_" + userInfo.getUsername() + "_R")
.virtualHostId(userInfo.getVirtualHostId())
.durability(true)
.autoDelete(false)
... ... @@ -132,36 +181,6 @@ public class UserInfoServiceImpl implements UserInfoService {
busQueueService.insertSelective(busQueue);
}
/**
* 添加MQ用户信息,并配置MQ用户与虚拟主机的关系
*
* @param userInfo {@link UserInfo}
*/
public void addMQUser(UserInfo userInfo, String password) throws MalformedURLException, URISyntaxException
{
String username = userInfo.getUsername();
String virtualHostName = userInfo.getVirtualHostName();
String url = "http://" + host + ":15672/api";
Client client = new Client(url, rabbitUsername, rabbitPassword);
ArrayList<String> list = new ArrayList<>();
client.createUser(username, password.toCharArray(), list);
UserPermissions p = new UserPermissions();
p.setConfigure(username + ".*");
p.setRead(username + ".*");
p.setWrite(username + ".*");
client.updatePermissions(virtualHostName, username, p);
TopicPermissions topicPermissions = new TopicPermissions();
topicPermissions.setVhost(virtualHostName);
topicPermissions.setExchange("");
topicPermissions.setRead(".*");
topicPermissions.setWrite(".*");
client.updateTopicPermissions(virtualHostName, username, topicPermissions);
}
@Override
public UserInfo selectByPrimaryKey(String id)
{
... ... @@ -169,12 +188,6 @@ public class UserInfoServiceImpl implements UserInfoService {
}
@Override
public UserInfo selectByUsername(String username)
{
return userInfoMapper.selectByUsername(username);
}
@Override
public ResultJson updateByPrimaryKeySelective(UserInfo userInfo)
{
if (StringUtil.isNullOrEmpty(userInfo.getId())) {
... ... @@ -189,7 +202,7 @@ public class UserInfoServiceImpl implements UserInfoService {
}
/**
* 校验用户名称是否已经存在
* 校验用户信息
*/
public ResultJson validateUser(UserInfo userInfo)
{
... ... @@ -199,6 +212,7 @@ public class UserInfoServiceImpl implements UserInfoService {
if (StringUtil.isNullOrEmpty(userInfo.getServerName()) || StringUtil.isNullOrEmpty(userInfo.getVirtualHostName())) {
return new ResultJson<>("400", "服务器和虚拟主机,不能为空");
}
String userId = userInfo.getId();
if (!StringUtil.isNullOrEmpty(userId)) {
UserInfo oldUserInfo = userInfoMapper.selectByPrimaryKey(userId);
... ... @@ -207,9 +221,9 @@ public class UserInfoServiceImpl implements UserInfoService {
}
return ResultJson.success("通过校验");
} else {
List<UserInfo> userInfos = userInfoMapper.selectUserExist(userInfo.getUsername());
List<UserInfo> userInfos = userInfoMapper.validateUserInfo(userInfo);
return userInfos.size() > 0
? new ResultJson<>("400", "该用户,已存在")
? new ResultJson<>("400", "该用户信息,已存在")
: ResultJson.success("通过校验");
}
}
... ... @@ -233,7 +247,7 @@ public class UserInfoServiceImpl implements UserInfoService {
}
@Override
public ResultJson updatePassword(UserInfo userInfo) throws MalformedURLException, URISyntaxException
public ResultJson updatePassword(UserInfo userInfo) throws IOException, URISyntaxException
{
if (StringUtil.isNullOrEmpty(userInfo.getUsername()) || StringUtil.isNullOrEmpty(userInfo.getPassword())) {
return new ResultJson<>("400", "用户名和密码,不能为空");
... ... @@ -241,25 +255,70 @@ public class UserInfoServiceImpl implements UserInfoService {
if (userInfoMapper.selectUserExist(userInfo.getUsername()).size() == 0) {
return new ResultJson<>("400", "该用户不存在");
}
UserInfo oldUserInfo = userInfoMapper.selectByUsername(userInfo.getUsername());
oldUserInfo.setPassword(DigestUtils.md5DigestAsHex(userInfo.getPassword().getBytes()));
int num = userInfoMapper.updateByPrimaryKeySelective(oldUserInfo);
// 在这里修改MQ用户密码
Client client = connectClient();
ArrayList<String> tags = new ArrayList<>();
client.updateUser(userInfo.getUsername(), userInfo.getPassword().toCharArray(), tags);
return num > 0
? new ResultJson<>("200", userInfo.getUsername() + "用户:修改密码成功!")
: new ResultJson<>("500", userInfo.getUsername() + "用户:修改密码失败!");
BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId());
String newPassword = userInfo.getPassword();
ClientUtils.updatePassword(busServer, userInfo.getUsername(), newPassword);
return new ResultJson<>("200", "修改密码成功");
}
public Client connectClient() throws MalformedURLException, URISyntaxException
@Override
public ResultJson selectUserInfoList(UserInfo userInfo, Integer pageNum, Integer pageSize)
{
String url = "http://" + host + ":15672/api";
Client client = new Client(url, rabbitUsername, rabbitPassword);
return client;
PageHelper.startPage(pageNum, pageSize);
List<UserInfo> userInfoList = userInfoMapper.selectUserInfoList(userInfo);
PageInfo<UserInfo> pageInfo = new PageInfo<>(userInfoList);
return pageInfo.getTotal() > 0
? new ResultJson<>("200", "查询用户信息列表,成功!", pageInfo)
: new ResultJson<>("500", "查询用户信息列表,失败!");
}
/**
* 删除根据用户名删除该用户的所有关系
* <p>
* QM服务器上删除该用户(会自动删除该用户关系)
* <p>
* MQ服务器(以及数据库)删除该用户对应队列(日后需要时,打开注释,即可)
*/
@Override
public ResultJson deleteUserInfo(UserInfo userInfo) throws IOException, URISyntaxException
{
String username = userInfo.getUsername();
List<UserInfo> userInfoList = userInfoMapper.selectByUsername(userInfo.getUsername());
int num = userInfoMapper.deleteByUsername(username);
for (UserInfo item : userInfoList) {
BusServer busServer = busServerService.selectByPrimaryKey(item.getServerId());
ClientUtils.deleteMQUser(username, busServer);
}
// List<BusQueue> queueList = busQueueService.selectByUsername(username);
// for (BusQueue queue : queueList) {
// busQueueService.deleteByPrimaryKey(queue.getId());
// }
return num > 0
? new ResultJson<>("200", "删除用户信息,成功!")
: new ResultJson<>("500", "删除用户信息,失败!");
}
/**
* 删除用户关系(数据库 and MQ服务器)
*
* @param userInfo {@link UserInfo}
* @return 返回结果
* @throws IOException 输入输出异常
* @throws URISyntaxException URI语法异常
*/
@Override
public ResultJson deleteUserRelation(UserInfo userInfo) throws IOException, URISyntaxException
{
int num = userInfoMapper.deleteByPrimaryKey(userInfo.getId());
BusServer busServer = busServerService.selectByPrimaryKey(userInfo.getServerId());
ClientUtils.clearPermissions(busServer, userInfo.getVirtualHostName(), userInfo.getUsername());
return num > 0
? new ResultJson<>("200", "删除用户关系,成功!")
: new ResultJson<>("500", "删除用户关系,失败!");
}
}
... ...
... ... @@ -110,13 +110,13 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
String queueId = userMessageBinding.getQueueId();
String exchangeId = userMessageBinding.getExchangeId();
String routingKeyId = userMessageBinding.getRoutingKeyId();
String userId = userMessageBinding.getUserId();
String username = userMessageBinding.getUsername();
String splitItem = ",";
// 循环最外层,userId
if (userId.contains(splitItem)) {
String[] split_userId = userId.split(splitItem);
for (int i = 0; i < split_userId.length; i++) {
// 循环最外层,username
if (username.contains(splitItem)) {
String[] split_username = username.split(splitItem);
for (int i = 0; i < split_username.length; i++) {
// 循环第二层,exchangeId
if (exchangeId.contains(splitItem)) {
String[] split_exchangeId = exchangeId.split(splitItem);
... ... @@ -129,7 +129,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
if (queueId.contains(splitItem)) {
String[] split_queueId = queueId.split(splitItem);
for (int l = 0; l < split_queueId.length; l++) {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setExchangeId(split_exchangeId[j]);
userMessageBinding.setRoutingKeyId(split_routingKeyId[k]);
userMessageBinding.setQueueId(split_queueId[l]);
... ... @@ -139,7 +139,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
}
}
} else {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setExchangeId(split_exchangeId[j]);
userMessageBinding.setRoutingKeyId(split_routingKeyId[k]);
int num = nextValidateAndFill(userMessageBinding);
... ... @@ -153,7 +153,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
if (queueId.contains(splitItem)) {
String[] split_queueId = queueId.split(splitItem);
for (int l = 0; l < split_queueId.length; l++) {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setExchangeId(split_exchangeId[j]);
userMessageBinding.setQueueId(split_queueId[l]);
int num = nextValidateAndFill(userMessageBinding);
... ... @@ -162,7 +162,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
}
}
} else {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setExchangeId(split_exchangeId[j]);
int num = nextValidateAndFill(userMessageBinding);
if (num > 0) {
... ... @@ -181,7 +181,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
if (queueId.contains(splitItem)) {
String[] split_queueId = queueId.split(splitItem);
for (int l = 0; l < split_queueId.length; l++) {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setRoutingKeyId(split_routingKeyId[k]);
userMessageBinding.setQueueId(split_queueId[l]);
int num = nextValidateAndFill(userMessageBinding);
... ... @@ -190,7 +190,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
}
}
} else {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setRoutingKeyId(split_routingKeyId[k]);
int num = nextValidateAndFill(userMessageBinding);
if (num > 0) {
... ... @@ -203,7 +203,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
if (queueId.contains(splitItem)) {
String[] split_queueId = queueId.split(splitItem);
for (int l = 0; l < split_queueId.length; l++) {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
userMessageBinding.setQueueId(split_queueId[l]);
int num = nextValidateAndFill(userMessageBinding);
if (num > 0) {
... ... @@ -211,7 +211,7 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
}
}
} else {
userMessageBinding.setUserId(split_userId[i]);
userMessageBinding.setUsername(split_username[i]);
int num = nextValidateAndFill(userMessageBinding);
if (num > 0) {
index = index + num;
... ... @@ -352,30 +352,20 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
*/
public UserMessageBinding umb_fillName(UserMessageBinding userMessageBinding)
{
// 增加之设置id
userMessageBinding.setId(IdUtils.generateId());
// 填充,用户名称
UserInfo userInfo = userInfoService.selectByPrimaryKey(userMessageBinding.getUserId());
userMessageBinding.setUsername(userInfo.getUsername());
// 填充,服务器名称
BusServer busServer = busServerService.selectByPrimaryKey(userMessageBinding.getServerId());
userMessageBinding.setServerName(busServer.getServerName());
// 填充,虚拟主机名称
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(userMessageBinding.getVirtualHostId());
userMessageBinding.setVirtualHostName(virtualHost.getVirtualHostName());
// 填充,交换机名称
BusExchange busExchange = busExchangeService.selectByPrimaryKey(userMessageBinding.getExchangeId());
userMessageBinding.setExchangeName(busExchange.getExchangeName());
// 填充,队列名称
BusQueue busQueue = busQueueService.selectByPrimaryKey(userMessageBinding.getQueueId());
userMessageBinding.setQueueName(busQueue.getQueueName());
// 填充,路由键名称
RoutingKey routingKey = routingKeyService.selectByPrimaryKey(userMessageBinding.getRoutingKeyId());
userMessageBinding.setRoutingKeyName(routingKey.getRoutingKeyName());
... ... @@ -408,8 +398,8 @@ public class UserMessageBindingServiceImpl implements UserMessageBindingService
log.error(userMessageBinding + "--> 该绑定关系已存在");
return 0;
} else if (validate == null) {
// 此处添加MQ服务器上的绑定关系
UserMessageBinding completeBinding = umb_fillName(userMessageBinding);
// MQ服务器上进行绑定关系
rabbitUtils.toCreateBinding(completeBinding);
return userMessageBindingMapper.insertSelective(completeBinding);
} else {
... ...
... ... @@ -254,9 +254,16 @@
<if test="virtualHostId != null and virtualHostId != ''">
virtual_host_id = #{virtualHostId,jdbcType=VARCHAR}
</if>
<if test="userId != null and userId != ''">
and user_id = #{userId,jdbcType=VARCHAR}
<if test="username != null and username != ''">
and username = #{username,jdbcType=VARCHAR}
</if>
</where>
</select>
<select id="selectByUsername" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from bus_queue
where username = #{username,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sunyo.wlpt.message.bus.service.mapper.UserInfoMapper">
<cache type="com.sunyo.wlpt.message.bus.service.cache.RedisCache"/>
<cache-ref namespace="com.sunyo.wlpt.message.bus.service.mapper.VirtualHostMapper"/>
<resultMap id="BaseResultMap" type="com.sunyo.wlpt.message.bus.service.domain.UserInfo">
<!--@mbg.generated-->
<!--@Table user_info-->
... ... @@ -35,6 +35,11 @@
from user_info
where id = #{id,jdbcType=VARCHAR}
</delete>
<delete id="deleteByUsername" parameterType="java.lang.String">
delete
from user_info
where username = #{username,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.domain.UserInfo">
<!--@mbg.generated-->
insert into user_info (id, username, `password`,
... ... @@ -204,4 +209,45 @@
from user_info
where username = #{username,jdbcType=VARCHAR}
</select>
<select id="selectUserInfoList" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_info
<where>
<if test="username != null and username != ''">
username = #{username,jdbcType=VARCHAR}
</if>
<if test="serverName != null and serverName != ''">
and server_name = #{serverName,jdbcType=VARCHAR}
</if>
<if test="virtualHostName != null and virtualHostName != ''">
and virtual_host_name = #{virtualHostName,jdbcType=VARCHAR}
</if>
</where>
</select>
<select id="validateUserInfo" resultType="com.sunyo.wlpt.message.bus.service.domain.UserInfo">
select
<include refid="Base_Column_List"/>
from user_info
<where>
username = #{username,jdbcType=VARCHAR}
and server_name = #{serverName,jdbcType=VARCHAR}
and virtual_host_name = #{virtualHostName,jdbcType=VARCHAR}
</where>
</select>
<select id="selectByBusQueue" parameterType="com.sunyo.wlpt.message.bus.service.domain.BusQueue"
resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_info
<where>
<!-- username必须得存在 -->
username = #{username,jdbcType=VARCHAR}
<if test="virtualHostId != null and virtualHostId != ''">
and virtual_host_id = #{virtualHostId,jdbcType=VARCHAR}
</if>
</where>
</select>
</mapper>
\ No newline at end of file
... ...