소스 검색

feat: 完成多租户功能

多租户查询时,使用aop处理;新增,修改使用Hibernate
Filter处理。
主要逻辑:如果是超级管理员,租户id为000000,由超级管理员新增租户信息。当传过来的租户id是超级管理员是,不对租户id拦截处理。
非超级管理员,新增,更新,删除都有Hibernate的监听器处理,默认增加前端传过来的租户id。查询的时候,使用aop技术拦截。
详细说明,可以参考:https://blog.csdn.net/yuanyangzimu/article/details/131746893 或者 https://www.cnblogs.com/ch-10/p/17557409.html
tiger 2 년 전
부모
커밋
680a50a85c
19개의 변경된 파일134개의 추가작업 그리고 61개의 파일을 삭제
  1. 2 0
      iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysTenantData.java
  2. 10 6
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysDictData.java
  3. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysDictType.java
  4. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysLogininfor.java
  5. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysNotice.java
  6. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysOssConfig.java
  7. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysPost.java
  8. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysRole.java
  9. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysTenant.java
  10. 10 5
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysUser.java
  11. 10 1
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysTenantDataImpl.java
  12. 1 1
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java
  13. 3 4
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java
  14. 0 1
      iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysTenantBo.java
  15. 2 1
      iot-module/iot-system/src/main/java/cc/iotkit/system/dto/vo/SysTenantVo.java
  16. 5 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysOssConfigServiceImpl.java
  17. 4 1
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysRoleServiceImpl.java
  18. 16 3
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysTenantServiceImpl.java
  19. 1 1
      iot-starter/src/main/resources/application.yml

+ 2 - 0
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/system/ISysTenantData.java

@@ -10,4 +10,6 @@ import cc.iotkit.model.system.SysTenant;
  */
 public interface ISysTenantData  extends ICommonData<SysTenant, Long> {
 
+    void updateTenant(SysTenant tenant);
+
 }

+ 10 - 6
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysDictData.java

@@ -1,17 +1,19 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysDictData;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 字典数据表 sys_dict_data
@@ -24,8 +26,10 @@ import javax.persistence.Table;
 @Table(name = "sys_dict_data")
 @AutoMapper(target = SysDictData.class)
 @ApiModel(value = "字典数据表")
