Commit 6071270a by zhangxingmin

Merge remote-tracking branch 'origin/dev_zxm' into test

parents 3464abb8 d9812c0b
package com.yd.email.api.controller;
import com.yd.email.feign.client.ApiEmailFileFeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 邮件文件信息
*
* @author zxm
* @since 2025-09-25
*/
@RestController
@RequestMapping("/emailFile")
@Validated
public class ApiEmailFileController implements ApiEmailFileFeignClient {
}
package com.yd.email.feign.client;
import com.yd.email.feign.fallback.ApiEmailFileFeignFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
/**
* 邮箱服务-邮件文件信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailFileFeignFallbackFactory.class)
public interface ApiEmailFileFeignClient {
}
package com.yd.email.feign.fallback;
import com.yd.email.feign.client.ApiEmailFileFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-邮件文件信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailFileFeignFallbackFactory implements FallbackFactory<ApiEmailFileFeignClient> {
@Override
public ApiEmailFileFeignClient create(Throwable cause) {
return null;
}
}
...@@ -3,6 +3,7 @@ package com.yd.email.feign.response; ...@@ -3,6 +3,7 @@ package com.yd.email.feign.response;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
public class ApiEmailContactPageResponse { public class ApiEmailContactPageResponse {
...@@ -48,7 +49,17 @@ public class ApiEmailContactPageResponse { ...@@ -48,7 +49,17 @@ public class ApiEmailContactPageResponse {
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 抄送人邮箱,多个用分号分隔 * 抄送人邮箱数组
*/ */
private String ccEmails; private List<String> ccEmailList;
/**
* 称谓
*/
private String appellation;
/**
* 其他信息
*/
private String other;
} }
package com.yd.email.service.dao;
import com.yd.email.service.model.EmailFile;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 邮件文件表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-09-25
*/
public interface EmailFileMapper extends BaseMapper<EmailFile> {
}
package com.yd.email.service.handler;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedTypes;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@MappedTypes(List.class)
public class StringToListTypeHandler extends BaseTypeHandler<List<String>> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, String.join(";", parameter));
}
@Override
public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
String value = rs.getString(columnName);
return convertStringToList(value);
}
@Override
public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
String value = rs.getString(columnIndex);
return convertStringToList(value);
}
@Override
public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
String value = cs.getString(columnIndex);
return convertStringToList(value);
}
private List<String> convertStringToList(String value) {
if (value == null || value.trim().isEmpty()) {
return Collections.emptyList();
}
return Arrays.stream(value.split(";"))
.map(String::trim)
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());
}
}
\ No newline at end of file
package com.yd.email.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 邮件文件表
* </p>
*
* @author zxm
* @since 2025-09-25
*/
@Getter
@Setter
@TableName("email_file")
public class EmailFile implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 邮件附件表唯一业务ID
*/
@TableField("email_file_biz_id")
private String emailFileBizId;
/**
* OSS文件业务ID唯一标识(中台文件元数据表)
*/
@TableField("oss_file_biz_id")
private String ossFileBizId;
/**
* 操作类型: 0-上传, 1-导出,2-导入
*/
@TableField("opr_type")
private Integer oprType;
/**
* 操作对象: 0-变量管理, 1-联系人管理,2-发送邮件 3-联系人导入临时表
*/
@TableField("opr_object")
private Integer oprObject;
/**
* 操作对象ID,例:操作对象是发送邮件那么就是发送邮件任务表业务id,联系人导入临时表是会话id(没有值就空着)
*/
@TableField("opr_object_id")
private String oprObjectId;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.email.service.service;
import com.yd.email.service.model.EmailFile;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 邮件文件表 服务类
* </p>
*
* @author zxm
* @since 2025-09-25
*/
public interface IEmailFileService extends IService<EmailFile> {
}
package com.yd.email.service.service.impl;
import com.yd.email.service.model.EmailFile;
import com.yd.email.service.dao.EmailFileMapper;
import com.yd.email.service.service.IEmailFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 邮件文件表 服务实现类
* </p>
*
* @author zxm
* @since 2025-09-25
*/
@Service
public class EmailFileServiceImpl extends ServiceImpl<EmailFileMapper, EmailFile> implements IEmailFileService {
}
...@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; ...@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class MyBatisPlusCodeGenerator { public class MyBatisPlusCodeGenerator {
public static void main(String[] args) { public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd-email?serverTimezone=GMT%2B8", "root", "123456") FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_email?serverTimezone=GMT%2B8", "root", "Zxm7320017")
.globalConfig(builder -> { .globalConfig(builder -> {
builder.author("zxm") builder.author("zxm")
// .outputDir("src/main/java/com/yd/user/service"); // .outputDir("src/main/java/com/yd/user/service");
...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"email_contact_import" "email_file"
// "email_sender_config","email_contact", // "email_sender_config","email_contact",
// "email_template","email_task","email_task_recipients", // "email_template","email_task","email_task_recipients",
// "email_task_variable","email_variable" // "email_task_variable","email_variable"
......
...@@ -2,7 +2,23 @@ ...@@ -2,7 +2,23 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.email.service.dao.EmailContactMapper"> <mapper namespace="com.yd.email.service.dao.EmailContactMapper">
<select id="page" resultType="com.yd.email.feign.response.ApiEmailContactPageResponse"> <resultMap id="ApiEmailContactPageResponseMap" type="com.yd.email.feign.response.ApiEmailContactPageResponse">
<id property="id" column="id"/>
<result property="contactBizId" column="contact_biz_id"/>
<result property="companyName" column="company_name"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<result property="groupName" column="group_name"/>
<result property="type" column="type"/>
<result property="createTime" column="create_time"/>
<result property="appellation" column="appellation"/>
<result property="other" column="other"/>
<!-- 使用类型处理器 -->
<result property="ccEmailList" column="ccEmails"
typeHandler="com.yd.email.service.handler.StringToListTypeHandler"/>
</resultMap>
<select id="page" resultMap="ApiEmailContactPageResponseMap">
select select
ec.*, ec.*,
GROUP_CONCAT(cc.email SEPARATOR ';') as ccEmails GROUP_CONCAT(cc.email SEPARATOR ';') as ccEmails
......
<?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.yd.email.service.dao.EmailFileMapper">
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment