JSD-8329 开源任务材料
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.

81 lines
2.5 KiB

/*
* Copyright (C), 2018-2021
* Project: starter
* FileName: UserNameTransferRequest
* Author: Louis
* Date: 2021/7/16 9:20
*/
package com.fr.plugin.dingtalksyn.request;
import com.fanruan.api.decision.user.UserKit;
import com.fanruan.api.util.StringKit;
import com.fr.decision.webservice.v10.user.UserService;
import com.fr.general.IOUtils;
import com.fr.json.JSONObject;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.util.List;
/**
* <Function Description><br>
* <UserNameTransferRequest>
*
* @author fr.open
* @since 1.0.0
*/
public class ModifyBodyRequestWrapper extends HttpServletRequestWrapper {
private byte[] data;
private String bodyContent;
public ModifyBodyRequestWrapper(HttpServletRequest request) {
super(request);
this.bodyContent = modifyRequestBody();
}
/**
* 如登陆输入手机号,则替换为用户名
*
* @return
*/
private String modifyRequestBody() {
try {
String orgContent = IOUtils.inputStream2String(this.getRequest().getInputStream());
JSONObject bodyJo = new JSONObject(orgContent);
if (!bodyJo.has("username")) {
return orgContent;
}
String username = bodyJo.getString("username");
if (StringKit.isBlank(username)) {
return orgContent;
}
if (!UserKit.existUsername(username)) {
List<String> usernameList = UserService.getInstance().getUserNamesFromMobile(username);
if (!usernameList.isEmpty() && StringKit.isNotBlank(usernameList.get(0))) {
bodyJo.put("username", usernameList.get(0));
}
}
return bodyJo.encode();
} catch (Exception e) {
return StringKit.EMPTY;
}
}
@Override
public ServletInputStream getInputStream() {
try {
return new DelegatingServletInputStream(new ByteArrayInputStream(this.bodyContent.getBytes()));
} catch (Exception e) {
return null;
}
}
@Override
public BufferedReader getReader() {
return new BufferedReader(new InputStreamReader(new ByteArrayInputStream(this.bodyContent.getBytes())));
}
}