设备列表 视频流服务器
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package org.dromara.system.api;
|
||||
|
||||
import org.dromara.common.core.domain.PageResult;
|
||||
import org.dromara.system.api.domain.AppUserDTO;
|
||||
import org.dromara.system.api.domain.AppUserQueryDTO;
|
||||
|
||||
/**
|
||||
* APP 用户(C 端)领域服务对外暴露的 API。
|
||||
@@ -134,4 +136,48 @@ public interface AppUserApiService {
|
||||
*/
|
||||
boolean isPhoneBound(Long userId);
|
||||
|
||||
// ---------------- 后台管理端(APP 用户管理) ----------------
|
||||
|
||||
/**
|
||||
* 分页查询 APP 用户列表(后台「APP 用户管理」用)。
|
||||
* <p>
|
||||
* <b>强制口径</b>:实现侧固定附加 {@code user_type = app_user} 条件,
|
||||
* 调用方<b>无法</b>通过 {@link AppUserQueryDTO} 覆盖该条件,
|
||||
* 因此本方法<b>恒不返回</b>后台账号({@code sys_user})。
|
||||
* <p>
|
||||
* <b>数据权限</b>:APP 用户注册时不写 {@code dept_id}(该列恒为 {@code NULL}),
|
||||
* 不参与后台部门树,故实现侧<b>刻意不加</b>框架 {@code @DataPermission} 过滤——
|
||||
* 否则按部门维度过滤会把全部 APP 用户过滤为空。
|
||||
*
|
||||
* @param query 查询条件(关键词 / 状态 / 注册时间区间 / 分页)
|
||||
* @return APP 用户分页结果(不含密码)
|
||||
*/
|
||||
PageResult<AppUserDTO> selectAppUserPage(AppUserQueryDTO query);
|
||||
|
||||
/**
|
||||
* 按主键查询 APP 用户详情(后台「APP 用户管理」用)。
|
||||
* <p>
|
||||
* 同样强制 {@code user_type = app_user}:传入后台账号主键时返回 {@code null},
|
||||
* 避免管理端越界读到系统账号信息。
|
||||
*
|
||||
* @param userId 用户主键
|
||||
* @return APP 用户信息(不含密码);不存在或非 app_user 时返回 {@code null}
|
||||
*/
|
||||
AppUserDTO selectAppUserById(Long userId);
|
||||
|
||||
/**
|
||||
* 修改 APP 用户账号状态(停用 / 启用)。
|
||||
* <p>
|
||||
* 与 {@link #disableUser(Long)} 的区别:本方法同时支持<b>恢复启用</b>,
|
||||
* 供后台管理端做双向状态切换;{@code disableUser} 保持「注销前置」单向语义不变。
|
||||
* <p>
|
||||
* <b>安全约束</b>:实现侧限定 {@code user_type = app_user},
|
||||
* 防止通过本方法改动后台账号状态。
|
||||
*
|
||||
* @param userId 用户主键
|
||||
* @param status 目标状态({@code 0} 正常 / {@code 1} 停用)
|
||||
* @return true 修改成功(含目标状态与当前一致的情形)
|
||||
*/
|
||||
boolean updateStatus(Long userId, String status);
|
||||
|
||||
}
|
||||
|
||||
@@ -61,8 +61,15 @@ public class AppUserDTO implements Serializable {
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
* 创建时间(注册时间)
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
* <p>
|
||||
* 供后台「APP 用户管理」展示「最近变更时间」(改密 / 换绑 / 停用等均会刷新该值)。
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.dromara.system.api.domain;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* APP 用户管理查询条件(后台管理端使用)。
|
||||
* <p>
|
||||
* <b>为什么单独建一个 DTO 而不是复用 {@code SysUserBo} + {@code PageQuery}</b>:
|
||||
* {@code ruoyi-api} 模块仅依赖 {@code ruoyi-common-core}(见 {@code ruoyi-api/pom.xml}),
|
||||
* 而 {@code PageQuery} 位于 {@code ruoyi-common-mybatis},<b>在本模块不可见</b>。
|
||||
* 因此分页参数直接内联为 {@code pageNum} / {@code pageSize},由 {@code ruoyi-system} 侧
|
||||
* 组装成框架 {@code Page},从而在不放松模块依赖边界的前提下完成跨模块分页契约。
|
||||
* <p>
|
||||
* <b>日期区间用 {@link #params} 而非平铺字段</b>:与框架既有约定保持一致——
|
||||
* 前端 {@code utils/ruoyi.ts#addDateRange}(经 {@code useDateRangeQuery} hook 调用)
|
||||
* 把区间写入 {@code params.beginTime} / {@code params.endTime},
|
||||
* 后端 {@code betweenParams(column, params, "beginTime", "endTime")} 消费,
|
||||
* 故此处必须保留同名的 {@code params} 载体,前端才能直接复用现成 hook。
|
||||
* <p>
|
||||
* <b>不含 {@code userType}</b>:本查询只为 APP 用户({@code user_type = app_user})服务,
|
||||
* 该条件由实现侧强制附加、不可由调用方覆盖——避免调用方漏传而把后台账号一并查出。
|
||||
*
|
||||
* @author Kou
|
||||
* @date 2026-09-17
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class AppUserQueryDTO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 关键词:模糊匹配 user_name / nick_name / phone_number / email(四字段 OR)。
|
||||
*/
|
||||
private String keyword;
|
||||
|
||||
/**
|
||||
* 账号状态(0 正常 1 停用);留空不参与过滤。
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 扩展查询参数。
|
||||
* <p>
|
||||
* 约定键:{@code beginTime} / {@code endTime}——注册时间区间(闭区间)。
|
||||
* 两者<b>均非空</b>时才生效(与框架 {@code betweenParams} 口径一致)。
|
||||
* 注意:框架<b>不做</b>「日期补 23:59:59」的隐式处理,前端选「日期」而非「日期时间」时
|
||||
* 需自行补全时分秒,否则会漏掉结束日当天数据。
|
||||
*/
|
||||
private Map<String, Object> params = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 页码(从 1 开始);为空时按 1 处理。
|
||||
*/
|
||||
private Integer pageNum;
|
||||
|
||||
/**
|
||||
* 每页条数;为空时按 10 处理。
|
||||
*/
|
||||
private Integer pageSize;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user