浏览代码

1。添加食物部分相关操作

a0000 2 年之前
父节点
当前提交
a8f22640a6
共有 38 个文件被更改,包括 709 次插入29 次删除
  1. 21 0
      src/main/java/com/YuyeTech/HeartRate/enums/FoodEnum.java
  2. 1 1
      src/main/java/com/YuyeTech/HeartRate/enums/RedisType.java
  3. 2 1
      src/main/java/com/YuyeTech/HeartRate/enums/ResultEnum.java
  4. 1 0
      src/main/java/com/YuyeTech/HeartRate/enums/UserEnum.java
  5. 15 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/controller/CDietInfoController.java
  6. 24 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/projo/CDietInfo.java
  7. 13 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/repository/CDietInfoRepository.java
  8. 10 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/service/CDietInfoService.java
  9. 27 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/service/CDietInfoServiceImpl.java
  10. 19 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/vo/CDietInfoSimpleVo.java
  11. 19 0
      src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/vo/CDietInfoVo.java
  12. 15 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/controller/CHistoricalCalorieController.java
  13. 24 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/projo/CHistoricalCalorie.java
  14. 14 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/repository/CHistoricalCalorieRepository.java
  15. 9 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/service/CHistoricalCalorieService.java
  16. 26 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/service/CHistoricalCalorieServiceImpl.java
  17. 19 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/vo/CHistoricalCalorieSimpleVo.java
  18. 19 0
      src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/vo/CHistoricalCalorieVo.java
  19. 5 3
      src/main/java/com/YuyeTech/HeartRate/game/controller/LoginController.java
  20. 45 17
      src/main/java/com/YuyeTech/HeartRate/game/food/controller/FoodController.java
  21. 2 0
      src/main/java/com/YuyeTech/HeartRate/game/food/pojo/Food.java
  22. 5 0
      src/main/java/com/YuyeTech/HeartRate/game/food/repository/FoodRepository.java
  23. 22 0
      src/main/java/com/YuyeTech/HeartRate/game/food/scheduled/FoodDayTask.java
  24. 22 0
      src/main/java/com/YuyeTech/HeartRate/game/food/scheduled/FoodQuartzConfig.java
  25. 2 0
      src/main/java/com/YuyeTech/HeartRate/game/food/service/FoodService.java
  26. 8 0
      src/main/java/com/YuyeTech/HeartRate/game/food/service/FoodServiceImpl.java
  27. 2 0
      src/main/java/com/YuyeTech/HeartRate/game/food/vo/FoodSimpleVo.java
  28. 2 0
      src/main/java/com/YuyeTech/HeartRate/game/food/vo/FoodVo.java
  29. 二进制
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/Heart_App_Server_Layui\\src\\m.textClipping
  30. 42 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/controller/FoodRecommendController.java
  31. 28 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/pojo/FoodRecommend.java
  32. 9 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/repository/FoodRecommendRepository.java
  33. 9 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/service/FoodRecommendService.java
  34. 21 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/service/FoodRecommendServiceImpl.java
  35. 23 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/vo/FoodRecommendSimpleVo.java
  36. 23 0
      src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/vo/FoodRecommendVo.java
  37. 154 0
      src/main/java/com/YuyeTech/HeartRate/game/userinfo/controller/UserInfoController.java
  38. 7 7
      src/main/java/com/YuyeTech/HeartRate/utils/CodeDOM.java

+ 21 - 0
src/main/java/com/YuyeTech/HeartRate/enums/FoodEnum.java

