소스 검색

微信公众号-菜单响应动作类型

chao 3 년 전
부모
커밋
53e566bac4

+ 18 - 2
src/main/java/com/caimei365/manager/entity/wechat/WechatMenu.java

@@ -38,7 +38,19 @@ public class WechatMenu {
      */
     private Integer sort;
     /**
-     * 菜单的响应动作类型
+     * 菜单的响应动作类型:
+     * click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
+     * view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
+     * scancode_push:扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
+     * scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
+     * pic_sysphoto:弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
+     * pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
+     * pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
+     * location_select:弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
+     * media_id:下发消息(除文本消息)用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频 、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
+     * <del>view_limited:跳转图文消息URL用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。</del>
+     * article_id:用户点击 article_id 类型按钮后,微信客户端将会以卡片形式,下发开发者在按钮中填写的图文消息
+     * article_view_limited:类似 view_limited,但不使用 media_id 而使用 article_id
      */
     private String type;
     /**
@@ -50,9 +62,13 @@ public class WechatMenu {
      */
     private String url;
     /**
-     * 调用新增永久素材接口返回的合法media_id(media_id类型和view_limited类型必须)
+     * 调用新增永久素材接口返回的合法media_id(media_id类型必须,图片、音频、视频)
      */
     private String mediaId;
+    /**
+     * 调用新增永久素材接口返回的合法media_id(article_id类型、article_view_limited类型必须,图文消息)
+     */
+    private String articleId;
     /**
      * 小程序appID
      */

+ 2 - 0
src/main/java/com/caimei365/manager/service/wechat/impl/WechatMenuServiceImpl.java

@@ -293,6 +293,8 @@ public class WechatMenuServiceImpl implements WechatMenuService {
             map.put("url", publicUrl);
             map.put("appid", menu.getAppid());
             map.put("pagepath", menu.getPagePath());
+        } else if ("article_id".equals(menu.getType()) || "article_view_limited".equals(menu.getType())) {
+            map.put("article_id", menu.getArticleId());
         } else if ("media_id".equals(menu.getType()) || "view_limited".equals(menu.getType())) {
             map.put("media_id", menu.getMediaId());
         } else {

+ 2 - 2
src/main/resources/mapper/WeChatDao.xml

@@ -134,11 +134,11 @@
         UPDATE wechat_article_detail SET title = #{title}, linkurl = #{linkUrl}, picurl = #{pictureUrl}, update_by = #{userId}, update_date = NOW()
         WHERE cm_wxarticledtlID = #{id}
     </update>
-    <insert id="insertWechatArticle">
+    <insert id="insertWechatArticle" keyProperty="id" useGeneratedKeys="true">
         INSERT INTO wechat_article(title, wx_type, create_by, create_date)
         VALUES (#{title}, #{wxType}, #{userId}, NOW())
     </insert>
-    <insert id="insertWechatArticleDetail">
+    <insert id="insertWechatArticleDetail" keyProperty="id" useGeneratedKeys="true">
         INSERT INTO wechat_article_detail(cm_wxarticleID, title, linkurl, picurl, create_by, create_date)
         VALUES (#{articleId}, #{title}, #{linkUrl},#{pictureUrl}, #{userId}, NOW())
     </insert>