package com.yunhai.notice.service.impl; import com.yunhai.notice.model.SchTeaList; import com.yunhai.notice.service.IClassService; import com.yunhai.platform.apistd.BizException; import com.yunhai.platform.utils.exception.ErrorCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.util.Collections; import java.util.List; /** * 班级管理(bschclass)开放接口实现。 * bschclass 为开放接口(无需应用签名),使用独立 RestTemplate 直连。 */ @Service public class ClassService implements IClassService { private static final Logger log = LoggerFactory.getLogger(ClassService.class); /** 班级管理服务基址,如 http://base.yunhaixingtong.com/bschclass */ @Value("${yh.open.bschclass:}") private String bschClassHost; private final RestTemplate restTemplate; public ClassService() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(5000); factory.setReadTimeout(10000); this.restTemplate = new RestTemplate(factory); } @Override public List getSchTeaList(int schId) { if (!StringUtils.hasText(bschClassHost)) { throw new BizException(ErrorCode.INTERNAL_SERVER_ERROR, "班级管理接口未配置(yh.open.bschclass)"); } String url = bschClassHost + "/oapi/DbClass/GetSchteaList?Group=" + schId; try { ResponseEntity> resp = restTemplate.exchange( url, HttpMethod.GET, null, new ParameterizedTypeReference>() { }); List list = resp.getBody(); log.info("[getSchTeaList] schId={}, 获取教师 {} 人", schId, list == null ? 0 : list.size()); return list != null ? list : Collections.emptyList(); } catch (RestClientException e) { log.error("[getSchTeaList] 请求班级管理接口失败, schId={}, url={}", schId, url, e); throw new BizException(ErrorCode.INTERNAL_SERVER_ERROR, "获取教师数据失败"); } } }