ソースを参照

系统管理-通过租户id获取全部别名,通过别名获取所属员工id集合

1021934019@qq.com 4 年 前
コミット
838d688783

+ 3 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/entity/Message.java

@@ -102,5 +102,8 @@ public class Message implements Serializable {
 		@ApiModelProperty(value = "是否已删除(0 否 1是)")
 		private Integer isDeleted;
 
+		@ApiModelProperty(value = "租户id")
+		private String tenantId;
+
 
 }

+ 15 - 0
blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java

@@ -60,6 +60,21 @@ public interface ISysClient {
 	String PARAM = API_PREFIX + "/param";
 	String PARAM_VALUE = API_PREFIX + "/param-value";
 	String REGION = API_PREFIX + "/region";
+	String LIST_ROLE_ALIAS=API_PREFIX+"/listRoleAlias";
+	String GET_ROLE_ID_BY_ALIAS=API_PREFIX+"/getRoleByAlias";
+
+	/**
+	 * 通过租户id获取全部租户别名
+	 * */
+     @GetMapping(LIST_ROLE_ALIAS)
+	 R<List<Role>> listRoleAlias();
+
+	/**
+	 * 通过角色别名获
+	 * */
+	@GetMapping(GET_ROLE_ID_BY_ALIAS)
+	R<Long> getRoleByAlias(String alias);
+
 
 	/**
 	 * 获取菜单

+ 4 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java

@@ -51,6 +51,10 @@ public interface IUserClient {
 	String REMOVE_USER = API_PREFIX + "/remove-user";
 	String GAIN_USER = API_PREFIX + "/gainUser";
 	String USER_INFO_BY_NAME=API_PREFIX+"/user-info-by-name";
+	String LIST_USER_BY_ROLE_ID=API_PREFIX+"/listUserByRoleId";
+
+	@GetMapping(LIST_USER_BY_ROLE_ID)
+	R<List<User>> listUserByRoleId(@RequestParam("roleId")Long roleId);
 
 	/**
 	 * 获取用户信息

+ 70 - 5
blade-service/blade-client/src/main/java/org/springblade/client/message/service/impl/MessageServiceImpl.java

@@ -15,15 +15,25 @@
  *  Author: Chill 庄骞 (smallchill@163.com)
  */
 package org.springblade.client.message.service.impl;
-
-
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
 import org.springblade.client.entity.Message;
 import org.springblade.client.message.mapper.MessageMapper;
 import org.springblade.client.message.service.IMessageService;
 import org.springblade.client.vo.MessageVO;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  *  服务实现类
@@ -32,8 +42,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2021-12-20
  */
 @Service
+@AllArgsConstructor
 public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> implements IMessageService
 {
+	private final IUserClient userClient;
+
+	private final ISysClient sysClient;
 
 	@Override
 	public IPage<MessageVO> selectMessagePage(IPage<MessageVO> page, MessageVO message) {
@@ -41,12 +55,63 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
 	}
 
 	@Override
-	public void pushByUserId(Long userId, String Message, Integer MessageType) {
-
+	public void pushByUserId(Long userId, String Message, Integer MessageType)
+	{
+		Message message=new Message();
+		message.setUserId(AuthUtil.getUserId());
+		message.setUserName(AuthUtil.getUserName());
+		message.setToUserId(userId);
+		message.setMessageType(MessageType);
+		message.setMessageBody(Message);
+		message.setIsRead(0);
+		message.setTenantId(AuthUtil.getTenantId());
+		message.setCreateUser(AuthUtil.getUserId());
+		message.setCreateTime(new Date());
+		message.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+		baseMapper.insert(message);
 	}
 
 	@Override
-	public void pushByUserRole(String role, String Message, Integer MessageType) {
+	@Transactional
+	public void pushByUserRole(String roleAlias, String Message, Integer MessageType)
+	{
+		//查询角色别名对应的角色id
+		R<Long> roleByAlias = sysClient.getRoleByAlias(roleAlias);
+		if(!roleByAlias.isSuccess())
+		{
+			throw new SecurityException("查询角色信息错误");
+		}
+		//角色id
+		Long roleId = roleByAlias.getData();
+        //查询此角色下全部用户
+		R<List<User>> listR = userClient.listUserByRoleId(roleId);
+		if(!listR.isSuccess())
+		{
+			throw new SecurityException("查询用户列表信息错误");
+		}
+		//查询符合条件的全部用户
+		List<Long> userIds = listR.getData().stream().map(User::getId).collect(Collectors.toList());
+		if(!CollectionUtils.isNotEmpty(userIds))
+		{
+			throw new SecurityException("查询用户id集合信息错误");
+		}
+		//开始推送相关人员
+		userIds.forEach(e->{
+			Message message=new Message();
+			message.setUserId(AuthUtil.getUserId());
+			message.setUserName(AuthUtil.getUserName());
+			message.setToUserId(e);
+			message.setMessageType(MessageType);
+			message.setMessageBody(Message);
+			message.setIsRead(0);
+			message.setTenantId(AuthUtil.getTenantId());
+			message.setCreateUser(AuthUtil.getUserId());
+			message.setCreateTime(new Date());
+			message.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+			baseMapper.insert(message);
+		});
+
+
 
 	}
 

+ 35 - 0
blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@@ -16,7 +16,9 @@
  */
 package org.springblade.system.feign;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.system.entity.*;
@@ -53,6 +55,39 @@ public class SysClient implements ISysClient {
 	private final IRegionService regionService;
 
 	@Override
+	@GetMapping(LIST_ROLE_ALIAS)
+	public R<List<Role>> listRoleAlias()
+	{
+		LambdaQueryWrapper<Role> roleLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		roleLambdaQueryWrapper
+			.eq(Role::getIsDeleted,0)
+			.eq(Role::getTenantId, AuthUtil.getTenantId());
+		List<Role> roleList = roleService.list(roleLambdaQueryWrapper);
+		return R.data(roleList);
+	}
+
+	@Override
+	@GetMapping(GET_ROLE_ID_BY_ALIAS)
+	public R<Long> getRoleByAlias(String alias)
+	{
+		try {
+			LambdaQueryWrapper<Role> roleLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			roleLambdaQueryWrapper
+				.eq(Role::getRoleAlias,alias)
+				.eq(Role::getIsDeleted,0)
+				.eq(Role::getTenantId,AuthUtil.getTenantId());
+			Role role = roleService.getOne(roleLambdaQueryWrapper);
+			if(role == null)
+			{
+				throw new SecurityException("暂未查到符合的角色");
+			}
+			return  R.data(role.getId());
+		} catch (Exception e) {
+			throw new SecurityException("查询角色错误:"+e.getMessage());
+		}
+	}
+
+	@Override
 	@GetMapping(MENU)
 	public R<Menu> getMenu(Long id) {
 		return R.data(menuService.getById(id));

+ 12 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@@ -19,6 +19,7 @@ package org.springblade.system.user.feign;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -49,6 +50,17 @@ public class UserClient implements IUserClient {
 	private final IUserService service;
 
 	@Override
+	@GetMapping(LIST_USER_BY_ROLE_ID)
+	public R<List<User>> listUserByRoleId(Long roleId) {
+		LambdaQueryWrapper<User> userLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		userLambdaQueryWrapper
+			.eq(User::getIsDeleted,0)
+			.eq(User::getRoleId,roleId)
+			.eq(User::getTenantId, AuthUtil.getTenantId());
+		return R.data(service.list(userLambdaQueryWrapper));
+	}
+
+	@Override
 	@GetMapping(USER_INFO_BY_NAME)
 	public List<User> userInfoByName(String userName,String tenantId)
 	{