Http的抽象

1.


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


@SuppressWarnings({ "unchecked", "rawtypes" })
public abstract class HttpManagerImpl {

   protected static final Logger logger = LoggerFactory.getLogger(HttpManagerImpl.class);

   abstract String getApiUrl();

   protected Object toModel(JSONObject jobj, Class<?> modelClass) {
      return jobj;
   }

   /**
    * 调用http服务获取列表数据
    * @param uri 请求地址
    * @param params 参数
    * @param isJson 是否post json
    * @return
    */
   protected <T> List<T> queryList(String uri, Map params, boolean isJson) {
      return queryList(uri, params, isJson, Object.class);
   }

   protected Object  getValue(String uri, Map params, boolean isJson) {
      return getValue(uri, params, isJson, Object.class);
   }

   /**
    * 调用http服务获取列表数据
    * @param uri 请求地址
    * @param params 参数
    * @param isJson 是否post json
    * @param modelClass model类,用于区分不同对象 -> toModel
    * @return
    */
   protected <T> List<T> queryList(String uri, Map params, boolean isJson, Class<?> modelClass) {
      String url = getApiUrl() + uri;
      HttpClientUtil http = new HttpClientUtil();
        LogUtill.write(logger,url,"url");
        LogUtill.write(logger,params,"params");
      try {
         HttpResult resultObj = null;
         if (isJson)
            resultObj = http.postJson(url, params);
         else
            resultObj = http.post(url, params);

         if (resultObj.getRet() != 1) {
            logger.error(resultObj.getError().getMsg());
            return new ArrayList<>();
         }

         JSONArray array = (JSONArray) resultObj.getData();
         if (array.size() == 0)
            return new ArrayList<>();

         List<T> list = new ArrayList<>();
         for (Object obj : array) {
            JSONObject jobj = (JSONObject) obj;
            if (modelClass != null) {
               T t = (T) toModel(jobj, modelClass);
               list.add(t);
            } else
               list.add((T) jobj);
         }
            LogUtill.write(logger,list,"return list");
         return list;
      } catch (Exception e) {
         logger.error(e.getMessage());
         return new ArrayList<>();
      }
   }


   protected  Object  getValue(String uri, Map params, boolean isJson, Class<?> modelClass) {
      String url = getApiUrl() + uri;
      HttpClientUtil http = new HttpClientUtil();
      try {
         HttpResult resultObj = null;
         if (isJson)
            resultObj = http.postJson(url, params);
         else
            resultObj = http.post(url, params);

         if (resultObj.getRet() != 1) {
            logger.error(resultObj.getError().getMsg());
            return  null;
         }
         return resultObj.getData();

      } catch (Exception e) {
         logger.error(e.getMessage());
         return  null;
      }
   }


   protected <T> Map<Object, T> queryMap(String uri, Map params, boolean isJson, String key) {
      return queryMap(uri, params, isJson, key, Object.class);
   }

   protected <T> Map<Object, T> queryMap(String uri, Map params, boolean isJson, String key, Class<?> modelClass) {
      Map<Object, T> map = new HashMap<>();
      List<JSONObject> list = queryList(uri, params, isJson, null);
      for (JSONObject jobj : list) {
         T t = (T) toModel(jobj, modelClass);
         map.put(jobj.get(key), t);
      }
      return map;
   }

   protected <T> Map<String, T> queryStringMap(String uri, Map params, boolean isJson, String key) {
      return queryStringMap(uri, params, isJson, key, Object.class);
   }

   protected <T> Map<String, T> queryStringMap(String uri, Map params, boolean isJson, String key, Class<?> modelClass) {
      Map<String, T> map = new HashMap<>();
      List<JSONObject> list = queryList(uri, params, isJson, null);
      for (JSONObject jobj : list) {
         T t = (T) toModel(jobj, modelClass);
         map.put(jobj.getString(key), t);
      }
      return map;
   }

   protected <T> Map<Integer, T> queryIntegerMap(String uri, Map params, boolean isJson, String key) {
      return queryIntegerMap(uri, params, isJson, key, Object.class);
   }

   protected <T> Map<Integer, T> queryIntegerMap(String uri, Map params, boolean isJson, String key, Class<?> modelClass) {
      Map<Integer, T> map = new HashMap<>();
      List<JSONObject> list = queryList(uri, params, isJson, null);
      for (JSONObject jobj : list) {
         T t = (T) toModel(jobj, modelClass);
         map.put(jobj.getInteger(key), t);
      }
      return map;
   }

   protected <T> Map<Long, T> queryLongMap(String uri, Map params, boolean isJson, String key) {
      return queryLongMap(uri, params, isJson, key, Object.class);
   }

