钉钉工作消息 接入各种的消息类型

pull/11/head
3y 2 years ago
parent 41d44451ac
commit 816a529c76

@ -6,62 +6,91 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* for Amis!!! amis!!
* List/Object Map
* https://baidu.gitee.io/amis/zh-CN/components/form/index#%E8%A1%A8%E5%8D%95%E9%A1%B9%E6%95%B0%E6%8D%AE%E5%88%9D%E5%A7%8B%E5%8C%96
*
* @author 3y
* @date 2022/1/23
*/
public class ConvertMap {
/**
* (json
* ()
*/
private static final List<String> FLAT_FIELD_NAME = Arrays.asList("msgContent");
/**
* jsonArray
* (JSONArray)
*/
private static final List<String> PARSE_JSON_ARRAY = Arrays.asList("feedCards", "btns");
/**
* OA
*/
private static final List<String> DING_DING_OA_FIELD = Arrays.asList("dingDingOaHead", "dingDingOaBody");
/**
* OA
*/
private static final Map<String, String> DING_DING_OA_NAME_MAPPING = new HashMap<>();
static {
DING_DING_OA_NAME_MAPPING.put("bgcolor", "dingDingOaHeadBgColor");
DING_DING_OA_NAME_MAPPING.put("text", "dingDingOaHeadTitle");
DING_DING_OA_NAME_MAPPING.put("title", "dingDingOaTitle");
DING_DING_OA_NAME_MAPPING.put("image", "media_id");
DING_DING_OA_NAME_MAPPING.put("author", "dingDingOaAuthor");
DING_DING_OA_NAME_MAPPING.put("content", "dingDingOaContent");
}
/**
* ListMap()
*
* @param param
* @param fieldName reduce
* @return
*/
public static <T> List<Map<String, Object>> flatList(List<T> param, List<String> fieldName) {
public static <T> List<Map<String, Object>> flatList(List<T> param) {
List<Map<String, Object>> result = new ArrayList<>();
for (T t : param) {
Map<String, Object> map = flatSingle(t, fieldName);
Map<String, Object> map = flatSingle(t);
result.add(map);
}
return result;
}
/**
* Map()
*
* <p>
* amis(amis)
*
* @param obj
* @param fieldName reduce
* @return
*/
public static Map<String, Object> flatSingle(Object obj, List<String> fieldName) {
public static Map<String, Object> flatSingle(Object obj) {
Map<String, Object> result = MapUtil.newHashMap(32);
Field[] fields = ReflectUtil.getFields(obj.getClass());
for (Field field : fields) {
// msgContent需要打散
if (fieldName.contains(field.getName())) {
JSONObject jsonObject;
Object value = ReflectUtil.getFieldValue(obj, field);
if (value instanceof String) {
jsonObject = JSON.parseObject((String) value);
} else {
jsonObject = JSONObject.parseObject(JSON.toJSONString(value));
}
if (FLAT_FIELD_NAME.contains(field.getName())) {
String fieldValue = (String) ReflectUtil.getFieldValue(obj, field);
JSONObject jsonObject = JSONObject.parseObject(fieldValue);
for (String key : jsonObject.keySet()) {
if (key.equals("feedCards") || key.equals("btns")) {
/**
* OA
*/
if (DING_DING_OA_FIELD.contains(key)) {
JSONObject object = jsonObject.getJSONObject(key);
for (String objKey : object.keySet()) {
result.put(DING_DING_OA_NAME_MAPPING.get(objKey), object.getString(objKey));
}
} else if (PARSE_JSON_ARRAY.contains(key)) {
/**
* ()
*/
result.put(key, JSON.parseArray(jsonObject.getString(key)));
} else {
} else{
result.put(key, jsonObject.getString(key));
}
}
@ -69,6 +98,5 @@ public class ConvertMap {
result.put(field.getName(), ReflectUtil.getFieldValue(obj, field));
}
return result;
}
}

Loading…
Cancel
Save