package com.template.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.template.annotation.DESRespondSecret;
import com.template.api.SmartDataSourceControllerAPI;
import com.template.common.utils.CommonUtil;
import com.template.common.utils.paramUtils;
import com.template.model.pojo.SmartDataSource;
import com.template.model.pojo.SmartDataSourceLog;
import com.template.model.pojo.SmartDataTask;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.services.SmartDataSourceLogService;
import com.template.services.SmartDataSourceService;
import com.template.services.SmartDataTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
*
* 数据源配置 前端控制器
*
*
* @author ceshi
* @since 2023-12-05
*/
@RestController
//返回参数加密注解
@DESRespondSecret
public class SmartDataSourceController implements SmartDataSourceControllerAPI {
@Autowired
private SmartDataSourceService smartDataSourceService;
@Autowired
private SmartDataTaskService smartDataTaskService;
@Autowired
private SmartDataSourceLogService smartDataSourceLogService;
/**
* 新增数据源
*
* @param smartDataSource 数据源
* @param bindingResult
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult insertSmartDataSource(SmartDataSource smartDataSource, HttpServletRequest httpServletRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("新增数据源|【数据交换中心】→【数据源管理】|新增【数据源】|create", httpServletRequest);
Map result = smartDataSourceService.insertSmartDataSource(smartDataSource);
if (Integer.parseInt((String) result.get("code")) == 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok(result.get("msg"));
} else {
return CommonResult.fail((String) result.get("msg"));
}
}
/**
* 测试 数据源连接状态
*
* @param smartDataSource
* @param bindingResult
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult vcoSmartDataSource(SmartDataSource smartDataSource, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
Map result = smartDataSourceService.vcoSmartDataSource(smartDataSource);
return Integer.parseInt((String) result.get("code")) == 0 ? CommonResult.ok(result.get("msg")) : CommonResult.fail((String) result.get("msg"));
}
/**
* 更新数据源
*
* @param smartDataSource
* @param bindingResult
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult updateSmartDataSourceById(SmartDataSource smartDataSource, HttpServletRequest httpServletRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("更新数据源|【数据交换中心】→【数据源管理】|更新【数据源】|update", httpServletRequest);
Map result = smartDataSourceService.updateSmartDataSource(smartDataSource);
if (Integer.parseInt((String) result.get("code")) == 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok(result.get("msg"));
} else {
return CommonResult.fail((String) result.get("msg"));
}
}
/**
* 数据源分页数据查询
*
* @param currentPage 当前页数
* @param pageCount 一页数据条数
* @param smartDataSource 查询数据源实体
* @return
*/
@Override
@DESRespondSecret(validated = true)
public CommonResult queryPageSmartDataSources(int currentPage, int pageCount, SmartDataSource smartDataSource) {
PageInfo result = smartDataSourceService.queryPageSmartDataSources(currentPage, pageCount, smartDataSource);
return CommonResult.ok(result);
}
@Override
@DESRespondSecret(validated = true)
public CommonResult querySmartDataSourceById(int id) {
SmartDataSource smartDataSource = smartDataSourceService.querySmartDataSourceById(id);
return CommonResult.ok(smartDataSource);
}
@Override
@DESRespondSecret(validated = true)
public CommonResult deleteSmartDataSourceById(int id, HttpServletRequest httpServletRequest) {
SmartDataSource data = smartDataSourceService.getSmartById(id);
if (data == null) {
return CommonResult.fail("当前数据源不存在,删除失败!");
}
// 检测当前类别下是否有数据源,有则不能删除,否则可以删除
QueryWrapper smartDataTaskQueryWrapper = new QueryWrapper<>();
smartDataTaskQueryWrapper.eq("tk_ds_id_source", id).or().eq("tk_ds_id_destination", id);
int count = smartDataTaskService.count(smartDataTaskQueryWrapper);
if (count > 0) {
return CommonResult.fail("当前数据源下有任务,不能删除,删除失败!");
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("删除数据源|【数据交换中心】→【数据源管理】|删除【数据源】|delete", httpServletRequest);
int result = smartDataSourceService.deleteSmartDataSourceById(id);
if (result > 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok("删除成功");
} else {
return CommonResult.fail("删除失败");
}
}
}