diff --git a/sql/rysqlite3.db b/sql/rysqlite3.db
index e8cfea9..4e888e9 100644
Binary files a/sql/rysqlite3.db and b/sql/rysqlite3.db differ
diff --git a/src/main/java/com/ruoyi/project/project/cases/controller/CaseController.java b/src/main/java/com/ruoyi/project/project/cases/controller/CaseController.java
index 1bbc006..8e5b7e1 100644
--- a/src/main/java/com/ruoyi/project/project/cases/controller/CaseController.java
+++ b/src/main/java/com/ruoyi/project/project/cases/controller/CaseController.java
@@ -10,6 +10,7 @@ import com.ruoyi.project.project.cases.domain.Case;
import com.ruoyi.project.project.cases.service.ICaseService;
import com.ruoyi.project.project.item.domain.Item;
import com.ruoyi.project.project.item.service.IItemService;
+import com.ruoyi.project.project.util.ValidatorUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -32,6 +33,9 @@ public class CaseController extends BaseController
@Autowired
private ICaseService caseService;
+ @Autowired
+ private IItemService itemService;
+
@RequiresPermissions("system:case:view")
@GetMapping()
public String cases()
@@ -70,6 +74,18 @@ public class CaseController extends BaseController
@ResponseBody
public AjaxResult addSave(Case cases)
{
+ int i = caseService.selectCaseByCaseNo(cases.getCaseNo());
+ if(i != 0){
+ return error("案件编号重复,请检查!!!!");
+ }
+ boolean phone = ValidatorUtils.isValidPhone(cases.getPhone());
+ if (!phone){
+ return error("手机号格式错误请检查,请检查!!!!");
+ }
+ boolean userNo = ValidatorUtils.isValidIdCard(cases.getUserNo());
+ if (!userNo){
+ return error("身份证号格式错误请检查,请检查!!!!");
+ }
return toAjax(caseService.insertCase(cases));
}
@@ -93,10 +109,10 @@ public class CaseController extends BaseController
* 修改案件信息
*/
@RequiresPermissions("system:case:edit")
- @GetMapping("/edit/{caseNo}")
- public String edit(@PathVariable("caseNo") String caseNo, ModelMap mmap)
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") Integer id, ModelMap mmap)
{
- mmap.put("case", caseService.selectCaseById(caseNo));
+ mmap.put("case", caseService.selectCaseById(id));
return prefix + "/edit";
}
@@ -109,6 +125,14 @@ public class CaseController extends BaseController
@ResponseBody
public AjaxResult editSave(Case cases)
{
+ boolean phone = ValidatorUtils.isValidPhone(cases.getPhone());
+ if (!phone){
+ return error("手机号格式错误请检查,请检查!!!!");
+ }
+ boolean userNo = ValidatorUtils.isValidIdCard(cases.getUserNo());
+ if (!userNo){
+ return error("身份证号格式错误请检查,请检查!!!!");
+ }
return toAjax(caseService.updateCase(cases));
}
@@ -121,6 +145,16 @@ public class CaseController extends BaseController
@ResponseBody
public AjaxResult remove(String ids)
{
+ //查询是否有物品信息
+ String[] idStr = ids.split(",");
+ for (String id : idStr) {
+ Case acase = caseService.selectCaseById(Integer.parseInt(id));
+ int i = itemService.selectItemByCaseId(id);
+ if (i != 0){
+ return error(acase.getCaseNo()+"案件中存在物品,请先删除物品!!!");
+ }
+ }
+
return toAjax(caseService.deleteCaseByIds(ids));
}
diff --git a/src/main/java/com/ruoyi/project/project/cases/domain/Case.java b/src/main/java/com/ruoyi/project/project/cases/domain/Case.java
index 50347cd..3c3ed4c 100644
--- a/src/main/java/com/ruoyi/project/project/cases/domain/Case.java
+++ b/src/main/java/com/ruoyi/project/project/cases/domain/Case.java
@@ -19,6 +19,9 @@ public class Case extends BaseEntity
{
private static final long serialVersionUID = 1L;
+ /** 主键 */
+ private Integer id;
+
/** 案件编号 */
private String caseNo;
diff --git a/src/main/java/com/ruoyi/project/project/cases/mapper/CaseMapper.java b/src/main/java/com/ruoyi/project/project/cases/mapper/CaseMapper.java
index 72350f9..336e656 100644
--- a/src/main/java/com/ruoyi/project/project/cases/mapper/CaseMapper.java
+++ b/src/main/java/com/ruoyi/project/project/cases/mapper/CaseMapper.java
@@ -14,10 +14,10 @@ public interface CaseMapper
/**
* 查询案件信息
*
- * @param caseNo 案件编号
+ * @param id
* @return 案件信息
*/
- public Case selectCaseById(String caseNo);
+ public Case selectCaseById(Integer id);
/**
* 查询案件列表
@@ -47,8 +47,10 @@ public interface CaseMapper
/**
* 批量删除案件
*
- * @param caseNos 需要删除的数据ID
+ * @param ids 需要删除的数据ID
* @return 结果
*/
- public int deleteCaseByIds(String[] caseNos);
+ public int deleteCaseByIds(Integer[] ids);
+
+ int selectCaseByCaseNo(String caseNo);
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/project/project/cases/service/CaseServiceImpl.java b/src/main/java/com/ruoyi/project/project/cases/service/CaseServiceImpl.java
index d35e65b..49b781d 100644
--- a/src/main/java/com/ruoyi/project/project/cases/service/CaseServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/project/cases/service/CaseServiceImpl.java
@@ -24,13 +24,13 @@ public class CaseServiceImpl implements ICaseService
/**
* 查询案件信息
*
- * @param caseNo 案件ID
+ * @param id 案件ID
* @return 案件信息
*/
@Override
- public Case selectCaseById(String caseNo)
+ public Case selectCaseById(Integer id)
{
- return caseMapper.selectCaseById(caseNo);
+ return caseMapper.selectCaseById(id);
}
/**
@@ -80,6 +80,11 @@ public class CaseServiceImpl implements ICaseService
@Override
public int deleteCaseByIds(String ids)
{
- return caseMapper.deleteCaseByIds(Convert.toStrArray(ids));
+ return caseMapper.deleteCaseByIds(Convert.toIntArray(ids));
+ }
+
+ @Override
+ public int selectCaseByCaseNo(String caseNo) {
+ return caseMapper.selectCaseByCaseNo(caseNo);
}
}
diff --git a/src/main/java/com/ruoyi/project/project/cases/service/ICaseService.java b/src/main/java/com/ruoyi/project/project/cases/service/ICaseService.java
index 5879721..c355411 100644
--- a/src/main/java/com/ruoyi/project/project/cases/service/ICaseService.java
+++ b/src/main/java/com/ruoyi/project/project/cases/service/ICaseService.java
@@ -14,10 +14,10 @@ public interface ICaseService
/**
* 查询信息
*
- * @param caseNo 案件ID
+ * @param id 案件ID
* @return 案件信息
*/
- public Case selectCaseById(String caseNo);
+ public Case selectCaseById(Integer id);
/**
* 查询案件列表
@@ -50,4 +50,6 @@ public interface ICaseService
* @return 结果
*/
public int deleteCaseByIds(String ids);
+
+ int selectCaseByCaseNo(String caseNo);
}
diff --git a/src/main/java/com/ruoyi/project/project/item/controller/ItemController.java b/src/main/java/com/ruoyi/project/project/item/controller/ItemController.java
index e676843..e8b867d 100644
--- a/src/main/java/com/ruoyi/project/project/item/controller/ItemController.java
+++ b/src/main/java/com/ruoyi/project/project/item/controller/ItemController.java
@@ -74,6 +74,10 @@ public class ItemController extends BaseController
@ResponseBody
public AjaxResult addSave(Item item)
{
+ int i = itemService.selectItemByItemNo(item);
+ if (i != 0){
+ return error("物品编号重复,请检查!!!");
+ }
return toAjax(itemService.insertItem(item));
}
@@ -95,10 +99,10 @@ public class ItemController extends BaseController
* 修改物品信息
*/
@RequiresPermissions("system:case:edit")
- @GetMapping("/edit/{itemNo}")
- public String edit(@PathVariable("itemNo") String itemNo, ModelMap mmap)
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") Integer id, ModelMap mmap)
{
- mmap.put("item", itemService.selectItemById(itemNo));
+ mmap.put("item", itemService.selectItemById(id));
return prefix + "/edit";
}
@@ -111,6 +115,10 @@ public class ItemController extends BaseController
@ResponseBody
public AjaxResult editSave(Item item)
{
+ int i = itemService.selectItemByItemNo(item);
+ if (i != 0){
+ return error("物品编号重复,请检查!!!");
+ }
return toAjax(itemService.updateItem(item));
}
diff --git a/src/main/java/com/ruoyi/project/project/item/domain/Item.java b/src/main/java/com/ruoyi/project/project/item/domain/Item.java
index 0ce5b53..d803755 100644
--- a/src/main/java/com/ruoyi/project/project/item/domain/Item.java
+++ b/src/main/java/com/ruoyi/project/project/item/domain/Item.java
@@ -19,6 +19,9 @@ public class Item extends BaseEntity
{
private static final long serialVersionUID = 1L;
+ /** 主键 */
+ private Integer id;
+
/** 案件编号 */
private String caseNo;
diff --git a/src/main/java/com/ruoyi/project/project/item/mapper/ItemMapper.java b/src/main/java/com/ruoyi/project/project/item/mapper/ItemMapper.java
index 46e6fae..2bf4e46 100644
--- a/src/main/java/com/ruoyi/project/project/item/mapper/ItemMapper.java
+++ b/src/main/java/com/ruoyi/project/project/item/mapper/ItemMapper.java
@@ -14,10 +14,10 @@ public interface ItemMapper
/**
* 查询物品信息
*
- * @param itemNo 物品编号
+ * @param id
* @return 物品信息
*/
- public Item selectItemById(String itemNo);
+ public Item selectItemById(Integer id);
/**
* 查询物品列表
@@ -49,8 +49,17 @@ public interface ItemMapper
/**
* 批量删除物品
*
- * @param itemNos 需要删除的数据ID
+ * @param ids 需要删除的数据ID
* @return 结果
*/
- public int deleteItemByIds(String[] itemNos);
+ public int deleteItemByIds(String[] ids);
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public int selectItemByCaseId(String id);
+
+ int selectItemByItemNo(Item item);
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/project/project/item/service/IItemService.java b/src/main/java/com/ruoyi/project/project/item/service/IItemService.java
index 773713a..d0da26f 100644
--- a/src/main/java/com/ruoyi/project/project/item/service/IItemService.java
+++ b/src/main/java/com/ruoyi/project/project/item/service/IItemService.java
@@ -14,10 +14,10 @@ public interface IItemService
/**
* 查询信息
*
- * @param itemNo 物品ID
+ * @param id 物品ID
* @return 物品信息
*/
- public Item selectItemById(String itemNo);
+ public Item selectItemById(Integer id);
/**
* 查询物品列表
@@ -52,4 +52,20 @@ public interface IItemService
* @return 结果
*/
public int deleteItemByIds(String ids);
+
+ /**
+ * 根据案件查询是否有物品
+ * @param id
+ * @return
+ */
+ public int selectItemByCaseId(String id);
+
+ /**
+ *
+ * @param item
+ * @return
+ */
+ int selectItemByItemNo(Item item);
+
+
}
diff --git a/src/main/java/com/ruoyi/project/project/item/service/ItemServiceImpl.java b/src/main/java/com/ruoyi/project/project/item/service/ItemServiceImpl.java
index c99a387..0dc22e7 100644
--- a/src/main/java/com/ruoyi/project/project/item/service/ItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/project/item/service/ItemServiceImpl.java
@@ -22,13 +22,13 @@ public class ItemServiceImpl implements IItemService
/**
* 查询物品信息
*
- * @param itemNo 物品ID
+ * @param id 物品ID
* @return 物品信息
*/
@Override
- public Item selectItemById(String itemNo)
+ public Item selectItemById(Integer id)
{
- return itemMapper.selectItemById(itemNo);
+ return itemMapper.selectItemById(id);
}
/**
@@ -85,4 +85,14 @@ public class ItemServiceImpl implements IItemService
{
return itemMapper.deleteItemByIds(Convert.toStrArray(ids));
}
+
+ @Override
+ public int selectItemByCaseId(String id) {
+ return itemMapper.selectItemByCaseId(id);
+ }
+
+ @Override
+ public int selectItemByItemNo(Item item) {
+ return itemMapper.selectItemByItemNo(item);
+ }
}
diff --git a/src/main/java/com/ruoyi/project/project/util/ValidatorUtils.java b/src/main/java/com/ruoyi/project/project/util/ValidatorUtils.java
new file mode 100644
index 0000000..e75edc6
--- /dev/null
+++ b/src/main/java/com/ruoyi/project/project/util/ValidatorUtils.java
@@ -0,0 +1,72 @@
+package com.ruoyi.project.project.util;
+import java.util.regex.Pattern;
+
+/**
+ * ClassName: ValidatorUtils
+ * Package: com.ruoyi.project.project.util
+ * Description:
+ *
+ * @Author zhaodw
+ * @Create 2025/7/11 17:08
+ * @Version 1.0
+ */
+public class ValidatorUtils {
+ // 手机号正则(中国大陆)
+ private static final Pattern PHONE_PATTERN = Pattern.compile(
+ "^1[3-9]\\d{9}$"
+ );
+
+ // 18位身份证号正则(包含校验码验证)
+ private static final Pattern ID_CARD_PATTERN = Pattern.compile(
+ "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$"
+ );
+
+ // 身份证号校验码权重因子
+ private static final int[] WEIGHTS = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
+
+ // 身份证号校验码对应表
+ private static final char[] CHECK_CODES = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
+
+ /**
+ * 校验手机号格式
+ * @param phone 手机号
+ * @return 是否有效
+ */
+ public static boolean isValidPhone(String phone) {
+ if (phone == null || phone.isEmpty()) {
+ return false;
+ }
+ return PHONE_PATTERN.matcher(phone).matches();
+ }
+
+ /**
+ * 校验身份证号格式(包含校验码验证)
+ * @param idCard 身份证号
+ * @return 是否有效
+ */
+ public static boolean isValidIdCard(String idCard) {
+ if (idCard == null || idCard.isEmpty()) {
+ return false;
+ }
+
+ // 长度校验
+ if (idCard.length() != 18) {
+ return false;
+ }
+
+ // 格式校验
+ if (!ID_CARD_PATTERN.matcher(idCard).matches()) {
+ return false;
+ }
+
+ // 校验码验证
+ char[] chars = idCard.toUpperCase().toCharArray();
+ int sum = 0;
+ for (int i = 0; i < 17; i++) {
+ sum += (chars[i] - '0') * WEIGHTS[i];
+ }
+ int mod = sum % 11;
+ return chars[17] == CHECK_CODES[mod];
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/mybatis/project/CaseMapper.xml b/src/main/resources/mybatis/project/CaseMapper.xml
index 5c6bac3..739ca6f 100644
--- a/src/main/resources/mybatis/project/CaseMapper.xml
+++ b/src/main/resources/mybatis/project/CaseMapper.xml
@@ -5,6 +5,7 @@