From b6c392141ecffa754c63b51d35f6cb352f50ed1f Mon Sep 17 00:00:00 2001 From: "weicw1996@qq.com" Date: Fri, 18 Sep 2026 23:31:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E8=AE=A4=E9=A2=86=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=8C=89=E5=AD=A6=E5=8F=B7=E8=AE=A4=E9=A2=86=EF=BC=88?= =?UTF-8?q?=E4=B8=8D=E6=A0=A1=E9=AA=8C=E5=A7=93=E5=90=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 学号已在认证平台持密码验过,属可信来源,不必再用姓名二次校验 (名册姓名与平台姓名格式不一致时会误伤)。名册无此学号、已被他人 认领仍返回 false。 --- .../openplat/claim/StudentClaimService.java | 12 ++++++++++ .../claim/StudentClaimServiceImpl.java | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimService.java b/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimService.java index 9c19c9e..fa49fd1 100644 --- a/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimService.java +++ b/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimService.java @@ -34,6 +34,18 @@ public interface StudentClaimService { */ ClaimResult claimByXhAndName(User user, String xh, String xm); + /** + * 按学号认领,不校验姓名。 + * + *

供统一身份认证登录使用:学号是持密码在认证平台验过的,属可信来源, + * 不再需要姓名二次校验(名册姓名与平台姓名格式不一致时会误伤)。 + * + * @param user 登录用户 + * @param xh 学号 + * @return 是否认领成功(名册无此学号、已被他人认领都返回 false) + */ + boolean claimByXh(User user, String xh); + /** * 人工认领/改绑。 * diff --git a/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimServiceImpl.java b/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimServiceImpl.java index eda8d25..61314d5 100644 --- a/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimServiceImpl.java +++ b/src/main/java/com/gxwebsoft/gxmu/openplat/claim/StudentClaimServiceImpl.java @@ -88,6 +88,28 @@ public class StudentClaimServiceImpl implements StudentClaimService { : ClaimResult.fail("认领失败"); } + @Override + public boolean claimByXh(User user, String xh) { + if (user == null || user.getUserId() == null) { + return false; + } + String studentNo = StrUtil.trimToNull(xh); + if (studentNo == null) { + return false; + } + GxmuStudent student = studentMapper.selectOne(new LambdaQueryWrapper() + .eq(GxmuStudent::getTenantId, OpenplatSyncConstants.TENANT_ID) + .eq(GxmuStudent::getXh, studentNo) + .last("limit 1")); + if (student == null) { + return false; + } + if (student.getUserId() != null) { + return student.getUserId().equals(user.getUserId()); + } + return doClaim(user, student); + } + @Override public boolean bind(Integer studentId, Integer userId, String phone, Integer tenantId) { GxmuStudent student = getStudent(studentId, tenantId);