Merge branch 'develop' into wangtianrui

This commit is contained in:
ScorpioMiku
2018-10-06 14:33:59 +08:00
10 changed files with 169 additions and 52 deletions

View File

@@ -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<String, Double> 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));
}
});
}
```
* **季节搜菜**

View File

@@ -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();

View File

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

View File

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

View File

@@ -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) {

View File

@@ -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 +
'}';
}
}

View File

@@ -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;
@@ -230,7 +230,7 @@ public class MyUser {
}
public String getOccupation_name() {
return occupation_name+"";
return occupation_name;
}
public void setOccupation_name(String occupation_name) {

View File

@@ -12,7 +12,7 @@ public class Occupation {
private String occupation_name;
private ElementsBean elements;
private float bmi_classification;
private int bmi_classification;
private List<String> 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 +
'}';
}
}
}

View File

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

View File

@@ -1,16 +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 com.example.ninefourone.nutritionmaster.bean.Occupation;
import com.google.gson.Gson;
import com.orhanobut.logger.Logger;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringWriter;
@@ -24,8 +21,11 @@ import java.util.List;
import java.util.Map;
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 okhttp3.Call;
import okhttp3.Callback;
@@ -39,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() {
@@ -72,6 +72,7 @@ public class WebUtil {
mClient.newCall(request).enqueue(callback);
}
/**
* 获取count个随机菜谱,在回调中解析为一个Menu数组
*
@@ -79,7 +80,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);
}
@@ -90,7 +91,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);
}
@@ -165,13 +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);
}
/**
* 获取体质需要的食材
* {
@@ -303,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 + "/";
* <p>
* FormBody.Builder builder = new FormBody.Builder();
* for (String illness : illnesses) {
* builder.add("illness", illness);
* }
* RequestBody formBody = builder.build();
* <p>
* Request request = new Request.Builder()
* .url(url)
* .patch(formBody)
* .build();
* <p>
* OkHttpClient mClient = new OkHttpClient();
* mClient.newCall(request).enqueue(callback);
* }
*/
private static RequestBody buildUserRequestBody(MyUser user) {
try {
FormBody.Builder builder = new FormBody.Builder();
@@ -331,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<String> illnessList = (List<String>) object;
@@ -394,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)
@@ -410,6 +412,27 @@ public class WebUtil {
mClient.newCall(request).enqueue(callback);
}
/**
* 返回符合元素信息的menus
*
* @param elements
*/
public void getMenusByElements(Map<String, Double> 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<String, Double> 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 String HttpPost(String requestUrl, String accessToken, String params) throws Exception {
System.out.println(params);
@@ -460,6 +483,26 @@ public class WebUtil {
}
public static void main(String[] args) {
Map<String, Double> 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");