Explorar o código

add(backend) [公众号菜单]

wangxiao %!s(int64=4) %!d(string=hai) anos
pai
achega
2310cf75a7
Modificáronse 15 ficheiros con 606 adicións e 8 borrados
  1. 1 1
      operation-backend/src/main/java/com/idiot/operationbackend/controller/ArticlesController.java
  2. 17 0
      operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/AccountMenuController.java
  3. 1 2
      operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/FollowReplyController.java
  4. 1 1
      operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/PushMsgController.java
  5. 107 0
      operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/QrCodeController.java
  6. 75 0
      operation-backend/src/main/java/com/idiot/operationbackend/entity/AccountMenu.java
  7. 218 0
      operation-backend/src/main/java/com/idiot/operationbackend/entity/QrCode.java
  8. 11 0
      operation-backend/src/main/java/com/idiot/operationbackend/mappers/AccountMenuMapper.java
  9. 11 0
      operation-backend/src/main/java/com/idiot/operationbackend/mappers/QrCodeMapper.java
  10. 11 0
      operation-backend/src/main/java/com/idiot/operationbackend/service/facade/AccountMenuService.java
  11. 35 0
      operation-backend/src/main/java/com/idiot/operationbackend/service/facade/QrCodeService.java
  12. 12 0
      operation-backend/src/main/java/com/idiot/operationbackend/service/facade/WeChatService.java
  13. 16 0
      operation-backend/src/main/java/com/idiot/operationbackend/service/impl/AccountMenuServiceImpl.java
  14. 59 0
      operation-backend/src/main/java/com/idiot/operationbackend/service/impl/QrCodeServiceImpl.java
  15. 31 4
      operation-backend/src/main/java/com/idiot/operationbackend/service/impl/WeChatServiceImpl.java

+ 1 - 1
operation-backend/src/main/java/com/idiot/operationbackend/controller/ArticlesController.java

@@ -23,7 +23,7 @@ import javax.validation.Valid;
  */
  */
 
 
 @RestController
 @RestController
