|
|
@@ -1,18 +1,23 @@
|
|
|
package com.uas.sso.sso.backend.service.impl;
|
|
|
|
|
|
import com.uas.sso.dao.ChangeAdminDao;
|
|
|
+import com.uas.sso.dao.UserDao;
|
|
|
import com.uas.sso.dao.UserspaceDao;
|
|
|
import com.uas.sso.entity.ChangeAdmin;
|
|
|
+import com.uas.sso.entity.User;
|
|
|
import com.uas.sso.entity.Userspace;
|
|
|
import com.uas.sso.sso.backend.dto.ChangeAdminAudit;
|
|
|
import com.uas.sso.sso.backend.dto.ChangeAdminCommit;
|
|
|
import com.uas.sso.sso.backend.service.ChangeAdminService;
|
|
|
+import java.util.List;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.Assert;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
/**
|
|
|
* An implementations of {@code ChangeAdminService}.
|
|
|
@@ -26,11 +31,14 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
|
|
|
|
|
|
private final UserspaceDao userspaceDao;
|
|
|
|
|
|
+ private final UserDao userDao;
|
|
|
+
|
|
|
@Autowired
|
|
|
public ChangeAdminServiceImpl(ChangeAdminDao changeAdminDao,
|
|
|
- UserspaceDao userspaceDao) {
|
|
|
+ UserspaceDao userspaceDao, UserDao userDao) {
|
|
|
this.changeAdminDao = changeAdminDao;
|
|
|
this.userspaceDao = userspaceDao;
|
|
|
+ this.userDao = userDao;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -40,14 +48,45 @@ public class ChangeAdminServiceImpl implements ChangeAdminService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = RuntimeException.class)
|
|
|
public ChangeAdmin submitChangeAdminRequest(@NotNull ChangeAdminCommit commit) {
|
|
|
|
|
|
ChangeAdmin changeAdmin = commit.generateChangeAdmin();
|
|
|
|
|
|
+ // 验证企业信息有效性
|
|
|
Userspace userspace = userspaceDao.findOne(commit.getSpaceUU());
|
|
|
Assert.notNull(userspace, String.format("企业%d信息不存在", commit.getSpaceUU()));
|
|
|
-
|
|
|
changeAdmin.setUserspace(userspace);
|
|
|
+
|
|
|
+ // 验证是否存在已申请更换记录
|
|
|
+ List<ChangeAdmin> requestChanges = changeAdminDao
|
|
|
+ .findByUserspaceAndValidCode(userspace, (short) 1);
|
|
|
+ if (!CollectionUtils.isEmpty(requestChanges)) {
|
|
|
+ ChangeAdmin request = requestChanges.get(0);
|
|
|
+ throw new IllegalArgumentException(
|
|
|
+ String.format("企业%d用户%s已经申请更换管理员", request.getUserspace().getSpaceUU(),
|
|
|
+ request.getSubmitterName()));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证申请人信息有效性
|
|
|
+ User submitter = userDao.findOne(commit.getSubmitterUU());
|
|
|
+ Assert.notNull(submitter, String.format("申请人%d信息不存在", commit.getSubmitterUU()));
|
|
|
+ Assert.isTrue(userspace.getUsers().contains(submitter),
|
|
|
+ String.format("申请人%d不属于企业%d", commit.getSubmitterUU(), commit.getSpaceUU()));
|
|
|
+ changeAdmin.setSubmitterName(submitter.getRealName());
|
|
|
+
|
|
|
+ // 获取前管理员UU
|
|
|
+ User admin = userspace.getAdmin();
|
|
|
+ if (admin != null) {
|
|
|
+ changeAdmin.setBeforeAdminUU(userspace.getAdmin().getUserUU());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证新管理员是否合法
|
|
|
+ admin = userDao.findOne(commit.getAfterAdminUU());
|
|
|
+ Assert.notNull(admin, String.format("管理员用户%d信息不存在", commit.getAfterAdminUU()));
|
|
|
+ Assert.isTrue(userspace.getUsers().contains(admin),
|
|
|
+ String.format("管理员用户%d不属于企业%d", commit.getSubmitterUU(), commit.getSpaceUU()));
|
|
|
+
|
|
|
changeAdmin = changeAdminDao.save(changeAdmin);
|
|
|
|
|
|
return changeAdmin;
|