|
@@ -1,22 +1,28 @@
|
|
|
package com.uas.sso.sso.backend.service.impl;
|
|
package com.uas.sso.sso.backend.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.sso.core.Const;
|
|
import com.uas.sso.core.Const;
|
|
|
import com.uas.sso.core.Status;
|
|
import com.uas.sso.core.Status;
|
|
|
import com.uas.sso.dao.AppDao;
|
|
import com.uas.sso.dao.AppDao;
|
|
|
import com.uas.sso.dao.UserDao;
|
|
import com.uas.sso.dao.UserDao;
|
|
|
|
|
+import com.uas.sso.dao.UserValidDao;
|
|
|
import com.uas.sso.entity.App;
|
|
import com.uas.sso.entity.App;
|
|
|
import com.uas.sso.entity.User;
|
|
import com.uas.sso.entity.User;
|
|
|
import com.uas.sso.entity.UserRecord;
|
|
import com.uas.sso.entity.UserRecord;
|
|
|
|
|
+import com.uas.sso.entity.UserValid;
|
|
|
import com.uas.sso.entity.Userspace;
|
|
import com.uas.sso.entity.Userspace;
|
|
|
import com.uas.sso.sso.backend.AuthenticationUtils;
|
|
import com.uas.sso.sso.backend.AuthenticationUtils;
|
|
|
import com.uas.sso.sso.backend.dto.AddNewUserInfo;
|
|
import com.uas.sso.sso.backend.dto.AddNewUserInfo;
|
|
|
import com.uas.sso.sso.backend.dto.UpdateUserInfo;
|
|
import com.uas.sso.sso.backend.dto.UpdateUserInfo;
|
|
|
import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
|
|
import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
|
|
|
import com.uas.sso.sso.backend.service.UserBackendService;
|
|
import com.uas.sso.sso.backend.service.UserBackendService;
|
|
|
|
|
+import com.uas.sso.sso.backend.util.JacksonUtils;
|
|
|
import com.uas.sso.util.InfoAsyncUtils;
|
|
import com.uas.sso.util.InfoAsyncUtils;
|
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
import javax.persistence.criteria.CriteriaBuilder;
|
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
import javax.persistence.criteria.CriteriaQuery;
|
|
@@ -25,8 +31,11 @@ import javax.persistence.criteria.Root;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
|
|
+import org.springframework.data.domain.Sort.Direction;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.util.Assert;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
@@ -42,10 +51,13 @@ public class UserBackendServiceImpl implements UserBackendService {
|
|
|
|
|
|
|
|
private final UserDao userDao;
|
|
private final UserDao userDao;
|
|
|
|
|
|
|
|
|
|
+ private final UserValidDao userValidDao;
|
|
|
|
|
+
|
|
|
@Autowired
|
|
@Autowired
|
|
|
- public UserBackendServiceImpl(AppDao appDao, UserDao userDao) {
|
|
|
|
|
|
|
+ public UserBackendServiceImpl(AppDao appDao, UserDao userDao, UserValidDao userValidDao) {
|
|
|
this.appDao = appDao;
|
|
this.appDao = appDao;
|
|
|
this.userDao = userDao;
|
|
this.userDao = userDao;
|
|
|
|
|
+ this.userValidDao = userValidDao;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -175,7 +187,7 @@ public class UserBackendServiceImpl implements UserBackendService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public Boolean modifyUserInfo(UpdateUserInfo userInfo) {
|
|
|
|
|
|
|
+ public User modifyUserInfo(UpdateUserInfo userInfo) {
|
|
|
|
|
|
|
|
User existUser = userDao.findOne(userInfo.getUserUU());
|
|
User existUser = userDao.findOne(userInfo.getUserUU());
|
|
|
if (existUser == null) {
|
|
if (existUser == null) {
|
|
@@ -200,7 +212,7 @@ public class UserBackendServiceImpl implements UserBackendService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
userDao.save(existUser);
|
|
userDao.save(existUser);
|
|
|
- return true;
|
|
|
|
|
|
|
+ return existUser;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -232,6 +244,47 @@ public class UserBackendServiceImpl implements UserBackendService {
|
|
|
return user;
|
|
return user;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public UserValid loadUserValid(Long userUU) {
|
|
|
|
|
+ Sort sort = new Sort(Direction.DESC, "submitDate");
|
|
|
|
|
+
|
|
|
|
|
+ List<UserValid> validList = userValidDao.findBySubmitterUUAndValidCode(userUU, (short) 1, sort);
|
|
|
|
|
+ return CollectionUtils.isEmpty(validList) ? null : validList.get(0);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public User authUserValid(Long userUU, Long validId, Boolean isPass, String reason) {
|
|
|
|
|
+ User userInfo = userDao.findOne(userUU);
|
|
|
|
|
+ Assert.notNull(userInfo, String.format("用户[%d]不存在", userUU));
|
|
|
|
|
+
|
|
|
|
|
+ UserValid userValid = userValidDao.findOne(validId);
|
|
|
|
|
+ Assert.notNull(userValid, "用户身份认证信息不能为空");
|
|
|
|
|
+ Assert.isTrue(userValid.getValidCode() == 1, "用户身份认证必须为待认证状态");
|
|
|
|
|
+
|
|
|
|
|
+ userValid.setAuditor("系统管理员");
|
|
|
|
|
+ userValid.setValidCode(isPass ? (short) Status.AUTHENTICATED.getCode() : (short) Status.NOT_PASSED.getCode());
|
|
|
|
|
+ userValid.setValidDate(new Timestamp(System.currentTimeMillis()));
|
|
|
|
|
+
|
|
|
|
|
+ // When admin disapproves, only handle user valid info.
|
|
|
|
|
+ if (!isPass) {
|
|
|
|
|
+ Assert.hasText(reason, "用户身份认证不通过时,不通过原因不能为空");
|
|
|
|
|
+ userValid.setInvalidReason(reason);
|
|
|
|
|
+ userValidDao.save(userValid);
|
|
|
|
|
+ return userInfo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Handle user valid and user info.
|
|
|
|
|
+ JSONObject newUser = JacksonUtils.fromJson(userValid.getSubmitInfo(), JSONObject.class);
|
|
|
|
|
+ Assert.notNull(newUser, "用户身份的企业信息不能为空");
|
|
|
|
|
+
|
|
|
|
|
+ userInfo.setRealName(newUser.getString("realName"));
|
|
|
|
|
+ userInfo.setIdCard(newUser.getString("idCard"));
|
|
|
|
|
+ userInfo.setIdentityValidCode(userValid.getValidCode());
|
|
|
|
|
+
|
|
|
|
|
+ userDao.save(userInfo);
|
|
|
|
|
+ return userInfo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void emailHasRegistered(String mobile) {
|
|
private void emailHasRegistered(String mobile) {
|
|
|
User user = userDao.findByMobile(mobile);
|
|
User user = userDao.findByMobile(mobile);
|
|
|
if (user != null) {
|
|
if (user != null) {
|