-@RequestMapping
+@RequestMapping("/articles")
 @Api(value = "ArticlesController", tags ="图文")
 @Api(value = "ArticlesController", tags ="图文")
 public class ArticlesController {
 public class ArticlesController {
 
 

+ 17 - 0
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/AccountMenuController.java

@@ -0,0 +1,17 @@
+package com.idiot.operationbackend.controller.interactive;
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author wang xiao
+ * @date Created in 20:15 2020/9/21
+ */
+@RestController
+@RequestMapping("/menu")
+@Api(value = "MenuController", tags ="微信公共号菜单")
+public class AccountMenuController {
+
+
+}

+ 1 - 2
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/FollowReplyController.java

@@ -72,8 +72,7 @@ public class FollowReplyController {
                                                                   @PathVariable String id,
                                                                   @PathVariable String id,
                                                                   @RequestParam String accountId) {
                                                                   @RequestParam String accountId) {
         String userId = JwtTokenUtil.getUserId(token);
         String userId = JwtTokenUtil.getUserId(token);
-        logger.info("用户:{}查看被关注回复详情",userId);
-
+        logger.info("用户:{}查看被关注回复:{}详情",userId,id);
         FollowReply followReply = followReplyService.getById(id);
         FollowReply followReply = followReplyService.getById(id);
         if (Objects.isNull(followReply)){
         if (Objects.isNull(followReply)){
             Account account = accountService.getById(accountId);
             Account account = accountService.getById(accountId);

+ 1 - 1
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/PushMsgController.java

@@ -87,7 +87,7 @@ public class PushMsgController {
                                                                   @PathVariable String id,
                                                                   @PathVariable String id,
                                                                   @RequestParam String accountId) {
                                                                   @RequestParam String accountId) {
         String userId = JwtTokenUtil.getUserId(token);
         String userId = JwtTokenUtil.getUserId(token);
-        logger.info("用户:{}查看推送消息详情",userId);
+        logger.info("用户:{}查看推送消息:{}详情",userId,id);
 
 
         AccountPush accountPush = pushService.getById(id);
         AccountPush accountPush = pushService.getById(id);
         if (Objects.isNull(accountPush)){
         if (Objects.isNull(accountPush)){

+ 107 - 0
operation-backend/src/main/java/com/idiot/operationbackend/controller/interactive/QrCodeController.java

@@ -0,0 +1,107 @@
+package com.idiot.operationbackend.controller.interactive;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.idiot.operationbackend.controller.AuthController;
+import com.idiot.operationbackend.entity.*;
+import com.idiot.operationbackend.service.facade.*;
+import com.idiot.operationbackend.support.JsonResult;
+import com.idiot.operationbackend.util.JwtTokenUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 二维码
+ * @author wang xiao
+ * @date Created in 18:03 2020/9/21
+ */
+@RestController
+@RequestMapping("/qr")
+@Api(value = "QrCodeController", tags ="二维码")
+public class QrCodeController {
+
+
+    private final Logger logger = LoggerFactory.getLogger(QrCodeController.class);
+
+    @Autowired
+    private AccountService accountService;
+
+    @Autowired
+    private QrCodeService qrCodeService;
+
+
+    @Autowired
+    private MaterialService materialService;
+
+    @Autowired
+    private ArticlesService articlesService;
+
+
+    @Autowired
+    private WeChatService weChatService;
+
+    @GetMapping
+    @ApiOperation(value = "查询二维码列表")
+    public ResponseEntity<JsonResult<Page<QrCode>>> qrCodePage (@RequestHeader String token,int page) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}查询二维码列表",userId);
+        List<Account> accounts = accountService.queryAccountByUserId(userId);
+        List<String> accIds = accounts.stream().map(Account::getId).collect(Collectors.toList());
+        return ResponseEntity.ok(JsonResult.success(qrCodeService.pageQrCode(page,accIds)));
+    }
+
+
+    @GetMapping("/{id}")
+    @ApiOperation(value = "查询二维码详情")
+    public ResponseEntity<JsonResult<QrCode>> qrCode (@RequestHeader String token,
+                                                      @PathVariable String id) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}查询二维码:{}详情",userId,id);
+        QrCode qrCode = qrCodeService.getById(id);
+        queryContents(qrCode);
+        return ResponseEntity.ok(JsonResult.success(qrCode));
+    }
+
+    @PostMapping
+    @ApiOperation(value = "新增二维码")
+    public ResponseEntity<JsonResult<Boolean>> addQrCode (@RequestHeader String token,
+                                                          @RequestBody @Valid  QrCode qrCode) {
+        String userId = JwtTokenUtil.getUserId(token);
+        logger.info("用户:{}新增二维码",userId);
+        String accountId = qrCode.getAccountId();
+        Account account = accountService.getById(accountId);
+        qrCode.setNikeName(account.getNickName());
+        qrCode.setHeadImg(account.getHeadImg());
+        qrCodeService.save(qrCode);
+        String wxJson = weChatService.createQrCode(qrCode,accountId);
+        boolean upResult = qrCodeService.upQrCode(qrCode,wxJson);
+        return ResponseEntity.ok(JsonResult.success(upResult));
+    }
+
+
+    private void queryContents(QrCode qrCode) {
+        String artIds = qrCode.getArticlesIds();
+        String matIds = qrCode.getMaterialIds();
+        List<Object> content = new ArrayList<>();
+        List<Articles> articles = articlesService.queryArticlesByIds(artIds);
+        if (Objects.nonNull(articles)) {
+            content.addAll(articles);
+        }
+
+        List<Material> materials = materialService.queryByIds(matIds);
+        if (Objects.nonNull(materials)) {
+            content.addAll(materials);
+        }
+        qrCode.setContents(content);
+    }
+}

+ 75 - 0
operation-backend/src/main/java/com/idiot/operationbackend/entity/AccountMenu.java

@@ -0,0 +1,75 @@
+package com.idiot.operationbackend.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+/**
+ * 工作号 菜单
+ * @author wang xiao
+ * @date Created in 20:24 2020/9/21
+ */
+@TableName("t_account_menu")
+public class AccountMenu {
+
+    @TableId
+    private String id;
+
+    private String accountId;
+
+    private String type;
+
+    private String name;
+
+    private String key;
+
+    private String parentId;
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+}

+ 218 - 0
operation-backend/src/main/java/com/idiot/operationbackend/entity/QrCode.java

@@ -0,0 +1,218 @@
+package com.idiot.operationbackend.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 二维码内容
+ * @author wang xiao
+ * @date Created in 18:05 2020/9/21
+ */
+@TableName("t_qr_code")
+public class QrCode {
+
+    @TableId
+    private String  id;
+
+    private String nikeName;
+
+    private String headImg;
+
+    @NotEmpty(message = "请选择公众号")
+    private String accountId;
+
+    @NotEmpty(message = "请填写二维码名称")
+    private String label;
+
+    @NotEmpty(message = "请选择生成类型")
+    private Integer type;
+
+    private Long  totalNum;
+
+    private Long newNum;
+
+    private Long followNum;
+
+    private String url;
+
+    private String ticket;
+
+    private Integer pushType;
+
+    private String materialIds;
+
+    private String articlesIds;
+
+    private String createTime;
+
+    private String expireTime;
+
+    @TableField(exist = false)
+    private List<Object> contents;
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getAccountId() {
+        return accountId;
+    }
+
+    public void setAccountId(String accountId) {
+        this.accountId = accountId;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Long getTotalNum() {
+        return totalNum;
+    }
+
+    public void setTotalNum(Long totalNum) {
+        this.totalNum = totalNum;
+    }
+
+    public Long getNewNum() {
+        return newNum;
+    }
+
+    public void setNewNum(Long newNum) {
+        this.newNum = newNum;
+    }
+
+    public Long getFollowNum() {
+        return followNum;
+    }
+
+    public void setFollowNum(Long followNum) {
+        this.followNum = followNum;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public Integer getPushType() {
+        return pushType;
+    }
+
+    public void setPushType(Integer pushType) {
+        this.pushType = pushType;
+    }
+
+    public String getMaterialIds() {
+        return materialIds;
+    }
+
+    public void setMaterialIds(String materialIds) {
+        this.materialIds = materialIds;
+    }
+
+    public String getArticlesIds() {
+        return articlesIds;
+    }
+
+    public void setArticlesIds(String articlesIds) {
+        this.articlesIds = articlesIds;
+    }
+
+    public List<Object> getContents() {
+        return contents;
+    }
+
+    public void setContents(List<Object> contents) {
+        this.contents = contents;
+    }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(String expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public String getNikeName() {
+        return nikeName;
+    }
+
+    public void setNikeName(String nikeName) {
+        this.nikeName = nikeName;
+    }
+
+    public String getHeadImg() {
+        return headImg;
+    }
+
+    public void setHeadImg(String headImg) {
+        this.headImg = headImg;
+    }
+
+    public String getTicket() {
+        return ticket;
+    }
+
+    public void setTicket(String ticket) {
+        this.ticket = ticket;
+    }
+
+
+    @Override
+    public String toString() {
+        return "QrCode{" +
+                "id='" + id + '\'' +
+                ", nikeName='" + nikeName + '\'' +
+                ", headImg='" + headImg + '\'' +
+                ", accountId='" + accountId + '\'' +
+                ", label='" + label + '\'' +
+                ", type=" + type +
+                ", totalNum=" + totalNum +
+                ", newNum=" + newNum +
+                ", followNum=" + followNum +
+                ", url='" + url + '\'' +
+                ", ticket='" + ticket + '\'' +
+                ", pushType=" + pushType +
+                ", materialIds='" + materialIds + '\'' +
+                ", articlesIds='" + articlesIds + '\'' +
+                ", createTime='" + createTime + '\'' +
+                ", expireTime='" + expireTime + '\'' +
+                ", contents=" + contents +
+                '}';
+    }
+}

+ 11 - 0
operation-backend/src/main/java/com/idiot/operationbackend/mappers/AccountMenuMapper.java

@@ -0,0 +1,11 @@
+package com.idiot.operationbackend.mappers;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.idiot.operationbackend.entity.AccountMenu;
+
+/**
+ * @author wang xiao
+ * @date Created in 20:36 2020/9/21
+ */
+public interface AccountMenuMapper extends BaseMapper<AccountMenu> {
+}

+ 11 - 0
operation-backend/src/main/java/com/idiot/operationbackend/mappers/QrCodeMapper.java

@@ -0,0 +1,11 @@
+package com.idiot.operationbackend.mappers;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.idiot.operationbackend.entity.QrCode;
+
+/**
+ * @author wang xiao
+ * @date Created in 18:40 2020/9/21
+ */
+public interface QrCodeMapper extends BaseMapper<QrCode> {
+}

+ 11 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/facade/AccountMenuService.java

@@ -0,0 +1,11 @@
+package com.idiot.operationbackend.service.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.idiot.operationbackend.entity.AccountMenu;
+
+/**
+ * @author wang xiao
+ * @date Created in 20:37 2020/9/21
+ */
+public interface AccountMenuService extends IService<AccountMenu> {
+}

+ 35 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/facade/QrCodeService.java

@@ -0,0 +1,35 @@
+package com.idiot.operationbackend.service.facade;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.idiot.operationbackend.entity.QrCode;
+
+import java.util.List;
+
+/**
+ * @author wang xiao
+ * @date Created in 18:40 2020/9/21
+ */
+public interface QrCodeService extends IService<QrCode> {
+
+    /**
+     *  二维码查询
+     * @author wangxiao
+     * @date 19:11 2020/9/21
+     * @param page
+     * @param accountId
+     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.idiot.operationbackend.entity.QrCode>
+     */
+    Page<QrCode> pageQrCode (int page, List<String> accountId);
+
+
+    /**
+     *  微信返回 后二维码修改
+     * @author wangxiao
+     * @date 19:52 2020/9/21
+     * @param qrCode
+     * @param wxJson
+     * @return boolean
+     */
+    boolean upQrCode (QrCode qrCode,String wxJson);
+}

+ 12 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/facade/WeChatService.java

@@ -2,6 +2,7 @@ package com.idiot.operationbackend.service.facade;
 
 
 import com.idiot.operationbackend.entity.Account;
 import com.idiot.operationbackend.entity.Account;
 import com.idiot.operationbackend.entity.Articles;
 import com.idiot.operationbackend.entity.Articles;
+import com.idiot.operationbackend.entity.QrCode;
 import com.idiot.operationbackend.support.Constants;
 import com.idiot.operationbackend.support.Constants;
 import com.idiot.operationbackend.support.WxInputStreamResource;
 import com.idiot.operationbackend.support.WxInputStreamResource;
 import org.dom4j.Document;
 import org.dom4j.Document;
@@ -311,6 +312,17 @@ public interface WeChatService {
    String addNews (Articles articles,String accountId);
    String addNews (Articles articles,String accountId);
 
 
 
 
+   /**
+    *  生成二维码
+    * @author wangxiao
+    * @date 19:29 2020/9/21
+    * @param qrCode
+    * @param accountId
+    * @return java.lang.String
+    */
+   String createQrCode(QrCode qrCode,String accountId);
+
+
 
 
 
 
 
 

+ 16 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/impl/AccountMenuServiceImpl.java

@@ -0,0 +1,16 @@
+package com.idiot.operationbackend.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.idiot.operationbackend.entity.AccountMenu;
+import com.idiot.operationbackend.mappers.AccountMenuMapper;
+import com.idiot.operationbackend.service.facade.AccountMenuService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author wang xiao
+ * @date Created in 20:37 2020/9/21
+ */
+@Service
+public class AccountMenuServiceImpl extends ServiceImpl<AccountMenuMapper, AccountMenu>
+        implements AccountMenuService {
+}

+ 59 - 0
operation-backend/src/main/java/com/idiot/operationbackend/service/impl/QrCodeServiceImpl.java

@@ -0,0 +1,59 @@
+package com.idiot.operationbackend.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.idiot.operationbackend.entity.QrCode;
+import com.idiot.operationbackend.mappers.QrCodeMapper;
+import com.idiot.operationbackend.service.facade.QrCodeService;
+import com.idiot.operationbackend.support.Constants;
+import com.idiot.operationbackend.support.CustomException;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author wang xiao
+ * @date Created in 18:41 2020/9/21
+ */
+@Service
+public class QrCodeServiceImpl extends ServiceImpl<QrCodeMapper, QrCode>
+        implements QrCodeService {
+
+
+    @Override
+    public Page<QrCode> pageQrCode(int page, List<String> accountId) {
+        Page<QrCode> queryPage = new Page<>(page,20);
+        LambdaQueryWrapper<QrCode> queryWrapper = Wrappers.<QrCode>lambdaQuery()
+                .in(QrCode::getAccountId,accountId)
+                .orderByDesc(QrCode::getCreateTime);
+        return page(queryPage,queryWrapper);
+    }
+
+
+    @Override
+    public boolean upQrCode(QrCode qrCode, String wxJson) {
+        if (StringUtils.isEmpty(wxJson)) {
+            return false;
+        }
+        JSONObject jsonObject = JSON.parseObject(wxJson);
+        String ticket = jsonObject.getString("ticket");
+        String url = jsonObject.getString("url");
+        if (StringUtils.isEmpty(ticket)) {
+            removeById(qrCode.getId());
+            String msg = jsonObject.getString("errmsg");
+            throw new CustomException(500,"微信二维码生成错误"+msg);
+        }
+        qrCode.setUrl(url);
+        qrCode.setTicket(ticket);
+        long expire = jsonObject.getLongValue("expire_seconds");
+        LocalDateTime now = LocalDateTime.now().plusSeconds(expire);
+        qrCode.setExpireTime(now.format(Constants.DATE_TIME_FORMATTER));
+        return updateById(qrCode);
+    }
+}

+ 31 - 4
operation-backend/src/main/java/com/idiot/operationbackend/service/impl/WeChatServiceImpl.java

@@ -4,12 +4,10 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.cache.*;
 import com.google.common.cache.*;
 import com.idiot.operationbackend.config.PlatformProperties;
 import com.idiot.operationbackend.config.PlatformProperties;
-import com.idiot.operationbackend.entity.Account;
-import com.idiot.operationbackend.entity.AccountFans;
-import com.idiot.operationbackend.entity.AccountTag;
-import com.idiot.operationbackend.entity.Articles;
+import com.idiot.operationbackend.entity.*;
 import com.idiot.operationbackend.handler.SyncUserTask;
 import com.idiot.operationbackend.handler.SyncUserTask;
 import com.idiot.operationbackend.service.facade.AccountFansService;
 import com.idiot.operationbackend.service.facade.AccountFansService;
 import com.idiot.operationbackend.service.facade.AccountService;
 import com.idiot.operationbackend.service.facade.AccountService;
@@ -639,4 +637,33 @@ public class WeChatServiceImpl implements WeChatService, InitializingBean {
                 LocalDateTime.now().toString(),respJson);
                 LocalDateTime.now().toString(),respJson);
         return respJson;
         return respJson;
     }
     }
+
+    @Override
+    public String createQrCode(QrCode qrCode, String accountId) {
+        String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s";
+        int type = qrCode.getType();
+        String actionName = type==0?"QR_STR_SCENE":"QR_LIMIT_STR_SCENE";
+        JSONObject parentNode  = new JSONObject();
+        parentNode.put("action_name",actionName);
+        JSONObject childNode = new JSONObject();
+        childNode.put("scene_str",qrCode.getId());
+        JSONObject sceneNode  = new JSONObject();
+        sceneNode.put("scene",childNode);
+        parentNode.put("action_info",sceneNode);
+        String accessToken = getAuthorizerAccessToken(accountId);
+        requestUrl = String.format(requestUrl,accessToken);
+        HttpHeaders  headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        HttpEntity<String> request = new HttpEntity<String>(parentNode.toJSONString(), headers);
+        logger.info("微信上生成二维码,accountId:{},QrCode:{}----start,时间:{}",accountId,qrCode.toString(),
+                LocalDateTime.now().toString());
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(requestUrl,request,String.class);
+        String jsonStr = responseEntity.getBody();
+        logger.info("微信上生成二维码,accountId:{},QrCode:{}----end,时间:{},微信返回:{}",accountId,qrCode.toString(),
+                LocalDateTime.now().toString(),jsonStr);
+        return jsonStr;
+    }
+
+
+
 }
 }