Skip to content
Snippets Groups Projects
Commit 6066210c authored by Yulong Wang's avatar Yulong Wang
Browse files

Merge branch 'wyl' into 'main'

fuzzy query admin achieve

See merge request !23
parents 8b105380 0b34d494
No related branches found
No related tags found
1 merge request!23fuzzy query admin achieve
......@@ -11,7 +11,7 @@ import java.util.List;
@RestController
@RequestMapping("/admin")
@RequestMapping("/superAdmin")
public class SuperAdminController {
@Autowired
......@@ -45,7 +45,7 @@ public class SuperAdminController {
* @param
* @return
*/
@GetMapping("/select")
@PostMapping("/select")
public Result selectByItem(@RequestBody SelectDTO selectDTO){
System.out.println(selectDTO);
Result result= superAdminService.selectByItem(selectDTO);
......
package com.cardiff.client_project.mapper;
import com.cardiff.client_project.constant.ResponseCode;
import com.cardiff.client_project.pojo.dto.SelectDTO;
import com.cardiff.client_project.pojo.entity.CommonAdmin;
import com.cardiff.client_project.pojo.entity.Hospital;
import com.cardiff.client_project.pojo.vo.AdminVO;
import com.cardiff.client_project.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class AdminMapper {
@Autowired
JdbcTemplate jdbcTemplate;;
/**
* ser registration
* @param commonAdmin
*/
public Result insertUserInform(CommonAdmin commonAdmin) {
//Check whether the account exists(If the user name and email address are the same, the account is confirmed to exist)
String sql = "SELECT count(id) FROM common_admin where name = ? and email = ?";
Integer count= jdbcTemplate.queryForObject(sql, new Object[]{commonAdmin.getName(), commonAdmin.getEmail()}, Integer.class);
System.out.println(count);
if(count>0){
return Result.error(ResponseCode.ACCOUNT_EXISTS_ERROR);
}
//insert data
SimpleJdbcInsert insert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("common_admin")
.usingGeneratedKeyColumns("id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("name",commonAdmin.getName());
parameters.put("password",commonAdmin.getPassword());
parameters.put("email",commonAdmin.getEmail());
parameters.put("phone",commonAdmin.getPhone());
parameters.put("type",commonAdmin.getType());
parameters.put("status",commonAdmin.getStatus());
parameters.put("roleId",commonAdmin.getRoleId());
Number number = insert.executeAndReturnKey(parameters);
if(number.longValue() > 0){
return Result.success(ResponseCode.SUCCESS);
}else {
return Result.error(ResponseCode.ERROR);
}
}
/**
* Batch deletion based on id
* @param ids
* @return
*/
public int[] deleteById(List<Integer> ids) {
//TODO
String sql = "DELETE FROM common_admin WHERE id=?";
List<Object[]> idList = new ArrayList<>();
// Build parameter list
for (Integer id : ids) {
idList.add(new Object[]{id});
}
// Batch delete
int[] item = jdbcTemplate.batchUpdate(sql, idList);
String s;
s = "ALTER TABLE common_admin DROP COLUMN id;";
jdbcTemplate.update(s);
s= "ALTER TABLE common_admin ADD COLUMN id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;";
jdbcTemplate.update(s);
return item;
}
/**
* select admin
* @return
*/
public List<AdminVO> selectAllAdmin() {
// Parameterized queries avoid SQL injection
String sql = "SELECT * FROM common_admin";
List<AdminVO> query = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(AdminVO.class));
return query;
}
/**
* select hospital
* @return
*/
public List<Hospital> selectAllHospital(){
// Parameterized queries avoid SQL injection
String sql = "SELECT * FROM hospital";
List<Hospital> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Hospital.class));
System.out.println(query);
return query;
}
/**
* update data
* @param commonAdmin
*/
public int update(CommonAdmin commonAdmin) {
String sql = "UPDATE common_admin SET name = ?, email = ? , status = ? WHERE id = ?";
int update = jdbcTemplate.update(sql, preparedStatement -> {
preparedStatement.setString(1, commonAdmin.getName());
preparedStatement.setString(2, commonAdmin.getEmail());
preparedStatement.setInt(3, commonAdmin.getStatus());
preparedStatement.setInt(4, commonAdmin.getId());
});
return update;
}
/**
* fuzzy query
* @param selectDTO
* @return
*/
public List<SelectDTO> selectByItem(SelectDTO selectDTO) {
// Get query type
String type = selectDTO.getType();
// Build the basic SQL and parameter list
StringBuilder sql = new StringBuilder("SELECT * FROM common_admin ");
//Dynamic table name stitching
sql.append(" WHERE 1=1 ");
List<Object> params = new ArrayList<>();
//Dynamic concatenation of query conditions
if (selectDTO.getName() != null) {
sql.append(" AND name LIKE ?");
params.add("%" + selectDTO.getName() + "%");
}
if (selectDTO.getPhone() != null) {
sql.append(" AND phone LIKE ?");
params.add("%" + selectDTO.getPhone() + "%");
}
if (selectDTO.getAddress() != null) {
sql.append(" AND address LIKE ?");
params.add("%" + selectDTO.getAddress() + "%");
}
List<SelectDTO> query = jdbcTemplate.query(sql.toString(), params.toArray(), new BeanPropertyRowMapper<>(SelectDTO.class));
return query;
//String type=selectVo.getType();
// String first="select * from ";
// String second = " where ";
// if(selectVo.getName()!=null){
// second+="name like '%"+selectVo.getName()+"%'";
// }
// if(selectVo.getPhone()!=null){
// second+="phone like '%"+selectVo.getPhone()+"%'";
// }
// if(selectVo.getAddress()!=null){
// second+="address like '%"+selectVo.getAddress()+"'";
// }
//
//
// List<SelectDTO> query=new ArrayList<>();
// if("commonAdmin".equals(type)){
// String sql=first+"common_admin"+second;
// System.out.println(sql);
// query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SelectDTO.class));
// }
// if("hospital".equals(type)){
// String sql=first+"hospital"+second;
// System.out.println(sql);
// query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SelectDTO.class));
// }
// System.out.println(query);
}
}
package com.cardiff.client_project.mapper;
import com.cardiff.client_project.constant.ResponseCode;
import com.cardiff.client_project.pojo.dto.SelectDTO;
import com.cardiff.client_project.pojo.entity.CommonAdmin;
import com.cardiff.client_project.pojo.entity.Hospital;
import com.cardiff.client_project.pojo.entity.SuperUser;
import com.cardiff.client_project.pojo.vo.AdminVO;
import com.cardiff.client_project.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
public class SuperAdminMapper {
@Autowired
JdbcTemplate jdbcTemplate;
JdbcTemplate jdbcTemplate;;
/**
* ser registration
* @param commonAdmin
*/
public Result insertUserInform(CommonAdmin commonAdmin) {
//Check whether the account exists(If the user name and email address are the same, the account is confirmed to exist)
String sql = "SELECT count(id) FROM common_admin where name = ? and email = ?";
Integer count= jdbcTemplate.queryForObject(sql, new Object[]{commonAdmin.getName(), commonAdmin.getEmail()}, Integer.class);
System.out.println(count);
if(count>0){
return Result.error(ResponseCode.ACCOUNT_EXISTS_ERROR);
}
//insert data
SimpleJdbcInsert insert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("common_admin")
.usingGeneratedKeyColumns("id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("name",commonAdmin.getName());
parameters.put("password",commonAdmin.getPassword());
parameters.put("email",commonAdmin.getEmail());
parameters.put("phone",commonAdmin.getPhone());
parameters.put("type",commonAdmin.getType());
parameters.put("status",commonAdmin.getStatus());
parameters.put("roleId",commonAdmin.getRoleId());
Number number = insert.executeAndReturnKey(parameters);
if(number.longValue() > 0){
return Result.success(ResponseCode.SUCCESS);
}else {
return Result.error(ResponseCode.ERROR);
}
}
/**
* Batch deletion based on id
* @param ids
* @return
*/
public int[] deleteById(List<Integer> ids) {
//TODO
String sql = "DELETE FROM common_admin WHERE id=?";
List<Object[]> idList = new ArrayList<>();
// Build parameter list
for (Integer id : ids) {
idList.add(new Object[]{id});
}
// Batch delete
int[] item = jdbcTemplate.batchUpdate(sql, idList);
String s;
s = "ALTER TABLE common_admin DROP COLUMN id;";
jdbcTemplate.update(s);
s= "ALTER TABLE common_admin ADD COLUMN id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;";
jdbcTemplate.update(s);
return item;
}
/**
* select admin
* @return
*/
public List<AdminVO> selectAllAdmin() {
// Parameterized queries avoid SQL injection
String sql = "SELECT * FROM common_admin";
List<AdminVO> query = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(AdminVO.class));
return query;
}
/**
* select hospital
* @return
*/
public List<Hospital> selectAllHospital(){
// Parameterized queries avoid SQL injection
String sql = "SELECT * FROM hospital";
List<Hospital> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Hospital.class));
System.out.println(query);
return query;
}
/**
* update data
* @param commonAdmin
*/
public int update(CommonAdmin commonAdmin) {
String sql = "UPDATE common_admin SET name = ?, email = ? , status = ? WHERE id = ?";
int update = jdbcTemplate.update(sql, preparedStatement -> {
preparedStatement.setString(1, commonAdmin.getName());
preparedStatement.setString(2, commonAdmin.getEmail());
preparedStatement.setInt(3, commonAdmin.getStatus());
preparedStatement.setInt(4, commonAdmin.getId());
});
return update;
}
/**
* fuzzy query
* @param selectDTO
* @return
*/
public List<SelectDTO> selectByItem(SelectDTO selectDTO) {
// Get query type
String type = selectDTO.getType();
// Build the basic SQL and parameter list
StringBuilder sql = new StringBuilder("SELECT * FROM common_admin ");
//Dynamic table name stitching
sql.append(" WHERE 1=1 ");
List<Object> params = new ArrayList<>();
//Dynamic concatenation of query conditions
if (selectDTO.getName() != null) {
sql.append(" AND name LIKE ?");
params.add("%" + selectDTO.getName() + "%");
}
if (selectDTO.getPhone() != null) {
sql.append(" AND phone LIKE ?");
params.add("%" + selectDTO.getPhone() + "%");
}
if (selectDTO.getAddress() != null) {
sql.append(" AND address LIKE ?");
params.add("%" + selectDTO.getAddress() + "%");
}
//default status=1
sql.append(" AND status LIKE ?");
params.add("%" + selectDTO.getStatus() + "%");
List<SelectDTO> query = jdbcTemplate.query(sql.toString(), params.toArray(), new BeanPropertyRowMapper<>(SelectDTO.class));
return query;
//String type=selectVo.getType();
// String first="select * from ";
// String second = " where ";
// if(selectVo.getName()!=null){
// second+="name like '%"+selectVo.getName()+"%'";
// }
// if(selectVo.getPhone()!=null){
// second+="phone like '%"+selectVo.getPhone()+"%'";
// }
// if(selectVo.getAddress()!=null){
// second+="address like '%"+selectVo.getAddress()+"'";
// }
//
//
// List<SelectDTO> query=new ArrayList<>();
// if("commonAdmin".equals(type)){
// String sql=first+"common_admin"+second;
// System.out.println(sql);
// query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SelectDTO.class));
// }
// if("hospital".equals(type)){
// String sql=first+"hospital"+second;
// System.out.println(sql);
// query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SelectDTO.class));
// }
// System.out.println(query);
}
/**
* Query data by name
......
......@@ -3,7 +3,7 @@ package com.cardiff.client_project.service.imp;
import com.cardiff.client_project.constant.Authority;
import com.cardiff.client_project.constant.ResponseCode;
import com.cardiff.client_project.mapper.AdminMapper;
import com.cardiff.client_project.mapper.SuperAdminMapper;
import com.cardiff.client_project.mapper.PatientMapper;
import com.cardiff.client_project.pojo.dto.SelectDTO;
import com.cardiff.client_project.pojo.dto.SignUserDTO;
......@@ -27,7 +27,7 @@ import java.util.List;
public class SuperAdminServiceImp implements SuperAdminService {
@Autowired
private AdminMapper adminMapper;
private SuperAdminMapper superAdminMapper;
@Autowired
private PatientMapper patientMapper;
@Autowired
......@@ -50,7 +50,7 @@ public class SuperAdminServiceImp implements SuperAdminService {
if(role.equals("PATIENT")){
commonAdmin.setRoleId(Authority.PATIENT);
}
Result result = adminMapper.insertUserInform(commonAdmin);
Result result = superAdminMapper.insertUserInform(commonAdmin);
return result;
}
......@@ -61,7 +61,7 @@ public class SuperAdminServiceImp implements SuperAdminService {
*/
@Override
public Result deleteById(List<Integer> ids) {
adminMapper.deleteById(ids);
superAdminMapper.deleteById(ids);
return Result.success(ResponseCode.SUCCESS);
}
......@@ -72,7 +72,7 @@ public class SuperAdminServiceImp implements SuperAdminService {
*/
@Override
public Result selectAllAdmin() {
List<AdminVO> selectVOS = adminMapper.selectAllAdmin();
List<AdminVO> selectVOS = superAdminMapper.selectAllAdmin();
List<AdminVO> adminVOS=new ArrayList<>();
selectVOS.forEach(selectVO -> {
......@@ -101,7 +101,7 @@ public class SuperAdminServiceImp implements SuperAdminService {
@Override
public Result selectAllHospital() {
System.out.println("service");
List<Hospital> hospitals = adminMapper.selectAllHospital();
List<Hospital> hospitals = superAdminMapper.selectAllHospital();
System.out.println(hospitals);
List<HospitalVO> hospitalVOS =new ArrayList<>();
hospitals.forEach(select -> {
......@@ -132,7 +132,7 @@ public class SuperAdminServiceImp implements SuperAdminService {
if(selectDTO.getType().equals("commonAdmin")){
CommonAdmin commonAdmin = new CommonAdmin();
BeanUtils.copyProperties(selectDTO,commonAdmin);
update = adminMapper.update(commonAdmin);
update = superAdminMapper.update(commonAdmin);
}
if(selectDTO.getType().equals("patient")){
Patient patient = new Patient();
......@@ -155,7 +155,8 @@ public class SuperAdminServiceImp implements SuperAdminService {
*/
@Override
public Result selectByItem(SelectDTO selectDTO) {
List<SelectDTO> selectDtos = adminMapper.selectByItem(selectDTO);
List<SelectDTO> selectDtos = superAdminMapper.selectByItem(selectDTO);
System.out.println(selectDTO);
if(selectDtos.size()>0){
return Result.success(selectDtos);
}else {
......
......@@ -105,7 +105,7 @@
role = "PATIENT";
}
const url = '/admin/sign';
const url = '/superadmin/sign';
const data = {
name: document.getElementsByName("name")[0].value,
password: document.getElementsByName("password")[0].value,
......
......@@ -5,19 +5,16 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" type="text/css" href="/css/mainSupAdminView.css">
</head>
<body>
<div id="toolbar">
<label for="searchName">Name</label>
<input type="text" class="searchBox" id="searchName" placeholder="type name..." />
<label for="searchAddress">Address</label>
<input type="text" class="searchBox" id="searchAddress" placeholder="type address..." />
<label for="searchPhone">Phone</label>
<input type="text" class="searchBox" id="searchPhone" placeholder="type phone..." />
<select class="searchBox" id="searchStatus">
<option value="" disabled selected>choose status</option>
<option value="active">Active</option>
<option value="active" selected>Active</option>
<option value="inactive">Inactive</option>
</select>
<button id="searchButton">Confirm</button>
......@@ -36,7 +33,6 @@
</tr>
</thead>
<tbody>
<!-- Ergodic set -->
<tr th:each="row : ${tableData}">
<td th:text="${row['id']}"></td>
<td th:text="${row['name']}"></td>
......@@ -48,9 +44,57 @@
</table>
</div>
<script th:inline="javascript">
//use jQuery's load() to load content dynamically,Events cannot be bound in dom mode
$(document).on("click", "#searchButton", function () {
let status=document.getElementById("searchStatus").value;
if(status==="active"){
status=1;
}else {
status=0;
}
var data={
'name':document.getElementById("searchName").value,
'phone':document.getElementById("searchPhone").value,
'status':status
}
$.ajax({
contentType: "application/json",
url: "/superAdmin/select",
type: "POST",
data: JSON.stringify(data),
dataType: "Json",
success: function (data) {
if(data.code!=0){
updateTable(data.data);
}else {
alert(data.msg)
}
},
});
});
function updateTable(data) {
let tbody = $("table tbody"); // choose table's tbody
tbody.empty(); // clean old data
// create new table
data.forEach(row => {
const tr = `
<tr>
<td>${row.id}</td>
<td>${row.name}</td>
<td>${row.phone}</td>
<td>${row.email}</td>
<td>${row.status_str}</td>
</tr>
`;
tbody.append(tr);
});
}
</script>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment