refactor: 更新查询对象类,调整基础查询类继承关系并优化代码结构

This commit is contained in:
Ray.Hao
2026-01-09 00:06:33 +08:00
parent d94b8207a0
commit 7ac74e1657
61 changed files with 304 additions and 477 deletions

View File

@@ -33,35 +33,6 @@
ORDER BY
CREATE_TIME DESC
</select>
<!-- 查询数据库表分页 dm版本-->
<select id="getTablePage" resultType="com.youlai.boot.platform.codegen.model.vo.TablePageVO" databaseId="dm">
SELECT
t1.TABLE_NAME ,
c.COMMENTS AS TABLE_COMMENT ,
NULL AS TABLE_COLLATION,
'DM' AS ENGINE,
o.CREATED AS CREATE_TIME,
CASE WHEN t2.id IS NOT NULL THEN 1 ELSE 0 END AS isConfigured
FROM
ALL_TABLES t1
LEFT JOIN ALL_TAB_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME AND t1.OWNER = c.OWNER
LEFT JOIN ALL_OBJECTS o ON t1.TABLE_NAME = o.OBJECT_NAME AND t1.OWNER = o.OWNER AND o.OBJECT_TYPE = 'TABLE'
LEFT JOIN gen_table t2 ON t1.TABLE_NAME = t2.table_name
WHERE
t1.OWNER = 'YOULAI_BOOT'
<if test="queryParams.keywords != null and queryParams.keywords.trim() neq ''">
AND t1.TABLE_NAME LIKE '%' || #{queryParams.keywords} || '%'
</if>
<!-- 排除的表 -->
<if test="queryParams.excludeTables != null and queryParams.excludeTables.size() > 0">
AND t1.TABLE_NAME NOT IN
<foreach collection="queryParams.excludeTables" item="excludeTable" open="(" close=")" separator=",">
#{excludeTable}
</foreach>
</if>
ORDER BY
o.CREATED DESC
</select>
<!-- 查询数据库表元数据 mysql版本-->
<select id="getTableMetadata" resultType="com.youlai.boot.platform.codegen.model.bo.TableMetaData" databaseId="mysql">
@@ -77,22 +48,6 @@
TABLE_SCHEMA = (SELECT DATABASE())
AND TABLE_NAME = #{tableName}
</select>
<!-- 获取数据库表元数据 dm版本-->
<select id="getTableMetadata" resultType="com.youlai.boot.platform.codegen.model.bo.TableMetaData" databaseId="dm">
SELECT
t1.TABLE_NAME ,
c.COMMENTS AS TABLE_COMMENT ,
NULL AS TABLE_COLLATION,
'DM' AS ENGINE,
o.CREATED AS CREATE_TIME
FROM
ALL_TABLES t1
LEFT JOIN ALL_TAB_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME AND t1.OWNER = c.OWNER
LEFT JOIN ALL_OBJECTS o ON t1.TABLE_NAME = o.OBJECT_NAME AND t1.OWNER = o.OWNER AND o.OBJECT_TYPE = 'TABLE'
WHERE
t1.OWNER = 'YOULAI_BOOT'
AND t1.TABLE_NAME = #{tableName}
</select>
<!-- 获取数据库表字段元数据 mysql版本-->
<select id="getTableColumns" resultType="com.youlai.boot.platform.codegen.model.bo.ColumnMetaData" databaseId="mysql">
@@ -112,32 +67,5 @@
AND TABLE_NAME = #{tableName}
ORDER BY ORDINAL_POSITION ASC
</select>
<!-- 获取数据库表字段元数据 dm版本-->
<select id="getTableColumns" resultType="com.youlai.boot.platform.codegen.model.bo.ColumnMetaData" databaseId="dm">
SELECT
t1.COLUMN_NAME,
t1.DATA_TYPE,
c.COMMENTS AS COLUMN_COMMENT,
CASE WHEN con.CONSTRAINT_TYPE = 'P' THEN 1 ELSE 0 END AS isPrimaryKey,
CASE WHEN t1.NULLABLE = 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE,
t1.DATA_LENGTH AS CHARACTER_MAXIMUM_LENGTH,
NULL AS CHARACTER_SET_NAME,
NULL AS COLLATION_NAME
FROM
ALL_TAB_COLUMNS t1
LEFT JOIN ALL_COL_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME
AND t1.COLUMN_NAME = c.COLUMN_NAME
AND t1.OWNER = c.OWNER
LEFT JOIN ALL_CONS_COLUMNS cc ON t1.TABLE_NAME = cc.TABLE_NAME
AND t1.COLUMN_NAME = cc.COLUMN_NAME
AND t1.OWNER = cc.OWNER
LEFT JOIN ALL_CONSTRAINTS con ON cc.CONSTRAINT_NAME = con.CONSTRAINT_NAME
AND cc.OWNER = con.OWNER
AND con.CONSTRAINT_TYPE = 'P'
WHERE
t1.OWNER = 'YOULAI_BOOT'
AND t1.TABLE_NAME = #{tableName}
ORDER BY t1.COLUMN_ID ASC
</select>
</mapper>

View File

@@ -23,7 +23,6 @@
sys_log t1
LEFT JOIN sys_user t2 ON t1.create_by = t2.id
<where>
t1.is_deleted = 0
<if test="queryParams.keywords != null and queryParams.keywords != ''">
AND (
t1.content LIKE concat('%',#{queryParams.keywords},'%')
@@ -47,48 +46,6 @@
ORDER BY
t1.create_time DESC
</select>
<!-- 日志分页列表 dm版本 -->
<select id="getLogPage" resultType="com.youlai.boot.system.model.vo.LogPageVO" databaseId="dm">
SELECT
t1.id,
t1.module,
t1.content,
t1.request_uri,
t1.ip,
t1.province || ' ' || t1.city AS region,
t1.execution_time,
t1.browser || ' ' || t1.browser_version AS browser,
t1.os,
t1.create_time,
t2.nickname AS operator
FROM
sys_log t1
LEFT JOIN sys_user t2 ON t1.create_by = t2.id
<where>
t1.is_deleted = 0
<if test="queryParams.keywords != null and queryParams.keywords != ''">
AND (
t1.content LIKE concat('%',#{queryParams.keywords},'%')
OR
t1.ip LIKE concat('%',#{queryParams.keywords},'%')
OR
t2.nickname LIKE concat('%',#{queryParams.keywords},'%')
)
</if>
<if test="queryParams.createTime != null and queryParams.createTime.size > 0">
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND t1.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND t1.create_time &lt;= #{endDate}
</if>
</if>
</where>
ORDER BY
t1.create_time DESC
</select>
<!-- 获取访问量日统计列表 -->
<select id="getPvCounts" resultType="com.youlai.boot.system.model.bo.VisitCountBO">
@@ -99,7 +56,6 @@
sys_log
WHERE
create_time BETWEEN #{startDate} AND #{endDate}
AND is_deleted = 0
GROUP BY
DATE_FORMAT(create_time, '%Y-%m-%d')
</select>
@@ -113,7 +69,6 @@
sys_log
WHERE
create_time BETWEEN #{startDate} AND #{endDate}
AND is_deleted = 0
GROUP BY
DATE_FORMAT(create_time, '%Y-%m-%d')
</select>
@@ -134,30 +89,6 @@
2) AS growthRate
FROM
sys_log
WHERE
is_deleted = 0
</select>
<!-- 获取访问量(PV)统计数据 dm-->
<select id="getPvStats" resultType="com.youlai.boot.system.model.bo.VisitStatsBO" databaseId="dm">
SELECT
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN 1 END) AS todayCount,
COUNT(*) AS totalCount,
ROUND(
CASE
WHEN COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END) = 0 THEN 0
ELSE
(COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN 1 END) -
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END)) /
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END)
END,
2) AS growthRate
FROM
sys_log
WHERE
is_deleted = 0
</select>
<!-- 获取IP统计数据 mysql版本-->
@@ -176,33 +107,6 @@
2) AS growthRate
FROM
sys_log
WHERE
is_deleted = 0
</select>
<!-- 获取IP统计数据 dm版本-->
<select id="getUvStats" resultType="com.youlai.boot.system.model.bo.VisitStatsBO" databaseId="dm">
SELECT COUNT(DISTINCT CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN ip END) AS todayCount,
COUNT(DISTINCT ip) AS totalCount,
ROUND(
CASE
WHEN COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END) = 0
THEN 0
ELSE
(COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE)
THEN ip END) -
COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END)) * 1.0 /
COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END)
END,
2) AS growthRate
FROM sys_log
WHERE is_deleted = 0
</select>
</mapper>

