feat: 项目初始化

This commit is contained in:
2025-10-30 16:24:07 +08:00
parent 5060a93614
commit 7321a9e172
291 changed files with 23872 additions and 0 deletions
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemDeptMapper">
<resultMap id="BaseResultMap" type="cn.odboy.system.dal.dataobject.SystemDeptTb">
<id column="dept_id" property="id"/>
<result column="dept_sort" property="deptSort"/>
<result column="name" property="name"/>
<result column="enabled" property="enabled"/>
<result column="pid" property="pid"/>
<result column="sub_count" property="subCount"/>
<result column="create_by" property="createBy"/>
<result column="update_by" property="updateBy"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectDeptByArgs" resultMap="BaseResultMap">
SELECT
dept_id,
`name`,
pid,
sub_count,
create_time,
update_time,
create_by,
update_by,
enabled,
dept_sort
FROM
system_dept
<where>
<if test="criteria.ids != null and criteria.ids.size() > 0">
AND dept_id in
<foreach collection="criteria.ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="criteria.name != null and criteria.name != ''">
AND `name` LIKE concat('%', #{criteria.name}, '%')
</if>
<if test="criteria.enabled != null">
AND enabled = #{criteria.enabled}
</if>
<if test="criteria.pid != null">
AND pid = #{criteria.pid}
</if>
<if test="criteria.pidIsNull != null">
AND pid IS NULL
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
</if>
</where>
ORDER BY dept_sort
</select>
<select id="selectDeptByPid" resultMap="BaseResultMap">
select dept_id,
name,
pid,
sub_count,
create_time,
update_time,
create_by,
update_by,
enabled,
dept_sort
from system_dept
where pid = #{pid}
</select>
<select id="countDeptByPid" resultType="java.lang.Integer">
select count(*)
from system_dept
where pid = #{pid}
</select>
<select id="selectDeptByPidIsNull" resultMap="BaseResultMap">
select dept_id,
name,
pid,
sub_count,
create_time,
update_time,
create_by,
update_by,
enabled,
dept_sort
from system_dept
where pid is null
</select>
<select id="selectDeptByRoleId" resultType="cn.odboy.system.dal.dataobject.SystemDeptTb">
SELECT d.dept_id AS id,
d.NAME,
d.pid,
d.sub_count,
d.create_time,
d.update_time,
d.create_by,
d.update_by,
d.enabled,
d.dept_sort
FROM system_dept d,
system_roles_depts rd
WHERE d.dept_id = rd.dept_id
AND rd.role_id = #{roleId}
</select>
<update id="updateDeptSubCountById">
update system_dept
set sub_count = #{count}
where dept_id = #{id}
</update>
</mapper>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemDictDetailMapper">
<resultMap id="BaseResultMap" type="cn.odboy.system.dal.dataobject.SystemDictDetailTb">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="label" property="label" jdbcType="VARCHAR"/>
<result column="value" property="value" jdbcType="VARCHAR"/>
<result column="dict_sort" property="dictSort" jdbcType="INTEGER"/>
<result column="create_by" property="createBy" jdbcType="VARCHAR"/>
<result column="update_by" property="updateBy" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<!-- 一对一关联 -->
<association property="dict" javaType="cn.odboy.system.dal.dataobject.SystemDictTb">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
</association>
</resultMap>
<select id="selectDictDetailByArgs" resultMap="BaseResultMap">
select
dd.id, dd.label, dd.`value`, dd.`dict_sort`, dd.create_by, dd.update_by, dd.create_time, dd.update_time,
d.id as dict_id, d.name
from system_dict_detail dd, system_dict d
where dd.dict_id = d.id
<if test="criteria.dictName != null and criteria.dictName != ''">
and d.name = #{criteria.dictName}
</if>
<if test="criteria.label != null and criteria.label != ''">
and dd.label = #{criteria.label}
</if>
order by dd.dict_sort
</select>
<delete id="deleteDictDetailByDictIds">
delete from system_dict_detail
where dict_id in
<foreach collection="dictIds" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemDictMapper">
<select id="selectDictByArgs" resultType="cn.odboy.system.dal.dataobject.SystemDictTb">
SELECT
*
from system_dict d
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
d.name like concat('%', #{criteria.blurry}, '%')
or d.description like concat('%', #{criteria.blurry}, '%')
)
</if>
</where>
order by d.id desc
</select>
</mapper>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemJobMapper">
<select id="getJobByName" resultType="cn.odboy.system.dal.dataobject.SystemJobTb">
select id
from system_job
where name = #{name}
</select>
<select id="selectJobByArgs" resultType="cn.odboy.system.dal.dataobject.SystemJobTb">
select
*
from system_job
<where>
<if test="criteria.name != null and criteria.name != ''">
and name like concat('%', #{criteria.name}, '%')
</if>
<if test="criteria.enabled != null">
and enabled = #{criteria.enabled}
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
and create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
order by job_sort, id desc
</select>
</mapper>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemLocalStorageMapper">
<select id="selectLocalStorageByArgs" resultType="cn.odboy.system.dal.dataobject.SystemLocalStorageTb">
select
*
from system_local_storage
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
AND (
name LIKE CONCAT('%',#{criteria.blurry},'%')
OR suffix LIKE CONCAT('%',#{criteria.blurry},'%')
OR type LIKE CONCAT('%',#{criteria.blurry},'%')
OR create_by LIKE CONCAT('%',#{criteria.blurry},'%')
)
</if>
<if test="criteria.createTime != null and criteria.createTime.size() > 0">
AND update_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
</if>
</where>
ORDER BY id DESC
</select>
</mapper>
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemMenuMapper">
<resultMap id="BaseResultMap" type="cn.odboy.system.dal.dataobject.SystemMenuTb">
<id column="menu_id" property="id"/>
<result column="title" property="title"/>
<result column="name" property="componentName"/>
<result column="menu_sort" property="menuSort"/>
<result column="component" property="component"/>
<result column="path" property="path"/>
<result column="type" property="type"/>
<result column="permission" property="permission"/>
<result column="icon" property="icon"/>
<result column="cache" property="cache"/>
<result column="hidden" property="hidden"/>
<result column="pid" property="pid"/>
<result column="sub_count" property="subCount"/>
<result column="i_frame" property="iFrame"/>
<result column="create_by" property="createBy"/>
<result column="update_by" property="updateBy"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="selectMenuByArgs" resultMap="BaseResultMap">
select
menu_id, title, name, menu_sort, component, path, type, permission, icon, cache, hidden, pid, sub_count,
i_frame, create_by, update_by, create_time, update_time
from system_menu
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
title like concat('%',#{criteria.blurry},'%')
or name like concat('%',#{criteria.blurry},'%')
or permission like concat('%',#{criteria.blurry},'%')
)
</if>
<if test="criteria.pidIsNull != null">
and pid is null
</if>
<if test="criteria.pid != null">
and pid = #{criteria.pid}
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
and create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
order by menu_sort
</select>
<select id="selectMenuByRoleIdsAndType" resultMap="BaseResultMap">
SELECT m.* FROM system_menu m, system_roles_menus r
WHERE m.menu_id = r.menu_id AND r.role_id IN
<foreach collection="roleIds" item="roleId" open="(" separator="," close=")">
#{roleId}
</foreach>
AND type != #{type}
order by m.menu_sort
</select>
<select id="selectMenuByPidIsNullOrderByMenuSort" resultMap="BaseResultMap">
SELECT menu_id,
title,
name,
menu_sort,
component,
path,
type,
permission,
icon,
cache,
hidden,
pid,
sub_count,
i_frame,
create_by,
update_by,
create_time,
update_time
from system_menu
where pid is null
order by menu_sort
</select>
<select id="selectMenuByPidOrderByMenuSort" resultMap="BaseResultMap">
SELECT menu_id,
title,
name,
menu_sort,
component,
path,
type,
permission,
icon,
cache,
hidden,
pid,
sub_count,
i_frame,
create_by,
update_by,
create_time,
update_time
from system_menu
WHERE pid = #{pid}
ORDER BY menu_sort
</select>
<select id="getMenuByTitle" resultType="cn.odboy.system.dal.dataobject.SystemMenuTb">
SELECT menu_id id
FROM system_menu
WHERE title = #{title}
</select>
<select id="getMenuByComponentName" resultType="cn.odboy.system.dal.dataobject.SystemMenuTb">
SELECT menu_id id
FROM system_menu
WHERE name = #{name}
</select>
<select id="countMenuByPid" resultType="java.lang.Integer">
SELECT count(*)
FROM system_menu
WHERE pid = #{pid}
</select>
<update id="updateMenuSubCntByMenuId">
update system_menu
set sub_count = #{count}
where menu_id = #{menuId}
</update>
</mapper>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemOssStorageMapper">
<select id="selectOssStorageByArgs" resultType="cn.odboy.system.dal.dataobject.SystemOssStorageTb">
select
*
from system_oss_storage
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
AND (
file_name LIKE CONCAT('%',#{criteria.blurry},'%')
OR file_prefix LIKE CONCAT('%',#{criteria.blurry},'%')
OR file_mime LIKE CONCAT('%',#{criteria.blurry},'%')
OR file_md5 LIKE CONCAT('%',#{criteria.blurry},'%')
)
</if>
<if test="criteria.createTime != null and criteria.createTime.size() > 0">
AND update_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
</if>
</where>
ORDER BY id DESC
</select>
</mapper>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemQuartzJobMapper">
<select id="selectQuartzJobByArgs" resultType="cn.odboy.system.dal.dataobject.SystemQuartzJobTb">
SELECT
*
FROM system_quartz_job
<where>
<if test="criteria.jobName != null and criteria.jobName != ''">
AND job_name LIKE CONCAT('%',#{criteria.jobName},'%')
</if>
<if test="criteria.createTime != null and criteria.createTime.size() > 0">
AND update_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
</if>
</where>
ORDER BY id DESC
</select>
<select id="selectAllEnableQuartzJob" resultType="cn.odboy.system.dal.dataobject.SystemQuartzJobTb">
SELECT *
FROM system_quartz_job
WHERE is_pause = 0
</select>
</mapper>
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemQuartzLogMapper">
<select id="selectQuartzLogByArgs" resultType="cn.odboy.system.dal.dataobject.SystemQuartzLogTb">
SELECT
*
FROM system_quartz_log
<where>
<if test="criteria.jobName != null and criteria.jobName != ''">
AND job_name LIKE CONCAT('%',#{criteria.jobName},'%')
</if>
<if test="criteria.isSuccess != null">
AND is_success = #{criteria.isSuccess}
</if>
<if test="criteria.createTime != null and criteria.createTime.size() > 0">
AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
</if>
</where>
ORDER BY id DESC
</select>
</mapper>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemRoleDeptMapper">
<insert id="batchInsertRoleDept">
insert into system_roles_depts (role_id, dept_id)
values
<foreach collection="depts" item="item" open="(" separator="),(" close=")">
#{roleId}, #{item.id}
</foreach>
</insert>
<delete id="batchDeleteRoleDept">
delete from system_roles_depts
where role_id in
<foreach collection="roleIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemRoleMapper">
<resultMap id="BaseResultMap" type="cn.odboy.system.dal.dataobject.SystemRoleTb">
<id column="role_role_id" property="id"/>
<result column="role_name" property="name"/>
<result column="role_data_scope" property="dataScope"/>
<result column="role_level" property="level"/>
<result column="role_description" property="description"/>
<result column="role_create_by" property="createBy"/>
<result column="role_update_by" property="updateBy"/>
<result column="role_create_time" property="createTime"/>
<result column="role_update_time" property="updateTime"/>
<collection property="menus" ofType="cn.odboy.system.dal.dataobject.SystemMenuTb">
<id column="menu_id" property="id"/>
<result column="menu_title" property="title"/>
<result column="menu_permission" property="permission"/>
</collection>
<collection property="depts" ofType="cn.odboy.system.dal.dataobject.SystemDeptTb">
<id column="dept_id" property="id"/>
<result column="dept_name" property="name"/>
</collection>
</resultMap>
<select id="selectAllRole" resultType="cn.odboy.system.dal.dataobject.SystemRoleTb">
select role_id as id, name, level
from system_role
order by level
</select>
<select id="selectRoleByArgs" resultMap="BaseResultMap">
select role.*,
dept.dept_id as dept_id, dept.name as dept_name,
menu.menu_id as menu_id, menu.title as menu_title, menu.permission as menu_permission
from (
select
role.role_id as role_role_id, role.name as role_name, role.data_scope as role_data_scope,
role.level as role_level, role.description as role_description, role.create_by as role_create_by,
role.update_by as role_update_by, role.create_time as role_create_time, role.update_time as role_update_time
from system_role role
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
role.name like concat('%', #{criteria.blurry}, '%')
or role.description like concat('%', #{criteria.blurry}, '%')
)
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
and role.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
order by role.level
<if test="criteria.offset != null">
limit #{criteria.offset}, #{criteria.size}
</if>
) role
left join system_roles_menus srm on role.role_role_id = srm.role_id
left join system_menu menu on menu.menu_id = srm.menu_id
left join system_roles_depts srd on role.role_role_id = srd.role_id
left join system_dept dept on dept.dept_id = srd.dept_id
order by role.role_level
</select>
<select id="countRoleByArgs" resultType="java.lang.Long">
select count(*)
from system_role role
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
role.name like concat('%', #{criteria.blurry}, '%')
or role.description like concat('%', #{criteria.blurry}, '%')
)
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
and role.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
</select>
<select id="getRoleByName" resultType="cn.odboy.system.dal.dataobject.SystemRoleTb">
select role_id as id
from system_role
where name = #{name}
</select>
<select id="getRoleById" resultMap="BaseResultMap">
select role.role_id as role_role_id,
role.name as role_name,
role.data_scope as role_data_scope,
role.level as role_level,
role.description as role_description,
role.create_by as role_create_by,
role.update_by as role_update_by,
role.create_time as role_create_time,
role.update_time as role_update_time,
dept.dept_id as dept_id,
dept.name as dept_name,
menu.menu_id as menu_id,
menu.title as menu_title,
menu.permission as menu_permission
from system_role role
left join system_roles_menus srm on role.role_id = srm.role_id
left join system_menu menu on menu.menu_id = srm.menu_id
left join system_roles_depts srd on role.role_id = srd.role_id
left join system_dept dept on dept.dept_id = srd.dept_id
where role.role_id = #{roleId}
</select>
<select id="selectRoleByUserId" resultMap="BaseResultMap">
SELECT role.role_id as role_role_id,
role.name as role_name,
role.data_scope as role_data_scope,
role.level as role_level,
role.description as role_description,
role.create_by as role_create_by,
role.update_by as role_update_by,
role.create_time as role_create_time,
role.update_time as role_update_time,
dept.dept_id as dept_id,
dept.name as dept_name,
menu.menu_id as menu_id,
menu.title as menu_title,
menu.permission as menu_permission
from system_role role
left join system_roles_menus srm on role.role_id = srm.role_id
left join system_menu menu on menu.menu_id = srm.menu_id
left join system_roles_depts srd on role.role_id = srd.role_id
left join system_dept dept on dept.dept_id = srd.dept_id
left join system_users_roles ur on role.role_id = ur.role_id
WHERE role.role_id = ur.role_id
AND ur.user_id = #{userId}
</select>
<select id="countRoleByDeptIds" resultType="int">
select count(*)
from system_role r, system_roles_depts d
where r.role_id = d.role_id
and d.dept_id in
<foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</select>
<select id="selectRoleByMenuId" resultType="cn.odboy.system.dal.dataobject.SystemRoleTb">
SELECT role.role_id as id
FROM system_role role,
system_roles_menus rm
WHERE role.role_id = rm.role_id
AND rm.menu_id = #{menuId}
</select>
</mapper>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemRoleMenuMapper">
<insert id="batchInsertRoleMenu">
insert into system_roles_menus (role_id, menu_id)
values
<foreach collection="menus" item="item" open="(" separator="),(" close=")">
#{roleId}, #{item.id}
</foreach>
</insert>
<delete id="batchDeleteRoleMenu">
delete from system_roles_menus
where role_id in
<foreach collection="roleIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteRoleMenuByRoleId">
delete
from system_roles_menus
where role_id = #{roleId}
</delete>
</mapper>
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemUserJobMapper">
<insert id="batchInsertUserJob">
insert into system_users_jobs (user_id, job_id)
values
<foreach collection="jobs" item="item" open="(" separator="),(" close=")">
#{userId}, #{item.id}
</foreach>
</insert>
<delete id="batchDeleteUserJob">
delete from system_users_jobs
where user_id in
<foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemUserMapper">
<resultMap id="BaseResultMap" type="cn.odboy.system.dal.dataobject.SystemUserTb">
<id column="user_user_id" property="id"/>
<result column="user_dept_id" property="deptId"/>
<result column="user_username" property="username"/>
<result column="user_nick_name" property="nickName"/>
<result column="user_email" property="email"/>
<result column="user_phone" property="phone"/>
<result column="user_gender" property="gender"/>
<result column="user_avatar_name" property="avatarName"/>
<result column="user_avatar_path" property="avatarPath"/>
<result column="user_password" property="password"/>
<result column="user_is_admin" property="isAdmin"/>
<result column="user_enabled" property="enabled"/>
<result column="user_pwd_reset_time" property="pwdResetTime"/>
<result column="user_create_by" property="createBy"/>
<result column="user_update_by" property="updateBy"/>
<result column="user_create_time" property="createTime"/>
<result column="user_update_time" property="updateTime"/>
<association property="dept" javaType="cn.odboy.system.dal.dataobject.SystemDeptTb">
<id column="dept_id" property="id"/>
<result column="dept_name" property="name"/>
</association>
<collection property="jobs" ofType="cn.odboy.system.dal.dataobject.SystemJobTb">
<id column="job_id" property="id"/>
<result column="job_name" property="name"/>
</collection>
<collection property="roles" ofType="cn.odboy.system.dal.dataobject.SystemRoleTb">
<id column="role_id" property="id"/>
<result column="role_name" property="name"/>
<result column="role_level" property="level"/>
<result column="role_data_scope" property="dataScope"/>
</collection>
</resultMap>
<select id="selectUserByArgs" resultMap="BaseResultMap">
select u.user_id as user_user_id,
u.dept_id as user_dept_id,
u.username as user_username,
u.nick_name as user_nick_name,
u.email as user_email,
u.phone as user_phone,
u.gender as user_gender,
u.avatar_name as user_avatar_name,
u.avatar_path as user_avatar_path,
u.enabled as user_enabled,
u.pwd_reset_time as user_pwd_reset_time,
u.create_by as user_create_by,
u.update_by as user_update_by,
u.create_time as user_create_time,
u.update_time as user_update_time,
d.dept_id as dept_id,
d.name as dept_name,
j.id as job_id,
j.name as job_name,
r.role_id as role_id,
r.name as role_name,
r.level as role_level,
r.data_scope as role_data_scope
from system_user u
left join system_dept d on u.dept_id = d.dept_id
left join system_users_jobs suj on u.user_id = suj.user_id
left join system_job j on suj.job_id = j.id
left join system_users_roles sur on u.user_id = sur.user_id
left join system_role r on sur.role_id = r.role_id
<where>
<if test="criteria.id != null">
and u.user_id = #{criteria.id}
</if>
<if test="criteria.enabled != null">
and u.enabled = #{criteria.enabled}
</if>
<if test="criteria.deptIds != null and criteria.deptIds.size() != 0">
and u.dept_id in
<foreach collection="criteria.deptIds" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</if>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
u.username like concat('%', #{criteria.blurry}, '%')
or u.nick_name like concat('%', #{criteria.blurry}, '%')
or u.email like concat('%', #{criteria.blurry}, '%')
)
</if>
<if test="criteria.createTime != null and criteria.createTime.size() != 0">
and u.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
order by u.user_id desc
</select>
<select id="getUserByUsername" resultMap="BaseResultMap">
select u.password user_password,
u.is_admin user_is_admin,
u.user_id as user_user_id,
u.dept_id as user_dept_id,
u.username as user_username,
u.nick_name as user_nick_name,
u.email as user_email,
u.phone as user_phone,
u.gender as user_gender,
u.avatar_name as user_avatar_name,
u.avatar_path as user_avatar_path,
u.enabled as user_enabled,
u.pwd_reset_time as user_pwd_reset_time,
u.create_by as user_create_by,
u.update_by as user_update_by,
u.create_time as user_create_time,
u.update_time as user_update_time,
d.dept_id as dept_id,
d.name as dept_name
from system_user u
left join system_dept d on u.dept_id = d.dept_id
where u.username = #{username}
and u.enabled = 1
</select>
<select id="getUserByEmail" resultType="cn.odboy.system.dal.dataobject.SystemUserTb">
select user_id as id, username
from system_user
where email = #{email}
and enabled = 1
</select>
<select id="getUserByPhone" resultType="cn.odboy.system.dal.dataobject.SystemUserTb">
select user_id as id, username
from system_user
where phone = #{phone}
and enabled = 1
</select>
<update id="updateUserPasswordByUsername">
update system_user
set password = #{password},
pwd_reset_time = NOW()
where username = #{username}
</update>
<update id="updateUserEmailByUsername">
update system_user
set email = #{email}
where username = #{username}
</update>
<select id="selectUserByRoleId" resultType="cn.odboy.system.dal.dataobject.SystemUserTb">
SELECT u.user_id as id, u.username
FROM system_user u,
system_users_roles r
WHERE u.user_id = r.user_id
AND r.role_id = #{roleId}
group by u.user_id
</select>
<select id="selectUserByDeptId" resultType="cn.odboy.system.dal.dataobject.SystemUserTb">
SELECT u.*
FROM system_user u,
system_users_roles r,
system_roles_depts d
WHERE u.user_id = r.user_id
AND r.role_id = d.role_id
AND d.dept_id = #{deptId}
group by u.user_id
</select>
<select id="selectUserByMenuId" resultType="cn.odboy.system.dal.dataobject.SystemUserTb">
SELECT u.user_id as id, u.username
FROM system_user u,
system_users_roles ur,
system_roles_menus rm
WHERE u.user_id = ur.user_id
AND ur.role_id = rm.role_id
AND rm.menu_id = #{menuId}
group by u.user_id
</select>
<select id="countUserByJobIds" resultType="Long">
SELECT count(*) FROM system_user u, system_users_jobs j
WHERE u.user_id = j.user_id AND j.job_id IN
<foreach collection="jobIds" item="jobId" open="(" separator="," close=")">
#{jobId}
</foreach>
</select>
<select id="countUserByDeptIds" resultType="Long">
SELECT count(*) FROM system_user u
WHERE u.dept_id IN
<foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
#{deptId}
</foreach>
</select>
<select id="countUserByRoleIds" resultType="Long">
SELECT count(*) FROM system_user u, system_users_roles r
WHERE u.user_id = r.user_id AND r.role_id in
<foreach collection="roleIds" item="roleId" open="(" separator="," close=")">
#{roleId}
</foreach>
</select>
<update id="batchUpdatePassword">
update system_user set password = #{password}
where user_id in
<foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.odboy.system.dal.mysql.SystemUserRoleMapper">
<insert id="batchInsertUserRole">
insert into system_users_roles (user_id, role_id)
values
<foreach collection="roles" item="item" open="(" separator="),(" close=")">
#{userId}, #{item.id}
</foreach>
</insert>
<delete id="batchDeleteUserRole">
delete from system_users_roles
where user_id in
<foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,50 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style>
@page {
margin: 0;
}
</style>
</head>
<body style="margin: 0px;
padding: 0px;
font: 100% SimSun, Microsoft YaHei, Times New Roman, Verdana, Arial, Helvetica, sans-serif;
color: #000;">
<div style="height: auto;
width: 820px;
min-width: 820px;
margin: 0 auto;
margin-top: 20px;
border: 1px solid #eee;">
<div style="padding: 10px;padding-bottom: 0px;">
<p style="margin-bottom: 10px;padding-bottom: 0px;">尊敬的用户, 您好:</p>
<p style="text-indent: 2em; margin-bottom: 10px;">您正在申请邮箱验证,您的验证码为:</p>
<p style="text-align: center;
font-family: Times New Roman;
font-size: 22px;
color: #C60024;
padding: 20px 0px;
margin-bottom: 10px;
font-weight: bold;
background: #ebebeb;">${code}</p>
<div class="foot-hr hr" style="margin: 0 auto;
z-index: 111;
width: 800px;
margin-top: 30px;
border-top: 1px solid #DA251D;">
</div>
<div style="text-align: center;
font-size: 12px;
padding: 20px 0px;
font-family: Microsoft YaHei;">
Copyright &copy;${.now?string("yyyy")} <a hover="color: #DA251D;" style="color: #999;"
href="https://github.com/odboy-tianjun/cutejava" target="_blank">CuteJava</a>
后台管理系统 All Rights Reserved.
</div>
</div>
</div>
</body>
</html>
@@ -0,0 +1,71 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style>
@page {
margin: 0;
}
</style>
</head>
<body style="margin: 0px;
padding: 0px;
font: 100% SimSun, Microsoft YaHei, Times New Roman, Verdana, Arial, Helvetica, sans-serif;
color: #000;">
<div style="height: auto;
margin: 0 auto;
margin-top: 20px;
padding: 20px;
border: 1px solid #eee;">
<div>
<p style="margin-bottom: 10px;">任务信息:</p>
<table style="border-collapse: collapse;">
<tr>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">任务名称</th>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">Bean名称</th>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">执行方法</th>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">参数内容</th>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">Cron表达式</th>
<th style="padding: .65em;background: #666;border: 1px solid #777;color: #fff;">描述内容</th>
</tr>
<tr>
<td style="padding: .65em;border: 1px solid#777;">${task.jobName}</td>
<td style="padding: .65em;border: 1px solid#777;">${task.beanName}</td>
<td style="padding: .65em;border: 1px solid#777;">${task.methodName}</td>
<td style="padding: .65em;border: 1px solid#777;">${(task.params)!""}</td>
<td style="padding: .65em;border: 1px solid#777;">${task.cronExpression}</td>
<td style="padding: .65em;border: 1px solid#777;">${(task.description)!""}</td>
</tr>
</table>
</div>
<div>
<p style="margin-bottom: 10px;">异常信息:</p>
<pre style="position: relative;
padding: 15px;
line-height: 20px;
border-left: 5px solid #ddd;
color: #333;
font-family: Courier New, serif;
font-size: 12px">
${msg}
</pre>
</div>
<div class="foot-hr hr" style="margin: 0 auto;
z-index: 111;
width: 800px;
margin-top: 30px;
border-top: 1px solid #DA251D;">
</div>
<div style="text-align: center;
font-size: 12px;
padding: 20px 0px;
font-family: Microsoft YaHei;">
Copyright &copy;${.now?string("yyyy")} <a hover="color: #DA251D;" style="color: #999;"
href="https://github.com/odboy-tianjun/cutejava" target="_blank">CuteJava</a>
后台管理系统 All Rights Reserved.
</div>
</div>
</div>
</body>
</html>