LoginAccountChange dbChange = this.loginAccountChangeManager.get(change);
if( dbChange == null )
throw new ApplicationException("登录帐户变更信息["+change.getId()+"]不存在!");
LoginAccount dbAcc = loginAccountManager.get(change.getLoginAccount());
LoginAccount newAcc = null;
byte[] newObject = dbChange.getNewObject();
if( newObject != null )
newAcc = (LoginAccount)IoSerialUtil.deserialize(newObject);
if( newObject == null || newAcc == null )
throw new ApplicationException("数据异常,变更登录帐户信息为空!");
boolean passed = AuditResult.LAST_AUDIT_PASSED.equals(audit.getResult());
if( passed && EntityChange.Type.DELETE.equals(dbChange.getType()) ){//删除
dbAcc.setStatus( AuditStatus.DELETE );
}else if( passed && AuditStatus.EFFECTIVE.equals(newAcc.getStatus())){
dbAcc.setPartyId( newAcc.getPartyId() );
dbAcc.setPeriod(newAcc.getPeriod());
dbAcc.setEmail( newAcc.getEmail());
dbAcc.setRoles( newAcc.getRoles());
dbAcc.setDescription( newAcc.getDescription() );
}else if( passed ){
dbAcc.setStatus( AuditStatus.EFFECTIVE );
}else if( !passed && AuditStatus.NEW.equals( newAcc.getStatus() )){
dbAcc.setStatus( AuditStatus.AUDIT_REJECT );
}
loginAccountManager.update(dbAcc);
//dao.create(audit);//TODO 改为工作流,不需要记录审核日志