From 1ea891f765d8205de0bd3e5f0d3084ec5aa7eb7e Mon Sep 17 00:00:00 2001 From: zhaolizhi <499531245@qq.com> Date: Sat, 6 Oct 2018 13:20:26 +0800 Subject: [PATCH 1/2] webutil --- README.md | 31 +++++++++- .../nutritionmaster/bean/FoodMenuLight | 47 ++++++++++++++ .../nutritionmaster/bean/MyUser.java | 10 +-- .../nutritionmaster/bean/Occupation.java | 8 +-- .../nutritionmaster/utils/WebUtils.java | 61 ++++++++++++++----- 5 files changed, 132 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight 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"); From 1752f13d6148df8d721e08d9bc37a7f604a38763 Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Sat, 6 Oct 2018 14:31:59 +0800 Subject: [PATCH 2/2] 1 --- .../nutritionmaster/NutritionMaster.java | 3 +- .../nutritionmaster/base/BaseActivity.java | 2 +- .../nutritionmaster/base/BaseFragment.java | 2 +- .../nutritionmaster/bean/ClassifyResult.java | 2 +- .../{FoodMenuLight => FoodMenuLight.java} | 0 .../recommend/RecommendFragment.java | 19 +++--- .../nutritionmaster/utils/WebUtil.java | 60 +++++++++++-------- 7 files changed, 49 insertions(+), 39 deletions(-) rename app/src/main/java/com/example/ninefourone/nutritionmaster/bean/{FoodMenuLight => FoodMenuLight.java} (100%) diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java index 24a86e6..b0346c4 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/NutritionMaster.java @@ -126,7 +126,8 @@ public class NutritionMaster extends Application { */ private void initOccupations() { - WebUtil.getAllOccupations(new Callback() { + WebUtil webUtil = WebUtil.getInstance(); + webUtil.getAllOccupations(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java index c86a8c3..758b122 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseActivity.java @@ -28,7 +28,7 @@ public abstract class BaseActivity extends AppCompatActivity { setContentView(getLayoutId()); unbinder = ButterKnife.bind(this); initViews(savedInstanceState); - webUtil = new WebUtil(); + webUtil = WebUtil.getInstance(); initToolBar(); } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java index 5b30d8f..66ecba3 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/base/BaseFragment.java @@ -47,7 +47,7 @@ public abstract class BaseFragment extends Fragment { super.onViewCreated(view, savedInstanceState); unbinder = ButterKnife.bind(this, view); initView(savedInstanceState); - webUtil = new WebUtil(); + webUtil = WebUtil.getInstance(); this.user = NutritionMaster.user; } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java index 93ec75c..97565fc 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/ClassifyResult.java @@ -27,7 +27,7 @@ public class ClassifyResult implements Serializable { public void getMenu() { - WebUtil webUtil = new WebUtil(); + WebUtil webUtil = WebUtil.getInstance(); webUtil.getMenu("素红烧肉", new Callback() { @Override public void onFailure(Call call, IOException e) { diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java similarity index 100% rename from app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight rename to app/src/main/java/com/example/ninefourone/nutritionmaster/bean/FoodMenuLight.java diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java index 44c10b9..4bfe7e9 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java @@ -133,11 +133,6 @@ public class RecommendFragment extends BaseFragment { int flag = indexs[i % 4]; RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); datas.add(recommendFood); -// if (flag == 2) { -// -// } else { -// -// } } } @@ -148,12 +143,14 @@ public class RecommendFragment extends BaseFragment { // Logger.d("加载数据"); for (int i = 0; i < 7; i++) { int flag = indexs[i % 4]; - if (flag == 2) { - - } else { - RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); - adapter.getData().add(recommendFood); - } + RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); + adapter.getData().add(recommendFood); +// if (flag == 2) { +// +// } else { +// RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", flag); +// adapter.getData().add(recommendFood); +// } } adapter.loadMoreComplete(); } 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 4fb70bd..d69bc61 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 @@ -1,9 +1,13 @@ package com.example.ninefourone.nutritionmaster.utils; + +import com.example.ninefourone.nutritionmaster.bean.FoodMenuLight; +import com.example.ninefourone.nutritionmaster.bean.MyUser; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.DataOutputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.StringWriter; @@ -22,8 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import model.FoodMenuLight; -import model.MyUser; + import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; @@ -36,7 +39,7 @@ public class WebUtil { private static WebUtil instance = new WebUtil(); private OkHttpClient mClient = new OkHttpClient(); - public WebUtil() { + private WebUtil() { } public static WebUtil getInstance() { @@ -69,6 +72,7 @@ public class WebUtil { mClient.newCall(request).enqueue(callback); } + /** * 获取count个随机菜谱,在回调中解析为一个Menu数组 * @@ -162,7 +166,11 @@ public class WebUtil { Request request = new Request.Builder().url("http://120.77.182.38/occupation/" + occupationName + "/").build(); 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); + } /** * 获取体质需要的食材 * { @@ -294,24 +302,26 @@ public class WebUtil { } */ + /** - public static void changeUserIllness(String username, String[] illnesses, Callback callback) { - String url = "http://120.77.182.38/myuser/" + username + "/"; - - FormBody.Builder builder = new FormBody.Builder(); - for (String illness : illnesses) { - builder.add("illness", illness); - } - RequestBody formBody = builder.build(); - - Request request = new Request.Builder() - .url(url) - .patch(formBody) - .build(); - - OkHttpClient mClient = new OkHttpClient(); - mClient.newCall(request).enqueue(callback); - }*/ + * public static void changeUserIllness(String username, String[] illnesses, Callback callback) { + * String url = "http://120.77.182.38/myuser/" + username + "/"; + *

+ * FormBody.Builder builder = new FormBody.Builder(); + * for (String illness : illnesses) { + * builder.add("illness", illness); + * } + * RequestBody formBody = builder.build(); + *

+ * Request request = new Request.Builder() + * .url(url) + * .patch(formBody) + * .build(); + *

+ * OkHttpClient mClient = new OkHttpClient(); + * mClient.newCall(request).enqueue(callback); + * } + */ private static RequestBody buildUserRequestBody(MyUser user) { try { FormBody.Builder builder = new FormBody.Builder(); @@ -322,7 +332,7 @@ public class WebUtil { String fieldName = f.toString().substring(f.toString().lastIndexOf(".") + 1); f.setAccessible(true); Object object = f.get(user);//获取属性的值 - if (object != null ) { + if (object != null) { //illness属性是一个list,需要加入每个list的值,而不是list对象 if (fieldName.equals("illness")) { List illnessList = (List) object; @@ -385,10 +395,11 @@ public class WebUtil { /** * 用户吃了一个菜,更新用户本周已吃摄入的营养元素的量 * 返回当前user的最新信息,用MyUser类解析json + * * @param username * @param menuName */ - public void eatenMenu(String username, String menuName,Callback callback) { + public void eatenMenu(String username, String menuName, Callback callback) { String url = "http://120.77.182.38/myuser/eaten_menu/"; RequestBody formBody = new FormBody.Builder() .add("username", username) @@ -403,9 +414,10 @@ public class WebUtil { /** * 返回符合元素信息的menus + * * @param elements */ - public void getMenusByElements(Map elements,Callback callback) { + 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参数