package admin.service.impl;

import admin.model.MaxKbChatReq;
import admin.model.SendSseModel;
import admin.model.WebSocketModel;
import admin.model.maxdb.MaxdbScreenConfig;
import admin.model.maxdb.MaxdbZkhjConfig;
import admin.model.maxdb.req.MaxdbReq;
import admin.modules.chatgpt.service.ChatgptRoleRecordsService;
import admin.resp.ApiResponse;
import admin.service.MaxkbOpenApiService;
import admin.util.HttpUtil;
import admin.util.WebSocketUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.websocket.Session;

/**
 * @author lj
 * @date 2025/2/24 11:11
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class MaxkbOpenApiServiceImpl implements MaxkbOpenApiService {

    private final MaxdbZkhjConfig maxdbConfig;
    private final MaxdbScreenConfig maxdbScreenConfig;
    private final ChatgptRoleRecordsService chatgptRoleRecordsService;

    @Override
    public ApiResponse<Object> getMaxkbSessionId(String applicationId) {
        String data = HttpUtil.get(String.format(maxdbScreenConfig.getChatUrl(),applicationId),maxdbScreenConfig.getApiKey());
        return JSONObject.parseObject(data, ApiResponse.class);
    }

    @Override
    public void chatCompletions(MaxKbChatReq maxKbChatReq) {
        MaxdbReq maxdbReq = new MaxdbReq();
        maxdbReq.setMessage(maxKbChatReq.getMessage());

        maxKbChatReq.setMaxkbTalkUrl(String.format(maxdbScreenConfig.getTalkUrl(),maxKbChatReq.getChatId()));
        maxKbChatReq.setMaxkbApiKey(maxdbScreenConfig.getApiKey());
//        WebSocketModel webSocketModel = JSONObject.parseObject(message, WebSocketModel.class);
        HttpUtil.postCallBackStream(String.format(maxdbScreenConfig.getTalkUrl(),maxKbChatReq.getChatId()), maxdbReq, maxdbScreenConfig.getApiKey(),maxKbChatReq,chatgptRoleRecordsService);
    }

    @Override
    public void talk( SendSseModel sendSseModel) {
//        if (message.contains("中科")){
//
//        }else if (message.contains("大屏")){
//
//        }else if (message.contains("分析")){
//
//        }else{

//        }
        ApiResponse<Object> maxkbSessionId = getMaxkbSessionId(maxdbScreenConfig.getApplicationId());
        MaxKbChatReq maxKbChatReq= new MaxKbChatReq();
        maxKbChatReq.setMessage(sendSseModel.getMessage());
        maxKbChatReq.setChatId(String.valueOf(maxkbSessionId.getData()));
        maxKbChatReq.setSessionId(sendSseModel.getSessionId());
        maxKbChatReq.setUserName(sendSseModel.getUserName());
        maxKbChatReq.setShowType(sendSseModel.getShowType());
        maxKbChatReq.setClient(sendSseModel.isH5() ? WebSocketUtil.H5 : WebSocketUtil.web);
        maxKbChatReq.setSession(sendSseModel.getSeesion());
        chatCompletions(maxKbChatReq);
    }
}