package com.chuanghai.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chuanghai.dto.WeixiaoPushDTO; import com.chuanghai.entity.PushProject; import com.chuanghai.exception.BizCodeEnume; import com.chuanghai.exception.RRException; import com.chuanghai.mapper.PushProjectMapper; import com.chuanghai.service.PushProjectService; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.org.apache.xpath.internal.operations.Bool; import com.sun.xml.internal.bind.v2.util.ByteArrayOutputStreamEx; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @Service public class PushProjectServiceImpl extends ServiceImpl implements PushProjectService { @Override public Boolean pushProject(WeixiaoPushDTO weixiaoPushDTO) { Boolean flag = Boolean.FALSE; String app_key = weixiaoPushDTO.getApp_key(); String school_code = weixiaoPushDTO.getSchool_code(); String event = weixiaoPushDTO.getEvent(); String raw_data = weixiaoPushDTO.getRaw_data(); String app_secret = weixiaoPushDTO.getApp_secret(); Map tokenParams = new HashMap<>(); tokenParams.put("app_key", app_key); tokenParams.put("school_code", school_code); tokenParams.put("event", event); tokenParams.put("raw_data", raw_data); tokenParams.put("app_secret", app_secret); List pushProjectList = this.queryPushProject(); for (int i = 0; i < pushProjectList.size(); i++) { PushProject pushProject = pushProjectList.get(i); try { String tokenUrl = pushProject.getUrl(); RestTemplate client = new RestTemplate(); ResponseEntity tokenResponse = client.postForEntity(tokenUrl, tokenParams, String.class); String body = tokenResponse.getBody(); log.info("微校推送服务接口状态=======》》推送项目:【{}】》》结果集:【{}】", pushProject.getProject(), body); ObjectMapper mapper = new ObjectMapper(); Map jsonMap = mapper.readValue(body, new TypeReference>() { }); Integer code = (Integer) jsonMap.get("code"); if (code == 0) { flag = Boolean.TRUE; } } catch (Exception e) { throw new RRException(BizCodeEnume.FILE_IS_PUSH); } } return flag; } /** * 添加推送项目 * * @param url * @param project */ @Override public void addPushProject(String url, String project) { LocalDateTime localDateTime = LocalDateTime.now(); PushProject pushProject = new PushProject(); pushProject.setCreateTime(localDateTime.now()); pushProject.setProject(project); pushProject.setStatu(0); pushProject.setUrl(url); this.save(pushProject); } @Override public void deletePushProject(Long id) { PushProject pushProject = this.getById(id); pushProject.setStatu(1); this.updateById(pushProject); } /** * 查询有效的项目 * * @return */ public List queryPushProject() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("statu", "0"); return this.list(wrapper); } }