main主干首次提交,包含用户认证模块
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package com.labelsys.backend.controller;
|
||||
|
||||
import com.labelsys.backend.common.Result;
|
||||
import com.labelsys.backend.context.LoginUser;
|
||||
import com.labelsys.backend.context.UserContext;
|
||||
import com.labelsys.backend.dto.request.ChangePasswordRequest;
|
||||
import com.labelsys.backend.dto.request.LoginRequest;
|
||||
import com.labelsys.backend.dto.response.CompanyOptionResponse;
|
||||
import com.labelsys.backend.dto.response.CurrentUserResponse;
|
||||
import com.labelsys.backend.dto.response.LoginResponse;
|
||||
import com.labelsys.backend.service.AuthService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "认证管理")
|
||||
@RestController
|
||||
@RequestMapping("/api/auth")
|
||||
@RequiredArgsConstructor
|
||||
public class AuthController {
|
||||
|
||||
private final AuthService authService;
|
||||
|
||||
@Operation(summary = "根据手机号查询可登录公司")
|
||||
@GetMapping("/companies")
|
||||
public Result<List<CompanyOptionResponse>> listCompanies(@RequestParam String phone) {
|
||||
return Result.success(authService.listAvailableCompanies(phone));
|
||||
}
|
||||
|
||||
@Operation(summary = "登录")
|
||||
@PostMapping("/login")
|
||||
public Result<LoginResponse> login(@Valid @RequestBody LoginRequest request) {
|
||||
return Result.success(authService.login(request));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改密码")
|
||||
@PostMapping("/change-password")
|
||||
public Result<Void> changePassword(@Valid @RequestBody ChangePasswordRequest request) {
|
||||
authService.changePassword(UserContext.requireUser(), request);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@Operation(summary = "退出登录")
|
||||
@PostMapping("/logout")
|
||||
public Result<Void> logout(@RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
|
||||
authService.logout(extractToken(authorization));
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@Operation(summary = "获取当前登录态")
|
||||
@GetMapping("/me")
|
||||
public Result<CurrentUserResponse> currentUser() {
|
||||
LoginUser loginUser = UserContext.requireUser();
|
||||
return Result.success(CurrentUserResponse.from(loginUser));
|
||||
}
|
||||
|
||||
private String extractToken(String authorization) {
|
||||
return authorization.substring(7).trim();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.labelsys.backend.controller;
|
||||
|
||||
import com.labelsys.backend.annotation.RequirePosition;
|
||||
import com.labelsys.backend.common.Result;
|
||||
import com.labelsys.backend.context.UserContext;
|
||||
import com.labelsys.backend.dto.request.CreateUserRequest;
|
||||
import com.labelsys.backend.dto.request.UpdateUserAssignmentRequest;
|
||||
import com.labelsys.backend.dto.request.UpdateUserStatusRequest;
|
||||
import com.labelsys.backend.dto.response.UserResponse;
|
||||
import com.labelsys.backend.enums.UserPosition;
|
||||
import com.labelsys.backend.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "公司员工管理")
|
||||
@RestController
|
||||
@RequestMapping("/api/company/users")
|
||||
@RequirePosition(UserPosition.ADMIN)
|
||||
@RequiredArgsConstructor
|
||||
public class CompanyUserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@Operation(summary = "获取当前公司员工列表")
|
||||
@GetMapping
|
||||
public Result<List<UserResponse>> listUsers() {
|
||||
return Result.success(userService.listCompanyUsers(UserContext.requireUser()).stream().map(UserResponse::from).toList());
|
||||
}
|
||||
|
||||
@Operation(summary = "创建当前公司员工")
|
||||
@PostMapping
|
||||
public Result<UserResponse> createUser(@Valid @RequestBody CreateUserRequest request) {
|
||||
return Result.success(UserResponse.from(userService.createCompanyUser(UserContext.requireUser(), request)));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改员工角色和岗位")
|
||||
@PutMapping("/{userId}/assignment")
|
||||
public Result<Void> updateAssignment(@PathVariable Long userId, @Valid @RequestBody UpdateUserAssignmentRequest request) {
|
||||
userService.updateAssignment(UserContext.requireUser(), userId, request);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@Operation(summary = "修改员工状态")
|
||||
@PutMapping("/{userId}/status")
|
||||
public Result<Void> updateStatus(@PathVariable Long userId, @Valid @RequestBody UpdateUserStatusRequest request) {
|
||||
userService.updateStatus(UserContext.requireUser(), userId, request);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// package com.labelsys.backend.controller;
|
||||
|
||||
// import com.labelsys.backend.common.Result;
|
||||
// import com.labelsys.backend.context.UserContext;
|
||||
// import com.labelsys.backend.dto.response.MenuResponse;
|
||||
// import com.labelsys.backend.service.MenuService;
|
||||
// import io.swagger.v3.oas.annotations.Operation;
|
||||
// import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
// import java.util.List;
|
||||
// import lombok.RequiredArgsConstructor;
|
||||
// import org.springframework.web.bind.annotation.GetMapping;
|
||||
// import org.springframework.web.bind.annotation.RequestMapping;
|
||||
// import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
// @Tag(name = "菜单管理")
|
||||
// @RestController
|
||||
// @RequestMapping("/api/menus")
|
||||
// @RequiredArgsConstructor
|
||||
// public class MenuController {
|
||||
|
||||
// private final MenuService menuService;
|
||||
|
||||
// @Operation(summary = "获取当前用户菜单")
|
||||
// @GetMapping("/current")
|
||||
// public Result<List<MenuResponse>> currentMenus() {
|
||||
// return Result.success(menuService.listCurrentMenus(UserContext.requireUser()));
|
||||
// }
|
||||
// }
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.labelsys.backend.controller;
|
||||
|
||||
import com.labelsys.backend.annotation.RequirePosition;
|
||||
import com.labelsys.backend.common.Result;
|
||||
import com.labelsys.backend.context.UserContext;
|
||||
import com.labelsys.backend.dto.request.CreateCompanyAdminRequest;
|
||||
import com.labelsys.backend.dto.request.UpdateUserStatusRequest;
|
||||
import com.labelsys.backend.dto.response.UserResponse;
|
||||
import com.labelsys.backend.enums.UserPosition;
|
||||
import com.labelsys.backend.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "平台公司管理员管理")
|
||||
@RestController
|
||||
@RequestMapping("/api/platform/company-admins")
|
||||
@RequirePosition(UserPosition.ADMIN)
|
||||
@RequiredArgsConstructor
|
||||
public class PlatformCompanyAdminController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
@Operation(summary = "查询指定公司管理员列表")
|
||||
@GetMapping
|
||||
public Result<List<UserResponse>> listCompanyAdmins(@RequestParam Long companyId) {
|
||||
return Result.success(userService.listCompanyAdmins(UserContext.requireUser(), companyId).stream().map(UserResponse::from).toList());
|
||||
}
|
||||
|
||||
@Operation(summary = "创建公司管理员")
|
||||
@PostMapping
|
||||
public Result<UserResponse> createCompanyAdmin(@Valid @RequestBody CreateCompanyAdminRequest request) {
|
||||
return Result.success(UserResponse.from(userService.createCompanyAdmin(UserContext.requireUser(), request)));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改公司管理员状态")
|
||||
@PutMapping("/{companyId}/{userId}/status")
|
||||
public Result<Void> updateCompanyAdminStatus(
|
||||
@PathVariable Long companyId,
|
||||
@PathVariable Long userId,
|
||||
@Valid @RequestBody UpdateUserStatusRequest request
|
||||
) {
|
||||
userService.updateCompanyAdminStatus(UserContext.requireUser(), companyId, userId, request);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.labelsys.backend.controller;
|
||||
|
||||
import com.labelsys.backend.annotation.RequirePosition;
|
||||
import com.labelsys.backend.common.Result;
|
||||
import com.labelsys.backend.context.UserContext;
|
||||
import com.labelsys.backend.dto.request.CreateCompanyRequest;
|
||||
import com.labelsys.backend.dto.request.UpdateCompanyStatusRequest;
|
||||
import com.labelsys.backend.dto.response.CompanyResponse;
|
||||
import com.labelsys.backend.enums.UserPosition;
|
||||
import com.labelsys.backend.service.CompanyService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "平台公司管理")
|
||||
@RestController
|
||||
@RequestMapping("/api/platform/companies")
|
||||
@RequirePosition(UserPosition.ADMIN)
|
||||
@RequiredArgsConstructor
|
||||
public class PlatformCompanyController {
|
||||
|
||||
private final CompanyService companyService;
|
||||
|
||||
@Operation(summary = "获取公司列表")
|
||||
@GetMapping
|
||||
public Result<List<CompanyResponse>> listCompanies() {
|
||||
return Result.success(companyService.listCompanies(UserContext.requireUser()).stream().map(CompanyResponse::from).toList());
|
||||
}
|
||||
|
||||
@Operation(summary = "创建公司")
|
||||
@PostMapping
|
||||
public Result<CompanyResponse> createCompany(@Valid @RequestBody CreateCompanyRequest request) {
|
||||
return Result.success(CompanyResponse.from(companyService.createCompany(UserContext.requireUser(), request)));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改公司状态")
|
||||
@PutMapping("/{companyId}/status")
|
||||
public Result<Void> updateCompanyStatus(@PathVariable Long companyId, @Valid @RequestBody UpdateCompanyStatusRequest request) {
|
||||
companyService.updateStatus(UserContext.requireUser(), companyId, request);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user