From 5ad07f66e02d1f88704bd812386274f8468e541f Mon Sep 17 00:00:00 2001 From: charging-kuafuai Date: Mon, 17 Jun 2024 15:57:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9C=89=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=B2=9F=E9=80=9A=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E4=B9=9F=E8=83=BD=E5=8F=91=E9=80=81=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=92=8C=E8=A7=86=E9=A2=91=EF=BC=8C=E5=B9=B6=E4=B8=94=E8=A6=81?= =?UTF-8?q?=E8=83=BD=E8=AE=A9=E4=BC=9A=E5=91=98=E8=83=BD=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E9=82=80=E7=BA=A6=E6=88=90=E8=A1=8C=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E8=AE=A9=E4=B8=8D=E5=90=8C=E7=9A=84=E4=BA=BA=E5=8F=91?= =?UTF-8?q?=E5=87=BA=E8=87=AA=E5=B7=B1=E7=9A=84=E8=A1=8C=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E6=9C=89=E6=84=8F=E5=90=91=E7=9A=84=E4=BA=BA=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E3=80=82=20=E5=90=8C=E6=97=B6=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=8E=A8=E8=8D=90=E6=9C=BA=E7=A5=A8=EF=BC=8C=E9=85=92?= =?UTF-8?q?=E5=BA=97=E7=AD=89=E7=9A=84=E5=8F=82=E8=80=83=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=EF=BC=8C=E6=88=96=E8=80=85=E6=8E=A5=E5=85=A5=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=EF=BC=8C=E8=83=BD=E4=B8=8B=E5=8D=95=E7=AD=BE=E8=AF=81?= =?UTF-8?q?=EF=BC=8C=E8=AE=A2=E6=9C=BA=E7=A5=A8=EF=BC=8C=E8=AE=A2=E9=85=92?= =?UTF-8?q?=E5=BA=97=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ChatController.java | 27 ++++++++++++++++ .../controller/RecommendationController.java | 26 +++++++++++++++ .../controller/ThirdPartyController.java | 26 +++++++++++++++ .../controller/TravelPlanController.java | 30 +++++++++++++++++ .../com/aiassistant/mapper/MessageMapper.java | 15 +++++++++ .../aiassistant/mapper/TravelPlanMapper.java | 16 ++++++++++ .../com/aiassistant/service/ChatService.java | 30 +++++++++++++++++ .../service/RecommendationService.java | 9 ++++++ .../service/ThirdPartyService.java | 7 ++++ .../service/TravelPlanService.java | 32 +++++++++++++++++++ 10 files changed, 218 insertions(+) create mode 100644 src/main/java/com/aiassistant/controller/ChatController.java create mode 100644 src/main/java/com/aiassistant/controller/RecommendationController.java create mode 100644 src/main/java/com/aiassistant/controller/ThirdPartyController.java create mode 100644 src/main/java/com/aiassistant/controller/TravelPlanController.java create mode 100644 src/main/java/com/aiassistant/mapper/MessageMapper.java create mode 100644 src/main/java/com/aiassistant/mapper/TravelPlanMapper.java create mode 100644 src/main/java/com/aiassistant/service/ChatService.java create mode 100644 src/main/java/com/aiassistant/service/RecommendationService.java create mode 100644 src/main/java/com/aiassistant/service/ThirdPartyService.java create mode 100644 src/main/java/com/aiassistant/service/TravelPlanService.java diff --git a/src/main/java/com/aiassistant/controller/ChatController.java b/src/main/java/com/aiassistant/controller/ChatController.java new file mode 100644 index 0000000..d7a45af --- /dev/null +++ b/src/main/java/com/aiassistant/controller/ChatController.java @@ -0,0 +1,27 @@ +package com.aiassistant.controller; + +import com.aiassistant.model.Message; +import com.aiassistant.service.ChatService; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@RestController +public class ChatController { + private final ChatService chatService; + + @Autowired + public ChatController(ChatService chatService) { + this.chatService = chatService; + } + + @PostMapping("/sendMessage") + public ResultModel sendMessage(@RequestParam String content, + @RequestParam(required = false) MultipartFile image, + @RequestParam(required = false) MultipartFile video) { + return chatService.sendMessage(content, image, video); + } +} diff --git a/src/main/java/com/aiassistant/controller/RecommendationController.java b/src/main/java/com/aiassistant/controller/RecommendationController.java new file mode 100644 index 0000000..a48d646 --- /dev/null +++ b/src/main/java/com/aiassistant/controller/RecommendationController.java @@ -0,0 +1,26 @@ +package com.aiassistant.controller; + +import com.aiassistant.model.Recommendation; +import com.aiassistant.model.TravelPlan; +import com.aiassistant.service.RecommendationService; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class RecommendationController { + private RecommendationService recommendationService; + + @Autowired + public RecommendationController(RecommendationService recommendationService) { + this.recommendationService = recommendationService; + } + + @PostMapping("/recommendation") + public ResultModel getRecommendation(@RequestBody TravelPlan travelPlan) { + Recommendation recommendation = recommendationService.getRecommendation(travelPlan); + return ResultModel.ofSuccess(recommendation); + } +} \ No newline at end of file diff --git a/src/main/java/com/aiassistant/controller/ThirdPartyController.java b/src/main/java/com/aiassistant/controller/ThirdPartyController.java new file mode 100644 index 0000000..b1dea45 --- /dev/null +++ b/src/main/java/com/aiassistant/controller/ThirdPartyController.java @@ -0,0 +1,26 @@ +package com.aiassistant.controller; + +import com.aiassistant.service.ThirdPartyService; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/third-party") +public class ThirdPartyController { + + private final ThirdPartyService thirdPartyService; + + @Autowired + public ThirdPartyController(ThirdPartyService thirdPartyService) { + this.thirdPartyService = thirdPartyService; + } + + @PostMapping("/access") + public ResultModel accessThirdParty(@RequestParam String platform, @RequestParam String userId, @RequestParam String orderInfo) { + return thirdPartyService.accessThirdParty(platform, userId, orderInfo); + } +} diff --git a/src/main/java/com/aiassistant/controller/TravelPlanController.java b/src/main/java/com/aiassistant/controller/TravelPlanController.java new file mode 100644 index 0000000..e40bddd --- /dev/null +++ b/src/main/java/com/aiassistant/controller/TravelPlanController.java @@ -0,0 +1,30 @@ +package com.aiassistant.controller; + +import com.aiassistant.model.TravelPlan; +import com.aiassistant.service.TravelPlanService; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +@RestController +public class TravelPlanController { + private final TravelPlanService travelPlanService; + + @Autowired + public TravelPlanController(TravelPlanService travelPlanService) { + this.travelPlanService = travelPlanService; + } + + @PostMapping("/travel-plan") + public ResultModel publishTravelPlan(@RequestParam String title, + @RequestParam String description, + @RequestParam Date startTime, + @RequestParam Date endTime, + @RequestParam Integer limit) { + return travelPlanService.publishTravelPlan(title, description, startTime, endTime, limit); + } +} diff --git a/src/main/java/com/aiassistant/mapper/MessageMapper.java b/src/main/java/com/aiassistant/mapper/MessageMapper.java new file mode 100644 index 0000000..429932d --- /dev/null +++ b/src/main/java/com/aiassistant/mapper/MessageMapper.java @@ -0,0 +1,15 @@ +package com.aiassistant.mapper; + +import com.aiassistant.model.Message; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.SelectKey; +import org.springframework.stereotype.Repository; + +@Repository +public interface MessageMapper { + @Insert("INSERT INTO message(content) VALUES(#{content})") + @Options(useGeneratedKeys = true, keyProperty = "id") + @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = int.class) + int insertMessage(Message message); +} diff --git a/src/main/java/com/aiassistant/mapper/TravelPlanMapper.java b/src/main/java/com/aiassistant/mapper/TravelPlanMapper.java new file mode 100644 index 0000000..fbdd575 --- /dev/null +++ b/src/main/java/com/aiassistant/mapper/TravelPlanMapper.java @@ -0,0 +1,16 @@ +package com.aiassistant.mapper; + +import com.aiassistant.model.TravelPlan; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.SelectKey; +import org.springframework.stereotype.Repository; + +@Repository +public interface TravelPlanMapper { + @Insert("INSERT INTO travel_plan(user_id, start_time, end_time, destination, remark) " + + "VALUES(#{userId}, #{startTime}, #{endTime}, #{destination}, #{remark})") + @Options(useGeneratedKeys = true, keyProperty = "id") + @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = int.class) + int insertTravelPlan(TravelPlan travelPlan); +} diff --git a/src/main/java/com/aiassistant/service/ChatService.java b/src/main/java/com/aiassistant/service/ChatService.java new file mode 100644 index 0000000..608e086 --- /dev/null +++ b/src/main/java/com/aiassistant/service/ChatService.java @@ -0,0 +1,30 @@ +package com.aiassistant.service; + +import com.aiassistant.mapper.MessageMapper; +import com.aiassistant.model.Message; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +@Service +public class ChatService { + private final MessageMapper messageMapper; + + @Autowired + public ChatService(MessageMapper messageMapper) { + this.messageMapper = messageMapper; + } + + public ResultModel sendMessage(String content, MultipartFile image, MultipartFile video) { + // Save the message to the database + Message message = new Message(); + message.setContent(content); + message.setImage(image != null ? image.getOriginalFilename() : null); + message.setVideo(video != null ? video.getOriginalFilename() : null); + messageMapper.insertMessage(message); + + // Return the message object + return ResultModel.ofSuccess(message); + } +} diff --git a/src/main/java/com/aiassistant/service/RecommendationService.java b/src/main/java/com/aiassistant/service/RecommendationService.java new file mode 100644 index 0000000..b3150da --- /dev/null +++ b/src/main/java/com/aiassistant/service/RecommendationService.java @@ -0,0 +1,9 @@ +package com.aiassistant.service; + +import com.aiassistant.model.Recommendation; +import com.aiassistant.model.TravelPlan; +import com.aiassistant.utils.ResultModel; + +public interface RecommendationService { + ResultModel getRecommendation(TravelPlan travelPlan); +} diff --git a/src/main/java/com/aiassistant/service/ThirdPartyService.java b/src/main/java/com/aiassistant/service/ThirdPartyService.java new file mode 100644 index 0000000..ed51c5b --- /dev/null +++ b/src/main/java/com/aiassistant/service/ThirdPartyService.java @@ -0,0 +1,7 @@ +package com.aiassistant.service; + +import com.aiassistant.utils.ResultModel; + +public interface ThirdPartyService { + ResultModel accessThirdParty(String platform, String userId, String orderInfo); +} \ No newline at end of file diff --git a/src/main/java/com/aiassistant/service/TravelPlanService.java b/src/main/java/com/aiassistant/service/TravelPlanService.java new file mode 100644 index 0000000..43d6624 --- /dev/null +++ b/src/main/java/com/aiassistant/service/TravelPlanService.java @@ -0,0 +1,32 @@ +package com.aiassistant.service; + +import com.aiassistant.mapper.TravelPlanMapper; +import com.aiassistant.model.TravelPlan; +import com.aiassistant.utils.ResultModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; + +@Service +public class TravelPlanService { + private final TravelPlanMapper travelPlanMapper; + + @Autowired + public TravelPlanService(TravelPlanMapper travelPlanMapper) { + this.travelPlanMapper = travelPlanMapper; + } + + public ResultModel publishTravelPlan(String title, String description, Date startTime, Date endTime, Integer limit) { + TravelPlan travelPlan = new TravelPlan(); + travelPlan.setTitle(title); + travelPlan.setDescription(description); + travelPlan.setStartTime(startTime); + travelPlan.setEndTime(endTime); + travelPlan.setLimit(limit); + + travelPlanMapper.insertTravelPlan(travelPlan); + + return ResultModel.ofSuccess(travelPlan); + } +}