配置中心-新闻展示源接入指南
配置中心-新闻展示源接入指南
该文档主要是门户网办平台,信息门户模块内展示新闻源不满足学校场景,基于现有配置组件进行二次开发,并实现新闻动态展示及配置。
接入新闻源,需开发人员根据实际接口或数据表参考本文档示例规范,自行实现业务逻辑。
- 注意:此文档为开发接入手册,不涉及环境配置以及开发工具信息。
前置条件
需能访问公司内网环境,访问maven私服。
微服务环境,config-service服务。
流程说明
由开发人员实现第三方新闻系统源接入
后在网办门户扩展中心配置新接入的第三方新闻源,配置完成后在信息门户验证是否接入成功注 系统信息门户由前端配置入口已屏蔽,可以修改现有新闻源配置验证后改回
开发接入步骤
示例场景描述:以下接入步骤为新建新闻源为例进行接入
步骤一、 创建新闻源实现类
在 cn.com.lightcode.config.service.article.impl 下新建新闻源实现类
例如:新建 ArticleGrabServiceImpl 类,需要实现接口文章查询服务基类 BaseArticleService
@Slf4j
@ArticleFactory(key = "grab", name = "国际新闻服务", value = {@ArticleFactoryParam(key = "category", name = "分类名称")})
@Service("grab")
public class ArticleGrabServiceImpl implements BaseArticleService {
···实现方法...
}注解说明
ArticleFactory 新闻标识注解
key: 源编码,新闻数据源唯一标识编码和service值一致
name: 源名称,新闻数据源名称
ArticleFactoryParam 参数配置对象数组支持多个,此处为解决新闻源下不同类型新闻而设计如:国际新闻,国内新闻类型等,已达到复用性
key: 分类标识
name: 新闻分类名称
步骤二、 根据需要实现接口方法
- 获取文章列表根据分类 此处分类为新闻设计时填写的分类名称,以下为具体实现根据分类获取新闻列表
特殊说明:
configPo.getConfig().get("catState")获取新闻分类名称,以分类查询此分类下所有新闻
@Override
public <VO> JsonResult getList(ArticleRequestDTO requestDTO, ArticleSubSetPo configPo, Pagination pagination) {
//此处获取到新闻分类标识
String category = CommonUtil.getString(configPo.getConfig().get("category"), "");
if (S.isNotBlank(category)) {
//根据分类标识查询分类下所有新闻
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("category", category);
//返回分类下所有新闻
List<ConfigArticleListVO> resList = articleService.getViewObjectList(queryWrapper, pagination, ConfigArticleListVO.class);
return JsonResult.OK(resList).bindPagination(pagination);
} else {
log.error("[抓取文章实现]未配置,文章分类信息,无法查询");
return JsonResult.FAIL_VALIDATION("查询文章分类失败,请联系管理员");
}
}- 接口参数说明
根据分类获取新闻列表
此类为config-service内部调用实现接口,由开发人员根据需求决定在何处调用
请求参数:ArticleRequestDTO 实体 此处是非必须
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| id | String | 是 | 新闻源配置ID |
| type | Integer | 否 | 分类标识 |
- 请求示例
{
"id":"10000049",
"type":"0"
}请求参数:ArticleSubSetPo 实体
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| name | String | 否 | 分类显示名称 |
| factory | String | 是 | 分类厂商标识 |
| factoryName | String | 否 | 厂商名称 |
| icon | String | 否 | icon信息 |
| config | Map | 是 | 配置信息 |
- 请求示例
{
"factory":"grab",
"factoryName":"爬虫服务",
"name":"",
"config":{ "category":"职业教育" }
}返回结果
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| id | Long | 是 | 文章id |
| createTime | timestamp | 否 | 创建时间 |
| createBy | Long | 否 | 创建人ID |
| updateTime | Long | 否 | 修改时间 |
| name | String | 是 | 文章名称 |
| pushTime | String | 否 | 发布人 |
| url | String | 是 | 文章地址 |
| articleType | Boolean | 否 | 文章类型 |
| category | String | 否 | 文章类别 |
返回实例
{
"code": 0,
"msg": "操作成功",
"data": [
{
"id": 10001165,
"createTime": "2022-01-07 08:52:00",
"createBy": 0,
"updateTime": "2022-01-07 08:52:00",
"name": "职教高考:另一个“赛道”也能上大学",
"pushTime": "2022-01-07 08:52:00",
"url": "http://edu.people.com.cn//n1/2022/0107/c1006-32325921.html",
"articleType": true,
"category": "职业教育"
}
],
"page": {
"pageIndex": 1,
"pageSize": 30,
"totalCount": 10,
"orderBy": "id:DESC",
"totalPage": 1
},
"ok": true
}- 也可以根据业务需求新增实现接口
验证
验证一、
完成以上步骤可以调用 cn.com.lightcode.config.controller.api.ArticleController 下 getFactoryList 方法进行验证
@ResponseBody
@ApiOperation(value = "下拉框-查询厂商列表")
@GetMapping("/factory")
public JsonResult getFactoryList(){
return service.getFactoryList();
}- 接口说明
接口地址:/api/article/factory
请求方式:GET
请求参数:无
返回结果中如果出现你刚创建的新闻源则证明数据源添加成功
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| id | String | 是 | 新闻源编码 |
| name | String | 是 | 新闻源名称 |
| params | String | 是 | 参数配置对象 |
{
"code": 0,
"msg": "操作成功",
"data": [
{
"id": "grab",
"name": "爬虫服务",
"params": {
"category": "分类名称"
}
}
],
"ok": true
}验证二、
在后台管理-门户扩展中心-新闻展示服务-新建新闻类

在新建新闻类下选择厂商为新增的新闻源

在信息门户查看新建的新闻源

常见问题排查
- 配置了新闻源后在信息门户没有出现配置的新闻源信息
检查数据库中
config_article表中是否存在此分类下的新闻信息检查
cn.com.lightcode.config.service.article.impl.ArticleGrabServiceImpl下getList方法是否满足查询条件如果以上两条都没有问题应该就是信息门户被前端重置