@@ -0,0 +1,21 @@
+package com.YuyeTech.HeartRate.enums;
+
+import lombok.Getter;
+
+//碳水:燕麦、大米、小米、紫薯、糯米、薏米
+//蛋白质:鸡蛋、鸡胸肉、牛肉、
+//蔬菜:生菜、黄瓜、番茄、洋葱、胡萝卜、白菜、玉米
+//油  :椰子油、橄榄油、菜油、花生油
+@Getter
+public enum FoodEnum {
+    CARBOHYDRATES(0,"碳水"),
+    PROTEINS(1,"蛋白质"),
+    VEGETABLES(2,"蔬菜"),
+    OILS(3,"油");
+    private Integer value;
+    private String name;
+    FoodEnum(Integer value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+}

+ 1 - 1
src/main/java/com/YuyeTech/HeartRate/enums/RedisType.java

@@ -10,5 +10,5 @@ public enum RedisType {
     SMS,
     TOKEN,
     RANKING_CITY,
-    RANKING_CHINA
+    RANKING_CHINAz
 }

+ 2 - 1
src/main/java/com/YuyeTech/HeartRate/enums/ResultEnum.java

@@ -79,7 +79,8 @@ public enum ResultEnum {
     USER_LIMIT_LOGIN(404,"用户限制登录!"),
     USER_LOGIN_LOCK(405,"用户保存繁忙,请重试操作!"),
     USER_DATA_DOES_NOT_EXIST(400,"不存在用户关联信息!"),
-
+    CODE_ERROR(406,"验证码异常!"),
+    CODE_DELETE_ERROR(407,"验证码操作失败!")
     ;
     private Integer code;
 

+ 1 - 0
src/main/java/com/YuyeTech/HeartRate/enums/UserEnum.java

@@ -28,6 +28,7 @@ public enum UserEnum implements CodeEnum {
     USER_MODIFY_ERROR(217,"修改密码发生错误"),
     USER_MODIFY_ACCOUNT_ERROR(218, "修改密码账号错误"),
     USER_OLD_PASSWORD_ERROR(219,"旧密码错误"),
+    USER_INFO_NULL(220,"用户数据异常")
     ;
     private Integer code;
 

+ 15 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/controller/CDietInfoController.java

@@ -0,0 +1,15 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.controller;
+
+import com.YuyeTech.HeartRate.common.controller.*;
+import com.YuyeTech.HeartRate.game.cDietInfo.projo.CDietInfo;
+import com.YuyeTech.HeartRate.game.cDietInfo.vo.CDietInfoVo;
+import com.YuyeTech.HeartRate.game.cDietInfo.service.CDietInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/cDietInfo/")
+public class CDietInfoController extends CommonController<CDietInfoVo, CDietInfo, Integer> {
+    @Autowired
+    private CDietInfoService cDietInfoService;
+}

+ 24 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/projo/CDietInfo.java

@@ -0,0 +1,24 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.projo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "c_diet_info")
+@Data
+public class CDietInfo implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
+
+    private String userId;//
+
+    private Double preCalorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 13 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/repository/CDietInfoRepository.java

@@ -0,0 +1,13 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.repository;
+
+import com.YuyeTech.HeartRate.common.repository.*;
+import com.YuyeTech.HeartRate.game.cDietInfo.projo.CDietInfo;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface CDietInfoRepository extends CommonRepository<CDietInfo, Integer> {
+
+    Optional<CDietInfo>  findByUserId(String userId);
+}

+ 10 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/service/CDietInfoService.java

@@ -0,0 +1,10 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.cDietInfo.projo.CDietInfo;
+import com.YuyeTech.HeartRate.game.cDietInfo.vo.CDietInfoVo;
+
+public interface CDietInfoService extends CommonService<CDietInfoVo, CDietInfo, Integer> {
+
+    CDietInfo findByUserId(String userId);
+}

+ 27 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/service/CDietInfoServiceImpl.java

@@ -0,0 +1,27 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.cDietInfo.projo.CDietInfo;
+import com.YuyeTech.HeartRate.game.cDietInfo.vo.CDietInfoVo;
+import com.YuyeTech.HeartRate.game.cDietInfo.repository.CDietInfoRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Service
+@Transactional
+public class CDietInfoServiceImpl extends CommonServiceImpl<CDietInfoVo, CDietInfo, Integer> implements CDietInfoService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private CDietInfoRepository cDietInfoRepository;
+
+
+    @Override
+    public CDietInfo findByUserId(String userId) {
+        return cDietInfoRepository.findByUserId(userId).orElse(null);
+    }
+}

+ 19 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/vo/CDietInfoSimpleVo.java

@@ -0,0 +1,19 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CDietInfoSimpleVo implements Serializable {
+    private Integer id;//
+
+    private String userId;//
+
+    private Double preCalorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 19 - 0
src/main/java/com/YuyeTech/HeartRate/game/cDietInfo/vo/CDietInfoVo.java

@@ -0,0 +1,19 @@
+package com.YuyeTech.HeartRate.game.cDietInfo.vo;
+
+import com.YuyeTech.HeartRate. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CDietInfoVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private String userId;//
+
+    private Double preCalorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 15 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/controller/CHistoricalCalorieController.java

@@ -0,0 +1,15 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.controller;
+
+import com.YuyeTech.HeartRate.common.controller.*;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo.CHistoricalCalorie;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo.CHistoricalCalorieVo;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.service.CHistoricalCalorieService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/cHistoricalCalorie/")
+public class CHistoricalCalorieController extends CommonController<CHistoricalCalorieVo, CHistoricalCalorie, Integer> {
+    @Autowired
+    private CHistoricalCalorieService cHistoricalCalorieService;
+}

+ 24 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/projo/CHistoricalCalorie.java

@@ -0,0 +1,24 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "c_historical_calorie")
+@Data
+public class CHistoricalCalorie implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;//
+
+    private String userId;//
+
+    private Double calorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 14 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/repository/CHistoricalCalorieRepository.java

@@ -0,0 +1,14 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.repository;
+
+import com.YuyeTech.HeartRate.common.repository.*;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo.CHistoricalCalorie;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface CHistoricalCalorieRepository extends CommonRepository<CHistoricalCalorie, Integer> {
+    @Query(value = "select * from c_historical_calorie where TO_DAYS(create_time) = TO_DAYS(NOW())",nativeQuery = true)
+    Optional<CHistoricalCalorie> findByCreateTime();
+}

+ 9 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/service/CHistoricalCalorieService.java

@@ -0,0 +1,9 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo.CHistoricalCalorie;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo.CHistoricalCalorieVo;
+
+public interface CHistoricalCalorieService extends CommonService<CHistoricalCalorieVo, CHistoricalCalorie, Integer> {
+    CHistoricalCalorie findByToday();
+}

+ 26 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/service/CHistoricalCalorieServiceImpl.java

@@ -0,0 +1,26 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo.CHistoricalCalorie;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo.CHistoricalCalorieVo;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.repository.CHistoricalCalorieRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Service
+@Transactional
+public class CHistoricalCalorieServiceImpl extends CommonServiceImpl<CHistoricalCalorieVo, CHistoricalCalorie, Integer> implements CHistoricalCalorieService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private CHistoricalCalorieRepository cHistoricalCalorieRepository;
+
+    @Override
+    public CHistoricalCalorie findByToday() {
+        return cHistoricalCalorieRepository.findByCreateTime().orElse(null);
+    }
+}

