作者 王勇

编辑用户关系,完成

@@ -24,6 +24,13 @@ public interface UserInfoMapper { @@ -24,6 +24,13 @@ public interface UserInfoMapper {
24 int deleteByPrimaryKey(String id); 24 int deleteByPrimaryKey(String id);
25 25
26 /** 26 /**
  27 + * 批量删除
  28 + * @param ids id数组
  29 + * @return
  30 + */
  31 + int batchRemoveByIds(String[] ids);
  32 +
  33 + /**
27 * insert record to table 34 * insert record to table
28 * 35 *
29 * @param record the record 36 * @param record the record
@@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
27 import javax.annotation.Resource; 27 import javax.annotation.Resource;
28 import java.io.IOException; 28 import java.io.IOException;
29 import java.net.URISyntaxException; 29 import java.net.URISyntaxException;
  30 +import java.util.Arrays;
30 import java.util.List; 31 import java.util.List;
31 import java.util.concurrent.TimeoutException; 32 import java.util.concurrent.TimeoutException;
32 33
@@ -220,14 +221,112 @@ public class UserInfoServiceImpl implements UserInfoService { @@ -220,14 +221,112 @@ public class UserInfoServiceImpl implements UserInfoService {
220 } 221 }
221 222
222 @Override 223 @Override
  224 + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
223 public ResultJson updateByPrimaryKeySelective(UserInfo userInfo) 225 public ResultJson updateByPrimaryKeySelective(UserInfo userInfo)
224 { 226 {
225 - if (StringUtil.isNullOrEmpty(userInfo.getId())) { 227 + String id = userInfo.getId();
  228 + String username = userInfo.getUsername();
  229 + String serverName = userInfo.getServerName();
  230 + String virtualHostId = userInfo.getVirtualHostId();
  231 + String div = ",";
  232 +
  233 + if (StringUtil.isNullOrEmpty(id) || StringUtil.isNullOrEmpty(username) || StringUtil.isNullOrEmpty(serverName)) {
226 return new ResultJson<>("400", "该用户不存在"); 234 return new ResultJson<>("400", "该用户不存在");
227 } 235 }
228 - ResultJson validateResult = validateUser(userInfo);  
229 - int num = userInfoMapper.updateByPrimaryKeySelective(userInfo);  
230 236
  237 + // id是1个
  238 + if (!id.contains(div)) {
  239 + // 根据id,获取到没有选择之前的详细信息
  240 + UserInfo oldUserInfo = userInfoMapper.selectByPrimaryKey(id);
  241 + String oldVirtualHostId = oldUserInfo.getVirtualHostId();
  242 + // id是1个,虚拟主机id是1个
  243 + if (!virtualHostId.contains(div)) {
  244 + if (virtualHostId.equals(oldVirtualHostId)) {
  245 + return new ResultJson<>("200", "修改用户信息,成功");
  246 + } else {
  247 + userInfo.setVirtualHostId(virtualHostId);
  248 + userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(virtualHostId).getVirtualHostName());
  249 + return userInfoMapper.updateByPrimaryKeySelective(userInfo) > 0
  250 + ? new ResultJson<>("200", "修改用户信息,成功")
  251 + : new ResultJson<>("500", "修改用户信息,失败");
  252 + }
  253 + }
  254 + // id是1个,虚拟主机id是多个
  255 + else {
  256 + int num = 0;
  257 + String[] vHostIds = virtualHostId.split(div);
  258 + List<String> vHostIdList = Arrays.asList(vHostIds);
  259 +
  260 + // 选择的虚拟主机id,包含原来的id
  261 + if (vHostIdList.contains(oldVirtualHostId)) {
  262 + for (String vHostId : vHostIdList) {
  263 + if (vHostId.equals(oldVirtualHostId)) {
  264 + continue;
  265 + }
  266 + VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(vHostId);
  267 + if (virtualHost == null) {
  268 + continue;
  269 + }
  270 + userInfo.setId(IdUtils.generateId());
  271 + userInfo.setVirtualHostId(vHostId);
  272 + userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(vHostId).getVirtualHostName());
  273 + num += userInfoMapper.insertSelective(userInfo);
  274 + }
  275 + return num > 0 ? new ResultJson<>("200", "修改用户信息,成功")
  276 + : new ResultJson<>("500", "修改用户信息,失败");
  277 + } else {
  278 + for (String vHostId : vHostIdList) {
  279 + VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(vHostId);
  280 + if (virtualHost == null) {
  281 + continue;
  282 + }
  283 + userInfo.setId(IdUtils.generateId());
  284 + userInfo.setVirtualHostId(vHostId);
  285 + userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(vHostId).getVirtualHostName());
  286 + num += userInfoMapper.insertSelective(userInfo);
  287 + }
  288 + userInfoMapper.deleteByPrimaryKey(id);
  289 + return num > 0 ? new ResultJson<>("200", "修改用户信息,成功")
  290 + : new ResultJson<>("500", "修改用户信息,失败");
  291 + }
  292 + }
  293 + }
  294 +
  295 + // id是多个
  296 + List<UserInfo> userInfoList = userInfoMapper.selectByUsernameAndServerName(username, serverName);
  297 + int num = 0;
  298 + // 虚拟主机id是一个
  299 + if (!virtualHostId.contains(div)) {
  300 + String[] deleteIds = new String[userInfoList.size()];
  301 + for (int i = 0; i < userInfoList.size(); i++) {
  302 + deleteIds[i] = userInfoList.get(i).getId();
  303 + }
  304 + userInfoMapper.batchRemoveByIds(deleteIds);
  305 + userInfo.setId(IdUtils.generateId());
  306 + userInfo.setVirtualHostId(virtualHostId);
  307 + userInfo.setVirtualHostName(virtualHostService.selectByPrimaryKey(virtualHostId).getVirtualHostName());
  308 + num = userInfoMapper.insertSelective(userInfo);
  309 + }
  310 + // 虚拟主机id是多个
  311 + else {
  312 + String[] deleteIds = new String[userInfoList.size()];
  313 + for (int i = 0; i < userInfoList.size(); i++) {
  314 + deleteIds[i] = userInfoList.get(i).getId();
  315 + }
  316 + userInfoMapper.batchRemoveByIds(deleteIds);
  317 +
  318 + String[] virtualHostIds = virtualHostId.split(div);
  319 + for (int i = 0; i < virtualHostIds.length; i++) {
  320 + VirtualHost virtualHost = virtualHostService.selectByPrimaryKey(virtualHostIds[i]);
  321 + if (virtualHost == null) {
  322 + continue;
  323 + }
  324 + userInfo.setId(IdUtils.generateId());
  325 + userInfo.setVirtualHostId(virtualHostIds[i]);
  326 + userInfo.setVirtualHostName(virtualHost.getVirtualHostName());
  327 + num += userInfoMapper.insertSelective(userInfo);
  328 + }
  329 + }
231 return num > 0 330 return num > 0
232 ? new ResultJson<>("200", "修改用户信息,成功") 331 ? new ResultJson<>("200", "修改用户信息,成功")
233 : new ResultJson<>("500", "修改用户信息,失败"); 332 : new ResultJson<>("500", "修改用户信息,失败");
@@ -84,7 +84,7 @@ @@ -84,7 +84,7 @@
84 from elastic_search_info 84 from elastic_search_info
85 where id in 85 where id in
86 <foreach collection="array" open="(" close=")" separator="," item="id"> 86 <foreach collection="array" open="(" close=")" separator="," item="id">
87 - #{id} 87 + #{id,jdbcType=VARCHAR}
88 </foreach> 88 </foreach>
89 </delete> 89 </delete>
90 90
@@ -62,6 +62,14 @@ @@ -62,6 +62,14 @@
62 from user_info 62 from user_info
63 where virtual_host_name = #{virtualHostName,jdbcType=VARCHAR} 63 where virtual_host_name = #{virtualHostName,jdbcType=VARCHAR}
64 </delete> 64 </delete>
  65 + <delete id="batchRemoveByIds" parameterType="java.lang.String">
  66 + delete
  67 + from user_info
  68 + where id in
  69 + <foreach collection="array" open="(" close=")" separator="," item="id">
  70 + #{id,jdbcType=VARCHAR}
  71 + </foreach>
  72 + </delete>
65 73
66 74
67 <insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.domain.UserInfo"> 75 <insert id="insert" parameterType="com.sunyo.wlpt.message.bus.service.domain.UserInfo">