You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
6.3 KiB
133 lines
6.3 KiB
2 years ago
|
package com.fr.plugin.user.tuomin.controller;
|
||
|
|
||
|
|
||
|
import com.fr.config.Configuration;
|
||
|
import com.fr.decision.authority.AuthorityContext;
|
||
|
import com.fr.decision.authority.base.constant.type.operation.ManualOperationType;
|
||
|
import com.fr.decision.config.Encryption;
|
||
|
import com.fr.decision.config.EncryptionConfig;
|
||
|
import com.fr.decision.config.SystemConfig;
|
||
|
import com.fr.decision.config.UserDataSetConfig;
|
||
|
import com.fr.decision.sync.SyncDetail;
|
||
|
import com.fr.decision.sync.SyncUserStatus;
|
||
|
import com.fr.decision.sync.result.SyncResultData;
|
||
|
import com.fr.decision.webservice.Response;
|
||
|
import com.fr.decision.webservice.annotation.DecisionControllerLog;
|
||
|
import com.fr.decision.webservice.annotation.LoginStatusChecker;
|
||
|
import com.fr.decision.webservice.annotation.VisitRefer;
|
||
|
import com.fr.decision.webservice.bean.user.UserDataSetBean;
|
||
|
import com.fr.decision.webservice.bean.user.UserImportOperation;
|
||
|
import com.fr.decision.webservice.exception.user.EncryptChangeUserNotCleanupException;
|
||
|
import com.fr.decision.webservice.v10.login.LoginService;
|
||
|
import com.fr.decision.webservice.v10.user.UserService;
|
||
|
import com.fr.general.ComparatorUtils;
|
||
|
import com.fr.intelligence.IntelligenceRuntimeException;
|
||
|
import com.fr.log.FineLoggerFactory;
|
||
|
import com.fr.record.analyzer.EnableMetrics;
|
||
|
import com.fr.stable.query.QueryFactory;
|
||
|
import com.fr.stable.query.restriction.RestrictionFactory;
|
||
|
import com.fr.third.springframework.stereotype.Controller;
|
||
|
import com.fr.third.springframework.web.bind.annotation.*;
|
||
|
import com.fr.transaction.Configurations;
|
||
|
import com.fr.transaction.Worker;
|
||
|
import com.fr.transaction.WorkerAdaptor;
|
||
|
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
|
||
|
@EnableMetrics
|
||
|
@Controller
|
||
|
@LoginStatusChecker(
|
||
|
required = false
|
||
|
)
|
||
|
@RequestMapping({"/{version}"})
|
||
|
public class UserTMController {
|
||
|
|
||
|
@RequestMapping(
|
||
|
value = {"/dataset/newUsers"},
|
||
|
method = {RequestMethod.POST}
|
||
|
)
|
||
|
|
||
|
@VisitRefer(
|
||
|
refer = {"decision-management-user-add"}
|
||
|
)
|
||
|
@ResponseBody
|
||
|
public Response importUser(HttpServletRequest req, HttpServletResponse res, @PathVariable("version") String version, @RequestBody UserDataSetBean userDataSet, @RequestParam(value = "importOp",required = false,defaultValue = "0") int importOp) throws Exception {
|
||
|
String currentUser = LoginService.getInstance().getUserNameFromRequest(req);
|
||
|
FineLoggerFactory.getLogger().info("导入数据......");
|
||
|
SyncUserStatus status = importUsers(currentUser, userDataSet, UserImportOperation.parse(importOp));
|
||
|
if(status.getResultData().getSuccessUserCount() == -100){
|
||
|
return Response.error("500","导入失败,用户密码不满足密码强度");
|
||
|
}
|
||
|
else{
|
||
|
return Response.ok(status);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
public SyncUserStatus importUsers(String currentUserName, UserDataSetBean userDataSetBean, UserImportOperation userImportOperation) throws Exception {
|
||
|
Encryption oldEncryption = EncryptionConfig.getInstance().getEncryption(ManualOperationType.KEY);
|
||
|
int oldEmbedEncryption = oldEncryption.getEncryption();
|
||
|
final int newEmbedEncryption = userDataSetBean.getEncryption();
|
||
|
final String newEmbedCustomEncrypt = userDataSetBean.getCustomEncrypt();
|
||
|
boolean encryptionChanged = !ComparatorUtils.equals(oldEmbedEncryption, newEmbedEncryption) || !ComparatorUtils.equals(oldEncryption.getCustomEncrypt(), userDataSetBean.getCustomEncrypt());
|
||
|
userDataSetBean.setTurnOn(false);
|
||
|
if (userImportOperation != UserImportOperation.CLEAR && encryptionChanged) {
|
||
|
throw new EncryptChangeUserNotCleanupException();
|
||
|
} else {
|
||
|
if (userImportOperation == UserImportOperation.CLEAR) {
|
||
|
UserService.getInstance().deleteAllCommonUsers((String)UserService.getInstance().getAdminUserNameList().get(0));
|
||
|
AuthorityContext.getInstance().getCustomRoleController().remove(QueryFactory.create().addRestriction(RestrictionFactory.eq("creationType", ManualOperationType.KEY)).addRestriction(RestrictionFactory.neq("id", "super-user-custom-role")));
|
||
|
AuthorityContext.getInstance().getDepartmentController().remove(QueryFactory.create().addRestriction(RestrictionFactory.eq("creationType", ManualOperationType.KEY)));
|
||
|
AuthorityContext.getInstance().getPostController().remove(QueryFactory.create().addRestriction(RestrictionFactory.eq("creationType", ManualOperationType.KEY)));
|
||
|
}
|
||
|
|
||
|
Configurations.update(new Worker() {
|
||
|
public void run() {
|
||
|
Encryption embedEncrypt = new Encryption();
|
||
|
embedEncrypt.setEncryption(newEmbedEncryption);
|
||
|
embedEncrypt.setCustomEncrypt(newEmbedCustomEncrypt);
|
||
|
EncryptionConfig.getInstance().removeEncryption(ManualOperationType.KEY);
|
||
|
EncryptionConfig.getInstance().setEncryption(ManualOperationType.KEY, embedEncrypt);
|
||
|
}
|
||
|
|
||
|
public Class<? extends Configuration>[] targets() {
|
||
|
return new Class[]{UserDataSetConfig.class, EncryptionConfig.class};
|
||
|
}
|
||
|
});
|
||
|
|
||
|
SyncUserStatus var10;
|
||
|
try {
|
||
|
SyncDetail detail = SyncDetail.parse(userDataSetBean);
|
||
|
SyncResultData syncResultData = AuthorityContext.getInstance().doPersonnelWork(TableDataSyncAction.create(detail));
|
||
|
SyncUserStatus var11 = (new SyncUserStatus()).resultData(syncResultData);
|
||
|
return var11;
|
||
|
} catch (IntelligenceRuntimeException var15) {
|
||
|
var10 = (new SyncUserStatus()).status(SyncUserStatus.Status.FAIL).error(var15);
|
||
|
} finally {
|
||
|
if (userImportOperation == UserImportOperation.CLEAR && encryptionChanged) {
|
||
|
class NamelessClass_1 extends WorkerAdaptor {
|
||
|
NamelessClass_1(Class x0, Class... x1) {
|
||
|
super(x0, x1);
|
||
|
}
|
||
|
|
||
|
public void run() {
|
||
|
SystemConfig.getInstance().setServerInitStatus("fail");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Configurations.update(new NamelessClass_1(SystemConfig.class, new Class[0]));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return var10;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|