diff --git a/src/main/java/com/rj/controller/TenantController.java b/src/main/java/com/rj/controller/TenantController.java new file mode 100644 index 0000000..3cb5625 --- /dev/null +++ b/src/main/java/com/rj/controller/TenantController.java @@ -0,0 +1,85 @@ +package com.rj.controller; + +import com.rj.service.ITenantService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + *

+ * 租户表 前端控制器 + *

+ * + * @author 系统生成 + * @since 2025-01-XX + */ +@RestController +@RequestMapping("/api/tenant") +@Tag(name = "租户管理", description = "租户管理相关接口") +public class TenantController { + + @Autowired + private ITenantService tenantService; + + /** + * 分页查询租户列表 + */ + @GetMapping("/list") + @Operation(summary = "分页查询租户列表", description = "根据条件分页查询租户信息列表") + public ResponseEntity> getTenantList( + @Parameter(description = "页码", example = "1") + @RequestParam(defaultValue = "1") Integer current, + @Parameter(description = "每页大小", example = "10") + @RequestParam(defaultValue = "10") Integer size, + @Parameter(description = "租户编码(精确查询)") + @RequestParam(required = false) String tenantCode, + @Parameter(description = "租户名称(模糊查询)") + @RequestParam(required = false) String tenantName, + @Parameter(description = "状态:1-启用,0-禁用") + @RequestParam(required = false) Integer status, + @Parameter(description = "联系人姓名(模糊查询)") + @RequestParam(required = false) String contactName, + @Parameter(description = "联系人电话(模糊查询)") + @RequestParam(required = false) String contactPhone, + @Parameter(description = "过期时间开始(格式:yyyy-MM-dd HH:mm:ss)") + @RequestParam(required = false) String expireStartTime, + @Parameter(description = "过期时间结束(格式:yyyy-MM-dd HH:mm:ss)") + @RequestParam(required = false) String expireEndTime) { + Map result = tenantService.getTenantList(current, size, tenantCode, tenantName, + status, contactName, contactPhone, + expireStartTime, expireEndTime); + return ResponseEntity.ok(result); + } + + /** + * 根据条件查询租户列表(不分页) + */ + @GetMapping("/listAll") + @Operation(summary = "查询租户列表(不分页)", description = "根据条件查询所有租户信息,不分页") + public ResponseEntity> getTenantListWithoutPage( + @Parameter(description = "租户编码(精确查询)") + @RequestParam(required = false) String tenantCode, + @Parameter(description = "租户名称(模糊查询)") + @RequestParam(required = false) String tenantName, + @Parameter(description = "状态:1-启用,0-禁用") + @RequestParam(required = false) Integer status, + @Parameter(description = "联系人姓名(模糊查询)") + @RequestParam(required = false) String contactName, + @Parameter(description = "联系人电话(模糊查询)") + @RequestParam(required = false) String contactPhone, + @Parameter(description = "过期时间开始(格式:yyyy-MM-dd HH:mm:ss)") + @RequestParam(required = false) String expireStartTime, + @Parameter(description = "过期时间结束(格式:yyyy-MM-dd HH:mm:ss)") + @RequestParam(required = false) String expireEndTime) { + Map result = tenantService.getTenantListWithoutPage(tenantCode, tenantName, + status, contactName, contactPhone, + expireStartTime, expireEndTime); + return ResponseEntity.ok(result); + } +} + diff --git a/src/main/java/com/rj/entity/Tenant.java b/src/main/java/com/rj/entity/Tenant.java new file mode 100644 index 0000000..d4aeadb --- /dev/null +++ b/src/main/java/com/rj/entity/Tenant.java @@ -0,0 +1,65 @@ +package com.rj.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 租户表 + *

+ * + * @author 系统生成 + * @since 2025-01-XX + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("tenant") +@Schema(description="租户表") +public class Tenant implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "租户主键ID") + @TableId("id") + private String id; + + @Schema(description = "租户编码,唯一") + @TableField("tenant_code") + private String tenantCode; + + @Schema(description = "租户名称") + @TableField("tenant_name") + private String tenantName; + + @Schema(description = "状态:1-启用,0-禁用") + @TableField("status") + private Integer status; + + @Schema(description = "联系人姓名") + @TableField("contact_name") + private String contactName; + + @Schema(description = "联系人电话") + @TableField("contact_phone") + private String contactPhone; + + @Schema(description = "租户过期时间") + @TableField("expire_time") + private LocalDateTime expireTime; + + @Schema(description = "创建时间") + @TableField("create_time") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + @TableField("update_time") + private LocalDateTime updateTime; +} + diff --git a/src/main/java/com/rj/mapper/TenantMapper.java b/src/main/java/com/rj/mapper/TenantMapper.java new file mode 100644 index 0000000..5554ee3 --- /dev/null +++ b/src/main/java/com/rj/mapper/TenantMapper.java @@ -0,0 +1,19 @@ +package com.rj.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.rj.entity.Tenant; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 租户表 Mapper 接口 + *

