修复问题
parent
36bfaff2b2
commit
45377caf4f
|
@ -0,0 +1,44 @@
|
|||
package com.api.xuanran.wang.eny.workflow.controller;
|
||||
|
||||
import aiyh.utils.ApiResult;
|
||||
import aiyh.utils.Util;
|
||||
import io.swagger.v3.oas.annotations.parameters.RequestBody;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/14 15:02
|
||||
*/
|
||||
@Path("/wxr/eny/workflow/rate")
|
||||
public class GetExchangeRate {
|
||||
|
||||
@POST
|
||||
@Path("/exchange")
|
||||
@Produces(MediaType.APPLICATION_OCTET_STREAM)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public String exchangeRate(@Context HttpServletRequest request,
|
||||
@Context HttpServletResponse response,
|
||||
@RequestBody Map<String, String> params){
|
||||
String baseCurrency = request.getParameter("baseCurrency");
|
||||
String interfaceCurrency = request.getParameter("interfaceCurrency");
|
||||
params.get("area");
|
||||
if(StringUtils.isBlank(baseCurrency) || StringUtils.isBlank(interfaceCurrency)){
|
||||
return ApiResult.error("本位币或接口响应币种为空!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkParams(Map<String, String> params){
|
||||
for (Map.Entry<String, String> entry : params.entrySet()) {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
package xuanran.wang.log.cus_api_log;
|
||||
|
||||
|
||||
import aiyh.utils.Util;
|
||||
import aiyh.utils.annotation.recordset.SqlDbFieldAnn;
|
||||
import aiyh.utils.excention.CustomerException;
|
||||
import aiyh.utils.recordset.MapperBuilderSql;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.soa.workflow.request.RequestInfo;
|
||||
import xuanran.wang.log.cus_api_log.annotations.CusApiLogTable;
|
||||
import xuanran.wang.log.cus_api_log.dto.CusApiLogBaseDto;
|
||||
import xuanran.wang.log.cus_api_log.mapper.CusApiLogMapper;
|
||||
import xuanran.wang.log.cus_api_log.pojo.CusApiLogPojo;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 11:39
|
||||
*/
|
||||
public class CusApiLogUtil {
|
||||
|
||||
private static final CusApiLogMapper mapper = Util.getMapper(CusApiLogMapper.class);
|
||||
public static void insertApiLog(CusApiLogBaseDto dto){
|
||||
insertApiLog(dto, -1);
|
||||
}
|
||||
|
||||
public static void insertApiLog(CusApiLogBaseDto dto, int modelId){
|
||||
CusApiLogPojo pojo = parseDto(dto);
|
||||
String tableName = pojo.getTableName();
|
||||
if(modelId < 0){
|
||||
modelId = Util.getIntValue(Util.getModeIdByTableName(tableName),-1);
|
||||
if(modelId < 0){
|
||||
throw new CustomerException(tableName + " not found model id!");
|
||||
}
|
||||
}
|
||||
int modeDataId = Util.getModeDataId(tableName, modelId, 1);
|
||||
Map<String, Object> params = pojo.getParams();
|
||||
Map<String, Object> whereMap = new HashMap<>();
|
||||
whereMap.put("id", modeDataId);
|
||||
String where = MapperBuilderSql.builderNoWhereAndEn(whereMap);
|
||||
String updateSql = MapperBuilderSql.builderUpdateSql(tableName, pojo.getParams());
|
||||
params.putAll(whereMap);
|
||||
if (!mapper.insertApiLog(updateSql + " where " + where, params)) {
|
||||
mapper.deleteErrorLog(tableName, modeDataId);
|
||||
throw new CustomerException("insert log sql execute error! please check ecology.log and /cus/sql_log/cus.log");
|
||||
}
|
||||
Util.rebuildModeDataShare(modeDataId, modelId, 1);
|
||||
}
|
||||
|
||||
public static <T extends CusApiLogBaseDto> T initCusApiLogDto(RequestInfo requestInfo, Class<T> clazz){
|
||||
T obj;
|
||||
try {
|
||||
obj = clazz.newInstance();
|
||||
}catch (Exception e){
|
||||
throw new CustomerException("class : " + clazz.getName() + " new instance error!");
|
||||
}
|
||||
if(Objects.isNull(requestInfo)){
|
||||
return obj;
|
||||
}
|
||||
obj.setUserWorkflow(requestInfo.getWorkflowid());
|
||||
String requestId = requestInfo.getRequestid();
|
||||
obj.setSourceRequestId(requestId);
|
||||
String requestMark = Util.null2DefaultStr(mapper.selectRequestMark(requestId),"");
|
||||
obj.setWorkflowNo(requestMark);
|
||||
obj.setCreateUser(requestInfo.getRequestManager().getUser().getUID());
|
||||
return obj;
|
||||
}
|
||||
|
||||
private static CusApiLogPojo parseDto(CusApiLogBaseDto dto){
|
||||
String tableName = null;
|
||||
Class<? extends CusApiLogBaseDto> childClass = dto.getClass();
|
||||
Field[] childFields = childClass.getDeclaredFields();
|
||||
List<Field> fieldList = new ArrayList<>(Arrays.asList(childFields));
|
||||
Class<?> superClass = childClass.getSuperclass();
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
if(superClass.isAssignableFrom(CusApiLogBaseDto.class)){
|
||||
fieldList.addAll(Arrays.asList(superClass.getDeclaredFields()));
|
||||
tableName = parseTableName(superClass);
|
||||
}
|
||||
String childTableName = parseTableName(childClass);
|
||||
if(StringUtils.isNotBlank(childTableName)){
|
||||
tableName = childTableName;
|
||||
}
|
||||
for (Field field : fieldList) {
|
||||
SqlDbFieldAnn sqlDbFieldAnn = field.getAnnotation(SqlDbFieldAnn.class);
|
||||
if(null != sqlDbFieldAnn){
|
||||
try {
|
||||
field.setAccessible(true);
|
||||
params.put(sqlDbFieldAnn.value(), field.get(dto));
|
||||
}catch (IllegalAccessException e){
|
||||
throw new IllegalArgumentException("field get value error! current field is [ " + field.getName() + " ]", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return CusApiLogPojo.builder().tableName(tableName).params(params).build();
|
||||
}
|
||||
|
||||
private static String parseTableName(Class<?> clazz){
|
||||
CusApiLogTable apiLogTable = clazz.getAnnotation(CusApiLogTable.class);
|
||||
if(apiLogTable != null){
|
||||
return apiLogTable.value();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package xuanran.wang.log.cus_api_log.annotations;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 13:05
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.TYPE)
|
||||
@Documented
|
||||
public @interface CusApiLogTable {
|
||||
String value();
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
package xuanran.wang.log.cus_api_log.dto;
|
||||
|
||||
import aiyh.utils.annotation.recordset.SqlDbFieldAnn;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import xuanran.wang.log.cus_api_log.annotations.CusApiLogTable;
|
||||
|
||||
/**
|
||||
* <h1>接口日志实体类</h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 11:40
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@CusApiLogTable(value = "uf_api_log")
|
||||
public class CusApiLogBaseDto{
|
||||
/**
|
||||
* <h2>相关流程</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "user_workflow")
|
||||
private String userWorkflow;
|
||||
/**
|
||||
* <h2>流程编号</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "workflow_no")
|
||||
private String workflowNo;
|
||||
/**
|
||||
* <h2>接口标识</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "unique_code")
|
||||
private String uniqueCode;
|
||||
/**
|
||||
* <h2>请求地址</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "request_url")
|
||||
private String requestUrl;
|
||||
/**
|
||||
* <h2>请求说明</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "request_desc")
|
||||
private String requestDesc;
|
||||
/**
|
||||
* <h2>请求参数</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "request_param")
|
||||
private String requestParam;
|
||||
/**
|
||||
* <h2>请求结果</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "response")
|
||||
private String response;
|
||||
/**
|
||||
* <h2>异常信息</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "exception")
|
||||
private String exception;
|
||||
/**
|
||||
* <h2>流程创建人</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "create_user")
|
||||
private int createUser;
|
||||
/**
|
||||
* <h2>响应信息</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "response_msg")
|
||||
private String responseMsg;
|
||||
/**
|
||||
* <h2>请求id</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "source_request_id")
|
||||
private String sourceRequestId;
|
||||
/**
|
||||
* <h2>成功/失败</h2>
|
||||
**/
|
||||
@SqlDbFieldAnn(value = "request_success")
|
||||
private int requestSuccess;
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package xuanran.wang.log.cus_api_log.dto;
|
||||
|
||||
import aiyh.utils.annotation.recordset.SqlDbFieldAnn;
|
||||
import lombok.*;
|
||||
import xuanran.wang.log.cus_api_log.annotations.CusApiLogTable;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 12:45
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DemoDto extends CusApiLogBaseDto{
|
||||
@SqlDbFieldAnn(value = "ext")
|
||||
private String ext;
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package xuanran.wang.log.cus_api_log.interfaces;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 12:44
|
||||
*/
|
||||
public interface CusLogDtoInterface {
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package xuanran.wang.log.cus_api_log.mapper;
|
||||
|
||||
import aiyh.utils.annotation.recordset.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 13:24
|
||||
*/
|
||||
@SqlMapper
|
||||
public interface CusApiLogMapper {
|
||||
@Update(custom = true)
|
||||
boolean insertApiLog(@SqlString String sql, Map<String, Object> params);
|
||||
@Select("select requestMark from workflow_requestBase where requestId = #{requestId}")
|
||||
String selectRequestMark(@ParamMapper("requestId") String requestId);
|
||||
@Delete("delete from $t{tableName} where id = #{id}")
|
||||
void deleteErrorLog(@ParamMapper("tableName") String tableName,
|
||||
@ParamMapper("id") Integer id);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package xuanran.wang.log.cus_api_log.pojo;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 13:08
|
||||
*/
|
||||
@Builder
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CusApiLogPojo {
|
||||
private String tableName;
|
||||
private Map<String, Object> params;
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package xuanran.wang.log.cus_api_log.test;
|
||||
|
||||
import aiyh.utils.httpUtil.ResponeVo;
|
||||
import basetest.BaseTest;
|
||||
import org.junit.Test;
|
||||
import weaver.hrm.User;
|
||||
import weaver.soa.workflow.request.RequestInfo;
|
||||
import weaver.workflow.request.RequestManager;
|
||||
import xuanran.wang.rest_test.pojo.CusRestTemplateResponse;
|
||||
import xuanran.wang.log.cus_api_log.CusApiLogUtil;
|
||||
import xuanran.wang.log.cus_api_log.dto.DemoDto;
|
||||
import xuanran.wang.rest_test.CusRestTemplate;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <h1></h1>
|
||||
*
|
||||
* @author xuanran.wang
|
||||
* @date 2023/7/11 12:47
|
||||
*/
|
||||
public class CusApiLogUtilTest extends BaseTest {
|
||||
|
||||
private final CusRestTemplate cusRestTemplate = new CusRestTemplate();
|
||||
|
||||
@Test
|
||||
public void test(){
|
||||
RequestInfo info = new RequestInfo();
|
||||
info.setWorkflowid("1");
|
||||
info.setRequestid("123");
|
||||
RequestManager manager = new RequestManager();
|
||||
manager.setUser(new User(1));
|
||||
info.setRequestManager(manager);
|
||||
DemoDto demoDto = CusApiLogUtil.initCusApiLogDto(info, DemoDto.class);
|
||||
Map<String, Object> param = new HashMap<>();
|
||||
param.put("grant_type","client_credentials");
|
||||
param.put("client_id","fanwei");
|
||||
param.put("client_secret","b7c20b12cb124cbebb0b8833caac6b87");
|
||||
|
||||
CusRestTemplateResponse success = CusRestTemplateResponse
|
||||
.builder()
|
||||
.successField("code")
|
||||
.successValue(0)
|
||||
.errorMsg("msg")
|
||||
.logDto(demoDto)
|
||||
.build();
|
||||
|
||||
success.setSuccessCallBack(cusLogDtoInterface -> {
|
||||
DemoDto dto = (DemoDto) cusLogDtoInterface;
|
||||
dto.setExt("1");
|
||||
});
|
||||
|
||||
success.setErrorCallBack((exception,cusLogDtoInterface)->{
|
||||
DemoDto dto = (DemoDto) cusLogDtoInterface;
|
||||
dto.setExt("失败了");
|
||||
} );
|
||||
|
||||
ResponeVo responeVo = cusRestTemplate.apiGet("https://gl.shstx.cn:48002/auth/oauth/token", param, new HashMap<>(), success);
|
||||
String token = cusRestTemplate.parseCommon(responeVo.getResponseMap(), "data.access_token", String.class);
|
||||
System.out.println("token => " + token);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue