新建租户自动创建租户顶级部门,更新租户自动更新顶级部门名称,登录页根据后缀tenantCode值自动获取登录租户

This commit is contained in:
Vinjor 2024-08-01 18:02:07 +08:00
parent db38ccc609
commit 62d5cdff1c
21 changed files with 296 additions and 76 deletions

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.converter;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.util.Date;
/**
* excel导出格式化日期
* @author vinjor-M
* @date 15:32 2024/8/1
**/
public class DateFormatConverter implements Converter<Date> {
@Override
public Class<?> supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public WriteCellData<?> convertToExcelData(
Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception{
return new WriteCellData<>(DateUtil.formatDate(value));
}
}

View File

@ -0,0 +1,96 @@
package cn.iocoder.yudao.module.company.controller.admin;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.company.entity.Company;
import cn.iocoder.yudao.module.company.vo.CompanyRespVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import org.springframework.beans.factory.annotation.Autowired;
import cn.iocoder.yudao.module.company.service.CompanyService;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* 企业信息表每个租户的下属企业信息;(dl_company)表控制层
* @author : http://www.chiner.pro
* @date : 2024-7-31
*/
@RestController
@RequestMapping("/base/company")
@Tag(name = "管理后台 - BASE 企业管理")
@Validated
public class CompanyController {
@Autowired
private CompanyService companyService;
@GetMapping("/page")
@Operation(summary = "获得企业信息表(每个租户的下属企业信息)分页")
@PreAuthorize("@ss.hasPermission('base:company:query')")
public CommonResult<IPage<?>> getCompanyPage(CompanyReqVO pageReqVO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<Company> page = new Page<>(pageNo, pageSize);
return success(companyService.queryListPage(pageReqVO,page));
}
@PostMapping("/create")
@Operation(summary = "创建企业信息表(每个租户的下属企业信息)")
@PreAuthorize("@ss.hasPermission('base:company:create')")
public CommonResult<String> createCompany(@RequestBody Company company) {
companyService.save(company);
return CommonResult.ok();
}
@PutMapping("/update")
@Operation(summary = "更新企业信息表(每个租户的下属企业信息)")
@PreAuthorize("@ss.hasPermission('base:company:update')")
public CommonResult<Boolean> updateCompany(@RequestBody Company company) {
companyService.updateById(company);
return CommonResult.ok();
}
@DeleteMapping("/delete")
@Operation(summary = "删除企业信息表(每个租户的下属企业信息)")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('base:company:delete')")
public CommonResult<Boolean> deleteCompany(@RequestParam("id") String id) {
companyService.removeById(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得企业信息表(每个租户的下属企业信息)")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:company:query')")
public CommonResult<CompanyRespVO> getCompany(@RequestParam("id") String id) {
Company company = companyService.getById(id);
return success(BeanUtils.toBean(company, CompanyRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出企业信息表(每个租户的下属企业信息) Excel")
@PreAuthorize("@ss.hasPermission('base:company:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportCompanyExcel( CompanyReqVO pageReqVO,
HttpServletResponse response) throws IOException {
List<Company> list = companyService.list();
// 导出 Excel
ExcelUtils.write(response, "企业信息表.xls", "数据", Company.class, list);
}
}

View File

@ -1,42 +0,0 @@
package cn.iocoder.yudao.module.company.controller.admin;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import org.springframework.beans.factory.annotation.Autowired;
import cn.iocoder.yudao.module.company.service.DlCompanyService;
/**
* 企业信息表每个租户的下属企业信息;(dl_company)表控制层
* @author : http://www.chiner.pro
* @date : 2024-7-31
*/
@RestController
@RequestMapping("/base/company")
@Tag(name = "管理后台 - BASE 企业管理")
@Validated
public class DlCompanyController{
@Autowired
private DlCompanyService dlCompanyService;
@GetMapping("/page")
@Operation(summary = "获得企业信息表(每个租户的下属企业信息)分页")
@PreAuthorize("@ss.hasPermission('base:company:query')")
public CommonResult<IPage<?>> getCompanyPage(CompanyReqVO pageReqVO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<DlCompany> page = new Page<>(pageNo, pageSize);
return success(dlCompanyService.queryListPage(pageReqVO,page));
}
}

View File

@ -1,10 +1,16 @@
package cn.iocoder.yudao.module.company.entity;
import cn.iocoder.yudao.converter.DateFormatConverter;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -13,34 +19,48 @@ import java.util.Date;
* @author : http://www.chiner.pro
* @date : 2024-7-31
*/
@TableName("dl_company")
@TableName("base_company")
@Data
@EqualsAndHashCode(callSuper = true)
public class DlCompany extends TenantBaseDO {
@ExcelIgnoreUnannotated
public class Company extends TenantBaseDO {
/** 主键标识 */
@TableId
@TableId(type = IdType.ASSIGN_ID)
private String id ;
/** 企业名称 */
@ExcelProperty("企业名称")
private String corpName ;
/** 统一社会信用代码 */
@ExcelProperty("统一社会信用代码")
private String orgCard ;
/** 注册资本(单位:万元) */
@ExcelProperty("注册资本(单位:万元)")
private Integer registFund ;
/** 注册日期 */
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ExcelProperty(value = "注册日期",converter = DateFormatConverter.class)
private Date registDate ;
/** 详细地址 */
@ExcelProperty("详细地址")
private String address ;
/** 法人姓名 */
@ExcelProperty("法人姓名")
private String legalName ;
/** 法人身份证号 */
@ExcelProperty("法人身份证号")
private String legalCard ;
/** 联系人 */
@ExcelProperty("联系人")
private String contactName ;
/** 联系方式 */
@ExcelProperty("联系方式")
private String mobilePhone ;
/** 企业简介 */
@ExcelProperty("企业简介")
private String corpContent ;
/** 经营范围 */
@ExcelProperty("经营范围")
private String business ;
/** 管理员登录账号 */
private String loginAccount ;

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.company.mapper;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import cn.iocoder.yudao.module.company.entity.Company;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -14,6 +14,6 @@ import org.apache.ibatis.annotations.Param;
* @date : 2024-7-31
*/
@Mapper
public interface DlCompanyMapper extends BaseMapper<DlCompany>{
IPage<DlCompany> selectListPage(@Param("map") CompanyReqVO companyReqVO, Page<DlCompany> page);
public interface CompanyMapper extends BaseMapper<Company>{
IPage<Company> selectListPage(@Param("map") CompanyReqVO companyReqVO, Page<Company> page);
}

View File

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.company.service;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import cn.iocoder.yudao.module.company.entity.Company;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -11,12 +11,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @author : http://www.chiner.pro
* @date : 2024-7-31
*/
public interface DlCompanyService extends IService<DlCompany> {
public interface CompanyService extends IService<Company> {
/**
* 获得企业信息表每个租户的下属企业信息分页
*
* @param pageReqVO 分页查询
* @return 企业信息表每个租户的下属企业信息分页
*/
IPage<DlCompany> queryListPage(CompanyReqVO pageReqVO, Page<DlCompany> page);
IPage<Company> queryListPage(CompanyReqVO pageReqVO, Page<Company> page);
}

View File

@ -1,23 +1,24 @@
package cn.iocoder.yudao.module.company.service.impl;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import cn.iocoder.yudao.module.company.entity.Company;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.iocoder.yudao.module.company.mapper.DlCompanyMapper;
import cn.iocoder.yudao.module.company.service.DlCompanyService;
/**
import cn.iocoder.yudao.module.company.mapper.CompanyMapper;
import cn.iocoder.yudao.module.company.service.CompanyService;
/**
* 企业信息表每个租户的下属企业信息;(dl_company)表服务实现类
* @author : http://www.chiner.pro
* @date : 2024-7-31
*/
@Service
public class DlCompanyServiceImpl extends ServiceImpl<DlCompanyMapper, DlCompany> implements DlCompanyService{
public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements CompanyService {
@Autowired
private DlCompanyMapper dlCompanyMapper;
private CompanyMapper companyMapper;
/**
@ -28,8 +29,7 @@ public class DlCompanyServiceImpl extends ServiceImpl<DlCompanyMapper, DlCompany
* @return 企业信息表每个租户的下属企业信息分页
*/
@Override
public IPage<DlCompany> queryListPage(CompanyReqVO pageReqVO, Page<DlCompany> page) {
IPage<DlCompany> pageList = dlCompanyMapper.selectListPage(pageReqVO,page);
return pageList;
public IPage<Company> queryListPage(CompanyReqVO pageReqVO, Page<Company> page) {
return companyMapper.selectListPage(pageReqVO,page);
}
}

View File

@ -1,12 +1,20 @@
package cn.iocoder.yudao.module.company.vo;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import java.util.Date;
import cn.iocoder.yudao.module.company.entity.Company;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 企业查询vo
* @author vinjor-M
* @date 17:37 2024/7/31
**/
@Data
public class CompanyReqVO extends DlCompany {
public class CompanyReqVO extends Company {
@Schema(description = "注册日期查询范围")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date[] registDateArray;
}

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.company.vo;
import cn.iocoder.yudao.module.company.entity.Company;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 企业返回结果vo
* @author vinjor-M
* @date 17:37 2024/7/31
**/
@Data
public class CompanyRespVO extends Company {
}

View File

@ -6,8 +6,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import cn.iocoder.yudao.module.company.service.DlCompanyService;
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import cn.iocoder.yudao.module.custom.service.CustomerMainService;

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.custom.service;
import cn.iocoder.yudao.module.company.entity.DlCompany;
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@ -0,0 +1,34 @@
<?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="cn.iocoder.yudao.module.company.mapper.CompanyMapper">
<select id="selectListPage" resultType="cn.iocoder.yudao.module.company.entity.Company">
SELECT
bc.*
FROM
base_company bc
WHERE deleted = '0'
<if test="map.registDateArray.length>0">
AND (bc.regist_date BETWEEN #{map.registDateArray[0]} AND #{map.registDateArray[1]})
</if>
<if test="map.corpName!='' and map.corpName!=null">
AND (bc.corp_name LIKE CONCAT('%',#{map.corpName},'%'))
</if>
<if test="map.orgCard!='' and map.orgCard!=null">
AND (bc.org_card LIKE CONCAT('%',#{map.orgCard},'%'))
</if>
<if test="map.legalName!='' and map.legalName!=null">
AND (bc.legal_name LIKE CONCAT('%',#{map.legalName},'%'))
</if>
<if test="map.legalCard!='' and map.legalCard!=null">
AND (bc.legal_card LIKE CONCAT('%',#{map.legalCard},'%'))
</if>
<if test="map.contactName!='' and map.contactName!=null">
AND (bc.contact_name LIKE CONCAT('%',#{map.contactName},'%'))
</if>
<if test="map.mobilePhone!='' and map.mobilePhone!=null">
AND (bc.mobile_phone LIKE CONCAT('%',#{map.mobilePhone},'%'))
</if>
ORDER BY bc.create_time DESC
</select>
</mapper>

View File

@ -1,8 +0,0 @@
<?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="cn.iocoder.yudao.module.company.mapper.DlCompanyMapper">
<select id="selectListPage" resultType="cn.iocoder.yudao.module.company.entity.DlCompany">
select * from base_company
</select>
</mapper>

View File

@ -68,6 +68,13 @@ public class CommonResult<T> implements Serializable {
return result;
}
public static <T> CommonResult<T> ok() {
CommonResult<T> result = new CommonResult<>();
result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
result.msg = "操作成功";
return result;
}
public static boolean isSuccess(Integer code) {
return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode());
}

View File

@ -3,10 +3,12 @@ package cn.iocoder.yudao.framework.mybatis.core.dataobject;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fhs.core.trans.vo.TransPojo;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
@ -27,11 +29,15 @@ public abstract class BaseDO implements Serializable, TransPojo {
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 最后更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 创建者目前使用 SysUser id 编号

View File

@ -49,9 +49,9 @@ public class TenantController {
@PermitAll
@Operation(summary = "使用域名,获得租户信息", description = "登录界面,根据用户的域名,获得租户信息")
@Parameter(name = "website", description = "域名", required = true, example = "www.iocoder.cn")
public CommonResult<TenantSimpleRespVO> getTenantByWebsite(@RequestParam("website") String website) {
public CommonResult<Long> getTenantByWebsite(@RequestParam("website") String website) {
TenantDO tenant = tenantService.getTenantByWebsite(website);
return success(BeanUtils.toBean(tenant, TenantSimpleRespVO.class));
return success(tenant != null ? tenant.getId() : null);
}
@PostMapping("/create")

View File

@ -30,4 +30,7 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
return selectList(DeptDO::getParentId, parentIds);
}
default DeptDO selectTenantDeptTop(Long parentId, Long tenantId) {
return selectOne(DeptDO::getParentId, parentId, DeptDO::getTenantId, tenantId);
}
}

View File

@ -99,4 +99,13 @@ public interface DeptService {
*/
void validateDeptList(Collection<Long> ids);
/**
* 根据租户id获取该租户顶级部门
* @author vinjor-M
* @date 17:07 2024/8/1
* @param tenantId 租户id
* @return cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO
**/
DeptDO getTenantDeptTop(Long tenantId);
}

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
@ -215,4 +216,18 @@ public class DeptServiceImpl implements DeptService {
});
}
/**
* 根据租户id获取该租户顶级部门
*
* @param tenantId 租户id
* @return cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO
* @author vinjor-M
* @date 17:07 2024/8/1
**/
@Override
@TenantIgnore
public DeptDO getTenantDeptTop(Long tenantId) {
return deptMapper.selectTenantDeptTop(DeptDO.PARENT_ID_ROOT,tenantId);
}
}

View File

@ -12,10 +12,12 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.tenant.config.TenantProperties;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
@ -23,6 +25,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;
import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantMapper;
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.permission.MenuService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
@ -73,6 +76,8 @@ public class TenantServiceImpl implements TenantService {
private MenuService menuService;
@Resource
private PermissionService permissionService;
@Resource
private DeptService deptService;
@Override
public List<Long> getTenantIdList() {
@ -115,10 +120,22 @@ public class TenantServiceImpl implements TenantService {
Long userId = createUser(roleId, createReqVO);
// 修改租户的管理员
tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(userId));
//创建顶级部门
createDept(userId,createReqVO.getName(),createReqVO.getContactMobile());
});
return tenant.getId();
}
private Long createDept(Long userId,String deptName,String phone){
DeptSaveReqVO deptSaveReqVO = new DeptSaveReqVO();
deptSaveReqVO.setName(deptName);
deptSaveReqVO.setSort(0);
deptSaveReqVO.setPhone(phone);
deptSaveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
deptSaveReqVO.setLeaderUserId(userId);
return deptService.createDept(deptSaveReqVO);
}
private Long createUser(Long roleId, TenantSaveReqVO createReqVO) {
// 创建用户
Long userId = userService.createUser(TenantConvert.INSTANCE.convert02(createReqVO));
@ -157,6 +174,11 @@ public class TenantServiceImpl implements TenantService {
if (ObjectUtil.notEqual(tenant.getPackageId(), updateReqVO.getPackageId())) {
updateTenantRoleMenu(tenant.getId(), tenantPackage.getMenuIds());
}
//更新租户顶级部门名称
DeptDO deptDO = deptService.getTenantDeptTop(updateReqVO.getId());
deptDO.setName(updateReqVO.getName());
DeptSaveReqVO deptSaveReqVO = BeanUtils.toBean(deptDO,DeptSaveReqVO.class);
deptService.updateDept(deptSaveReqVO);
}
private void validTenantNameDuplicate(String name, Long id) {

View File

@ -175,7 +175,7 @@ logging:
cn.iocoder.yudao.module.crm.dal.mysql: debug
cn.iocoder.yudao.module.erp.dal.mysql: debug
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿先禁用Spring Boot 3.X 存在部分错误的 WARN 提示
cn.iocoder.yudao.module.custom.mapper.DlCompanyMapper: debug #
cn.iocoder.yudao.module.company.mapper.DlCompanyMapper: debug #
debug: false