-public class TbSysDictData extends BaseEntity {
-
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysDictData extends BaseEntity implements TenantAware {
 
 
     /**

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysDictType.java

@@ -1,17 +1,19 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysDictType;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 字典类型表 sys_dict_type
@@ -25,7 +27,10 @@ import javax.persistence.Table;
 @Table(name = "sys_dict_type")
 @AutoMapper(target = SysDictType.class)
 @ApiModel(value = "字典类型表")
-public class TbSysDictType extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysDictType extends BaseEntity implements TenantAware {
 
     /**
      * 字典主键

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysLogininfor.java

@@ -1,15 +1,17 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysLoginInfo;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.util.Date;
 
 /**
@@ -22,7 +24,10 @@ import java.util.Date;
 @Entity
 @Table(name = "sys_logininfor")
 @AutoMapper(target = SysLoginInfo.class)
-public class TbSysLogininfor extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysLogininfor extends BaseEntity implements TenantAware {
     /**
      * ID
      */

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysNotice.java

@@ -1,17 +1,19 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysNotice;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 通知公告表 sys_notice
@@ -24,7 +26,10 @@ import javax.persistence.Table;
 @Table(name = "sys_notice")
 @AutoMapper(target = SysNotice.class)
 @ApiModel(value = "通知公告表")
-public class TbSysNotice extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysNotice extends BaseEntity implements TenantAware {
 
     /**
      * 公告ID

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysOssConfig.java

@@ -1,17 +1,19 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysOssConfig;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 对象存储配置对象 sys_oss_config
@@ -24,7 +26,10 @@ import javax.persistence.Table;
 @Table(name = "sys_oss_config")
 @ApiModel(value = "对象存储配置对象")
 @AutoMapper(target = SysOssConfig.class)
-public class TbSysOssConfig extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysOssConfig extends BaseEntity implements TenantAware {
 
     /**
      * 主建

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysPost.java

@@ -1,16 +1,18 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysPost;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 岗位表 sys_post
@@ -23,7 +25,10 @@ import javax.persistence.Table;
 @Entity
 @Table(name = "sys_post")
 @AutoMapper(target = SysPost.class)
-public class TbSysPost extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysPost extends BaseEntity implements TenantAware {
 
     /**
      * 岗位序号

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysRole.java

@@ -1,18 +1,20 @@
 package cc.iotkit.data.model;
 
 import cc.iotkit.common.constant.UserConstants;
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysRole;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 /**
  * 角色表 sys_role
@@ -26,7 +28,10 @@ import javax.persistence.Table;
 @Entity
 @Table(name = "sys_role")
 @AutoMapper(target = SysRole.class)
-public class TbSysRole extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysRole extends BaseEntity implements TenantAware {
 
     /**
      * 角色ID

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysTenant.java

@@ -1,17 +1,19 @@
 package cc.iotkit.data.model;
 
 import cc.iotkit.common.constant.UserConstants;
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysTenant;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.util.Date;
 
 /**
@@ -24,7 +26,10 @@ import java.util.Date;
 @Entity
 @Table(name = "sys_tenant")
 @AutoMapper(target = SysTenant.class)
-public class TbSysTenant extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysTenant extends BaseEntity implements TenantAware {
     private static final long serialVersionUID = 1L;
 
     /**

+ 10 - 5
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysUser.java

@@ -1,18 +1,20 @@
 package cc.iotkit.data.model;
 
 import cc.iotkit.common.constant.UserConstants;
+import cc.iotkit.common.tenant.dao.TenantAware;
+import cc.iotkit.common.tenant.listener.TenantListener;
 import cc.iotkit.model.system.SysUser;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
 import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.ParamDef;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.util.Date;
 
 /**
@@ -27,7 +29,10 @@ import java.util.Date;
 @Entity
 @Table(name = "sys_user")
 @AutoMapper(target = SysUser.class)
-public class TbSysUser extends BaseEntity {
+@FilterDef(name = "tenantFilter", parameters = {@ParamDef(name = "tenantId", type = "string")})
+@Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
+@EntityListeners(TenantListener.class)
+public class TbSysUser extends BaseEntity implements TenantAware {
 
     /**
      * 用户ID

+ 10 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysTenantDataImpl.java

@@ -15,6 +15,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Optional;
 
 import static cc.iotkit.data.model.QTbSysTenant.tbSysTenant;
 
@@ -48,7 +49,8 @@ public class SysTenantDataImpl implements ISysTenantData, IJPACommData<SysTenant
 
     @Override
     public SysTenant findById(Long aLong) {
-        return MapstructUtils.convert(sysTenantRepository.findById(aLong),SysTenant.class);
+        Optional<TbSysTenant> tenantOptional = sysTenantRepository.findById(aLong);
+        return tenantOptional.map(sysTenant -> MapstructUtils.convert(sysTenant, SysTenant.class)).orElse(null);
     }
 
 
@@ -70,4 +72,11 @@ public class SysTenantDataImpl implements ISysTenantData, IJPACommData<SysTenant
                 .build()).fetch();
         return MapstructUtils.convert(ret, SysTenant.class);
     }
+
+    @Override
+    public void updateTenant(SysTenant tenant) {
+        TbSysTenant tbSysTenant = MapstructUtils.convert(tenant, TbSysTenant.class);
+        assert tbSysTenant != null;
+        sysTenantRepository.save(tbSysTenant);
+    }
 }

+ 1 - 1
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/aspect/TenantFilterAspect.java

@@ -25,7 +25,7 @@ public class TenantFilterAspect {
     public void afterOpenSession(Object session) {
         if (session != null && Session.class.isInstance(session)) {
             String tenantId = LoginHelper.getTenantId();
-            if (tenantId != null) {
+            if (tenantId != null && !tenantId.equals("000000")) {
                 org.hibernate.Filter filter = ((Session) session).enableFilter("tenantFilter");
                 filter.setParameter("tenantId", tenantId);
             }

+ 3 - 4
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/listener/TenantListener.java

@@ -5,7 +5,6 @@ import cc.iotkit.common.satoken.utils.LoginHelper;
 import cc.iotkit.common.tenant.dao.TenantAware;
 import lombok.extern.slf4j.Slf4j;
 
-import javax.persistence.PostLoad;
 import javax.persistence.PrePersist;
 import javax.persistence.PreRemove;
 import javax.persistence.PreUpdate;
@@ -23,11 +22,11 @@ public class TenantListener {
     @PreUpdate
     @PreRemove
     @PrePersist
-    @PostLoad
     public void setTenant(TenantAware entity) {
 
         final String tenantId = LoginHelper.getTenantId();
-        log.info("Hibernate 监听器,设置租户ID:{}", tenantId);
-        entity.setTenantId(tenantId);
+        if(!"000000".equals(tenantId)){
+            entity.setTenantId(tenantId);
+        }
     }
 }

+ 0 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/bo/SysTenantBo.java

@@ -26,7 +26,6 @@ public class SysTenantBo extends BaseDto {
     /**
      * id
      */
-    @NotNull(message = "id不能为空", groups = { EditGroup.class })
     private Long id;
 
     /**

+ 2 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/vo/SysTenantVo.java

@@ -2,6 +2,7 @@ package cc.iotkit.system.dto.vo;
 
 import cc.iotkit.common.excel.annotation.ExcelDictFormat;
 import cc.iotkit.common.excel.convert.ExcelDictConvert;
+import cc.iotkit.model.BaseModel;
 import cc.iotkit.model.system.SysTenant;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -20,7 +21,7 @@ import java.util.Date;
 @Data
 @ExcelIgnoreUnannotated
 @AutoMapper(target = SysTenant.class)
-public class SysTenantVo implements Serializable {
+public class SysTenantVo extends BaseModel implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**

+ 5 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysOssConfigServiceImpl.java

@@ -28,6 +28,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 对象存储配置Service业务层处理
@@ -49,7 +50,9 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
     @Override
     public void init() {
         List<SysOssConfig> list = baseData.findAll();
-        Map<String, List<SysOssConfig>> map = StreamUtils.groupByKey(list, SysOssConfig::getTenantId);
+
+        List<SysOssConfig> notEmptyTenantIdList = list.stream().filter(item -> StringUtils.isNotBlank(item.getTenantId())).collect(Collectors.toList());
+        Map<String, List<SysOssConfig>> map = StreamUtils.groupByKey(notEmptyTenantIdList, SysOssConfig::getTenantId);
         try {
 
             for (Map.Entry<String, List<SysOssConfig>> stringListEntry : map.entrySet()) {
@@ -110,7 +113,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
         if (Objects.equals(Boolean.TRUE, isValid) && CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) {
-                throw new BizException("系统内置, 不可删除!");
+            throw new BizException("系统内置, 不可删除!");
         }
         List<SysOssConfig> list = CollUtil.newArrayList();
         for (Long configId : ids) {

+ 4 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysRoleServiceImpl.java

@@ -210,7 +210,10 @@ public class SysRoleServiceImpl implements ISysRoleService {
     @Transactional(rollbackFor = Exception.class)
     public int insertRole(SysRoleBo bo) {
         SysRole role = iSysRoleData.save(bo.to(SysRole.class));
-        return insertRoleMenu(bo);
+        //TODO 后面再晚上插入菜单的,目前不知道逻辑
+        //return insertRoleMenu(bo);
+
+        return 1;
     }
 
     /**

+ 16 - 3
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysTenantServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 租户Service业务层处理
@@ -42,7 +43,8 @@ public class SysTenantServiceImpl implements ISysTenantService {
     @Cacheable(cacheNames = CacheNames.SYS_TENANT, key = "#tenantId")
     @Override
     public SysTenantVo queryByTenantId(String tenantId) {
-        return MapstructUtils.convert(sysTenantData.findById(Long.valueOf(tenantId)),SysTenantVo.class);
+        SysTenant tenant = sysTenantData.findById(Long.valueOf(tenantId));
+        return MapstructUtils.convert(tenant,SysTenantVo.class);
     }
 
     @Override
@@ -57,17 +59,28 @@ public class SysTenantServiceImpl implements ISysTenantService {
 
     @Override
     public Boolean insertByBo(SysTenantBo bo) {
-        SysTenant save = sysTenantData.save(bo.to(SysTenant.class));
+        List<SysTenant> all = sysTenantData.findAll();
+        List<String> tenantIds = all.stream().map(SysTenant::getTenantId).sorted().collect(Collectors.toList());
+        long tenantId = Long.parseLong(tenantIds.get(tenantIds.size() - 1)) + 1;
+        bo.setTenantId(String.format("%06d",tenantId));
+        sysTenantData.save(bo.to(SysTenant.class));
         return true;
     }
 
     @Override
     public Boolean updateByBo(SysTenantBo bo) {
-        return false;
+        SysTenant tenantDataById = sysTenantData.findById(bo.getId());
+        String tenantId = tenantDataById.getTenantId();
+        bo.setTenantId(tenantId);
+        sysTenantData.updateTenant(bo.to(SysTenant.class));
+        return true;
     }
 
     @Override
     public int updateTenantStatus(SysTenantBo bo) {
+        SysTenant tenantDataById = sysTenantData.findById(bo.getId());
+        tenantDataById.setStatus(bo.getStatus());
+        sysTenantData.updateTenant(tenantDataById);
         return 0;
     }
 

+ 1 - 1
iot-starter/src/main/resources/application.yml

@@ -21,6 +21,7 @@ spring:
     init:
       schema-locations: classpath:sql/schema.sql
       mode: ALWAYS
+      platform: h2
   datasource:
     url: jdbc:h2:./data/iotkit;MODE=MySQL
     username: sa
@@ -58,7 +59,6 @@ spring:
           password: 123456
 
   # 内置h2 web console设置
-    platform: h2
   h2:
     console:
       enabled: true