YmUtil.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.poteviohealth.ym.ipos.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.google.common.collect.Maps;
  4. import com.poteviohealth.cgp.common.utils.HttpUtils;
  5. import lombok.extern.log4j.Log4j2;
  6. import org.apache.commons.codec.digest.DigestUtils;
  7. import org.apache.commons.lang3.ArrayUtils;
  8. import java.lang.reflect.Field;
  9. import java.util.Map;
  10. /**
  11. * 请求返回类封装
  12. * @author Qin
  13. */
  14. @Log4j2
  15. public class YmUtil {
  16. private static final String SECRETKEY = "sXEEYUDtjkunTEYENlkp";
  17. public static final String SUCCESS = "0000";
  18. public static final String FAIL = "9998";
  19. private static final String URL = "https://ipos-sa-std.wangcaio2o.com";
  20. public static <T> Object resultBack(T obj, T clazz) throws IllegalAccessException {
  21. Map<String,Object> maps = YmUtil.findObjectFields(obj,false);
  22. String sign = generateSign(obj);
  23. JSONObject object = (JSONObject) JSONObject.toJSON(maps);
  24. object.put("sign", sign);
  25. String jsonObject = JSONObject.toJSONString(object);
  26. log.info(clazz.getClass()+"===="+jsonObject);
  27. String val = HttpUtils.post(URL,jsonObject);
  28. log.info(clazz.getClass()+"==return=="+val);
  29. if(clazz.getClass().toString().contains("UserSearchBack")
  30. || clazz.getClass().toString().contains("SettlementQueryBack")){
  31. return val;
  32. }
  33. return JSONObject.parseObject(val, clazz.getClass());
  34. }
  35. private static <T> String generateSign(T obj){
  36. StringBuilder sb = new StringBuilder(SECRETKEY);
  37. try {
  38. Map<String,Object> maps = YmUtil.findObjectFields(obj,true);
  39. for (String s : maps.keySet()) {
  40. sb.append(s).append(maps.get(s));
  41. }
  42. sb.append(SECRETKEY);
  43. } catch (IllegalAccessException e) {
  44. e.printStackTrace();
  45. }
  46. return DigestUtils.md5Hex(sb.toString().getBytes()).toUpperCase();
  47. }
  48. private static <T> Map<String,Object> findObjectFields(T obj,boolean isType) throws IllegalAccessException {
  49. Map<String,Object> returnMaps =Maps.newTreeMap();
  50. Class clazz = obj.getClass();
  51. Field[] fields = new Field[0];
  52. for(Class<?> curClz = clazz; curClz != Object.class; curClz = curClz.getSuperclass()) {
  53. fields = ArrayUtils.addAll(fields, curClz.getDeclaredFields());
  54. }
  55. for (Field f : fields) {
  56. f.setAccessible(true);
  57. String fieldName = f.getName();
  58. Object fieldValue = f.get(obj);
  59. if(fieldValue =="" || fieldValue == null){
  60. continue;
  61. }else if(isType){
  62. if(f.getGenericType().getTypeName().contains("com.poteviohealth.ym.ipos.model")){
  63. continue;
  64. }
  65. }
  66. returnMaps.put(fieldName,fieldValue);
  67. }
  68. return returnMaps;
  69. }
  70. public static void main(String[] args) {
  71. /* UserSearch userSearch = new UserSearch();
  72. UserSearchDetail detail = new UserSearchDetail();
  73. detail.setPhone("18010031183");
  74. userSearch.setMerchant_query_request(detail);
  75. UserSearchBack back = null;
  76. try {
  77. String val = (String) YmUtil.resultBack(userSearch,new UserSearchBack());
  78. JSONObject jsonObject = new JSONObject(JSON.parseObject(val));
  79. if(val.contains("image_list")){
  80. List<ImageListBack> list = jsonObject.getJSONArray("image_list").stream().map(item -> JSON.parseObject(item.toString(), new TypeReference<ImageListBack>() {})).collect(Collectors.toList());
  81. jsonObject.put("image_list",list);
  82. }
  83. back = JSONObject.toJavaObject(jsonObject, UserSearchBack.class);
  84. } catch (IllegalAccessException e) {
  85. e.printStackTrace();
  86. }
  87. System.out.println(JSONObject.toJSONString(back));*/
  88. }
  89. }