User user = User.builder().build().setUserId();和User user = User.builder().setUserId().build();有区别吗
时间: 2023-11-27 11:49:31 浏览: 39
有区别。第一种写法在调用 build() 方法时没有为 userId 属性赋值,因此代码会编译失败。正确的写法应该是:
```
User user = User.builder().setUserId().build();
```
第二种写法是正确的,因为它在调用 build() 方法之前为 userId 属性赋了值。这两种写法的区别在于属性赋值的顺序不同。在使用建造者模式时,我们应该确保在调用 build() 方法之前为所有必需属性赋值。
相关问题
public GlobalResponse userLogin(LoginParam param) { // 2、校验账号信息 [校验密码输入失败次数] SysUser user = sysUserService.checkPwd(param.getPhone(), param.getPassword()); // 用户禁用返回登录失败 if (user.getStatus().equals(StatusEnum.STOP.getType())) { throw new BusinessException("账户被禁用"); } List<SysRole> roles = sysRoleService.findRoleByUserId(user.getId()); SysRole sysRole = roles.get(0); LoginUser build = LoginUser.builder() .id(user.getId()) .name(user.getUserName()) .avatar(user.getAvatar()) .phone(user.getPhone()) .roleCode(sysRole.getRoleCode()) .roleName(sysRole.getRoleName()) .build(); Set<String> perms = sysRoleMenuRelService.selectMenuPermsByUserId(build); build.setPerms(perms); String token = sysTokenService.createToken(build); return GlobalResponse.success(token); }我还要返回userId,怎么改
你可以将返回类型改为一个包含 userId 和 token 的对象,例如:
```
@Data
public class LoginResult {
private Long userId;
private String token;
}
```
然后修改方法的返回值为该对象类型,并在方法最后返回包含 userId 和 token 的对象,例如:
```
public LoginResult userLogin(LoginParam param) {
// 2、校验账号信息 [校验密码输入失败次数]
SysUser user = sysUserService.checkPwd(param.getPhone(), param.getPassword());
// 用户禁用返回登录失败
if (user.getStatus().equals(StatusEnum.STOP.getType())) {
throw new BusinessException("账户被禁用");
}
List<SysRole> roles = sysRoleService.findRoleByUserId(user.getId());
SysRole sysRole = roles.get(0);
LoginUser build = LoginUser.builder()
.id(user.getId())
.name(user.getUserName())
.avatar(user.getAvatar())
.phone(user.getPhone())
.roleCode(sysRole.getRoleCode())
.roleName(sysRole.getRoleName())
.build();
Set<String> perms = sysRoleMenuRelService.selectMenuPermsByUserId(build);
build.setPerms(perms);
String token = sysTokenService.createToken(build);
LoginResult result = new LoginResult();
result.setUserId(user.getId());
result.setToken(token);
return result;
}
```
@RequestMapping("/taskList") public List<SpiderFlow> taskList(@RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "size", defaultValue = "10") Integer size, GatherCardQO query) { if (!RequestUtils.isAdmin()) { query.setUserId(RequestUtils.getUserId()); } List<SpiderFlow> spiderFlowList = spiderFlowService.selectSpiderPage(new Page<>(page, size), query).getRecords(); for (SpiderFlow spiderFlow : spiderFlowList) { List<FlowConfig> flowConfigList = flowConfigService.list(Wrappers.lambdaQuery(FlowConfig.builder().flowId(spiderFlow.getId()).build())); spiderFlow.setConfigs(flowConfigList); } Map<String,Object> map = new HashMap<String,Object>(); return spiderFlowList; } 这个方法怎么用map返回http状态码
你可以在方法中创建一个Map对象,将状态码和结果放入其中,然后返回该Map对象即可。
例如,你可以这样修改代码:
```
@RequestMapping("/taskList")
public Map<String, Object> taskList(@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "size", defaultValue = "10") Integer size,
GatherCardQO query) {
if (!RequestUtils.isAdmin()) {
query.setUserId(RequestUtils.getUserId());
}
List<SpiderFlow> spiderFlowList = spiderFlowService.selectSpiderPage(new Page<>(page, size), query).getRecords();
for (SpiderFlow spiderFlow : spiderFlowList) {
List<FlowConfig> flowConfigList = flowConfigService.list(Wrappers.lambdaQuery(FlowConfig.builder().flowId(spiderFlow.getId()).build()));
spiderFlow.setConfigs(flowConfigList);
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("status", HttpStatus.OK.value());
map.put("result", spiderFlowList);
return map;
}
```
这里我们创建了一个名为`map`的Map对象,将状态码和返回结果放入其中,然后将该Map对象返回。在这个例子中,我们将状态码设为了200(即`HttpStatus.OK.value()`),表示请求成功,返回结果则为`spiderFlowList`。你可以根据需要修改状态码和返回结果。