Commit a623f4b9 by zhangxingmin

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

parents fdfe93b8 2d6db1e5
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailTaskService;
import com.yd.email.feign.client.ApiEmailTaskFeignClient;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
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-19
*/
@RestController
@RequestMapping("/emailTask")
@Validated
public class ApiEmailTaskController implements ApiEmailTaskFeignClient {
@Autowired
private ApiEmailTaskService apiEmailTaskService;
/**
* 分页查询-邮件任务(主线任务)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailTaskPageResponse>> page(ApiEmailTaskPageRequest request) {
return apiEmailTaskService.page(request);
}
}
package com.yd.email.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailTaskRecipientsService;
import com.yd.email.feign.client.ApiEmailTaskRecipientsFeignClient;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
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-19
*/
@RestController
@RequestMapping("/emailTaskRecipients")
@Validated
public class ApiEmailTaskRecipientsController implements ApiEmailTaskRecipientsFeignClient {
@Autowired
private ApiEmailTaskRecipientsService apiEmailTaskRecipientsService;
/**
* 分页查询-邮件收件人任务(支线任务)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailTaskRecipientsPageResponse>> page(ApiEmailTaskRecipientsPageRequest request) {
return apiEmailTaskRecipientsService.page(request);
}
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 邮件任务表(存储邮件发送任务信息) 前端控制器
* </p>
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTask")
public class EmailTaskController {
}
package com.yd.email.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 邮件任务收件人关联
*
* @author zxm
* @since 2025-09-19
*/
@RestController
@RequestMapping("/emailTaskRecipients")
public class EmailTaskRecipientsController {
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import com.yd.email.service.model.EmailTaskRecipients;
import java.util.List;
public interface ApiEmailTaskRecipientsService {
Result<IPage<ApiEmailTaskRecipientsPageResponse>> page(ApiEmailTaskRecipientsPageRequest request);
Result<List<EmailTaskRecipients>> saveEmailTaskRecipientsBySessionId(String taskBizId, String status,
String sessionId, Integer source);
}
package com.yd.email.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
public interface ApiEmailTaskService {
Result<IPage<ApiEmailTaskPageResponse>> page(ApiEmailTaskPageRequest request);
}
......@@ -77,6 +77,7 @@ public class ApiEmailContactImportServiceImpl implements ApiEmailContactImportSe
emailContactImport.setCcEmail(dto.getCcEmails());
emailContactImport.setReceiveEmail(dto.getContactEmail());
emailContactImport.setSessionId(finalSessionId);
emailContactImport.setSource(0);
return emailContactImport;
}).collect(Collectors.toList());
iEmailContactImportService.saveOrUpdateBatch(addList);
......
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailTaskRecipientsService;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import com.yd.email.service.dto.EmailContactImportDto;
import com.yd.email.service.model.EmailContactImport;
import com.yd.email.service.model.EmailTaskRecipients;
......@@ -30,6 +35,18 @@ public class ApiEmailTaskRecipientsServiceImpl implements ApiEmailTaskRecipients
private IEmailTaskRecipientsService iEmailTaskRecipientsService;
/**
* 分页查询-邮件收件人任务(支线任务)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailTaskRecipientsPageResponse>> page(ApiEmailTaskRecipientsPageRequest request) {
Page<ApiEmailTaskRecipientsPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailTaskRecipientsPageResponse> iPage = iEmailTaskRecipientsService.page(page, request);
return Result.success(iPage);
}
/**
* 根据当前当前会话id和数据来源查询导入数据,保存到邮件任务收件人关联表中
* @param taskBizId 邮件任务唯一业务ID
* @param status 收件人邮件状态
......
package com.yd.email.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.email.api.service.ApiEmailTaskService;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import com.yd.email.service.service.IEmailTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 邮件任务实现类
*/
@Slf4j
@Service
public class ApiEmailTaskServiceImpl implements ApiEmailTaskService {
@Autowired
private IEmailTaskService iEmailTaskService;
/**
* 分页查询-邮件任务(主线任务)
* @param request
* @return
*/
@Override
public Result<IPage<ApiEmailTaskPageResponse>> page(ApiEmailTaskPageRequest request) {
Page<ApiEmailTaskPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiEmailTaskPageResponse> iPage = iEmailTaskService.page(page, request);
return Result.success(iPage);
}
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailTaskFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 邮箱服务-邮件任务信息(存储邮件发送任务信息)Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailTaskFeignFallbackFactory.class)
public interface ApiEmailTaskFeignClient {
/**
* 分页查询-邮件任务(主线任务)
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailTaskPageRequest request);
}
package com.yd.email.feign.client;
import com.yd.common.result.Result;
import com.yd.email.feign.fallback.ApiEmailTaskRecipientsFeignFallbackFactory;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 邮箱服务-邮件任务收件人信息Feign客户端
*/
@FeignClient(name = "yd-email-api", fallbackFactory = ApiEmailTaskRecipientsFeignFallbackFactory.class)
public interface ApiEmailTaskRecipientsFeignClient {
/**
* 分页查询-邮件收件人任务(支线任务)
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiEmailTaskRecipientsPageRequest request);
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailTaskFeignClient;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-邮件任务信息(存储邮件发送任务信息)Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailTaskFeignFallbackFactory implements FallbackFactory<ApiEmailTaskFeignClient> {
@Override
public ApiEmailTaskFeignClient create(Throwable cause) {
return new ApiEmailTaskFeignClient() {
@Override
public Result page(ApiEmailTaskPageRequest request) {
return null;
}
};
}
}
package com.yd.email.feign.fallback;
import com.yd.common.result.Result;
import com.yd.email.feign.client.ApiEmailTaskRecipientsFeignClient;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 邮箱服务-邮件任务收件人信息Feign降级处理
*/
@Slf4j
@Component
public class ApiEmailTaskRecipientsFeignFallbackFactory implements FallbackFactory<ApiEmailTaskRecipientsFeignClient> {
@Override
public ApiEmailTaskRecipientsFeignClient create(Throwable cause) {
return new ApiEmailTaskRecipientsFeignClient() {
@Override
public Result page(ApiEmailTaskRecipientsPageRequest request) {
return null;
}
};
}
}
......@@ -3,6 +3,9 @@ package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiEmailContactImportPageRequest extends PageDto {
......@@ -10,4 +13,16 @@ public class ApiEmailContactImportPageRequest extends PageDto {
* 收件人邮箱(单个)
*/
private String receiveEmail;
/**
* 当前会话id
*/
@NotBlank(message = "会话id不能为空")
private String sessionId;
/**
* 导入数据的来源 0-选择联系人导入 1-excel导入联系人
*/
@NotNull(message = "导入数据的来源不能为空")
private Integer source;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailTaskPageRequest extends PageDto {
/**
* 搜索内容(主题或者收件人邮箱地址,模糊搜索)
*/
private String queryContent;
/**
* 任务状态:PENDING-待发送, SENDING-发送中, COMPLETED-已完成, FAILED-发送失败, CANCELLED-已取消
*/
private String status;
}
package com.yd.email.feign.request;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiEmailTaskRecipientsPageRequest extends PageDto {
/**
* 收件人邮箱
*/
private String receiveEmail;
/**
* 收件人邮件状态:PENDING-待发送, SENDING-发送中, COMPLETED-已完成, FAILED-发送失败, CANCELLED-已取消
*/
private String status;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailTaskPageResponse {
/**
* 邮件任务主表主键ID
*/
private Long id;
/**
* 邮件任务唯一业务ID
*/
private String taskBizId;
/**
* 任务名称
*/
private String taskName;
/**
* 关联发件人唯一业务ID
*/
private String senderBizId;
/**
* 发件人邮箱
*/
private String sendEmail;
/**
* 收件人邮箱(多个用分号分隔)
*/
private String receiveEmails;
/**
* 邮件主题
*/
private String subject;
/**
* 任务状态:PENDING-待发送, SENDING-发送中, COMPLETED-已完成, FAILED-发送失败, CANCELLED-已取消
*/
private String status;
/**
* 计划发送时间(为空表示立即发送,不为空表示定时发送)
*/
private LocalDateTime scheduleTime;
/**
* 实际发送时间(发送成功的时间)
*/
private LocalDateTime sendTime;
}
package com.yd.email.feign.response;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiEmailTaskRecipientsPageResponse {
/**
* 邮件任务收件人关联表主键ID
*/
private Long id;
/**
* 邮件任务唯一业务ID
*/
private String taskBizId;
/**
* 收件人唯一业务ID(联系人唯一业务ID)
*/
private String contactBizId;
/**
* 收件人邮箱
*/
private String receiveEmail;
/**
* 抄送人邮箱(多个用分号分隔)
*/
private String ccEmail;
/**
* 收件人邮件状态:PENDING-待发送, SENDING-发送中, COMPLETED-已完成, FAILED-发送失败, CANCELLED-已取消
*/
private String status;
/**
* 实际发送时间
*/
private LocalDateTime sendTime;
/**
* 发送失败的错误信息
*/
private String errorMsg;
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import com.yd.email.service.model.EmailTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
......@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface EmailTaskMapper extends BaseMapper<EmailTask> {
IPage<ApiEmailTaskPageResponse> page(@Param("page") Page<ApiEmailTaskPageResponse> page,
@Param("request") ApiEmailTaskPageRequest request);
}
package com.yd.email.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import com.yd.email.service.model.EmailTaskRecipients;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
......@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface EmailTaskRecipientsMapper extends BaseMapper<EmailTaskRecipients> {
IPage<ApiEmailTaskRecipientsPageResponse> page(@Param("page") Page<ApiEmailTaskRecipientsPageResponse> page,
@Param("request") ApiEmailTaskRecipientsPageRequest request);
}
package com.yd.email.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import com.yd.email.service.model.EmailTaskRecipients;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -15,5 +19,8 @@ import java.util.List;
*/
public interface IEmailTaskRecipientsService extends IService<EmailTaskRecipients> {
IPage<ApiEmailTaskRecipientsPageResponse> page(Page<ApiEmailTaskRecipientsPageResponse> page,
ApiEmailTaskRecipientsPageRequest request);
List<EmailTaskRecipients> queryList(String taskBizId);
}
package com.yd.email.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import com.yd.email.service.model.EmailTask;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -13,5 +17,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IEmailTaskService extends IService<EmailTask> {
IPage<ApiEmailTaskPageResponse> page(Page<ApiEmailTaskPageResponse> page, ApiEmailTaskPageRequest request);
EmailTask queryOne(String taskBizId);
}
package com.yd.email.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskRecipientsPageRequest;
import com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse;
import com.yd.email.service.model.EmailContactImport;
import com.yd.email.service.model.EmailTaskRecipients;
import com.yd.email.service.dao.EmailTaskRecipientsMapper;
......@@ -22,6 +26,12 @@ import java.util.List;
@Service
public class EmailTaskRecipientsServiceImpl extends ServiceImpl<EmailTaskRecipientsMapper, EmailTaskRecipients> implements IEmailTaskRecipientsService {
@Override
public IPage<ApiEmailTaskRecipientsPageResponse> page(Page<ApiEmailTaskRecipientsPageResponse> page,
ApiEmailTaskRecipientsPageRequest request) {
return baseMapper.page(page,request);
}
/**
* 根据任务业务id查询邮件任务收件人关联列表
* @param taskBizId
......
package com.yd.email.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.email.feign.request.ApiEmailTaskPageRequest;
import com.yd.email.feign.response.ApiEmailTaskPageResponse;
import com.yd.email.service.model.EmailTask;
import com.yd.email.service.dao.EmailTaskMapper;
import com.yd.email.service.service.IEmailTaskService;
......@@ -18,6 +22,12 @@ import org.springframework.stereotype.Service;
@Service
public class EmailTaskServiceImpl extends ServiceImpl<EmailTaskMapper, EmailTask> implements IEmailTaskService {
@Override
public IPage<ApiEmailTaskPageResponse> page(Page<ApiEmailTaskPageResponse> page,
ApiEmailTaskPageRequest request) {
return baseMapper.page(page,request);
}
/**
* 查询单个对象
* @param taskBizId
......
......@@ -9,6 +9,8 @@
<if test="request.receiveEmail != null and request.receiveEmail != ''">
and eci.receive_email like concat('%', #{request.receiveEmail}, '%')
</if>
and eci.session_id = #{request.sessionId}
and eci.source = #{request.source}
and eci.is_deleted = 0
</where>
</select>
......
......@@ -2,4 +2,19 @@
<!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.EmailTaskMapper">
<select id="page" resultType="com.yd.email.feign.response.ApiEmailTaskPageResponse">
select
et.*,
GROUP_CONCAT(etr.receive_email SEPARATOR ';') as receiveEmails
from email_task et
left join email_task_recipients etr on etr.task_biz_id = et.task_biz_id and etr.is_deleted = 0
<where>
<if test="request.queryContent != null and request.queryContent != ''">
and ( et.subject like concat('%', #{request.queryContent}, '%') or etr.receive_email like concat('%', #{request.queryContent}, '%') )
</if>
and et.is_deleted = 0
</where>
group by et.id
</select>
</mapper>
......@@ -2,4 +2,19 @@
<!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.EmailTaskRecipientsMapper">
<select id="page" resultType="com.yd.email.feign.response.ApiEmailTaskRecipientsPageResponse">
select etr.* from email_task_recipients etr
<where>
<if test="request.receiveEmail != null and request.receiveEmail != ''">
and etr.receive_email like concat('%', #{request.receiveEmail}, '%')
</if>
<if test="request.status != null and request.status != ''">
and etr.status = #{request.status}
</if>
and etr.is_deleted = 0
</where>
</select>
</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