+ * + * @author 系统生成 + * @since 2025-01-XX + */ +@Mapper +public interface TenantMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/rj/service/ITenantService.java b/src/main/java/com/rj/service/ITenantService.java new file mode 100644 index 0000000..bb8d7e6 --- /dev/null +++ b/src/main/java/com/rj/service/ITenantService.java @@ -0,0 +1,51 @@ +package com.rj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.rj.entity.Tenant; + +import java.util.Map; + +/** + *

+ * 租户表 服务类 + *

+ * + * @author 系统生成 + * @since 2025-01-XX + */ +public interface ITenantService extends IService { + + /** + * 分页查询租户列表 + * @param current 页码 + * @param size 每页大小 + * @param tenantCode 租户编码 + * @param tenantName 租户名称(模糊查询) + * @param status 状态:1-启用,0-禁用 + * @param contactName 联系人姓名(模糊查询) + * @param contactPhone 联系人电话 + * @param expireStartTime 过期时间开始 + * @param expireEndTime 过期时间结束 + * @return 分页结果 + */ + Map getTenantList(Integer current, Integer size, String tenantCode, + String tenantName, Integer status, String contactName, + String contactPhone, String expireStartTime, String expireEndTime); + + /** + * 根据条件查询租户列表(不分页) + * @param tenantCode 租户编码 + * @param tenantName 租户名称(模糊查询) + * @param status 状态:1-启用,0-禁用 + * @param contactName 联系人姓名(模糊查询) + * @param contactPhone 联系人电话 + * @param expireStartTime 过期时间开始 + * @param expireEndTime 过期时间结束 + * @return 查询结果 + */ + Map getTenantListWithoutPage(String tenantCode, String tenantName, + Integer status, String contactName, + String contactPhone, String expireStartTime, + String expireEndTime); +} + diff --git a/src/main/java/com/rj/service/impl/TenantServiceImpl.java b/src/main/java/com/rj/service/impl/TenantServiceImpl.java new file mode 100644 index 0000000..2bb2609 --- /dev/null +++ b/src/main/java/com/rj/service/impl/TenantServiceImpl.java @@ -0,0 +1,143 @@ +package com.rj.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.rj.entity.Tenant; +import com.rj.mapper.TenantMapper; +import com.rj.service.ITenantService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + *

+ * 租户表 服务实现类 + *

+ * + * @author 系统生成 + * @since 2025-01-XX + */ +@Service +public class TenantServiceImpl extends ServiceImpl implements ITenantService { + + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public Map getTenantList(Integer current, Integer size, String tenantCode, + String tenantName, Integer status, String contactName, + String contactPhone, String expireStartTime, String expireEndTime) { + Map result = new HashMap<>(); + try { + Page page = new Page<>(current, size); + LambdaQueryWrapper queryWrapper = buildQueryWrapper(tenantCode, tenantName, status, + contactName, contactPhone, + expireStartTime, expireEndTime); + + // 按创建时间倒序排列 + queryWrapper.orderByDesc(Tenant::getCreateTime); + + Page tenantPage = this.page(page, queryWrapper); + + result.put("success", true); + result.put("message", "查询成功"); + result.put("data", tenantPage.getRecords()); + result.put("total", tenantPage.getTotal()); + result.put("current", tenantPage.getCurrent()); + result.put("size", tenantPage.getSize()); + result.put("pages", tenantPage.getPages()); + } catch (Exception e) { + result.put("success", false); + result.put("message", "查询异常:" + e.getMessage()); + } + return result; + } + + @Override + public Map getTenantListWithoutPage(String tenantCode, String tenantName, + Integer status, String contactName, + String contactPhone, String expireStartTime, + String expireEndTime) { + Map result = new HashMap<>(); + try { + LambdaQueryWrapper queryWrapper = buildQueryWrapper(tenantCode, tenantName, status, + contactName, contactPhone, + expireStartTime, expireEndTime); + + // 按创建时间倒序排列 + queryWrapper.orderByDesc(Tenant::getCreateTime); + + List tenantList = this.list(queryWrapper); + + result.put("success", true); + result.put("message", "查询成功"); + result.put("data", tenantList); + result.put("total", tenantList.size()); + } catch (Exception e) { + result.put("success", false); + result.put("message", "查询异常:" + e.getMessage()); + } + return result; + } + + /** + * 构建查询条件 + */ + private LambdaQueryWrapper buildQueryWrapper(String tenantCode, String tenantName, + Integer status, String contactName, + String contactPhone, String expireStartTime, + String expireEndTime) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + // 租户编码(精确查询) + if (tenantCode != null && !tenantCode.trim().isEmpty()) { + queryWrapper.eq(Tenant::getTenantCode, tenantCode); + } + + // 租户名称(模糊查询) + if (tenantName != null && !tenantName.trim().isEmpty()) { + queryWrapper.like(Tenant::getTenantName, tenantName); + } + + // 状态 + if (status != null) { + queryWrapper.eq(Tenant::getStatus, status); + } + + // 联系人姓名(模糊查询) + if (contactName != null && !contactName.trim().isEmpty()) { + queryWrapper.like(Tenant::getContactName, contactName); + } + + // 联系人电话 + if (contactPhone != null && !contactPhone.trim().isEmpty()) { + queryWrapper.like(Tenant::getContactPhone, contactPhone); + } + + // 过期时间范围查询 + if (expireStartTime != null && !expireStartTime.trim().isEmpty()) { + try { + LocalDateTime startTime = LocalDateTime.parse(expireStartTime, DATE_TIME_FORMATTER); + queryWrapper.ge(Tenant::getExpireTime, startTime); + } catch (Exception e) { + // 如果时间格式解析失败,忽略该条件 + } + } + + if (expireEndTime != null && !expireEndTime.trim().isEmpty()) { + try { + LocalDateTime endTime = LocalDateTime.parse(expireEndTime, DATE_TIME_FORMATTER); + queryWrapper.le(Tenant::getExpireTime, endTime); + } catch (Exception e) { + // 如果时间格式解析失败,忽略该条件 + } + } + + return queryWrapper; + } +} +