+ 19 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/vo/CHistoricalCalorieSimpleVo.java

@@ -0,0 +1,19 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CHistoricalCalorieSimpleVo implements Serializable {
+    private Integer id;//
+
+    private String userId;//
+
+    private Double calorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 19 - 0
src/main/java/com/YuyeTech/HeartRate/game/cHistoricalCalorie/vo/CHistoricalCalorieVo.java

@@ -0,0 +1,19 @@
+package com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo;
+
+import com.YuyeTech.HeartRate. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CHistoricalCalorieVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private String userId;//
+
+    private Double calorie;//卡路里
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 5 - 3
src/main/java/com/YuyeTech/HeartRate/game/controller/LoginController.java

@@ -6,6 +6,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
 import cn.hutool.core.date.DateUtil;
 import com.YuyeTech.HeartRate.dataobject.*;
 import com.YuyeTech.HeartRate.enums.*;
+import com.YuyeTech.HeartRate.exception.AuthorizeException;
 import com.YuyeTech.HeartRate.form.ClientForm;
 import com.YuyeTech.HeartRate.game.TP_AppleInfo.projo.AppleInfo;
 import com.YuyeTech.HeartRate.game.TP_AppleInfo.service.AppleInfoService;
@@ -1052,7 +1053,7 @@ public class LoginController {
             }
             //如果不存在用户
             if (mainInfo == null) {
-                return ResultVOUtil.error(UserEnum.USER_REGISTER_ERROR.getCode(), UserEnum.USER_REGISTER_ERROR.getMessage());
+                return ResultVOUtil.error(ResultEnum.USER_DATA_DOES_NOT_EXIST.getCode(), ResultEnum.USER_DATA_DOES_NOT_EXIST.getMessage());
             }
             //设置密码
             mainInfo.setPassword(password);
@@ -1061,12 +1062,13 @@ public class LoginController {
             Boolean bSuccess = redisSettingMap.deleteValue(RedisType.SMS, account);
             if (!bSuccess) {
                 //删除不成功,redis不存在
-                log.info("redis 没有对应的token");
+//                log.info("redis 没有对应的token");
+                return ResultVOUtil.error(ResultEnum.CODE_DELETE_ERROR.getCode(), ResultEnum.CODE_DELETE_ERROR.getMessage());
             }
             return ResultVOUtil.success();
 
         } catch (UserException e) {
-            return ResultVOUtil.error(UserEnum.USER_REGISTER_ERROR.getCode(), UserEnum.USER_REGISTER_ERROR.getMessage());
+            return ResultVOUtil.error(UserEnum.USER_MODIFY_ACCOUNT_ERROR.getCode(), UserEnum.USER_MODIFY_ACCOUNT_ERROR.getMessage());
         }
 
     }

