/**
   * 根据食品id和校区获取某个零食
   *
   * @param foodId
   * @param campusId
   * @return
   */
  @RequestMapping("/getFoodById")
  public @ResponseBody Map<String, Object> selectFoods(
      @RequestParam Long foodId, @RequestParam Integer campusId) {
    Map<String, Object> map = new HashMap<String, Object>();
    try {
      DecimalFormat df = new DecimalFormat("#.0");

      Map<String, Object> paramMap = new HashMap<>();
      paramMap.put("foodId", foodId);
      paramMap.put("campusId", campusId);

      Food food = foodService.selectFoodByPrimaryKey(paramMap);
      List<FoodSpecial> foodSpecials = foodService.getFoodSpecial(paramMap);

      if (food != null) {
        Float gradeFloat = foodService.getAvageGrade(paramMap);
        if (gradeFloat == null) {
          food.setGrade(0f);
        } else {
          food.setGrade(Float.parseFloat(df.format(gradeFloat)));
        }

        food.setCommentNumber(foodService.getCommentCountsById(paramMap));
        food.setFoodSpecial(foodSpecials);
        map.put(Constants.STATUS, Constants.SUCCESS);
        map.put(Constants.MESSAGE, "获取食品成功");
        map.put("food", food);
      } else {
        map.put(Constants.STATUS, Constants.FAILURE);
        map.put(Constants.MESSAGE, "没有该零食");
      }
    } catch (Exception e) {
      e.getStackTrace();
      map.put(Constants.STATUS, Constants.FAILURE);
      map.put(Constants.MESSAGE, "获取零食失败");
    }
    return map;
  }
  /**
   * 在pc端添加食品
   *
   * @param myfile
   * @param request
   * @return
   */
  @RequestMapping(value = "/updateFoods.do")
  public String updateFoods(@RequestParam MultipartFile[] myfile, HttpServletRequest request) {
    try {
      Long foodId = Long.valueOf(request.getParameter("foodId")); // 获取食品id
      Float price = Float.valueOf(request.getParameter("price")); // 获取价格
      String name = request.getParameter("foodName"); // 获取食品名称
      Float discountPrice = Float.valueOf(request.getParameter("discountPrice")); // 获取折扣价
      Short status = Short.valueOf(request.getParameter("status")); // 获取食品上架下架状态
      Short isDiscount = Short.valueOf(request.getParameter("is_discount")); // 是否打折
      String foodFlag = request.getParameter("foodTag"); // 食品标签
      Integer categoryId = Integer.valueOf(request.getParameter("categoyId")); // 获取分类Id
      Float primeCost = null;

      String temp1 = request.getParameter("primeCost"); // 获取成本价
      String temp2 = request.getParameter("foodCount"); // 获取食品数量
      Integer campusId = Integer.valueOf(request.getParameter("campusId")); // 获取校区
      if (temp1 != null && !temp1.trim().equals("")) {
        primeCost = Float.valueOf(request.getParameter("primeCost"));
      }
      Integer foodCount = null;
      if (temp2 != null && !temp2.trim().equals("")) {
        foodCount = Integer.valueOf(request.getParameter("foodCount"));
      }

      Short isDefault = Short.valueOf(request.getParameter("default_special"));
      String realPath = request.getSession().getServletContext().getRealPath("/");
      realPath = realPath.replace("SJFood", "MickeyImage");
      realPath = realPath.concat("\\food\\");
      System.out.println(realPath); // 打印出服务器路径

      List<String> imageUrl = new ArrayList<String>();
      for (MultipartFile file : myfile) {
        if (file.isEmpty()) {
          System.out.println("文件未上传");
          imageUrl.add(null);
        } else {
          String contentType = file.getContentType();

          if (contentType.startsWith("image")) {
            String newFileName = new Date().getTime() + "" + new Random().nextInt() + ".jpg";
            FileUtils.copyInputStreamToFile(
                file.getInputStream(), new File(realPath, newFileName)); // 写文件
            imageUrl.add(Constants.localIp + "/food/" + newFileName);
          }
        }
      }
      Food food =
          new Food(
              campusId,
              foodId,
              name,
              price,
              discountPrice,
              imageUrl.get(0),
              imageUrl.get(1),
              status,
              foodFlag,
              isDiscount,
              categoryId,
              primeCost);

      Map<String, Object> paramMap = new HashMap<String, Object>();
      paramMap.put("campusId", campusId);
      paramMap.put("foodId", foodId);
      Food orignFood = foodService.selectFoodByPrimaryKey(paramMap); // 查看该食品是否存在
      int flag = 0;
      if (orignFood == null) {
        // 不存在即添加
        flag = foodService.insertFoodSelective(food);
        // 只有在增加食品的时候添加默认口味才有效
        if (flag != -1 && flag != 0) {
          if (isDefault == 1 && foodCount != null) {
            // 添加默认口味
            FoodSpecial foodSpecial = new FoodSpecial(campusId, foodId, "默认口味", foodCount);
            foodSpecial.setSpecialId(1);
            flag = foodService.addFoodSpecial(foodSpecial);
            if (flag != -1 && flag != 0) {
              return "redirect:/pages/food.html";
            }
          }
        }
      } else {
        // 存在即更新
        flag = foodService.updateFoodByPrimaryKeySelective(food);

        // 删除原食品主图片
        if (food.getImgUrl() != null && orignFood.getImgUrl() != null) {
          String[] temp = orignFood.getImgUrl().split("/");
          String imageName = temp[(temp.length - 1)];

          String name2 = realPath + imageName;

          File file = new File(name2);
          if (file.isFile()) {
            file.delete(); // 删除
          }
        }

        // 删除原食品辅助图片
        if (food.getInfo() != null && orignFood.getInfo() != null) {
          String[] temp = orignFood.getInfo().split("/");
          String imageName = temp[(temp.length - 1)];

          String name2 = realPath + imageName;

          File file = new File(name2);
          if (file.isFile()) {
            file.delete(); // 删除
          }
        }

        if (flag != -1 && flag != 0) {
          return "redirect:/pages/food.html";
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
      return "redirect:/pages/uploadError.html";
    }
    return "redirect:/pages/uploadError.html";
  }