Commit 90e2cfb6135ec7cb5cf398ec05ebd2a58e1b4500

Authored by 黄 x
1 parent 143c0654

fix: 修改账号管理员,用户通过组织查询的BUG

@@ -92,6 +92,7 @@ public class YtUserController extends BaseController { @@ -92,6 +92,7 @@ public class YtUserController extends BaseController {
92 @RequestParam(value = "realName", required = false) String realName, 92 @RequestParam(value = "realName", required = false) String realName,
93 @RequestParam(value = "username", required = false) String username, 93 @RequestParam(value = "username", required = false) String username,
94 @RequestParam(value = "tenantId", required = false) String tenantId, 94 @RequestParam(value = "tenantId", required = false) String tenantId,
  95 + @RequestParam(value = "organizationId", required = false) String organizationId,
95 @RequestParam(value = "roleType", required = false) RoleEnum roleType, 96 @RequestParam(value = "roleType", required = false) RoleEnum roleType,
96 @RequestParam(value = ORDER_FILED, required = false) String orderBy, 97 @RequestParam(value = ORDER_FILED, required = false) String orderBy,
97 @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType) 98 @RequestParam(value = ORDER_TYPE, required = false) OrderTypeEnum orderType)
@@ -107,16 +108,18 @@ public class YtUserController extends BaseController { @@ -107,16 +108,18 @@ public class YtUserController extends BaseController {
107 } else { 108 } else {
108 tenantId = getCurrentUser().getCurrentTenantId(); 109 tenantId = getCurrentUser().getCurrentTenantId();
109 } 110 }
  111 + if(organizationId != null){
  112 + queryMap.put("organizationId",organizationId);
  113 + }
110 if (orderType != null) { 114 if (orderType != null) {
111 queryMap.put(ORDER_TYPE, orderType.name()); 115 queryMap.put(ORDER_TYPE, orderType.name());
112 } 116 }
  117 + queryMap.put("currentUserId", getCurrentUser().getCurrentUserId());
