declare namespace Model {
    /** 获取角色菜单列表信息 请求 */
    interface RoleReq {
        type: number; // 角色信息：1 系统角色 2 管理员角色
        pageNum?: number; // 当前页
        pageSize?: number; // 页大小
    }

    /** 获取角色菜单列表信息 响应 */
    interface RoleRsp {
        areauserid: number; // 所属机构
        autoid: number; // 角色ID(自增ID) – D
        menuids: string[]; // 勾选菜单code – A,U
        modifierid: number; // 修改人
        modifiername: string; // 用户名称（创建人）
        modifytime: string; // 修改时间
        rolename: string; // 角色名称 – A
        rolestatus: number; // 角色状态 - 1:启用 2：停用
        roletype: number; // 角色类型 - 1- 管理端 2- 交易端
        sensitivefields: string; // 敏感字段权限(JSON字符串)：1-客户手机号，2-客户证件号码，3-客户邮箱 – A,U
        type: number; // 角色信息：1 系统角色 2 管理员角色 – Q
    }

    /** 获取当前角色详情信息 请求 */
    interface RoleDetailReq {
        autoId: number;
    }

    /** 会员机构管理-->机构管理-->系统角色管理-->获取当前角色关联关系 请求 */
    interface RoleUserReq {
        autoId: number;
    }

    /** 会员机构管理-->机构管理-->系统角色管理-->获取当前角色关联关系 响应 */
    interface RoleUserRsp {
        accountNonExpired: boolean;
        accountNonLocked: boolean;
        areauserid: number; // 所属机构ID
        authorities: {
            authority: string;
        }[];
        autoid: number; // 自增ID
        credentialsNonExpired: boolean;
        enabled: boolean;
        isdefault: number; // 是否默认管理员 - 0:不是默认 1:默认管理员
        logincode: string; // 用户登录账号,唯一索引
        loginfailnum: number; // 登录失败次数
        loginip: string; // 登录IP
        loginport: number; // 登录端口
        loginstatus: number; // 登录状态:1未登录 2已登录
        logintime: string; // 登录时间
        managerstatus: number; // 用户状态： 1启用 2停用 3锁定(密码错误时锁定)
        managertype: number; // 账号类型 - 1:管理员 2:交易员
        modifytime: string; // 修改时间
        onymac: number; // 是否启用MAC地址 - 0:否 1:是
        password: string; // 加密方式采用 用户名+密码 ,采用 SHA 算法
        pwdexpdate: string; // 密码失效日期
        reletype: number; // 用户类型 - 1- 交易所管理员 2- 机构管理员 3-子机构管理员
        remark: string; // 备注
        systemtype: number; // 系统类型 - 1:旧管理端 2:新管理端
        uploginid: number; // 修改人ID
        username: string; // 用户姓名
    }

    /** 管理员查询 请求 */
    interface SystemmanagerReq {
        areaUserId?: number; // 所属机构
        loginCode?: string; // 账户
        managerStatus?: number; // 账户状态
        pageNum: number; // 页码
        pageSize: number; // 页大小
        releType?: string; // 用户类型 - 1- 交易所管理员 2- 机构管理员 3-子机构管理员
    }

    /** 管理员查询 响应 */
    interface SystemmanagerRsp {
        accountNonExpired: boolean;
        accountNonLocked: boolean;
        areaName: string; // 机构名称
        areauserid: number; // 所属机构ID
        authorities: { authority: string; }[];
        autoid: number; // 自增ID
        credentialsNonExpired: boolean;
        enabled: boolean;
        isdefault: number; // 是否默认管理员 - 0:不是默认 1:默认管理员
        logincode: string; // 用户登录账号,唯一索引
        loginfailnum: number; // 登录失败次数
        loginip: string; // 登录IP
        loginport: number; // 登录端口
        loginstatus: number; // 登录状态:1未登录 2已登录
        logintime: string; // 登录时间
        managerstatus: number; // 用户状态： 1启用 2停用 3锁定(密码错误时锁定)
        managertype: number; // 账号类型 - 1:管理员 2:交易员
        modifytime: string; // 修改时间
        onymac: number; // 是否启用MAC地址 - 0:否 1:是
        password: string; // 加密方式采用 用户名+密码 ,采用 SHA 算法
        pwdexpdate: string; // 密码失效日期
        reletype: number; // 用户类型 - 1- 交易所管理员 2- 机构管理员 3-子机构管理员
        remark: string; // 备注
        roleId: string; // 角色
        roleName: string; // 角色
        systemtype: number; // 系统类型 - 1:旧管理端 2:新管理端
        upLoginName: string; // 修改人名称
        uploginid: number; // 修改人ID
        username: string; // 用户姓名
    }

    /** 处理管理员信息 请求 */
    interface DealUserMsgReq {
        autoid?: number;
        logincode: string; // 用户登录账号,唯一索引
        username: string; // 用户姓名
        password: string; // 加密方式采用 用户名+密码 ,采用 SHA 算法
        roleId: number; // 角色id
        remark?: string; // 备注
    }

    /** 处理管理员状态 请求 */
    interface DealUserStatusReq {
        autoid: number; // 自增ID
        type: number; // 0密码重置 1停用账户 2启用 3解锁
    }

    /** 获取当前管理员详情信息 请求 */
    interface SystemmanagerDetailReq {
        autoId: number;
    }
}