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 fafaf1d..cdb710e 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 @@ -20,10 +20,13 @@ public class UserController { } @PostMapping("/save-info") - public RestBean saveInfo(@RequestBody AccountInfo info, + public RestBean saveInfo(@RequestBody AccountInfo info, @SessionAttribute("account") AccountUser user){ info.setUid(user.getId()); - service.saveUserInfo(info); - return RestBean.success(); + if(service.saveUserInfo(info)) { + return RestBean.success(); + } else { + return RestBean.failure(400, "用户名称已被其他用户使用,无法修改"); + } } } 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 09026c7..9f27b79 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 @@ -29,4 +29,7 @@ public interface UserMapper { qq=#{qq}, wx=#{wx}, blog=#{blog}, `desc`=#{desc} """) void saveInfo(AccountInfo info); + + @Update("update db_account set username=#{name} where id=#{uid}") + void updateUsername(String name, 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 823ca6b..86e241e 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 @@ -3,5 +3,5 @@ package com.example.service; import com.example.entity.user.AccountInfo; public interface UserService { - void saveUserInfo(AccountInfo info); + boolean saveUserInfo(AccountInfo info); } 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 4d38b90..f89ee13 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 @@ -1,5 +1,6 @@ package com.example.service.impl; +import com.example.entity.auth.Account; import com.example.entity.user.AccountInfo; import com.example.mapper.UserMapper; import com.example.service.UserService; @@ -12,7 +13,14 @@ public class UserServiceImpl implements UserService { UserMapper mapper; @Override - public void saveUserInfo(AccountInfo info) { + public boolean saveUserInfo(AccountInfo info) { + Account account = mapper.findAccountByNameOrEmail(info.getUsername()); + if(account == null) { + mapper.updateUsername(info.getUsername(), info.getUid()); + } else if(account.getId() != info.getUid()){ + return false; + } mapper.saveInfo(info); + return true; } } diff --git a/study-project-frontend/src/net/index.js b/study-project-frontend/src/net/index.js index 01a2ecf..7dc9327 100644 --- a/study-project-frontend/src/net/index.js +++ b/study-project-frontend/src/net/index.js @@ -1,6 +1,9 @@ import axios from "axios"; import {ElMessage} from "element-plus"; import router from "@/router"; +import {useStore} from "@/stores"; + +const store = useStore() const defaultError = () => ElMessage.error('发生了一些错误,请联系管理员') const defaultFailure = (message) => ElMessage.warning(message) @@ -12,9 +15,11 @@ function post(url, data, success, type = 'x-www-form-urlencoded', failure = defa }, withCredentials: true }).then(({data}) => { - if(data.status === 401) + if(data.status === 401) { + localStorage.removeItem('user') + store.auth.user = undefined router.push('/') - else if(data.success) + } else if(data.success) success(data.message, data.status) else failure(data.message, data.status) @@ -25,9 +30,11 @@ function get(url, success, failure = defaultFailure, error = defaultError) { axios.get(url, { withCredentials: true }).then(({data}) => { - if(data.status === 401) + if(data.status === 401) { + localStorage.removeItem('user') + store.auth.user = undefined router.push('/') - else if(data.success) + } else if(data.success) success(data.message, data.status) else failure(data.message, data.status)