package com.template.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.template.api.SmartDataClassControllerAPI;
import com.template.common.utils.CommonUtil;
import com.template.common.utils.paramUtils;
import com.template.model.pojo.SmartDataClass;
import com.template.model.pojo.SmartDataSource;
import com.template.model.pojo.SmartDataSourceLog;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.services.SmartDataClassService;
import com.template.services.SmartDataSourceLogService;
import com.template.services.SmartDataSourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
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.net.InetAddress;
import java.net.UnknownHostException;
/**
*
* 数据源类别 前端控制器
*
*
* @author ceshi
* @since 2023-12-05
*/
@RestController
public class SmartDataClassController implements SmartDataClassControllerAPI {
@Autowired
private SmartDataClassService smartDataClassService;
@Autowired
private SmartDataSourceService smartDataSourceService;
@Autowired
private SmartDataSourceLogService smartDataSourceLogService;
/**
* 新增 数据源分类
*
* @param smartDataClass
* @param bindingResult
* @return
*/
@Override
public CommonResult insertSmartDataClass(SmartDataClass smartDataClass, HttpServletRequest httpServletRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
if (smartDataClass.getDsClsName() == null) {
return CommonResult.fail("数据源分类名称为空!");
}
if (smartDataClass.getDsClsDriver() == null) {
return CommonResult.fail("数据源驱动为空!");
}
// 检测是否有重复名称
QueryWrapper smartDataClassQueryWrapper = new QueryWrapper<>();
smartDataClassQueryWrapper.eq("ds_cls_name", smartDataClass.getDsClsName());
smartDataClassQueryWrapper.eq("ds_cls_driver", smartDataClass.getDsClsDriver());
int count = smartDataClassService.count(smartDataClassQueryWrapper);
if (count > 0) {
return CommonResult.fail("数据源分类名称和驱动有重复,新增失败!");
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("新增数据源分类|【数据交换中心】→【数据源分类管理】|新增【数据源分类】|create", httpServletRequest);
int result = smartDataClassService.insertSmartDataClass(smartDataClass);
if (result > 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok("添加成功");
} else {
smartDataSourceLog.setLogActionStatus(0);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.fail("添加失败");
}
}
/**
* 更新 数据源分类
*
* @param smartDataClass
* @param bindingResult
* @return
*/
@Override
public CommonResult updateSmartDataClassById(SmartDataClass smartDataClass, HttpServletRequest httpServletRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
if (smartDataClass.getDsClsName() == null) {
return CommonResult.fail("数据源分类名称为空!");
}
if (smartDataClass.getDsClsDriver() == null) {
return CommonResult.fail("数据源驱动为空!");
}
// 检测是否有重复名称
QueryWrapper smartDataClassQueryWrapper = new QueryWrapper<>();
smartDataClassQueryWrapper.eq("ds_cls_name", smartDataClass.getDsClsName());
smartDataClassQueryWrapper.eq("ds_cls_driver", smartDataClass.getDsClsDriver());
int count = smartDataClassService.count(smartDataClassQueryWrapper);
if (count > 0) {
return CommonResult.fail("数据源分类名称和驱动有重复,更新失败!");
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("修改数据源分类|【数据交换中心】→【数据源分类管理】|修改【数据源分类】|update", httpServletRequest);
int result = smartDataClassService.updateSmartDataClass(smartDataClass);
if (result > 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok("修改成功");
} else {
smartDataSourceLog.setLogActionStatus(0);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.fail("修改失败");
}
}
/**
* 数据源分类 分页数据查询
*
* @param currentPage 当前页数
* @param pageCount 一页数据条数
* @param name 查询名称
* @return
*/
@Override
public CommonResult queryPageSmartDataClass(int currentPage, int pageCount, String name) {
PageUtils result = smartDataClassService.queryPageSmartDataClasss(currentPage, pageCount, name);
return CommonResult.ok(result);
}
@Override
public CommonResult deleteSmartDataClassById(int id, HttpServletRequest httpServletRequest) {
SmartDataClass data = smartDataClassService.getSmartById(id);
if (data == null) {
return CommonResult.fail("当前数据不存在,删除失败!");
}
// 检测当前类别下是否有数据源,有则不能删除,否则可以删除
QueryWrapper smartDataSourceQueryWrapper = new QueryWrapper<>();
smartDataSourceQueryWrapper.eq("ds_cls_id", id);
int count = smartDataSourceService.count(smartDataSourceQueryWrapper);
if (count > 0) {
return CommonResult.fail("当前类别下有数据,不能删除,删除失败!");
}
SmartDataSourceLog smartDataSourceLog =
CommonUtil.generateLog("删除数据源分类|【数据交换中心】→【数据源分类管理】|删除【数据源分类】|delete", httpServletRequest);
int result = smartDataClassService.deleteSmartDataClassById(id);
if (result > 0) {
smartDataSourceLog.setLogActionStatus(1);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.ok("删除成功");
} else {
smartDataSourceLog.setLogActionStatus(0);
smartDataSourceLogService.insertSmartDataSourceLog(smartDataSourceLog);
return CommonResult.fail("删除失败");
}
}
}