新建租户自动创建租户顶级部门,更新租户自动更新顶级部门名称,登录页根据后缀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;
|
package cn.iocoder.yudao.module.company.entity;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.converter.DateFormatConverter;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
|
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.TableName;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@ -13,34 +19,48 @@ import java.util.Date;
|
|||||||
* @author : http://www.chiner.pro
|
* @author : http://www.chiner.pro
|
||||||
* @date : 2024-7-31
|
* @date : 2024-7-31
|
||||||
*/
|
*/
|
||||||
@TableName("dl_company")
|
@TableName("base_company")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class DlCompany extends TenantBaseDO {
|
@ExcelIgnoreUnannotated
|
||||||
|
public class Company extends TenantBaseDO {
|
||||||
/** 主键标识 */
|
/** 主键标识 */
|
||||||
@TableId
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
private String id ;
|
private String id ;
|
||||||
/** 企业名称 */
|
/** 企业名称 */
|
||||||
|
@ExcelProperty("企业名称")
|
||||||
private String corpName ;
|
private String corpName ;
|
||||||
/** 统一社会信用代码 */
|
/** 统一社会信用代码 */
|
||||||
|
@ExcelProperty("统一社会信用代码")
|
||||||
private String orgCard ;
|
private String orgCard ;
|
||||||
/** 注册资本(单位:万元) */
|
/** 注册资本(单位:万元) */
|
||||||
|
@ExcelProperty("注册资本(单位:万元)")
|
||||||
private Integer registFund ;
|
private Integer registFund ;
|
||||||
/** 注册日期 */
|
/** 注册日期 */
|
||||||
|
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||||
|
@ExcelProperty(value = "注册日期",converter = DateFormatConverter.class)
|
||||||
private Date registDate ;
|
private Date registDate ;
|
||||||
/** 详细地址 */
|
/** 详细地址 */
|
||||||
|
@ExcelProperty("详细地址")
|
||||||
private String address ;
|
private String address ;
|
||||||
/** 法人姓名 */
|
/** 法人姓名 */
|
||||||
|
@ExcelProperty("法人姓名")
|
||||||
private String legalName ;
|
private String legalName ;
|
||||||
/** 法人身份证号 */
|
/** 法人身份证号 */
|
||||||
|
@ExcelProperty("法人身份证号")
|
||||||
private String legalCard ;
|
private String legalCard ;
|
||||||
/** 联系人 */
|
/** 联系人 */
|
||||||
|
@ExcelProperty("联系人")
|
||||||
private String contactName ;
|
private String contactName ;
|
||||||
/** 联系方式 */
|
/** 联系方式 */
|
||||||
|
@ExcelProperty("联系方式")
|
||||||
private String mobilePhone ;
|
private String mobilePhone ;
|
||||||
/** 企业简介 */
|
/** 企业简介 */
|
||||||
|
@ExcelProperty("企业简介")
|
||||||
private String corpContent ;
|
private String corpContent ;
|
||||||
/** 经营范围 */
|
/** 经营范围 */
|
||||||
|
@ExcelProperty("经营范围")
|
||||||
private String business ;
|
private String business ;
|
||||||
/** 管理员登录账号 */
|
/** 管理员登录账号 */
|
||||||
private String loginAccount ;
|
private String loginAccount ;
|
@ -1,6 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.company.mapper;
|
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 cn.iocoder.yudao.module.company.vo.CompanyReqVO;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@ -14,6 +14,6 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
* @date : 2024-7-31
|
* @date : 2024-7-31
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface DlCompanyMapper extends BaseMapper<DlCompany>{
|
public interface CompanyMapper extends BaseMapper<Company>{
|
||||||
IPage<DlCompany> selectListPage(@Param("map") CompanyReqVO companyReqVO, Page<DlCompany> page);
|
IPage<Company> selectListPage(@Param("map") CompanyReqVO companyReqVO, Page<Company> page);
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.company.service;
|
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 cn.iocoder.yudao.module.company.vo.CompanyReqVO;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -11,12 +11,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
* @author : http://www.chiner.pro
|
* @author : http://www.chiner.pro
|
||||||
* @date : 2024-7-31
|
* @date : 2024-7-31
|
||||||
*/
|
*/
|
||||||
public interface DlCompanyService extends IService<DlCompany> {
|
public interface CompanyService extends IService<Company> {
|
||||||
/**
|
/**
|
||||||
* 获得企业信息表(每个租户的下属企业信息)分页
|
* 获得企业信息表(每个租户的下属企业信息)分页
|
||||||
*
|
*
|
||||||
* @param pageReqVO 分页查询
|
* @param pageReqVO 分页查询
|
||||||
* @return 企业信息表(每个租户的下属企业信息)分页
|
* @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;
|
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
|
import cn.iocoder.yudao.module.company.vo.CompanyReqVO;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import cn.iocoder.yudao.module.company.mapper.DlCompanyMapper;
|
import cn.iocoder.yudao.module.company.mapper.CompanyMapper;
|
||||||
import cn.iocoder.yudao.module.company.service.DlCompanyService;
|
import cn.iocoder.yudao.module.company.service.CompanyService;
|
||||||
/**
|
|
||||||
|
/**
|
||||||
* 企业信息表(每个租户的下属企业信息);(dl_company)表服务实现类
|
* 企业信息表(每个租户的下属企业信息);(dl_company)表服务实现类
|
||||||
* @author : http://www.chiner.pro
|
* @author : http://www.chiner.pro
|
||||||
* @date : 2024-7-31
|
* @date : 2024-7-31
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class DlCompanyServiceImpl extends ServiceImpl<DlCompanyMapper, DlCompany> implements DlCompanyService{
|
public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements CompanyService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private DlCompanyMapper dlCompanyMapper;
|
private CompanyMapper companyMapper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,8 +29,7 @@ public class DlCompanyServiceImpl extends ServiceImpl<DlCompanyMapper, DlCompany
|
|||||||
* @return 企业信息表(每个租户的下属企业信息)分页
|
* @return 企业信息表(每个租户的下属企业信息)分页
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public IPage<DlCompany> queryListPage(CompanyReqVO pageReqVO, Page<DlCompany> page) {
|
public IPage<Company> queryListPage(CompanyReqVO pageReqVO, Page<Company> page) {
|
||||||
IPage<DlCompany> pageList = dlCompanyMapper.selectListPage(pageReqVO,page);
|
return companyMapper.selectListPage(pageReqVO,page);
|
||||||
return pageList;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +1,20 @@
|
|||||||
package cn.iocoder.yudao.module.company.vo;
|
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 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
|
* 企业查询vo
|
||||||
* @author vinjor-M
|
* @author vinjor-M
|
||||||
* @date 17:37 2024/7/31
|
* @date 17:37 2024/7/31
|
||||||
**/
|
**/
|
||||||
@Data
|
@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.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
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.company.vo.CompanyReqVO;
|
||||||
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
|
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
|
||||||
import cn.iocoder.yudao.module.custom.service.CustomerMainService;
|
import cn.iocoder.yudao.module.custom.service.CustomerMainService;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package cn.iocoder.yudao.module.custom.service;
|
package cn.iocoder.yudao.module.custom.service;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.company.entity.DlCompany;
|
|
||||||
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
|
import cn.iocoder.yudao.module.custom.entity.CustomerMain;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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;
|
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) {
|
public static boolean isSuccess(Integer code) {
|
||||||
return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode());
|
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.FieldFill;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fhs.core.trans.vo.TransPojo;
|
import com.fhs.core.trans.vo.TransPojo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.ibatis.type.JdbcType;
|
import org.apache.ibatis.type.JdbcType;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@ -27,11 +29,15 @@ public abstract class BaseDO implements Serializable, TransPojo {
|
|||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@TableField(fill = FieldFill.INSERT)
|
@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;
|
private LocalDateTime createTime;
|
||||||
/**
|
/**
|
||||||
* 最后更新时间
|
* 最后更新时间
|
||||||
*/
|
*/
|
||||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
@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;
|
private LocalDateTime updateTime;
|
||||||
/**
|
/**
|
||||||
* 创建者,目前使用 SysUser 的 id 编号
|
* 创建者,目前使用 SysUser 的 id 编号
|
||||||
|
@ -49,9 +49,9 @@ public class TenantController {
|
|||||||
@PermitAll
|
@PermitAll
|
||||||
@Operation(summary = "使用域名,获得租户信息", description = "登录界面,根据用户的域名,获得租户信息")
|
@Operation(summary = "使用域名,获得租户信息", description = "登录界面,根据用户的域名,获得租户信息")
|
||||||
@Parameter(name = "website", description = "域名", required = true, example = "www.iocoder.cn")
|
@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);
|
TenantDO tenant = tenantService.getTenantByWebsite(website);
|
||||||
return success(BeanUtils.toBean(tenant, TenantSimpleRespVO.class));
|
return success(tenant != null ? tenant.getId() : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
|
@ -30,4 +30,7 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
|
|||||||
return selectList(DeptDO::getParentId, parentIds);
|
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);
|
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.enums.CommonStatusEnum;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
|
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.DeptListReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
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.config.TenantProperties;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
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.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.TenantPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
|
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.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.MenuDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
|
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.dal.mysql.tenant.TenantMapper;
|
||||||
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
|
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
|
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.MenuService;
|
||||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||||
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
||||||
@ -73,6 +76,8 @@ public class TenantServiceImpl implements TenantService {
|
|||||||
private MenuService menuService;
|
private MenuService menuService;
|
||||||
@Resource
|
@Resource
|
||||||
private PermissionService permissionService;
|
private PermissionService permissionService;
|
||||||
|
@Resource
|
||||||
|
private DeptService deptService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Long> getTenantIdList() {
|
public List<Long> getTenantIdList() {
|
||||||
@ -115,10 +120,22 @@ public class TenantServiceImpl implements TenantService {
|
|||||||
Long userId = createUser(roleId, createReqVO);
|
Long userId = createUser(roleId, createReqVO);
|
||||||
// 修改租户的管理员
|
// 修改租户的管理员
|
||||||
tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(userId));
|
tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(userId));
|
||||||
|
//创建顶级部门
|
||||||
|
createDept(userId,createReqVO.getName(),createReqVO.getContactMobile());
|
||||||
});
|
});
|
||||||
return tenant.getId();
|
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) {
|
private Long createUser(Long roleId, TenantSaveReqVO createReqVO) {
|
||||||
// 创建用户
|
// 创建用户
|
||||||
Long userId = userService.createUser(TenantConvert.INSTANCE.convert02(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())) {
|
if (ObjectUtil.notEqual(tenant.getPackageId(), updateReqVO.getPackageId())) {
|
||||||
updateTenantRoleMenu(tenant.getId(), tenantPackage.getMenuIds());
|
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) {
|
private void validTenantNameDuplicate(String name, Long id) {
|
||||||
|
@ -175,7 +175,7 @@ logging:
|
|||||||
cn.iocoder.yudao.module.crm.dal.mysql: debug
|
cn.iocoder.yudao.module.crm.dal.mysql: debug
|
||||||
cn.iocoder.yudao.module.erp.dal.mysql: debug
|
cn.iocoder.yudao.module.erp.dal.mysql: debug
|
||||||
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
|
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
|
debug: false
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user