Commit b1dc5067556e167ee9466c9f5334b13e795d909e
Merge branch 'localhost-cxy' into 'master'
fix: 场景联动编辑租户id不为空,user添加备注,告警username分页修改,user电话不能重复问题 See merge request huang/thingsboard3.3.2!38
Showing
14 changed files
with
64 additions
and
15 deletions
@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; | @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; | ||
6 | import org.apache.commons.lang3.StringUtils; | 6 | import org.apache.commons.lang3.StringUtils; |
7 | import org.springframework.http.HttpStatus; | 7 | import org.springframework.http.HttpStatus; |
8 | import org.springframework.http.ResponseEntity; | 8 | import org.springframework.http.ResponseEntity; |
9 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
9 | import org.springframework.validation.annotation.Validated; | 10 | import org.springframework.validation.annotation.Validated; |
10 | import org.springframework.web.bind.annotation.*; | 11 | import org.springframework.web.bind.annotation.*; |
11 | import org.springframework.web.servlet.support.ServletUriComponentsBuilder; | 12 | import org.springframework.web.servlet.support.ServletUriComponentsBuilder; |
@@ -60,7 +61,7 @@ public class YtAlarmContactController extends BaseController { | @@ -60,7 +61,7 @@ public class YtAlarmContactController extends BaseController { | ||
60 | List<AlarmContactDTO> all = alarmService.findAll(getCurrentUser().getCurrentTenantId(), params); | 61 | List<AlarmContactDTO> all = alarmService.findAll(getCurrentUser().getCurrentTenantId(), params); |
61 | return ResponseEntity.ok(all); | 62 | return ResponseEntity.ok(all); |
62 | } | 63 | } |
63 | - | 64 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')") |
64 | @ApiOperation(value = "分页查询") | 65 | @ApiOperation(value = "分页查询") |
65 | @GetMapping(params = {PAGE_SIZE, PAGE}) | 66 | @GetMapping(params = {PAGE_SIZE, PAGE}) |
66 | public YtPageData<AlarmContactDTO> pageAlarm( | 67 | public YtPageData<AlarmContactDTO> pageAlarm( |
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation; | @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation; | ||
5 | import lombok.RequiredArgsConstructor; | 5 | import lombok.RequiredArgsConstructor; |
6 | import org.apache.commons.lang3.StringUtils; | 6 | import org.apache.commons.lang3.StringUtils; |
7 | import org.springframework.http.ResponseEntity; | 7 | import org.springframework.http.ResponseEntity; |
8 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
8 | import org.springframework.web.bind.annotation.GetMapping; | 9 | import org.springframework.web.bind.annotation.GetMapping; |
9 | import org.springframework.web.bind.annotation.RequestMapping; | 10 | import org.springframework.web.bind.annotation.RequestMapping; |
10 | import org.springframework.web.bind.annotation.RequestParam; | 11 | import org.springframework.web.bind.annotation.RequestParam; |
@@ -41,6 +42,7 @@ public class YtAlarmInfoController extends BaseController { | @@ -41,6 +42,7 @@ public class YtAlarmInfoController extends BaseController { | ||
41 | 42 | ||
42 | 43 | ||
43 | //分页测试通过 | 44 | //分页测试通过 |
45 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN','CUSTOMER_USER')") | ||
44 | @ApiOperation(value="查询") | 46 | @ApiOperation(value="查询") |
45 | @GetMapping(params = {PAGE_SIZE, PAGE}) | 47 | @GetMapping(params = {PAGE_SIZE, PAGE}) |
46 | public YtPageData<YtAlarmEntity> pageAlarmInfo( | 48 | public YtPageData<YtAlarmEntity> pageAlarmInfo( |
@@ -63,8 +65,6 @@ public class YtAlarmInfoController extends BaseController { | @@ -63,8 +65,6 @@ public class YtAlarmInfoController extends BaseController { | ||
63 | if (orderType != null) { | 65 | if (orderType != null) { |
64 | pageFilter.put(ORDER_TYPE, orderType.name()); | 66 | pageFilter.put(ORDER_TYPE, orderType.name()); |
65 | } | 67 | } |
66 | - | ||
67 | - | ||
68 | return alarmInfoService.alarmPage(pageFilter,getCurrentUser().getTenantId(),alarmType,startTime,endTime,status,deviceId, EntityType.DEVICE,organizationId); | 68 | return alarmInfoService.alarmPage(pageFilter,getCurrentUser().getTenantId(),alarmType,startTime,endTime,status,deviceId, EntityType.DEVICE,organizationId); |
69 | } | 69 | } |
70 | 70 |
@@ -63,8 +63,8 @@ public class YtSceneLinkageController extends BaseController { | @@ -63,8 +63,8 @@ public class YtSceneLinkageController extends BaseController { | ||
63 | @ApiOperation("修改场景联动的数据") | 63 | @ApiOperation("修改场景联动的数据") |
64 | @PostMapping("/update") | 64 | @PostMapping("/update") |
65 | public void updateSceneLinkage( | 65 | public void updateSceneLinkage( |
66 | - @Validated(UpdateGroup.class) @RequestBody SceneLinkageDTO sceneLinkageDTO) { | ||
67 | - sceneLinkageService.updateSceneLinkage(sceneLinkageDTO); | 66 | + @Validated(UpdateGroup.class) @RequestBody SceneLinkageDTO sceneLinkageDTO) throws ThingsboardException { |
67 | + sceneLinkageService.updateSceneLinkage(sceneLinkageDTO,getCurrentUser().getCurrentTenantId()); | ||
68 | } | 68 | } |
69 | 69 | ||
70 | @ApiOperation("场景联动的分页") | 70 | @ApiOperation("场景联动的分页") |
@@ -189,6 +189,7 @@ public class YtUserController extends BaseController { | @@ -189,6 +189,7 @@ public class YtUserController extends BaseController { | ||
189 | } catch (Exception e) { | 189 | } catch (Exception e) { |
190 | throw handleException(e); | 190 | throw handleException(e); |
191 | } | 191 | } |
192 | + | ||
192 | return userService.saveTenantAdmin( | 193 | return userService.saveTenantAdmin( |
193 | userDTO, getCurrentUser().isPtSysadmin(), tenantId.getId().toString()); | 194 | userDTO, getCurrentUser().isPtSysadmin(), tenantId.getId().toString()); |
194 | } | 195 | } |
@@ -233,9 +234,15 @@ public class YtUserController extends BaseController { | @@ -233,9 +234,15 @@ public class YtUserController extends BaseController { | ||
233 | public ResponseResult<UserDTO> accountExist(@PathVariable String username) | 234 | public ResponseResult<UserDTO> accountExist(@PathVariable String username) |
234 | throws ThingsboardException { | 235 | throws ThingsboardException { |
235 | return ResponseResult.success( | 236 | return ResponseResult.success( |
236 | - userService.accountExist(username, getCurrentUser().getCurrentTenantId())); | 237 | + userService.accountExist(username,getCurrentUser().getCurrentTenantId())); |
237 | } | 238 | } |
238 | 239 | ||
240 | + @ApiOperation(value = "判断电话是否重复") | ||
241 | + @GetMapping("/findUserByPhoneNumber/{phoneNumber}") | ||
242 | + public ResponseResult<UserDTO> findUserByPhoneNumber(@PathVariable String phoneNumber) throws ThingsboardException { | ||
243 | + return ResponseResult.success( | ||
244 | + userService.findUserByPhoneNumber(phoneNumber,getCurrentUser().getCurrentTenantId())); | ||
245 | + } | ||
239 | @PostMapping("/relation") | 246 | @PostMapping("/relation") |
240 | public String[] getUserRoleOrGroup( | 247 | public String[] getUserRoleOrGroup( |
241 | @Validated @RequestBody RoleOrOrganizationReqDTO roleOrGroupReqDTO) { | 248 | @Validated @RequestBody RoleOrOrganizationReqDTO roleOrGroupReqDTO) { |
@@ -37,7 +37,7 @@ public class UserDTO extends BaseDTO { | @@ -37,7 +37,7 @@ public class UserDTO extends BaseDTO { | ||
37 | 37 | ||
38 | /** 角色ids */ | 38 | /** 角色ids */ |
39 | private String[] roleIds; | 39 | private String[] roleIds; |
40 | - | 40 | + @NotEmpty(message = "电话号码不能为空或字符串", groups = AddGroup.class) |
41 | private String phoneNumber; | 41 | private String phoneNumber; |
42 | private String email; | 42 | private String email; |
43 | private String avatar; | 43 | private String avatar; |
@@ -68,4 +68,6 @@ public class UserDTO extends BaseDTO { | @@ -68,4 +68,6 @@ public class UserDTO extends BaseDTO { | ||
68 | 68 | ||
69 | /** 0:超级管理员;1:租户账号;2:租户下的账号 */ | 69 | /** 0:超级管理员;1:租户账号;2:租户下的账号 */ |
70 | private Integer level; | 70 | private Integer level; |
71 | + | ||
72 | + private String remark; | ||
71 | } | 73 | } |
@@ -195,14 +195,14 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap | @@ -195,14 +195,14 @@ public class SceneLinkageServiceImpl extends AbstractBaseService<SceneLinkageMap | ||
195 | */ | 195 | */ |
196 | @Override | 196 | @Override |
197 | @Transactional | 197 | @Transactional |
198 | - public SceneLinkageDTO updateSceneLinkage(SceneLinkageDTO sceneLinkageDTO) { | 198 | + public SceneLinkageDTO updateSceneLinkage(SceneLinkageDTO sceneLinkageDTO,String tenantId) { |
199 | // 获取场景 | 199 | // 获取场景 |
200 | SceneLinkage sceneLinkage = baseMapper.selectById(sceneLinkageDTO.getId()); | 200 | SceneLinkage sceneLinkage = baseMapper.selectById(sceneLinkageDTO.getId()); |
201 | if (sceneLinkage == null) { | 201 | if (sceneLinkage == null) { |
202 | throw new YtDataValidationException("此场景已不存在"); | 202 | throw new YtDataValidationException("此场景已不存在"); |
203 | } | 203 | } |
204 | sceneLinkageDTO.copyToEntity(sceneLinkage); | 204 | sceneLinkageDTO.copyToEntity(sceneLinkage); |
205 | - | 205 | + sceneLinkage.setTenantId(tenantId); |
206 | updateTrigger(sceneLinkageDTO); | 206 | updateTrigger(sceneLinkageDTO); |
207 | updateDoAction(sceneLinkageDTO); | 207 | updateDoAction(sceneLinkageDTO); |
208 | updateDoCondition(sceneLinkageDTO); | 208 | updateDoCondition(sceneLinkageDTO); |
@@ -55,7 +55,7 @@ public class YtTenantServiceImpl extends AbstractBaseService<TenantMapper, Tenan | @@ -55,7 +55,7 @@ public class YtTenantServiceImpl extends AbstractBaseService<TenantMapper, Tenan | ||
55 | 55 | ||
56 | @Override | 56 | @Override |
57 | public YtPageData<TenantDTO> page(Map<String, Object> queryMap) { | 57 | public YtPageData<TenantDTO> page(Map<String, Object> queryMap) { |
58 | - IPage<Tenant> tenantIPage = getPage(queryMap, "create_time", true); | 58 | + IPage<Tenant> tenantIPage = getPage(queryMap, "create_time", false); |
59 | IPage<TenantDTO> userPage = | 59 | IPage<TenantDTO> userPage = |
60 | baseMapper.getTenantPage( | 60 | baseMapper.getTenantPage( |
61 | tenantIPage, (String) queryMap.get("tenantName"), EntityId.NULL_UUID.toString()); | 61 | tenantIPage, (String) queryMap.get("tenantName"), EntityId.NULL_UUID.toString()); |
@@ -244,6 +244,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | @@ -244,6 +244,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | ||
244 | user.setPhoneNumber(userDTO.getPhoneNumber()); | 244 | user.setPhoneNumber(userDTO.getPhoneNumber()); |
245 | user.setEmail(userDTO.getEmail()); | 245 | user.setEmail(userDTO.getEmail()); |
246 | user.setAccountExpireTime(userDTO.getAccountExpireTime()); | 246 | user.setAccountExpireTime(userDTO.getAccountExpireTime()); |
247 | + user.setRemark(userDTO.getRemark()); | ||
247 | if (userDTO.getPassword() !=null && !userDTO.getPassword().equals("******")) { | 248 | if (userDTO.getPassword() !=null && !userDTO.getPassword().equals("******")) { |
248 | user.setPassword(passwordEncoder.encode(userDTO.getPassword())); | 249 | user.setPassword(passwordEncoder.encode(userDTO.getPassword())); |
249 | } | 250 | } |
@@ -264,7 +265,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | @@ -264,7 +265,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | ||
264 | boolean isTenantAdmin) { | 265 | boolean isTenantAdmin) { |
265 | String tenantId = (String) queryMap.get("tenantId"); | 266 | String tenantId = (String) queryMap.get("tenantId"); |
266 | IPage<UserDTO> userPage = null; | 267 | IPage<UserDTO> userPage = null; |
267 | - IPage<User> userIPage = getPage(queryMap, "create_time", true); | 268 | + IPage<User> userIPage = getPage(queryMap, "create_time", false); |
268 | String organizationId = queryMap.get("organizationId") != null ? (String) queryMap.get("organizationId") : null; | 269 | String organizationId = queryMap.get("organizationId") != null ? (String) queryMap.get("organizationId") : null; |
269 | List<String> userIds = null; | 270 | List<String> userIds = null; |
270 | if(null != organizationId){ | 271 | if(null != organizationId){ |
@@ -521,7 +522,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | @@ -521,7 +522,7 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | ||
521 | } | 522 | } |
522 | 523 | ||
523 | @Override | 524 | @Override |
524 | - public UserDTO accountExist(String userName, String tenantId) { | 525 | + public UserDTO accountExist(String userName,String tenantId) { |
525 | if (StringUtils.isEmpty(userName)) { | 526 | if (StringUtils.isEmpty(userName)) { |
526 | throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | 527 | throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); |
527 | } | 528 | } |
@@ -531,6 +532,23 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | @@ -531,6 +532,23 @@ public class YtUserServiceImpl extends AbstractBaseService<UserMapper, User> | ||
531 | return baseMapper.findUserInfo(userDTO); | 532 | return baseMapper.findUserInfo(userDTO); |
532 | } | 533 | } |
533 | 534 | ||
535 | + /** | ||
536 | + * 判断手机号是否重复 | ||
537 | + * @param phoneNumber | ||
538 | + * @param tenantId | ||
539 | + * @return | ||
540 | + */ | ||
541 | + @Override | ||
542 | + public UserDTO findUserByPhoneNumber(String phoneNumber, String tenantId) { | ||
543 | + if (StringUtils.isEmpty(phoneNumber)) { | ||
544 | + throw new YtDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | ||
545 | + } | ||
546 | + UserDTO userDTO = new UserDTO(); | ||
547 | + userDTO.setTenantId(tenantId); | ||
548 | + userDTO.setPhoneNumber(phoneNumber); | ||
549 | + return baseMapper.findUserInfoByPhoneNumber(userDTO); | ||
550 | + } | ||
551 | + | ||
534 | @Override | 552 | @Override |
535 | public User validateChangePasswordAccount(AccountReqDTO accountReqDTO) { | 553 | public User validateChangePasswordAccount(AccountReqDTO accountReqDTO) { |
536 | User user = baseMapper.selectById(accountReqDTO.getUserId()); | 554 | User user = baseMapper.selectById(accountReqDTO.getUserId()); |
@@ -32,6 +32,8 @@ public interface UserMapper extends BaseMapper<User> { | @@ -32,6 +32,8 @@ public interface UserMapper extends BaseMapper<User> { | ||
32 | 32 | ||
33 | UserDTO findUserInfo(UserDTO userDTO); | 33 | UserDTO findUserInfo(UserDTO userDTO); |
34 | 34 | ||
35 | + UserDTO findUserInfoByPhoneNumber(UserDTO userDTO); | ||
36 | + | ||
35 | String findUserCustomerIdById(@Param("userId") String userId); | 37 | String findUserCustomerIdById(@Param("userId") String userId); |
36 | 38 | ||
37 | List<UserDTO> getUserCountByRoleType(@Param("roleType") RoleEnum roleType); | 39 | List<UserDTO> getUserCountByRoleType(@Param("roleType") RoleEnum roleType); |
@@ -32,7 +32,7 @@ public interface SceneLinkageService { | @@ -32,7 +32,7 @@ public interface SceneLinkageService { | ||
32 | * @param sceneLinkageDTO | 32 | * @param sceneLinkageDTO |
33 | * @return | 33 | * @return |
34 | */ | 34 | */ |
35 | - SceneLinkageDTO updateSceneLinkage(SceneLinkageDTO sceneLinkageDTO); | 35 | + SceneLinkageDTO updateSceneLinkage(SceneLinkageDTO sceneLinkageDTO,String tenantId); |
36 | 36 | ||
37 | /** | 37 | /** |
38 | * 分页查询 | 38 | * 分页查询 |
@@ -62,6 +62,14 @@ public interface YtUserService { | @@ -62,6 +62,14 @@ public interface YtUserService { | ||
62 | */ | 62 | */ |
63 | UserDTO accountExist(String username, String tenantId); | 63 | UserDTO accountExist(String username, String tenantId); |
64 | 64 | ||
65 | + /** | ||
66 | + * 判断电话是否注册过 | ||
67 | + * @param phoneNumber | ||
68 | + * @param tenantId | ||
69 | + * @return | ||
70 | + */ | ||
71 | + UserDTO findUserByPhoneNumber(String phoneNumber,String tenantId); | ||
72 | + | ||
65 | User validateChangePasswordAccount(AccountReqDTO accountReqDTO); | 73 | User validateChangePasswordAccount(AccountReqDTO accountReqDTO); |
66 | 74 | ||
67 | Optional<List<UserDTO>> getOrganizationUserByOrganizationId( | 75 | Optional<List<UserDTO>> getOrganizationUserByOrganizationId( |
@@ -35,7 +35,7 @@ | @@ -35,7 +35,7 @@ | ||
35 | <if test="queryMap.tenantId !=null and queryMap.tenantId !=''"> | 35 | <if test="queryMap.tenantId !=null and queryMap.tenantId !=''"> |
36 | AND a.tenant_id = #{queryMap.tenantId} | 36 | AND a.tenant_id = #{queryMap.tenantId} |
37 | </if> | 37 | </if> |
38 | - <if test="queryMap.name !=null and queryMap.name !=''"> | 38 | + <if test="queryMap.username !=null and queryMap.username !=''"> |
39 | AND a.username LIKE concat('%',#{queryMap.username}::TEXT,'%') | 39 | AND a.username LIKE concat('%',#{queryMap.username}::TEXT,'%') |
40 | </if> | 40 | </if> |
41 | <if test="queryMap.organizationIds !=null"> | 41 | <if test="queryMap.organizationIds !=null"> |
@@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
37 | <result property="level" column="level"/> | 37 | <result property="level" column="level"/> |
38 | <result property="tbUser" column="tb_user"/> | 38 | <result property="tbUser" column="tb_user"/> |
39 | <result property="customerId" column="customer_id"/> | 39 | <result property="customerId" column="customer_id"/> |
40 | + <result property="remark" column="remark"/> | ||
40 | </resultMap> | 41 | </resultMap> |
41 | 42 | ||
42 | <sql id="columns"> | 43 | <sql id="columns"> |
@@ -54,7 +55,8 @@ | @@ -54,7 +55,8 @@ | ||
54 | su.real_name AS real_name, | 55 | su.real_name AS real_name, |
55 | su.dept_id AS dept_id, | 56 | su.dept_id AS dept_id, |
56 | su.level AS level, | 57 | su.level AS level, |
57 | - su.tb_user AS tb_user | 58 | + su.tb_user AS tb_user, |
59 | + su.remark AS remark | ||
58 | </sql> | 60 | </sql> |
59 | 61 | ||
60 | <select id="findUserDetailsByUserName" resultMap="userDetailsMap"> | 62 | <select id="findUserDetailsByUserName" resultMap="userDetailsMap"> |
@@ -157,6 +159,13 @@ | @@ -157,6 +159,13 @@ | ||
157 | WHERE su.username=#{username} | 159 | WHERE su.username=#{username} |
158 | AND su.tenant_id=#{tenantId} | 160 | AND su.tenant_id=#{tenantId} |
159 | </select> | 161 | </select> |
162 | + <select id="findUserInfoByPhoneNumber" resultMap="userDTOMap"> | ||
163 | + SELECT | ||
164 | + <include refid="columns"/> | ||
165 | + FROM sys_user su | ||
166 | + WHERE su.phone_number=#{phoneNumber} | ||
167 | + AND su.tenant_id=#{tenantId} | ||
168 | +</select> | ||
160 | 169 | ||
161 | <select id="findUserCustomerIdById" resultType="java.lang.String"> | 170 | <select id="findUserCustomerIdById" resultType="java.lang.String"> |
162 | SELECT tu.customer_id | 171 | SELECT tu.customer_id |