Showing
8 changed files
with
59 additions
and
53 deletions
... | ... | @@ -92,6 +92,7 @@ public class YtUserController extends BaseController { |
92 | 92 | @RequestParam(value = "realName", required = false) String realName, |
93 | 93 | @RequestParam(value = "username", required = false) String username, |
94 | 94 | @RequestParam(value = "tenantId", required = false) String tenantId, |
95 | + @RequestParam(value = "organizationId", required = false) String organizationId, | |
95 | 96 | @RequestParam(value = "roleType", required = false) RoleEnum roleType, |
96 | 97 | @RequestParam(value = ORDER_FILED, required = false) String orderBy, |
97 | 98 | @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) |
... | ... | @@ -107,16 +108,18 @@ public class YtUserController extends BaseController { |
107 | 108 | } else { |
108 | 109 | tenantId = getCurrentUser().getCurrentTenantId(); |
109 | 110 | } |
111 | + if(organizationId != null){ | |
112 | + queryMap.put("organizationId",organizationId); | |
113 | + } | |
110 | 114 | if (orderType != null) { |
111 | 115 | queryMap.put(ORDER_TYPE, orderType.name()); |
112 | 116 | } |
117 | + queryMap.put("currentUserId", getCurrentUser().getCurrentUserId()); | |
113 | 118 | queryMap.put("tenantId", tenantId); |
114 | 119 | return userService.page( |
115 | 120 | queryMap, |
116 | 121 | getCurrentUser().isPtSysadmin(), |
117 | - getCurrentUser().isPtAdmin(), | |
118 | - getCurrentUser().isPtTenantAdmin(), | |
119 | - tenantId); | |
122 | + getCurrentUser().isTenantAdmin()); | |
120 | 123 | } |
121 | 124 | |
122 | 125 | @PutMapping | ... | ... |
... | ... | @@ -5,11 +5,15 @@ import java.util.regex.Pattern; |
5 | 5 | public interface FastIotConstants { |
6 | 6 | |
7 | 7 | /** 默认密码 */ |
8 | - public static final String DEFAULT_PWD = "123456"; | |
8 | + String DEFAULT_PWD = "123456"; | |
9 | 9 | |
10 | 10 | class DefaultOrder { |
11 | 11 | public static final String CREATE_TIME="create_time"; |
12 | 12 | } |
13 | + class MagicNumber{ | |
14 | + public static final int ZERO = 0; | |
15 | + public static final int ONE = 1; | |
16 | + } | |
13 | 17 | |
14 | 18 | String MOBILE = |
15 | 19 | "^[1](([3][0-9])|([4][0,1,4-9])|([5][0-3,5-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$"; | ... | ... |
... | ... | @@ -252,28 +252,33 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> |
252 | 252 | public YtPageData<UserDTO> page( |
253 | 253 | Map<String, Object> queryMap, |
254 | 254 | boolean isPtSysadmin, |
255 | - boolean isPlatformAdmin, | |
256 | - boolean isTenantAdmin, | |
257 | - String tenantId) { | |
258 | - IPage<UserDTO> userPage = new Page<>(); | |
255 | + boolean isTenantAdmin) { | |
256 | + String tenantId = (String) queryMap.get("tenantId"); | |
257 | + IPage<UserDTO> userPage = null; | |
259 | 258 | IPage<User> userIPage = getPage(queryMap, "create_time", true); |
259 | + String organizationId = queryMap.get("organizationId") != null ? (String) queryMap.get("organizationId") : null; | |
260 | + List<String> userIds = null; | |
261 | + if(null != organizationId){ | |
262 | + userIds = userOrganizationMappingService.getUserIdByOrganizationIds(tenantId,organizationId); | |
263 | + queryMap.put("userIds",userIds); | |
264 | + } | |
260 | 265 | if (isPtSysadmin) { |
261 | 266 | String roleType = (String) queryMap.get("roleType"); |
262 | - if (StringUtils.isEmpty(roleType)) { | |
263 | - roleType = RoleEnum.PLATFORM_ADMIN.name(); | |
264 | - userPage = baseMapper.getAdminUserPage(userIPage, tenantId, roleType); | |
265 | - } else { | |
267 | + if (!StringUtils.isEmpty(roleType)) { | |
266 | 268 | userPage = baseMapper.getTenantAdminPage(userIPage, tenantId); |
269 | + } else { | |
270 | + if(null != organizationId && (userIds.size()==FastIotConstants.MagicNumber.ZERO)){ | |
271 | + userPage = new Page<>(); | |
272 | + }else{ | |
273 | + userPage = baseMapper.getUserPage(userIPage, queryMap); | |
274 | + } | |
267 | 275 | } |
268 | - } else if (isPlatformAdmin) { | |
269 | - // 平台管理员只能管理租户 | |
270 | - userPage = baseMapper.selectAllTenantUser(userIPage); | |
271 | 276 | } else if (isTenantAdmin) { |
272 | - Map<String, Object> map = new HashMap<>(); | |
273 | - map.put("realName", queryMap.get("realName")); | |
274 | - map.put("username", queryMap.get("username")); | |
275 | - map.put("tenantId", tenantId); | |
276 | - userPage = baseMapper.getUserPage(userIPage, map); | |
277 | + if(null != organizationId && (userIds.size()==FastIotConstants.MagicNumber.ZERO)){ | |
278 | + userPage = new Page<>(); | |
279 | + }else{ | |
280 | + userPage = baseMapper.getUserPage(userIPage, queryMap); | |
281 | + } | |
277 | 282 | } |
278 | 283 | if (null != userPage) { |
279 | 284 | userPage | ... | ... |
... | ... | @@ -8,6 +8,7 @@ import org.thingsboard.server.common.data.Device; |
8 | 8 | import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO; |
9 | 9 | import org.thingsboard.server.dao.yunteng.entities.YtDevice; |
10 | 10 | |
11 | +import java.util.List; | |
11 | 12 | import java.util.Map; |
12 | 13 | |
13 | 14 | @Mapper |
... | ... | @@ -17,4 +18,11 @@ public interface DeviceMapper extends BaseMapper<YtDevice> { |
17 | 18 | IPage<?> page, @Param("queryMap") Map<String, Object> queryMap); |
18 | 19 | |
19 | 20 | DeviceDTO selectDetail(@Param("tenantId") String tenantId,@Param("id") String id); |
21 | + | |
22 | + /** | |
23 | + * 通过客户的ID,查询改客户能查看的所有设备 | |
24 | + * @param userId 客户ID | |
25 | + * @return 能查看的设备 | |
26 | + */ | |
27 | + List<DeviceDTO> getDeviceByCustomerUserId(@Param("userId") String userId); | |
20 | 28 | } | ... | ... |
... | ... | @@ -22,13 +22,8 @@ public interface UserMapper extends BaseMapper<User> { |
22 | 22 | |
23 | 23 | IPage<UserDTO> getUserPage(IPage<?> page, @Param("queryMap") Map<String, Object> queryMap); |
24 | 24 | |
25 | - IPage<UserDTO> getAdminUserPage( | |
26 | - IPage<?> page, @Param("tenantId") String tenantId, @Param("roleType") String roleType); | |
27 | - | |
28 | 25 | IPage<UserDTO> getTenantAdminPage(IPage<?> page, @Param("tenantId") String tenantId); |
29 | 26 | |
30 | - IPage<UserDTO> selectAllTenantUser(IPage<?> page); | |
31 | - | |
32 | 27 | Set<String> getAllIdsByTenantId(@Param("tenantIds") Collection<String> tenantIds); |
33 | 28 | |
34 | 29 | void setPassword2NullAndInsertActiveToken( | ... | ... |
... | ... | @@ -29,9 +29,7 @@ public interface YtUserService { |
29 | 29 | YtPageData<UserDTO> page( |
30 | 30 | Map<String, Object> queryMap, |
31 | 31 | boolean isPtSysadmin, |
32 | - boolean isPlatformAdmin, | |
33 | - boolean isTenantAdmin, | |
34 | - String tenantId); | |
32 | + boolean isTenantAdmin); | |
35 | 33 | |
36 | 34 | UserDTO updateUser(UserDTO userDTO, boolean isPtSysadmin, String tenantId); |
37 | 35 | ... | ... |
... | ... | @@ -31,10 +31,13 @@ |
31 | 31 | <result property="name" column="organization_name"/> |
32 | 32 | </association> |
33 | 33 | </resultMap> |
34 | - <sql id="columns"> | |
34 | + <sql id="basicColumns"> | |
35 | 35 | ifd.id,ifd.name,ifd.device_info,ifd.profile_id,ifd.active_time,ifd.device_token,ifd.tenant_id,ifd.description |
36 | 36 | ,ifd.tb_device_id,ifd.label,ifd.last_connect_time,ifd.device_type,ifd.device_state,ifd.create_time,ifd.update_time,ifd.creator, |
37 | 37 | ifd.updater,ifd.organization_id,ifd,alarm_status |
38 | + </sql> | |
39 | + <sql id="columns"> | |
40 | + <include refid="basicColumns"/> | |
38 | 41 | ,ifdp.name AS profile_name,ifdp.transport_type |
39 | 42 | ,io.name AS organization_name |
40 | 43 | </sql> |
... | ... | @@ -89,4 +92,11 @@ |
89 | 92 | |
90 | 93 | </where> |
91 | 94 | </select> |
95 | + | |
96 | + <select id="getDeviceByCustomerUserId" resultMap="deviceMap"> | |
97 | + SELECT <include refid="basicColumns"/> FROM iotfs_device ifd | |
98 | + WHERE ifd.organization_id IN | |
99 | + ( SELECT iuom.organization_id FROM iotfs_user_organization_mapping iuom | |
100 | + WHERE iuom.user_id = #{userId}); | |
101 | + </select> | |
92 | 102 | </mapper> | ... | ... |
... | ... | @@ -85,6 +85,7 @@ |
85 | 85 | FROM sys_user su |
86 | 86 | LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id |
87 | 87 | <where> |
88 | + su.id != #{queryMap.currentUserId} | |
88 | 89 | <if test="queryMap.realName!=null and queryMap.realName!=''"> |
89 | 90 | AND su.real_name LIKE CONCAT('%',#{queryMap.realName}::TEXT,'%') |
90 | 91 | </if> |
... | ... | @@ -94,25 +95,15 @@ |
94 | 95 | <if test="queryMap.tenantId !=null and queryMap.tenantId!=''"> |
95 | 96 | AND su.tenant_id=#{queryMap.tenantId} |
96 | 97 | </if> |
98 | + <if test="queryMap.userIds !=null"> | |
99 | + AND su.id IN | |
100 | + <foreach collection="queryMap.userIds" item="userId" open="(" separator="," close=")"> | |
101 | + #{userId} | |
102 | + </foreach> | |
103 | + </if> | |
97 | 104 | </where> |
98 | 105 | </select> |
99 | 106 | |
100 | - <select id="getAdminUserPage" resultMap="userDTOMap"> | |
101 | - SELECT | |
102 | - <include refid="columns"/>, | |
103 | - st.name AS tenant_name | |
104 | - FROM sys_user su | |
105 | - LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id | |
106 | - WHERE su.ID IN (SELECT user_id | |
107 | - FROM sys_user_role | |
108 | - WHERE role_id IN (SELECT ID | |
109 | - FROM sys_role | |
110 | - WHERE role_type = #{roleType} | |
111 | - <if test="roleType == 'PLATFORM_ADMIN'"> | |
112 | - OR role_type = 'SYS_ADMIN' | |
113 | - </if> | |
114 | - AND tenant_id = #{tenantId})) | |
115 | - </select> | |
116 | 107 | <select id="getTenantAdminPage" resultMap="userDTOMap"> |
117 | 108 | SELECT |
118 | 109 | <include refid="columns"/>, |
... | ... | @@ -121,14 +112,6 @@ |
121 | 112 | LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id |
122 | 113 | WHERE su.level = 2 AND su.tenant_id = #{tenantId} |
123 | 114 | </select> |
124 | - <select id="selectAllTenantUser" resultMap="userDTOMap"> | |
125 | - SELECT | |
126 | - <include refid="columns"/>, | |
127 | - st.name AS tenant_name | |
128 | - FROM sys_user su | |
129 | - LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id | |
130 | - WHERE su.level = 2; | |
131 | - </select> | |
132 | 115 | <select id="getAllIdsByTenantId" resultType="java.lang.String"> |
133 | 116 | SELECT id FROM sys_user WHERE tenant_id IN |
134 | 117 | <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")"> | ... | ... |