Skip to content

Commit b0a1db2

Browse files
committed
feat: change account
1 parent 650d4eb commit b0a1db2

File tree

9 files changed

+136
-5
lines changed

9 files changed

+136
-5
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package top.naccl.controller.admin;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.web.bind.annotation.PostMapping;
5+
import org.springframework.web.bind.annotation.RequestBody;
6+
import org.springframework.web.bind.annotation.RequestHeader;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RestController;
9+
import top.naccl.entity.User;
10+
import top.naccl.model.vo.Result;
11+
import top.naccl.service.UserService;
12+
13+
/**
14+
* @Description: 账号后台管理
15+
* @Author: Naccl
16+
* @Date: 2023-01-31
17+
*/
18+
@RestController
19+
@RequestMapping("/admin")
20+
public class AccountAdminController {
21+
@Autowired
22+
UserService userService;
23+
24+
/**
25+
* 账号密码修改
26+
*/
27+
@PostMapping("/account")
28+
public Result account(@RequestBody User user, @RequestHeader(value = "Authorization", defaultValue = "") String jwt) {
29+
boolean res = userService.changeAccount(user, jwt);
30+
return res ? Result.ok("修改成功") : Result.error("修改失败");
31+
}
32+
}

blog-api/src/main/java/top/naccl/mapper/UserMapper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ public interface UserMapper {
1515
User findByUsername(String username);
1616

1717
User findById(Long id);
18+
19+
int updateUserByUsername(String username, User user);
1820
}

blog-api/src/main/java/top/naccl/service/UserService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ public interface UserService {
66
User findUserByUsernameAndPassword(String username, String password);
77

88
User findUserById(Long id);
9+
10+
boolean changeAccount(User user, String jwt);
911
}

blog-api/src/main/java/top/naccl/service/impl/UserServiceImpl.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import org.springframework.security.core.userdetails.UserDetailsService;
66
import org.springframework.security.core.userdetails.UsernameNotFoundException;
77
import org.springframework.stereotype.Service;
8+
import org.springframework.transaction.interceptor.TransactionAspectSupport;
9+
import top.naccl.entity.User;
810
import top.naccl.exception.NotFoundException;
911
import top.naccl.mapper.UserMapper;
10-
import top.naccl.entity.User;
1112
import top.naccl.service.UserService;
1213
import top.naccl.util.HashUtils;
14+
import top.naccl.util.JwtUtils;
1315

1416
/**
1517
* @Description: 用户业务层接口实现类
@@ -50,4 +52,15 @@ public User findUserById(Long id) {
5052
}
5153
return user;
5254
}
55+
56+
@Override
57+
public boolean changeAccount(User user, String jwt) {
58+
String username = JwtUtils.getTokenBody(jwt).getSubject();
59+
user.setPassword(HashUtils.getBC(user.getPassword()));
60+
if (userMapper.updateUserByUsername(username, user) != 1) {
61+
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
62+
return false;
63+
}
64+
return true;
65+
}
5366
}

blog-api/src/main/java/top/naccl/util/JwtUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ public class JwtUtils {
2222

2323
@Value("${token.secretKey}")
2424
public void setSecretKey(String secretKey) {
25-
this.secretKey = secretKey;
25+
JwtUtils.secretKey = secretKey;
2626
}
2727

2828
@Value("${token.expireTime}")
2929
public void setExpireTime(long expireTime) {
30-
this.expireTime = expireTime;
30+
JwtUtils.expireTime = expireTime;
3131
}
3232

3333
/**

blog-api/src/main/resources/mapper/UserMapper.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@
1010
<select id="findById" resultType="top.naccl.entity.User">
1111
select * from user where id=#{id} limit 1
1212
</select>
13+
14+
<!--按username修改-->
15+
<update id="updateUserByUsername">
16+
update user set username=#{user.username}, password=#{user.password}, update_time=now() where username=#{username}
17+
</update>
1318
</mapper>

blog-cms/src/api/account.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import axios from '@/util/request'
2+
3+
export function changeAccount(account) {
4+
return axios({
5+
url: 'account',
6+
method: 'POST',
7+
data: {
8+
...account
9+
}
10+
})
11+
}

blog-cms/src/router/index.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,16 @@ const routes = [
159159
{
160160
path: '/system',
161161
name: 'System',
162-
redirect: '/system/job',
162+
redirect: '/system/account',
163163
component: Layout,
164164
meta: {title: '系统管理', icon: 'el-icon-s-tools'},
165165
children: [
166+
{
167+
path: 'account',
168+
name: 'Account',
169+
component: () => import('@/views/system/Account'),
170+
meta: {title: '修改账户', icon: 'el-icon-user-solid'}
171+
},
166172
{
167173
path: 'job',
168174
name: 'JobList',
@@ -247,4 +253,4 @@ router.beforeEach((to, from, next) => {
247253
next()
248254
})
249255

250-
export default router
256+
export default router

blog-cms/src/views/system/Account.vue

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<template>
2+
<div>
3+
<el-card>
4+
<div slot="header">
5+
<span>修改当前登录账户</span>
6+
</div>
7+
<el-form :model="account" label-width="50px">
8+
<el-form-item label="账号">
9+
<el-input v-model="account.username"></el-input>
10+
</el-form-item>
11+
<el-form-item label="密码">
12+
<el-input v-model="account.password"></el-input>
13+
</el-form-item>
14+
<el-popconfirm title="确定修改吗?" icon="el-icon-user-solid" iconColor="#409EFF" @onConfirm="save">
15+
<el-button type="primary" size="medium" icon="el-icon-check" slot="reference" :disabled="!account.username || !account.password">确认修改</el-button>
16+
</el-popconfirm>
17+
</el-form>
18+
</el-card>
19+
</div>
20+
</template>
21+
22+
<script>
23+
import {changeAccount} from "@/api/account";
24+
25+
export default {
26+
name: "Setting",
27+
data() {
28+
return {
29+
user: {},
30+
account: {
31+
username: '',
32+
password: ''
33+
}
34+
}
35+
},
36+
created() {
37+
this.user = JSON.parse(window.localStorage.getItem('user') || null)
38+
this.account.username = this.user.username
39+
},
40+
methods: {
41+
save() {
42+
changeAccount(this.account).then(res => {
43+
this.msgSuccess(res.msg)
44+
this.logout()
45+
})
46+
},
47+
logout() {
48+
window.localStorage.removeItem('token')
49+
window.localStorage.removeItem('user')
50+
this.$router.push('/login')
51+
}
52+
}
53+
}
54+
</script>
55+
56+
<style scoped>
57+
.el-card {
58+
width: 50%;
59+
}
60+
</style>

0 commit comments

Comments
 (0)