d."编号", d."用户密码", d."用户姓名", d."密码提示问题", d."密码回答问题", d."电话", d."上次登录时间", d."本次登录时间", d."失败次数", d."失败时间", d."身份证", d."账号", d."统一账号", d."自我介绍", CASE WHEN s."登录信息编号" IS NULL THEN 1 ELSE s."启用状态" END AS "账户启用状态", s."停用原因" AS "账户停用原因", s."停用时间" AS "账户停用时间", s."合并目标登录信息编号" AS "合并目标账户编号", s."合并时间" AS "账户合并时间" AND CASE WHEN s."登录信息编号" IS NULL THEN 1 ELSE s."启用状态" END = CASE WHEN #{enabled} = 1 THEN 1 ELSE 0 END AND EXISTS ( SELECT 1 FROM ( ) role_filter WHERE role_filter."accountId" = d."编号" AND role_filter."roleType" = #{roleType} AND role_filter."targetId" = #{targetId} ) AND ( LOWER(COALESCE(d."账号", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(d."用户姓名", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(d."统一账号", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(d."电话", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(d."身份证", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR EXISTS ( SELECT 1 FROM ( ) keyword_role WHERE keyword_role."accountId" = d."编号" AND ( LOWER(COALESCE(keyword_role."roleType", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(keyword_role."roleName", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(keyword_role."targetId", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(keyword_role."targetName", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) OR LOWER(COALESCE(keyword_role."dataScope", '')) LIKE LOWER(CONCAT('%', #{keyword}, '%')) ) ) ) INSERT INTO "登录信息表" ( "编号", "用户密码", "用户姓名", "密码提示问题", "密码回答问题", "电话", "上次登录时间", "本次登录时间", "失败次数", "失败时间", "身份证", "账号", "统一账号", "自我介绍", "照片" ) VALUES ( #{account.id}, #{account.password}, #{account.userName}, #{account.passwordQuestion}, #{account.passwordAnswer}, #{account.phone}, #{account.lastLoginAt}, #{account.currentLoginAt}, #{account.failedAttempts}, #{account.failedAt}, #{account.idCard}, #{account.loginName}, #{account.unifiedAccount}, #{account.introduction}, '' ) UPDATE "登录信息表" SET "用户姓名" = #{account.userName}, "密码提示问题" = #{account.passwordQuestion}, "密码回答问题" = #{account.passwordAnswer}, "电话" = #{account.phone}, "身份证" = #{account.idCard}, "账号" = #{account.loginName}, "统一账号" = #{account.unifiedAccount}, "自我介绍" = #{account.introduction} WHERE "编号" = #{account.id} UPDATE "登录信息表" SET "用户密码" = #{password}, "失败次数" = 0, "失败时间" = CURRENT_TIMESTAMP WHERE "编号" = #{id} UPDATE "登录信息表" SET "失败次数" = COALESCE("失败次数", 0) + 1, "失败时间" = #{failedAt} WHERE "编号" = #{id} UPDATE "登录信息表" SET "失败次数" = 0, "失败时间" = #{expiredBefore} WHERE "编号" = #{id} AND COALESCE("失败次数", 0) >= #{allowedAttempts} AND "失败时间" IS NOT NULL AND "失败时间" <= #{expiredBefore} UPDATE "登录信息表" SET "上次登录时间" = "本次登录时间", "本次登录时间" = #{loginAt}, "失败次数" = 0, "失败时间" = #{loginAt} WHERE "编号" = #{id} INSERT INTO "登录记录表" ( "编号", "登录信息编号", "登录时间", "IP地址", "内网IP", "事务ID" ) VALUES ( #{id}, #{accountId}, #{loginAt}, #{ipAddress}, #{intranetIpAddress}, #{transactionId} ) DELETE FROM "MemberOnlineInfo" WHERE LOWER(TRIM("账号")) = LOWER(#{loginName}) DELETE FROM "MemberOnlineInfo" WHERE "SessionId" = #{sessionId} INSERT INTO "MemberOnlineInfo" ( "SessionId", "账号", "姓名", "单位", "角色类别", "IP", "开始访问时间", "最后访问时间", "最后访问路径" ) VALUES ( #{sessionId}, #{loginName}, #{userName}, #{unit}, #{roleCategory}, #{ipAddress}, #{startAccessTime}, #{lastAccessTime}, #{lastAccessPath} ) INSERT INTO "账户状态表" ( "登录信息编号", "启用状态", "停用原因", "停用时间", "合并目标登录信息编号", "合并时间" ) VALUES ( #{account.id}, CASE WHEN #{account.enabled} = 1 THEN 1 ELSE 0 END, #{account.disabledReason}, #{account.disabledAt}, #{account.mergedToAccountId}, #{account.mergedAt} ) UPDATE "账户状态表" SET "启用状态" = CASE WHEN #{account.enabled} = 1 THEN 1 ELSE 0 END, "停用原因" = #{account.disabledReason}, "停用时间" = #{account.disabledAt}, "合并目标登录信息编号" = #{account.mergedToAccountId}, "合并时间" = #{account.mergedAt} WHERE "登录信息编号" = #{account.id} SELECT b."登录信息编号" AS "accountId", 'DEPARTMENT_PERSONNEL' AS "roleType", '机关人员' AS "roleName", p."编号" AS "targetId", COALESCE(p."用户姓名", p."编号") AS "targetName", COALESCE(dep."机关名称", p."实施_机关编号") AS "dataScope", CASE WHEN COALESCE(p."离职状态", 0) = 0 AND COALESCE(dep."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled" FROM "机关人员登录表" b JOIN "实施_机关参谋" p ON p."编号" = b."机关人员编号" LEFT JOIN "实施_机关" dep ON dep."编号" = p."实施_机关编号" UNION ALL SELECT b."登录信息编号" AS "accountId", 'TEACHER' AS "roleType", '教员' AS "roleName", t."教员编号" AS "targetId", t."教员姓名" AS "targetName", COALESCE(o."教研室名称", t."教研室代号") AS "dataScope", CASE WHEN COALESCE(t."离职状态", 0) = 0 AND COALESCE(o."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled" FROM "教员登录表" b JOIN "教员表" t ON t."教员编号" = b."教员编号" LEFT JOIN "教研室表" o ON o."教研室代号" = t."教研室代号" UNION ALL SELECT b."登录信息编号" AS "accountId", 'RESEARCH_OFFICE' AS "roleType", '教研室' AS "roleName", o."教研室代号" AS "targetId", o."教研室名称" AS "targetName", COALESCE(dep."机关名称", o."部系") AS "dataScope", CASE WHEN COALESCE(o."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled" FROM "教研室登录表" b JOIN "教研室表" o ON o."教研室代号" = b."教研室代号" LEFT JOIN "实施_机关_教研室" r ON r."教研室编号" = o."教研室代号" LEFT JOIN "实施_机关" dep ON dep."编号" = r."实施_机关编号" UNION ALL SELECT b."登录信息编号" AS "accountId", 'TEACHING_CLASS' AS "roleType", '教学班次' AS "roleName", c."学员队编号" AS "targetId", c."学员队名称" AS "targetName", COALESCE(dep."机关名称", c."所属单位") AS "dataScope", 1 AS "enabled" FROM "学员队登录表" b JOIN "学员队表" c ON c."学员队编号" = b."学员队编号" LEFT JOIN "实施_机关_学员队" r ON r."学员队编号" = c."学员队编号" LEFT JOIN "实施_机关" dep ON dep."编号" = r."实施_机关编号" UNION ALL SELECT b."登录信息编号" AS "accountId", 'INSPECTION_ADMINISTRATOR' AS "roleType", '听查课管理员' AS "roleName", a."编号" AS "targetId", a."姓名" AS "targetName", NULL AS "dataScope", 1 AS "enabled" FROM "听查课管理员登录表" b JOIN "听查课管理员" a ON a."编号" = b."听查课管理员编号" UNION ALL SELECT s."登录信息编号" AS "accountId", 'STUDENT' AS "roleType", '学员' AS "roleName", s."编号" AS "targetId", s."姓名" AS "targetName", COALESCE(c."学员队名称", s."当前班次编号") AS "dataScope", CASE WHEN COALESCE(s."退学状态", 0) = 0 THEN 1 ELSE 0 END AS "enabled" FROM "学员信息表" s LEFT JOIN "学员队表" c ON c."学员队编号" = s."当前班次编号" UNION ALL SELECT b."登录信息编号" AS "accountId", 'LEGACY_USER' AS "roleType", '旧用户' AS "roleName", u."用户帐号" AS "targetId", COALESCE(u."用户姓名", u."用户帐号") AS "targetName", u."教学管理机构编号" AS "dataScope", 1 AS "enabled" FROM "用户登录表" b JOIN "用户表" u ON u."用户帐号" = b."用户账号" SELECT 'DEPARTMENT_PERSONNEL' AS "roleType", p."编号" AS "targetId", COALESCE(p."用户姓名", p."编号") AS "targetName", COALESCE(dep."机关名称", p."实施_机关编号") AS "dataScope", CASE WHEN COALESCE(p."离职状态", 0) = 0 AND COALESCE(dep."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "实施_机关参谋" p LEFT JOIN "实施_机关" dep ON dep."编号" = p."实施_机关编号" LEFT JOIN "机关人员登录表" b ON b."机关人员编号" = p."编号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT 'TEACHER' AS "roleType", t."教员编号" AS "targetId", t."教员姓名" AS "targetName", COALESCE(o."教研室名称", t."教研室代号") AS "dataScope", CASE WHEN COALESCE(t."离职状态", 0) = 0 AND COALESCE(o."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "教员表" t LEFT JOIN "教研室表" o ON o."教研室代号" = t."教研室代号" LEFT JOIN "教员登录表" b ON b."教员编号" = t."教员编号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT 'RESEARCH_OFFICE' AS "roleType", o."教研室代号" AS "targetId", o."教研室名称" AS "targetName", COALESCE(dep."机关名称", o."部系") AS "dataScope", CASE WHEN COALESCE(o."停用", 0) = 0 THEN 1 ELSE 0 END AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "教研室表" o LEFT JOIN "实施_机关_教研室" r ON r."教研室编号" = o."教研室代号" LEFT JOIN "实施_机关" dep ON dep."编号" = r."实施_机关编号" LEFT JOIN "教研室登录表" b ON b."教研室代号" = o."教研室代号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT 'TEACHING_CLASS' AS "roleType", c."学员队编号" AS "targetId", c."学员队名称" AS "targetName", COALESCE(dep."机关名称", c."所属单位") AS "dataScope", 1 AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "学员队表" c LEFT JOIN "实施_机关_学员队" r ON r."学员队编号" = c."学员队编号" LEFT JOIN "实施_机关" dep ON dep."编号" = r."实施_机关编号" LEFT JOIN "学员队登录表" b ON b."学员队编号" = c."学员队编号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT 'INSPECTION_ADMINISTRATOR' AS "roleType", a."编号" AS "targetId", a."姓名" AS "targetName", NULL AS "dataScope", 1 AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "听查课管理员" a LEFT JOIN "听查课管理员登录表" b ON b."听查课管理员编号" = a."编号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT 'STUDENT' AS "roleType", s."编号" AS "targetId", s."姓名" AS "targetName", COALESCE(c."学员队名称", s."当前班次编号") AS "dataScope", CASE WHEN COALESCE(s."退学状态", 0) = 0 THEN 1 ELSE 0 END AS "enabled", s."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "学员信息表" s LEFT JOIN "学员队表" c ON c."学员队编号" = s."当前班次编号" LEFT JOIN "登录信息表" d ON d."编号" = s."登录信息编号" SELECT 'LEGACY_USER' AS "roleType", u."用户帐号" AS "targetId", COALESCE(u."用户姓名", u."用户帐号") AS "targetName", u."教学管理机构编号" AS "dataScope", 1 AS "enabled", b."登录信息编号" AS "boundAccountId", d."账号" AS "boundLoginName" FROM "用户表" u LEFT JOIN "用户登录表" b ON b."用户账号" = u."用户帐号" LEFT JOIN "登录信息表" d ON d."编号" = b."登录信息编号" SELECT NULL AS "roleType", NULL AS "targetId", NULL AS "targetName", NULL AS "dataScope", 0 AS "enabled", NULL AS "boundAccountId", NULL AS "boundLoginName" FROM "登录信息表" WHERE 1 = 0 DELETE FROM "机关人员登录表" WHERE "登录信息编号" = #{accountId} DELETE FROM "教员登录表" WHERE "登录信息编号" = #{accountId} DELETE FROM "教研室登录表" WHERE "登录信息编号" = #{accountId} DELETE FROM "学员队登录表" WHERE "登录信息编号" = #{accountId} DELETE FROM "听查课管理员登录表" WHERE "登录信息编号" = #{accountId} UPDATE "学员信息表" SET "登录信息编号" = NULL WHERE "登录信息编号" = #{accountId} DELETE FROM "用户登录表" WHERE "登录信息编号" = #{accountId} UPDATE "登录信息表" SET "编号" = "编号" WHERE 1 = 0 INSERT INTO "机关人员登录表" ( "机关人员编号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) INSERT INTO "教员登录表" ( "教员编号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) INSERT INTO "教研室登录表" ( "教研室代号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) INSERT INTO "学员队登录表" ( "学员队编号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) INSERT INTO "听查课管理员登录表" ( "听查课管理员编号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) UPDATE "学员信息表" SET "登录信息编号" = #{accountId} WHERE "编号" = #{targetId} AND "登录信息编号" IS NULL INSERT INTO "用户登录表" ( "用户账号", "登录信息编号" ) VALUES ( #{targetId}, #{accountId} ) UPDATE "登录信息表" SET "编号" = "编号" WHERE 1 = 0 UPDATE "机关人员登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "教员登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "教研室登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "学员队登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "听查课管理员登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "学员信息表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "用户登录表" SET "登录信息编号" = #{targetAccountId} WHERE "登录信息编号" = #{sourceAccountId} UPDATE "登录信息表" SET "编号" = "编号" WHERE 1 = 0