diff --git a/src/main/java/org/cmh/backend/UserManagement/adpter/User2UserHS.java b/src/main/java/org/cmh/backend/UserManagement/adpter/User2UserHS.java index 73bd76c..ae0bfd4 100644 --- a/src/main/java/org/cmh/backend/UserManagement/adpter/User2UserHS.java +++ b/src/main/java/org/cmh/backend/UserManagement/adpter/User2UserHS.java @@ -3,8 +3,11 @@ package org.cmh.backend.UserManagement.adpter; import org.cmh.backend.UserManagement.model.User; import org.cmh.backend.authentication.model.UserHS; +import java.time.LocalDateTime; + public class User2UserHS { - public static UserHS convert(User user) { + private String tenant; + public static UserHS convert(User user,String tenant) { UserHS userHS = new UserHS(); userHS.setUsername(user.getAccount()); userHS.setPassword(user.getPassword()); @@ -13,6 +16,9 @@ public class User2UserHS { userHS.setGender(user.getGender()); userHS.setEmail(user.getEmail()); userHS.setPhoneNumber(user.getPhone()); + userHS.setRole("用户"); + userHS.setCreatedAt(LocalDateTime.now()); + userHS.setTenant(tenant); return userHS; } diff --git a/src/main/java/org/cmh/backend/UserManagement/controller/TenantManagementController.java b/src/main/java/org/cmh/backend/UserManagement/controller/TenantManagementController.java index ee167fc..1897e7e 100644 --- a/src/main/java/org/cmh/backend/UserManagement/controller/TenantManagementController.java +++ b/src/main/java/org/cmh/backend/UserManagement/controller/TenantManagementController.java @@ -1,63 +1,99 @@ package org.cmh.backend.UserManagement.controller; import jakarta.transaction.Transactional; -import org.apache.poi.ss.formula.functions.T; import org.cmh.backend.UserManagement.dto.TenantOptionsResponse; import org.cmh.backend.UserManagement.model.Tenant; import org.cmh.backend.UserManagement.model.User; import org.cmh.backend.UserManagement.service.TenantManagementService; +import org.cmh.backend.Utils.JwtUtil; import org.cmh.backend.Utils.JwtVerify; +import org.cmh.backend.authentication.model.UserHS; +import org.cmh.backend.authentication.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; import java.util.List; -import java.util.stream.Collectors; @RestController @RequestMapping("/tenant") public class TenantManagementController { @Autowired private TenantManagementService tenantManagementService; + @Autowired + private UserService userService; + + private boolean isAdmin(String token) { + UserHS user = userService.getUserByUsername(JwtUtil.extractUsername(token)); + return user.getSuperAdmin(); + } @PostMapping("/addTenant") - public Tenant addTenant(@RequestBody Tenant tenant) { - Tenant tenant1 = tenantManagementService.registerTenant(tenant); - System.out.println(tenant.toString()); - return tenant1; + @JwtVerify + public Tenant addTenant(@RequestBody Tenant tenant, @RequestParam String token) { + if (isAdmin(token)) { + Tenant tenant1 = tenantManagementService.registerTenant(tenant); + UserHS newUser = new UserHS(); + newUser.setUsername(tenant.getManager()); + newUser.setPassword(tenant.getSymbol()); + newUser.setRole("企业管理员"); + newUser.setTenant(tenant.getName()); + newUser.setGender("男"); + newUser.setNickname(tenant.getManager()); + newUser.setEmail(tenant.getContact()); + newUser.setDepartment("企业管理员"); + newUser.setCreatedAt(LocalDateTime.now()); + newUser.setPhoneNumber(tenant.getPhone()); + userService.addUser(newUser); + System.out.println(tenant.toString()); + return tenant1; + } + return null; } @GetMapping("/getAllTenant") - public List getAll() { - return tenantManagementService.findAll(); + @JwtVerify + public List getAll(@RequestParam String token) { + if (isAdmin(token)) { + return tenantManagementService.findAll(); + } else { + return null; + } } @GetMapping("/getTenantOptions") @JwtVerify - public ResponseEntity getAll(@RequestParam String token) { + public ResponseEntity getAllForNews(@RequestParam String token) { tenantManagementService.findAll(); try { List options = tenantManagementService.findAll().stream() .map(Tenant::getName) .toList(); return new ResponseEntity<>(new TenantOptionsResponse(options, "请求成功"), HttpStatus.OK); - }catch (Exception e){ - return new ResponseEntity<>(new TenantOptionsResponse(null, "请求失败"+e.getMessage()), HttpStatus.BAD_REQUEST); + } catch (Exception e) { + return new ResponseEntity<>(new TenantOptionsResponse(null, "请求失败" + e.getMessage()), HttpStatus.BAD_REQUEST); } } @PostMapping("/updateTenant") - public Tenant update(@RequestBody Tenant tenant) { - System.out.println(tenant); - tenantManagementService.update(tenant); - return tenant; + @JwtVerify + public Tenant update(@RequestBody Tenant tenant, @RequestParam String token) { + if (isAdmin(token)) { + tenantManagementService.update(tenant); + return tenant; + } + return null; } @PostMapping("/deleteTenant") @Transactional - public void delete(@RequestBody User user) { - tenantManagementService.delete(user.getId()); + @JwtVerify + public void delete(@RequestBody User user, @RequestParam String token) { + if (isAdmin(token)){ + tenantManagementService.delete(user.getId()); + } } } diff --git a/src/main/java/org/cmh/backend/UserManagement/controller/UserManagementController.java b/src/main/java/org/cmh/backend/UserManagement/controller/UserManagementController.java index e055c90..73f8cf1 100644 --- a/src/main/java/org/cmh/backend/UserManagement/controller/UserManagementController.java +++ b/src/main/java/org/cmh/backend/UserManagement/controller/UserManagementController.java @@ -32,8 +32,12 @@ public class UserManagementController { private UserRepository userRepository; @PostMapping("/addUser") - public ResponseEntity addUser(@RequestBody User user) { - UserHS newuser = User2UserHS.convert(user); + @JwtVerify + public ResponseEntity addUser(@RequestBody User user,@RequestParam String token) { + String username = JwtUtil.extractUsername(token); + UserHS operationUser = userService.getUserByUsername(username); + + UserHS newuser = User2UserHS.convert(user,operationUser.getTenant()); UserProfileResponse response = new UserProfileResponse( newuser.getUsername(), newuser.getNickname(), @@ -67,15 +71,18 @@ public class UserManagementController { @PostMapping("/update") - public ResponseEntity update(@RequestBody User user) { - UserHS reqUser = User2UserHS.convert(user); + public ResponseEntity update(@RequestBody User user,@RequestParam String token) { + String username = JwtUtil.extractUsername(token); + UserHS operationUser = userService.getUserByUsername(username); + UserHS reqUser = User2UserHS.convert(user, operationUser.getTenant()); UserHS tarUser = userService.getUserByUsername(reqUser.getUsername()); if (tarUser != null) { - tarUser.setNickname(reqUser.getNickname()); - tarUser.setGender(reqUser.getGender()); - tarUser.setPhoneNumber(reqUser.getPhoneNumber()); - tarUser.setEmail(reqUser.getEmail()); - tarUser.setRole(reqUser.getRole()); +// tarUser.setNickname(reqUser.getNickname()); +// tarUser.setGender(reqUser.getGender()); +// tarUser.setPhoneNumber(reqUser.getPhoneNumber()); +// tarUser.setEmail(reqUser.getEmail()); +// tarUser.setRole(reqUser.getRole()); + reqUser.setId(tarUser.getId()); UserProfileResponse response = new UserProfileResponse( reqUser.getUsername(), reqUser.getNickname(), @@ -86,10 +93,10 @@ public class UserManagementController { reqUser.getRole(), reqUser.getCreatedAt() ); - if (organizationService.getByName(reqUser.getDepartment()) != null) { - tarUser.setDepartment(reqUser.getDepartment()); + if (organizationService.getByName(reqUser.getDepartment()) == null) { + return new ResponseEntity<>(null, HttpStatus.OK); } - userRepository.save(tarUser); + userRepository.save(reqUser); return new ResponseEntity<>(response, HttpStatus.OK); } else { return new ResponseEntity<>(null, HttpStatus.OK); diff --git a/src/main/java/org/cmh/backend/authentication/service/UserService.java b/src/main/java/org/cmh/backend/authentication/service/UserService.java index f81113c..553bcc3 100644 --- a/src/main/java/org/cmh/backend/authentication/service/UserService.java +++ b/src/main/java/org/cmh/backend/authentication/service/UserService.java @@ -1,5 +1,7 @@ package org.cmh.backend.authentication.service; +import org.cmh.backend.UserManagement.model.Tenant; +import org.cmh.backend.UserManagement.repository.TenantManagementRepository; import org.cmh.backend.authentication.dto.ChangePasswordRequest; import org.cmh.backend.authentication.dto.ManageUserProfileRequest; import org.cmh.backend.authentication.dto.RegisterRequest; @@ -18,6 +20,8 @@ import java.util.regex.Pattern; public class UserService { @Autowired private UserRepository userRepository; + @Autowired + private TenantManagementRepository tenantRepository; private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); @@ -47,10 +51,24 @@ public class UserService { newUser.setUsername(username); newUser.setPassword(encodedPassword); newUser.setPhoneNumber(phoneNumber); + newUser.setRole("企业管理员"); + newUser.setTenant(username); + newUser.setGender("男"); + newUser.setNickname(username); + newUser.setEmail("user@example.com"); + newUser.setDepartment("企业管理员"); newUser.setCreatedAt(LocalDateTime.now()); userRepository.save(newUser); + Tenant newTenant = new Tenant(); + newTenant.setName(username); + newTenant.setPhone(phoneNumber); + newTenant.setManager(username); + newTenant.setSymbol(username); + newTenant.setContact(username); + tenantRepository.save(newTenant); + return true; }