学生认领新增按学号认领(不校验姓名)

学号已在认证平台持密码验过,属可信来源,不必再用姓名二次校验
(名册姓名与平台姓名格式不一致时会误伤)。名册无此学号、已被他人
认领仍返回 false。
This commit is contained in:
2026-09-18 23:31:01 +08:00
parent 6f04a64084
commit b6c392141e
2 changed files with 34 additions and 0 deletions
@@ -34,6 +34,18 @@ public interface StudentClaimService {
*/ */
ClaimResult claimByXhAndName(User user, String xh, String xm); ClaimResult claimByXhAndName(User user, String xh, String xm);
/**
* 按学号认领,<b>不校验姓名</b>。
*
* <p>供统一身份认证登录使用:学号是持密码在认证平台验过的,属可信来源,
* 不再需要姓名二次校验(名册姓名与平台姓名格式不一致时会误伤)。
*
* @param user 登录用户
* @param xh 学号
* @return 是否认领成功(名册无此学号、已被他人认领都返回 false)
*/
boolean claimByXh(User user, String xh);
/** /**
* 人工认领/改绑。 * 人工认领/改绑。
* *
@@ -88,6 +88,28 @@ public class StudentClaimServiceImpl implements StudentClaimService {
: ClaimResult.fail("认领失败"); : 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<GxmuStudent>()
.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 @Override
public boolean bind(Integer studentId, Integer userId, String phone, Integer tenantId) { public boolean bind(Integer studentId, Integer userId, String phone, Integer tenantId) {
GxmuStudent student = getStudent(studentId, tenantId); GxmuStudent student = getStudent(studentId, tenantId);