feat(oa): 添加知识管理和邮件功能模块

- 新增知识分类和知识文章的完整CRUD接口- 实现知识文章预览组件,支持富文本和附件展示
- 添加动态邮件配置功能,支持多种邮箱类型自动识别
- 实现邮件模板管理功能,提供多种商务邮件模板- 添加邮件发送功能,支持批量发送和附件上传
- 完善邮件工具类,支持富文本、附件和内嵌图片发送- 新增发件人邮箱账号管理功能
- 添加家具信息管理相关接口- 配置默认邮件服务参数
This commit is contained in:
JR
2025-10-22 22:36:10 +08:00
parent 429081460a
commit a8b0206cce
61 changed files with 7055 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?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="com.gear.oa.mapper.OaEmailAccountMapper">
<resultMap type="com.gear.oa.domain.OaEmailAccount" id="OaEmailAccountResult">
<result property="emailId" column="email_id"/>
<result property="email" column="email"/>
<result property="password" column="password"/>
<result property="smtpHost" column="smtp_host"/>
<result property="smtpPort" column="smtp_port"/>
<result property="accessKey" column="access_key"/>
<result property="secretKey" column="secret_key"/>
<result property="type" column="type"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,22 @@
<?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="com.gear.oa.mapper.OaEmailTemplateMapper">
<resultMap type="com.gear.oa.domain.OaEmailTemplate" id="OaEmailTemplateResult">
<result property="id" column="id"/>
<result property="templateName" column="template_name"/>
<result property="category" column="category"/>
<result property="content" column="content"/>
<result property="attachments" column="attachments"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
</resultMap>
</mapper>

View File

@@ -0,0 +1,48 @@
<?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="com.gear.oa.mapper.OaFurnitureTableMapper">
<resultMap type="com.gear.oa.domain.OaFurnitureTable" id="OaFurnitureTableResult">
<result property="furnitureId" column="furniture_id"/>
<result property="companyName" column="company_name"/>
<result property="state" column="state"/>
<result property="procurementOfProducts" column="procurement_of_products"/>
<result property="contactGroup" column="contact_group"/>
<result property="phone" column="phone"/>
<result property="fax" column="fax"/>
<result property="address" column="address"/>
<result property="zip" column="zip"/>
<result property="email" column="email"/>
<result property="website" column="website"/>
<result property="emailSendCount" column="email_send_count"/>
<result property="lastEmailSendTime" column="last_email_send_time"/>
<result property="contactPerson" column="contact_person"/>
<result property="receiveCount" column="receive_count"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
</resultMap>
<update id="updateEmailSendInfo">
UPDATE oa_furniture_table
SET email_send_count = IFNULL(email_send_count,0) + 1,
last_email_send_time = NOW()
WHERE furniture_id = #{furnitureId}
</update>
<select id="selectEmailsByFurnitureIds" resultType="java.lang.String">
SELECT email FROM oa_furniture_table
WHERE furniture_id IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
AND del_flag = 0
AND email IS NOT NULL AND email != ''
</select>
</mapper>

View File

@@ -0,0 +1,61 @@
<?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="com.gear.oa.mapper.SysOaArticleMapper">
<resultMap type="com.gear.oa.domain.SysOaArticle" id="SysOaArticleResult">
<result property="articleId" column="article_id"/>
<result property="categoryId" column="category_id"/>
<result property="articleTitle" column="article_title"/>
<result property="subhead" column="subhead"/>
<result property="source" column="source"/>
<result property="content" column="content"/>
<result property="checkNum" column="check_num"/>
<result property="accessory" column="accessory"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<!--一对一关联-->
<association property="category" column="category_id" javaType="SysOaCategory" resultMap="SysOaCategoryResult"/>
</resultMap>
<resultMap id="SysOaCategoryResult" type="SysOaCategory">
<result property="categoryId" column="category_id"/>
<result property="categoryName" column="category_name"/>
</resultMap>
<sql id="selectArticleSql">
select a.article_id,
a.category_id,
a.article_title,
a.subhead,
a.source,
a.content,
a.check_num,
a.accessory,
a.remark,
a.create_by,
a.create_time,
a.update_by,
a.update_time,
c.category_id,
c.category_name
from sys_oa_article a
left join sys_oa_category c on a.category_id = c.category_id
</sql>
<select id="selectArticlePageList" resultMap="SysOaArticleResult">
<include refid="selectArticleSql" />
${ew.getCustomSqlSegment}
</select>
<select id="selectArticleById" resultMap="SysOaArticleResult">
<include refid="selectArticleSql" />
where a.article_id = #{articleId}
</select>
</mapper>

View File

@@ -0,0 +1,20 @@
<?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="com.gear.oa.mapper.SysOaCategoryMapper">
<resultMap type="com.gear.oa.domain.SysOaCategory" id="SysOaCategoryResult">
<result property="categoryId" column="category_id"/>
<result property="parentId" column="parent_id"/>
<result property="categoryName" column="category_name"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>