package admin.rest;


import admin.base.PageInfo;
import admin.modules.chatgpt.service.ChatgptRoleRecordsService;
import admin.modules.chatgpt.service.ChatgptRoleSessionService;
import admin.modules.chatgpt.service.dto.ChatgptRoleRecordsDto;
import admin.modules.chatgpt.service.dto.ChatgptRoleRecordsQueryCriteria;
import admin.modules.chatgpt.service.dto.ChatgptRoleSessionQueryCriteria;
import admin.resp.ApiResponse;
import admin.util.ScreenEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Pageable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.Comparator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

/**
 * @author wk
 * @date 2023-11-27
 **/
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "对话记录")
@RequestMapping(value = "wx/chatgptRoleRecords/")
public class ChatgptRoleRecordsController {

    private final ChatgptRoleRecordsService chatgptRoleRecordsService;
    private final ChatgptRoleSessionService chatgptRoleSessionService;

    @ApiOperation("会话查询对话记录")
    @GetMapping(value = "sessionList")
    public ApiResponse<Object> querySessionList(ChatgptRoleRecordsQueryCriteria query, Pageable pageable) {
        return ApiResponse.buildSuccess(chatgptRoleRecordsService.queryAll(query, pageable));
    }


    @ApiOperation("查询会话")
    @GetMapping(value = "list")
    public ApiResponse<Object> query(ChatgptRoleSessionQueryCriteria query, Pageable pageable){
        Integer byUserName = ScreenEnum.getByUserName(query.getName());
        query.setUserId(byUserName);
        return ApiResponse.buildSuccess(chatgptRoleSessionService.queryAll(query,pageable));
    }


    @ApiOperation("大屏临时查询十条会话记录")
    @GetMapping(value = "queryTenRecords")
    public ApiResponse<Object> queryTenRecords(@RequestParam String userName) {
        Integer userId = ScreenEnum.getByUserName(userName);
        List<ChatgptRoleRecordsDto> chatgptRoleRecordsDtos = chatgptRoleRecordsService.queryTenRecords(userId);
        List<ChatgptRoleRecordsDto> collect = chatgptRoleRecordsDtos.stream().sorted(Comparator.comparing(ChatgptRoleRecordsDto::getId)).collect(Collectors.toList());
        return ApiResponse.buildSuccess(collect);
    }

    @ApiOperation("查询屏幕列表")
    @GetMapping(value = "queryScreenList")
    public ApiResponse<Object> queryScreenList() {
        return ApiResponse.buildSuccess(ScreenEnum.getScreen());
    }

}