改完了,真改完了

This commit is contained in:
高子兴 2024-07-06 09:20:55 +08:00
parent 5747e255e9
commit 99862678e7
4 changed files with 97 additions and 30 deletions

View File

@ -3,8 +3,11 @@ package org.cmh.backend.UserManagement.adpter;
import org.cmh.backend.UserManagement.model.User; import org.cmh.backend.UserManagement.model.User;
import org.cmh.backend.authentication.model.UserHS; import org.cmh.backend.authentication.model.UserHS;
import java.time.LocalDateTime;
public class User2UserHS { 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 userHS = new UserHS();
userHS.setUsername(user.getAccount()); userHS.setUsername(user.getAccount());
userHS.setPassword(user.getPassword()); userHS.setPassword(user.getPassword());
@ -13,6 +16,9 @@ public class User2UserHS {
userHS.setGender(user.getGender()); userHS.setGender(user.getGender());
userHS.setEmail(user.getEmail()); userHS.setEmail(user.getEmail());
userHS.setPhoneNumber(user.getPhone()); userHS.setPhoneNumber(user.getPhone());
userHS.setRole("用户");
userHS.setCreatedAt(LocalDateTime.now());
userHS.setTenant(tenant);
return userHS; return userHS;
} }

View File

@ -1,64 +1,100 @@
package org.cmh.backend.UserManagement.controller; package org.cmh.backend.UserManagement.controller;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import org.apache.poi.ss.formula.functions.T;
import org.cmh.backend.UserManagement.dto.TenantOptionsResponse; import org.cmh.backend.UserManagement.dto.TenantOptionsResponse;
import org.cmh.backend.UserManagement.model.Tenant; import org.cmh.backend.UserManagement.model.Tenant;
import org.cmh.backend.UserManagement.model.User; import org.cmh.backend.UserManagement.model.User;
import org.cmh.backend.UserManagement.service.TenantManagementService; import org.cmh.backend.UserManagement.service.TenantManagementService;
import org.cmh.backend.Utils.JwtUtil;
import org.cmh.backend.Utils.JwtVerify; 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.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("/tenant") @RequestMapping("/tenant")
public class TenantManagementController { public class TenantManagementController {
@Autowired @Autowired
private TenantManagementService tenantManagementService; private TenantManagementService tenantManagementService;
@Autowired
private UserService userService;
private boolean isAdmin(String token) {
UserHS user = userService.getUserByUsername(JwtUtil.extractUsername(token));
return user.getSuperAdmin();
}
@PostMapping("/addTenant") @PostMapping("/addTenant")
public Tenant addTenant(@RequestBody Tenant tenant) { @JwtVerify
public Tenant addTenant(@RequestBody Tenant tenant, @RequestParam String token) {
if (isAdmin(token)) {
Tenant tenant1 = tenantManagementService.registerTenant(tenant); 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()); System.out.println(tenant.toString());
return tenant1; return tenant1;
} }
return null;
}
@GetMapping("/getAllTenant") @GetMapping("/getAllTenant")
public List<Tenant> getAll() { @JwtVerify
public List<Tenant> getAll(@RequestParam String token) {
if (isAdmin(token)) {
return tenantManagementService.findAll(); return tenantManagementService.findAll();
} else {
return null;
}
} }
@GetMapping("/getTenantOptions") @GetMapping("/getTenantOptions")
@JwtVerify @JwtVerify
public ResponseEntity<TenantOptionsResponse> getAll(@RequestParam String token) { public ResponseEntity<TenantOptionsResponse> getAllForNews(@RequestParam String token) {
tenantManagementService.findAll(); tenantManagementService.findAll();
try { try {
List<String> options = tenantManagementService.findAll().stream() List<String> options = tenantManagementService.findAll().stream()
.map(Tenant::getName) .map(Tenant::getName)
.toList(); .toList();
return new ResponseEntity<>(new TenantOptionsResponse(options, "请求成功"), HttpStatus.OK); return new ResponseEntity<>(new TenantOptionsResponse(options, "请求成功"), HttpStatus.OK);
}catch (Exception e){ } catch (Exception e) {
return new ResponseEntity<>(new TenantOptionsResponse(null, "请求失败"+e.getMessage()), HttpStatus.BAD_REQUEST); return new ResponseEntity<>(new TenantOptionsResponse(null, "请求失败" + e.getMessage()), HttpStatus.BAD_REQUEST);
} }
} }
@PostMapping("/updateTenant") @PostMapping("/updateTenant")
public Tenant update(@RequestBody Tenant tenant) { @JwtVerify
System.out.println(tenant); public Tenant update(@RequestBody Tenant tenant, @RequestParam String token) {
if (isAdmin(token)) {
tenantManagementService.update(tenant); tenantManagementService.update(tenant);
return tenant; return tenant;
} }
return null;
}
@PostMapping("/deleteTenant") @PostMapping("/deleteTenant")
@Transactional @Transactional
public void delete(@RequestBody User user) { @JwtVerify
public void delete(@RequestBody User user, @RequestParam String token) {
if (isAdmin(token)){
tenantManagementService.delete(user.getId()); tenantManagementService.delete(user.getId());
} }
}
} }

View File

@ -32,8 +32,12 @@ public class UserManagementController {
private UserRepository userRepository; private UserRepository userRepository;
@PostMapping("/addUser") @PostMapping("/addUser")
public ResponseEntity<UserProfileResponse> addUser(@RequestBody User user) { @JwtVerify
UserHS newuser = User2UserHS.convert(user); public ResponseEntity<UserProfileResponse> 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( UserProfileResponse response = new UserProfileResponse(
newuser.getUsername(), newuser.getUsername(),
newuser.getNickname(), newuser.getNickname(),
@ -67,15 +71,18 @@ public class UserManagementController {
@PostMapping("/update") @PostMapping("/update")
public ResponseEntity<UserProfileResponse> update(@RequestBody User user) { public ResponseEntity<UserProfileResponse> update(@RequestBody User user,@RequestParam String token) {
UserHS reqUser = User2UserHS.convert(user); String username = JwtUtil.extractUsername(token);
UserHS operationUser = userService.getUserByUsername(username);
UserHS reqUser = User2UserHS.convert(user, operationUser.getTenant());
UserHS tarUser = userService.getUserByUsername(reqUser.getUsername()); UserHS tarUser = userService.getUserByUsername(reqUser.getUsername());
if (tarUser != null) { if (tarUser != null) {
tarUser.setNickname(reqUser.getNickname()); // tarUser.setNickname(reqUser.getNickname());
tarUser.setGender(reqUser.getGender()); // tarUser.setGender(reqUser.getGender());
tarUser.setPhoneNumber(reqUser.getPhoneNumber()); // tarUser.setPhoneNumber(reqUser.getPhoneNumber());
tarUser.setEmail(reqUser.getEmail()); // tarUser.setEmail(reqUser.getEmail());
tarUser.setRole(reqUser.getRole()); // tarUser.setRole(reqUser.getRole());
reqUser.setId(tarUser.getId());
UserProfileResponse response = new UserProfileResponse( UserProfileResponse response = new UserProfileResponse(
reqUser.getUsername(), reqUser.getUsername(),
reqUser.getNickname(), reqUser.getNickname(),
@ -86,10 +93,10 @@ public class UserManagementController {
reqUser.getRole(), reqUser.getRole(),
reqUser.getCreatedAt() reqUser.getCreatedAt()
); );
if (organizationService.getByName(reqUser.getDepartment()) != null) { if (organizationService.getByName(reqUser.getDepartment()) == null) {
tarUser.setDepartment(reqUser.getDepartment()); return new ResponseEntity<>(null, HttpStatus.OK);
} }
userRepository.save(tarUser); userRepository.save(reqUser);
return new ResponseEntity<>(response, HttpStatus.OK); return new ResponseEntity<>(response, HttpStatus.OK);
} else { } else {
return new ResponseEntity<>(null, HttpStatus.OK); return new ResponseEntity<>(null, HttpStatus.OK);

View File

@ -1,5 +1,7 @@
package org.cmh.backend.authentication.service; 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.ChangePasswordRequest;
import org.cmh.backend.authentication.dto.ManageUserProfileRequest; import org.cmh.backend.authentication.dto.ManageUserProfileRequest;
import org.cmh.backend.authentication.dto.RegisterRequest; import org.cmh.backend.authentication.dto.RegisterRequest;
@ -18,6 +20,8 @@ import java.util.regex.Pattern;
public class UserService { public class UserService {
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private TenantManagementRepository tenantRepository;
private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
@ -47,10 +51,24 @@ public class UserService {
newUser.setUsername(username); newUser.setUsername(username);
newUser.setPassword(encodedPassword); newUser.setPassword(encodedPassword);
newUser.setPhoneNumber(phoneNumber); newUser.setPhoneNumber(phoneNumber);
newUser.setRole("企业管理员");
newUser.setTenant(username);
newUser.setGender("");
newUser.setNickname(username);
newUser.setEmail("user@example.com");
newUser.setDepartment("企业管理员");
newUser.setCreatedAt(LocalDateTime.now()); newUser.setCreatedAt(LocalDateTime.now());
userRepository.save(newUser); 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; return true;
} }