RoleServiceImpl.java
5.33 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package com.bsth.service.sys.impl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
import com.bsth.data.BasicData;
import com.bsth.entity.realcontrol.ScheduleRealInfo;
import com.bsth.entity.sys.Resource;
import com.bsth.repository.sys.ResourceRepository;
import com.bsth.security.SecurityMetadataSourceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.stereotype.Service;
import com.bsth.common.ResponseCode;
import com.bsth.entity.sys.Module;
import com.bsth.entity.sys.Role;
import com.bsth.entity.sys.SysUser;
import com.bsth.repository.sys.ModuleRepository;
import com.bsth.repository.sys.RoleRepository;
import com.bsth.service.impl.BaseServiceImpl;
import com.bsth.service.sys.RoleService;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
@Service
public class RoleServiceImpl extends BaseServiceImpl<Role, Integer> implements
RoleService {
Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
RoleRepository roleRepository;
@Autowired
ModuleRepository moduleRepository;
@Autowired
ResourceRepository resourceRepository;
@Autowired
SecurityMetadataSourceService securityMetadataSourceService;
@Autowired
JdbcTemplate jdbcTemplate;
SimpleDateFormat sdfMinute = new SimpleDateFormat("yyyy-MM-dd HH:mm");
@Override
public Map<String, Object> save(Role t) {
if (t.getId() != null) {
// 更新
Map<String, Object> map = new HashMap<>();
try {
roleRepository.update(t.getCodeName(), t.getRoleName(),
t.isEnable(), t.getDescriptions(), t.getId());
map.put("status", ResponseCode.SUCCESS);
} catch (Exception e) {
map.put("status", ResponseCode.ERROR);
}
return map;
}
return super.save(t);
}
@Override
public Map<String, Object> settRoleModules(Integer roleId, String mIds) {
Map<String, Object> map = new HashMap<>();
try {
Role role = roleRepository.findOne(roleId);
List<Integer> idList = new ArrayList<>();
String[] array = mIds.split(",");
for (String id : array) {
if (null == id || id.trim().equals(""))
continue;
idList.add(Integer.parseInt(id));
}
Set<Module> mList = moduleRepository.findByIds(idList);
role.setModules(mList);
roleRepository.save(role);
map.put("status", ResponseCode.SUCCESS);
} catch (Exception e) {
logger.error("", e);
map.put("status", ResponseCode.ERROR);
}
return map;
}
@Override
public Map<String, Object> roleInfo(Integer id) {
Map<String, Object> map = new HashMap<>();
Role role = roleRepository.findOne(id);
map.put("codeName", role.getCodeName());
map.put("roleName", role.getRoleName());
map.put("createDate", sdfMinute.format(role.getCreateDate()));
map.put("updateDate", sdfMinute.format(role.getUpdateDate()));
map.put("enable", role.isEnable()==true?1:0);
map.put("descriptions", role.getDescriptions());
map.put("modules", role.getModules().size());
map.put("resources", role.getResources().size());
String userNames = "";
Set<SysUser> users = role.getUsers();
if(!users.isEmpty()){
Iterator<SysUser> it = users.iterator();
while(it.hasNext()){
SysUser user = it.next();
userNames = user.getUserName()+"...";
}
}
map.put("userNames", userNames);
return map;
}
@Override
public Map<String, Object> settRoleResources(Integer roleId, String rIds){
Map<String, Object> map = new HashMap<>();
DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = tran.getTransaction(def);
String[] ids = rIds.split(",");
try{
jdbcTemplate.update("delete from bsth_c_sys_resource_roles where roles = ?", roleId);
jdbcTemplate.batchUpdate("insert into bsth_c_sys_resource_roles(resources,roles)" +
" VALUES (?, ?)", new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, Integer.parseInt(ids[i]));
ps.setInt(2, roleId);
}
@Override
public int getBatchSize() {
return ids.length;
}
});
tran.commit(status);
//重新加载security资源
securityMetadataSourceService.loadResourceDefine();
map.put("status", ResponseCode.SUCCESS);
}catch (Exception e){
tran.rollback(status);
logger.error("【RoleServiceImpl】【settRoleResources】 : ", e);
map.put("status", ResponseCode.ERROR);
}
return map;
}
}