add 汽车标准数字化平台ASMS开放API接口管理(未完成)

This commit is contained in:
liao
2023-10-18 09:48:57 +08:00
parent 7a1deb16f5
commit 8f1d1bb8e7
13 changed files with 646 additions and 0 deletions
+13
View File
@@ -257,4 +257,17 @@ CREATE TABLE `laws_contact_manage`
alter table laws_contact_manage
comment '联络人管理';
DROP TABLE IF EXISTS `laws_asms_open_api`;
CREATE TABLE `laws_asms_open_api`
(
`id` varchar(36) NOT NULL PRIMARY KEY COMMENT '主键ID',
`api_name` varchar(200) COMMENT 'api名称',
`api_url` varchar(200) COMMENT 'api路径',
`dict_id` varchar(50) COMMENT '数据字典id',
`api_type` varchar(5) COMMENT '接口类型(1字典,2分标委,3法规)',
`query_param_json` text COMMENT '参数map'
) COMMENT = '汽车标准数字化平台ASMS开放API接口管理';
alter table laws_asms_open_api
comment '汽车标准数字化平台ASMS开放API接口管理';
@@ -0,0 +1,176 @@
package com.jero.modules.docking.asms.api.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.api.service.ILawsAsmsOpenApiService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
/**
* @Description: 汽车标准数字化平台ASMS开放API接口管理
* @Author: jero-boot
* @Date: 2023-10-18
* @Version: V1.0
*/
@Api(tags="汽车标准数字化平台ASMS开放API接口管理")
@RestController
@RequestMapping("/docking/asms/api/lawsAsmsOpenApi")
@Slf4j
public class LawsAsmsOpenApiController extends JeroController<LawsAsmsOpenApi, ILawsAsmsOpenApiService> {
@Autowired
private ILawsAsmsOpenApiService lawsAsmsOpenApiService;
/**
* 分页列表查询
*
* @param lawsAsmsOpenApi
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-分页列表查询")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-分页列表查询", notes="汽车标准数字化平台ASMS开放API接口管理-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<LawsAsmsOpenApi>> queryPageList(LawsAsmsOpenApi lawsAsmsOpenApi,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<LawsAsmsOpenApi> pageList = lawsAsmsOpenApiService.queryPage(lawsAsmsOpenApi, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param lawsAsmsOpenApi
* @param req
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-列表查询")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-列表查询", notes="汽车标准数字化平台ASMS开放API接口管理-列表查询")
@GetMapping(value = "/list")
public Result<List<LawsAsmsOpenApi>> queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req) {
List<LawsAsmsOpenApi> list = lawsAsmsOpenApiService.queryList(lawsAsmsOpenApi, req);
return Result.OK(list);
}
/**
* 添加
*
* @param lawsAsmsOpenApi
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-添加")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-添加", notes="汽车标准数字化平台ASMS开放API接口管理-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody LawsAsmsOpenApi lawsAsmsOpenApi) {
lawsAsmsOpenApiService.add(lawsAsmsOpenApi);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param lawsAsmsOpenApi
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-编辑")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-编辑", notes="汽车标准数字化平台ASMS开放API接口管理-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody LawsAsmsOpenApi lawsAsmsOpenApi) {
lawsAsmsOpenApiService.editById(lawsAsmsOpenApi);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-通过id删除")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-通过id删除", notes="汽车标准数字化平台ASMS开放API接口管理-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
}
lawsAsmsOpenApiService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-批量删除")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-批量删除", notes="汽车标准数字化平台ASMS开放API接口管理-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.lawsAsmsOpenApiService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "汽车标准数字化平台ASMS开放API接口管理-通过id查询")
@ApiOperation(value="汽车标准数字化平台ASMS开放API接口管理-通过id查询", notes="汽车标准数字化平台ASMS开放API接口管理-通过id查询")
@GetMapping(value = "/queryById")
public Result<LawsAsmsOpenApi> queryById(@RequestParam(name="id",required=true) String id) {
LawsAsmsOpenApi lawsAsmsOpenApi = lawsAsmsOpenApiService.queryById(id);
if(lawsAsmsOpenApi==null) {
return Result.error("未找到对应数据");
}
return Result.OK(lawsAsmsOpenApi);
}
/**
* 导出excel
*
* @param request
* @param lawsAsmsOpenApi
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsAsmsOpenApi lawsAsmsOpenApi) {
return super.exportXls(request, lawsAsmsOpenApi, LawsAsmsOpenApi.class, "汽车标准数字化平台ASMS开放API接口管理");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<LawsAsmsOpenApi> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, LawsAsmsOpenApi.class);
}
}
@@ -0,0 +1,60 @@
package com.jero.modules.docking.asms.api.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 汽车标准数字化平台ASMS开放API接口管理
* @Author: jero-boot
* @Date: 2023-10-18
* @Version: V1.0
*/
@Data
@TableName("laws_asms_open_api")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="laws_asms_open_api对象", description="汽车标准数字化平台ASMS开放API接口管理")
public class LawsAsmsOpenApi implements Serializable {
private static final long serialVersionUID = 1L;
/**主键ID*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键ID")
private java.lang.String id;
/**api名称*/
@Excel(name = "api名称", width = 15)
@ApiModelProperty(value = "api名称")
private java.lang.String apiName;
/**api路径*/
@Excel(name = "api路径", width = 15)
@ApiModelProperty(value = "api路径")
private java.lang.String apiUrl;
/**数据字典id*/
@Excel(name = "数据字典id", width = 15)
@ApiModelProperty(value = "数据字典id")
private java.lang.String dictId;
/**接口类型(1字典,2分标委,3法规)*/
@Excel(name = "接口类型(1字典,2分标委,3法规)", width = 15)
@ApiModelProperty(value = "接口类型(1字典,2分标委,3法规)")
private java.lang.String apiType;
/**参数map*/
@Excel(name = "参数map", width = 15)
@ApiModelProperty(value = "参数map")
private java.lang.String queryParamJson;
}
@@ -0,0 +1,17 @@
package com.jero.modules.docking.asms.api.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 汽车标准数字化平台ASMS开放API接口管理
* @Author: jero-boot
* @Date: 2023-10-18
* @Version: V1.0
*/
public interface LawsAsmsOpenApiMapper extends BaseMapper<LawsAsmsOpenApi> {
}
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.docking.asms.api.mapper.LawsAsmsOpenApiMapper">
<resultMap id="LawsAsmsOpenApiResultMap" type="com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi">
<id column="id" property="id" />
<result column="api_name" property="apiName" />
<result column="api_url" property="apiUrl" />
<result column="dict_id" property="dictId" />
<result column="api_type" property="apiType" />
<result column="query_param_json" property="queryParamJson" />
</resultMap>
</mapper>
@@ -0,0 +1,76 @@
package com.jero.modules.docking.asms.api.service;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
* @Description: 汽车标准数字化平台ASMS开放API接口管理
* @Author: jero-boot
* @Date: 2023-10-18
* @Version: V1.0
*/
public interface ILawsAsmsOpenApiService extends IService<LawsAsmsOpenApi> {
/**
* 分页查询
*
* @param lawsAsmsOpenApi
* @param pageNo
* @param pageSize
* @param req
* @return
*/
IPage<LawsAsmsOpenApi> queryPage(LawsAsmsOpenApi lawsAsmsOpenApi, Integer pageNo, Integer pageSize, HttpServletRequest req);
/**
* 列表查询
*
* @param lawsAsmsOpenApi
* @param req
* @return
*/
List<LawsAsmsOpenApi> queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req);
/**
* 保存
*
* @param lawsAsmsOpenApi
* @return
*/
void add(LawsAsmsOpenApi lawsAsmsOpenApi);
/**
* 更新
*
* @param lawsAsmsOpenApi
* @return
*/
void editById(LawsAsmsOpenApi lawsAsmsOpenApi);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
LawsAsmsOpenApi queryById(String id);
}
@@ -0,0 +1,112 @@
package com.jero.modules.docking.asms.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.docking.asms.api.entity.LawsAsmsOpenApi;
import com.jero.modules.docking.asms.api.mapper.LawsAsmsOpenApiMapper;
import com.jero.modules.docking.asms.api.service.ILawsAsmsOpenApiService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.system.query.QueryGenerator;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* @Description: 汽车标准数字化平台ASMS开放API接口管理
* @Author: jero-boot
* @Date: 2023-10-18
* @Version: V1.0
*/
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMapper, LawsAsmsOpenApi> implements ILawsAsmsOpenApiService {
/**
* 分页查询
*
* @param lawsAsmsOpenApi
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@Override
public IPage<LawsAsmsOpenApi> queryPage(LawsAsmsOpenApi lawsAsmsOpenApi, Integer pageNo, Integer pageSize,
HttpServletRequest req) {
QueryWrapper<LawsAsmsOpenApi> queryWrapper = QueryGenerator.initQueryWrapper(lawsAsmsOpenApi, req.getParameterMap());
Page<LawsAsmsOpenApi> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
/**
* 列表查询
*
* @param lawsAsmsOpenApi
* @param req
* @return
*/
@Override
public List<LawsAsmsOpenApi> queryList(LawsAsmsOpenApi lawsAsmsOpenApi, HttpServletRequest req) {
return list(QueryGenerator.initQueryWrapper(lawsAsmsOpenApi, req.getParameterMap()));
}
/**
* 保存
*
* @param lawsAsmsOpenApi
* @return
*/
@Override
public void add(LawsAsmsOpenApi lawsAsmsOpenApi) {
save(lawsAsmsOpenApi);
}
/**
* 更新
*
* @param lawsAsmsOpenApi
* @return
*/
@Override
public void editById(LawsAsmsOpenApi lawsAsmsOpenApi) {
saveOrUpdate(lawsAsmsOpenApi);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public LawsAsmsOpenApi queryById(String id) {
return getById(id);
}
}
@@ -0,0 +1,30 @@
package com.jero.modules.docking.asms.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import com.jero.modules.laws.common.constant.FieldCommon;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* @Author: liao
* @Date: 2023/10/17 17:36
* @Description:
*/
@Api(tags="国内法规标准")
@RestController
@RequestMapping("/asms")
public class AsmsController {
@Autowired
private AsmsPostUtil asmsPostUtil;
@GetMapping(value = "/getInfo")
public Result<Object> getInfo(String uri, Map<String, String> map) {
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(uri, map);
return Result.OK(mapList);
}
}
@@ -0,0 +1,9 @@
package com.jero.modules.docking.asms.service;
/**
* @Author: liao
* @Date: 2023/10/17 14:51
* @Description: 汽车标准数字化化平台ASMS
*/
public interface IAsmsOpenApi {
}
@@ -0,0 +1,16 @@
package com.jero.modules.docking.asms.service.impl;
import com.jero.modules.docking.asms.service.IAsmsOpenApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Author: liao
* @Date: 2023/10/17 14:52
* @Description: 汽车标准数字化化平台ASMS
*/
@Service
@Slf4j
public class AsmsOpenApiImpl implements IAsmsOpenApi {
}
@@ -0,0 +1,107 @@
package com.jero.modules.docking.asms.util;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @Author: liao
* @Date: 2023/10/17 15:12
* @Description: 远程调用
*/
@Component
public class AsmsPostUtil {
@Autowired
private RestTemplate restTemplate;
@Autowired
private RedisUtil redisUtil;
@Value("${asms.host}")
private String host;
@Value("${asms.username}")
private String username;
@Value("${asms.password}")
private String password;
@Value("${asms.expire}")
private Long expire;
// 汽车标准数字化平台ASMS权限验证token
private final static String ASMS_SYSTEM_AUTH_TOKEN = "ASMS_SYSTEM_AUTH_TOKEN";
/**
* @Author: liao
* @Date: 2023/10/17 15:43
* @Description: 获取token字符串
**/
private String getToken() {
// 从redis中获取token
String token = (String) redisUtil.get(ASMS_SYSTEM_AUTH_TOKEN);
// 如果token为空则重新获取
if (StringUtils.isBlank(token)) {
Map<String, String> map = new HashMap<>();
map.put("username", username);
map.put("password", password);
ResponseEntity<Result> responseEntity = restTemplate.postForEntity(host + "xiaobodata/openApi/login", map, Result.class);
if (!responseEntity.getBody().isSuccess()) {
throw new JeroBootException("汽车标准数字化平台:token获取失败");
}
Map<String, String> resultMap = (Map<String, String>) responseEntity.getBody().getResult();
token = resultMap.get("token");
// 将新获取的token存入redis
redisUtil.set(ASMS_SYSTEM_AUTH_TOKEN, token, expire * 60 * 60);
}
return token;
}
/**
* @Author: liao
* @Date: 2023/10/17 16:33
* @Description: 发送get请求
* uri:接口地址
* map:参数map
**/
public List<Map<String, String>> sendGetReq(String uri, Map<String, String> map) {
// 准备请求头
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/x-www-form-urlencoded");
headers.set("X-Access-Token", getToken());
// 准备url
String url = host + uri;
if (!Objects.isNull(map)) {
StringBuilder sb = new StringBuilder();
map.forEach((k, v) -> sb.append("&" + k + "=" + v));
String s = sb.toString();
url += "?" + s.substring(1);
}
ResponseEntity<Result> responseEntity = restTemplate.exchange(url.toString(),
HttpMethod.GET, new HttpEntity<>(null, headers), Result.class);
if (!responseEntity.getBody().isSuccess()) {
throw new JeroBootException("汽车标准数字化平台:请求发送失败");
}
Map<String, Object> resultMap = (Map<String, Object>) responseEntity.getBody().getResult();
List<Map<String, String>> mapList = (List<Map<String, String>>) resultMap.get("records");
mapList.forEach(eMap -> {
StringBuilder sb = new StringBuilder();
eMap.forEach((k, v) -> sb.append(k + ":" + v + ","));
System.out.println(sb);
});
return mapList;
}
}
@@ -383,6 +383,16 @@ hiwork:
# 统一消息集成
messageUrl: taskapi/task.basedata/notice/noticeCalls/send
# 汽车标准数字化平台ASMS
asms:
host: http://standard.catarc.org.cn/
# 测试账号用户名
username: ceshi
# 测试账号密码
password: Catarc@333
# token过期时间(单位:小时)
expire: 48
# 单点登录配置(所有配置信息需要协调注册,现在都为假)
oauth:
# 客户端应用注册ID
@@ -1,6 +1,7 @@
package com.jero.modules.standard.domestic;
import com.jero.JeroSystemSingleApplication;
import com.jero.modules.docking.asms.util.AsmsPostUtil;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import org.junit.Test;
@@ -20,6 +21,8 @@ public class StandardTest {
@Autowired
private ILawsDomesticStandardService lawsDomesticStandardService;
@Autowired
private AsmsPostUtil asmsPostUtil;
@Test
public void getByIdTest() {
@@ -27,4 +30,9 @@ public class StandardTest {
System.out.println(byId);
}
@Test
public void testAsmsPost() {
asmsPostUtil.sendGetReq("/countriesregions/list", null);
}
}