diff --git a/README.md b/README.md index 7484a4e..c22d2e4 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,36 @@ * 功效搜菜 `getMenuClassification`传入分类(功效)参数,比如川菜.搜到所有的川菜名字.然后可以用菜名搜索搜某个菜的详细信息 - * **营养量搜菜 : 搜索某个营养量范围内的菜** + * 营养量搜菜 : 搜索某个营养量范围内的菜 + + 可选参数: `[calorie,carbohydrate,fat ,protein,cellulose,vitaminA,vitaminB1,vitaminB2,vitaminB6,vitaminC,vitaminE,carotene,cholesterol,Mg,Ca,Fe,Zn,Cu,Mn,K ,P ,Na,Se,niacin ,thiamine]` + + ```java + public static void main(String[] args) { + //首先构造一个Map, key是参数的名字,value是参数的值.用不到的参数不用写. + //我在服务器端根据这些参数构造一个sql,就是 ... WHERE key1 <= val1 AND ...这样的. + //所以你只传入需要作为搜索条件的参数就可以了. + Map params = new HashMap<>(); + params.put("calorie", 100.0); + params.put("fat", 10.0); + WebUtil.getInstance().getMenusByElements(params, 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(); + System.out.println(json); + //用轻量级的菜单类MenuLight解析json,这个类只有Menu的[名字,卡路里,元素对象的主码id]这三个域.想获取详细信息可以用getMenu方法获取 + //这样是为了查询更快 + FoodMenuLight[] foodMenuLights = new Gson().fromJson(json, FoodMenuLight[].class); + System.out.println(Arrays.toString(foodMenuLights)); + } + }); + } + ``` * **季节搜菜** diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight new file mode 100644 index 0000000..a6b8a29 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight @@ -0,0 +1,47 @@ +package com.example.ninefourone.nutritionmaster.bean; + +public class FoodMenuLight { + + /** + * name : 番茄虾仁 + * calorie : 20 + * elements : 2953 + */ + + private String name; + private double calorie; + private int elements; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getCalorie() { + return calorie; + } + + public void setCalorie(int calorie) { + this.calorie = calorie; + } + + public double getElements() { + return elements; + } + + public void setElements(int elements) { + this.elements = elements; + } + + @Override + public String toString() { + return "FoodMenuLight{" + + "name='" + name + '\'' + + ", calorie=" + calorie + + ", elements=" + elements + + '}'; + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java index feebe0d..2043ab3 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/MyUser.java @@ -47,7 +47,7 @@ public class MyUser { private Integer height; private Integer weight; private Integer bmi; - private Object occupation_name; + private String occupation_name; private List groups; private List user_permissions; private List illness; @@ -100,8 +100,8 @@ public class MyUser { return physical_name; } - public void setPhysique(Physique physique) { - this.physique = physique; + public void setPhysical_name(String physical_name) { + this.physical_name = physical_name; } public String getPassword() { @@ -224,11 +224,11 @@ public class MyUser { this.bmi = bmi; } - public Object getOccupation_name() { + public String getOccupation_name() { return occupation_name; } - public void setOccupation_name(Object occupation_name) { + public void setOccupation_name(String occupation_name) { this.occupation_name = occupation_name; } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Occupation.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Occupation.java index 84a6350..d9c25ac 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Occupation.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/Occupation.java @@ -12,7 +12,7 @@ public class Occupation { private String occupation_name; private ElementsBean elements; - private float bmi_classification; + private int bmi_classification; private List menuclassification_set; public String getOccupation_name() { @@ -31,11 +31,11 @@ public class Occupation { this.elements = elements; } - public float getBmi_classification() { + public int getBmi_classification() { return bmi_classification; } - public void setBmi_classification(float bmi_classification) { + public void setBmi_classification(int bmi_classification) { this.bmi_classification = bmi_classification; } @@ -354,4 +354,4 @@ public class Occupation { ", menuclassification_set=" + menuclassification_set + '}'; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java index 1ba9299..cd92de9 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/utils/WebUtils.java @@ -1,17 +1,14 @@ package com.example.ninefourone.nutritionmaster.utils; - import com.google.gson.Gson; -import com.sun.istack.internal.Nullable; - -import com.example.ninefourone.nutritionmaster.bean.Occupation; -import com.google.gson.Gson; -import com.orhanobut.logger.Logger; import java.io.IOException; import java.lang.reflect.Field; -import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import model.FoodMenuLight; import model.MyUser; import okhttp3.Call; import okhttp3.Callback; @@ -65,7 +62,7 @@ public class WebUtil { * @param callback */ public void getRandomMenus(int count, Callback callback) { - Request request = new Request.Builder().url("http://127.0.0.1:8000/menus/get_random_menus/?count=" + String.valueOf(count)).build(); + Request request = new Request.Builder().url("http://120.77.182.38/menus/get_random_menus/?count=" + String.valueOf(count)).build(); mClient.newCall(request).enqueue(callback); } @@ -76,7 +73,7 @@ public class WebUtil { * @param callback */ public void getRandomTricks(int count, Callback callback) { - Request request = new Request.Builder().url("http://127.0.0.1:8000/trick/get_random_tricks/?count=" + String.valueOf(count)).build(); + Request request = new Request.Builder().url("http://120.77.182.38/trick/get_random_tricks/?count=" + String.valueOf(count)).build(); mClient.newCall(request).enqueue(callback); } @@ -152,12 +149,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); - } - /** * 获取体质需要的食材 * { @@ -396,8 +387,48 @@ public class WebUtil { mClient.newCall(request).enqueue(callback); } + /** + * 返回符合元素信息的menus + * @param elements + */ + public void getMenusByElements(Map elements,Callback callback) { + String url = "http://120.77.182.38/menus/get_menus_by_elements/"; + FormBody.Builder builder = new FormBody.Builder(); + //构造RequestBody参数 + for (Map.Entry entry : elements.entrySet()) { + String key = entry.getKey(); + double value = entry.getValue(); + builder.add(key, String.valueOf(value)); + } + 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) { + Map params = new HashMap<>(); + params.put("calorie", 100.0); + params.put("fat", 10.0); + WebUtil.getInstance().getMenusByElements(params, 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(); + System.out.println(json); + //轻量级的Menu,只有Menu的名字,卡路里,元素对象的主码id.想获取详细信息可以用getMenu方法获取 + //这样是为了查询更快 + FoodMenuLight[] foodMenuLights = new Gson().fromJson(json, FoodMenuLight[].class); + System.out.println(Arrays.toString(foodMenuLights)); + } + }); + /* MyUser testUser = new MyUser(); testUser.setUsername("test6");