Commit 3723c82d by yuwei

2.0.0项目初始化

parent cd99b761
package cn.datax.common.utils;
import java.io.Serializable;
public class PageUtil implements Serializable {
private static final long serialVersionUID = 1L;
private static Integer DEFAULT_MAX_COUNT = 5000;
// 当前页码
private Integer pageNum = 1;
// 分页条数
private Integer pageSize = 20;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
if (this.pageSize > 0) {
this.pageSize = this.pageSize > DEFAULT_MAX_COUNT ? DEFAULT_MAX_COUNT : this.pageSize;
} else {
this.pageSize = 20;
}
}
public PageUtil(Integer pageNum, Integer pageSize) {
this.pageNum = pageNum;
this.pageSize = pageSize;
}
public Integer getOffset() {
pageSize = pageSize == null ? 20 : pageSize;
pageNum = pageNum == null ? 1 : pageNum;
int offset = pageNum > 0 ? (pageNum - 1) * pageSize : 0;
return offset;
}
}
package cn.datax.service.data.factory.api.feign;
import cn.datax.common.core.R;
import cn.datax.service.data.factory.api.feign.factory.DataSourceServiceFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(contextId = "dataSourceServiceFeign", value = "datax-service-data-market", fallbackFactory = DataSourceServiceFeignFallbackFactory.class)
public interface DataSourceServiceFeign {
@GetMapping("/dataSource/{id}")
R getDataSourceById(@PathVariable("id") String id);
}
package cn.datax.service.data.factory.api.feign.factory;
import cn.datax.service.data.factory.api.feign.DataSourceServiceFeign;
import cn.datax.service.data.factory.api.feign.fallback.DataSourceServiceFeignFallbackImpl;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
@Component
public class DataSourceServiceFeignFallbackFactory implements FallbackFactory<DataSourceServiceFeign> {
@Override
public DataSourceServiceFeign create(Throwable throwable) {
DataSourceServiceFeignFallbackImpl userServiceFeignFallback = new DataSourceServiceFeignFallbackImpl();
userServiceFeignFallback.setCause(throwable);
return userServiceFeignFallback;
}
}
package cn.datax.service.data.factory.api.feign.fallback;
import cn.datax.common.core.R;
import cn.datax.service.data.factory.api.feign.DataSourceServiceFeign;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class DataSourceServiceFeignFallbackImpl implements DataSourceServiceFeign {
@Setter
private Throwable cause;
@Override
public R getDataSourceById(String id) {
log.error("feign 调用{}出错", id, cause);
return null;
}
}
...@@ -74,6 +74,11 @@ ...@@ -74,6 +74,11 @@
<artifactId>data-market-service-api</artifactId> <artifactId>data-market-service-api</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>cn.datax</groupId>
<artifactId>data-factory-service-api</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -8,6 +8,9 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -8,6 +8,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController @RestController
public class ApiController extends BaseController { public class ApiController extends BaseController {
...@@ -16,7 +19,7 @@ public class ApiController extends BaseController { ...@@ -16,7 +19,7 @@ public class ApiController extends BaseController {
@RequestMapping(value = "/v1/**", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/v1/**", method = {RequestMethod.GET, RequestMethod.POST})
public R apiV1(){ public R apiV1(){
apiService.v1(); List<Map<String, Object>> list = apiService.v1();
return R.ok(); return R.ok().setData(list);
} }
} }
package cn.datax.service.data.market.service; package cn.datax.service.data.market.service;
import java.util.List;
import java.util.Map;
public interface ApiService { public interface ApiService {
void v1(); List<Map<String, Object>> v1();
} }
package cn.datax.service.data.market.service.impl; package cn.datax.service.data.market.service.impl;
import cn.datax.common.core.R;
import cn.datax.common.database.DataSourceFactory;
import cn.datax.common.database.DbQuery;
import cn.datax.common.database.constants.DbQueryProperty;
import cn.datax.common.exception.DataException; import cn.datax.common.exception.DataException;
import cn.datax.common.utils.PageUtil;
import cn.datax.common.utils.ThrowableUtil; import cn.datax.common.utils.ThrowableUtil;
import cn.datax.service.data.factory.api.dto.DbSchema;
import cn.datax.service.data.factory.api.entity.DataSourceEntity;
import cn.datax.service.data.factory.api.feign.DataSourceServiceFeign;
import cn.datax.service.data.market.api.entity.DataApiEntity;
import cn.datax.service.data.market.dao.DataApiDao;
import cn.datax.service.data.market.service.ApiService; import cn.datax.service.data.market.service.ApiService;
import cn.datax.service.data.market.utils.ThreadUtil; import cn.datax.service.data.market.utils.ThreadUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class ApiServiceImpl implements ApiService { public class ApiServiceImpl implements ApiService {
@Autowired
private DataSourceFactory dataSourceFactory;
@Autowired
private DataSourceServiceFeign dataSourceServiceFeign;
@Autowired
private DataApiDao dataApiDao;
@Override @Override
public void v1() { public List<Map<String, Object>> v1() {
try { DataApiEntity dataApiEntity = dataApiDao.selectById(ThreadUtil.get().getId());
Thread.sleep(10000); R result = dataSourceServiceFeign.getDataSourceById(dataApiEntity.getExecuteConfig().getSourceId());
} catch (InterruptedException e) { if(result == null || !result.isSuccess() || ObjectUtil.isEmpty(result.getData())){
e.printStackTrace(); throw new DataException("API调用查询数据源出错");
} }
DataSourceEntity dataSource = JSON.parseObject(JSON.toJSONString(result.getData()), DataSourceEntity.class);
DbSchema dbSchema = dataSource.getDbSchema();
DbQueryProperty dbQueryProperty = new DbQueryProperty(dataSource.getDbType(), dbSchema.getHost(),
dbSchema.getUsername(), dbSchema.getPassword(), dbSchema.getPort(), dbSchema.getDbName());
DbQuery dbQuery = dataSourceFactory.createDbQuery(dbQueryProperty);
try { try {
if (ThreadUtil.get().getCallerUrl().contains("/24")) { // 分页查询
int i = 1/0; PageUtil pageUtil = new PageUtil(1, 20);
} else { Integer offset = pageUtil.getOffset();
int i = 1/1; List<Map<String, Object>> list = dbQuery.queryList(dataApiEntity.getSqlText());
} return list;
} catch (Exception e) { } catch (Exception e) {
log.error("全局异常信息ex={}, StackTrace={}", e.getMessage(), ThrowableUtil.getStackTrace(e)); log.error("全局异常信息ex={}, StackTrace={}", e.getMessage(), ThrowableUtil.getStackTrace(e));
ThreadUtil.get().setStatus(0); ThreadUtil.get().setStatus(0);
......
...@@ -15,7 +15,7 @@ public class UserServiceFeignFallbackImpl implements UserServiceFeign { ...@@ -15,7 +15,7 @@ public class UserServiceFeignFallbackImpl implements UserServiceFeign {
@Override @Override
public R loginByUsername(String username) { public R loginByUsername(String username) {
log.error("feign 调用用户{}出错", username, cause); log.error("feign 调用{}出错", username, cause);
return null; return null;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment