wrapper = new QueryWrapper<>();
+ if (queryObj == null) return wrapper;
+
+ Class> clazz = queryObj.getClass();
+ for (Field field : clazz.getDeclaredFields()) {
+ field.setAccessible(true);
+ QueryField annotation = field.getAnnotation(QueryField.class);
+ if (annotation == null) continue;
+
+ try {
+ Object value = field.get(queryObj);
+ if (value == null || (value instanceof String && !StringUtils.hasText((String) value))) {
+ continue;
+ }
+
+ String column = StringUtils.hasText(annotation.column()) ? annotation.column() : field.getName();
+
+ switch (annotation.type()) {
+ case EQ:
+ wrapper.eq(column, value); break;
+ case LIKE:
+ wrapper.like(column, value); break;
+ case GT:
+ wrapper.gt(column, value); break;
+ case LT:
+ wrapper.lt(column, value); break;
+ case GE:
+ wrapper.ge(column, value); break;
+ case LE:
+ wrapper.le(column, value); break;
+ }
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ return wrapper;
+ }
+}
diff --git a/src/main/java/com/example/admin_server/controller/admin/SystemController.java b/src/main/java/com/example/admin_server/controller/admin/SystemController.java
new file mode 100644
index 0000000..1d992ab
--- /dev/null
+++ b/src/main/java/com/example/admin_server/controller/admin/SystemController.java
@@ -0,0 +1,28 @@
+package com.example.admin_server.controller.admin;
+
+import com.example.admin_server.common.Result;
+import com.example.admin_server.common.query.IPageRequest;
+import com.example.admin_server.model.query.AdminQuery;
+import com.example.admin_server.service.IAdminService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/api/admin/system")
+@RequiredArgsConstructor
+@Api(tags = {"系统管理"})
+public class SystemController {
+
+ private final IAdminService iAdminService;
+
+ @GetMapping("/user/list")
+ @ApiOperation("系统用户列表")
+ public Result> getAdminUserList(AdminQuery query, IPageRequest pageRequest) {
+ return Result.ok(iAdminService.pageList(pageRequest, query));
+ }
+}
diff --git a/src/main/java/com/example/admin_server/model/query/AdminQuery.java b/src/main/java/com/example/admin_server/model/query/AdminQuery.java
new file mode 100644
index 0000000..9371b21
--- /dev/null
+++ b/src/main/java/com/example/admin_server/model/query/AdminQuery.java
@@ -0,0 +1,18 @@
+package com.example.admin_server.model.query;
+
+import com.example.admin_server.common.query.QueryField;
+import com.example.admin_server.common.query.QueryType;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class AdminQuery {
+
+ @QueryField(type = QueryType.LIKE)
+ @ApiModelProperty("用户名")
+ private String username;
+
+ @QueryField(type = QueryType.EQ)
+ @ApiModelProperty("状态")
+ private Integer status;
+}
diff --git a/src/main/java/com/example/admin_server/model/vo/AdminVO.java b/src/main/java/com/example/admin_server/model/vo/AdminVO.java
new file mode 100644
index 0000000..9c2e79d
--- /dev/null
+++ b/src/main/java/com/example/admin_server/model/vo/AdminVO.java
@@ -0,0 +1,68 @@
+package com.example.admin_server.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 后台管理员表
+ *
+ *
+ * @author FallingCliff
+ * @since 2025-05-24
+ */
+@Data
+@ApiModel(value="Admin对象")
+public class AdminVO implements Serializable {
+
+ @ApiModelProperty(value = "主键ID")
+ private Long id;
+
+ @ApiModelProperty(value = "用户名")
+ private String username;
+
+ @ApiModelProperty(value = "姓名")
+ @TableField("real_name")
+ private String realName;
+
+ @ApiModelProperty(value = "邮箱")
+ @TableField("email")
+ private String email;
+
+ @ApiModelProperty(value = "手机号")
+ @TableField("phone")
+ private String phone;
+
+ @ApiModelProperty(value = "头像")
+ @TableField("avatar")
+ private String avatar;
+
+ @ApiModelProperty(value = "状态:0禁用,1正常")
+ @TableField("status")
+ private Integer status;
+
+ @ApiModelProperty(value = "是否为超级管理员:1是,0否")
+ @TableField("is_super")
+ private Integer isSuper;
+
+ @ApiModelProperty(value = "上次登录IP")
+ @TableField("last_login_ip")
+ private String lastLoginIp;
+
+ @ApiModelProperty(value = "上次登录时间")
+ @TableField("last_login_time")
+ private LocalDateTime lastLoginTime;
+
+ @ApiModelProperty(value = "创建时间")
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ @TableField("update_time")
+ private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/example/admin_server/service/IAdminService.java b/src/main/java/com/example/admin_server/service/IAdminService.java
index 1db91a8..580461b 100644
--- a/src/main/java/com/example/admin_server/service/IAdminService.java
+++ b/src/main/java/com/example/admin_server/service/IAdminService.java
@@ -1,7 +1,10 @@
package com.example.admin_server.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.example.admin_server.common.query.IPageRequest;
import com.example.admin_server.model.entity.Admin;
+import com.example.admin_server.model.query.AdminQuery;
/**
*
@@ -12,5 +15,5 @@ import com.example.admin_server.model.entity.Admin;
* @since 2025-05-24
*/
public interface IAdminService extends IService {
-
+ IPage pageList(IPageRequest pageRequest, AdminQuery query);
}
diff --git a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java
index e3c0440..29cc22a 100644
--- a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java
+++ b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java
@@ -1,8 +1,14 @@
package com.example.admin_server.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.example.admin_server.common.query.IPageRequest;
+import com.example.admin_server.common.query.QueryWrapperBuilder;
import com.example.admin_server.mapper.AdminMapper;
import com.example.admin_server.model.entity.Admin;
+import com.example.admin_server.model.query.AdminQuery;
import com.example.admin_server.service.IAdminService;
import org.springframework.stereotype.Service;
@@ -18,4 +24,10 @@ import org.springframework.stereotype.Service;
public class AdminServiceImpl extends ServiceImpl implements IAdminService {
+ @Override
+ public IPage pageList(IPageRequest pageRequest, AdminQuery query) {
+ Page page = pageRequest.toPage();
+ QueryWrapper wrapper = QueryWrapperBuilder.build(query, Admin.class);
+ return this.page(page, wrapper);
+ }
}