64 lines
2.6 KiB
Java
64 lines
2.6 KiB
Java
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<SchTeaList> 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<List<SchTeaList>> resp = restTemplate.exchange(
|
||
url, HttpMethod.GET, null,
|
||
new ParameterizedTypeReference<List<SchTeaList>>() {
|
||
});
|
||
List<SchTeaList> 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, "获取教师数据失败");
|
||
}
|
||
}
|
||
}
|