{"record":{"id":"20d1ec57175848e1","repo":"paascloud/paascloud-master","slug":"omc10031007","errorCode":"OMC10031007","errorMessage":"OMC10031007","messagePattern":"OMC10031007","errorType":"error_code","errorClass":"OmcBizException","httpStatus":null,"severity":"error","filePath":"paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/OmcShippingServiceImpl.java","lineNumber":111,"sourceCode":"\t\treturn new PageInfo<>(omcShippingList);\n\t}\n\n\t@Override\n\tpublic List<OmcShipping> selectByUserId(Long userId) {\n\t\tPreconditions.checkArgument(userId != null, ErrorCodeEnum.UAC10011001.msg());\n\t\treturn omcShippingMapper.selectByUserId(userId);\n\t}\n\n\t@Transactional(rollbackFor = Exception.class)\n\t@Override\n\tpublic int setDefaultAddress(LoginAuthDto loginAuthDto, Long addressId) {\n\t\tLong userId = loginAuthDto.getUserId();\n\t\tPreconditions.checkArgument(addressId != null, \"地址ID不能为空\");\n\n\t\t// 1. 查找当前默认地址\n\t\tOmcShipping omcShipping = omcShippingMapper.selectDefaultAddressByUserId(userId);\n\t\tif (PublicUtil.isEmpty(omcShipping)) {\n\t\t\tthrow new OmcBizException(ErrorCodeEnum.OMC10031007);\n\t\t}\n\t\t// 2. 判断默认地址和当前传入地址是否相同\n\t\tif (addressId.equals(omcShipping.getId())) {\n\t\t\tlogger.info(\"所选地址和当前用户默认地址相同 userId={}, addressId={}\", userId, addressId);\n\t\t\treturn 1;\n\t\t}\n\t\t// 3. 相同不处理不相同把当前改为非默认, 把当前地址改为默认地址\n\t\tsetDefault(loginAuthDto, addressId, OmcApiConstant.Shipping.DEFAULT);\n\t\tsetDefault(loginAuthDto, omcShipping.getId(), OmcApiConstant.Shipping.NOT_DEFAULT);\n\n\t\treturn 1;\n\t}\n\n\tprivate void setDefault(LoginAuthDto loginAuthDto, Long addressId, int isDefault) {\n\t\tint result;\n\t\tOmcShipping updateNotDefault = new OmcShipping();\n\t\tupdateNotDefault.setDefaultAddress(isDefault);\n\t\tupdateNotDefault.setUpdateInfo(loginAuthDto);","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-omc/src/main/java/com/paascloud/provider/service/impl/OmcShippingServiceImpl.java#L93-L129","documentation":"ErrorCodeEnum.OMC10031007 ('no default address exists', 不存在默认地址) is thrown by setDefaultAddress when selectDefaultAddressByUserId finds no current default shipping address for the user, so there is nothing to compare against or unset before promoting the new address.","triggerScenarios":"Calling setDefaultAddress(addressId, loginAuthDto) for a user who has never had a default address (first address, default flag never set, or the previous default was deleted).","commonSituations":"New accounts with freshly added addresses, data migrations that dropped the default flag, users deleting their default address, or querying the wrong user id from the login token.","solutions":["Initialize a default: if no default exists, directly set the given addressId as default instead of throwing (or run a one-time UPDATE to seed defaults)","Backfill data: UPDATE omc_shipping SET default_address = 1 WHERE id = (oldest address per user) for affected users","Verify loginAuthDto.getUserId() is the correct user and that user actually owns addresses"],"exampleFix":"// before\nOmcShipping omcShipping = omcShippingMapper.selectDefaultAddressByUserId(userId);\nif (PublicUtil.isEmpty(omcShipping)) {\n    throw new OmcBizException(ErrorCodeEnum.OMC10031007);\n}\n// after\nOmcShipping omcShipping = omcShippingMapper.selectDefaultAddressByUserId(userId);\nif (PublicUtil.isEmpty(omcShipping)) {\n    return doSetDefault(addressId, loginAuthDto); // no prior default: just set it\n}","handlingStrategy":"fallback","validationCode":"OmcShipping current = omcShippingMapper.selectDefaultAddressByUserId(userId);\nboolean hasDefault = current != null;\n// if !hasDefault, skip comparison and set the target address directly","typeGuard":"boolean hasDefaultAddress(Long userId) {\n    return omcShippingMapper.selectDefaultAddressByUserId(userId) != null;\n}","tryCatchPattern":"try {\n    shippingService.setDefaultAddress(addressId, loginAuthDto);\n} catch (OmcBizException e) {\n    if (e.getCode() == 10031007) {\n        shippingService.setDefault(addressId, 1, loginAuthDto); // seed first default\n    } else throw e;\n}","preventionTips":["Seed a default address when the user adds their first address","Run a backfill job ensuring every user with addresses has a default","Verify userId from loginAuthDto before address operations"],"tags":["shipping-address","default-address","state"],"backgroundTag":"resource-not-found","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"}