SysUserServiceImpl.java
3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.bsth.service.sys.impl;
import com.bsth.common.ResponseCode;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.SysUserRepository;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.sys.SysUserService;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implements SysUserService{
@Autowired
SysUserRepository sysUserRepository;
Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public SysUser findByUserName(String name) {
return sysUserRepository.findByUserName(name);
}
@Override
public Map<String, Object> save(SysUser t) {
//
if(t.getPassword() == null || t.getPassword().trim().equals("")){
SysUser user = sysUserRepository.findOne(t.getId());
t.setPassword(user.getPassword());
}else{
t.setPassword(new BCryptPasswordEncoder(4).encode(t.getPassword()));
}
return super.save(t);
}
@Override
public int changeEnabled(int id, int enabled) {
sysUserRepository.changeEnabled(id,enabled);
return 0;
}
@Override
public int changePWD(int id,String newPWD) {
return sysUserRepository.changePWD(id,new BCryptPasswordEncoder(4).encode(newPWD));
}
@Override
public boolean validPWDExpired(String userName) {
SysUser sysUser = this.sysUserRepository.findByUserName(userName);
if (sysUser == null) {
throw new RuntimeException("用户[" + userName + "]不存在!");
}
if (sysUser.getPwdValidPeriod() == null || sysUser.getLastPwdDate() == null) {
// 如果没有设定密码过期时间,判定为不过期
return true;
}
DateTime now = new DateTime();
DateTime lastPwdDate = new DateTime(sysUser.getLastPwdDate());
Integer now_period_days = Days.daysBetween(lastPwdDate, now).getDays();
Integer expiredTipDays = 3; // 密码过期提前提示天数
if (now_period_days < (sysUser.getPwdValidPeriod() - expiredTipDays)) {
return true;
} else if (now_period_days >= (sysUser.getPwdValidPeriod() - expiredTipDays) &&
now_period_days < sysUser.getPwdValidPeriod()) {
// 快过期前提示
throw new RuntimeException("当前用户密码还有[" + (sysUser.getPwdValidPeriod() - now_period_days) + "]天过期!");
} else {
throw new RuntimeException("当前用户密码已过期!");
}
}
@Override
public void resetPWD(int id, String newPWD, int validperiod) {
SysUser user = sysUserRepository.findOne(id);
user.setPwdValidPeriod(validperiod);
sysUserRepository.changePWD(id, new BCryptPasswordEncoder(4).encode(newPWD));
}
@Override
public Map<String, Object> register(SysUser u) {
Map<String, Object> rs = new HashMap();
try{
//检查用户名是否存在
if(findByUserName(u.getUserName()) != null){
rs.put("status", ResponseCode.ERROR);
rs.put("msg", "用户名" + u.getUserName() + "已存在!");
}
else{
u.setPassword(new BCryptPasswordEncoder(4).encode(u.getPassword()));
rs = super.save(u);
}
}catch (Exception e){
logger.error("", e);
rs.put("status", ResponseCode.ERROR);
rs.put("msg", e.getMessage());
}
return rs;
}
@Override
public List<SysUser> findAll_distinct() {
return sysUserRepository.findAll_distinct();
}
}