浏览代码

Merge branch 'dev/wcl' of https://s-20coaj910c.zht2.com/lwh/seo into dev/lwh

lwh 1 周之前
父节点
当前提交
10df8823d3

+ 12 - 0
pig-marketing/pig-marketing-api/src/main/java/com/pig4cloud/pig/marketing/api/entity/MktMgmtPushRecord.java

@@ -55,6 +55,18 @@ public class MktMgmtPushRecord extends Model<MktMgmtPushRecord> {
 	@Schema(description = "推送状态")
 	private Boolean pushStatus;
 
+	/**
+	 * 推送方式
+	 */
+	@Schema(description = "推送方式")
+	private String pushAction;
+
+	/**
+	 * 推送类型
+	 */
+	@Schema(description = "推送类型")
+	private Integer pushType;
+
 	/**
 	 * 触发条件
 	 */

+ 20 - 28
pig-marketing/pig-marketing-biz/src/main/java/com/pig4cloud/pig/marketing/service/impl/MktMgmtPushRecordServiceImpl.java

@@ -39,25 +39,20 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 	public Page<MktMgmtPushRecord> pageQuery(MktMgmtPushRecordQueryDTO queryDTO) {
 		log.info("分页查询营销推送记录,查询条件:{}", queryDTO);
 		
-		// 构建查询条件
 		LambdaQueryWrapper<MktMgmtPushRecord> queryWrapper = new LambdaQueryWrapper<>();
 		
-		// 规则名称模糊查询
 		if (StringUtils.hasText(queryDTO.getRuleName())) {
 			queryWrapper.like(MktMgmtPushRecord::getRuleName, queryDTO.getRuleName());
 		}
 		
-		// 触发条件模糊查询
 		if (StringUtils.hasText(queryDTO.getTriggerCondition())) {
 			queryWrapper.like(MktMgmtPushRecord::getTriggerCondition, queryDTO.getTriggerCondition());
 		}
 
 		queryWrapper.eq(MktMgmtPushRecord::getDelFlag, "0");
 		
-		// 按创建时间倒序排列
 		queryWrapper.orderByDesc(MktMgmtPushRecord::getCreateTime);
 		
-		// 执行分页查询
 		Page<MktMgmtPushRecord> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
 		Page<MktMgmtPushRecord> result = mktMgmtPushRecordMapper.selectPage(page, queryWrapper);
 		
@@ -70,21 +65,18 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 		log.info("新增营销推送记录,数据:{}", saveDTO);
 		
 		try {
-			// 1. 根据推送内容匹配关键字,计算每条规则的关键字匹配次数
 			Map<Long, Integer> ruleMatchCounts = calculateRuleMatchCounts(saveDTO.getPushContent());
 			if (ruleMatchCounts.isEmpty()) {
 				log.warn("推送内容未匹配到任何关键字:{}", saveDTO.getPushContent());
 				return "推送内容【" + saveDTO.getPushContent() + "】未匹配到任何关键字";
 			}
 			
-			// 2. 按匹配次数从高到低排序规则
 			List<Map.Entry<Long, Integer>> sortedRules = ruleMatchCounts.entrySet().stream()
 				.sorted(Map.Entry.<Long, Integer>comparingByValue().reversed())
 				.collect(Collectors.toList());
 			
 			log.debug("按匹配次数排序的规则:{}", sortedRules);
 			
-			// 3. 依次尝试每个规则,记录详细的尝试信息
 			StringBuilder errorDetails = new StringBuilder();
 			MktMgmtRule selectedRule = null;
 			Long selectedRuleId = null;
@@ -95,7 +87,6 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 				
 				log.debug("尝试规则{},匹配次数:{}", ruleId, matchCount);
 				
-				// 获取规则信息
 				MktMgmtRule rule = mktMgmtRuleMapper.selectById(ruleId);
 				if (rule == null || "1".equals(rule.getDelFlag())) {
 					log.warn("规则不存在或已删除,ruleId:{}", ruleId);
@@ -103,7 +94,6 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 					continue;
 				}
 				
-				// 获取匹配的关键字
 				List<String> matchedKeywords = getMatchedKeywordsForRule(saveDTO.getPushContent(), ruleId);
 				
 				// 验证IP和域名规则
@@ -129,16 +119,12 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 				return errorMessage;
 			}
 			
-			// 5. 获取匹配的关键字信息
 			List<String> matchedKeywords = getMatchedKeywordsForRule(saveDTO.getPushContent(), selectedRuleId);
 			
-			// 6. 构建触发条件描述
 			String triggerCondition = buildTriggerCondition(matchedKeywords, selectedRule, saveDTO.getPushIP(), saveDTO.getPushDomain());
 			
-			// 7. 创建推送记录
 			MktMgmtPushRecord record = getMktMgmtPushRecord(saveDTO, triggerCondition, selectedRule);
 			
-			// 8. 保存到数据库
 			int result = mktMgmtPushRecordMapper.insert(record);
 			if (result > 0) {
 				log.info("营销推送记录新增成功,ID:{},规则:{},匹配关键字:{}", record.getId(), selectedRule.getRuleName(), matchedKeywords);
@@ -156,20 +142,24 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 
 	@NotNull
 	private static MktMgmtPushRecord getMktMgmtPushRecord(MktMgmtPushRecordSaveDTO saveDTO, String triggerCondition, MktMgmtRule selectedRule) {
-		String pushDetailBuilder = "\"触发条件:\" + " +
-				triggerCondition +
-				"+ \",推送内容:\" + " +
-				saveDTO.getPushContent();
+		// 构建推送详情的JSON格式
+		String pushDetailJson = "{" +
+				"\"triggerCondition\":" + triggerCondition +
+				",\"pushContent\":\"" + saveDTO.getPushContent() + "\"" +
+				",\"ruleName\":\"" + selectedRule.getRuleName() + "\"" +
+				",\"pushFrequency\":" + selectedRule.getPushFrequency() +
+				"}";
 
-		// 8. 创建推送记录
 		MktMgmtPushRecord record = new MktMgmtPushRecord();
 		record.setPushContent(saveDTO.getPushContent());
 		record.setRuleName(selectedRule.getRuleName());
 		record.setPushFrequency(selectedRule.getPushFrequency());
 		record.setPushStatus(true); // 总为1-成功
 		record.setTriggerCondition(triggerCondition);
-		record.setPushDetail(pushDetailBuilder);
-		record.setDelFlag("0"); // 未删除
+		record.setPushDetail(pushDetailJson);
+		record.setPushAction(selectedRule.getAction());
+		record.setPushType(selectedRule.getPushType());
+		record.setDelFlag("0");
 		return record;
 	}
 
@@ -258,24 +248,26 @@ public class MktMgmtPushRecordServiceImpl implements MktMgmtPushRecordService {
 	
 	
 	
-	/**
-	 * 构建触发条件描述(支持多个关键字
+		/**
+	 * 构建触发条件描述(JSON格式
 	 */
 	private String buildTriggerCondition(List<String> keywords, MktMgmtRule rule, String pushIP, String pushDomain) {
-		StringBuilder triggerCondition = new StringBuilder();
-		triggerCondition.append("关键字:").append(String.join(",", keywords));
+		StringBuilder json = new StringBuilder();
+		json.append("{");
+		json.append("\"keywords\":[").append(keywords.stream().map(k -> "\"" + k + "\"").collect(Collectors.joining(","))).append("]");
 		
 		// 添加IP信息
 		if (StringUtils.hasText(pushIP)) {
-			triggerCondition.append(",IP:").append(pushIP);
+			json.append(",\"ip\":\"").append(pushIP).append("\"");
 		}
 		
 		// 添加域名信息
 		if (StringUtils.hasText(pushDomain)) {
-			triggerCondition.append(",域名:").append(pushDomain);
+			json.append(",\"domain\":\"").append(pushDomain).append("\"");
 		}
 		
-		return triggerCondition.toString();
+		json.append("}");
+		return json.toString();
 	}
 	
 	/**