作者 王勇

编辑用户关系,完成

... ... @@ -24,6 +24,13 @@ public interface UserInfoMapper {
int deleteByPrimaryKey(String id);
/**
* 批量删除
* @param ids id数组
* @return
*/
int batchRemoveByIds(String[] ids);
/**
* insert record to table
*
* @param record the record
... ...
... ... @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeoutException;
... ... @@ -220,14 +221,112 @@ public class UserInfoServiceImpl implements UserInfoService {
}
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public ResultJson updateByPrimaryKeySelective(UserInfo userInfo)
{
if (StringUtil.isNullOrEmpty(userInfo.getId())) {
String id = userInfo.getId();
String username = userInfo.getUsername();
String serverName = userInfo.getServerName();
String virtualHostId = userInfo.getVirtualHostId();
String div = ",";
if (StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(username) || StringUtil.isNullOrEmpty(serverName)) {
return new ResultJson<>("400", "该用户不存在");
}
ResultJson validateResult = validateUser(userInfo);
int num = userInfoMapper.updateByPrimaryKeySelective(userInfo);
// id是1个
if (!id.contains(div)) {
// 根据id,获取到没有选择之前的详细信息
UserInfo oldUserInfo = userInfoMapper.selectByPrimaryKey(id);
String oldVirtualHostId = oldUserInfo.getVirtualHostId();
// id是1个,虚拟主机id是1个
if (!virtualHostId.contains(div)) {
if (virtualHostId.equals(oldVirtualHostId)) {
return new ResultJson<>("200", "修改用户信息,成功");
} else {
userInfo.setVirtualHostId(virtualHostId);
userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(virtualHostId).getVirtualHostName());
return userInfoMapper.updateByPrimaryKeySelective(userInfo) > 0
? new ResultJson<>("200", "修改用户信息,成功")
: new ResultJson<>("500", "修改用户信息,失败");
}
}
// id是1个,虚拟主机id是多个
else {
int num = 0;
String[] vHostIds = virtualHostId.split(div);
List<String> vHostIdList = Arrays.asList(vHostIds);
// 选择的虚拟主机id,包含原来的id
if (vHostIdList.contains(oldVirtualHostId)) {
for (String vHostId : vHostIdList) {
if (vHostId.equals(oldVirtualHostId)) {
continue;
}
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(vHostId);
if (virtualHost == null) {
continue;
}
userInfo.setId(IdUtils.generateId());
userInfo.setVirtualHostId(vHostId);
userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(vHostId).getVirtualHostName());
num += userInfoMapper.insertSelective(userInfo);
}
return num > 0 ? new ResultJson<>("200", "修改用户信息,成功")
: new ResultJson<>("500", "修改用户信息,失败");
} else {
for (String vHostId : vHostIdList) {
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(vHostId);
if (virtualHost == null) {
continue;
}
userInfo.setId(IdUtils.generateId());
userInfo.setVirtualHostId(vHostId);
userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(vHostId).getVirtualHostName());
num += userInfoMapper.insertSelective(userInfo);
}
userInfoMapper.deleteByPrimaryKey(id);
return num > 0 ? new ResultJson<>("200", "修改用户信息,成功")
: new ResultJson<>("500", "修改用户信息,失败");
}
}
}
// id是多个
List<UserInfo> userInfoList = userInfoMapper.selectByUsernameAndServerName(username, serverName);
int num = 0;
// 虚拟主机id是一个
if (!virtualHostId.contains(div)) {
String[] deleteIds = new String[userInfoList.size()];
for (int i = 0; i < userInfoList.size(); i++) {
deleteIds[i] = userInfoList.get(i).getId();
}
userInfoMapper.batchRemoveByIds(deleteIds);
userInfo.setId(IdUtils.generateId());
userInfo.setVirtualHostId(virtualHostId);
userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(virtualHostId).getVirtualHostName());
num = userInfoMapper.insertSelective(userInfo);
}
// 虚拟主机id是多个
else {
String[] deleteIds = new String[userInfoList.size()];
for (int i = 0; i < userInfoList.size(); i++) {
deleteIds[i] = userInfoList.get(i).getId();
}
userInfoMapper.batchRemoveByIds(deleteIds);
String[] virtualHostIds = virtualHostId.split(div);
for (int i = 0; i < virtualHostIds.length; i++) {
VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(virtualHostIds[i]);
if (virtualHost == null) {
continue;
}
userInfo.setId(IdUtils.generateId());
userInfo.setVirtualHostId(virtualHostIds[i]);
userInfo.setVirtualHostName(virtualHost.getVirtualHostName());
num += userInfoMapper.insertSelective(userInfo);
}
}
return num > 0
? new ResultJson<>("200", "修改用户信息,成功")
: new ResultJson<>("500", "修改用户信息,失败");
... ...
... ... @@ -84,7 +84,7 @@
from elastic_search_info
where id in
<foreach collection="array" open="(" close=")" separator="," item="id">
#{id}
#{id,jdbcType=VARCHAR}
</foreach>
</delete>
... ...
... ... @@ -62,6 +62,14 @@
from user_info
where virtual_host_name = #{virtualHostName,jdbcType=VARCHAR}
</delete>
<delete id="batchRemoveByIds" parameterType="java.lang.String">
delete
from user_info
where id in
<foreach collection="array" open="(" close=")" separator="," item="id">
#{id,jdbcType=VARCHAR}
</foreach>
</delete>
<insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.domain.UserInfo">
... ...