Commit d4cf945af710c67659dd9778aa59c0136f5eb43a

Authored by YunaiV
1 parent 5bb8fdca

🔧 简化 tenant 模块的 VO

Showing 22 changed files with 161 additions and 357 deletions
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantController.java
1 package cn.iocoder.yudao.module.system.controller.admin.tenant; 1 package cn.iocoder.yudao.module.system.controller.admin.tenant;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.*;  
8 -import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; 9 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
  10 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantRespVO;
  11 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
  12 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSimpleRespVO;
9 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 13 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
10 import cn.iocoder.yudao.module.system.service.tenant.TenantService; 14 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
11 -import io.swagger.v3.oas.annotations.tags.Tag;  
12 -import io.swagger.v3.oas.annotations.Parameter;  
13 import io.swagger.v3.oas.annotations.Operation; 15 import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.Parameter;
  17 +import io.swagger.v3.oas.annotations.tags.Tag;
14 import org.springframework.security.access.prepost.PreAuthorize; 18 import org.springframework.security.access.prepost.PreAuthorize;
15 import org.springframework.web.bind.annotation.*; 19 import org.springframework.web.bind.annotation.*;
16 20
@@ -47,20 +51,20 @@ public class TenantController { @@ -47,20 +51,20 @@ public class TenantController {
47 @Parameter(name = "website", description = "域名", required = true, example = "www.iocoder.cn") 51 @Parameter(name = "website", description = "域名", required = true, example = "www.iocoder.cn")
48 public CommonResult<TenantSimpleRespVO> getTenantByWebsite(@RequestParam("website") String website) { 52 public CommonResult<TenantSimpleRespVO> getTenantByWebsite(@RequestParam("website") String website) {
49 TenantDO tenant = tenantService.getTenantByWebsite(website); 53 TenantDO tenant = tenantService.getTenantByWebsite(website);
50 - return success(TenantConvert.INSTANCE.convert03(tenant)); 54 + return success(BeanUtils.toBean(tenant, TenantSimpleRespVO.class));
51 } 55 }
52 56
53 @PostMapping("/create") 57 @PostMapping("/create")
54 @Operation(summary = "创建租户") 58 @Operation(summary = "创建租户")
55 @PreAuthorize("@ss.hasPermission('system:tenant:create')") 59 @PreAuthorize("@ss.hasPermission('system:tenant:create')")
56 - public CommonResult<Long> createTenant(@Valid @RequestBody TenantCreateReqVO createReqVO) { 60 + public CommonResult<Long> createTenant(@Valid @RequestBody TenantSaveReqVO createReqVO) {
57 return success(tenantService.createTenant(createReqVO)); 61 return success(tenantService.createTenant(createReqVO));
58 } 62 }
59 63
60 @PutMapping("/update") 64 @PutMapping("/update")
61 @Operation(summary = "更新租户") 65 @Operation(summary = "更新租户")
62 @PreAuthorize("@ss.hasPermission('system:tenant:update')") 66 @PreAuthorize("@ss.hasPermission('system:tenant:update')")
63 - public CommonResult<Boolean> updateTenant(@Valid @RequestBody TenantUpdateReqVO updateReqVO) { 67 + public CommonResult<Boolean> updateTenant(@Valid @RequestBody TenantSaveReqVO updateReqVO) {
64 tenantService.updateTenant(updateReqVO); 68 tenantService.updateTenant(updateReqVO);
65 return success(true); 69 return success(true);
66 } 70 }
@@ -80,7 +84,7 @@ public class TenantController { @@ -80,7 +84,7 @@ public class TenantController {
80 @PreAuthorize("@ss.hasPermission('system:tenant:query')") 84 @PreAuthorize("@ss.hasPermission('system:tenant:query')")
81 public CommonResult<TenantRespVO> getTenant(@RequestParam("id") Long id) { 85 public CommonResult<TenantRespVO> getTenant(@RequestParam("id") Long id) {
82 TenantDO tenant = tenantService.getTenant(id); 86 TenantDO tenant = tenantService.getTenant(id);
83 - return success(TenantConvert.INSTANCE.convert(tenant)); 87 + return success(BeanUtils.toBean(tenant, TenantRespVO.class));
84 } 88 }
85 89
86 @GetMapping("/page") 90 @GetMapping("/page")
@@ -88,19 +92,20 @@ public class TenantController { @@ -88,19 +92,20 @@ public class TenantController {
88 @PreAuthorize("@ss.hasPermission('system:tenant:query')") 92 @PreAuthorize("@ss.hasPermission('system:tenant:query')")
89 public CommonResult<PageResult<TenantRespVO>> getTenantPage(@Valid TenantPageReqVO pageVO) { 93 public CommonResult<PageResult<TenantRespVO>> getTenantPage(@Valid TenantPageReqVO pageVO) {
90 PageResult<TenantDO> pageResult = tenantService.getTenantPage(pageVO); 94 PageResult<TenantDO> pageResult = tenantService.getTenantPage(pageVO);
91 - return success(TenantConvert.INSTANCE.convertPage(pageResult)); 95 + return success(BeanUtils.toBean(pageResult, TenantRespVO.class));
92 } 96 }
93 97
94 @GetMapping("/export-excel") 98 @GetMapping("/export-excel")
95 @Operation(summary = "导出租户 Excel") 99 @Operation(summary = "导出租户 Excel")
96 @PreAuthorize("@ss.hasPermission('system:tenant:export')") 100 @PreAuthorize("@ss.hasPermission('system:tenant:export')")
97 @OperateLog(type = EXPORT) 101 @OperateLog(type = EXPORT)
98 - public void exportTenantExcel(@Valid TenantExportReqVO exportReqVO, 102 + public void exportTenantExcel(@Valid TenantPageReqVO exportReqVO,
99 HttpServletResponse response) throws IOException { 103 HttpServletResponse response) throws IOException {
100 - List<TenantDO> list = tenantService.getTenantList(exportReqVO); 104 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  105 + List<TenantDO> list = tenantService.getTenantPage(exportReqVO).getList();
101 // 导出 Excel 106 // 导出 Excel
102 - List<TenantExcelVO> datas = TenantConvert.INSTANCE.convertList02(list);  
103 - ExcelUtils.write(response, "租户.xls", "数据", TenantExcelVO.class, datas); 107 + ExcelUtils.write(response, "租户.xls", "数据", TenantRespVO.class,
  108 + BeanUtils.toBean(list, TenantRespVO.class));
104 } 109 }
105 110
106 } 111 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/TenantPackageController.java
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant; @@ -3,8 +3,8 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.*; 7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.*;
7 -import cn.iocoder.yudao.module.system.convert.tenant.TenantPackageConvert;  
8 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO; 8 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;
9 import cn.iocoder.yudao.module.system.service.tenant.TenantPackageService; 9 import cn.iocoder.yudao.module.system.service.tenant.TenantPackageService;
10 import io.swagger.v3.oas.annotations.tags.Tag; 10 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -32,14 +32,14 @@ public class TenantPackageController { @@ -32,14 +32,14 @@ public class TenantPackageController {
32 @PostMapping("/create") 32 @PostMapping("/create")
33 @Operation(summary = "创建租户套餐") 33 @Operation(summary = "创建租户套餐")
34 @PreAuthorize("@ss.hasPermission('system:tenant-package:create')") 34 @PreAuthorize("@ss.hasPermission('system:tenant-package:create')")
35 - public CommonResult<Long> createTenantPackage(@Valid @RequestBody TenantPackageCreateReqVO createReqVO) { 35 + public CommonResult<Long> createTenantPackage(@Valid @RequestBody TenantPackageSaveReqVO createReqVO) {
36 return success(tenantPackageService.createTenantPackage(createReqVO)); 36 return success(tenantPackageService.createTenantPackage(createReqVO));
37 } 37 }
38 38
39 @PutMapping("/update") 39 @PutMapping("/update")
40 @Operation(summary = "更新租户套餐") 40 @Operation(summary = "更新租户套餐")
41 @PreAuthorize("@ss.hasPermission('system:tenant-package:update')") 41 @PreAuthorize("@ss.hasPermission('system:tenant-package:update')")
42 - public CommonResult<Boolean> updateTenantPackage(@Valid @RequestBody TenantPackageUpdateReqVO updateReqVO) { 42 + public CommonResult<Boolean> updateTenantPackage(@Valid @RequestBody TenantPackageSaveReqVO updateReqVO) {
43 tenantPackageService.updateTenantPackage(updateReqVO); 43 tenantPackageService.updateTenantPackage(updateReqVO);
44 return success(true); 44 return success(true);
45 } 45 }
@@ -59,7 +59,7 @@ public class TenantPackageController { @@ -59,7 +59,7 @@ public class TenantPackageController {
59 @PreAuthorize("@ss.hasPermission('system:tenant-package:query')") 59 @PreAuthorize("@ss.hasPermission('system:tenant-package:query')")
60 public CommonResult<TenantPackageRespVO> getTenantPackage(@RequestParam("id") Long id) { 60 public CommonResult<TenantPackageRespVO> getTenantPackage(@RequestParam("id") Long id) {
61 TenantPackageDO tenantPackage = tenantPackageService.getTenantPackage(id); 61 TenantPackageDO tenantPackage = tenantPackageService.getTenantPackage(id);
62 - return success(TenantPackageConvert.INSTANCE.convert(tenantPackage)); 62 + return success(BeanUtils.toBean(tenantPackage, TenantPackageRespVO.class));
63 } 63 }
64 64
65 @GetMapping("/page") 65 @GetMapping("/page")
@@ -67,15 +67,14 @@ public class TenantPackageController { @@ -67,15 +67,14 @@ public class TenantPackageController {
67 @PreAuthorize("@ss.hasPermission('system:tenant-package:query')") 67 @PreAuthorize("@ss.hasPermission('system:tenant-package:query')")
68 public CommonResult<PageResult<TenantPackageRespVO>> getTenantPackagePage(@Valid TenantPackagePageReqVO pageVO) { 68 public CommonResult<PageResult<TenantPackageRespVO>> getTenantPackagePage(@Valid TenantPackagePageReqVO pageVO) {
69 PageResult<TenantPackageDO> pageResult = tenantPackageService.getTenantPackagePage(pageVO); 69 PageResult<TenantPackageDO> pageResult = tenantPackageService.getTenantPackagePage(pageVO);
70 - return success(TenantPackageConvert.INSTANCE.convertPage(pageResult)); 70 + return success(BeanUtils.toBean(pageResult, TenantPackageRespVO.class));
71 } 71 }
72 72
73 - @GetMapping("/get-simple-list") 73 + @GetMapping({"/get-simple-list", "simple-list"})
74 @Operation(summary = "获取租户套餐精简信息列表", description = "只包含被开启的租户套餐,主要用于前端的下拉选项") 74 @Operation(summary = "获取租户套餐精简信息列表", description = "只包含被开启的租户套餐,主要用于前端的下拉选项")
75 public CommonResult<List<TenantPackageSimpleRespVO>> getTenantPackageList() { 75 public CommonResult<List<TenantPackageSimpleRespVO>> getTenantPackageList() {
76 - // 获得角色列表,只要开启状态的  
77 List<TenantPackageDO> list = tenantPackageService.getTenantPackageListByStatus(CommonStatusEnum.ENABLE.getStatus()); 76 List<TenantPackageDO> list = tenantPackageService.getTenantPackageListByStatus(CommonStatusEnum.ENABLE.getStatus());
78 - return success(TenantPackageConvert.INSTANCE.convertList02(list)); 77 + return success(BeanUtils.toBean(list, TenantPackageSimpleRespVO.class));
79 } 78 }
80 79
81 } 80 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 -  
8 -@Schema(description = "管理后台 - 租户套餐创建 Request VO")  
9 -@Data  
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class TenantPackageCreateReqVO extends TenantPackageBaseVO {  
13 -  
14 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageRespVO.java
@@ -2,20 +2,29 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages; @@ -2,20 +2,29 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 5
8 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
  7 +import java.util.Set;
9 8
10 @Schema(description = "管理后台 - 租户套餐 Response VO") 9 @Schema(description = "管理后台 - 租户套餐 Response VO")
11 @Data 10 @Data
12 -@EqualsAndHashCode(callSuper = true)  
13 -@ToString(callSuper = true)  
14 -public class TenantPackageRespVO extends TenantPackageBaseVO { 11 +public class TenantPackageRespVO {
15 12
16 @Schema(description = "套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 13 @Schema(description = "套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17 private Long id; 14 private Long id;
18 15
  16 + @Schema(description = "套餐名", requiredMode = Schema.RequiredMode.REQUIRED, example = "VIP")
  17 + private String name;
  18 +
  19 + @Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  20 + private Integer status;
  21 +
  22 + @Schema(description = "备注", example = "好")
  23 + private String remark;
  24 +
  25 + @Schema(description = "关联的菜单编号", requiredMode = Schema.RequiredMode.REQUIRED)
  26 + private Set<Long> menuIds;
  27 +
19 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 28 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
20 private LocalDateTime createTime; 29 private LocalDateTime createTime;
21 30
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageSaveReqVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages; 1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages;
2 2
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
3 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 6 import lombok.Data;
5 7
  8 +import javax.validation.constraints.NotEmpty;
6 import javax.validation.constraints.NotNull; 9 import javax.validation.constraints.NotNull;
7 import java.util.Set; 10 import java.util.Set;
8 11
9 -/**  
10 - * 租户套餐 Base VO,提供给添加、修改、详细的子 VO 使用  
11 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 - */ 12 +@Schema(description = "管理后台 - 租户套餐创建/修改 Request VO")
13 @Data 13 @Data
14 -public class TenantPackageBaseVO { 14 +public class TenantPackageSaveReqVO {
  15 +
  16 + @Schema(description = "套餐编号", example = "1024")
  17 + private Long id;
15 18
16 @Schema(description = "套餐名", requiredMode = Schema.RequiredMode.REQUIRED, example = "VIP") 19 @Schema(description = "套餐名", requiredMode = Schema.RequiredMode.REQUIRED, example = "VIP")
17 - @NotNull(message = "套餐名不能为空") 20 + @NotEmpty(message = "套餐名不能为空")
18 private String name; 21 private String name;
19 22
20 @Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 23 @Schema(description = "状态,参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
21 @NotNull(message = "状态不能为空") 24 @NotNull(message = "状态不能为空")
  25 + @InEnum(value = CommonStatusEnum.class, message = "状态必须是 {value}")
22 private Integer status; 26 private Integer status;
23 27
24 @Schema(description = "备注", example = "好") 28 @Schema(description = "备注", example = "好")
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/packages/TenantPackageUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import javax.validation.constraints.*;  
6 -  
7 -@Schema(description = "管理后台 - 租户套餐更新 Request VO")  
8 -@Data  
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class TenantPackageUpdateReqVO extends TenantPackageBaseVO {  
12 -  
13 - @Schema(description = "套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
14 - @NotNull(message = "套餐编号不能为空")  
15 - private Long id;  
16 -  
17 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantCreateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import org.hibernate.validator.constraints.Length;  
6 -  
7 -import javax.validation.constraints.NotBlank;  
8 -import javax.validation.constraints.NotEmpty;  
9 -import javax.validation.constraints.Pattern;  
10 -import javax.validation.constraints.Size;  
11 -  
12 -@Schema(description = "管理后台 - 租户创建 Request VO")  
13 -@Data  
14 -@EqualsAndHashCode(callSuper = true)  
15 -@ToString(callSuper = true)  
16 -public class TenantCreateReqVO extends TenantBaseVO {  
17 -  
18 - @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")  
19 - @NotBlank(message = "用户账号不能为空")  
20 - @Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户账号由 数字、字母 组成")  
21 - @Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")  
22 - private String username;  
23 -  
24 - @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")  
25 - @NotEmpty(message = "密码不能为空")  
26 - @Length(min = 4, max = 16, message = "密码长度为 4-16 位")  
27 - private String password;  
28 -  
29 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantExcelVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;  
2 -  
3 -import cn.iocoder.yudao.module.system.enums.DictTypeConstants;  
4 -import lombok.*;  
5 -import java.time.LocalDateTime;  
6 -  
7 -import com.alibaba.excel.annotation.ExcelProperty;  
8 -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;  
9 -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;  
10 -  
11 -  
12 -/**  
13 - * 租户 Excel VO  
14 - *  
15 - * @author 芋道源码  
16 - */  
17 -@Data  
18 -public class TenantExcelVO {  
19 -  
20 - @ExcelProperty("租户编号")  
21 - private Long id;  
22 -  
23 - @ExcelProperty("租户名")  
24 - private String name;  
25 -  
26 - @ExcelProperty("联系人")  
27 - private String contactName;  
28 -  
29 - @ExcelProperty("联系手机")  
30 - private String contactMobile;  
31 -  
32 - @ExcelProperty(value = "状态", converter = DictConvert.class)  
33 - @DictFormat(DictTypeConstants.COMMON_STATUS)  
34 - private Integer status;  
35 -  
36 - @ExcelProperty("创建时间")  
37 - private LocalDateTime createTime;  
38 -  
39 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantExportReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.Data;  
5 -import org.springframework.format.annotation.DateTimeFormat;  
6 -  
7 -import java.time.LocalDateTime;  
8 -  
9 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
10 -  
11 -@Schema(description = "管理后台 - 租户 Excel 导出 Request VO,参数和 TenantPageReqVO 是一致的")  
12 -@Data  
13 -public class TenantExportReqVO {  
14 -  
15 - @Schema(description = "租户名", example = "芋道")  
16 - private String name;  
17 -  
18 - @Schema(description = "联系人", example = "芋艿")  
19 - private String contactName;  
20 -  
21 - @Schema(description = "联系手机", example = "15601691300")  
22 - private String contactMobile;  
23 -  
24 - @Schema(description = "租户状态(0正常 1停用)", example = "1")  
25 - private Integer status;  
26 -  
27 - @Schema(description = "创建时间")  
28 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
29 - private LocalDateTime[] createTime;  
30 -  
31 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantRespVO.java
1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant; 1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;
2 2
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 import io.swagger.v3.oas.annotations.media.Schema; 8 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*; 9 +import lombok.Data;
5 10
6 import java.time.LocalDateTime; 11 import java.time.LocalDateTime;
7 12
8 @Schema(description = "管理后台 - 租户 Response VO") 13 @Schema(description = "管理后台 - 租户 Response VO")
9 @Data 14 @Data
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class TenantRespVO extends TenantBaseVO { 15 +@ExcelIgnoreUnannotated
  16 +public class TenantRespVO {
13 17
14 @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 18 @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("租户编号")
15 private Long id; 20 private Long id;
16 21
  22 + @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
  23 + @ExcelProperty("租户名")
  24 + private String name;
  25 +
  26 + @Schema(description = "联系人", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
  27 + @ExcelProperty("联系人")
  28 + private String contactName;
  29 +
  30 + @Schema(description = "联系手机", example = "15601691300")
  31 + @ExcelProperty("联系手机")
  32 + private String contactMobile;
  33 +
  34 + @Schema(description = "租户状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  35 + @ExcelProperty(value = "状态", converter = DictConvert.class)
  36 + @DictFormat(DictTypeConstants.COMMON_STATUS)
  37 + private Integer status;
  38 +
  39 + @Schema(description = "绑定域名", example = "https://www.iocoder.cn")
  40 + private String website;
  41 +
  42 + @Schema(description = "租户套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  43 + private Long packageId;
  44 +
  45 + @Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
  46 + private LocalDateTime expireTime;
  47 +
  48 + @Schema(description = "账号数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  49 + private Integer accountCount;
  50 +
17 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) 51 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  52 + @ExcelProperty("创建时间")
18 private LocalDateTime createTime; 53 private LocalDateTime createTime;
19 54
20 } 55 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantBaseVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantSaveReqVO.java 100755 → 100644
1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant; 1 package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;
2 2
  3 +import cn.hutool.core.util.ObjectUtil;
  4 +import com.fasterxml.jackson.annotation.JsonIgnore;
3 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
4 -import lombok.*; 6 +import lombok.Data;
  7 +import org.hibernate.validator.constraints.Length;
5 8
6 -import javax.validation.constraints.*; 9 +import javax.validation.constraints.AssertTrue;
  10 +import javax.validation.constraints.NotNull;
  11 +import javax.validation.constraints.Pattern;
  12 +import javax.validation.constraints.Size;
7 import java.time.LocalDateTime; 13 import java.time.LocalDateTime;
8 14
9 -/**  
10 - * 租户 Base VO,提供给添加、修改、详细的子 VO 使用  
11 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成  
12 - */ 15 +@Schema(description = "管理后台 - 租户创建/修改 Request VO")
13 @Data 16 @Data
14 -public class TenantBaseVO { 17 +public class TenantSaveReqVO {
  18 +
  19 + @Schema(description = "租户编号", example = "1024")
  20 + private Long id;
15 21
16 @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") 22 @Schema(description = "租户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
17 @NotNull(message = "租户名不能为空") 23 @NotNull(message = "租户名不能为空")
@@ -43,4 +49,22 @@ public class TenantBaseVO { @@ -43,4 +49,22 @@ public class TenantBaseVO {
43 @NotNull(message = "账号数量不能为空") 49 @NotNull(message = "账号数量不能为空")
44 private Integer accountCount; 50 private Integer accountCount;
45 51
  52 + // ========== 仅【创建】时,需要传递的字段 ==========
  53 +
  54 + @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "yudao")
  55 + @Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户账号由 数字、字母 组成")
  56 + @Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")
  57 + private String username;
  58 +
  59 + @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
  60 + @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
  61 + private String password;
  62 +
  63 + @AssertTrue(message = "用户账号、密码不能为空")
  64 + @JsonIgnore
  65 + public boolean isUsernameValid() {
  66 + return id != null // 修改时,不需要传递
  67 + || (ObjectUtil.isAllNotEmpty(username, password)); // 新增时,必须都传递 username、password
  68 + }
  69 +
46 } 70 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantSimpleRespVO.java
@@ -2,14 +2,10 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant; @@ -2,14 +2,10 @@ package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 -import lombok.EqualsAndHashCode;  
6 -import lombok.ToString;  
7 5
8 @Schema(description = "管理后台 - 租户精简 Response VO") 6 @Schema(description = "管理后台 - 租户精简 Response VO")
9 @Data 7 @Data
10 -@EqualsAndHashCode(callSuper = true)  
11 -@ToString(callSuper = true)  
12 -public class TenantSimpleRespVO extends TenantBaseVO { 8 +public class TenantSimpleRespVO {
13 9
14 @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") 10 @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
15 private Long id; 11 private Long id;
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/tenant/vo/tenant/TenantUpdateReqVO.java deleted
1 -package cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant;  
2 -  
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 -import lombok.*;  
5 -import javax.validation.constraints.*;  
6 -  
7 -@Schema(description = "管理后台 - 租户更新 Request VO")  
8 -@Data  
9 -@EqualsAndHashCode(callSuper = true)  
10 -@ToString(callSuper = true)  
11 -public class TenantUpdateReqVO extends TenantBaseVO {  
12 -  
13 - @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")  
14 - @NotNull(message = "租户编号不能为空")  
15 - private Long id;  
16 -  
17 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/TenantConvert.java
1 package cn.iocoder.yudao.module.system.convert.tenant; 1 package cn.iocoder.yudao.module.system.convert.tenant;
2 2
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.*; 3 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
5 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserCreateReqVO; 4 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserCreateReqVO;
6 -import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;  
7 import org.mapstruct.Mapper; 5 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 6 import org.mapstruct.factory.Mappers;
9 7
10 -import java.util.List;  
11 -  
12 /** 8 /**
13 * 租户 Convert 9 * 租户 Convert
14 * 10 *
@@ -19,21 +15,7 @@ public interface TenantConvert { @@ -19,21 +15,7 @@ public interface TenantConvert {
19 15
20 TenantConvert INSTANCE = Mappers.getMapper(TenantConvert.class); 16 TenantConvert INSTANCE = Mappers.getMapper(TenantConvert.class);
21 17
22 - TenantDO convert(TenantCreateReqVO bean);  
23 -  
24 - TenantDO convert(TenantUpdateReqVO bean);  
25 -  
26 - TenantRespVO convert(TenantDO bean);  
27 -  
28 - TenantSimpleRespVO convert03(TenantDO bean);  
29 -  
30 - List<TenantRespVO> convertList(List<TenantDO> list);  
31 -  
32 - PageResult<TenantRespVO> convertPage(PageResult<TenantDO> page);  
33 -  
34 - List<TenantExcelVO> convertList02(List<TenantDO> list);  
35 -  
36 - default UserCreateReqVO convert02(TenantCreateReqVO bean) { 18 + default UserCreateReqVO convert02(TenantSaveReqVO bean) {
37 UserCreateReqVO reqVO = new UserCreateReqVO(); 19 UserCreateReqVO reqVO = new UserCreateReqVO();
38 reqVO.setUsername(bean.getUsername()); 20 reqVO.setUsername(bean.getUsername());
39 reqVO.setPassword(bean.getPassword()); 21 reqVO.setPassword(bean.getPassword());
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/tenant/TenantPackageConvert.java deleted
1 -package cn.iocoder.yudao.module.system.convert.tenant;  
2 -  
3 -import cn.iocoder.yudao.framework.common.pojo.PageResult;  
4 -import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO;  
5 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageCreateReqVO;  
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageRespVO;  
7 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageSimpleRespVO;  
8 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageUpdateReqVO;  
9 -import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;  
10 -import org.mapstruct.Mapper;  
11 -import org.mapstruct.factory.Mappers;  
12 -  
13 -import java.util.List;  
14 -  
15 -/**  
16 - * 租户套餐 Convert  
17 - *  
18 - * @author 芋道源码  
19 - */  
20 -@Mapper  
21 -public interface TenantPackageConvert {  
22 -  
23 - TenantPackageConvert INSTANCE = Mappers.getMapper(TenantPackageConvert.class);  
24 -  
25 - TenantPackageDO convert(TenantPackageCreateReqVO bean);  
26 -  
27 - TenantPackageDO convert(TenantPackageUpdateReqVO bean);  
28 -  
29 - TenantPackageRespVO convert(TenantPackageDO bean);  
30 -  
31 - List<TenantPackageRespVO> convertList(List<TenantPackageDO> list);  
32 -  
33 - PageResult<TenantPackageRespVO> convertPage(PageResult<TenantPackageDO> page);  
34 -  
35 - List<TenantPackageSimpleRespVO> convertList02(List<TenantPackageDO> list);  
36 -  
37 -}  
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/tenant/TenantMapper.java
@@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.tenant; @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.tenant;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantExportReqVO;  
7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
8 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
9 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
@@ -28,16 +27,6 @@ public interface TenantMapper extends BaseMapperX&lt;TenantDO&gt; { @@ -28,16 +27,6 @@ public interface TenantMapper extends BaseMapperX&lt;TenantDO&gt; {
28 .orderByDesc(TenantDO::getId)); 27 .orderByDesc(TenantDO::getId));
29 } 28 }
30 29
31 - default List<TenantDO> selectList(TenantExportReqVO reqVO) {  
32 - return selectList(new LambdaQueryWrapperX<TenantDO>()  
33 - .likeIfPresent(TenantDO::getName, reqVO.getName())  
34 - .likeIfPresent(TenantDO::getContactName, reqVO.getContactName())  
35 - .likeIfPresent(TenantDO::getContactMobile, reqVO.getContactMobile())  
36 - .eqIfPresent(TenantDO::getStatus, reqVO.getStatus())  
37 - .betweenIfPresent(TenantDO::getCreateTime, reqVO.getCreateTime())  
38 - .orderByDesc(TenantDO::getId));  
39 - }  
40 -  
41 default TenantDO selectByName(String name) { 30 default TenantDO selectByName(String name) {
42 return selectOne(TenantDO::getName, name); 31 return selectOne(TenantDO::getName, name);
43 } 32 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantPackageService.java
1 package cn.iocoder.yudao.module.system.service.tenant; 1 package cn.iocoder.yudao.module.system.service.tenant;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageCreateReqVO;  
5 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO; 4 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO;
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageUpdateReqVO; 5 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageSaveReqVO;
7 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO; 6 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;
8 7
9 import javax.validation.Valid; 8 import javax.validation.Valid;
@@ -22,14 +21,14 @@ public interface TenantPackageService { @@ -22,14 +21,14 @@ public interface TenantPackageService {
22 * @param createReqVO 创建信息 21 * @param createReqVO 创建信息
23 * @return 编号 22 * @return 编号
24 */ 23 */
25 - Long createTenantPackage(@Valid TenantPackageCreateReqVO createReqVO); 24 + Long createTenantPackage(@Valid TenantPackageSaveReqVO createReqVO);
26 25
27 /** 26 /**
28 * 更新租户套餐 27 * 更新租户套餐
29 * 28 *
30 * @param updateReqVO 更新信息 29 * @param updateReqVO 更新信息
31 */ 30 */
32 - void updateTenantPackage(@Valid TenantPackageUpdateReqVO updateReqVO); 31 + void updateTenantPackage(@Valid TenantPackageSaveReqVO updateReqVO);
33 32
34 /** 33 /**
35 * 删除租户套餐 34 * 删除租户套餐
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantPackageServiceImpl.java
@@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.system.service.tenant; @@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.system.service.tenant;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageCreateReqVO; 6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO; 7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO;
8 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageUpdateReqVO;  
9 -import cn.iocoder.yudao.module.system.convert.tenant.TenantPackageConvert; 8 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageSaveReqVO;
10 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 9 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
11 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO; 10 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;
12 import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantPackageMapper; 11 import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantPackageMapper;
@@ -38,9 +37,9 @@ public class TenantPackageServiceImpl implements TenantPackageService { @@ -38,9 +37,9 @@ public class TenantPackageServiceImpl implements TenantPackageService {
38 private TenantService tenantService; 37 private TenantService tenantService;
39 38
40 @Override 39 @Override
41 - public Long createTenantPackage(TenantPackageCreateReqVO createReqVO) { 40 + public Long createTenantPackage(TenantPackageSaveReqVO createReqVO) {
42 // 插入 41 // 插入
43 - TenantPackageDO tenantPackage = TenantPackageConvert.INSTANCE.convert(createReqVO); 42 + TenantPackageDO tenantPackage = BeanUtils.toBean(createReqVO, TenantPackageDO.class);
44 tenantPackageMapper.insert(tenantPackage); 43 tenantPackageMapper.insert(tenantPackage);
45 // 返回 44 // 返回
46 return tenantPackage.getId(); 45 return tenantPackage.getId();
@@ -48,11 +47,11 @@ public class TenantPackageServiceImpl implements TenantPackageService { @@ -48,11 +47,11 @@ public class TenantPackageServiceImpl implements TenantPackageService {
48 47
49 @Override 48 @Override
50 @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换 49 @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
51 - public void updateTenantPackage(TenantPackageUpdateReqVO updateReqVO) { 50 + public void updateTenantPackage(TenantPackageSaveReqVO updateReqVO) {
52 // 校验存在 51 // 校验存在
53 TenantPackageDO tenantPackage = validateTenantPackageExists(updateReqVO.getId()); 52 TenantPackageDO tenantPackage = validateTenantPackageExists(updateReqVO.getId());
54 // 更新 53 // 更新
55 - TenantPackageDO updateObj = TenantPackageConvert.INSTANCE.convert(updateReqVO); 54 + TenantPackageDO updateObj = BeanUtils.toBean(updateReqVO, TenantPackageDO.class);
56 tenantPackageMapper.updateById(updateObj); 55 tenantPackageMapper.updateById(updateObj);
57 // 如果菜单发生变化,则修改每个租户的菜单 56 // 如果菜单发生变化,则修改每个租户的菜单
58 if (!CollUtil.isEqualList(tenantPackage.getMenuIds(), updateReqVO.getMenuIds())) { 57 if (!CollUtil.isEqualList(tenantPackage.getMenuIds(), updateReqVO.getMenuIds())) {
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantService.java
@@ -2,10 +2,8 @@ package cn.iocoder.yudao.module.system.service.tenant; @@ -2,10 +2,8 @@ package cn.iocoder.yudao.module.system.service.tenant;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; 4 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
5 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantCreateReqVO;  
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantExportReqVO;  
7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO; 5 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
8 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantUpdateReqVO; 6 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
9 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 7 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
10 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantInfoHandler; 8 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantInfoHandler;
11 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantMenuHandler; 9 import cn.iocoder.yudao.module.system.service.tenant.handler.TenantMenuHandler;
@@ -27,14 +25,14 @@ public interface TenantService { @@ -27,14 +25,14 @@ public interface TenantService {
27 * @param createReqVO 创建信息 25 * @param createReqVO 创建信息
28 * @return 编号 26 * @return 编号
29 */ 27 */
30 - Long createTenant(@Valid TenantCreateReqVO createReqVO); 28 + Long createTenant(@Valid TenantSaveReqVO createReqVO);
31 29
32 /** 30 /**
33 * 更新租户 31 * 更新租户
34 * 32 *
35 * @param updateReqVO 更新信息 33 * @param updateReqVO 更新信息
36 */ 34 */
37 - void updateTenant(@Valid TenantUpdateReqVO updateReqVO); 35 + void updateTenant(@Valid TenantSaveReqVO updateReqVO);
38 36
39 /** 37 /**
40 * 更新租户的角色菜单 38 * 更新租户的角色菜单
@@ -68,14 +66,6 @@ public interface TenantService { @@ -68,14 +66,6 @@ public interface TenantService {
68 PageResult<TenantDO> getTenantPage(TenantPageReqVO pageReqVO); 66 PageResult<TenantDO> getTenantPage(TenantPageReqVO pageReqVO);
69 67
70 /** 68 /**
71 - * 获得租户列表, 用于 Excel 导出  
72 - *  
73 - * @param exportReqVO 查询条件  
74 - * @return 租户列表  
75 - */  
76 - List<TenantDO> getTenantList(TenantExportReqVO exportReqVO);  
77 -  
78 - /**  
79 * 获得名字对应的租户 69 * 获得名字对应的租户
80 * 70 *
81 * @param name 租户名 71 * @param name 租户名
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java
@@ -8,14 +8,13 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; @@ -8,14 +8,13 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
8 import cn.iocoder.yudao.framework.common.pojo.PageResult; 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
9 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 9 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
10 import cn.iocoder.yudao.framework.common.util.date.DateUtils; 10 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
  11 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
11 import cn.iocoder.yudao.framework.tenant.config.TenantProperties; 12 import cn.iocoder.yudao.framework.tenant.config.TenantProperties;
12 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; 13 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
13 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; 14 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
14 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; 15 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
15 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantCreateReqVO;  
16 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantExportReqVO;  
17 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO; 16 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
18 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantUpdateReqVO; 17 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
19 import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert; 18 import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert;
20 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; 19 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
21 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; 20 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -97,7 +96,7 @@ public class TenantServiceImpl implements TenantService { @@ -97,7 +96,7 @@ public class TenantServiceImpl implements TenantService {
97 96
98 @Override 97 @Override
99 @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换 98 @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
100 - public Long createTenant(TenantCreateReqVO createReqVO) { 99 + public Long createTenant(TenantSaveReqVO createReqVO) {
101 // 校验租户名称是否重复 100 // 校验租户名称是否重复
102 validTenantNameDuplicate(createReqVO.getName(), null); 101 validTenantNameDuplicate(createReqVO.getName(), null);
103 // 校验租户域名是否重复 102 // 校验租户域名是否重复
@@ -106,9 +105,9 @@ public class TenantServiceImpl implements TenantService { @@ -106,9 +105,9 @@ public class TenantServiceImpl implements TenantService {
106 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(createReqVO.getPackageId()); 105 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(createReqVO.getPackageId());
107 106
108 // 创建租户 107 // 创建租户
109 - TenantDO tenant = TenantConvert.INSTANCE.convert(createReqVO); 108 + TenantDO tenant = BeanUtils.toBean(createReqVO, TenantDO.class);
110 tenantMapper.insert(tenant); 109 tenantMapper.insert(tenant);
111 - 110 + // 创建租户的管理员
112 TenantUtils.execute(tenant.getId(), () -> { 111 TenantUtils.execute(tenant.getId(), () -> {
113 // 创建角色 112 // 创建角色
114 Long roleId = createRole(tenantPackage); 113 Long roleId = createRole(tenantPackage);
@@ -120,7 +119,7 @@ public class TenantServiceImpl implements TenantService { @@ -120,7 +119,7 @@ public class TenantServiceImpl implements TenantService {
120 return tenant.getId(); 119 return tenant.getId();
121 } 120 }
122 121
123 - private Long createUser(Long roleId, TenantCreateReqVO createReqVO) { 122 + private Long createUser(Long roleId, TenantSaveReqVO createReqVO) {
124 // 创建用户 123 // 创建用户
125 Long userId = userService.createUser(TenantConvert.INSTANCE.convert02(createReqVO)); 124 Long userId = userService.createUser(TenantConvert.INSTANCE.convert02(createReqVO));
126 // 分配角色 125 // 分配角色
@@ -140,8 +139,8 @@ public class TenantServiceImpl implements TenantService { @@ -140,8 +139,8 @@ public class TenantServiceImpl implements TenantService {
140 } 139 }
141 140
142 @Override 141 @Override
143 - @DSTransactional  
144 - public void updateTenant(TenantUpdateReqVO updateReqVO) { 142 + @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
  143 + public void updateTenant(TenantSaveReqVO updateReqVO) {
145 // 校验存在 144 // 校验存在
146 TenantDO tenant = validateUpdateTenant(updateReqVO.getId()); 145 TenantDO tenant = validateUpdateTenant(updateReqVO.getId());
147 // 校验租户名称是否重复 146 // 校验租户名称是否重复
@@ -152,7 +151,7 @@ public class TenantServiceImpl implements TenantService { @@ -152,7 +151,7 @@ public class TenantServiceImpl implements TenantService {
152 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(updateReqVO.getPackageId()); 151 TenantPackageDO tenantPackage = tenantPackageService.validTenantPackage(updateReqVO.getPackageId());
153 152
154 // 更新租户 153 // 更新租户
155 - TenantDO updateObj = TenantConvert.INSTANCE.convert(updateReqVO); 154 + TenantDO updateObj = BeanUtils.toBean(updateReqVO, TenantDO.class);
156 tenantMapper.updateById(updateObj); 155 tenantMapper.updateById(updateObj);
157 // 如果套餐发生变化,则修改其角色的权限 156 // 如果套餐发生变化,则修改其角色的权限
158 if (ObjectUtil.notEqual(tenant.getPackageId(), updateReqVO.getPackageId())) { 157 if (ObjectUtil.notEqual(tenant.getPackageId(), updateReqVO.getPackageId())) {
@@ -247,11 +246,6 @@ public class TenantServiceImpl implements TenantService { @@ -247,11 +246,6 @@ public class TenantServiceImpl implements TenantService {
247 } 246 }
248 247
249 @Override 248 @Override
250 - public List<TenantDO> getTenantList(TenantExportReqVO exportReqVO) {  
251 - return tenantMapper.selectList(exportReqVO);  
252 - }  
253 -  
254 - @Override  
255 public TenantDO getTenantByName(String name) { 249 public TenantDO getTenantByName(String name) {
256 return tenantMapper.selectByName(name); 250 return tenantMapper.selectByName(name);
257 } 251 }
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/tenant/TenantPackageServiceImplTest.java
@@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.system.service.tenant; @@ -3,9 +3,8 @@ package cn.iocoder.yudao.module.system.service.tenant;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageCreateReqVO;  
7 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO; 6 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackagePageReqVO;
8 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageUpdateReqVO; 7 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.packages.TenantPackageSaveReqVO;
9 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 8 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
10 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO; 9 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantPackageDO;
11 import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantPackageMapper; 10 import cn.iocoder.yudao.module.system.dal.mysql.tenant.TenantPackageMapper;
@@ -14,7 +13,6 @@ import org.springframework.boot.test.mock.mockito.MockBean; @@ -14,7 +13,6 @@ import org.springframework.boot.test.mock.mockito.MockBean;
14 import org.springframework.context.annotation.Import; 13 import org.springframework.context.annotation.Import;
15 14
16 import javax.annotation.Resource; 15 import javax.annotation.Resource;
17 -  
18 import java.util.List; 16 import java.util.List;
19 17
20 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; 18 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
@@ -22,8 +20,7 @@ import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.bui @@ -22,8 +20,7 @@ import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.bui
22 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; 20 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
23 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; 21 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
24 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; 22 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
25 -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;  
26 -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; 23 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
27 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; 24 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
28 import static java.util.Arrays.asList; 25 import static java.util.Arrays.asList;
29 import static org.junit.jupiter.api.Assertions.*; 26 import static org.junit.jupiter.api.Assertions.*;
@@ -51,7 +48,9 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest { @@ -51,7 +48,9 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest {
51 @Test 48 @Test
52 public void testCreateTenantPackage_success() { 49 public void testCreateTenantPackage_success() {
53 // 准备参数 50 // 准备参数
54 - TenantPackageCreateReqVO reqVO = randomPojo(TenantPackageCreateReqVO.class); 51 + TenantPackageSaveReqVO reqVO = randomPojo(TenantPackageSaveReqVO.class,
  52 + o -> o.setStatus(randomCommonStatus()))
  53 + .setId(null); // 防止 id 被赋值
55 54
56 // 调用 55 // 调用
57 Long tenantPackageId = tenantPackageService.createTenantPackage(reqVO); 56 Long tenantPackageId = tenantPackageService.createTenantPackage(reqVO);
@@ -59,17 +58,19 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest { @@ -59,17 +58,19 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest {
59 assertNotNull(tenantPackageId); 58 assertNotNull(tenantPackageId);
60 // 校验记录的属性是否正确 59 // 校验记录的属性是否正确
61 TenantPackageDO tenantPackage = tenantPackageMapper.selectById(tenantPackageId); 60 TenantPackageDO tenantPackage = tenantPackageMapper.selectById(tenantPackageId);
62 - assertPojoEquals(reqVO, tenantPackage); 61 + assertPojoEquals(reqVO, tenantPackage, "id");
63 } 62 }
64 63
65 @Test 64 @Test
66 public void testUpdateTenantPackage_success() { 65 public void testUpdateTenantPackage_success() {
67 // mock 数据 66 // mock 数据
68 - TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class); 67 + TenantPackageDO dbTenantPackage = randomPojo(TenantPackageDO.class,
  68 + o -> o.setStatus(randomCommonStatus()));
69 tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据 69 tenantPackageMapper.insert(dbTenantPackage);// @Sql: 先插入出一条存在的数据
70 // 准备参数 70 // 准备参数
71 - TenantPackageUpdateReqVO reqVO = randomPojo(TenantPackageUpdateReqVO.class, o -> { 71 + TenantPackageSaveReqVO reqVO = randomPojo(TenantPackageSaveReqVO.class, o -> {
72 o.setId(dbTenantPackage.getId()); // 设置更新的 ID 72 o.setId(dbTenantPackage.getId()); // 设置更新的 ID
  73 + o.setStatus(randomCommonStatus());
73 }); 74 });
74 // mock 方法 75 // mock 方法
75 Long tenantId01 = randomLongId(); 76 Long tenantId01 = randomLongId();
@@ -91,7 +92,7 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest { @@ -91,7 +92,7 @@ public class TenantPackageServiceImplTest extends BaseDbUnitTest {
91 @Test 92 @Test
92 public void testUpdateTenantPackage_notExists() { 93 public void testUpdateTenantPackage_notExists() {
93 // 准备参数 94 // 准备参数
94 - TenantPackageUpdateReqVO reqVO = randomPojo(TenantPackageUpdateReqVO.class); 95 + TenantPackageSaveReqVO reqVO = randomPojo(TenantPackageSaveReqVO.class);
95 96
96 // 调用, 并断言异常 97 // 调用, 并断言异常
97 assertServiceException(() -> tenantPackageService.updateTenantPackage(reqVO), TENANT_PACKAGE_NOT_EXISTS); 98 assertServiceException(() -> tenantPackageService.updateTenantPackage(reqVO), TENANT_PACKAGE_NOT_EXISTS);
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImplTest.java
@@ -5,10 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -5,10 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.tenant.config.TenantProperties; 5 import cn.iocoder.yudao.framework.tenant.config.TenantProperties;
6 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; 6 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
7 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; 7 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
8 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantCreateReqVO;  
9 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantExportReqVO;  
10 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO; 8 import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
11 -import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantUpdateReqVO; 9 +import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
12 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO; 10 import cn.iocoder.yudao.module.system.dal.dataobject.permission.MenuDO;
13 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; 11 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
14 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO; 12 import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
@@ -152,7 +150,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -152,7 +150,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
152 }))).thenReturn(300L); 150 }))).thenReturn(300L);
153 151
154 // 准备参数 152 // 准备参数
155 - TenantCreateReqVO reqVO = randomPojo(TenantCreateReqVO.class, o -> { 153 + TenantSaveReqVO reqVO = randomPojo(TenantSaveReqVO.class, o -> {
156 o.setContactName("芋道"); 154 o.setContactName("芋道");
157 o.setContactMobile("15601691300"); 155 o.setContactMobile("15601691300");
158 o.setPackageId(100L); 156 o.setPackageId(100L);
@@ -160,7 +158,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -160,7 +158,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
160 o.setWebsite("https://www.iocoder.cn"); 158 o.setWebsite("https://www.iocoder.cn");
161 o.setUsername("yunai"); 159 o.setUsername("yunai");
162 o.setPassword("yuanma"); 160 o.setPassword("yuanma");
163 - }); 161 + }).setId(null); // 设置为 null,方便后面校验
164 162
165 // 调用 163 // 调用
166 Long tenantId = tenantService.createTenant(reqVO); 164 Long tenantId = tenantService.createTenant(reqVO);
@@ -168,7 +166,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -168,7 +166,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
168 assertNotNull(tenantId); 166 assertNotNull(tenantId);
169 // 校验记录的属性是否正确 167 // 校验记录的属性是否正确
170 TenantDO tenant = tenantMapper.selectById(tenantId); 168 TenantDO tenant = tenantMapper.selectById(tenantId);
171 - assertPojoEquals(reqVO, tenant); 169 + assertPojoEquals(reqVO, tenant, "id");
172 assertEquals(300L, tenant.getContactUserId()); 170 assertEquals(300L, tenant.getContactUserId());
173 // verify 分配权限 171 // verify 分配权限
174 verify(permissionService).assignRoleMenu(eq(200L), same(tenantPackage.getMenuIds())); 172 verify(permissionService).assignRoleMenu(eq(200L), same(tenantPackage.getMenuIds()));
@@ -182,7 +180,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -182,7 +180,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
182 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setStatus(randomCommonStatus())); 180 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setStatus(randomCommonStatus()));
183 tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 181 tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据
184 // 准备参数 182 // 准备参数
185 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class, o -> { 183 + TenantSaveReqVO reqVO = randomPojo(TenantSaveReqVO.class, o -> {
186 o.setId(dbTenant.getId()); // 设置更新的 ID 184 o.setId(dbTenant.getId()); // 设置更新的 ID
187 o.setStatus(randomCommonStatus()); 185 o.setStatus(randomCommonStatus());
188 o.setWebsite(randomString()); 186 o.setWebsite(randomString());
@@ -214,7 +212,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -214,7 +212,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
214 @Test 212 @Test
215 public void testUpdateTenant_notExists() { 213 public void testUpdateTenant_notExists() {
216 // 准备参数 214 // 准备参数
217 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class); 215 + TenantSaveReqVO reqVO = randomPojo(TenantSaveReqVO.class);
218 216
219 // 调用, 并断言异常 217 // 调用, 并断言异常
220 assertServiceException(() -> tenantService.updateTenant(reqVO), TENANT_NOT_EXISTS); 218 assertServiceException(() -> tenantService.updateTenant(reqVO), TENANT_NOT_EXISTS);
@@ -226,7 +224,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -226,7 +224,7 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
226 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(PACKAGE_ID_SYSTEM)); 224 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setPackageId(PACKAGE_ID_SYSTEM));
227 tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据 225 tenantMapper.insert(dbTenant);// @Sql: 先插入出一条存在的数据
228 // 准备参数 226 // 准备参数
229 - TenantUpdateReqVO reqVO = randomPojo(TenantUpdateReqVO.class, o -> { 227 + TenantSaveReqVO reqVO = randomPojo(TenantSaveReqVO.class, o -> {
230 o.setId(dbTenant.getId()); // 设置更新的 ID 228 o.setId(dbTenant.getId()); // 设置更新的 ID
231 }); 229 });
232 230
@@ -322,42 +320,6 @@ public class TenantServiceImplTest extends BaseDbUnitTest { @@ -322,42 +320,6 @@ public class TenantServiceImplTest extends BaseDbUnitTest {
322 } 320 }
323 321
324 @Test 322 @Test
325 - public void testGetTenantList() {  
326 - // mock 数据  
327 - TenantDO dbTenant = randomPojo(TenantDO.class, o -> { // 等会查询到  
328 - o.setName("芋道源码");  
329 - o.setContactName("芋艿");  
330 - o.setContactMobile("15601691300");  
331 - o.setStatus(CommonStatusEnum.ENABLE.getStatus());  
332 - o.setCreateTime(buildTime(2020, 12, 12));  
333 - });  
334 - tenantMapper.insert(dbTenant);  
335 - // 测试 name 不匹配  
336 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setName(randomString())));  
337 - // 测试 contactName 不匹配  
338 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactName(randomString())));  
339 - // 测试 contactMobile 不匹配  
340 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setContactMobile(randomString())));  
341 - // 测试 status 不匹配  
342 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));  
343 - // 测试 createTime 不匹配  
344 - tenantMapper.insert(cloneIgnoreId(dbTenant, o -> o.setCreateTime(buildTime(2021, 12, 12))));  
345 - // 准备参数  
346 - TenantExportReqVO reqVO = new TenantExportReqVO();  
347 - reqVO.setName("芋道");  
348 - reqVO.setContactName("艿");  
349 - reqVO.setContactMobile("1560");  
350 - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());  
351 - reqVO.setCreateTime(buildBetweenTime(2020, 12, 1, 2020, 12, 24));  
352 -  
353 - // 调用  
354 - List<TenantDO> list = tenantService.getTenantList(reqVO);  
355 - // 断言  
356 - assertEquals(1, list.size());  
357 - assertPojoEquals(dbTenant, list.get(0));  
358 - }  
359 -  
360 - @Test  
361 public void testGetTenantByName() { 323 public void testGetTenantByName() {
362 // mock 数据 324 // mock 数据
363 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setName("芋道")); 325 TenantDO dbTenant = randomPojo(TenantDO.class, o -> o.setName("芋道"));