Browse Source

feat: 增加判断code是否存在的公共方法

master
niushuai233 2 years ago
parent
commit
cfce16bf02
  1. 48
      src/main/java/cc/niushuai/bastionserver/common/base/controller/BaseController.java
  2. 6
      src/main/java/cc/niushuai/bastionserver/modules/server/controller/ServerInfoController.java

48
src/main/java/cc/niushuai/bastionserver/common/base/controller/BaseController.java

@ -1,11 +1,15 @@ @@ -1,11 +1,15 @@
package cc.niushuai.bastionserver.common.base.controller;
import cc.niushuai.bastionserver.common.api.vo.Result;
import cc.niushuai.bastionserver.common.exception.BusinessException;
import cc.niushuai.bastionserver.common.system.query.QueryGenerator;
import cc.niushuai.bastionserver.common.system.vo.LoginUser;
import cc.niushuai.bastionserver.common.util.oConvertUtils;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.extern.slf4j.Slf4j;
@ -204,4 +208,48 @@ public class BaseController<T, S extends IService<T>> { @@ -204,4 +208,48 @@ public class BaseController<T, S extends IService<T>> {
}
return Result.error("文件导入失败!");
}
/**
* 根据提供的字段检查是否已存在
*
* @param obj 取数据对象
* @param fields 根据fields查重
* @author niushuai233
* @date: 2023/1/3 22:16
*/
protected void exists(T obj, SFunction<T, ?>... fields) {
exists(null, obj, fields);
}
/**
* 根据提供的字段检查是否已存在
*
* @param obj 取数据对象
* @param id id不为null表示更新
* @param fields 根据fields查重
* @author niushuai233
* @date: 2023/1/3 22:16
*/
protected void exists(SFunction<T, ?> id, T obj, SFunction<T, ?>... fields) {
if (ArrayUtil.isEmpty(fields)) {
throw new BusinessException("唯一字段不能为空");
}
LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>();
for (SFunction<T, ?> fn : fields) {
wrapper.eq(fn, fn.apply(obj));
}
wrapper.ne(null != id, id, id.apply(obj));
boolean exists = service.getBaseMapper().exists(wrapper);
if (exists) {
throw new BusinessException("数据已存在");
}
}
}

6
src/main/java/cc/niushuai/bastionserver/modules/server/controller/ServerInfoController.java

@ -68,7 +68,7 @@ public class ServerInfoController extends BaseController<ServerInfo, ServerInfoS @@ -68,7 +68,7 @@ public class ServerInfoController extends BaseController<ServerInfo, ServerInfoS
@PostMapping(value = "/add")
public Result<?> add(@RequestBody ServerInfo serverInfo) {
// exists(serverInfo, ServerInfo::getId, ServerInfo::getIp);
exists(serverInfo, ServerInfo::getIp, ServerInfo::getPort, ServerInfo::getUser);
serverInfoService.save(serverInfo);
return Result.OK("添加成功!");
@ -85,7 +85,9 @@ public class ServerInfoController extends BaseController<ServerInfo, ServerInfoS @@ -85,7 +85,9 @@ public class ServerInfoController extends BaseController<ServerInfo, ServerInfoS
@ApiOperation(value = "服务器信息-编辑", notes = "服务器信息-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<?> edit(@RequestBody ServerInfo serverInfo) {
// exists(serverInfo, ServerInfo::getId, ServerInfo::getIp);
exists(ServerInfo::getId, serverInfo, ServerInfo::getIp, ServerInfo::getPort, ServerInfo::getUser);
serverInfoService.updateById(serverInfo);
return Result.OK("编辑成功!");
}

Loading…
Cancel
Save