This commit is contained in:
zhaolizhi
2018-10-02 21:00:08 +08:00
parent c438c7d21d
commit 45030adc91
5 changed files with 790 additions and 119 deletions

View File

@@ -123,15 +123,61 @@
赵:
* 体质表: 添加几列对某种物质的需求
* 职业表: 添加几列对某种物质的需求,添加一列BMI的需求
* user表: 添加综合对物质的需求
* 体质表: 添加几列对某种物质的需求
* 职业表: 添加几列对某种物质的需求,添加一列BMI的需求 √
* user表: 添加综合对物质的需求 √
* 菜单表:
* 添加一列早/午晚餐,早为1,else为0. 根据 饼 粥 羹 面 奶 判断
* 补充一下缺失的url,卡路里
* 添加几列各种物质的需求
* **添加一列早/午晚餐,早为1,else为0. 根据 饼 粥 羹 面 奶 判断**
* 补充一下缺失的url,卡路里
* 添加几列各种物质的需求
* 有一部分数据是爬下的csv里面直接读取,一部分缺失的用food_material的组合来计算
* **对接任务**: 接口使用方法可以参尻main函数里面的注释和数据库ER图
* WebUtil改成了单例,一些方法注意一下
* 注册: `createUser`.注意年龄应该让用户填出生年,获取年龄时每次都根据年份计算一下
* 直接set设置用户的各种信息,不需要的就空着不用set,特殊的一点是病有多个值,要用一个List
![](http://ww1.sinaimg.cn/large/0077h8xtly1fvu5tfi47aj30mv0gg403.jpg)
* 修改用户信息 `changeUserInfo`,注意username必须设置,其他的是需要改的值.**修改会覆盖之前的内容**.比如用户之前illness是健忘食谱,想增加一个高血压食谱, 就需要把之前的也写上,就是一起传 `健忘食谱,高血压食谱`这两个参数.写到List里面. 具体参考main函数里面的
* 获取九体信息 `getPhysique`方法
* 获取用户营养元素所需的量: 先`getUser`获取到用户的病/职业/体质名字,然后根据这些名字查询每个 病/职业/体质信息对应的元素需求,最后加权计算 (这里是不是麻烦了点?)
* 用户职业BMI分类 3多动,2中等,1少动 先 `getUser`获取到用户的职业名字.然后`getOccupation`获取到该职业的BMI分类
* 动态改变用户已吃的营养元素的量: 在用户表添加element参数,每周清空一次,每吃一个菜就记录一下
* 获取用户本周已摄入的营养元素的量: `getUser`得到当前用户的信息,解析后用`MyUser``getEaten_elements()`获取到Element对象.里面有各种元素信息
* 每吃一个菜就post一下
![](http://ww1.sinaimg.cn/large/0077h8xtly1fvsze639cyj30k507vaa9.jpg)
* **用户的浏览历史: 添加用户和菜谱的多对多关系**
* 菜名搜索: `getMenu`方法,传入菜名(菜名通过其他的各种关联方式获取) (menu.calorie是直接爬到的卡路里值,营养元素里的menu.elements.calorie卡路里是根据每个食材的卡路里计算的,相对来说,menu.calorie的值更准确)
* 功效搜菜 `getMenuClassification`传入分类(功效)参数,比如川菜.搜到所有的川菜名字.然后可以用菜名搜索搜某个菜的详细信息
* **营养量搜菜 : 搜索某个营养量范围内的菜**
* **季节搜菜**
* 小知识获取 : `getRandomTricks`
![1538310994730](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1538310994730.png)
![1538313835249](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1538313835249.png)
#### 又想到的补充内容
@@ -141,7 +187,7 @@
### 数据库设计
![](http://ww1.sinaimg.cn/large/0077h8xtly1fuz0a6yb4gj30z10hl1kx.jpg)
![](http://ww1.sinaimg.cn/large/0077h8xtly1fvu67fbm8qj312f0sux6p.jpg)
**加下划线为主码,加粗为外码,默认not null**

View File

@@ -2,7 +2,6 @@ package com.example.ninefourone.nutritionmaster.bean;
import java.util.List;
public class Illness {
/**
@@ -29,6 +28,14 @@ public class Illness {
this.elements = elements;
}
@Override
public String toString() {
return "Illness{" +
"menu_classification=" + menu_classification +
", elements=" + elements +
'}';
}
public static class MenuClassificationBean {
/**
* classification : 青少年食谱

View File

@@ -5,40 +5,80 @@ import java.util.List;
public class MyUser {
/**
* id : 7
* physical_name : 平和质
* password : password
* id : 2
* eaten_elements : {"id":12127,"calorie":1046,"carbohydrate":33.56923076923077,"fat":17.138461538461538,"protein":13.492307692307692,"cellulose":5.723076923076923,"vitaminA":16.307692307692307,"vitaminB1":0,"vitaminB2":0.16,"vitaminB6":0,"vitaminC":9.692307692307692,"vitaminE":7.483076923076923,"carotene":84.61538461538461,"cholesterol":29.692307692307693,"Mg":116.61538461538461,"Ca":230.76923076923077,"Fe":7.523076923076923,"Zn":1.209230769230769,"Cu":0.4138461538461539,"Mn":1.5138461538461538,"K":285.6923076923077,"P":92,"Na":15580.876923076923,"Se":7.636923076923078,"niacin":1.169230769230769,"thiamine":0.06307692307692307}
* physical_name : 瘀血质
* password : updata
* last_login : null
* is_superuser : false
* username : okhttptest
* username : updatatest
* first_name :
* last_name :
* email :
* is_staff : false
* is_active : false
* date_joined : 2018-09-24T15:13:09.298590+08:00
* date_joined : 2018-09-16T20:21:40.466423+08:00
* sex : 1
* occupation_name : 程序员
* age : 0
* height : 0
* weight : 0
* bmi : -1
* occupation_name : null
* groups : []
* user_permissions : []
* illness : []
*/
private int id;
private Integer id;
private EatenElementsBean eaten_elements;
private String physical_name;
private String password;
private Object last_login;
private boolean is_superuser;
private Boolean is_superuser;
private String username;
private String first_name;
private String last_name;
private String email;
private boolean is_staff;
private boolean is_active;
private Boolean is_staff;
private Boolean is_active;
private String date_joined;
private int sex;
private String occupation_name;
private Integer sex;
private Integer age;
private Integer height;
private Integer weight;
private Integer bmi;
private Object occupation_name;
private List<?> groups;
private List<?> user_permissions;
private List<?> illness;
@Override
public String toString() {
return "MyUser{" +
"id=" + id +
", eaten_elements=" + eaten_elements +
", physical_name='" + physical_name + '\'' +
", password='" + password + '\'' +
", last_login=" + last_login +
", is_superuser=" + is_superuser +
", username='" + username + '\'' +
", first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", email='" + email + '\'' +
", is_staff=" + is_staff +
", is_active=" + is_active +
", date_joined='" + date_joined + '\'' +
", sex=" + sex +
", age=" + age +
", height=" + height +
", weight=" + weight +
", bmi=" + bmi +
", occupation_name=" + occupation_name +
", groups=" + groups +
", user_permissions=" + user_permissions +
", illness=" + illness +
'}';
}
public int getId() {
return id;
@@ -48,6 +88,14 @@ public class MyUser {
this.id = id;
}
public EatenElementsBean getEaten_elements() {
return eaten_elements;
}
public void setEaten_elements(EatenElementsBean eaten_elements) {
this.eaten_elements = eaten_elements;
}
public String getPhysical_name() {
return physical_name;
}
@@ -144,11 +192,43 @@ public class MyUser {
this.sex = sex;
}
public String getOccupation_name() {
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getBmi() {
return bmi;
}
public void setBmi(int bmi) {
this.bmi = bmi;
}
public Object getOccupation_name() {
return occupation_name;
}
public void setOccupation_name(String occupation_name) {
public void setOccupation_name(Object occupation_name) {
this.occupation_name = occupation_name;
}
@@ -168,25 +248,309 @@ public class MyUser {
this.user_permissions = user_permissions;
}
@Override
public String toString() {
return "MyUser{" +
"id=" + id +
", physical_name='" + physical_name + '\'' +
", password='" + password + '\'' +
", last_login=" + last_login +
", is_superuser=" + is_superuser +
", username='" + username + '\'' +
", first_name='" + first_name + '\'' +
", last_name='" + last_name + '\'' +
", email='" + email + '\'' +
", is_staff=" + is_staff +
", is_active=" + is_active +
", date_joined='" + date_joined + '\'' +
", sex=" + sex +
", occupation_name='" + occupation_name + '\'' +
", groups=" + groups +
", user_permissions=" + user_permissions +
'}';
public List<?> getIllness() {
return illness;
}
public void setIllness(List<?> illness) {
this.illness = illness;
}
public static class EatenElementsBean {
/**
* id : 12127
* calorie : 1046
* carbohydrate : 33.56923076923077
* fat : 17.138461538461538
* protein : 13.492307692307692
* cellulose : 5.723076923076923
* vitaminA : 16.307692307692307
* vitaminB1 : 0
* vitaminB2 : 0.16
* vitaminB6 : 0
* vitaminC : 9.692307692307692
* vitaminE : 7.483076923076923
* carotene : 84.61538461538461
* cholesterol : 29.692307692307693
* Mg : 116.61538461538461
* Ca : 230.76923076923077
* Fe : 7.523076923076923
* Zn : 1.209230769230769
* Cu : 0.4138461538461539
* Mn : 1.5138461538461538
* K : 285.6923076923077
* P : 92
* Na : 15580.876923076923
* Se : 7.636923076923078
* niacin : 1.169230769230769
* thiamine : 0.06307692307692307
*/
private double id;
private double calorie;
private double carbohydrate;
private double fat;
private double protein;
private double cellulose;
private double vitaminA;
private double vitaminB1;
private double vitaminB2;
private double vitaminB6;
private double vitaminC;
private double vitaminE;
private double carotene;
private double cholesterol;
private double Mg;
private double Ca;
private double Fe;
private double Zn;
private double Cu;
private double Mn;
private double K;
private double P;
private double Na;
private double Se;
private double niacin;
private double thiamine;
@Override
public String toString() {
return "EatenElementsBean{" +
"id=" + id +
", calorie=" + calorie +
", carbohydrate=" + carbohydrate +
", fat=" + fat +
", protein=" + protein +
", cellulose=" + cellulose +
", vitaminA=" + vitaminA +
", vitaminB1=" + vitaminB1 +
", vitaminB2=" + vitaminB2 +
", vitaminB6=" + vitaminB6 +
", vitaminC=" + vitaminC +
", vitaminE=" + vitaminE +
", carotene=" + carotene +
", cholesterol=" + cholesterol +
", Mg=" + Mg +
", Ca=" + Ca +
", Fe=" + Fe +
", Zn=" + Zn +
", Cu=" + Cu +
", Mn=" + Mn +
", K=" + K +
", P=" + P +
", Na=" + Na +
", Se=" + Se +
", niacin=" + niacin +
", thiamine=" + thiamine +
'}';
}
public double getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getCalorie() {
return calorie;
}
public void setCalorie(int calorie) {
this.calorie = calorie;
}
public double getCarbohydrate() {
return carbohydrate;
}
public void setCarbohydrate(double carbohydrate) {
this.carbohydrate = carbohydrate;
}
public double getFat() {
return fat;
}
public void setFat(double fat) {
this.fat = fat;
}
public double getProtein() {
return protein;
}
public void setProtein(double protein) {
this.protein = protein;
}
public double getCellulose() {
return cellulose;
}
public void setCellulose(double cellulose) {
this.cellulose = cellulose;
}
public double getVitaminA() {
return vitaminA;
}
public void setVitaminA(double vitaminA) {
this.vitaminA = vitaminA;
}
public double getVitaminB1() {
return vitaminB1;
}
public void setVitaminB1(int vitaminB1) {
this.vitaminB1 = vitaminB1;
}
public double getVitaminB2() {
return vitaminB2;
}
public void setVitaminB2(double vitaminB2) {
this.vitaminB2 = vitaminB2;
}
public double getVitaminB6() {
return vitaminB6;
}
public void setVitaminB6(int vitaminB6) {
this.vitaminB6 = vitaminB6;
}
public double getVitaminC() {
return vitaminC;
}
public void setVitaminC(double vitaminC) {
this.vitaminC = vitaminC;
}
public double getVitaminE() {
return vitaminE;
}
public void setVitaminE(double vitaminE) {
this.vitaminE = vitaminE;
}
public double getCarotene() {
return carotene;
}
public void setCarotene(double carotene) {
this.carotene = carotene;
}
public double getCholesterol() {
return cholesterol;
}
public void setCholesterol(double cholesterol) {
this.cholesterol = cholesterol;
}
public double getMg() {
return Mg;
}
public void setMg(double Mg) {
this.Mg = Mg;
}
public double getCa() {
return Ca;
}
public void setCa(double Ca) {
this.Ca = Ca;
}
public double getFe() {
return Fe;
}
public void setFe(double Fe) {
this.Fe = Fe;
}
public double getZn() {
return Zn;
}
public void setZn(double Zn) {
this.Zn = Zn;
}
public double getCu() {
return Cu;
}
public void setCu(double Cu) {
this.Cu = Cu;
}
public double getMn() {
return Mn;
}
public void setMn(double Mn) {
this.Mn = Mn;
}
public double getK() {
return K;
}
public void setK(double K) {
this.K = K;
}
public double getP() {
return P;
}
public void setP(int P) {
this.P = P;
}
public double getNa() {
return Na;
}
public void setNa(double Na) {
this.Na = Na;
}
public double getSe() {
return Se;
}
public void setSe(double Se) {
this.Se = Se;
}
public double getNiacin() {
return niacin;
}
public void setNiacin(double niacin) {
this.niacin = niacin;
}
public double getThiamine() {
return thiamine;
}
public void setThiamine(double thiamine) {
this.thiamine = thiamine;
}
}
}

View File

@@ -0,0 +1,48 @@
package com.example.ninefourone.nutritionmaster.bean;
public class Trick {
/**
* id : 124
* title : 一天喝一杯红酒 真能降血脂降固醇吗
* content : 随着高血脂、高固醇患者人数不但增长,关于如何对这类疾病进行有效地预防,成了越来越多人关注的问题,坊间关于预防的方式也多种多样,让人眼花缭乱,真假难辨。其中每天坚持喝一杯
能降血脂降固醇的说法被很多人奉为圭臬,并在生活中践行。
事实果真如此吗?红酒有这么突出的功效吗?下面为大家详细解答一番。
首先,可以确定的是,红酒的确是一种健康饮品,它含有丰富的营养物质,
功效也不容忽视。红酒中所含的多酚、白藜芦醇、花色苷等营养物质,的确有助于降低体内的胆固醇、血脂;非但如此,这些物质还能起到软化血管的作用;此外,红酒中的有机酸,还能增强我们的消化系统,帮助我们消化食物。再者,红酒中含有的多酚、黄酮等植物化学成分,有助于清除体内自由基,预防衰老。
由此可见,饮用红酒的确对我们降脂、降固醇有很大的帮助,但是要想完全通过每天一杯红酒的方式实现预防目的,并不可取,因为红酒虽好,但同样存在下面这些隐患。
首先对红酒的选择,市场上各种质量的红酒类型鱼目混杂,如果选择了低劣的红酒,不但不能起到养生作用,反而会危害健康;此外,红酒中含有酒精,一旦饮用过量,对高血脂、高固醇患者的健康也会造成影响;再者,红酒中能降血脂、降固醇的营养物质含量较低,每天仅喝一杯,很难奏效。
可见,仅仅通过每天饮用一杯红酒的方式降血脂、降固醇并不是明智之选。那么,还有哪些方式可以帮助我们更好地实现养生目标呢?
在日常饮食方面,做到膳食结构完整,营养摄入全面,保证肉质、蔬菜、水果、蛋类等各类食材的均衡摄入;再此基础上,减少食盐、食用油的摄入量,还可以尝试用鸡肉、鱼肉等“白肉”取代猪肉等“红肉”。
高血脂、高固醇的出现,和体内过量的脂肪密不可分,每天坚持适量的体育锻炼,将体内多余的热量和脂肪消耗掉,对降低体内的血脂、固醇也大有裨益。
养生是一个循序渐进的过程,不能急功近利,更不能偏信,某一种食材具有特殊功效这种说法,只有长期坚持健康的生活方式才能拥有健康的身体。
*/
private int id;
private String title;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

View File

@@ -1,10 +1,14 @@
package com.example.ninefourone.nutritionmaster.utils;
import android.support.annotation.Nullable;
import com.google.gson.Gson;
import com.sun.istack.internal.Nullable;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import model.MyUser;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
@@ -13,9 +17,19 @@ import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class WebUtils {
public class WebUtil {
private static WebUtil instance = new WebUtil();
private OkHttpClient mClient = new OkHttpClient();
private WebUtil() {
}
public static WebUtil getInstance() {
return instance;
}
/**
* 获取菜谱信息
* 获取具体的菜谱信息
* {
* "flavor": "咸鲜味",
* "calorie": 234,
@@ -35,52 +49,34 @@ public class WebUtils {
* },
* }
*/
public static void getMenu(String menuName, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
public void getMenu(String menuName, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/menus/" + menuName + "/").build();
mClient.newCall(request).enqueue(callback);
}
/**
* 获取病相关的菜谱和元素信息
* 传入含有病的意义的菜谱分类名称,比如青少年食谱
* 获取count个随机菜谱,在回调中解析为一个Menu数组
*
* {
* "menu_classification": {
* "classification": "青少年食谱",
* "cure_occupation": [
* "学生"
* ],
* "menu_effect": [
* "三鲜鳝汤",
* "上海糖醋小排骨",
* ...
* ]
* },
* "elements": {
* "id": 84,
* "calorie": 1.1,
* ...
* }
* }
* @param count
* @param callback
*/
public static void getIllness(String illnessClassification, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
Request request = new Request.Builder().url("http://120.77.182.38/illness/" + illnessClassification + "/").build();
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();
mClient.newCall(request).enqueue(callback);
}
/**
* 获取count个随机菜谱,在回调中解析为一个Menu数组
* 随机获取一定数量的小知识
*
* @param count
* @param callback
*/
public static void getRandomMenus(int count, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
Request request = new Request.Builder().url("http://127.0.0.1:8000/menus/get_random_menus/?count=" + String.valueOf(count)).build();
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();
mClient.newCall(request).enqueue(callback);
}
/**
* 获取某食材可以做的菜
* [
@@ -104,8 +100,7 @@ public class WebUtils {
* @param materialName
* @param callback
*/
public static void getFoodMaterial(String materialName, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
public void getFoodMaterial(String materialName, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/foodmaterial/" + materialName + "/").build();
mClient.newCall(request).enqueue(callback);
}
@@ -130,8 +125,7 @@ public class WebUtils {
* "冬苋菜豆腐汤",
* "冬菜排骨汤",
*/
public static void getMenuClassification(String classificationName, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
public void getMenuClassification(String classificationName, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/menuclassification/" + classificationName + "/").build();
mClient.newCall(request).enqueue(callback);
}
@@ -149,8 +143,7 @@ public class WebUtils {
* ]
* }
*/
public static void getOccupation(String occupationName, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
public void getOccupation(String occupationName, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/occupation/" + occupationName + "/").build();
mClient.newCall(request).enqueue(callback);
}
@@ -169,21 +162,48 @@ public class WebUtils {
* ]
* }
*/
public static void getPhysique(String physiqueName, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
public void getPhysique(String physiqueName, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/physique/" + physiqueName + "/").build();
mClient.newCall(request).enqueue(callback);
}
public static void getUser(String username, Callback callback) {
OkHttpClient mClient = new OkHttpClient();
/**
* 获取病相关的菜谱和元素信息
* 传入含有病的意义的菜谱分类名称,比如青少年食谱
* <p>
* {
* "menu_classification": {
* "classification": "青少年食谱",
* "cure_occupation": [
* "学生"
* ],
* "menu_effect": [
* "三鲜鳝汤",
* "上海糖醋小排骨",
* ...
* ]
* },
* "elements": {
* "id": 84,
* "calorie": 1.1,
* ...
* }
* }
*/
public void getIllness(String illnessClassification, Callback callback) {
Request request = new Request.Builder().url("http://120.77.182.38/illness/" + illnessClassification + "/").build();
mClient.newCall(request).enqueue(callback);
}
public void getUser(String username, Callback callback) {
mClient = new OkHttpClient();
Request request = new Request.Builder().url("http://120.77.182.38/myuser/" + username + "/").build();
mClient.newCall(request).enqueue(callback);
}
/**
* 注意在回调中处理username重复的情况
*/
*//*
public static void postUser(String username, String password, String sex, @Nullable String occupationName, @Nullable String physicalName, Callback callback) {
RequestBody formBody = new FormBody.Builder()
.add("username", username)
@@ -199,9 +219,9 @@ public class WebUtils {
OkHttpClient mClient = new OkHttpClient();
mClient.newCall(request).enqueue(callback);
}
}*/
public static void changeUserPassword(String username, String password, Callback callback) {
/*public static void changeUserPassword(String username, String password, Callback callback) {
String url = "http://120.77.182.38/myuser/" + username + "/";
RequestBody formBody = new FormBody.Builder()
.add("username", username)
@@ -210,50 +230,234 @@ public class WebUtils {
Request request = new Request.Builder()
.url(url)
.put(formBody)
.patch(formBody)
.build();
OkHttpClient mClient = new OkHttpClient();
mClient.newCall(request).enqueue(callback);
}
public static void changeUserOccupation(String username,String password, String occupation, Callback callback) {
*//**
* 修改职业
* 传入职业名称参数
*//*
public static void changeUserOccupation(String username, String occupation, Callback callback) {
String url = "http://120.77.182.38/myuser/" + username + "/";
RequestBody formBody = new FormBody.Builder()
.add("username", username)
.add("password",password)
.add("occupation", occupation)
.build();
Request request = new Request.Builder()
.url(url)
.put(formBody)
.patch(formBody)
.build();
OkHttpClient mClient = new OkHttpClient();
mClient.newCall(request).enqueue(callback);
}
public static void changeUserPhysique(String username,String password, String physique, Callback callback) {
*//**
* 修改体质
*
* @param physique 体质名称
*//*
public static void changeUserPhysique(String username, String physique, Callback callback) {
String url = "http://120.77.182.38/myuser/" + username + "/";
RequestBody formBody = new FormBody.Builder()
.add("username", username)
.add("password",password)
.add("physique", physique)
.build();
Request request = new Request.Builder()
.url(url)
.put(formBody)
.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();
Class<?> c = Class.forName("model.MyUser");
Field[] fields = c.getDeclaredFields();
for (Field f : fields) {
String fieldName = f.toString().substring(f.toString().lastIndexOf(".") + 1);
f.setAccessible(true);
Object object = f.get(user);//获取属性的值
if (object != null ) {
//illness属性是一个list,需要加入每个list的值,而不是list对象
if (fieldName.equals("illness")) {
List<String> illnessList = (List<String>) object;
for (String ill : illnessList) {
builder.add("illness", ill);
}
} else {
builder.add(fieldName, String.valueOf(object));
}
}
}
RequestBody formBody = builder.build();
// for (int i = 0; i < ((FormBody) formBody).size(); i++) {
// System.out.println(((FormBody) formBody).name(i) + " : " + ((FormBody) formBody).value(i));
// }
return formBody;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
/**
* 注册用户注意username必须要有
*
* @param user
*/
public void createUser(MyUser user, Callback callback) {
String url = "http://120.77.182.38/myuser/";
RequestBody formBody = buildUserRequestBody(user);
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
mClient.newCall(request).enqueue(callback);
}
/**
* 把user要更新的信息传入, 注意username必须要有
*
* @param user
*/
public void changeUserInfo(MyUser user, Callback callback) {
String url = "http://120.77.182.38/myuser/" + user.getUsername() + "/";
RequestBody formBody = buildUserRequestBody(user);
Request request = new Request.Builder()
.url(url)
.patch(formBody)
.build();
mClient.newCall(request).enqueue(callback);
}
/**
* 用户吃了一个菜,更新用户本周已吃摄入的营养元素的量
* 返回当前user的最新信息,用MyUser类解析json
* @param username
* @param menuName
*/
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)
.add("menu_name", menuName)
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
mClient.newCall(request).enqueue(callback);
}
public static void main(String[] args) {
/*WebUtils.getMenu("雪丽对虾", new Callback() {
/*
MyUser testUser = new MyUser();
testUser.setUsername("test6");
testUser.setPassword("66666");
testUser.setAge(8);
testUser.setHeight(175);
testUser.setPhysical_name("平和质");
List<String> ills = new ArrayList<>();
ills.add("乌发食谱");
ills.add("失眠食谱");
testUser.setIllness(ills);
//创建用户
WebUtil.getInstance().createUser(testUser, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseJson = response.body().string();
System.out.println(new Gson().fromJson(responseJson, MyUser.class));
}
});
//修改用户信息
WebUtil.getInstance().changeUserInfo(testUser, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(new Gson().fromJson(response.body().string(), MyUser.class));
}
});*/
/*WebUtil.getInstance().eatenMenu("test5", "软熘虾片", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseJson = response.body().string();
System.out.println(responseJson);
MyUser testUser = new Gson().fromJson(responseJson, MyUser.class);
System.out.println(testUser);
}
});*/
/*WebUtil.getIllness("青少年食谱", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(new Gson().fromJson(response.body().string(),Illness.class));
}
});*/
/* WebUtil.getMenu("雪丽对虾", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -281,7 +485,7 @@ public class WebUtils {
}
});*/
/* WebUtils.getFoodMaterial("西红柿", new Callback() {
/*WebUtil.getFoodMaterial("西红柿", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -290,12 +494,12 @@ public class WebUtils {
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
FoodMaterial[] foodMaterialList = new Gson().fromJson(json, FoodMaterial[].class);
System.out.println(Arrays.toString(foodMaterialList));
FoodMaterial foodMaterial = new Gson().fromJson(json, FoodMaterial.class);
System.out.println(foodMaterial);
}
});*/
/*WebUtils.getMenuClassification("川菜", new Callback() {
/*WebUtil.getMenuClassification("川菜", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -308,7 +512,7 @@ public class WebUtils {
}
});*/
/*WebUtils.getOccupation("程序员", new Callback() {
/*WebUtil.getOccupation("程序员", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -316,11 +520,13 @@ public class WebUtils {
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
String json = response.body().string();
System.out.println(new Gson().fromJson(json, Occupation.class));
}
});*/
/*WebUtils.getPhysique("气虚质", new Callback() {
/*WebUtil.getPhysique("气虚质", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -328,11 +534,11 @@ public class WebUtils {
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(new Gson().fromJson(response.body().string(),Physique.class));
System.out.println(new Gson().fromJson(response.body().string(), Physique.class));
}
});*/
/*WebUtils.getUser("okhttptest", new Callback() {
/*WebUtil.instance.getUser("test5", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
@@ -340,21 +546,21 @@ public class WebUtils {
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(new Gson().fromJson(response.body().string(),MyUser.class));
}
});*/
WebUtils.changeUserOccupation("updatatest","1234" ,"气虚质", new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
System.out.println(new Gson().fromJson(response.body().string(), MyUser.class));
}
});
*/
/* WebUtil.getRandomTricks(10, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
});*/
}
}