optimize codes

This commit is contained in:
Mauve
2026-09-20 12:30:56 +08:00
parent dcec5d0fa7
commit e803008b12
3 changed files with 224 additions and 4 deletions
@@ -116,12 +116,12 @@ public class PlayerController {
String roomType = params.get("roomType"); String roomType = params.get("roomType");
String property = params.get("property"); String property = params.get("property");
if (StringUtils.isEmpty(userId)||StringUtils.isEmpty(roomType)||StringUtils.isEmpty(property)) { if (StringUtils.isAnyEmpty(userId, roomType, property)) {
response.sendError(422, "Miss parameter"); response.sendError(422, "Miss parameter");
return null; return null;
} }
if(!StringUtils.isEmpty(userId)) { if(StringUtils.isNotEmpty(userId)) {
userId = Strings.CS.replace(userId, "@mgm.mo", ""); userId = Strings.CS.replace(userId, "@mgm.mo", "");
} }
@@ -0,0 +1,220 @@
package com.mgm.mcrm.admin.controllers;
import com.mgm.mcrm.common.constants.SysCommon;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/crm_api")
public class SSOController {
private static final String TEXT_SPLIT_CHAR = ",";
@RequestMapping(value="/app/sso/export_folder",method = RequestMethod.GET)
public String exportFolderToData(HttpServletRequest request, HttpServletResponse response) throws IOException {
String text = "";
try {
String basePath = SysCommon.runtime_path + "\\"+SysCommon.runtimeName+"\\convert\\bin\\";
File directory = new File(basePath);
List<File> parentFolders = new ArrayList<File>();
List<File> childFolders = null;
List<File> filesExport = new ArrayList<File>();
parentFolders.add(directory);
while(!parentFolders.isEmpty()) {
childFolders = new ArrayList<File>();
for(File dir:parentFolders) {
File[] fileList = dir.listFiles();
if(fileList!=null && fileList.length>0) {
for(File subFile:fileList) {
if(subFile.isDirectory()) {
childFolders.add(subFile);
}else {
filesExport.add(subFile);
}
}
}
}
parentFolders = childFolders;
}
if(filesExport.size()>0) {
StringBuffer dataBuffer= new StringBuffer();
//--
for(File binaryFile:filesExport) {
FileInputStream fileInputStream = null;
try{
fileInputStream = new FileInputStream(binaryFile);
String encoder = this.encode(fileInputStream);
String filePath = binaryFile.getPath().replace(basePath, "");
if (encoder != null) {
if(dataBuffer.length()>0) {
dataBuffer.append(";");
}
dataBuffer.append("[{"+filePath+"};{"+encoder+"}]");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
//--
String outputFilePath = SysCommon.runtime_path + "\\"+SysCommon.runtimeName+"\\convert\\text\\exportfile.data";
File outputFile = new File(outputFilePath);
if(!outputFile.exists())
outputFile.createNewFile();
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile)));
String totalContent = dataBuffer.toString();
bufferedWriter.write(totalContent);
bufferedWriter.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
text += "Export total "+filesExport.size()+" files to exportfile.data";
}catch (Exception err) {
text += err.getMessage();
}
// 设置内容类型和字符编码
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print(text);
out.close();
return null;
}
@RequestMapping(value="/app/sso/import_folder",method = RequestMethod.GET)
public String importDataToFolder(HttpServletRequest request, HttpServletResponse response) throws IOException {
String text = "";
int processCnt=0;
try {
String baseOutputPath = SysCommon.runtime_path + "\\"+SysCommon.runtimeName+"\\convert\\bin\\";
File dataFile = new File(SysCommon.runtime_path + "\\"+SysCommon.runtimeName+"\\convert\\text\\exportfile.data");
if(dataFile.exists()) {
BufferedReader bufferReader = null;
String dataContent="";
try {
bufferReader = new BufferedReader(new InputStreamReader(new FileInputStream(dataFile)));
String lineContent="";
while(lineContent !=null) {
lineContent = bufferReader.readLine();
if(lineContent!=null) {
dataContent+=lineContent;
}
}
} catch (Exception e) {
e.printStackTrace();
}
if(StringUtils.isNotBlank(dataContent)) {
String[] segmentParts = dataContent.split("\\];\\[");
if(segmentParts!=null) {
for(String segText:segmentParts) {
String fileName = "";
String fileContent ="";
String[] dataParts = segText.split("\\};\\{");
for(int i=0;i<dataParts.length;i++) {
String ct = dataParts[i].replace("[", "").replace("]", "").replace("{", "").replace("}", "");
if(i==0) {
fileName = ct;
}else {
fileContent=ct;
}
}
if(StringUtils.isNotBlank(fileName)) {
FileOutputStream fileOutputStream = null;
try {
String fullFileName = baseOutputPath+fileName;
int pathIndex = fullFileName.lastIndexOf("\\");
if(pathIndex>0) {
String fileFolderName = fullFileName.substring(0,pathIndex);
File fileFolder = new File(fileFolderName);
if(!fileFolder.exists() || !fileFolder.isDirectory()) {
fileFolder.mkdirs();
}
}
File outputFile = new File(fullFileName);
if (!outputFile.exists())
outputFile.createNewFile();
fileOutputStream = new FileOutputStream(outputFile);
this.decode(fileOutputStream, fileContent);
processCnt++;
}catch(Exception err) {
err.printStackTrace();
}finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
}
}
text="Import "+processCnt+" files.";
}else {
text="Empty Content.";
}
}else {
text="Data file not found.";
}
}catch (Exception err) {
text+= err.getMessage();
}
// 设置内容类型和字符编码
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print(text);
out.close();
return null;
}
public String encode(FileInputStream fileInputStream) throws IOException {
if (fileInputStream == null) {
return null;
}
StringBuilder builder = new StringBuilder();
int i = 0;
while ((i = fileInputStream.read()) != -1) {
builder.append(i + TEXT_SPLIT_CHAR);
}
return builder.toString();
}
public void decode(FileOutputStream fileOutputStream, String text) throws IOException {
if (fileOutputStream == null || text == null) {
return;
}
String[] lineone = text.split(TEXT_SPLIT_CHAR);
for (int j = 0; j < lineone.length; j++) {
fileOutputStream.write(Integer.valueOf(lineone[j]));
}
fileOutputStream.flush();
}
}
@@ -65,8 +65,8 @@ public class WebFilterConfig {
"/", "/",
"/sign-off", "/sign-off",
"/crm_api/sso_login", "/crm_api/sso_login",
"/crm_api/import_folder", "/crm_api/app/sso/import_folder",
"/crm_api/export_folder", "/crm_api/app/sso/export_folder",
"/swagger*/*", "/swagger*/*",
"/v3/**", "/v3/**",
"/api-docs", "/api-docs",