xueyiming преди 9 месеца
родител
ревизия
8598bf3017

+ 11 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/param/WeComPushMessageParam.java

@@ -0,0 +1,11 @@
+package com.tzld.longarticle.recommend.server.model.param;
+
+import lombok.Data;
+
+@Data
+public class WeComPushMessageParam {
+
+    private String corpId;
+
+    private String userId;
+}

+ 14 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/WeComPushMessageVo.java

@@ -0,0 +1,14 @@
+package com.tzld.longarticle.recommend.server.model.vo;
+
+import com.tzld.longarticle.recommend.server.model.cgi.MsgData;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WeComPushMessageVo {
+
+    private Integer groupIndex;
+
+    private List<MsgData> msgDataList;
+}

+ 12 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/exterior/WeComService.java

@@ -0,0 +1,12 @@
+package com.tzld.longarticle.recommend.server.service.exterior;
+
+import com.tzld.longarticle.recommend.server.common.response.CommonResponse;
+import com.tzld.longarticle.recommend.server.model.param.WeComPushMessageParam;
+import com.tzld.longarticle.recommend.server.model.vo.WeComPushMessageVo;
+
+import java.util.List;
+
+public interface WeComService {
+
+    CommonResponse<List<WeComPushMessageVo>> getPushMessage(WeComPushMessageParam param);
+}

+ 83 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/exterior/impl/WeComServiceImpl.java

@@ -0,0 +1,83 @@
+package com.tzld.longarticle.recommend.server.service.exterior.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.tzld.longarticle.recommend.server.common.enums.cgi.ReplyStrategyServiceEnum;
+import com.tzld.longarticle.recommend.server.common.response.CommonResponse;
+import com.tzld.longarticle.recommend.server.model.bo.MiniData;
+import com.tzld.longarticle.recommend.server.model.cgi.BucketDataParam;
+import com.tzld.longarticle.recommend.server.model.cgi.GroupData;
+import com.tzld.longarticle.recommend.server.model.cgi.MsgData;
+import com.tzld.longarticle.recommend.server.model.cgi.ReplyBucketData;
+import com.tzld.longarticle.recommend.server.model.param.PushMessageParam;
+import com.tzld.longarticle.recommend.server.model.param.WeComPushMessageParam;
+import com.tzld.longarticle.recommend.server.model.vo.PushMessageVo;
+import com.tzld.longarticle.recommend.server.model.vo.WeComPushMessageVo;
+import com.tzld.longarticle.recommend.server.service.exterior.WeComService;
+import com.tzld.longarticle.recommend.server.service.strategy.reply.ReplyStrategyService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+@Slf4j
+@Service
+public class WeComServiceImpl implements WeComService {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    private Map<String, ReplyStrategyService> strategyServiceMap;
+
+    @PostConstruct
+    public void init() {
+        strategyServiceMap = applicationContext.getBeansOfType(ReplyStrategyService.class);
+    }
+
+    @Override
+    public CommonResponse<List<WeComPushMessageVo>> getPushMessage(WeComPushMessageParam param) {
+        List<WeComPushMessageVo> res = new ArrayList<>();
+        ReplyBucketData replyBucketData = getPushMessageData(param);
+        List<GroupData> groupList = replyBucketData.getGroupList();
+        if(CollectionUtils.isEmpty(groupList)){
+            return CommonResponse.create(500,"数据异常");
+        }
+        for (GroupData groupData : groupList) {
+            if (CollectionUtils.isEmpty(groupData.getMsgDataList())) {
+                continue;
+            }
+            WeComPushMessageVo weComPushMessageVo = new WeComPushMessageVo();
+            weComPushMessageVo.setGroupIndex(groupData.getGroupIndex());
+            List<MsgData> msgDataList = groupData.getMsgDataList();
+            MsgData msgData = new MsgData();
+            msgData.setMsgType(3);
+            msgData.setTitle("欢迎你的到来");
+            msgDataList.add(0, msgData);
+            weComPushMessageVo.setMsgDataList(msgDataList);
+            res.add(weComPushMessageVo);
+        }
+        return CommonResponse.success(res);
+    }
+
+    private ReplyBucketData getPushMessageData(WeComPushMessageParam param) {
+        log.info("strategyServiceMap={}", JSON.toJSONString(strategyServiceMap));
+        for (Map.Entry<String, ReplyStrategyService> stringReplyStrategyServiceEntry : strategyServiceMap.entrySet()) {
+            ReplyStrategyService replyStrategyService = stringReplyStrategyServiceEntry.getValue();
+            // 使用策略层
+            if (replyStrategyService.support(ReplyStrategyServiceEnum.BUCKET_STRATEGY_V1)) {
+                BucketDataParam bucketDataParam = new BucketDataParam();
+                bucketDataParam.setGhId(param.getUserId());
+                return replyStrategyService.getResult(bucketDataParam);
+            }
+        }
+        // 无执行策略 不会走到这里
+        return null;
+    }
+}

+ 37 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/WeComController.java

@@ -0,0 +1,37 @@
+package com.tzld.longarticle.recommend.server.web;
+
+import com.tzld.longarticle.recommend.server.common.response.CommonResponse;
+import com.tzld.longarticle.recommend.server.model.param.AccessTokenParam;
+import com.tzld.longarticle.recommend.server.model.param.CallbackParam;
+import com.tzld.longarticle.recommend.server.model.param.PushMessageParam;
+import com.tzld.longarticle.recommend.server.model.param.WeComPushMessageParam;
+import com.tzld.longarticle.recommend.server.model.vo.AccessTokenVo;
+import com.tzld.longarticle.recommend.server.model.vo.PushMessageVo;
+import com.tzld.longarticle.recommend.server.model.vo.WeComPushMessageVo;
+import com.tzld.longarticle.recommend.server.mq.MessageCallbackProducer;
+import com.tzld.longarticle.recommend.server.service.exterior.AccessTokenService;
+import com.tzld.longarticle.recommend.server.service.exterior.ThirdPartyService;
+import com.tzld.longarticle.recommend.server.service.exterior.WeComService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/wecom")
+public class WeComController {
+
+
+   @Autowired
+   private WeComService weComService;
+
+
+    @PostMapping("/pushMessage/get")
+    public CommonResponse<List<WeComPushMessageVo>> getPushMessage(@RequestBody WeComPushMessageParam param) {
+        return weComService.getPushMessage(param);
+    }
+
+}