Commit b1dc5067556e167ee9466c9f5334b13e795d909e

Authored by xp.Huang
2 parents 75d70488 8f191a79

Merge branch 'localhost-cxy' into 'master'

fix: 场景联动编辑租户id不为空,user添加备注,告警username分页修改,user电话不能重复问题

See merge request huang/thingsboard3.3.2!38
@@ -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 }
@@ -41,4 +41,6 @@ public class User extends TenantBaseEntity { @@ -41,4 +41,6 @@ public class User extends TenantBaseEntity {
41 41
42 /** 0:超级管理员;1:租户账号;2:租户下的账号 */ 42 /** 0:超级管理员;1:租户账号;2:租户下的账号 */
43 private Integer level; 43 private Integer level;
  44 +
  45 + private String remark;
44 } 46 }
@@ -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