yonge 3 years ago
parent
commit
67a024df3a

+ 0 - 11
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysRole.java

@@ -40,9 +40,6 @@ public class SysRole extends BaseEntity {
 
 	private Integer organId;
 
-	@ApiModelProperty(value = "机构id")
-	private Integer tenantId;
-
 	@ApiModelProperty(value = "菜单列表",required = false)
 	private List<Integer> menuIds;
 
@@ -118,14 +115,6 @@ public class SysRole extends BaseEntity {
 		this.organId = organId;
 	}
 
-    public Integer getTenantId() {
-        return tenantId;
-    }
-
-    public void setTenantId(Integer tenantId) {
-        this.tenantId = tenantId;
-    }
-
     @Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 125 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/TenantInfo.java

@@ -0,0 +1,125 @@
+package com.ym.mec.auth.api.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(tenant_info):
+ */
+public class TenantInfo {
+
+	/**  */
+	private Integer id;
+	
+	/** 机构名称 */
+	private String name;
+	
+	/** 机构地址 */
+	private String address;
+	
+	/** 域名 */
+	private String domainName;
+	
+	/** logo链接 */
+	private String logoUrl;
+	
+	/** 联系人 */
+	private String contactName;
+	
+	/** 联系电话 */
+	private String contactPhone;
+	
+	/** 数据源 */
+	private String dataSource;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setAddress(String address){
+		this.address = address;
+	}
+	
+	public String getAddress(){
+		return this.address;
+	}
+			
+	public void setDomainName(String domainName){
+		this.domainName = domainName;
+	}
+	
+	public String getDomainName(){
+		return this.domainName;
+	}
+			
+	public void setLogoUrl(String logoUrl){
+		this.logoUrl = logoUrl;
+	}
+	
+	public String getLogoUrl(){
+		return this.logoUrl;
+	}
+			
+	public void setContactName(String contactName){
+		this.contactName = contactName;
+	}
+	
+	public String getContactName(){
+		return this.contactName;
+	}
+			
+	public void setContactPhone(String contactPhone){
+		this.contactPhone = contactPhone;
+	}
+	
+	public String getContactPhone(){
+		return this.contactPhone;
+	}
+			
+	public void setDataSource(String dataSource){
+		this.dataSource = dataSource;
+	}
+	
+	public String getDataSource(){
+		return this.dataSource;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 5 - 0
mec-auth/mec-auth-server/pom.xml

@@ -79,6 +79,11 @@
 			<groupId>com.yonge.log</groupId>
 			<artifactId>audit-log</artifactId>
 		</dependency>
+		
+		<dependency>
+			<groupId>com.yonge.datasource</groupId>
+			<artifactId>dynamic-datasource</artifactId>
+		</dependency>
 
 		<dependency>
 			<groupId>org.apache.commons</groupId>

+ 5 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/WebMvcConfig.java

@@ -13,6 +13,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 import com.ym.mec.auth.interceptor.OperationLogInterceptor;
+import com.ym.mec.auth.interceptor.TenantInterceptor;
 import com.ym.mec.common.config.EnumConverterFactory;
 import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
 
@@ -21,6 +22,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
 	
 	@Autowired
 	private OperationLogInterceptor operationLogInterceptor;
+	
+	@Autowired
+	private TenantInterceptor tenantInterceptor;
 
 	/**
 	 * 枚举类的转换器 addConverterFactory
@@ -32,6 +36,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 	
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(tenantInterceptor).addPathPatterns("/**");
 		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/userDevice/unbind").excludePathPatterns("/*");
 	}
 	

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysRoleMenuDao.java

@@ -40,5 +40,5 @@ public interface SysRoleMenuDao extends BaseDAO<Integer, SysRoleMenu> {
 	 * @param roleId
 	 * @param menuIds
 	 */
-    void batchAdd(@Param("roleId") Integer roleId,@Param("menuIds")  List<Integer> menuIds);
+    void batchAdd(@Param("roleId") Integer roleId,@Param("menuIds")  List<Integer> menuIds, @Param("tenantId") Integer tenantId);
 }

+ 9 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/TenantInfoDao.java

@@ -0,0 +1,9 @@
+package com.ym.mec.auth.dal.dao;
+
+import com.ym.mec.auth.api.entity.TenantInfo;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface TenantInfoDao extends BaseDAO<Integer, TenantInfo> {
+
+	
+}

+ 54 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/interceptor/TenantInterceptor.java

@@ -0,0 +1,54 @@
+package com.ym.mec.auth.interceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.entity.TenantInfo;
+import com.ym.mec.auth.service.TenantInfoService;
+import com.ym.mec.common.tenant.TenantContextHolder;
+
+@Component
+public class TenantInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String DATA_SOURCE_ID = "datasourceId";
+
+	@Autowired
+	@Lazy
+	private SysUserFeignService sysUserFeignService;
+	
+	@Autowired
+	private TenantInfoService tenantInfoService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
+		String tenantId = request.getHeader("tenantId");
+		if(StringUtils.isEmpty(tenantId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser != null && sysUser.getTenantId() != null){
+				tenantId = sysUser.getTenantId().toString();
+			}
+		}
+		if(StringUtils.isNotEmpty(tenantId)){
+			TenantContextHolder.setTenantId(Integer.parseInt(tenantId));
+			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
+			if(tenantInfo != null){
+				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		TenantContextHolder.clearTenantId();
+	}
+
+}

+ 8 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/TenantInfoService.java

@@ -0,0 +1,8 @@
+package com.ym.mec.auth.service;
+
+import com.ym.mec.auth.api.entity.TenantInfo;
+import com.ym.mec.common.service.BaseService;
+
+public interface TenantInfoService extends BaseService<Integer, TenantInfo> {
+
+}

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysRoleServiceImpl.java

@@ -79,7 +79,7 @@ public class SysRoleServiceImpl extends BaseServiceImpl<Integer, SysRole>  imple
 		List<Integer> menuIds = sysRole.getMenuIds();
 		if(menuIds != null && menuIds.size() > 0){
 //			SysRoleMenu sysRoleMenu = new SysRoleMenu(sysRole.getId(),null);
-			sysRoleMenuDao.batchAdd(sysRole.getId(),menuIds);
+			sysRoleMenuDao.batchAdd(sysRole.getId(),menuIds, sysRole.getTenantId());
 //			menuIds.forEach(e->{
 //				sysRoleMenu.setMenuId(e);
 //				sysRoleMenuDao.insert(sysRoleMenu);

+ 23 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/TenantInfoServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.auth.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.auth.api.entity.TenantInfo;
+import com.ym.mec.auth.dal.dao.TenantInfoDao;
+import com.ym.mec.auth.service.TenantInfoService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class TenantInfoServiceImpl extends BaseServiceImpl<Integer, TenantInfo>  implements TenantInfoService {
+	
+	@Autowired
+	private TenantInfoDao tenantInfoDao;
+
+	@Override
+	public BaseDAO<Integer, TenantInfo> getDAO() {
+		return tenantInfoDao;
+	}
+	
+}

+ 7 - 6
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysRoleMenuMapper.xml

@@ -9,6 +9,7 @@
 	<resultMap type="com.ym.mec.auth.api.entity.SysRoleMenu" id="SysRoleMenu">
 		<result column="role_id_" property="roleId" />
 		<result column="menu_id_" property="menuId" />
+		<result column="tenant_id_" property="tenantId" />
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -18,7 +19,7 @@
 	
 	<!-- 全查询 -->
 	<select id="findAll" resultMap="SysRoleMenu">
-		SELECT * FROM sys_role_menu ORDER BY role_id_,menu_id_
+		SELECT * FROM sys_role_menu where tenant_id_ = #{tenantId} ORDER BY role_id_,menu_id_
 	</select>
 	
 	<!-- 向数据库增加一条记录 -->
@@ -28,12 +29,12 @@
 		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
 		</selectKey>
 		-->
-		INSERT INTO sys_role_menu (role_id_,menu_id_) VALUES(#{roleId},#{menuId})
+		INSERT INTO sys_role_menu (role_id_,menu_id_,tenant_id_) VALUES(#{roleId},#{menuId},#{tenantId})
 	</insert>
     <insert id="batchAdd">
-		INSERT INTO sys_role_menu (role_id_,menu_id_) VALUES
+		INSERT INTO sys_role_menu (role_id_,menu_id_,tenant_id_) VALUES
 		<foreach collection="menuIds" item="item" index="index" separator=",">
-			(#{roleId},#{item})
+			(#{roleId},#{item},#{tenantId})
 		</foreach>
 	</insert>
 
@@ -47,12 +48,12 @@
 
     <!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysRoleMenu" parameterType="map">
-		SELECT * FROM sys_role_menu ORDER BY role_id_,menu_id_ <include refid="global.limit"/>
+		SELECT * FROM sys_role_menu where tenant_id_ = #{tenantId} ORDER BY role_id_,menu_id_ <include refid="global.limit"/>
 	</select>
 	
 	<!-- 查询当前表的总记录数 -->
 	<select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM sys_role_menu
+		SELECT COUNT(*) FROM sys_role_menu where tenant_id_ = #{tenantId}
 	</select>
 	
 	<select id="queryPermissionsByRoleId" resultType="string" parameterType="int">

+ 94 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/TenantInfoMapper.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!-- 这个文件是自动生成的。 不要修改此文件。所有改动将在下次重新自动生成时丢失。 -->
+<mapper namespace="com.ym.mec.auth.dal.dao.TenantInfoDao">
+
+	<resultMap type="com.ym.mec.auth.api.entity.TenantInfo" id="TenantInfo">
+		<result column="id_" property="id" />
+		<result column="name_" property="name" />
+		<result column="address_" property="address" />
+		<result column="domain_name_" property="domainName" />
+		<result column="logo_url_" property="logoUrl" />
+		<result column="contact_name_" property="contactName" />
+		<result column="contact_phone_" property="contactPhone" />
+		<result column="data_source_" property="dataSource" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="TenantInfo">
+		SELECT * FROM
+		tenant_info WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="TenantInfo">
+		SELECT * FROM tenant_info ORDER
+		BY id_
+	</select>
+
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.auth.api.entity.TenantInfo"
+		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
+			AS ID FROM DUAL </selectKey> -->
+		INSERT INTO tenant_info
+		(id_,name_,address_,domain_name_,logo_url_,contact_name_,contact_phone_,data_source_,create_time_,update_time_)
+		VALUES(#{id},#{name},#{address},#{domainName},#{logoUrl},#{contactName},#{contactPhone},#{dataSource},#{createTime},#{updateTime})
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.auth.api.entity.TenantInfo">
+		UPDATE tenant_info
+		<set>
+			<if test="address != null">
+				address_ = #{address},
+			</if>
+			<if test="dataSource != null">
+				data_source_ = #{dataSource},
+			</if>
+			<if test="id != null">
+				id_ = #{id},
+			</if>
+			<if test="updateTime != null">
+				update_time_ = #{updateTime},
+			</if>
+			<if test="logoUrl != null">
+				logo_url_ = #{logoUrl},
+			</if>
+			<if test="contactPhone != null">
+				contact_phone_ = #{contactPhone},
+			</if>
+			<if test="domainName != null">
+				domain_name_ = #{domainName},
+			</if>
+			<if test="contactName != null">
+				contact_name_ = #{contactName},
+			</if>
+			<if test="name != null">
+				name_ = #{name},
+			</if>
+			<if test="createTime != null">
+				create_time_ = #{createTime},
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM tenant_info WHERE id_ = #{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="TenantInfo" parameterType="map">
+		SELECT * FROM tenant_info ORDER BY id_
+		<include refid="global.limit" />
+	</select>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM tenant_info
+	</select>
+</mapper>