diff --git a/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java b/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java index 6fd143f3e5b7cac2e460ed8220e5a5d1d00b63b0..4cb28247ae5fac412a593988bedcdbf995ac2ad8 100644 --- a/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java +++ b/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java @@ -16,7 +16,9 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; import java.util.Objects; @@ -84,4 +86,10 @@ public class TenantController { public Result> listMenu(@RequestParam Long tenantId) { return Result.success(tenantService.listMenu(tenantId)); } + + @GetMapping("/list_export") + @ApiOperation(value = "租户导出", produces = "application/octet-stream") + public void listExport(HttpServletResponse response) throws IOException { + tenantService.listExport(response); + } } diff --git a/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java b/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java index 8c5943fa4332d86d078f6a1baa09368a669545e6..43eb63f9b9bc0002bd3272245660a3aca0e28662 100644 --- a/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java +++ b/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java @@ -2,6 +2,8 @@ package com.guzi.sherly.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.core.metadata.IPage; import com.guzi.sherly.constants.SqlParam; import com.guzi.sherly.constants.SqlStatement; @@ -12,6 +14,7 @@ import com.guzi.sherly.model.dto.TenantInsertDTO; import com.guzi.sherly.model.dto.TenantMenuUpdateDTO; import com.guzi.sherly.model.dto.TenantPageDTO; import com.guzi.sherly.model.dto.TenantUpdateDTO; +import com.guzi.sherly.model.eo.TenantEO; import com.guzi.sherly.model.exception.BizException; import com.guzi.sherly.model.vo.TenantPageVO; import com.guzi.sherly.modules.security.util.SecurityUtil; @@ -23,6 +26,9 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -230,4 +236,29 @@ public class TenantService { return list.stream().map(Menu::getMenuId).collect(Collectors.toList()); } + + /** + * 租户导出 + * @param response + */ + public void listExport(HttpServletResponse response) throws IOException { + List list = tenantManager.list(); + + List result = list.stream().map(e -> { + TenantEO tenantEO = new TenantEO(); + BeanUtils.copyProperties(e, tenantEO); + return tenantEO; + }).collect(Collectors.toList()); + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("租户列表", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + EasyExcel.write(response.getOutputStream(), TenantEO.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("租户列表") + .doWrite(result); + } + } diff --git a/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java b/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java new file mode 100644 index 0000000000000000000000000000000000000000..addc66b86a3f1a2cd97a07d495c9d4c8e7977e55 --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java @@ -0,0 +1,42 @@ +package com.guzi.sherly.model.eo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author 李仁杰 + * @date 2022/9/2 + */ +@Data +public class TenantEO { + + /** 租户code */ + @ExcelProperty("租户code") + private String tenantCode; + + /** 租户名称 */ + @ExcelProperty("租户名称") + private String tenantName; + + /** 联系人 */ + @ExcelProperty("联系人") + private String contactUser; + + /** 联系电话 */ + @ExcelProperty("联系电话") + private String contactPhone; + + /** 过期时间 */ + @ExcelProperty("过期时间") + private Date expireTime; + + /** 用户上限 */ + @ExcelProperty("用户上限") + private Long userLimit; + + /** 创建时间 */ + @ExcelProperty("创建时间") + private Date createTime; +}