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.
230 lines
10 KiB
230 lines
10 KiB
3 years ago
|
package com.fr.plugin.jsd9683.controller;
|
||
|
|
||
|
|
||
|
import com.fr.decision.authority.data.User;
|
||
|
import com.fr.decision.webservice.CrossDomainResponse;
|
||
|
import com.fr.decision.webservice.Response;
|
||
|
import com.fr.decision.webservice.annotation.LoginStatusChecker;
|
||
|
import com.fr.decision.webservice.bean.user.UserUpdateBean;
|
||
|
import com.fr.decision.webservice.v10.user.UserService;
|
||
|
import com.fr.log.FineLoggerFactory;
|
||
|
import com.fr.plugin.jsd9683.beans.DeleteUserBean;
|
||
|
import com.fr.plugin.jsd9683.beans.ReportFileBean;
|
||
|
import com.fr.stable.StringUtils;
|
||
|
import com.fr.third.springframework.stereotype.Controller;
|
||
|
import com.fr.third.springframework.web.bind.annotation.*;
|
||
|
import com.fr.web.JSONReportUtils;
|
||
|
|
||
|
import com.fr.web.controller.decision.api.auth.LoginResource;
|
||
|
import com.fr.workspace.WorkContext;
|
||
|
|
||
|
import org.apache.catalina.filters.CorsFilter;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
import java.io.File;
|
||
|
import java.io.UnsupportedEncodingException;
|
||
|
import java.util.ArrayList;
|
||
|
|
||
|
@Controller
|
||
|
@LoginStatusChecker(
|
||
|
required = false
|
||
|
)
|
||
|
public class Jsd9683Controller {
|
||
|
|
||
|
@RequestMapping(
|
||
|
value = {"/bg/deleteUserByOrgCodeAndName"},
|
||
|
method = {RequestMethod.POST}
|
||
|
)
|
||
|
@ResponseBody
|
||
|
public Response deleteUserByName(HttpServletRequest req, HttpServletResponse res, @RequestBody DeleteUserBean deleteUserBean ) throws Exception {
|
||
|
FineLoggerFactory.getLogger().info("delete user by post................");
|
||
|
String X_Access_Token = req.getHeader("X-Access-Token");
|
||
|
FineLoggerFactory.getLogger().info("X-Access-Token:"+X_Access_Token);
|
||
|
Response response = deleteUserByUserNameAndOrgCode(deleteUserBean.getUserName(),deleteUserBean.getOrgCode());
|
||
|
return response;
|
||
|
}
|
||
|
|
||
|
@RequestMapping(
|
||
|
value = {"/bg/deleteUserByOrgCodeAndName1"},
|
||
|
method = {RequestMethod.GET}
|
||
|
)
|
||
|
@ResponseBody
|
||
|
public Response deleteUserByNameByGet(HttpServletRequest req, HttpServletResponse res, @RequestParam("userName") String userName,@RequestParam("orgCode") String orgCode) throws Exception {
|
||
|
FineLoggerFactory.getLogger().info("delete user by get................");
|
||
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
||
|
String X_Access_Token = req.getHeader("X-Access-Token");
|
||
|
FineLoggerFactory.getLogger().info("X-Access-Token:"+X_Access_Token);
|
||
|
Response response = deleteUserByUserNameAndOrgCode(userName,orgCode);
|
||
|
// return CrossDomainResponse.create().callbackFuncName(callback).parameter("result", "ok").parameter("status", "success").createCrossDomainResponse();
|
||
|
return response;
|
||
|
}
|
||
|
|
||
|
@RequestMapping(
|
||
|
value = {"/bg/deleteUserByOrgCodeAndName2"},
|
||
|
method = {RequestMethod.GET}
|
||
|
)
|
||
|
@ResponseBody
|
||
|
public String deleteUserByNameByJSONP(HttpServletRequest req, HttpServletResponse res, @RequestParam("userName") String userName,@RequestParam("orgCode") String orgCode,@RequestParam(value = "callback",required = false,defaultValue = "callback") String callback) throws Exception {
|
||
|
FineLoggerFactory.getLogger().info("delete user by jsonp................");
|
||
|
String X_Access_Token = req.getHeader("X-Access-Token");
|
||
|
//获取不到,JSONP不支持在header中加入自定义属性
|
||
|
FineLoggerFactory.getLogger().info("X-Access-Token:"+X_Access_Token);
|
||
|
FineLoggerFactory.getLogger().info("==== deleteUserByName userName:"+userName);
|
||
|
FineLoggerFactory.getLogger().info("==== deleteUserByName orgCode:"+orgCode);
|
||
|
String fineUserName = orgCode + "_" +userName;
|
||
|
User user = UserService.getInstance().getUserByUserName(fineUserName);
|
||
|
if(user == null){
|
||
|
return (new CrossDomainResponse()).callbackFuncName(callback).parameter("status", "fail").parameter("errorCode", "0001").parameter("errorMsg", "user is not exist").createCrossDomainResponse();
|
||
|
}
|
||
|
UserUpdateBean deleteBean = new UserUpdateBean();
|
||
|
String[] removeIds = new String[1];
|
||
|
removeIds[0] = user.getId();
|
||
|
deleteBean.setRemoveUserIds(removeIds);//删除登录用户
|
||
|
UserService.getInstance().deleteUsers(deleteBean);
|
||
|
return CrossDomainResponse.create().callbackFuncName(callback).parameter("message", "ok").parameter("status", "success").createCrossDomainResponse();
|
||
|
}
|
||
|
|
||
|
private Response deleteUserByUserNameAndOrgCode(String userName,String orgCode) throws Exception {
|
||
|
FineLoggerFactory.getLogger().info("==== deleteUserByName userName:"+userName);
|
||
|
FineLoggerFactory.getLogger().info("==== deleteUserByName orgCode:"+orgCode);
|
||
|
String fineUserName = orgCode + "_" +userName;
|
||
|
User user = UserService.getInstance().getUserByUserName(fineUserName);
|
||
|
if(user == null){
|
||
|
return Response.error("0001","user is not exist");
|
||
|
// return (new CrossDomainResponse()).callbackFuncName(callback).parameter("status", "fail").parameter("errorCode", "0001").parameter("errorMsg", "user is not exist").createCrossDomainResponse();
|
||
|
}
|
||
|
UserUpdateBean deleteBean = new UserUpdateBean();
|
||
|
String[] removeIds = new String[1];
|
||
|
removeIds[0] = user.getId();
|
||
|
deleteBean.setRemoveUserIds(removeIds);//删除登录用户
|
||
|
UserService.getInstance().deleteUsers(deleteBean);
|
||
|
return Response.ok("ok");
|
||
|
}
|
||
|
|
||
|
//@RequestParam(value = "callback",required = false,defaultValue = "callback") String callback
|
||
|
@RequestMapping(
|
||
|
value = {"/bg/getReportDirList"},
|
||
|
method = {RequestMethod.GET}
|
||
|
)
|
||
|
@ResponseBody
|
||
|
public Response getReportDirList(HttpServletRequest req, HttpServletResponse res, @RequestParam("name") String name) throws Exception {
|
||
|
|
||
|
String envPath = WorkContext.getCurrent().getPath();
|
||
|
FineLoggerFactory.getLogger().info("envPath:" + envPath);
|
||
|
String webReport = (new File(envPath)).getParent();
|
||
|
FineLoggerFactory.getLogger().info("webReport:" + webReport);
|
||
|
String basePath = webReport + File.separator + "WEB-INF" + File.separator + "reportlets" + File.separator;
|
||
|
File reportDir = new File(basePath);
|
||
|
ArrayList<ReportFileBean> allFiles = new ArrayList<>();
|
||
|
ArrayList<ReportFileBean> allReportFile = new ArrayList<>();
|
||
|
if (reportDir.exists()) {
|
||
|
try {
|
||
|
iterateDir(reportDir, allReportFile, basePath, name);
|
||
|
} catch (UnsupportedEncodingException e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ReportFileBean root = new ReportFileBean();
|
||
|
root.setDir(true);
|
||
|
root.setPreviewUrl("");
|
||
|
root.setChildren(new ArrayList<>());
|
||
|
root.setPath("");
|
||
|
root.setName("root");
|
||
|
|
||
|
if (allReportFile.size() > 0) {
|
||
|
for (ReportFileBean node : allReportFile) {
|
||
|
String path = node.getPath();
|
||
|
FineLoggerFactory.getLogger().info("==== path:" + path);
|
||
|
if (path.indexOf(File.separator) == -1 ) { //根目录的文件
|
||
|
root.getChildren().add(node);
|
||
|
} else {
|
||
|
String[] pathStrings = path.split("\\"+File.separator);
|
||
|
ReportFileBean childNode = new ReportFileBean();
|
||
|
ReportFileBean parent = null;
|
||
|
String currentPath = "";
|
||
|
for (int i = 0; i < pathStrings.length; i++) {
|
||
|
String fileName = pathStrings[i];
|
||
|
currentPath+= (File.separator+fileName);
|
||
|
|
||
|
if (fileName.indexOf(".cpt") != -1 || fileName.indexOf(".frm") != -1) {
|
||
|
parent = getChildNode(parent.getChildren(), fileName);
|
||
|
parent.setDir(false);
|
||
|
parent.setPath(path);
|
||
|
parent.setPreviewUrl(node.getPreviewUrl());
|
||
|
} else {
|
||
|
if (i == 0) {
|
||
|
parent = getChildNode(root.getChildren(), fileName);
|
||
|
parent.setDir(true);
|
||
|
parent.setPath(currentPath);
|
||
|
parent.setPreviewUrl("");
|
||
|
} else {
|
||
|
parent = getChildNode(parent.getChildren(), fileName);
|
||
|
parent.setDir(true);
|
||
|
parent.setPath(currentPath);
|
||
|
parent.setPreviewUrl("");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//String result = JSONReportUtils.objToJSONString(root);
|
||
|
// FineLoggerFactory.getLogger().info("==== result:" + result);
|
||
|
// return CrossDomainResponse.create().callbackFuncName(callback).parameter("result",result).createCrossDomainResponse();
|
||
|
return Response.ok(root);
|
||
|
}
|
||
|
|
||
|
private ReportFileBean getChildNode(ArrayList<ReportFileBean> clildren,String name){
|
||
|
for(ReportFileBean node : clildren){
|
||
|
if(node.getName().equals(name)){
|
||
|
return node;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ReportFileBean child = new ReportFileBean();
|
||
|
clildren.add(child);
|
||
|
child.setName(name);
|
||
|
child.setChildren(new ArrayList<>());
|
||
|
|
||
|
return child;
|
||
|
}
|
||
|
|
||
|
private void iterateDir(File parent,ArrayList<ReportFileBean> allReportFile,String basePath,String paramName) throws UnsupportedEncodingException {
|
||
|
File[] childrens = parent.listFiles();
|
||
|
if(childrens != null && childrens.length > 0){
|
||
|
for(File f:childrens){
|
||
|
String reportName = f.getName();
|
||
|
ReportFileBean bean = new ReportFileBean();
|
||
|
bean.setChildren(new ArrayList<>());
|
||
|
boolean isAdd = true;
|
||
|
if(StringUtils.isNotEmpty(paramName)){
|
||
|
if(reportName.indexOf(paramName) == -1){
|
||
|
isAdd = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(isAdd){
|
||
|
|
||
|
bean.setName(reportName);
|
||
|
String abPath = f.getAbsolutePath();
|
||
|
String rePath = abPath.replace(basePath,"");
|
||
|
bean.setPath(rePath);
|
||
|
bean.setDir(f.isDirectory());
|
||
|
if(bean.isDir() == false){
|
||
|
allReportFile.add(bean);
|
||
|
bean.setPreviewUrl("webroot/decision//view/report?viewlet="+ java.net.URLEncoder.encode(rePath, "UTF-8"));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
iterateDir(f,allReportFile,basePath,paramName);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|