+ 45 - 17
src/main/java/com/YuyeTech/HeartRate/game/food/controller/FoodController.java

@@ -2,14 +2,19 @@ package com.YuyeTech.HeartRate.game.food.controller;
 
 import com.YuyeTech.HeartRate.VO.ResultVO;
 import com.YuyeTech.HeartRate.common.controller.*;
+import com.YuyeTech.HeartRate.common.pojo.PageInfo;
 import com.YuyeTech.HeartRate.enums.DeviceEnum;
 import com.YuyeTech.HeartRate.game.bluetoothinfo.projo.BluetoothInfo;
 import com.YuyeTech.HeartRate.game.food.pojo.Food;
 import com.YuyeTech.HeartRate.game.food.vo.FoodSimpleVo;
 import com.YuyeTech.HeartRate.game.food.vo.FoodVo;
 import com.YuyeTech.HeartRate.game.food.service.FoodService;
+import com.YuyeTech.HeartRate.game.foodRecommend.service.FoodRecommendService;
+import com.YuyeTech.HeartRate.game.foodRecommend.vo.FoodRecommendVo;
+import com.YuyeTech.HeartRate.utils.CopyUtil;
 import com.YuyeTech.HeartRate.utils.ResultVOUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.beanutils.BeanUtils;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
@@ -20,6 +25,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RestController
@@ -27,36 +33,58 @@ import java.util.List;
 public class FoodController extends CommonController<FoodVo, Food, Integer> {
     @Autowired
     private FoodService foodService;
+    @Autowired
+    private FoodRecommendService foodRecommendService;
 
 
+    /**
+     * 直接查询服务器缓存数据,数据量不够时候
+     * 直接查询数据库数据,数据量不够时候
+     * 直接查询薄荷网数据,同步更新到缓存和数据库中
+     * @param keyword
+     * @param page
+     * @return
+     */
     @GetMapping(value = "/searchFromKeyword")
     public ResultVO searchFromKeyword(@RequestParam(value = "keyword") String keyword,
                                     @RequestParam(value = "page" ,defaultValue = "1") Integer page){
-        //1.查询薄荷网数据
-        //2.查询缓存或者数据库数据
-        //3.对比,如果不存在的数据,把薄荷网数据储存到数据库
-        //4.缓存对应存储的数据,多用户冲突查询时候,直接查询缓存
-        //4.返回对应数据
-        // 先查询缓存,缓存没有数据查询数据库
-        //  如果数据库存在数据,返回数据并且放入缓存
-        //2.如果
+
         String url = "/food/search?keyword="+keyword+"&page="+page;
         return  ResultVOUtil.success(foodService.getListFromUrl(url));
     }
 
-
+    /**
+     * 直接查询服务器缓存数据,数据量不够时候
+     * 直接查询数据库数据,数据量不够时候
+     * 直接查询薄荷网数据,同步更新到缓存和数据库中
+     * @param group
+     * @param page
+     * @return
+     */
     @GetMapping(value = "/searchFromGroup")
     public ResultVO searchFromGroup(@RequestParam(value = "group") Integer group,
                                       @RequestParam(value = "page" ,defaultValue = "1") Integer page){
-        //1.查询薄荷网数据
-        //2.查询缓存或者数据库数据
-        //3.对比,如果不存在的数据,把薄荷网数据储存到数据库
-        //4.缓存对应存储的数据,多用户冲突查询时候,直接查询缓存
-        //4.返回对应数据
-        // 先查询缓存,缓存没有数据查询数据库
-        //  如果数据库存在数据,返回数据并且放入缓存
-        //2.如果
+
         String url = "/food/group/"+group +"&page="+page;
         return  ResultVOUtil.success(foodService.getListFromUrl(url));
     }
+
+    /**
+     * 按照类型获取推荐数据
+     * @param type
+     * @return
+     */
+    @GetMapping(value = "/byType")
+    public ResultVO onGetByType(@RequestParam(value = "type") Integer type){
+        FoodRecommendVo foodRecommendVo = new FoodRecommendVo();
+        foodRecommendVo.setType(type);
+        //推荐列表
+        List<FoodRecommendVo> foodRecommendVos = foodRecommendService.listVo(foodRecommendVo);
+        List<Integer> ids = foodRecommendVos.stream().map(e->e.getFoodId()).collect(Collectors.toList());
+        //根据id列表获取信息
+        List<Food> foodList = foodService.getListByIds(ids);
+        List<FoodSimpleVo> foodSimpleVos = CopyUtil.copyList(foodList, FoodSimpleVo.class);
+        return  ResultVOUtil.success(foodSimpleVos);
+    }
+
 }

