Procházet zdrojové kódy

Merge branch 'cuiqiu_nf_msg'

zoujiajian před 9 měsíci
rodič
revize
1c8eacc92a

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -277,6 +277,11 @@ public interface Constant {
 	 */
 	Integer NF_RECOVER_STANDBY_JOB_ID = 321;
 
+	/**
+	 * 奈飞脆球同步邮件数据任务id
+	 */
+	Integer NF_CUI_QIU_EMAIL_SYNC_JOB_ID = 331;
+
 	String ACCOUNT_PWD_UPDATE_SYS_MSG_NOTIFY = "您购买的%s账号,密码已修改";
 
 	String ACCOUNT_SET_SYS_MSG_NOTIFY = "您购买的%s账号,账号已配置";

+ 49 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CuiQiuEmailInfoRecord.java

@@ -0,0 +1,49 @@
+package com.cyksj.model.entity;
+
+import com.cyksj.model.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+
+@Getter
+@Setter
+public class CuiQiuEmailInfoRecord extends BaseEntity {
+	private Long goodsId;
+
+	/**
+	 * 接受主邮箱id
+	 */
+	private String mailId;
+
+	/**
+	 * 邮件id
+	 */
+	private String messageId;
+
+	/**
+	 * 邮件来源
+	 */
+	private String from;
+
+	/**
+	 * 发送邮件
+	 */
+	private String to;
+
+	/**
+	 * 邮件标题
+	 */
+	private String subject;
+
+	/**
+	 * 邮件内容
+	 */
+	private String body;
+
+	/**
+	 * 邮件发送时间
+	 */
+	private Date sendTime;
+}

+ 71 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelCuiQiuEmailInfoRecordData.java

@@ -0,0 +1,71 @@
+package com.cyksj.model.excel;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: ExcelCuiQiuEmailInfoRecordData
+ * 创建者: JavaZou
+ * 创建时间:2025/11/24 11:33
+ */
+@Getter
+@Setter
+@SearchBean(tables = "cui_qiu_email_info_record cr",
+		where = ":sl:",
+		groupBy = "cr.goods_id,cr.to,cr.subject")
+@ExcelIgnoreUnannotated
+public class ExcelCuiQiuEmailInfoRecordData {
+
+	@DbField("max(cr.id)")
+	@ExcelProperty("ID")
+	private Long id;
+
+	@DbField("cr.goods_id")
+	private Long goodsId;
+
+	/**
+	 * 接受主邮箱id
+	 */
+	@DbField("min(cr.mail_id)")
+	private String mailId;
+
+	/**
+	 * 邮件id
+	 */
+	@DbField("max(cr.message_id)")
+	private String messageId;
+
+	/**
+	 * 邮件来源
+	 */
+	@DbField("any_value(cr.from)")
+	private String from;
+
+	/**
+	 * 发送邮件
+	 */
+	@ExcelProperty("账号")
+	@DbField("cr.to")
+	private String to;
+
+	/**
+	 * 邮件标题
+	 */
+	@ExcelProperty("邮件标题")
+	@DbField("cr.subject")
+	private String subject;
+
+	/**
+	 * 邮件发送时间
+	 */
+	@ExcelProperty("邮件时间")
+	@DbField("max(cr.send_time)")
+	private Date sendTime;
+}

+ 63 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CuiQiuEmailInfoRecordView.java

@@ -0,0 +1,63 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: CuiQiuEmailInfoRecordView
+ * 创建者: JavaZou
+ * 创建时间:2025/11/24 11:46
+ */
+@Getter
+@Setter
+@SearchBean(tables = "cui_qiu_email_info_record cr",
+		where = ":sl:",
+		groupBy = "cr.goods_id,cr.to,cr.subject")
+public class CuiQiuEmailInfoRecordView {
+	@DbField("max(cr.id)")
+	private Long id;
+
+	@DbField("cr.goods_id")
+	private Long goodsId;
+
+	/**
+	 * 接受主邮箱id
+	 */
+	@DbField("min(cr.mail_id)")
+	private String mailId;
+
+	/**
+	 * 邮件id
+	 */
+	@DbField("max(cr.message_id)")
+	private String messageId;
+
+	/**
+	 * 邮件来源
+	 */
+	@DbField("any_value(cr.from)")
+	private String from;
+
+	/**
+	 * 发送邮件
+	 */
+	@DbField("cr.to")
+	private String to;
+
+	/**
+	 * 邮件标题
+	 */
+	@DbField("cr.subject")
+	private String subject;
+
+	/**
+	 * 邮件发送时间
+	 */
+	@DbField("max(cr.send_time)")
+	private Date sendTime;
+}

+ 70 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -13,6 +13,7 @@ import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.annotation.Log;
 import com.cyksj.common.annotation.NoSubmit;
 import com.cyksj.common.constant.Constant;
@@ -44,6 +45,8 @@ import com.cyksj.service.mange.CmsGroupService;
 import com.cyksj.service.mange.cms.CmsUserManager;
 import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.web.util.EasyExcelUtils;
+import com.cyksj.xxljob.XxlJobInfo;
+import com.cyksj.xxljob.XxlJobUtil;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;
@@ -126,6 +129,8 @@ public class CmsAccountController {
 
 	private final DelAccountRecordMapper delAccountRecordMapper;
 
+	private final EnvCommonService envCommonService;
+
 	@GetMapping("/get")
 	@SaCheckPermission("account:view")
 	public Result<SearchResult<AccountView>> get(String title, Long userId, String showId, String nickName, String submitAccount, String expiryStartTime, String expiryEndTime, Boolean expiredAll, Boolean existsExpired, Boolean existsExpiredToday, Integer noChangeMonths, Boolean isMjMirror, String orderNo, Boolean isEmpty) {
@@ -1507,4 +1512,69 @@ public class CmsAccountController {
 		EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelBannerNfAccountData.class, list, title, title, ExcelTypeEnum.XLSX, null);
 	}
 
+	/**
+	 * 脆球奈飞账号邮件查询
+	 */
+	@GetMapping("/get/cuiQiu/email/msg")
+	public Result<SearchResult<CuiQiuEmailInfoRecordView>> getCuiQiuEmailMsg(@RequestParam(name = "subjects", required = false) List<String> subjects) {
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		if (CollUtil.isNotEmpty(subjects)) {
+			String cd = " (";
+			for (String subject : subjects) {
+				if (cd.length() > 2) {
+					cd += " or ";
+				}
+				cd += String.format(" cr.subject like '%%%s%%'", subject);
+			}
+			cd += " )";
+			builder.put("sl", cd);
+		}
+		SearchResult<CuiQiuEmailInfoRecordView> search = beanSearcher.search(CuiQiuEmailInfoRecordView.class, builder.orderBy(CuiQiuEmailInfoRecordView::getSendTime).desc().build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 奈飞脆球最新一条数据
+	 */
+	@GetMapping("/get/cuiQiu/email/last")
+	public Result<CuiQiuEmailInfoRecordView> getCuiQiuEmailLast() {
+		CuiQiuEmailInfoRecordView search = beanSearcher.searchFirst(CuiQiuEmailInfoRecordView.class, MapUtils.flatBuilder(request.getParameterMap()).orderBy(CuiQiuEmailInfoRecordView::getSendTime).desc().build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 导出脆球奈飞账号邮件
+	 */
+	@GetMapping("/export/cuiQiu/email/msg")
+	public void export(@RequestParam(name = "subjects", required = false) List<String> subjects, HttpServletResponse response) {
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		if (CollUtil.isNotEmpty(subjects)) {
+			String cd = " (";
+			for (String subject : subjects) {
+				if (cd.length() > 2) {
+					cd += " or ";
+				}
+				cd += String.format(" cr.subject like '%%%s%%'", subject);
+			}
+			cd += " )";
+			builder.put("sl", cd);
+		}
+		List<ExcelCuiQiuEmailInfoRecordData> list = beanSearcher.searchAll(ExcelCuiQiuEmailInfoRecordData.class, builder.orderBy(ExcelCuiQiuEmailInfoRecordData::getSendTime).desc().build());
+		EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelCuiQiuEmailInfoRecordData.class, list, "脆球奈飞账号邮件", "脆球奈飞账号邮件", ExcelTypeEnum.XLSX, null);
+	}
+
+	/**
+	 * 同步奈飞脆球最新邮件数据
+	 */
+	@PostMapping("/sync/cuiQiu/nf/last")
+	public Result<String> syncNfCuiQiuLastData() throws Exception {
+		if (envCommonService.isPrdEnv()) {
+			if (!redisService.setNx("nf_cq_email_today_sync", "today", 60 * 5L)) {
+				throw BusinessRuntimeException.getInstance("已开始同步当天最新数据,一般需要5-10分钟,请勿重复点击。");
+			}
+			//立即执行客服值班定时任务
+			XxlJobUtil.executeMarkDynamicRuleTagJob(XxlJobInfo.getExecuteTaskInstance(Constant.NF_CUI_QIU_EMAIL_SYNC_JOB_ID, "today").toString());
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }