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