+ 2 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/pojo/Food.java

@@ -14,6 +14,8 @@ public class Food implements Serializable {
 
     private String title;//食物标题
 
+    private Integer proType;//食物属性分类,如碳水之类的,这里占比重
+
     private String type;//数据类型
 
     private String name;//数据名字

+ 5 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/repository/FoodRepository.java

@@ -4,6 +4,11 @@ import com.YuyeTech.HeartRate.common.repository.*;
 import com.YuyeTech.HeartRate.game.food.pojo.Food;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface FoodRepository extends CommonRepository<Food, Integer> {
+
+    List<Food>  findAllByIdIn(List<Integer> ids);
+
 }

+ 22 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/scheduled/FoodDayTask.java

@@ -0,0 +1,22 @@
+package com.YuyeTech.HeartRate.game.food.scheduled;
+
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+
+@EnableScheduling
+public class FoodDayTask extends QuartzJobBean {
+
+    /**
+     * 执行搜索数据任务
+     * @param jobExecutionContext
+     * @throws JobExecutionException
+     */
+    @Override
+    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        //取用户搜索的字段数据,来进行数据更新到本地
+
+    }
+}

+ 22 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/scheduled/FoodQuartzConfig.java

@@ -0,0 +1,22 @@
+package com.YuyeTech.HeartRate.game.food.scheduled;
+
+import org.quartz.CronScheduleBuilder;
+import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class FoodQuartzConfig {
+
+    private static String DayTrigger = "0/5 * * * * ?";
+
+    @Bean
+    public Trigger syncFoodDayTrigger(){
+        //每隔五秒触发一次,暂时
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(DayTrigger);
+
+        Trigger trigger = TriggerBuilder.newTrigger().forJob("").withSchedule(cronScheduleBuilder).build();
+        return trigger;
+    }
+}

+ 2 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/service/FoodService.java

@@ -12,4 +12,6 @@ public interface FoodService extends CommonService<FoodVo, Food, Integer> {
     Food addFood(Food food);
 
     List<FoodSimpleVo> getListFromUrl(String url);
+
+    List<Food> getListByIds(List<Integer> ids);
 }

+ 8 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/service/FoodServiceImpl.java

@@ -1,6 +1,7 @@
 package com.YuyeTech.HeartRate.game.food.service;
 
 import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.enums.FoodEnum;
 import com.YuyeTech.HeartRate.game.food.pojo.Food;
 import com.YuyeTech.HeartRate.game.food.vo.FoodSimpleVo;
 import com.YuyeTech.HeartRate.game.food.vo.FoodVo;
@@ -98,6 +99,7 @@ public class FoodServiceImpl extends CommonServiceImpl<FoodVo, Food, Integer> im
 
                 if(_name.text().indexOf("热量")>-1){
                     foodVo.setKcal(_value);
+
                 }else if(_name.text().indexOf("碳水化合物")>-1){
                     foodVo.setCarbohydrate(_value);
                 }else if(_name.text().indexOf("脂肪")>-1){
@@ -115,4 +117,10 @@ public class FoodServiceImpl extends CommonServiceImpl<FoodVo, Food, Integer> im
 
         return foodVoList;
     }
+
+
+    @Override
+    public List<Food> getListByIds(List<Integer> ids) {
+        return foodRepository.findAllByIdIn(ids);
+    }
 }

+ 2 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/vo/FoodSimpleVo.java

