{"record":{"id":"305b5459e4d9e6db","repo":"paascloud/paascloud-master","slug":"uac10011012","errorCode":"UAC10011012","errorMessage":"登录名已存在","messagePattern":"登录名已存在","errorType":"error_code","errorClass":"UacBizException","httpStatus":null,"severity":"warning","filePath":"paascloud-provider/paascloud-provider-uac/src/main/java/com/paascloud/provider/service/impl/UacUserServiceImpl.java","lineNumber":960,"sourceCode":"\t\treturn uacUserMenuService.batchSave(uacUserMenuList);\n\t}\n\n\tprivate void validateRegisterInfo(UserRegisterDto registerDto) {\n\t\tString mobileNo = registerDto.getMobileNo();\n\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(registerDto.getLoginName()), ErrorCodeEnum.UAC10011007.msg());\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(registerDto.getEmail()), ErrorCodeEnum.UAC10011018.msg());\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(mobileNo), \"手机号不能为空\");\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(registerDto.getLoginPwd()), ErrorCodeEnum.UAC10011014.msg());\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(registerDto.getConfirmPwd()), ErrorCodeEnum.UAC10011009.msg());\n\t\tPreconditions.checkArgument(!StringUtils.isEmpty(registerDto.getRegisterSource()), \"验证类型错误\");\n\t\tPreconditions.checkArgument(registerDto.getLoginPwd().equals(registerDto.getConfirmPwd()), \"两次密码不一致\");\n\n\t\tUacUser uacUser = new UacUser();\n\t\tuacUser.setLoginName(registerDto.getLoginName());\n\t\tint count = uacUserMapper.selectCount(uacUser);\n\t\tif (count > 0) {\n\t\t\tthrow new UacBizException(ErrorCodeEnum.UAC10011012);\n\t\t}\n\n\t\tuacUser = new UacUser();\n\t\tuacUser.setMobileNo(registerDto.getMobileNo());\n\t\tcount = uacUserMapper.selectCount(uacUser);\n\t\tif (count > 0) {\n\t\t\tthrow new UacBizException(ErrorCodeEnum.UAC10011013);\n\t\t}\n\n\t\tuacUser = new UacUser();\n\t\tuacUser.setEmail(registerDto.getEmail());\n\t\tcount = uacUserMapper.selectCount(uacUser);\n\t\tif (count > 0) {\n\t\t\tthrow new UacBizException(ErrorCodeEnum.UAC10011019);\n\t\t}\n\n\t}\n}","sourceCodeStart":942,"sourceCodeEnd":978,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-uac/src/main/java/com/paascloud/provider/service/impl/UacUserServiceImpl.java#L942-L978","documentation":"UAC10011012 is thrown during user registration (register) after uacUserMapper.selectCount on a UacUser template with the requested loginName returns > 0, meaning an account with that login name already exists. Registration is rejected with '登录名已存在' to preserve login-name uniqueness.","triggerScenarios":"Submitting the registration form with a loginName already taken; retrying a registration that partially succeeded earlier; case variations of an existing login name on case-insensitive collations; concurrent registrations of the same loginName racing past the check.","commonSituations":"Popular usernames already claimed; users forgetting they already registered; test scripts re-running registration with fixed credentials; environments sharing a database with different apps.","solutions":["Check availability first (the validate endpoint or SELECT COUNT(*) FROM uac_user WHERE login_name = ?) and pick a different loginName.","If it's your own duplicate, log in or use password reset instead of registering again.","Clean up orphaned/partial registrations from failed test runs before re-registering.","Add a DB UNIQUE constraint on login_name as a backstop against race-condition duplicates."],"exampleFix":"// before\nUacUser q = new UacUser(); q.setLoginName(registerDto.getLoginName());\nif (uacUserMapper.selectCount(q) > 0) { throw new UacBizException(ErrorCodeEnum.UAC10011012); }\n// after (client-side pre-check)\nif (!uacUserService.checkLoginNameAvailable(registerDto.getLoginName())) {\n    return response(\"login name already taken, choose another\");\n}","handlingStrategy":"validation","validationCode":"UacUser q = new UacUser();\nq.setLoginName(requestedLoginName.trim());\nif (uacUserMapper.selectCount(q) > 0) {\n    return Result.fail(\"login name already taken, choose another\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    uacUserService.register(registerDto);\n} catch (UacBizException e) {\n    if (\"UAC10011012\".equals(e.getCode())) { return Result.fail(409, \"login name already exists\"); }\n    throw e;\n}","preventionTips":["Offer a real-time login-name availability check on the form.","Trim login names consistently; be deliberate about case sensitivity.","Add a UNIQUE index on login_name as a race-condition backstop.","Use unique credentials per run in automated tests."],"tags":["registration","duplicate","validation"],"backgroundTag":"record-already-exists","analyzedSha":"781281a9503332ed3cef44ea618349d14230a127","analyzedAt":"2026-09-10T10:59:02.070Z","contentChangedAt":"2026-09-10T10:59:02.070Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}