mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-09 20:57:21 +08:00
revert: 还原 终端 => 客户端(终端容易被误解)
This commit is contained in:
@@ -135,7 +135,7 @@ public class DeptController extends BaseController<DeptService, DeptResp, DeptDe
|
||||
- 邮件配置:提供系统发件箱配置,也支持通过配置文件指定
|
||||
- 短信配置:提供系统短信服务配置,也支持通过配置文件指定
|
||||
- 存储配置:管理文件存储配置,支持本地存储、兼容 S3 协议对象存储
|
||||
- 终端配置:多端认证管理,可设置不同的 token 有效期
|
||||
- 客户端配置:多端(PC端、小程序端等)认证管理,可设置不同的 token 有效期
|
||||
- 在线用户:管理当前登录用户,可一键踢除下线
|
||||
- 日志管理:管理系统登录日志、操作日志,支持查看日志详情,包含请求头、响应头等报文信息
|
||||
- 短信日志:管理系统短信发送日志,支持删除、导出
|
||||
|
@@ -81,12 +81,12 @@ public class UserContext implements Serializable {
|
||||
private Set<RoleContext> roles;
|
||||
|
||||
/**
|
||||
* 终端类型
|
||||
* 客户端类型
|
||||
*/
|
||||
private String clientType;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
private String clientId;
|
||||
|
||||
|
@@ -84,7 +84,7 @@ public abstract class AbstractLoginHandler<T extends LoginReq> implements LoginH
|
||||
* 认证
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @param client 终端信息
|
||||
* @param client 客户端信息
|
||||
* @return token 令牌信息
|
||||
*/
|
||||
protected String authenticate(UserDO user, ClientResp client) {
|
||||
|
@@ -35,7 +35,7 @@ public interface LoginHandler<T extends LoginReq> {
|
||||
* 登录
|
||||
*
|
||||
* @param req 登录请求参数
|
||||
* @param client 终端信息
|
||||
* @param client 客户端信息
|
||||
* @param request 请求对象
|
||||
* @return 登录响应参数
|
||||
*/
|
||||
@@ -45,7 +45,7 @@ public interface LoginHandler<T extends LoginReq> {
|
||||
* 登录前置处理
|
||||
*
|
||||
* @param req 登录请求参数
|
||||
* @param client 终端信息
|
||||
* @param client 客户端信息
|
||||
* @param request 请求对象
|
||||
*/
|
||||
void preLogin(T req, ClientResp client, HttpServletRequest request);
|
||||
@@ -54,7 +54,7 @@ public interface LoginHandler<T extends LoginReq> {
|
||||
* 登录后置处理
|
||||
*
|
||||
* @param req 登录请求参数
|
||||
* @param client 终端信息
|
||||
* @param client 客户端信息
|
||||
* @param request 请求对象
|
||||
*/
|
||||
void postLogin(T req, ClientResp client, HttpServletRequest request);
|
||||
|
@@ -44,9 +44,9 @@ public class OnlineUserQuery implements Serializable {
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
@Schema(description = "终端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@Schema(description = "客户端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
|
@@ -47,10 +47,10 @@ public class LoginReq implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
@Schema(description = "终端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@NotBlank(message = "终端ID不能为空")
|
||||
@Schema(description = "客户端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@NotBlank(message = "客户端ID不能为空")
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
|
@@ -69,15 +69,15 @@ public class OnlineUserResp implements Serializable {
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 终端类型
|
||||
* 客户端类型
|
||||
*/
|
||||
@Schema(description = "终端类型", example = "PC")
|
||||
@Schema(description = "客户端类型", example = "PC")
|
||||
private String clientType;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
@Schema(description = "终端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@Schema(description = "客户端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
|
@@ -68,11 +68,11 @@ public class AuthServiceImpl implements AuthService {
|
||||
@Override
|
||||
public LoginResp login(LoginReq req, HttpServletRequest request) {
|
||||
AuthTypeEnum authType = req.getAuthType();
|
||||
// 校验终端
|
||||
// 校验客户端
|
||||
ClientResp client = clientService.getByClientId(req.getClientId());
|
||||
ValidationUtils.throwIfNull(client, "终端不存在");
|
||||
ValidationUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(client.getStatus()), "终端已禁用");
|
||||
ValidationUtils.throwIf(!client.getAuthType().contains(authType.getValue()), "该终端暂未授权 [{}] 认证", authType
|
||||
ValidationUtils.throwIfNull(client, "客户端不存在");
|
||||
ValidationUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(client.getStatus()), "客户端已禁用");
|
||||
ValidationUtils.throwIf(!client.getAuthType().contains(authType.getValue()), "该客户端暂未授权 [{}] 认证", authType
|
||||
.getDescription());
|
||||
// 获取处理器
|
||||
LoginHandler<LoginReq> loginHandler = loginHandlerFactory.getHandler(authType);
|
||||
|
@@ -124,11 +124,11 @@ public class OnlineUserServiceImpl implements OnlineUserService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否匹配终端 ID
|
||||
* 是否匹配客户端 ID
|
||||
*
|
||||
* @param clientId 终端 ID
|
||||
* @param clientId 客户端 ID
|
||||
* @param userContext 用户上下文信息
|
||||
* @return 是否匹配终端 ID
|
||||
* @return 是否匹配客户端 ID
|
||||
*/
|
||||
private boolean isMatchClientId(String clientId, UserContext userContext) {
|
||||
if (StrUtil.isBlank(clientId)) {
|
||||
|
@@ -20,7 +20,7 @@ import top.continew.admin.system.model.entity.ClientDO;
|
||||
import top.continew.starter.data.mp.base.BaseMapper;
|
||||
|
||||
/**
|
||||
* 终端 Mapper
|
||||
* 客户端 Mapper
|
||||
*
|
||||
* @author KAI
|
||||
* @since 2024/12/03 16:04
|
||||
|
@@ -27,7 +27,7 @@ import java.io.Serial;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端实体
|
||||
* 客户端实体
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
@@ -41,12 +41,12 @@ public class ClientDO extends BaseDO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
* 终端类型
|
||||
* 客户端类型
|
||||
*/
|
||||
private String clientType;
|
||||
|
||||
|
@@ -27,23 +27,23 @@ import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端查询条件
|
||||
* 客户端查询条件
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
* @since 2024/12/03 16:04
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "终端查询条件")
|
||||
@Schema(description = "客户端查询条件")
|
||||
public class ClientQuery implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 终端类型
|
||||
* 客户端类型
|
||||
*/
|
||||
@Schema(description = "终端类型", example = "PC")
|
||||
@Schema(description = "客户端类型", example = "PC")
|
||||
private String clientType;
|
||||
|
||||
/**
|
||||
|
@@ -28,25 +28,25 @@ import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 创建或修改终端参数
|
||||
* 创建或修改客户端参数
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
* @since 2024/12/03 16:04
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "创建或修改终端参数")
|
||||
@Schema(description = "创建或修改客户端参数")
|
||||
public class ClientReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 终端类型
|
||||
* 客户端类型
|
||||
*/
|
||||
@Schema(description = "终端类型", example = "PC")
|
||||
@NotBlank(message = "终端类型不能为空")
|
||||
@Length(max = 32, message = "终端类型长度不能超过 {max} 个字符")
|
||||
@Schema(description = "客户端类型", example = "PC")
|
||||
@NotBlank(message = "客户端类型不能为空")
|
||||
@Length(max = 32, message = "客户端类型长度不能超过 {max} 个字符")
|
||||
private String clientType;
|
||||
|
||||
/**
|
||||
@@ -75,7 +75,7 @@ public class ClientReq implements Serializable {
|
||||
private DisEnableStatusEnum status;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
@Schema(hidden = true)
|
||||
private String clientId;
|
||||
|
@@ -31,7 +31,7 @@ import java.io.Serial;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端信息
|
||||
* 客户端信息
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
@@ -39,24 +39,24 @@ import java.util.List;
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@Schema(description = "终端信息")
|
||||
@Schema(description = "客户端信息")
|
||||
public class ClientResp extends BaseDetailResp {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 终端 ID
|
||||
* 客户端 ID
|
||||
*/
|
||||
@Schema(description = "终端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@ExcelProperty(value = "终端 ID", order = 2)
|
||||
@Schema(description = "客户端 ID", example = "ef51c9a3e9046c4f2ea45142c8a8344a")
|
||||
@ExcelProperty(value = "客户端 ID", order = 2)
|
||||
private String clientId;
|
||||
|
||||
/**
|
||||
* 终端类型(取值于字典 client_type
|
||||
* 客户端类型(取值于字典 client_type
|
||||
*/
|
||||
@Schema(description = "终端类型(取值于字典 client_type)", example = "PC")
|
||||
@ExcelProperty(value = "终端类型", converter = ExcelDictConverter.class, order = 5)
|
||||
@Schema(description = "客户端类型(取值于字典 client_type)", example = "PC")
|
||||
@ExcelProperty(value = "客户端类型", converter = ExcelDictConverter.class, order = 5)
|
||||
@DictExcelProperty("client_type")
|
||||
private String clientType;
|
||||
|
||||
|
@@ -22,7 +22,7 @@ import top.continew.admin.system.model.resp.ClientResp;
|
||||
import top.continew.starter.extension.crud.service.BaseService;
|
||||
|
||||
/**
|
||||
* 终端业务接口
|
||||
* 客户端业务接口
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
@@ -31,10 +31,10 @@ import top.continew.starter.extension.crud.service.BaseService;
|
||||
public interface ClientService extends BaseService<ClientResp, ClientResp, ClientQuery, ClientReq> {
|
||||
|
||||
/**
|
||||
* 根据终端 ID 查詢
|
||||
* 根据客户端 ID 查詢
|
||||
*
|
||||
* @param clientId 终端 ID
|
||||
* @return 终端信息
|
||||
* @param clientId 客户端 ID
|
||||
* @return 客户端信息
|
||||
*/
|
||||
ClientResp getByClientId(String clientId);
|
||||
}
|
@@ -37,7 +37,7 @@ import top.continew.starter.extension.crud.service.BaseServiceImpl;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 终端业务实现
|
||||
* 客户端业务实现
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
@@ -63,7 +63,7 @@ public class ClientServiceImpl extends BaseServiceImpl<ClientMapper, ClientDO, C
|
||||
for (Long id : ids) {
|
||||
ClientDO client = this.getById(id);
|
||||
query.setClientId(client.getClientId());
|
||||
CheckUtils.throwIfNotEmpty(onlineUserService.list(query), "终端 [{}] 还存在在线用户,不能删除", client.getClientId());
|
||||
CheckUtils.throwIfNotEmpty(onlineUserService.list(query), "客户端 [{}] 还存在在线用户,不能删除", client.getClientId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -105,7 +105,7 @@ public class DemoEnvironmentJob {
|
||||
Long appCount = appMapper.lambdaQuery().gt(AppDO::getId, DELETE_FLAG).count();
|
||||
this.log(appCount, "应用");
|
||||
Long clientCount = clientsMapper.lambdaQuery().gt(ClientDO::getId, DELETE_FLAG).count();
|
||||
this.log(clientCount, "终端");
|
||||
this.log(clientCount, "客户端");
|
||||
InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().blockAttack(true).build());
|
||||
SnailJobLog.REMOTE.info("演示环境待清理数据项检测完成,开始执行清理。");
|
||||
// 清理关联数据
|
||||
@@ -138,7 +138,7 @@ public class DemoEnvironmentJob {
|
||||
.remove());
|
||||
this.clean(deptCount, "部门", null, () -> deptMapper.lambdaUpdate().gt(DeptDO::getId, DEPT_FLAG).remove());
|
||||
this.clean(appCount, "应用", null, () -> appMapper.lambdaUpdate().gt(AppDO::getId, DEPT_FLAG).remove());
|
||||
this.clean(clientCount, "终端", null, () -> clientsMapper.lambdaUpdate()
|
||||
this.clean(clientCount, "客户端", null, () -> clientsMapper.lambdaUpdate()
|
||||
.gt(ClientDO::getId, DEPT_FLAG)
|
||||
.remove());
|
||||
SnailJobLog.REMOTE.info("演示环境数据已清理完成。");
|
||||
|
@@ -27,12 +27,12 @@ import top.continew.starter.extension.crud.annotation.CrudRequestMapping;
|
||||
import top.continew.starter.extension.crud.enums.Api;
|
||||
|
||||
/**
|
||||
* 终端管理 API
|
||||
* 客户端管理 API
|
||||
*
|
||||
* @author KAI
|
||||
* @since 2024/12/03 16:04
|
||||
*/
|
||||
@Tag(name = "终端管理 API")
|
||||
@Tag(name = "客户端管理 API")
|
||||
@RestController
|
||||
@CrudRequestMapping(value = "/system/client", api = {Api.PAGE, Api.GET, Api.CREATE, Api.UPDATE, Api.DELETE})
|
||||
public class ClientController extends BaseController<ClientService, ClientResp, ClientResp, ClientQuery, ClientReq> {
|
||||
|
@@ -101,7 +101,7 @@ VALUES
|
||||
(1235, '删除', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 5, 1, 1, NOW()),
|
||||
(1236, '修改状态', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:updateStatus', 6, 1, 1, NOW()),
|
||||
(1237, '设为默认存储', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:setDefault', 7, 1, 1, NOW()),
|
||||
(1250, '终端配置', 1150, 2, '/system/config?tab=client', 'SystemClient', 'system/config/client/index', NULL, 'mobile', b'0', b'0', b'1', NULL, 7, 1, 1, NOW()),
|
||||
(1250, '客户端配置', 1150, 2, '/system/config?tab=client', 'SystemClient', 'system/config/client/index', NULL, 'mobile', b'0', b'0', b'1', NULL, 7, 1, 1, NOW()),
|
||||
(1251, '列表', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:list', 1, 1, 1, NOW()),
|
||||
(1252, '详情', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:get', 2, 1, 1, NOW()),
|
||||
(1253, '新增', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:create', 3, 1, 1, NOW()),
|
||||
@@ -214,7 +214,7 @@ INSERT INTO `sys_dict`
|
||||
VALUES
|
||||
(1, '公告类型', 'notice_type', NULL, b'1', 1, NOW()),
|
||||
(2, '消息类型', 'message_type', NULL, b'1', 1, NOW()),
|
||||
(3, '终端类型', 'client_type', NULL, b'1', 1, NOW());
|
||||
(3, '客户端类型', 'client_type', NULL, b'1', 1, NOW());
|
||||
|
||||
INSERT INTO `sys_dict_item`
|
||||
(`id`, `label`, `value`, `color`, `sort`, `description`, `status`, `dict_id`, `create_user`, `create_time`)
|
||||
@@ -271,7 +271,7 @@ VALUES
|
||||
(1, '开发环境', 'local_dev', 1, NULL, NULL, NULL, 'C:/continew-admin/data/file/', 'http://localhost:8000/file', '本地存储', b'1', 1, 1, 1, NOW()),
|
||||
(2, '生产环境', 'local_prod', 1, NULL, NULL, NULL, '../data/file/', 'http://api.continew.top/file', '本地存储', b'0', 2, 2, 1, NOW());
|
||||
|
||||
-- 初始化终端数据
|
||||
-- 初始化客户端数据
|
||||
INSERT INTO `sys_client`
|
||||
(`id`, `client_id`, `client_type`, `auth_type`, `active_timeout`, `timeout`, `status`, `create_user`, `create_time`)
|
||||
VALUES
|
||||
|
@@ -307,8 +307,8 @@ CREATE TABLE IF NOT EXISTS `sys_file` (
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_client` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
`client_id` varchar(50) NOT NULL COMMENT '终端ID',
|
||||
`client_type` varchar(50) NOT NULL COMMENT '终端类型',
|
||||
`client_id` varchar(50) NOT NULL COMMENT '客户端ID',
|
||||
`client_type` varchar(50) NOT NULL COMMENT '客户端类型',
|
||||
`auth_type` json NOT NULL COMMENT '认证类型',
|
||||
`active_timeout` bigint(20) DEFAULT -1 COMMENT 'Token最低活跃频率(单位:秒,-1:不限制,永不冻结)',
|
||||
`timeout` bigint(20) DEFAULT 2592000 COMMENT 'Token有效期(单位:秒,-1:永不过期)',
|
||||
@@ -321,7 +321,7 @@ CREATE TABLE IF NOT EXISTS `sys_client` (
|
||||
UNIQUE INDEX `uk_client_id`(`client_id`),
|
||||
INDEX `idx_create_user`(`create_user`),
|
||||
INDEX `idx_update_user`(`update_user`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='终端表';
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户端表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `sys_sms_config` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||||
|
@@ -101,7 +101,7 @@ VALUES
|
||||
(1235, '删除', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:delete', 5, 1, 1, NOW()),
|
||||
(1236, '修改状态', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:updateStatus', 6, 1, 1, NOW()),
|
||||
(1237, '设为默认存储', 1230, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:storage:setDefault', 7, 1, 1, NOW()),
|
||||
(1250, '终端配置', 1150, 2, '/system/config?tab=client', 'SystemClient', 'system/config/client/index', NULL, 'mobile', false, false, true, NULL, 7, 1, 1, NOW()),
|
||||
(1250, '客户端配置', 1150, 2, '/system/config?tab=client', 'SystemClient', 'system/config/client/index', NULL, 'mobile', false, false, true, NULL, 7, 1, 1, NOW()),
|
||||
(1251, '列表', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:list', 1, 1, 1, NOW()),
|
||||
(1252, '详情', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:get', 2, 1, 1, NOW()),
|
||||
(1253, '新增', 1250, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'system:client:create', 3, 1, 1, NOW()),
|
||||
@@ -214,7 +214,7 @@ INSERT INTO "sys_dict"
|
||||
VALUES
|
||||
(1, '公告类型', 'notice_type', NULL, true, 1, NOW()),
|
||||
(2, '消息类型', 'message_type', NULL, true, 1, NOW()),
|
||||
(3, '终端类型', 'client_type', NULL, true, 1, NOW());
|
||||
(3, '客户端类型', 'client_type', NULL, true, 1, NOW());
|
||||
|
||||
INSERT INTO "sys_dict_item"
|
||||
("id", "label", "value", "color", "sort", "description", "status", "dict_id", "create_user", "create_time")
|
||||
@@ -271,7 +271,7 @@ VALUES
|
||||
(1, '开发环境', 'local_dev', 1, NULL, NULL, NULL, 'C:/continew-admin/data/file/', 'http://localhost:8000/file', '本地存储', true, 1, 1, 1, NOW()),
|
||||
(2, '生产环境', 'local_prod', 1, NULL, NULL, NULL, '../data/file/', 'http://api.continew.top/file', '本地存储', false, 2, 2, 1, NOW());
|
||||
|
||||
-- 初始化终端数据
|
||||
-- 初始化客户端数据
|
||||
INSERT INTO "sys_client"
|
||||
("id", "client_id", "client_type", "auth_type", "active_timeout", "timeout", "status", "create_user", "create_time")
|
||||
VALUES
|
||||
|
@@ -529,8 +529,8 @@ CREATE UNIQUE INDEX "uk_client_client_id" ON "sys_client" ("client_id");
|
||||
CREATE INDEX "idx_client_create_user" ON "sys_client" ("create_user");
|
||||
CREATE INDEX "idx_client_update_user" ON "sys_client" ("update_user");
|
||||
COMMENT ON COLUMN "sys_client"."id" IS 'ID';
|
||||
COMMENT ON COLUMN "sys_client"."client_id" IS '终端ID';
|
||||
COMMENT ON COLUMN "sys_client"."client_type" IS '终端类型';
|
||||
COMMENT ON COLUMN "sys_client"."client_id" IS '客户端ID';
|
||||
COMMENT ON COLUMN "sys_client"."client_type" IS '客户端类型';
|
||||
COMMENT ON COLUMN "sys_client"."auth_type" IS '认证类型';
|
||||
COMMENT ON COLUMN "sys_client"."active_timeout" IS 'Token最低活跃频率(单位:秒,-1:不限制,永不冻结)';
|
||||
COMMENT ON COLUMN "sys_client"."timeout" IS 'Token有效期(单位:秒,-1:永不过期)';
|
||||
@@ -539,7 +539,7 @@ COMMENT ON COLUMN "sys_client"."create_user" IS '创建人';
|
||||
COMMENT ON COLUMN "sys_client"."create_time" IS '创建时间';
|
||||
COMMENT ON COLUMN "sys_client"."update_user" IS '修改人';
|
||||
COMMENT ON COLUMN "sys_client"."update_time" IS '修改时间';
|
||||
COMMENT ON TABLE "sys_client" IS '终端表';
|
||||
COMMENT ON TABLE "sys_client" IS '客户端表';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "sys_sms_config" (
|
||||
"id" int8 NOT NULL,
|
||||
|
Reference in New Issue
Block a user