diff --git a/README.md b/README.md index 0d2d126..117a7a0 100644 --- a/README.md +++ b/README.md @@ -194,8 +194,62 @@ * 获取用户本周已摄入的营养元素的量: `getUser`得到当前用户的信息,解析后用`MyUser`的`getEaten_elements()`获取到Element对象.里面有各种元素信息 + * **根据多个食材组合来搜菜** + + ```java + List materialList = new ArrayList<>(); + materialList.add("土豆"); + materialList.add("茄子"); + WebUtil.getInstance().getMenusByMaterials(materialList, new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + FoodMenu[] menus = new Gson().fromJson(json, FoodMenu[].class); + for (FoodMenu menu : menus) { + System.out.println(menu.getName()); + } + } + }); + ``` + * **用户的浏览历史: 添加用户和菜谱的多对多关系** + ```java + //获取历史记录 传入username + WebUtil.getInstance().getEatenHistory("test5", new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + History[] histories = new Gson().fromJson(json, History[].class); + System.out.println(Arrays.toString(histories)); + } + }); + //添加历史记录 传入username 和 Menu的名字 + WebUtil.getInstance().addEatenHistory("test5", "多味茄子泥", new Callback() { + @Override + public void onFailure(Call call, IOException e) { + + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + String json = response.body().string(); + History history = new Gson().fromJson(json, History.class); + System.out.println(history); + } + }); + ``` + * 菜名搜索: `getMenu`方法,传入菜名(菜名通过其他的各种关联方式获取) (menu.calorie是直接爬到的卡路里值,营养元素里的menu.elements.calorie卡路里是根据每个食材的卡路里计算的,相对来说,menu.calorie的值更准确) * 功效搜菜 `getMenuClassification`传入分类(功效)参数,比如川菜.搜到所有的川菜名字.然后可以用菜名搜索搜某个菜的详细信息 diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/History.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/History.java new file mode 100644 index 0000000..75b48b4 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/History.java @@ -0,0 +1,50 @@ +package com.example.ninefourone.nutritionmaster.bean; + +public class History { + + /** + * id : 13 time : 2018-11-02T15:35:20.015542+08:00 user : 11 menu : 多味茄子泥 + */ + + private int id; + private String time; + private int user; + private String menu; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public int getUser() { + return user; + } + + public void setUser(int user) { + this.user = user; + } + + public String getMenu() { + return menu; + } + + public void setMenu(String menu) { + this.menu = menu; + } + + @Override + public String toString() { + return "History{" + "id=" + id + ", time='" + time + '\'' + ", user=" + user + ", menu='" + menu + '\'' + '}'; + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java index e630a47..9f6c4b2 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtil.java @@ -71,7 +71,7 @@ public class WebUtil { /** * 获取count个随机菜谱,在回调中解析为一个Menu数组 根据用户的体质,病理,职业推荐 - * + * * @param count * @param callback */ @@ -128,12 +128,6 @@ public class WebUtil { mClient.newCall(request).enqueue(callback); } - public static void getAllOccupations(Callback callback) { - OkHttpClient mClient = new OkHttpClient(); - Request request = new Request.Builder().url("http://120.77.182.38/occupation/").build(); - mClient.newCall(request).enqueue(callback); - } - /** * 获取体质需要的食材 { "physical_name": "气虚质", "cure_material": [ "人参", "人参须", * "去芯莲子", "去芯莲子(3~4人份)", "土茯苓", ... ] } @@ -336,52 +330,29 @@ public class WebUtil { mClient.newCall(request).enqueue(callback); } - public static String HttpPost(String requestUrl, String accessToken, String params) throws Exception { - System.out.println(params); - String generalUrl = ""; - generalUrl = requestUrl + "?access_token=" + accessToken; - System.out.println("发送的连接为:" + generalUrl); - URL url = new URL(generalUrl); - // 打开和URL之间的连接 - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - System.out.println("打开链接,开始发送请求" + new Date().getTime() / 1000); - connection.setRequestMethod("POST"); - // 设置通用的请求属性 - connection.setRequestProperty("Content-Type", "application/json"); - connection.setRequestProperty("Connection", "Keep-Alive"); - connection.setUseCaches(false); - connection.setDoOutput(true); - connection.setDoInput(true); + public void addEatenHistory(String username, String menuName, Callback callback) { + String url = "http://120.77.182.38/myuser/add_eaten_history/"; + RequestBody formBody = new FormBody.Builder().add("username", username).add("menu", menuName).build(); + Request request = new Request.Builder().url(url).post(formBody).build(); + mClient.newCall(request).enqueue(callback); + } - // 得到请求的输出流对象 - DataOutputStream out = new DataOutputStream(connection.getOutputStream()); - out.writeBytes(params); - out.flush(); - out.close(); + public void getEatenHistory(String username, Callback callback) { + String url = "http://120.77.182.38/myuser/get_eaten_history?username=" + username; + Request request = new Request.Builder().url(url).build(); + mClient.newCall(request).enqueue(callback); + } - // 建立实际的连接 - connection.connect(); - // 获取所有响应头字段 - Map> headers = connection.getHeaderFields(); - // 遍历所有的响应头字段 - for (String key : headers.keySet()) { - System.out.println(key + "--->" + headers.get(key)); + public void getMenusByMaterials(List materialList, Callback callback) { + // POST + String url = "http://120.77.182.38/menus/get_menus_by_materials/"; + FormBody.Builder builder = new FormBody.Builder(); + for (String material : materialList) { + builder.add("material", material); } - // 定义 BufferedReader输入流来读取URL的响应 - BufferedReader in = null; - if (requestUrl.contains("nlp")) - in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK")); - else - in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); - String result = ""; - String getLine; - while ((getLine = in.readLine()) != null) { - result += getLine; - } - in.close(); - System.out.println("请求结束" + new Date().getTime() / 1000); - System.out.println("result:" + result); - return result; + RequestBody formBody = builder.build(); + Request request = new Request.Builder().url(url).post(formBody).build(); + mClient.newCall(request).enqueue(callback); } public static void main(String[] args) {