前端

src/api.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 重复校验
/**
* @param params 示例如下
* {
* tableName: "sys_role",
* fieldName: "role_code",
* fieldVal: value,
* dataId: this.model.id,
* }
* @returns {*}
*/
export function duplicateCheck(params) {
return request({
url: '/system/dict/data/duplicateCheck',
method: 'get',
params
})
}

后端

增加类 DuplicateCheckVo.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.ruoyi.system.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
* @Title: DuplicateCheckVo
* @Description: 重复校验VO
* @Author 张代浩
* @Date 2019-03-25
* @Version V1.0
*/
@Data
@ApiModel(value="重复校验数据模型",description="重复校验数据模型")
public class DuplicateCheckVo implements Serializable {
private static final long serialVersionUID = 1L;

/**
* 表名
*/
@ApiModelProperty(value="表名",name="tableName",example="sys_log")
private String tableName;

/**
* 字段名
*/
@ApiModelProperty(value="字段名",name="fieldName",example="id")
private String fieldName;

/**
* 字段值
*/
@ApiModelProperty(value="字段值",name="fieldVal",example="1000")
private String fieldVal;

/**
* 数据ID
*/
@ApiModelProperty(value="数据ID",name="dataId",example="2000")
private String dataId;

}

xXXController.java 扩展接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@Autowired
private SysDictTypeMapper sysDictTypeMapper;

/**
* 校验数据是否在系统中是否存在
*
* @return
*/
@RequestMapping(value = "/duplicateCheck", method = RequestMethod.GET)
public R duplicateCheck(DuplicateCheckVo duplicateCheckVo) {
Long num = null;

if (StringUtils.isNotBlank(duplicateCheckVo.getDataId())) {
// [2].编辑页面校验
num = sysDictTypeMapper.duplicateCheckCountSql(duplicateCheckVo);
} else {
// [1].添加页面校验
num = sysDictTypeMapper.duplicateCheckCountSqlNoDataId(duplicateCheckVo);
}

if (num == null || num == 0) {
// 该值可用
return R.ok("该值可用!");
} else {
// 该值不可用
return R.fail("该值不可用,系统中已存在!");
}
}

SysDictTypeMapper.java 扩展方法

1
2
3
public Long duplicateCheckCountSql(DuplicateCheckVo duplicateCheckVo);

public Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo);

SysDictTypeMapper.xml 扩展 sql

1
2
3
4
5
6
7
8
9
<!-- 重复校验 sql语句 -->
<select id="duplicateCheckCountSql" resultType="Long" parameterType="com.ruoyi.system.domain.DuplicateCheckVo">
SELECT COUNT(*) FROM ${tableName} WHERE ${fieldName} = #{fieldVal} and id &lt;&gt; #{dataId}
</select>

<!-- 重复校验 sql语句 -->
<select id="duplicateCheckCountSqlNoDataId" resultType="Long" parameterType="com.ruoyi.system.domain.DuplicateCheckVo">
SELECT COUNT(*) FROM ${tableName} WHERE ${fieldName} = #{fieldVal}
</select>