From fcbb7cbe05b6cdcdf91b8599f064b85738810996 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Wed, 20 Apr 2022 16:20:37 +0800
Subject: [PATCH] 穿衣指数接口
---
screen-api/src/main/java/com/moral/api/controller/WeatherController.java | 23 ++++-
screen-api/src/main/java/com/moral/api/service/CityWeatherService.java | 9 ++
screen-api/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java | 25 ++++++
screen-common/src/main/java/com/moral/util/WeatherUtils.java | 163 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 216 insertions(+), 4 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/controller/WeatherController.java b/screen-api/src/main/java/com/moral/api/controller/WeatherController.java
index 65ae957..fd8d8c0 100644
--- a/screen-api/src/main/java/com/moral/api/controller/WeatherController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/WeatherController.java
@@ -1,16 +1,19 @@
package com.moral.api.controller;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.moral.api.entity.CityWeather;
import com.moral.api.service.CityWeatherService;
+import com.moral.constant.Constants;
+import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -42,4 +45,16 @@
Map<String, Object> value = cityWeatherService.queryWeatherByRegionCode(regionCode);
return ResultMessage.ok(value);
}
+
+ @RequestMapping(value = "dressingIndex", method = RequestMethod.GET)
+ public ResultMessage dressingIndex(HttpServletRequest request){
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ Object regionCode = parameters.get("regionCode");
+ Object time = parameters.get("time");
+ if (ObjectUtils.isEmpty(regionCode) || ObjectUtils.isEmpty(time)){
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ Map<String, Object> resultMap = cityWeatherService.dressingIndex(parameters);
+ return ResultMessage.ok(resultMap);
+ }
}
diff --git a/screen-api/src/main/java/com/moral/api/service/CityWeatherService.java b/screen-api/src/main/java/com/moral/api/service/CityWeatherService.java
index f38078e..6fcc1c7 100644
--- a/screen-api/src/main/java/com/moral/api/service/CityWeatherService.java
+++ b/screen-api/src/main/java/com/moral/api/service/CityWeatherService.java
@@ -22,4 +22,13 @@
* @Date: 2021/10/29
*/
Map<String,Object> queryWeatherByRegionCode(Integer regionCode);
+
+ /**
+ *@Description: ������������������������������������������
+ *@Param: [map]
+ *@return: java.util.Map<java.lang.String,java.lang.Object>
+ *@Author: lizijie
+ *@Date: 2022/4/15 17:00
+ **/
+ Map<String,Object> dressingIndex(Map map);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
index 2ecef67..7885edc 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/CityWeatherServiceImpl.java
@@ -1,16 +1,20 @@
package com.moral.api.service.impl;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.moral.api.entity.CityWeather;
import com.moral.api.mapper.CityWeatherMapper;
import com.moral.api.service.CityWeatherService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.RedisConstants;
+import com.moral.util.WeatherUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -36,6 +40,27 @@
return value;
}
+ @Override
+ public Map<String, Object> dressingIndex(Map map) {
+ Map<String,Object> resultMap = new HashMap<>();
+ int city_code = Integer.parseInt(map.get("regionCode").toString());
+ String time = map.get("time").toString();
+ QueryWrapper<CityWeather> cityWeatherQueryWrapper = new QueryWrapper<>();
+ cityWeatherQueryWrapper.eq("city_code",city_code);
+ cityWeatherQueryWrapper.eq("time",time);
+ CityWeather cityWeather = cityWeatherMapper.selectOne(cityWeatherQueryWrapper);
+ if (ObjectUtils.isEmpty(cityWeather)){
+ return resultMap;
+ }
+ JSONObject jsonObject = JSONObject.parseObject(cityWeather.getValue());
+ Map<String,Object> weatherMap = new HashMap<>();
+ weatherMap.put("temp",jsonObject.get("temp"));
+ weatherMap.put("humidity",jsonObject.get("humidity"));
+ weatherMap.put("windScale",jsonObject.get("windScale"));
+ resultMap = WeatherUtils.dressingIndex(weatherMap);
+ return resultMap;
+ }
+
/**
* @Description: ������������������������������
* @Param: [regionCode]
diff --git a/screen-common/src/main/java/com/moral/util/WeatherUtils.java b/screen-common/src/main/java/com/moral/util/WeatherUtils.java
new file mode 100644
index 0000000..bb80dfe
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/util/WeatherUtils.java
@@ -0,0 +1,163 @@
+package com.moral.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @program: screen
+ * @description: ���������������������������������
+ * @author: lizijie
+ * @create: 2022-04-08 14:15
+ **/
+public class WeatherUtils {
+
+ public static Map<String,Object> dressingIndex(Map map){
+ //������
+ Double temp = Double.parseDouble(map.get("temp").toString());
+ //������
+ Double humidity = Double.parseDouble(map.get("humidity").toString());
+ //������������
+ Double windScale = Double.parseDouble(map.get("windScale").toString());
+ //Map<String,Object> resultMap = new HashMap<>();
+ String index = "";
+ String feel = "";
+ String clothingThickness = null;
+ String advise = "";
+ if(temp >= 40.0){
+ index = "0";
+ feel = "���������������������";
+ clothingThickness = "0mm";
+ advise = "���������������������������������������������������������������������";
+ }else if (temp >= 37.0){
+ index = "1-4";
+ feel = "������������������";
+ clothingThickness = "0mm";
+ advise = "���������������������������������������������������������������������������������������";
+ }else if (temp >= 35.0){
+ index = "1-3";
+ feel = "������������������";
+ clothingThickness = "0mm";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (temp >= 33.0){
+ index = "1-2";
+ feel = "������������������";
+ clothingThickness = "0mm";
+ advise = "���������������������������������������������������������T���������������������������������������������";
+ }else if (temp >= 28.0){
+ index = "1-1";
+ feel = "������������������";
+ clothingThickness = "0mm";
+ advise = "���������������������������������������������������������������T���������������������������������������������������������������";
+ }else if (temp >= 25.0){
+ if(humidity > 80){
+ index = "1-1";
+ feel = "������������������";
+ clothingThickness = "0mm";
+ advise = "���������������������������������������������������������������T���������������������������������������������������������������";
+ }else {
+ index = "2";
+ feel = "���������";
+ clothingThickness = "0~1.5mm";
+ advise = "������������������������������������������������������T������������������������������������������������������������������������";
+ }
+ }else if (temp >= 23.0){
+ index = "3";
+ feel = "���������";
+ clothingThickness = "1.5~2.4mm";
+ advise = "���������������������������������������������������������T���������������������������������������������������������������������������������������������������������������";
+ }else if (temp >= 21.0){
+ index = "4-1";
+ feel = "������";
+ clothingThickness = "2.41~4.0mm";
+ advise = "���������������������������������������������������������������������������������������������������������������������������������������+���������������������������������";
+ }else if (temp >= 18.0){
+ index = "4-2";
+ feel = "���������";
+ clothingThickness = "4.01~6.0mm";
+ advise = "���������������������������������������������������������������T���������������������������������������������������������������������������������������������������������������������������+������������������������������������������������";
+ }else if (temp >= 15.0){
+ index = "5";
+ feel = "������������������";
+ clothingThickness = "6.0~7.0mm";
+ advise = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (temp >= 13.0){
+ index = "6-1";
+ feel = "������";
+ clothingThickness = "7.01~8.0mm";
+ advise = "���������������������������������������������������������������������������������+���������������������������������������������������������������������������������������������������";;
+ }else if (temp >= 11.0){
+ index = "6-2";
+ feel = "������";
+ clothingThickness = "8.01~9.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (temp >= 8.0){
+ index = "6-3";
+ feel = "���";
+ clothingThickness = "9.01~10.0mm";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (temp >= 5.0){
+ index = "7-1";
+ feel = "������";
+ clothingThickness = "10.01~11.0mm";
+ advise = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������+���������������������������������������";
+ }else if (temp >= 0.0){
+ if (windScale >= 4 || humidity >= 80){
+ index = "7-3";
+ feel = "������";
+ clothingThickness = "12.01~13.0mm";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else {
+ index = "7-2";
+ feel = "������";
+ clothingThickness = "11.01~12.0mm";
+ advise = "���������������������������������������������������������������������������������������������������������������������������������������";
+ }
+ }else if (temp >= -4.9){
+ if (windScale >= 4 || humidity >= 80){
+ index = "8-1";
+ feel = "������";
+ clothingThickness = ">=13.0.0mm";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else {
+ index = "7-3";
+ feel = "���";
+ clothingThickness = "12.01~13.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������";
+ }
+ }else if (temp >= -9.9){
+ if (windScale <= 4 || humidity < 80){
+ index = "8-1";
+ feel = "������";
+ clothingThickness = ">=13.0.0mm";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (windScale <= 4 || humidity >= 80){
+ index = "8-2";
+ feel = "������";
+ clothingThickness = ">=15.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (windScale >= 4 || humidity < 80){
+ index = "8-2";
+ feel = "������";
+ clothingThickness = ">=15.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }else if (windScale >= 4 || humidity >= 80){
+ index = "8-3";
+ feel = "������";
+ clothingThickness = ">=15.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }
+ }else if (temp <= -10.0){
+ index = "8-3";
+ feel = "������";
+ clothingThickness = ">=15.0";
+ advise = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������";
+ }
+ map.put("index",index);
+ map.put("feel",feel);
+ map.put("clothingThickness",clothingThickness);
+ map.put("advise",advise);
+ System.out.println(map);
+ return map;
+ }
+
+}
--
Gitblit v1.8.0