|
@@ -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", "修改用户信息,失败");
|