package com.ai.da.controller; import com.ai.da.common.enums.CollectionLevel1TypeEnum; import com.ai.da.common.response.Response; import com.ai.da.common.utils.CopyUtil; import com.ai.da.mapper.primary.entity.Library; import com.ai.da.model.dto.ChatFlushDTO; import com.ai.da.model.dto.ChatRobotLibraryDTO; import com.ai.da.model.dto.ChatSendDTO; import com.ai.da.model.dto.SuperResolutionDTO; import com.ai.da.model.vo.ChatRobotVO; import com.ai.da.model.vo.PythonLibraryVo; import com.ai.da.model.vo.SysFileVO; import com.ai.da.python.PythonService; import com.ai.da.service.ChatRobotService; import com.ai.da.service.LibraryService; import com.ai.da.service.SuperResolutionService; import com.ai.da.service.SysFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Api(tags = "python对接模块") @Slf4j @RestController @RequestMapping("/api/python") public class PythonController { @Resource private PythonService pythonService; @Resource private SysFileService sysFileService; @Resource private LibraryService libraryService; @Resource private ChatRobotService chatRobotService; @Resource private SuperResolutionService superResolutionService; @ApiOperation(value = "python服务保存图片到java服务") @PostMapping("/saveGeneratePicture") public Response upload(@RequestParam("file") MultipartFile file, @ApiParam("操作类型 generatePrint ->生成印花 " + "designCollection ->设计collection generateAdvancedDesign ->生成高级design" + "generateSketch -> 生成草图") @RequestParam(value = "operateType") String operateType) { return Response.success(pythonService.upload(file, operateType)); } // @ApiOperation(value = "python服务保存多张图片到java服务") // @PostMapping("/saveMultiGeneratePicture") // public Response> uploadMultiple(@RequestParam("files") MultipartFile[] files, // @ApiParam("操作类型 generatePrint ->生成印花 " + // "designCollection ->设计collection generateAdvancedDesign ->生成高级design" + // "generateSketch -> 生成草图") // @RequestParam(value = "operateType") String operateType) { // return Response.success(pythonService.upload(files, operateType)); // } @ApiOperation(value = "通过文件类型获取系统文件") @GetMapping("/getSysFileByLevel2Type") public Response> getSysFileByLevel2Type(/*@RequestParam(value = "level2Type",required = false) String level2Type*/) { return Response.success(sysFileService.getByLevel2Type("All")); } @ApiOperation(value = "通过用户id获取library") @GetMapping("/getLibraryByUserId") public Response>> getLibraryByUserId(@RequestParam(value = "userId") Long userId) { List response = CopyUtil.copyList(libraryService.selectByAccountIdAnd1TypeList(userId, Collections.singletonList(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName())), PythonLibraryVo.class); //key转小写 统一 return Response.success(response.stream().collect(Collectors.groupingBy(v -> v.getLevel2Type().toLowerCase(), Collectors.mapping(PythonLibraryVo::getUrl, Collectors.toList())))); } @CrossOrigin @ApiOperation(value = "发送用户输入消息") @PostMapping("/chatStream") public Response MessageToPythonChatStream(@RequestBody ChatSendDTO chatSendDTO) { log.info(chatSendDTO.toString()); return Response.success(chatRobotService.sendMessageToChatRobot(chatSendDTO)); } @ApiOperation(value = "血条") @GetMapping("/getBloodBars") public Response getBloodBars(@RequestParam(value = "userId") Long userId) { return Response.success(chatRobotService.getBloodBars(userId)); } @CrossOrigin @ApiOperation(value = "likeOrUnlike") @PostMapping("/pictureLikeOrUnLike") public Response pictureLikeOrUnLike(@RequestBody ChatRobotLibraryDTO chatRobotLibraryDTO) { return Response.success(chatRobotService.pictureLikeOrUnLike(chatRobotLibraryDTO)); } @CrossOrigin @ApiOperation(value = "刷新会话缓存") @PostMapping("/flush") public Response ChatBufferFlush(@RequestBody ChatFlushDTO chatFlushDTO) { return Response.success(chatRobotService.chatBufferFlush(chatFlushDTO)); } @ApiOperation(value = "超分辨率") @PostMapping("/prepareForSR") public Response> superResolution(@RequestBody List superResolutionDTO) { return Response.success(superResolutionService.prepareForSR(superResolutionDTO)); } }