11package com .example .helper .controller ;
2- import com .example .helper .dto .MealWrapper ;
2+ import com .example .helper .dto .Mealdto ;
33import com .example .helper .entity .Meal ;
44import com .example .helper .service .MealService ;
5+ import com .fasterxml .jackson .core .JsonProcessingException ;
6+ import com .fasterxml .jackson .databind .ObjectMapper ;
57import lombok .extern .slf4j .Slf4j ;
8+ import org .springframework .beans .BeanUtils ;
69import org .springframework .beans .factory .annotation .Autowired ;
7- import org .springframework .web .bind .annotation .GetMapping ;
8- import org .springframework .web .bind .annotation .PostMapping ;
9- import org .springframework .web .bind .annotation .RequestMapping ;
10- import org .springframework .web .bind .annotation .ResponseBody ;
11- import org .springframework .web .bind .annotation .RestController ;
10+ import org .springframework .web .bind .annotation .*;
1211
12+ import java .util .ArrayList ;
13+ import java .util .HashMap ;
14+ import java .util .List ;
15+ import java .util .Map ;
1316
1417
1518@ RestController
@@ -25,57 +28,202 @@ public String hello() {
2528 return "Hello HELPERs. 초기 세팅 완료." ;
2629 }
2730
31+ @ PostMapping ("/test" )
32+ public @ ResponseBody void test (String testStr ) {
33+ log .info (testStr );
34+ }
2835 @ PostMapping ("/create" )
29- public @ ResponseBody String createMeal (MealWrapper mealWrapper ) {
30- // 여기 구현해주세 222
31- Meal meal = mealWrapper .getMeal ();
32- // merge test
33- // Meal saved = mealService.save(meal);
36+ public @ ResponseBody String createMeal (@ RequestBody Mealdto mealDto ) {
37+ // input : 식단 json
38+ // output : None
39+
40+ // DTO to Entity
41+ Meal meal = new Meal ();
42+ BeanUtils .copyProperties (mealDto , meal );
43+
44+ // DB Save
45+ Long saved = mealService .mealCreate (meal );
3446
35- return "saved" ; // Responsebody 넣어서 보내는거 해보세요
47+ return "saved" ;
3648 }
3749
3850 @ PostMapping ("/kor" )
39- public @ ResponseBody String readKorMeal () {
40- // input : utc
41- // output : 카톡 서버맞게 한국어식단 JSON으로
42- // const responseBody = {
43- // version: "2.0",
44- // template: {
45- // outputs: [
46- // {
47- // simpleText: {
48- // text: rows[0].menu
49- // }
50- // }
51- // ]
52- // }
53- // };
54- // res.status(200).send(responseBody);
55- return "saved" ; // Responsebody 넣어서 보내는거 해보세요
51+ public @ ResponseBody String readKorMeal () throws JsonProcessingException {
52+ // input : None (먼저 서버에서 현재 시간 측정)
53+ // output : 한국어 식단이 포함된 JSON (단, JSON은 카톡 서버가 받을 수 있는 형식이여야 함.)
54+
55+ // TODO 아래 기능 구현해 주세요.
56+ String nowMeal = mealService .getNowKorMeal ();
57+
58+ // Response Body Construct
59+ // TODO 더 좋은 방식이 있으면 구현해 주세요. ex) dto 이용.
60+ // const responseBody = {
61+ // version: "2.0",
62+ // template: {
63+ // outputs: [
64+ // {
65+ // simpleText: {
66+ // text: nowMeal
67+ // }
68+ // }
69+ // ]
70+ // }
71+ // };
72+
73+ Map <String , Object > simpleText = new HashMap <>();
74+ simpleText .put ("text" , nowMeal );
75+
76+ Map <String , Object > simpleTextWrapper = new HashMap <>();
77+ simpleTextWrapper .put ("simpleText" , simpleText );
78+
79+ List <Object > outputs = new ArrayList (1 );
80+ outputs .add (simpleTextWrapper );
81+
82+ Map <String , Object > template = new HashMap <>();
83+ template .put ("outputs" , outputs );
84+
85+ Map <String , Object > responseBody = new HashMap <>();
86+ responseBody .put ("version" , "2.0" );
87+ responseBody .put ("template" , template );
88+
89+ ObjectMapper objectMapper = new ObjectMapper ();
90+ String result = objectMapper .writeValueAsString (responseBody );
91+
92+ return result ;
5693 }
5794
5895 @ PostMapping ("/eng" )
59- public @ ResponseBody String readEngMeal () {
60- // input : utc
61- // output : 카톡 서버맞게 영어식단 JSON으로
96+ public @ ResponseBody String readEngMeal () throws JsonProcessingException {
97+ // input : None (먼저 서버에서 현재 시간 측정)
98+ // output : 영어 식단이 포함된 JSON (단, JSON은 카톡 서버가 받을 수 있는 형식이여야 함.)
99+
100+ // TODO 아래 기능 구현해 주세요.
101+ String nowMeal = mealService .getNowEngMeal ();
102+
103+ // Response Body Construct
104+ // TODO 더 좋은 방식이 있으면 구현해 주세요. ex) dto 이용.
105+ // const responseBody = {
106+ // version: "2.0",
107+ // template: {
108+ // outputs: [
109+ // {
110+ // simpleText: {
111+ // text: nowMeal
112+ // }
113+ // }
114+ // ]
115+ // }
116+ // };
117+
118+ Map <String , Object > simpleText = new HashMap <>();
119+ simpleText .put ("text" , nowMeal );
120+
121+ Map <String , Object > simpleTextWrapper = new HashMap <>();
122+ simpleTextWrapper .put ("simpleText" , simpleText );
123+
124+ List <Object > outputs = new ArrayList (1 );
125+ outputs .add (simpleTextWrapper );
126+
127+ Map <String , Object > template = new HashMap <>();
128+ template .put ("outputs" , outputs );
62129
63- return "saved" ; // Responsebody 넣어서 보내는거 해보세요
130+ Map <String , Object > responseBody = new HashMap <>();
131+ responseBody .put ("version" , "2.0" );
132+ responseBody .put ("template" , template );
133+
134+ ObjectMapper objectMapper = new ObjectMapper ();
135+ String result = objectMapper .writeValueAsString (responseBody );
136+
137+ return result ;
64138 }
65139
66140 @ PostMapping ("/speckor" )
67- public @ ResponseBody String readSpecKorMeal () {
141+ public @ ResponseBody String readSpecKorMeal () throws JsonProcessingException {
68142 // input : 날짜요일내일 + 아점저 + 1/2학
69- // output : 해당 식단 찾아 카톡 서버맞게 JSON으로
143+ // output : 한국어 식단이 포함된 JSON (단, JSON은 카톡 서버가 받을 수 있는 형식이여야 함.)
144+
145+ // TODO 아래 기능 구현해 주세요.
146+ String specMeal = mealService .getSpecKorMeal ();
147+
148+ // Response Body Construct
149+ // TODO 더 좋은 방식이 있으면 구현해 주세요. ex) dto 이용.
150+ // const responseBody = {
151+ // version: "2.0",
152+ // template: {
153+ // outputs: [
154+ // {
155+ // simpleText: {
156+ // text: specMeal
157+ // }
158+ // }
159+ // ]
160+ // }
161+ // };
162+
163+ Map <String , Object > simpleText = new HashMap <>();
164+ simpleText .put ("text" , specMeal );
165+
166+ Map <String , Object > simpleTextWrapper = new HashMap <>();
167+ simpleTextWrapper .put ("simpleText" , simpleText );
168+
169+ List <Object > outputs = new ArrayList (1 );
170+ outputs .add (simpleTextWrapper );
171+
172+ Map <String , Object > template = new HashMap <>();
173+ template .put ("outputs" , outputs );
174+
175+ Map <String , Object > responseBody = new HashMap <>();
176+ responseBody .put ("version" , "2.0" );
177+ responseBody .put ("template" , template );
70178
71- return "saved" ; // Responsebody 넣어서 보내는거 해보세요
179+ ObjectMapper objectMapper = new ObjectMapper ();
180+ String result = objectMapper .writeValueAsString (responseBody );
181+
182+ return result ;
72183 }
73184
74185 @ PostMapping ("/speceng" )
75- public @ ResponseBody String readSpecEngMeal () {
186+ public @ ResponseBody String readSpecEngMeal () throws JsonProcessingException {
76187 // input : 날짜요일내일 + 아점저 + 1/2학
77- // output : 해당 식단 찾아 카톡 서버맞게 JSON으로
188+ // output : 영어 식단이 포함된 JSON (단, JSON은 카톡 서버가 받을 수 있는 형식이여야 함.)
189+
190+ // TODO 아래 기능 구현해 주세요.
191+ String specMeal = mealService .getSpecEngMeal ();
192+
193+ // Response Body Construct
194+ // TODO 더 좋은 방식이 있으면 구현해 주세요. ex) dto 이용.
195+ // const responseBody = {
196+ // version: "2.0",
197+ // template: {
198+ // outputs: [
199+ // {
200+ // simpleText: {
201+ // text: specMeal
202+ // }
203+ // }
204+ // ]
205+ // }
206+ // };
207+
208+ Map <String , Object > simpleText = new HashMap <>();
209+ simpleText .put ("text" , specMeal );
210+
211+ Map <String , Object > simpleTextWrapper = new HashMap <>();
212+ simpleTextWrapper .put ("simpleText" , simpleText );
213+
214+ List <Object > outputs = new ArrayList (1 );
215+ outputs .add (simpleTextWrapper );
216+
217+ Map <String , Object > template = new HashMap <>();
218+ template .put ("outputs" , outputs );
219+
220+ Map <String , Object > responseBody = new HashMap <>();
221+ responseBody .put ("version" , "2.0" );
222+ responseBody .put ("template" , template );
223+
224+ ObjectMapper objectMapper = new ObjectMapper ();
225+ String result = objectMapper .writeValueAsString (responseBody );
78226
79- return "saved" ; // Responsebody 넣어서 보내는거 해보세요
227+ return result ;
80228 }
81229}
0 commit comments