Commit 90e2cfb6135ec7cb5cf398ec05ebd2a58e1b4500

Authored by 黄 x
1 parent 143c0654

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

... ... @@ -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=")">
... ...