package org.jeecg.common.util; import com.alibaba.fastjson.JSONObject; import org.jeecg.common.api.vo.Result; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; /** * 通过 RESTful 风格的接口操纵 desform 里的数据 * * @author sunjianlei */ public class RestDesformUtil { private static String domain = null; private static String path = null; static { domain = SpringContextUtils.getDomain(); path = oConvertUtils.getString(SpringContextUtils.getApplicationContext().getEnvironment().getProperty("server.servlet.context-path")); } /** * 查询数据 * * @param desformCode * @param dataId * @param token * @return */ public static Result queryOne(String desformCode, String dataId, String token) { String url = getBaseUrl(desformCode, dataId).toString(); HttpHeaders headers = getHeaders(token); ResponseEntity result = RestUtil.request(url, HttpMethod.GET, headers, null, null, JSONObject.class); return packageReturn(result); } /** * 新增数据 * * @param desformCode * @param formData * @param token * @return */ public static Result addOne(String desformCode, JSONObject formData, String token) { return addOrEditOne(desformCode, formData, token, HttpMethod.POST); } /** * 修改数据 * * @param desformCode * @param formData * @param token * @return */ public static Result editOne(String desformCode, JSONObject formData, String token) { return addOrEditOne(desformCode, formData, token, HttpMethod.PUT); } private static Result addOrEditOne(String desformCode, JSONObject formData, String token, HttpMethod method) { String url = getBaseUrl(desformCode).toString(); HttpHeaders headers = getHeaders(token); ResponseEntity result = RestUtil.request(url, method, headers, null, formData, JSONObject.class); return packageReturn(result); } /** * 删除数据 * * @param desformCode * @param dataId * @param token * @return */ public static Result removeOne(String desformCode, String dataId, String token) { String url = getBaseUrl(desformCode, dataId).toString(); HttpHeaders headers = getHeaders(token); ResponseEntity result = RestUtil.request(url, HttpMethod.DELETE, headers, null, null, JSONObject.class); return packageReturn(result); } private static Result packageReturn(ResponseEntity result) { if (result.getBody() != null) { return result.getBody().toJavaObject(Result.class); } return Result.error("操作失败"); } private static StringBuilder getBaseUrl() { StringBuilder builder = new StringBuilder(domain).append(path); builder.append("/desform/api"); return builder; } private static StringBuilder getBaseUrl(String desformCode, String dataId) { StringBuilder builder = getBaseUrl(); builder.append("/").append(desformCode); if (dataId != null) { builder.append("/").append(dataId); } return builder; } private static StringBuilder getBaseUrl(String desformCode) { return getBaseUrl(desformCode, null); } private static HttpHeaders getHeaders(String token) { HttpHeaders headers = new HttpHeaders(); String mediaType = MediaType.APPLICATION_JSON_UTF8_VALUE; headers.setContentType(MediaType.parseMediaType(mediaType)); headers.set("Accept", mediaType); headers.set("X-Access-Token", token); return headers; } }