113 queryMap.put("tenantId", tenantId); 118 queryMap.put("tenantId", tenantId);
114 return userService.page( 119 return userService.page(
115 queryMap, 120 queryMap,
116 getCurrentUser().isPtSysadmin(), 121 getCurrentUser().isPtSysadmin(),
117 - getCurrentUser().isPtAdmin(),  
118 - getCurrentUser().isPtTenantAdmin(),  
119 - tenantId); 122 + getCurrentUser().isTenantAdmin());
120 } 123 }
121 124
122 @PutMapping 125 @PutMapping
@@ -5,11 +5,15 @@ import java.util.regex.Pattern; @@ -5,11 +5,15 @@ import java.util.regex.Pattern;
5 public interface FastIotConstants { 5 public interface FastIotConstants {
6 6
7 /** 默认密码 */ 7 /** 默认密码 */
8 - public static final String DEFAULT_PWD = "123456"; 8 + String DEFAULT_PWD = "123456";
9 9
10 class DefaultOrder { 10 class DefaultOrder {
11 public static final String CREATE_TIME="create_time"; 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 String MOBILE = 18 String MOBILE =
15 "^[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}$"; 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,28 +252,33 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User>
252 public YtPageData<UserDTO> page( 252 public YtPageData<UserDTO> page(
253 Map<String, Object> queryMap, 253 Map<String, Object> queryMap,
254 boolean isPtSysadmin, 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 IPage<User> userIPage = getPage(queryMap, "create_time", true); 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 if (isPtSysadmin) { 265 if (isPtSysadmin) {
261 String roleType = (String) queryMap.get("roleType"); 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 userPage = baseMapper.getTenantAdminPage(userIPage, tenantId); 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 } else if (isTenantAdmin) { 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 if (null != userPage) { 283 if (null != userPage) {
279 userPage 284 userPage
@@ -8,6 +8,7 @@ import org.thingsboard.server.common.data.Device; @@ -8,6 +8,7 @@ import org.thingsboard.server.common.data.Device;
8 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO; 8 import org.thingsboard.server.common.data.yunteng.dto.DeviceDTO;
9 import org.thingsboard.server.dao.yunteng.entities.YtDevice; 9 import org.thingsboard.server.dao.yunteng.entities.YtDevice;
10 10
  11 +import java.util.List;
11 import java.util.Map; 12 import java.util.Map;
12 13
13 @Mapper 14 @Mapper
@@ -17,4 +18,11 @@ public interface DeviceMapper extends BaseMapper<YtDevice> { @@ -17,4 +18,11 @@ public interface DeviceMapper extends BaseMapper<YtDevice> {
17 IPage<?> page, @Param("queryMap") Map<String, Object> queryMap); 18 IPage<?> page, @Param("queryMap") Map<String, Object> queryMap);
18 19
19 DeviceDTO selectDetail(@Param("tenantId") String tenantId,@Param("id") String id); 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,13 +22,8 @@ public interface UserMapper extends BaseMapper<User> {
22 22
23 IPage<UserDTO> getUserPage(IPage<?> page, @Param("queryMap") Map<String, Object> queryMap); 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 IPage<UserDTO> getTenantAdminPage(IPage<?> page, @Param("tenantId") String tenantId); 25 IPage<UserDTO> getTenantAdminPage(IPage<?> page, @Param("tenantId") String tenantId);
29 26
30 - IPage<UserDTO> selectAllTenantUser(IPage<?> page);  
31 -  
32 Set<String> getAllIdsByTenantId(@Param("tenantIds") Collection<String> tenantIds); 27 Set<String> getAllIdsByTenantId(@Param("tenantIds") Collection<String> tenantIds);
33 28
34 void setPassword2NullAndInsertActiveToken( 29 void setPassword2NullAndInsertActiveToken(
@@ -29,9 +29,7 @@ public interface YtUserService { @@ -29,9 +29,7 @@ public interface YtUserService {
29 YtPageData<UserDTO> page( 29 YtPageData<UserDTO> page(
30 Map<String, Object> queryMap, 30 Map<String, Object> queryMap,
31 boolean isPtSysadmin, 31 boolean isPtSysadmin,
32 - boolean isPlatformAdmin,  
33 - boolean isTenantAdmin,  
34 - String tenantId); 32 + boolean isTenantAdmin);
35 33
36 UserDTO updateUser(UserDTO userDTO, boolean isPtSysadmin, String tenantId); 34 UserDTO updateUser(UserDTO userDTO, boolean isPtSysadmin, String tenantId);
37 35
@@ -31,10 +31,13 @@ @@ -31,10 +31,13 @@
31 <result property="name" column="organization_name"/> 31 <result property="name" column="organization_name"/>
32 </association> 32 </association>
33 </resultMap> 33 </resultMap>
34 - <sql id="columns"> 34 + <sql id="basicColumns">
35 ifd.id,ifd.name,ifd.device_info,ifd.profile_id,ifd.active_time,ifd.device_token,ifd.tenant_id,ifd.description 35 ifd.id,ifd.name,ifd.device_info,ifd.profile_id,ifd.active_time,ifd.device_token,ifd.tenant_id,ifd.description
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, 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 ifd.updater,ifd.organization_id,ifd,alarm_status 37 ifd.updater,ifd.organization_id,ifd,alarm_status
  38 + </sql>
  39 + <sql id="columns">
  40 + <include refid="basicColumns"/>
38 ,ifdp.name AS profile_name,ifdp.transport_type 41 ,ifdp.name AS profile_name,ifdp.transport_type
39 ,io.name AS organization_name 42 ,io.name AS organization_name
40 </sql> 43 </sql>
@@ -89,4 +92,11 @@ @@ -89,4 +92,11 @@
89 92
90 </where> 93 </where>
91 </select> 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 </mapper> 102 </mapper>
@@ -85,6 +85,7 @@ @@ -85,6 +85,7 @@
85 FROM sys_user su 85 FROM sys_user su
86 LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id 86 LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id
87 <where> 87 <where>
  88 + su.id != #{queryMap.currentUserId}
88 <if test="queryMap.realName!=null and queryMap.realName!=''"> 89 <if test="queryMap.realName!=null and queryMap.realName!=''">
89 AND su.real_name LIKE CONCAT('%',#{queryMap.realName}::TEXT,'%') 90 AND su.real_name LIKE CONCAT('%',#{queryMap.realName}::TEXT,'%')
90 </if> 91 </if>
@@ -94,25 +95,15 @@ @@ -94,25 +95,15 @@
94 <if test="queryMap.tenantId !=null and queryMap.tenantId!=''"> 95 <if test="queryMap.tenantId !=null and queryMap.tenantId!=''">
95 AND su.tenant_id=#{queryMap.tenantId} 96 AND su.tenant_id=#{queryMap.tenantId}
96 </if> 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 </where> 104 </where>
98 </select> 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 <select id="getTenantAdminPage" resultMap="userDTOMap"> 107 <select id="getTenantAdminPage" resultMap="userDTOMap">
117 SELECT 108 SELECT
118 <include refid="columns"/>, 109 <include refid="columns"/>,
@@ -121,14 +112,6 @@ @@ -121,14 +112,6 @@
121 LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id 112 LEFT JOIN sys_tenant st ON su.tenant_id = st.tenant_id
122 WHERE su.level = 2 AND su.tenant_id = #{tenantId} 113 WHERE su.level = 2 AND su.tenant_id = #{tenantId}
123 </select> 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 <select id="getAllIdsByTenantId" resultType="java.lang.String"> 115 <select id="getAllIdsByTenantId" resultType="java.lang.String">
133 SELECT id FROM sys_user WHERE tenant_id IN 116 SELECT id FROM sys_user WHERE tenant_id IN
134 <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")"> 117 <foreach collection="tenantIds" item="tenantId" open="(" separator="," close=")">