View File

@@ -72,84 +72,8 @@
u.id
<choose>
<!-- 如果排序参数都传入 -->
<when test="queryParams.field != null and queryParams.field != '' and queryParams.direction != null">
ORDER BY u.${queryParams.field} ${queryParams.direction}
</when>
<!-- 默认排序 -->
<otherwise>
ORDER BY u.update_time DESC, u.create_time DESC
</otherwise>
</choose>
</select>
<!-- 用户分页列表 dm版本-->
<select id="getUserPage" resultType="com.youlai.boot.system.model.bo.UserBO" databaseId="dm">
SELECT
u.id,
u.username,
u.nickname,
u.mobile,
u.gender,
u.avatar,
u.STATUS,
u.email,
d.NAME AS dept_name,
LISTAGG(r.name, ',') WITHIN GROUP (ORDER BY r.name) AS roleNames,
u.create_time
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.id
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
<where>
u.is_deleted = 0
<!-- 非超级管理员用户限制查看超级管理员 -->
<if test="!queryParams.isRoot">
AND NOT EXISTS (
SELECT
1
FROM sys_user_role sur
INNER JOIN sys_role r ON sur.role_id = r.id
WHERE
sur.user_id = u.id
AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}'
)
</if>
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
AND (
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.nickname LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.mobile LIKE CONCAT('%',#{queryParams.keywords},'%')
)
</if>
<if test='queryParams.status!=null'>
AND u.status = #{queryParams.status}
</if>
<if test='queryParams.deptId!=null'>
AND concat(',',concat(d.tree_path,',',d.id),',') like concat('%,',#{queryParams.deptId},',%')
</if>
<if test="queryParams.createTime != null and queryParams.createTime.size > 0">
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND u.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND u.create_time &lt;= #{endDate}
</if>
</if>
<if test="queryParams.roleIds != null and queryParams.roleIds.size() > 0">
AND sur.role_id IN
<foreach item="roleId" collection="queryParams.roleIds" open="(" separator="," close=")">
#{roleId}
</foreach>
</if>
</where>
GROUP BY
u.id
<choose>
<!-- 如果排序参数都传入 -->
<when test="queryParams.field != null and queryParams.field != '' and queryParams.direction != null">
ORDER BY u.${queryParams.field} ${queryParams.direction}
<when test="queryParams.sortBy != null and queryParams.sortBy != '' and queryParams.order != null">
ORDER BY u.${queryParams.sortBy} ${queryParams.order}
</when>
<!-- 默认排序 -->
<otherwise>
@@ -323,27 +247,5 @@
WHERE
u.id = #{userId} AND u.is_deleted = 0
</select>
<!-- 根据用户ID获取用户详情 dm版本-->
<select id="getUserProfile" resultType="com.youlai.boot.system.model.bo.UserBO" databaseId="dm">
SELECT
u.id,
u.username,
u.nickname,
u.mobile,
u.gender,
u.avatar,
u.STATUS,
u.email,
d.NAME AS deptName,
LISTAGG(r.name, ',') WITHIN GROUP (ORDER BY r.name) AS roleNames,
u.create_time
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.id
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
WHERE
u.id = #{userId} AND u.is_deleted = 0
</select>
</mapper>