新建租户自动创建租户顶级部门,更新租户自动更新顶级部门名称,登录页根据后缀tenantCode值自动获取登录租户
This commit is contained in:
parent
db38ccc609
commit
62d5cdff1c
@ -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));
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
@ -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 ;
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
@ -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 {
|
||||
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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>
|
@ -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>
|
@ -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());
|
||||
}
|
||||
|
@ -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 编号
|
||||
|
@ -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")
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user