feat:用户接口开发v1

This commit is contained in:
xiang
2025-08-25 22:54:41 +08:00
parent a486ed073c
commit 32783ecb0b
11 changed files with 381 additions and 48 deletions

View File

@@ -1,19 +1,17 @@
package com.xiang.xservice.auth.server.controller;
import com.google.common.collect.Lists;
import com.alibaba.fastjson.JSON;
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
import com.xiang.xservice.auth.api.dto.req.user.UserDeptUpdateRequest;
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
import com.xiang.xservice.auth.api.dto.resp.UserResp;
import com.xiang.xservice.auth.service.entity.XUser;
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
import com.xiang.xservice.auth.service.service.XUserService;
import com.xiang.xservice.basic.common.resp.Result;
import com.xiang.xservice.basic.exception.BusinessException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@@ -25,80 +23,118 @@ import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@Slf4j
@RestController
@RequiredArgsConstructor
public class UserController {
private final XUserMapper userMapper;
private final PasswordEncoder passwordEncoder;
private final XUserService userService;
@PostMapping("/private/user/list")
public Result<UserResp> getUserList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserQueryRequest request) {
return Result.success(new UserResp());
return Result.success(userService.getUserList(request));
}
@GetMapping("/private/user/info/{id}")
public Result<UserResp> getUserById(@PathVariable("id") Long id) {
return Result.success(new UserResp());
return Result.success(userService.getUserInfo(id));
}
@PostMapping("/private/user/add")
public Result<Boolean> addUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserAddRequest request) {
return Result.success(true);
try {
return Result.success(userService.addUser(request));
} catch (BusinessException e) {
log.error("用户新增异常,请求:{}", JSON.toJSONString(request), e);
return Result.error(e.getMessage());
} catch (Exception e) {
log.error("用户新增异常,请求:{}", JSON.toJSONString(request), e);
}
return Result.error();
}
@PostMapping("/private/user/update")
public Result<Boolean> updateUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserUpdateRequest request) {
return Result.success(true);
try {
return Result.success(userService.updateUser(request));
} catch (BusinessException e) {
log.error("用户编辑异常,请求:{}", JSON.toJSONString(request), e);
return Result.error(e.getMessage());
} catch (Exception e) {
log.error("用户编辑异常,请求:{}", JSON.toJSONString(request), e);
}
return Result.error();
}
@PostMapping("/private/user/del")
public Result<Boolean> delUser(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List<Long> ids) {
return Result.success(true);
try {
return Result.success(userService.delUser(ids));
} catch (BusinessException e) {
log.error("用户删除异常,请求:{}", JSON.toJSONString(ids), e);
return Result.error(e.getMessage());
} catch (Exception e) {
log.error("用户删除异常,请求:{}", JSON.toJSONString(ids), e);
}
return Result.error();
}
@PostMapping("/private/user/setDept")
public Result<Boolean> setUserDept(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserDeptUpdateRequest request) {
return Result.success(true);
try {
return Result.success(userService.setUserDept(request));
} catch (BusinessException e) {
log.error("用户设置部门异常,请求:{}", JSON.toJSONString(request), e);
return Result.error(e.getMessage());
} catch (Exception e) {
log.error("用户设置部门异常,请求:{}", JSON.toJSONString(request), e);
}
return Result.error();
}
@PostMapping("/private/user/setRole")
public Result<Boolean> setUserRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserRoleUpdateRequest request) {
return Result.success(true);
}
@PostMapping("/public/user/useraddBatch")
public Result<Void> add() {
List<CompletableFuture> futures = Lists.newArrayList();
List<XUser> list = Lists.newCopyOnWriteArrayList();
for (int i = 0; i < 100; i++) {
int finalI = i;
log.info("第{}批数据生成!", finalI);
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
for (int j = 0; j < 1000; j++) {
log.info("第{}批的第{}条数据生成!", finalI, j);
XUser user = new XUser();
user.setName("nameTest2" + finalI + j);
user.setUsername("usernameTest2" + finalI + j);
user.setPassword(passwordEncoder.encode("123456"));
user.setEmail("emailTest2" + finalI + j + "@test.com");
user.setPhone("13800000000");
user.setStatus(UserStatusEnum.USING.getCode());
list.add(user);
}
});
futures.add(future);
try {
return Result.success(userService.setUserRole(request));
} catch (BusinessException e) {
log.error("用户设置角色异常,请求:{}", JSON.toJSONString(request), e);
return Result.error(e.getMessage());
} catch (Exception e) {
log.error("用户设置角色异常,请求:{}", JSON.toJSONString(request), e);
}
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
List<List<XUser>> partition = Lists.partition(list, 3000);
CompletableFuture.runAsync(() -> {
partition.stream().parallel().forEach(userMapper::insertBatch);
});
return Result.success();
return Result.error();
}
// @PostMapping("/public/user/useraddBatch")
// public Result<Void> add() {
// List<CompletableFuture> futures = Lists.newArrayList();
// List<XUser> list = Lists.newCopyOnWriteArrayList();
// for (int i = 0; i < 100; i++) {
// int finalI = i;
// log.info("第{}批数据生成!", finalI);
// CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// for (int j = 0; j < 1000; j++) {
// log.info("第{}批的第{}条数据生成!", finalI, j);
// XUser user = new XUser();
// user.setName("nameTest2" + finalI + j);
// user.setUsername("usernameTest2" + finalI + j);
// user.setPassword(passwordEncoder.encode("123456"));
// user.setEmail("emailTest2" + finalI + j + "@test.com");
// user.setPhone("13800000000");
// user.setStatus(UserStatusEnum.USING.getCode());
// list.add(user);
// }
// });
// futures.add(future);
// }
// CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
// List<List<XUser>> partition = Lists.partition(list, 3000);
// CompletableFuture.runAsync(() -> {
// partition.stream().parallel().forEach(userMapper::insertBatch);
// });
// return Result.success();
// }
}