package cn.timer.api.controller.zpgl.sevice;

import cn.hutool.http.HttpUtil;
import cn.timer.api.bean.wechat.MessageTemplate;
import cn.timer.api.dto.template.InterviewNotice;
import cn.timer.api.dto.template.TemplateData;
import cn.timer.api.dto.wxgzh.MessageQueueDto;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author longys
 * @date 2022/3/25 18:08
 */
@Slf4j
@Service
@Transactional(rollbackOn = Exception.class)
public class ZpglWxgzptServiceImpl implements ZpglWxgzptService {

    @Value("${youling.serverUrl}")
    private String serverUrl;

    /**
     * 添加消息队列
     *
     * @param map
     * @return
     */
    @Override
    public String addMessageQueue(Map<String, Object> map) {
        return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", map);
    }


    /**
     * 添加消息队列
     *
     * @param interviewNotice
     * @return
     */
    @Override
    public String addInterviewMessageQueue(InterviewNotice interviewNotice) {
        return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", this.copyMessageQueueToMap(interviewNotice));
    }

    @Override
    public String sendApplyOrCePin(InterviewNotice interviewNotice) {
        return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", this.copyMessageQueueToMap(interviewNotice));
    }

    private Map copyMessageQueueToMap(InterviewNotice interviewNotice){
        //消息队列对象
        MessageQueueDto mqd = new MessageQueueDto();
        BeanUtils.copyProperties(interviewNotice, mqd);
        /** 模板消息内容 start */
        List<TemplateData> templateData = new ArrayList<>();
        // 内容
        TemplateData key1 = new TemplateData("first", interviewNotice.getContentStr(), "#000000");
        templateData.add(key1);
        // 面试职位
        TemplateData key2 = new TemplateData("keyword1", interviewNotice.getZpglZwxxName(), "#000000");
        templateData.add(key2);
        // 面试时间
        TemplateData key3 = new TemplateData("keyword2", interviewNotice.getInterviewTime(), "#000000");
        templateData.add(key3);
        // 备注
        TemplateData key4 = new TemplateData("remark", interviewNotice.getRemark(), "#000000");
        templateData.add(key4);


        //数据处理成固定好的json格式
        String content = mqd.getContentJson(templateData);
        mqd.setContent(content);
        /** 模板消息内容 end */

        Map map = JSON.parseObject(JSON.toJSONString(mqd), Map.class);
        return map;
    }
}