From 46c78f72a40b2929ee20e7c77c0eb032d9e9a173 Mon Sep 17 00:00:00 2001 From: sh Date: Tue, 25 Nov 2025 16:38:02 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=B1=82=E8=81=8C=E8=80=85?= =?UTF-8?q?=E7=94=9F=E6=97=A5=E9=AA=8C=E8=AF=81=E5=8F=8A=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-bussiness/pom.xml | 5 +++ .../controller/cms/CmsAppUserController.java | 11 ++++++ .../com/ruoyi/cms/util/DateValidateUtil.java | 39 +++++++++++++++++++ .../resources/mapper/app/AppUserMapper.xml | 2 +- .../common/core/domain/entity/AppUser.java | 3 ++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java diff --git a/ruoyi-bussiness/pom.xml b/ruoyi-bussiness/pom.xml index 469fda5..fb4b41d 100644 --- a/ruoyi-bussiness/pom.xml +++ b/ruoyi-bussiness/pom.xml @@ -111,6 +111,11 @@ org.springframework.boot spring-boot-starter-websocket + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java index a08424c..77775bc 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsAppUserController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.ruoyi.cms.domain.vo.AppUserLky; +import com.ruoyi.cms.util.DateValidateUtil; import com.ruoyi.cms.util.RoleUtils; import com.ruoyi.common.annotation.BussinessLog; import com.ruoyi.common.core.domain.entity.AppUserShow; @@ -194,6 +195,16 @@ public class CmsAppUserController extends BaseController @GetMapping("/userApplyList") public TableDataInfo userApplyList(AppUser appUser) { + String birthDateError = DateValidateUtil.validateBirthDate(appUser.getBirthDate()); + + if (birthDateError != null) { + TableDataInfo errorResult = new TableDataInfo(); + errorResult.setCode(400); + errorResult.setMsg(birthDateError); + errorResult.setRows(null); + errorResult.setTotal(0); + return errorResult; + } startPage(); List list = appUserService.selectUserApplyList(appUser); return getDataTable(list); diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java new file mode 100644 index 0000000..6d9e03d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java @@ -0,0 +1,39 @@ +package com.ruoyi.cms.util; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +/** + * 日期校验工具类 + */ +public class DateValidateUtil { + + // 私有构造器:禁止实例化工具类 + private DateValidateUtil() {} + + // 生日格式:yyyy-MM-dd(静态常量,统一维护) + private static final DateTimeFormatter BIRTH_DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final String BIRTH_DATE_ERROR_MSG = "生日格式错误!不为空时必须填写 yyyy-MM-dd 格式(如 2000-01-01)"; + + /** + * 静态方法:校验生日格式(可为空,非空时需符合 yyyy-MM-dd) + * @param birthDate 待校验的生日(LocalDate 类型) + * @return 校验通过返回 null;失败返回错误提示信息 + */ + public static String validateBirthDate(LocalDate birthDate) { + // 空值直接放行,返回 null 表示校验通过 + if (birthDate == null) { + return null; + } + + try { + // 非空时校验格式:LocalDate 格式化需符合 yyyy-MM-dd + BIRTH_DATE_FORMATTER.format(birthDate); + return null; // 格式正确,返回 null 表示校验通过 + } catch (DateTimeParseException e) { + // 格式错误,返回具体提示信息 + return BIRTH_DATE_ERROR_MSG; + } + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml index ab83a19..7a514bb 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/AppUserMapper.xml @@ -133,7 +133,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" INNER join company e on c.company_id=e.company_id and e.del_flag='0' and a.name like concat('%', cast(#{name, jdbcType=VARCHAR} as varchar), '%') - and a.birth_date = #{birthDate} + and get_birth_date_from_id_card(a.id_card) = #{birthDate} and a.education = #{education} and a.political_affiliation = #{politicalAffiliation} and a.phone = #{phone} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java index 4e6e532..f54d5d8 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/AppUser.java @@ -14,6 +14,8 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + /** * APP用户对象 app_user * @author lishundong @@ -43,6 +45,7 @@ public class AppUser extends BaseEntity @ApiModelProperty("用户性别(0男 1女)对应字典sex") private String sex; + @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd") @ApiModelProperty("生日")