Просмотр исходного кода

1)微信中控事件改为在数据库中注册。

tomatozq 5 лет назад
Родитель
Сommit
174d4b389e

+ 13 - 7
picc-admin-server/src/main/java/com/jpsoft/picc/modules/admin/controller/JwtsUserController.java

@@ -286,17 +286,23 @@ public class JwtsUserController {
 
                 String promoter = arr[1];
 
-                ReplyMessage replyMessage = replyMessageService.findByEvent(wechatId, "promotion");
+                ReplyMessage replyMessage = replyMessageService.findByEvent(wechatId,
+                                            String.valueOf(WeixinEvent.PICC_ADMIN_SCAN_QRCODE_PROMOTION));
 
-                StringBuilder urlBuilder = new StringBuilder();
+                if(replyMessage!=null) {
+                    StringBuilder urlBuilder = new StringBuilder();
 
-                urlBuilder.append("openId=" + openId);
-                urlBuilder.append("&promoter=" + URLEncoder.encode(promoter, "UTF-8"));
+                    urlBuilder.append("openId=" + openId);
+                    urlBuilder.append("&promoter=" + URLEncoder.encode(promoter, "UTF-8"));
 
-                Map<String, Object> vars = new HashMap<>();
-                vars.put("params", urlBuilder.toString());
+                    Map<String, Object> vars = new HashMap<>();
+                    vars.put("params", urlBuilder.toString());
 
-                message = VelocityHelper.format(replyMessage.getMessage(), vars);
+                    message = VelocityHelper.format(replyMessage.getMessage(), vars);
+                }
+                else{
+                    message = "当前公众号没有绑定事件:" + WeixinEvent.PICC_ADMIN_SCAN_QRCODE_PROMOTION;
+                }
             }
             else{
                 message = "当前用户已注册!";

+ 26 - 7
weixin-middleware/src/main/java/com/jpsoft/weixin/controller/WeixinController.java

@@ -182,21 +182,38 @@ public class WeixinController {
             //扫码用户openID
             String openId = requestJson.getStr("FromUserName");
 
-            List<EventCallback> callbackList = registerCallbackList();
+//            List<EventCallback> callbackList = registerCallbackList();
 
             boolean processed = false;
 
-            //开发者在5秒内未回复任何内容
-            for (EventCallback callback: callbackList) {
-                if (StringUtils.isNotEmpty(eventKey) && eventKey.startsWith(callback.getCode())){
-                    callback.process(wechatId,openId,eventKey);
+            if (StringUtils.isNotEmpty(eventKey) && eventKey.indexOf(",")!=-1) {
+                String[] keys = eventKey.split(",");
+                String eventCode = keys[0];
 
-                    WeixinUtil.replyTextMessage(response,wechatId,openId,callback.getMessage());
+                ReplyMessage replyMessage = replyMessageService.findByEvent(wechatId, eventCode);
+
+                if (replyMessage != null) {
+                    EventCallback callback = new EventCallback(replyMessage.getEvent(), replyMessage.getCallbackUrl());
+
+                    callback.process(wechatId, openId, eventKey);
+
+                    WeixinUtil.replyTextMessage(response, wechatId, openId, callback.getMessage());
 
                     processed = true;
-                    break;
                 }
             }
+                //开发者在5秒内未回复任何内容
+//                for (EventCallback callback : callbackList) {
+//                    if (StringUtils.isNotEmpty(eventKey) && eventKey.startsWith(callback.getCode())) {
+//                        callback.process(wechatId, openId, eventKey);
+//
+//                        WeixinUtil.replyTextMessage(response, wechatId, openId, callback.getMessage());
+//
+//                        processed = true;
+//                        break;
+//                    }
+//                }
+//            }
 
             if(!processed) {
                 String responseText = "success";
@@ -240,6 +257,8 @@ public class WeixinController {
 //        PromotionCallback promotionCallback = new PromotionCallback(piccAdminScanConfig.getPromotionCode(),piccAdminScanConfig.getPromotionCallbackUrl());
 //        promotionCallback.setReplyMessageService(replyMessageService);
 
+
+
         return list;
     }
 

+ 3 - 0
weixin-middleware/src/main/java/com/jpsoft/weixin/entity/ReplyMessage.java

@@ -35,4 +35,7 @@ public class ReplyMessage {
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
     @ApiModelProperty(value = "更新时间")
 	private Date updateTime;
+
+	@ApiModelProperty(value = "回调地址")
+	private String callbackUrl;
 }

+ 6 - 1
weixin-middleware/src/main/resources/mapper/ReplyMessage.xml

@@ -10,6 +10,7 @@
         <result property="message" column="message_"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
+        <result property="callbackUrl" column="callback_url"/>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.weixin.entity.ReplyMessage">
         <!--
@@ -19,7 +20,7 @@
         -->
         <![CDATA[
 		insert into wechat_reply_message
-	    (id_,wechat_id,event_,message_,create_time,update_time)
+	    (id_,wechat_id,event_,message_,create_time,update_time,callback_url)
 		values
 		(
 			#{id,jdbcType=VARCHAR}
@@ -28,6 +29,7 @@
 			,#{message,jdbcType=VARCHAR}
 			,#{createTime,jdbcType= TIMESTAMP }
 			,#{updateTime,jdbcType= TIMESTAMP }
+			,#{callbackUrl,jdbcType=VARCHAR}
 		)
 	]]>
     </insert>
@@ -52,6 +54,9 @@
             <if test="updateTime!=null">
                 update_time=#{updateTime,jdbcType= TIMESTAMP },
             </if>
+            <if test="callbackUrl!=null">
+                callback_url=#{callbackUrl,jdbcType=VARCHAR},
+            </if>
         </set>
         where id_=#{id}
     </update>