diff --git a/study-project-backend/src/main/java/com/example/controller/UserController.java b/study-project-backend/src/main/java/com/example/controller/UserController.java index cdb710e..568537b 100644 --- a/study-project-backend/src/main/java/com/example/controller/UserController.java +++ b/study-project-backend/src/main/java/com/example/controller/UserController.java @@ -5,6 +5,7 @@ import com.example.entity.user.AccountInfo; import com.example.entity.user.AccountUser; import com.example.service.UserService; import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController @@ -20,13 +21,19 @@ public class UserController { } @PostMapping("/save-info") - public RestBean saveInfo(@RequestBody AccountInfo info, - @SessionAttribute("account") AccountUser user){ + public RestBean saveInfo(@RequestBody @Validated AccountInfo info, + @SessionAttribute("account") AccountUser user){ info.setUid(user.getId()); if(service.saveUserInfo(info)) { + user.setUsername(info.getUsername()); return RestBean.success(); } else { return RestBean.failure(400, "用户名称已被其他用户使用,无法修改"); } } + + @GetMapping("/info") + public RestBean info(@SessionAttribute("account") AccountUser user){ + return RestBean.success(service.userInfo(user.getId())); + } } diff --git a/study-project-backend/src/main/java/com/example/entity/user/AccountInfo.java b/study-project-backend/src/main/java/com/example/entity/user/AccountInfo.java index 7668726..f78d6c7 100644 --- a/study-project-backend/src/main/java/com/example/entity/user/AccountInfo.java +++ b/study-project-backend/src/main/java/com/example/entity/user/AccountInfo.java @@ -1,15 +1,22 @@ package com.example.entity.user; import lombok.Data; +import org.hibernate.validator.constraints.Length; @Data public class AccountInfo { int uid; + @Length(min = 2, max = 8) String username; String sex; + @Length(max = 11) String phone; + @Length(max = 11) String qq; + @Length(max = 30) String wx; + @Length(max = 50) String blog; + @Length(max = 500) String desc; } diff --git a/study-project-backend/src/main/java/com/example/interceptor/AuthorizeInterceptor.java b/study-project-backend/src/main/java/com/example/interceptor/AuthorizeInterceptor.java index 6dc2dc8..4aec7e7 100644 --- a/study-project-backend/src/main/java/com/example/interceptor/AuthorizeInterceptor.java +++ b/study-project-backend/src/main/java/com/example/interceptor/AuthorizeInterceptor.java @@ -19,12 +19,14 @@ public class AuthorizeInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - SecurityContext context = SecurityContextHolder.getContext(); - Authentication authentication = context.getAuthentication(); - User user = (User)authentication.getPrincipal(); - String username = user.getUsername(); - AccountUser account = mapper.findAccountUserByNameOrEmail(username); - request.getSession().setAttribute("account", account); + if(request.getSession().getAttribute("account") == null){ + SecurityContext context = SecurityContextHolder.getContext(); + Authentication authentication = context.getAuthentication(); + User user = (User)authentication.getPrincipal(); + String username = user.getUsername(); + AccountUser account = mapper.findAccountUserByNameOrEmail(username); + request.getSession().setAttribute("account", account); + } return true; } } diff --git a/study-project-backend/src/main/java/com/example/mapper/UserMapper.java b/study-project-backend/src/main/java/com/example/mapper/UserMapper.java index 9f27b79..955c6f0 100644 --- a/study-project-backend/src/main/java/com/example/mapper/UserMapper.java +++ b/study-project-backend/src/main/java/com/example/mapper/UserMapper.java @@ -32,4 +32,7 @@ public interface UserMapper { @Update("update db_account set username=#{name} where id=#{uid}") void updateUsername(String name, int uid); + + @Select("select * from db_account_info left join db_account on id = uid where id = #{uid}") + AccountInfo findInfoById(int uid); } diff --git a/study-project-backend/src/main/java/com/example/service/UserService.java b/study-project-backend/src/main/java/com/example/service/UserService.java index 86e241e..d25e379 100644 --- a/study-project-backend/src/main/java/com/example/service/UserService.java +++ b/study-project-backend/src/main/java/com/example/service/UserService.java @@ -4,4 +4,5 @@ import com.example.entity.user.AccountInfo; public interface UserService { boolean saveUserInfo(AccountInfo info); + AccountInfo userInfo(int uid); } diff --git a/study-project-backend/src/main/java/com/example/service/impl/UserServiceImpl.java b/study-project-backend/src/main/java/com/example/service/impl/UserServiceImpl.java index f89ee13..6b31912 100644 --- a/study-project-backend/src/main/java/com/example/service/impl/UserServiceImpl.java +++ b/study-project-backend/src/main/java/com/example/service/impl/UserServiceImpl.java @@ -23,4 +23,9 @@ public class UserServiceImpl implements UserService { mapper.saveInfo(info); return true; } + + @Override + public AccountInfo userInfo(int uid) { + return mapper.findInfoById(uid); + } } diff --git a/study-project-frontend/src/components/settings/InfoSettings.vue b/study-project-frontend/src/components/settings/InfoSettings.vue index 816437e..6df0ff9 100644 --- a/study-project-frontend/src/components/settings/InfoSettings.vue +++ b/study-project-frontend/src/components/settings/InfoSettings.vue @@ -1,7 +1,7 @@