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); }