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.
274 lines
10 KiB
274 lines
10 KiB
package com.fr.plugin.ztsso.handler; |
|
|
|
import com.fr.decision.authority.data.User; |
|
import com.fr.decision.fun.impl.BaseHttpHandler; |
|
import com.fr.decision.webservice.bean.user.UserBean; |
|
import com.fr.json.JSONObject; |
|
import com.fr.plugin.ztsso.config.simple.account.PluginSimpleConfig; |
|
import com.fr.plugin.ztsso.utils.*; |
|
import com.fr.third.springframework.web.bind.annotation.RequestMethod; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import java.net.URLEncoder; |
|
import java.util.HashMap; |
|
import java.util.Map; |
|
|
|
public class AcountHandler extends BaseHttpHandler { |
|
|
|
|
|
public AcountHandler() { |
|
} |
|
|
|
@Override |
|
public RequestMethod getMethod() { |
|
return RequestMethod.GET; |
|
} |
|
|
|
@Override |
|
public String getPath() { |
|
return "/account"; |
|
} |
|
|
|
@Override |
|
public boolean isPublic() { |
|
return true; |
|
} |
|
|
|
@Override |
|
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception { |
|
//获取配置参数 |
|
PluginSimpleConfig pluginSimpleConfig = PluginSimpleConfig.getInstance(); |
|
String cosCode = pluginSimpleConfig.getConsumerCode(); |
|
String operaCode = pluginSimpleConfig.getOperationCode(); |
|
Map<String,String> header = new HashMap<String,String>(); |
|
header.put("consumerCode",cosCode); |
|
header.put("operationCode",operaCode); |
|
String sysCode = pluginSimpleConfig.getSystemCode(); |
|
String key = pluginSimpleConfig.getIntegrationKey(); |
|
//获取token |
|
String url = pluginSimpleConfig.getTysf(); |
|
|
|
JSONObject param = new JSONObject(); |
|
param.put("method","login"); |
|
JSONObject tokenRequest = new JSONObject(); |
|
tokenRequest.put("systemCode",sysCode); |
|
tokenRequest.put("integrationKey",key); |
|
tokenRequest.put("force",true); |
|
tokenRequest.put("timestamp",System.currentTimeMillis()); |
|
param.put("request",tokenRequest); |
|
String tokenUrl = url+"?method=login&request="+URLEncoder.encode(tokenRequest.toString()); |
|
// tokenUrl = URLEncoder.encode(tokenUrl,"utf-8"); |
|
|
|
String result = HttpUtils.HttpPostJson(tokenUrl,param.toString(),header); |
|
|
|
if(Utils.isNullStr(result)){ |
|
ResponseUtils.failedResponse(res,"获取token失败"); |
|
return; |
|
} |
|
|
|
JSONObject tokenResult = new JSONObject(result); |
|
|
|
int code = tokenResult.getInt("code"); |
|
boolean success = tokenResult.getBoolean("success"); |
|
if(!success){ |
|
String message = tokenResult.getString("message"); |
|
ResponseUtils.failedResponse(res,"获取token失败:"+message); |
|
return; |
|
} |
|
|
|
//获取下拉数据 |
|
String tokenId = tokenResult.getString("tokenId"); |
|
|
|
JSONObject pullTaskParam = new JSONObject(); |
|
pullTaskParam.put("method","pullTask"); |
|
JSONObject pullTaskRequest = new JSONObject(); |
|
pullTaskRequest.put("tokenId",tokenId); |
|
pullTaskRequest.put("timestamp",System.currentTimeMillis()); |
|
pullTaskParam.put("request",pullTaskRequest); |
|
|
|
String pullUrl = url+"?method=pullTask&request="+URLEncoder.encode(pullTaskRequest.toString()); |
|
// pullUrl = URLEncoder.encode(pullUrl,"utf-8"); |
|
|
|
String pullTaskResultStr = HttpUtils.HttpPostJson(pullUrl,pullTaskParam.toString(),header); |
|
|
|
if(Utils.isNullStr(pullTaskResultStr)){ |
|
ResponseUtils.failedResponse(res,"获取数据失败"); |
|
return; |
|
} |
|
|
|
JSONObject pullTaskResult = new JSONObject(pullTaskResultStr); |
|
|
|
code = pullTaskResult.getInt("code"); |
|
success = pullTaskResult.getBoolean("success"); |
|
if(!success){ |
|
String message = pullTaskResult.getString("message"); |
|
ResponseUtils.failedResponse(res,"获取数据失败:"+message); |
|
return; |
|
} |
|
//根据不同类型进行账户或者组织机构的操作 |
|
String objectType = pullTaskResult.getString("objectType"); |
|
String taskId = pullTaskResult.getString("taskId"); |
|
String guid = pullTaskResult.getString("id"); |
|
if("TARGET_ACCOUNT".equals(objectType)){ |
|
operateAccout(pullTaskResult,res); |
|
}else if("TARGET_ORGANIZATION".equals(objectType)){ |
|
operateOrg(pullTaskResult,res); |
|
} |
|
|
|
//返回下拉完成状态 |
|
JSONObject finishTaskParam = new JSONObject(); |
|
finishTaskParam.put("method","pullFinish"); |
|
JSONObject finishTaskRequest = new JSONObject(); |
|
finishTaskRequest.put("tokenId",tokenId); |
|
finishTaskRequest.put("timestamp",System.currentTimeMillis()); |
|
finishTaskRequest.put("taskId",taskId); |
|
finishTaskRequest.put("success",true); |
|
finishTaskRequest.put("guid",guid); |
|
finishTaskParam.put("request",finishTaskRequest); |
|
|
|
String finishUrl = url+"?method=pullFinish&request="+URLEncoder.encode(finishTaskRequest.toString()); |
|
|
|
String finishResultStr = HttpUtils.HttpPostJson(finishUrl,pullTaskParam.toString(),header); |
|
|
|
if(Utils.isNullStr(finishResultStr)){ |
|
ResponseUtils.failedResponse(res,"下拉完成失败"); |
|
return; |
|
} |
|
|
|
JSONObject finishResult = new JSONObject(finishResultStr); |
|
|
|
success = finishResult.getBoolean("success"); |
|
|
|
if(!success){ |
|
String message = finishResult.getString("message"); |
|
ResponseUtils.failedResponse(res,"下拉完成失败:"+message); |
|
return; |
|
} |
|
//注销登录 |
|
JSONObject loggoutParam = new JSONObject(); |
|
loggoutParam.put("method","logout"); |
|
JSONObject logoutRequest = new JSONObject(); |
|
logoutRequest.put("tokenId",tokenId); |
|
logoutRequest.put("timestamp",System.currentTimeMillis()); |
|
loggoutParam.put("request",logoutRequest); |
|
|
|
String logoutUrl = url+"?method=logout&request="+URLEncoder.encode(logoutRequest.toString()); |
|
|
|
String logoutResultStr = HttpUtils.HttpPostJson(logoutUrl,loggoutParam.toString(),header); |
|
} |
|
|
|
private void operateAccout(JSONObject pullTaskData,HttpServletResponse res) { |
|
FRUtils.FRLogInfo("account"); |
|
String effectOn = pullTaskData.getString("effectOn"); |
|
JSONObject data = pullTaskData.getJSONObject("data"); |
|
String username = data.getString("username"); |
|
String password = data.getString("password"); |
|
String fullname = data.getString("fullname"); |
|
boolean isDisabled = data.getBoolean("isDisabled"); |
|
String email = data.getString("email"); |
|
String mobile = data.getString("mobile"); |
|
|
|
UserBean userBean = new UserBean(); |
|
|
|
userBean.setUsername(username); |
|
userBean.setPassword(Utils.replaceNullStr(password,"123")); |
|
userBean.setRealName(fullname); |
|
userBean.setEnable(isDisabled); |
|
userBean.setEmail(email); |
|
userBean.setMobile(mobile); |
|
|
|
if("CREATE".equals(effectOn)){ |
|
try { |
|
FRUserUtils.addUser(userBean); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"添加用户失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("DISABLED".equals(effectOn)){ |
|
try { |
|
String userId = FRUserUtils.getUserByUserName(username).getId(); |
|
FRUserUtils.forbidUser(userId,false); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"禁用用户失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("ENABLED".equals(effectOn)){ |
|
try { |
|
String userId = FRUserUtils.getUserByUserName(username).getId(); |
|
FRUserUtils.forbidUser(userId,true); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"启用用户失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("DELETED".equals(effectOn)){ |
|
try { |
|
User user = FRUserUtils.getUserByUserName(username); |
|
FRUserUtils.deleteUser(user); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"删除用户失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("UPDATED".equals(effectOn)){ |
|
try { |
|
User user = FRUserUtils.getUserByUserName(username); |
|
UserBean userBean2 = FRUserUtils.getUser(user.getId()); |
|
|
|
userBean2.setRealName(fullname); |
|
userBean2.setEmail(email); |
|
userBean2.setMobile(mobile); |
|
FRUserUtils.updateUser(userBean2); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"修改用户失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
} |
|
|
|
} |
|
|
|
private void operateOrg(JSONObject pullTaskData,HttpServletResponse res) { |
|
FRUtils.FRLogInfo("account"); |
|
String effectOn = pullTaskData.getString("effectOn"); |
|
JSONObject data = pullTaskData.getJSONObject("data"); |
|
String name = data.getString("name"); |
|
String id = data.getString("_organization"); |
|
String parentId = data.getString("_parent"); |
|
|
|
parentId = Utils.replaceNullStr(parentId,"decision-dep-root"); |
|
|
|
FRUtils.FRLogInfo("effectOn:"+effectOn); |
|
|
|
if("CREATED".equals(effectOn)){ |
|
try { |
|
FRDepartmentUtils.addDP(id,parentId,name); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"添加机构失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("DELETED".equals(effectOn)){ |
|
try { |
|
FRDepartmentUtils.deleteDepartment(id); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"删除机构失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
}else if("UPDATED".equals(effectOn)){ |
|
try { |
|
FRDepartmentUtils.updateDP(id,name); |
|
} catch (Exception e) { |
|
String message = Utils.replaceNullStr(e.getMessage(),"修改机构失败"); |
|
ResponseUtils.failedResponse(res,message); |
|
return; |
|
} |
|
} |
|
|
|
} |
|
} |
|
|
|
|