@@ -10,6 +10,8 @@ public class FoodSimpleVo implements Serializable {
 
     private String title;//食物标题
 
+    private Integer proType;//食物属性分类,如碳水之类的,这里占比重
+
     private String type;//数据类型
 
     private String name;//数据名字

+ 2 - 0
src/main/java/com/YuyeTech/HeartRate/game/food/vo/FoodVo.java

@@ -10,6 +10,8 @@ public class FoodVo extends PageCondition implements Serializable {
 
     private String title;//食物标题
 
+    private Integer proType;//食物属性分类,如碳水之类的,这里占比重
+
     private String type;//数据类型
 
     private String name;//数据名字

二进制
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/Heart_App_Server_Layui\\src\\m.textClipping


+ 42 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/controller/FoodRecommendController.java

@@ -0,0 +1,42 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.controller;
+
+import com.YuyeTech.HeartRate.VO.ResultVO;
+import com.YuyeTech.HeartRate.common.controller.*;
+import com.YuyeTech.HeartRate.common.pojo.PageInfo;
+import com.YuyeTech.HeartRate.enums.FoodEnum;
+import com.YuyeTech.HeartRate.game.foodRecommend.pojo.FoodRecommend;
+import com.YuyeTech.HeartRate.game.foodRecommend.vo.FoodRecommendVo;
+import com.YuyeTech.HeartRate.game.foodRecommend.service.FoodRecommendService;
+import com.YuyeTech.HeartRate.utils.ResultVOUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+
+@RestController
+@RequestMapping("/foodRecommend/")
+public class FoodRecommendController extends CommonController<FoodRecommendVo, FoodRecommend, Integer> {
+    @Autowired
+    private FoodRecommendService foodRecommendService;
+
+    /**
+     *  获取分类
+     * @return
+     */
+    @GetMapping(value = "/types")
+    public ResultVO onGetTypes(){
+        List<HashMap<String, Object>> list = new ArrayList<>();
+        for (FoodEnum foodEnumEnum : EnumSet.allOf(FoodEnum.class)) {
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("name", foodEnumEnum.getName());
+            map.put("value", foodEnumEnum.getValue());
+            list.add(map);
+        }
+        return  ResultVOUtil.success(list);
+    }
+
+
+}

+ 28 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/pojo/FoodRecommend.java

@@ -0,0 +1,28 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.pojo;
+
+import lombok.Data;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "food_recommend")
+@Data
+public class FoodRecommend implements Serializable {
+    @Id
+    @GeneratedValue(strategy= GenerationType.IDENTITY)
+    private Integer id;//
+
+    private Integer type;//属于的类型
+
+    private Integer foodId;//推荐食物表的id
+
+    private Integer isShow;//是否显示
+
+    private Date showTime;//
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 9 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/repository/FoodRecommendRepository.java

@@ -0,0 +1,9 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.repository;
+
+import com.YuyeTech.HeartRate.common.repository.*;
+import com.YuyeTech.HeartRate.game.foodRecommend.pojo.FoodRecommend;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface FoodRecommendRepository extends CommonRepository<FoodRecommend, Integer> {
+}

+ 9 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/service/FoodRecommendService.java

@@ -0,0 +1,9 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.foodRecommend.pojo.FoodRecommend;
+import com.YuyeTech.HeartRate.game.foodRecommend.vo.FoodRecommendVo;
+
+public interface FoodRecommendService extends CommonService<FoodRecommendVo, FoodRecommend, Integer> {
+
+}

+ 21 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/service/FoodRecommendServiceImpl.java

@@ -0,0 +1,21 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.service;
+
+import com.YuyeTech.HeartRate.common.service.*;
+import com.YuyeTech.HeartRate.game.foodRecommend.pojo.FoodRecommend;
+import com.YuyeTech.HeartRate.game.foodRecommend.vo.FoodRecommendVo;
+import com.YuyeTech.HeartRate.game.foodRecommend.repository.FoodRecommendRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Service
+@Transactional
+public class FoodRecommendServiceImpl extends CommonServiceImpl<FoodRecommendVo, FoodRecommend, Integer> implements FoodRecommendService{
+
+    @PersistenceContext
+    private EntityManager em;
+    @Autowired
+    private FoodRecommendRepository foodRecommendRepository;
+}

+ 23 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/vo/FoodRecommendSimpleVo.java

@@ -0,0 +1,23 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.vo;
+
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class FoodRecommendSimpleVo implements Serializable {
+    private Integer id;//
+
+    private Integer type;//属于的类型
+
+    private Integer foodId;//推荐食物表的id
+
+    private Integer isShow;//是否显示
+
+    private Date showTime;//
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 23 - 0
src/main/java/com/YuyeTech/HeartRate/game/foodRecommend/vo/FoodRecommendVo.java

@@ -0,0 +1,23 @@
+package com.YuyeTech.HeartRate.game.foodRecommend.vo;
+
+import com.YuyeTech.HeartRate. common.pojo.PageCondition;import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class FoodRecommendVo extends PageCondition implements Serializable {
+    private Integer id;//
+
+    private Integer type;//属于的类型
+
+    private Integer foodId;//推荐食物表的id
+
+    private Integer isShow;//是否显示
+
+    private Date showTime;//
+
+    private Date createTime;//创建时间
+
+    private Date updateTime;//修改时间
+
+}

+ 154 - 0
src/main/java/com/YuyeTech/HeartRate/game/userinfo/controller/UserInfoController.java

@@ -1,6 +1,7 @@
 package com.YuyeTech.HeartRate.game.userinfo.controller;
 
 import cn.hutool.core.date.DateUtil;
+import com.YuyeTech.HeartRate.common.pojo.PageInfo;
 import com.YuyeTech.HeartRate.dataobject.*;
 import com.YuyeTech.HeartRate.dto.FriendInfoDTO;
 import com.YuyeTech.HeartRate.dto.SignInDTO;
@@ -13,6 +14,14 @@ import com.YuyeTech.HeartRate.game.TP_AppleInfo.service.AppleInfoService;
 import com.YuyeTech.HeartRate.game.TP_AppleInfo.vo.AppleInfoVo;
 import com.YuyeTech.HeartRate.game.TP_WxInfo.projo.WxInfo;
 import com.YuyeTech.HeartRate.game.TP_WxInfo.service.WxInfoService;
+import com.YuyeTech.HeartRate.game.cDietInfo.projo.CDietInfo;
+import com.YuyeTech.HeartRate.game.cDietInfo.service.CDietInfoService;
+import com.YuyeTech.HeartRate.game.cDietInfo.vo.CDietInfoSimpleVo;
+import com.YuyeTech.HeartRate.game.cDietInfo.vo.CDietInfoVo;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.projo.CHistoricalCalorie;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.service.CHistoricalCalorieService;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo.CHistoricalCalorieSimpleVo;
+import com.YuyeTech.HeartRate.game.cHistoricalCalorie.vo.CHistoricalCalorieVo;
 import com.YuyeTech.HeartRate.game.imageInfo.projo.Pictures;
 import com.YuyeTech.HeartRate.game.imageInfo.service.PicturesService;
 import com.YuyeTech.HeartRate.game.userinfo.projo.MainInfo;
@@ -74,6 +83,12 @@ public class UserInfoController {
     @Autowired
     private WeightInfoService weightInfoService;
 
+    @Autowired
+    private CHistoricalCalorieService cHistoricalCalorieService;
+
+    @Autowired
+    private CDietInfoService cDietInfoService;
+
     private ImageUtils imageUtils;
 
     @Autowired
@@ -472,6 +487,37 @@ public class UserInfoController {
 
     }
 
+
+    @PostMapping("modify_heart_rate")
+    @Transactional
+    public ResultVO modifyHeartRate(@RequestParam(value = "heartRate") Double heartRate, @RequestParam(value = "userId") String userId) {
+
+        UserInfo userInfo = new UserInfo();
+        try {
+            userInfo = userInfoService.findUserInfoById(userId, false);
+            //数据表没有数据
+            if (userInfo == null) {
+              throw new UserException(UserEnum.USER_INFO_NULL);
+            }
+            userInfo.setSHeartRate(heartRate);
+            //保存数据库,获取保存后的字段
+            userInfo = userInfoService.addUserInfo(userInfo);
+        } catch (UserException e) {
+            return ResultVOUtil.error(e.getCode(), e.getMessage());
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+
+        //vo 返回给前端的字段筛选
+
+        UserInfoVO userInfoVO = new UserInfoVO();
+        BeanUtils.copyProperties(userInfo, userInfoVO);
+        //修改url,添加访问域名
+        String url = aliyunOSSUtil.addDomainName(userInfoVO.getAvatarUrl());
+        userInfoVO.setAvatarUrl(url);
+        return ResultVOUtil.success(userInfoVO);
+    }
+
     /**
      * 获取好友信息列表
      *
@@ -818,4 +864,112 @@ public class UserInfoController {
 
     }
 
+
+    @PostMapping("add_historical_calorie")
+    @Transactional
+    public ResultVO addHistoricalCalorie(@RequestParam(value = "calorie") Double calorie, @RequestParam(value = "userId") String userId) {
+
+
+        try {
+           CHistoricalCalorie cHistoricalCalorie = cHistoricalCalorieService.findByToday();
+           boolean bSaveDate = true;
+           if(cHistoricalCalorie == null){
+               cHistoricalCalorie.setUserId(userId);
+               cHistoricalCalorie.setCalorie(calorie);
+           }else{
+               if(cHistoricalCalorie.getCalorie().equals(calorie)){
+                   bSaveDate = false;
+               }else{
+                   cHistoricalCalorie.setCalorie(calorie);
+               }
+           }
+            CHistoricalCalorieVo cHistoricalCalorieVo = new CHistoricalCalorieVo();
+            BeanUtils.copyProperties(cHistoricalCalorie, cHistoricalCalorieVo);
+            //保存数据库,获取保存后的字段
+            if(bSaveDate){
+                cHistoricalCalorieVo = cHistoricalCalorieService.saveReturnVo(cHistoricalCalorieVo);
+            }
+            cHistoricalCalorieVo.setPage(1);
+            cHistoricalCalorieVo.setRows(10);
+            cHistoricalCalorieVo.setSidx("DESC");
+            cHistoricalCalorieVo.setSord("createTime");
+            PageInfo pageInfo = cHistoricalCalorieService.pageByClass(cHistoricalCalorieVo, CHistoricalCalorieSimpleVo.class);
+
+            Map map = new HashMap();
+            map.put("todayCalorie", cHistoricalCalorieVo.getCalorie());
+            map.put("pageInfo", pageInfo);
+            return ResultVOUtil.success();
+
+        } catch (UserException e) {
+            return ResultVOUtil.error(e.getCode(), e.getMessage());
+        }
+
+    }
+
+    @GetMapping("get_historical_calorie")
+    public ResultVO getHistoricalCalorie(@RequestParam(value = "userId") String userId,
+                                         @RequestParam(value = "page",defaultValue = "1") Integer page,
+                                         @RequestParam(value = "size",defaultValue = "10") Integer size) {
+
+        try {
+            CHistoricalCalorieVo cHistoricalCalorieVo = new CHistoricalCalorieVo();
+            cHistoricalCalorieVo.setPage(page);
+            cHistoricalCalorieVo.setRows(size);
+            cHistoricalCalorieVo.setSidx("DESC");
+            cHistoricalCalorieVo.setSord("createTime");
+            PageInfo pageInfo = cHistoricalCalorieService.pageByClass(cHistoricalCalorieVo, CHistoricalCalorieSimpleVo.class);
+            return ResultVOUtil.success(pageInfo);
+        } catch (UserException e) {
+            return ResultVOUtil.error(e.getCode(), e.getMessage());
+        }
+
+    }
+
+    @PostMapping("upload_diet_calorie")
+    @Transactional
+    public ResultVO uploadDietCalorie(@RequestParam(value = "calorie") Double calorie, @RequestParam(value = "userId") String userId) {
+
+        try {
+            CDietInfo cDietInfo = cDietInfoService.findByUserId(userId);
+            if(cDietInfo == null){
+                cDietInfo = new CDietInfo();
+                cDietInfo.setUserId(userId);
+                cDietInfo.setPreCalorie(calorie);
+                cDietInfo.setCreateTime(new Date());
+                cDietInfo.setUpdateTime(new Date());
+            }else{
+                cDietInfo.setPreCalorie(calorie);
+                // cDietInfo.setUpdateTime(new Date());
+            }
+            //保存数据库,获取保存后的字段
+            CDietInfoVo  cDietInfoVo = new CDietInfoVo();
+            BeanUtils.copyProperties(cDietInfo, cDietInfoVo);
+            cDietInfoVo =  cDietInfoService.saveReturnVo(cDietInfoVo);
+            Map map = new HashMap();
+            map.put("calorie", cDietInfoVo.getPreCalorie());
+            return ResultVOUtil.success(map);
+
+
+
+        } catch (UserException e) {
+            return ResultVOUtil.error(e.getCode(), e.getMessage());
+        }
+
+
+    }
+
+    @GetMapping("get_diet_calorie")
+    public ResultVO getDietCalorie(@RequestParam(value = "userId") String userId) {
+
+        try {
+            CDietInfo cDietInfo = cDietInfoService.findByUserId(userId);
+
+            Map map = new HashMap();
+            map.put("calorie",cDietInfo == null?0:cDietInfo.getPreCalorie());
+            return ResultVOUtil.success(map);
+        } catch (UserException e) {
+            return ResultVOUtil.error(e.getCode(), e.getMessage());
+        }
+
+    }
 }

+ 7 - 7
src/main/java/com/YuyeTech/HeartRate/utils/CodeDOM.java

@@ -549,11 +549,11 @@ public class CodeDOM {
         return tableName + " 后台代码生成完毕!";
     }
 
-    public static void main(String[] args) {
-        //String[] tables = {"food"};
-        //for (String table : tables) {
-        //    String msg = new CodeDOM(table).create();
-        //    System.out.println(msg);
-        //}
-    }
+//    public static void main(String[] args) {
+//        String[] tables = {"food_recommend"};
+//        for (String table : tables) {
+//            String msg = new CodeDOM(table).create();
+//            System.out.println(msg);
+//        }
+//    }
 }