   protected <T> Map<Long, T> queryLongMap(String uri, Map params, boolean isJson, String key, Class<?> modelClass) {
      Map<Long, T> map = new HashMap<>();
      List<JSONObject> list = queryList(uri, params, isJson, null);
      for (JSONObject jobj : list) {
         T t = (T) toModel(jobj, modelClass);
         map.put(jobj.getLong(key), t);
      }
      return map;
   }

   protected <T> Map<Double, T> queryDoubleMap(String uri, Map params, boolean isJson, String key) {
      return queryDoubleMap(uri, params, isJson, key, Object.class);
   }

   protected <T> Map<Double, T> queryDoubleMap(String uri, Map params, boolean isJson, String key, Class<?> modelClass) {
      Map<Double, T> map = new HashMap<>();
      List<JSONObject> list = queryList(uri, params, isJson, null);
      for (JSONObject jobj : list) {
         T t = (T) toModel(jobj, modelClass);
         map.put(jobj.getDouble(key), t);
      }
      return map;
   }

}

2.

import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;


@Component
public class AdminUserManagerImpl extends HttpManagerImpl implements AdminUserManager {

    @Override
    String getApiUrl() {
        return AppConfig.getContextProperty("config.authApiUrl");
    }

    @Override
    protected Object toModel(JSONObject jobj, Class<?> modelClass) {
        AdminUser user = new AdminUser();
        user.setId(jobj.getIntValue("id"));
        user.setName(jobj.getString("name"));
        user.setEmail(jobj.getString("email"));
        user.setPhone(jobj.getString("phone"));
        return user;
    }

    @Override
    public List<AdminUser> getAdminUserByIds(List<Integer> userIds) {
        Map<String, Object> params = new HashMap<>();
        params.put("ids", userIds);
        return super.queryList("/adminuser/listbyids", params, true);
    }

    @Override
    public Map<Integer, AdminUser> getAdminUserMap(List<Integer> userIds) {
        Map<String, Object> params = new HashMap<>();
        params.put("ids", userIds);
        return super.queryIntegerMap("/adminuser/listbyids", params, true, "id");
    }

    @Override
    public List<AdminUser> searchAdminUser(Map<String, Object> params) {
        return super.queryList("/adminuser/searchadmin", params, true);
    }

    @Override
    public List<AdminUser> searchAdminUserByCity(String systemKey, int cityId) {
        Map<String, Object> params = new HashMap<>();
        params.put("system_key", systemKey);
        params.put("city_id", cityId);
        params.put("p_num", 1);
        params.put("p_size", 100);

        return searchAdminUser(params);
    }

    @Override
    public List<AdminUser> searchAdminUserBySys(String systemKey) {
        return searchAdminUserBySys(systemKey, null);
    }

    @Override
    public List<AdminUser> searchAdminUserBySys(String systemKey, String roleName) {
        return searchAdminUserBySys(systemKey, roleName, 1, 100);
    }

    @Override
    public List<AdminUser> searchAdminUserBySys(String systemKey, String roleName, int pageNumber, int pageSize) {
        Map<String, Object> params = new HashMap<>();
        params.put("system_key", systemKey);
        if (roleName != null)
            params.put("role_name", roleName);
        params.put("p_num", pageNumber);
        params.put("p_size", pageSize);

        return searchAdminUser(params);
    }

    @Override
    public List<AdminUser> searchAdminUserByName(String name) {
        Map<String, Object> params = new HashMap<>();
        params.put("name", name);
        return searchAdminUser(params);
    }

    @Override
    public List<AdminUser> searchAdminUserByEmail(String email) {
        Map<String, Object> params = new HashMap<>();
        params.put("email", email);
        return searchAdminUser(params);
    }

    @Override
    public List<AdminUser> searchAdminUserByPhone(String phone) {
        Map<String, Object> params = new HashMap<>();
        params.put(" phone", phone);
        return searchAdminUser(params);
    }

}

3.

import java.util.List;
import java.util.Map;


public interface AdminUserManager {

   List<AdminUser> getAdminUserByIds(List<Integer> userIds);

   Map<Integer, AdminUser> getAdminUserMap(List<Integer> userIds);

   List<AdminUser> searchAdminUser(Map<String, Object> params);

   List<AdminUser> searchAdminUserByCity(String systemKey, int cityId);

   List<AdminUser> searchAdminUserBySys(String systemKey);

   List<AdminUser> searchAdminUserBySys(String systemKey, String roleName);

   List<AdminUser> searchAdminUserBySys(String systemKey, String roleName, int pageNumber, int pageSize);

   List<AdminUser> searchAdminUserByName(String name);

   List<AdminUser> searchAdminUserByEmail(String email);

   List<AdminUser> searchAdminUserByPhone(String phone);

}

猜你喜欢

转载自blog.csdn.net/xu990128638/article/details/81483096
今日推荐