SysUserServiceImpl.java
3.68 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.bsth.service.sys.impl;
import com.alibaba.fastjson.JSONArray;
import com.bsth.common.ResponseCode;
import com.bsth.entity.sys.Role;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.SysUserRepository;
import com.bsth.security.util.SecurityUtils;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.sys.RoleService;
import com.bsth.service.sys.SysUserService;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
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.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@Service
public class SysUserServiceImpl extends BaseServiceImpl<SysUser, Integer> implements SysUserService{
@Autowired
SysUserRepository sysUserRepository;
@Autowired
RoleService roleService;
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 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() {
Map<String, Object> map = roleService.findSubordinate();
Object object = roleService.findSubordinate().get("list");
List<SysUser> rsList = new ArrayList<>();
// 有权限查看的角色
// List<Role> roleList = JSONArray.parseArray(map.get("list").toString(), Role.class);
try{
Gson gson = new Gson();
// 有权限查看的角色
List<Role> roleList = gson.fromJson(map.get("list").toString(), new TypeToken<List<Role>>(){}.getType());
if(roleList.size() != 0 && !roleList.isEmpty()){
// 遍历有权限查看的角色
Map<Integer,Role> roleMap = new HashMap<>();
for (Role role: roleList) {
roleMap.put(role.getId(),role);
}
List<SysUser> list = new ArrayList<>();
list = sysUserRepository.findAll_distinct();
for (SysUser sysUsers:list) {
Iterator<Role> itUser = sysUsers.getRoles().iterator();
Role roleUser = new Role();
while(itUser.hasNext()){//判断是否有下一个
roleUser = itUser.next();
}
// 添加权限内的用户
if(roleMap.get(roleUser.getId()) != null){
rsList.add(sysUsers);
}
}
}
} catch (Exception e){
logger.error("error", e);
}
return rsList;
}
}