Преглед на файлове

加粉延后回传,主动回传

chenbiao преди 2 години
родител
ревизия
120c9fa219

+ 11 - 0
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpCustomerAcquistionCallbackMapper.java

@@ -0,0 +1,11 @@
+package com.cyksj.mapper.corp;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.CorpCustomerAcquistionCallback;
+
+/**
+ * @author chan
+ * @date 2024/3/13 16:05
+ */
+public interface CorpCustomerAcquistionCallbackMapper extends BaseMapper<CorpCustomerAcquistionCallback> {
+}

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpCustomerAcquisitionLinkPopularize.java

@@ -35,6 +35,11 @@ public class CorpCustomerAcquisitionLinkPopularize extends BaseEntity {
      */
     private Long time;
 
+    /**
+     * 类型为 加粉,是否要延期回传
+     */
+    private Boolean delayedPost;
+
     @TableField(exist = false)
     @DbIgnore
     private String url;

+ 34 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpCustomerAcquistionCallback.java

@@ -0,0 +1,34 @@
+package com.cyksj.model.entity;
+
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Data;
+
+/**
+ * 获客链接加粉 主动回传记录
+ * @author chan
+ * @date 2024/3/13 16:00
+ */
+@SearchBean(tables = "corp_customer_acquistion_callback")
+@Data
+public class CorpCustomerAcquistionCallback extends BaseEntity {
+
+    /**
+     * 回传标识
+     */
+    private String callback;
+
+    /**
+     * 事件
+     */
+    private String event;
+
+    /**
+     * 企业微信用户unionId
+     */
+    private String unionId;
+
+    /**
+     * 回传状态
+     */
+    private Boolean status;
+}

+ 6 - 0
netflix-service/src/main/java/com/cyksj/service/corp/CorpService.java

@@ -36,4 +36,10 @@ public interface CorpService {
 	 * @return
 	 */
 	Attachments updateMaterial(Attachments attachments, String corpId,Integer type);
+
+	/**
+	 * 回传加粉延后回传记录
+	 * @param id 记录id
+	 */
+	void postAcquistionLinkCallback(Long id);
 }

+ 20 - 1
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpEventActionServiceImpl.java

@@ -135,6 +135,8 @@ public class CorpEventActionServiceImpl implements CorpEventActionService {
 
 	private final CorpWelcomeTemplateMapper corpWelcomeTemplateMapper;
 
+	private final CorpCustomerAcquistionCallbackMapper corpCustomerAcquistionCallbackMapper;
+
 	private static final String DEFAULT_MSG = "您好,欢迎加入银河录像局";
 
 	/**
@@ -1097,7 +1099,24 @@ public class CorpEventActionServiceImpl implements CorpEventActionService {
 				if (corpCustomerAcquisitionLinkPopularize != null) {
 					//如果为加粉则直接回传
 					if (corpCustomerAcquisitionLinkPopularize.getType() == 1) {
-						postData(callback, corpCustomerAcquisitionLinkPopularize.getEvent());
+						//如果需要延后主动回传的做持久化.
+						if(corpCustomerAcquisitionLinkPopularize.getDelayedPost()){
+							CorpCustomerAcquistionCallback corpCustomerAcquistionCallback =
+									corpCustomerAcquistionCallbackMapper.selectOne(Wrappers.lambdaQuery(CorpCustomerAcquistionCallback.class).eq(CorpCustomerAcquistionCallback::getCallback, callback).eq(CorpCustomerAcquistionCallback::getUnionId, unionId));
+							if(corpCustomerAcquistionCallback == null){
+								corpCustomerAcquistionCallback = new CorpCustomerAcquistionCallback();
+							}
+							corpCustomerAcquistionCallback.setCallback(callback);
+							corpCustomerAcquistionCallback.setEvent(corpCustomerAcquistionCallback.getEvent());
+							corpCustomerAcquistionCallback.setUnionId(unionId);
+							if(corpCustomerAcquistionCallback.getId() != null){
+								corpCustomerAcquistionCallbackMapper.updateById(corpCustomerAcquistionCallback);
+							}else {
+								corpCustomerAcquistionCallbackMapper.insert(corpCustomerAcquistionCallback);
+							}
+						}else {
+							postData(callback, corpCustomerAcquisitionLinkPopularize.getEvent());
+						}
 					}else {
 						//深度转化 前置加粉事件回传.
 						if(StringUtils.isNotBlank(corpCustomerAcquisitionLinkPopularize.getAddEvent())){

+ 31 - 0
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpServiceImpl.java

@@ -13,9 +13,12 @@ import com.cyksj.common.util.corp.WxCryptUtil;
 import com.cyksj.config.corp.WeChatCorpFactory;
 import com.cyksj.config.corp.YHLXWxCorpConfig;
 import com.cyksj.dto.CorpOauth2UserInfo;
+import com.cyksj.mapper.corp.CorpCustomerAcquistionCallbackMapper;
 import com.cyksj.mapper.corp.CorpFollowMapper;
 import com.cyksj.model.dto.WxCorpEncryptDto;
+import com.cyksj.model.entity.CorpCustomerAcquistionCallback;
 import com.cyksj.model.entity.CorpFollow;
+import com.cyksj.model.entity.OrderDonPost;
 import com.cyksj.model.entity.WxCorpApp;
 import com.cyksj.model.request.corp.Attachments;
 import com.cyksj.model.request.corp.CorpXmlMessage;
@@ -28,6 +31,7 @@ import com.cyksj.service.corp.WxCorpOps;
 import com.cyksj.service.corp.msg.CorpEventActionService;
 import com.cyksj.service.corp.msg.CorpMessageHandler;
 import com.cyksj.service.corp.msg.CorpMessageRouter;
+import com.cyksj.service.order.OrderDonPostService;
 import com.cyksj.util.WxCorpUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -70,6 +74,12 @@ public class CorpServiceImpl implements CorpService {
 	@Autowired
 	private RedisService redisService;
 
+	@Autowired
+	private OrderDonPostService orderDonPostService;
+
+	@Autowired
+	private CorpCustomerAcquistionCallbackMapper corpCustomerAcquistionCallbackMapper;
+
 	@PostConstruct
 	private void init() {
 		corpMessageRouter = new CorpMessageRouter(this)
@@ -327,4 +337,25 @@ public class CorpServiceImpl implements CorpService {
 
 		return mediaId;
 	}
+
+	/**
+	 *  加粉回传 目前 OE
+	 */
+	@Override
+	public void postAcquistionLinkCallback(Long id) {
+		try {
+			CorpCustomerAcquistionCallback corpCustomerAcquistionCallback = corpCustomerAcquistionCallbackMapper.selectById(id);
+			if(corpCustomerAcquistionCallback == null){
+				throw BusinessRuntimeException.getInstance("回传记录不存在");
+			}
+			if (corpCustomerAcquistionCallback.getStatus()) {
+				throw BusinessRuntimeException.getInstance("该记录已回传");
+			}
+			orderDonPostService.post(OrderDonPost.Type.OE.getType(), corpCustomerAcquistionCallback.getCallback(), corpCustomerAcquistionCallback.getEvent());
+			corpCustomerAcquistionCallback.setStatus(true);
+			corpCustomerAcquistionCallbackMapper.updateById(corpCustomerAcquistionCallback);
+		} catch (Exception e) {
+			throw BusinessRuntimeException.getInstance("加粉回传出错. error:" + StringUtil.getErrorText(e));
+		}
+	}
 }

+ 21 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/WxCorpController.java

@@ -18,6 +18,7 @@ import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GroupsRelationCustomerServiceFollowRecordMapper;
 import com.cyksj.mapper.GroupsRelationExpiryRecordMapper;
 import com.cyksj.model.dto.AuthRedirect;
+import com.cyksj.model.entity.CorpCustomerAcquistionCallback;
 import com.cyksj.model.entity.CorpFollow;
 import com.cyksj.model.entity.CorpMsgFollowAssociation;
 import com.cyksj.model.entity.QyMsgContent;
@@ -304,4 +305,24 @@ public class WxCorpController {
 		SearchResult<QyMsgContent> search = beanSearcher.search(QyMsgContent.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 获取主动回传 回传数据
+	 * @Param unionId 用户unionId
+	 */
+	@GetMapping("/acquistionLinkCallback")
+	public Result<CorpCustomerAcquistionCallback> getAcquistionLinkCallback(){
+		CorpCustomerAcquistionCallback corpCustomerAcquistionCallback = beanSearcher.searchFirst(CorpCustomerAcquistionCallback.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(corpCustomerAcquistionCallback);
+	}
+
+	/**
+	 * 主动回传
+	 * @param id 记录id
+	 */
+	@GetMapping("/acquistionLinkCallback/{id}")
+	public Result<String> postAcquistionLinkCallback(@PathVariable Long id){
+		corpService.postAcquistionLinkCallback(id);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }