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); + } +}