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

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);
}
}
}
}