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);