Эх сурвалжийг харах

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

koushanshan 1 жил өмнө
parent
commit
3d05ace070

+ 9 - 0
src/main/java/com/dk/mdm/feign/UserFeign.java

@@ -4,6 +4,7 @@ package com.dk.mdm.feign;
 import com.dk.common.infrastructure.constant.Constant;
 import com.dk.common.response.ResponseResultVO;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -33,4 +34,12 @@ public interface UserFeign {
     @PostMapping({"/update_clear_openid_feign"})
     ResponseResultVO<Integer> updateClearOpenidFeign(@RequestBody Map<String, Object> collectQuery) ;
 
+    /**
+     * @desc   : 查询微信登录用户信息
+     * @author : 姜永辉
+     * @date   : 2023-11-02 16:27
+     */
+    @PostMapping({"/get_user/{userId}"})
+    ResponseResultVO<?> getUser(@PathVariable String userId) ;
+
 }

+ 35 - 0
src/main/java/com/dk/mdm/infrastructure/config/Config.java

@@ -91,4 +91,39 @@ public class Config {
      */
     @Value("${wx.del_corp_tag}")
     private String delCorpTag;
+    /**
+     * @desc   : 公众号发送消息的api
+     * @author : 姜永辉
+     * @date   : 2024/07/12 9:03
+     */
+    @Value("${wx.uniform_send}")
+    private String uniformSend;
+    /**
+     * @desc   : 公众号发送消息的api
+     * @author : 姜永辉
+     * @date   : 2024/07/12 9:03
+     */
+    @Value("${wx.token}")
+    private String wechatUrlToken;
+    /**
+     * @desc   : 公众号appid
+     * @author : 姜永辉
+     * @date   : 2024/07/12 9:03
+     */
+    @Value("${wx.wxPublicAccountAppId}")
+    private String wxPublicAccountAppId;
+    /**
+     * @desc   : 公众号Secret
+     * @author : 姜永辉
+     * @date   : 2024/07/12 9:03
+     */
+    @Value("${wx.wxPublicAccountAppSecret}")
+    private String wxPublicAccountAppSecret;
+    /**
+     * @desc   : templateId
+     * @author : 姜永辉
+     * @date   : 2022/09/08 11:30
+     */
+    @Value("${wx.templateId}")
+    private String templateId;
 }

+ 4 - 4
src/main/java/com/dk/mdm/mapper/ivt/InboundItemMapper.xml

@@ -899,8 +899,8 @@
                 AND tpoi.sku_id is null
             </if>
             <if test="searchText !=null">
-                AND  (tpii.sku_model LIKE concat('%',my_ex.likequery(#{searchText}), '%')
-                OR   tpii.sku_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
+                AND  (tpoi.sku_model LIKE concat('%',my_ex.likequery(#{searchText}), '%')
+                OR   tpoi.sku_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
                 )
             </if>
         </where>
@@ -1069,8 +1069,8 @@
                 AND tpoi.sku_id is null
             </if>
             <if test="searchText !=null">
-                AND  (tpii.sku_model LIKE concat('%',my_ex.likequery(#{searchText}), '%')
-                OR   tpii.sku_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
+                AND  (tpoi.sku_model LIKE concat('%',my_ex.likequery(#{searchText}), '%')
+                OR   tpoi.sku_name LIKE concat('%',my_ex.likequery(#{searchText}),'%')
                 )
             </if>
         </where>

+ 6 - 6
src/main/java/com/dk/mdm/service/ivt/inbound/InboundItemService.java

@@ -211,8 +211,8 @@ public class InboundItemService extends BaseService<InboundItem> {
 							//修改存货批次明细
 							InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
 									.setBatchId(inventoryBatchResponse.getBatchId())
-									.setCostPrice(inboundItem.getCostPrice())
-									.setCostAmt(inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty()));
+									.setCostPrice(inboundItem.getCostPrice().abs())
+									.setCostAmt((inboundItem.getCostPrice().multiply(inventoryBatchResponse.getInvQty())).abs());
 							inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
 							//修改总单
 							this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
@@ -221,8 +221,8 @@ public class InboundItemService extends BaseService<InboundItem> {
 						else if(outboundItemCostResponse.getOutQty().compareTo(BigDecimal.ZERO) == 0){
 							InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
 									.setBatchId(inventoryBatchResponse.getBatchId())
-									.setCostPrice(inboundItem.getCostPrice())
-									.setCostAmt(inboundItem.getCostAmt());
+									.setCostPrice(inboundItem.getCostPrice().abs())
+									.setCostAmt(inboundItem.getCostAmt().abs());
 							inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
 							//修改总单
 							this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));
@@ -259,8 +259,8 @@ public class InboundItemService extends BaseService<InboundItem> {
 				else{
 					InventoryBatchQuery inventoryBatchQuery = new InventoryBatchQuery()
 							.setBatchId(inventoryBatchResponse.getBatchId())
-							.setCostPrice(inboundItem.getCostPrice())
-							.setCostAmt(inboundItem.getCostAmt());
+							.setCostPrice(inboundItem.getCostPrice().abs())
+							.setCostAmt(inboundItem.getCostAmt().abs());
 					inventoryBatchMapper.updateInventoryBatchCost(inventoryBatchQuery);
 					//修改总单
 					this.updateInventory(new InventoryBatchQuery().setInvId(inventoryBatchResponse.getInvId()));

+ 8 - 0
src/main/java/com/dk/mdm/service/ivt/outbound/OutboundSaleReturnService.java

@@ -41,10 +41,12 @@ import com.dk.mdm.model.vo.ivt.OutboundItemVO;
 import com.dk.mdm.model.vo.ivt.OutboundVO;
 import com.dk.mdm.model.vo.mac.RecPayItemVO;
 import com.dk.mdm.model.vo.mac.RecPayVO;
+import com.dk.mdm.model.vo.mst.CustomerVO;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.ivt.inventory.InventoryService;
 import com.dk.mdm.service.mac.AccountService;
 import com.dk.mdm.service.mac.ReceiptService;
+import com.dk.mdm.service.mst.CustomerService;
 import com.dk.mdm.service.mst.MoneyAccountService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -112,6 +114,9 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
     @Autowired
     private InboundItemMapper inboundItemMapper;
 
+    @Autowired
+    private CustomerService customerService;
+
     /**
      * @desc : 修改原总单数据(订单,出库单)
      * posNegFlag :正负标识  true:正数,false:负数
@@ -434,6 +439,9 @@ public class OutboundSaleReturnService extends BaseService<Outbound> {
         if (outboundVO.getCusId() == null) {
             outboundVO = outCommon.insertCustomer(outboundVO);
         }
+        //更新总单客户状态为成交
+        customerService.update(new CustomerVO().setCusId(outboundVO.getCusId()).setSaleStatus(Constant.SaleStatus.CHENGJIAO.getName()) );
+
         //endregion
 
         //region  查询当前公司的系统参数  自动办理信息  并赋值

+ 123 - 31
src/main/java/com/dk/mdm/service/mst/CusFollowService.java

@@ -1,5 +1,6 @@
 package com.dk.mdm.service.mst;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
@@ -11,6 +12,9 @@ import com.dk.common.model.vo.core.StaffEntity;
 import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
+import com.dk.common.util.HttpUtils;
+import com.dk.mdm.feign.UserFeign;
+import com.dk.mdm.infrastructure.config.Config;
 import com.dk.mdm.infrastructure.convert.mst.CusFollowConvert;
 import com.dk.mdm.infrastructure.convert.mst.MeasureReceiptConvert;
 import com.dk.mdm.infrastructure.util.AuthUtils;
@@ -29,15 +33,18 @@ import com.dk.mdm.service.common.CommonService;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.IntStream;
 
 @Slf4j
 @Service
@@ -89,6 +96,12 @@ public class CusFollowService extends BaseService<CusFollow> {
     private XxlJobUtils xxlJobUtils;
 
     @Autowired
+    private Config config;
+
+    @Resource
+    private UserFeign userFeign;
+
+    @Autowired
     private MeasureReceiptConvert measureReceiptConvert;
 
     /**
@@ -302,7 +315,7 @@ public class CusFollowService extends BaseService<CusFollow> {
         // 只要有跟进日期
         if (cusFollow.getNextFollowTime() != null) {
             // 保存跟进信息
-            saveToXxlJob(cusFollow);
+//            saveToXxlJob(cusFollow);
         }
 
         return ResponseResultUtil.success();
@@ -399,42 +412,46 @@ public class CusFollowService extends BaseService<CusFollow> {
         if (followStaff != null) {
             log.info("sendFollowMessage:{}", JSONObject.toJSONString(followStaff));
             Customer customer = customerMapper.selectById(new CustomerQuery().setCusId(follow.getCusId()));
-
             if (customer != null) {
-                //设计师
-                StaffResponse designUser = null;
-                if (follow.getDesignStaff() != null) {
-                    designUser = staffMapper.selectById(follow.getDesignStaff());
-                }
-
-                // 添加跟进ID
-                JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(customer));
-                jsonObject.put("followId", follow.getFollowId());
-
-
                 String loginType = null;
-                JSONObject list = null;
-                //跟进followId先查询跟进数据
-                CusFollow e = cusFollowMapper.selectById(follow.getFollowId());
-                if (e != null) {
-                    if (Constant.BasicDataConstant.FOLLOW_STATUS_4.getValue().equals(e.getFollowStatus()) ||
-                            Constant.BasicDataConstant.FOLLOW_STATUS_5.getValue().equals(e.getFollowStatus())) {
-
-                        JSONObject followJs = JSONObject.parseObject(JSONObject.toJSONString(e));
-                        followJs.put("customerName", jsonObject.get("customerName"));
-                        followJs.put("customerPhone", jsonObject.get("customerPhone"));
-                        followJs.put("addressFull", jsonObject.get("addressFull"));
+                List<String> list = new ArrayList<>();
+                if (Constant.BasicDataConstant.FOLLOW_STATUS_4.getValue().equals(follow.getFollowStatus()) ||
+                        Constant.BasicDataConstant.FOLLOW_STATUS_5.getValue().equals(follow.getFollowStatus())) {
+                    list.add("您有客户需要跟进");
+                    loginType = "8";
 
-                        list = followJs;
-                        loginType = "8";
+                } else if (Constant.BasicDataConstant.FOLLOW_STATUS_6.getValue().equals(follow.getFollowStatus())) {
+                    list.add("您有客户需要量尺服务");
+                    loginType = "1";
 
-                    } else if (Constant.BasicDataConstant.FOLLOW_STATUS_1.getValue().equals(e.getFollowStatus()) ||
-                            Constant.BasicDataConstant.FOLLOW_STATUS_2.getValue().equals(e.getFollowStatus()) ||
-                            Constant.BasicDataConstant.FOLLOW_STATUS_3.getValue().equals(e.getFollowStatus())) {
+                } else if (Constant.BasicDataConstant.FOLLOW_STATUS_2.getValue().equals(follow.getFollowStatus())) {
+                    list.add("您有客户邀约进店");
+                    loginType = "1";
 
-                        list = jsonObject;
-                        loginType = "1";
+                } else if (Constant.BasicDataConstant.FOLLOW_STATUS_3.getValue().equals(follow.getFollowStatus())) {
+                    list.add("您有客户需要约尺服务");
+                    loginType = "1";
 
+                }
+                list.add(customer.getCusName());
+                list.add(customer.getCusPhone());
+                // 查询跟进人的openid和publicOpenId
+                ResponseResultVO<?> resultVO = userFeign.getUser(followStaff.getWxUserId());
+                // 如果没有成功返回,状态设置为待审
+                if (resultVO.getCode() != ResponseCodeEnum.SUCCESS.getCode()) {
+                    log.error("客户查询异常:为空{}", follow.getCusId());
+                    return ResponseCodeEnum.SELECT_NULL.getMessage();
+                } else {
+                    Map<String, Object> user = (Map<String, Object>) resultVO.getData();
+                    if (user != null) {
+                        // 发送消息
+                        Map<String, Object> mapMessage = new HashMap<>();
+                        mapMessage.put("loginType", loginType);
+                        mapMessage.put("publicOpenId", user.get("publicOpenId"));
+                        mapMessage.put("first", "客户跟进提醒");
+                        mapMessage.put("keywordList", list);
+                        mapMessage.put("remark", "客户跟进备注");
+                        sendUniformMessage(mapMessage);
                     }
                 }
 
@@ -451,6 +468,81 @@ public class CusFollowService extends BaseService<CusFollow> {
     }
 
     /**
+     * @author : sh4wmoo
+     * @date : 2021-7-20 13:49
+     * @desc : iBOSS推送公众号消息卡片
+     */
+    public ResponseResultVO sendUniformMessage(Map<String, Object> map) {
+        log.info("推送参数:{}", JSON.toJSONString(map));
+
+        // 3.获取token 231011
+        String token = this.getWxPublicAccountToken(); //this.getToken();
+        log.info("当前token:{}", token);
+        // 4.发送模板卡片 230927 地址发生变化
+        ResponseResultVO<JSONObject> res = HttpUtils.post(config.getUniformSend() + token, new HashMap<String, Object>(4) {{
+
+//            新加POST数据示例如下 240712
+            put("touser", map.get("publicOpenId") + "");
+            put("template_id", config.getTemplateId());
+            put("miniprogram", new HashMap<String, Object>(4) {{
+                put("appid", config.getAppId());
+                //用户点击公众号推送消息跳转小程序单据详情页 orderType  里面存放json字符串数据
+                //判断InvoiceParam
+                if (map.containsKey("InvoiceParam")) {
+                    put("pagepath", "pages/login/login?loginType=" + map.get("loginType").toString() + "&InvoiceParam=" + map.get("InvoiceParam").toString());
+                } else {
+                    put("pagepath", "pages/login/login?loginType=" + map.get("loginType").toString());
+                }
+            }});
+            put("data", new HashMap<String, Object>(16) {{
+                put("first", new HashMap<String, Object>(4) {{
+                    put("value", map.get("first").toString());
+                    put("color", "#173177");
+                }});
+                List<String> keywordList = (List<String>) map.get("keywordList");
+                //lambda foreach 取下标
+                IntStream.range(0, keywordList.size()).forEach(i -> {
+                    String keyIndex = "keyword" + (i + 1);
+                    put(keyIndex, new HashMap<String, Object>(4) {{
+                        put("value", keywordList.get(i));
+                        put("color", "#173177");
+                    }});
+                });
+                put("remark", new HashMap<String, Object>(4) {{
+                    put("value", map.get("remark").toString());
+                    put("color", "#173177");
+                }});
+            }});
+
+        }});
+        if (res.getCode() == ResponseCodeEnum.SUCCESS.getCode() && res.getData().getString("errcode").equals("0")) {
+            log.info("推送成功:{}");
+            return ResponseResultUtil.success();
+        } else {
+            log.error("推送失败:{}", res.getData().toJSONString());
+            return ResponseResultUtil.error(res.getData().toJSONString());
+        }
+    }
+
+    /**
+     * @author : jyh
+     * @date : 2023-10-11 16:23
+     * @desc : 调用中控服务获取公众号的token
+     */
+    public String getWxPublicAccountToken() {
+        ResponseResultVO<JSONObject> res = HttpUtils.post(config.getWechatUrlToken(),
+                new HashMap() {{
+                    put("appId", config.getWxPublicAccountAppId());
+                    put("appSecret", config.getWxPublicAccountAppSecret());
+                }});
+        if (res.getCode() == 200 && JSON.parseObject(JSON.toJSONString(res.getData())).get("code").toString().equals("200")) {
+            return JSON.parseObject(JSON.toJSONString(res.getData())).get("data").toString();
+        } else {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), res.getMessage());
+        }
+    }
+
+    /**
      * @desc : 发送跟进任务消息
      * @author : 姜永辉
      * @date : 2022-06-30 19:24

+ 5 - 5
src/main/java/com/dk/mdm/service/report/ReportService.java

@@ -455,16 +455,16 @@ public class ReportService {
             List<Map<String,Object>> newDataList = new ArrayList<>();
             newDataList.addAll(dataList);
             if (Boolean.parseBoolean(String.valueOf(param.get("openingNumberZero")))) {
-                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf( data.get("openingIvtQty"))) == 0).collect(Collectors.toList());
+                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf( data.get("openingIvtQty"))) != 0).collect(Collectors.toList());
             }
             if (Boolean.parseBoolean(String.valueOf(param.get("currentNumberZero")))) {
-                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("currentIntoQty"))) == 0).collect(Collectors.toList());
+                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("currentIntoQty"))) != 0).collect(Collectors.toList());
             }
             if (Boolean.parseBoolean(String.valueOf(param.get("currentOutNumberZero")))) {
-                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("currentOutQty"))) == 0).collect(Collectors.toList());
+                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("currentOutQty"))) != 0).collect(Collectors.toList());
             }
             if (Boolean.parseBoolean(String.valueOf(param.get("endingIvtNumberZero")))) {
-                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("endingIvtQty"))) == 0).collect(Collectors.toList());
+                newDataList = newDataList.stream().filter((Map data) -> Double.valueOf(String.valueOf(data.get("endingIvtQty"))) != 0).collect(Collectors.toList());
             }
             dataList.clear();
             dataList.addAll(newDataList);
@@ -549,7 +549,7 @@ public class ReportService {
             return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL, "请检查分页参数!");
         }
 
-        List<Map<String, Object>> list = new ArrayList<>();
+        List<Map<String, Object>>  list = new ArrayList<>();
         List<Object> objects = new ArrayList<>();
         if (param.get("macIds") instanceof ArrayList<?>) {
             for (Object o : (List<?>) param.get("macIds")) {

+ 1 - 1
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -566,7 +566,7 @@ public class OrderService extends BaseService<Order> {
                 .setAddressFull(orderVO.getAddressFull()).setAddressName(orderVO.getAddressName())
                 .setAddressNo(orderVO.getAddressNo()).setAddressGcj02(orderVO.getAddressGcj02())
                 .setContactName(orderVO.getContactName()).setContactPhone(orderVO.getContactPhone())
-                .setChannelId(orderVO.getSalesChannel()));
+                .setChannelId(orderVO.getSalesChannel()).setSaleStatus(Constant.SaleStatus.CHENGJIAO.getName()));
 
         // 明细实体(避免并发,需要再查一遍)
         OrderItem orderItemForUpdate;

+ 26 - 5
src/main/resources/dev/bootstrap.yml

@@ -4,7 +4,7 @@ spring:
   application:
     name: mdm-server-dkic-b1
   profiles:
-    active: @environment@
+    active: dev
   cloud:
     nacos:
       config:
@@ -91,8 +91,10 @@ swagger:
 wx:
   code2Session: https://qyapi.weixin.qq.com/cgi-bin/miniprogram/jscode2session?
   accessToken: https://qyapi.weixin.qq.com/cgi-bin/gettoken?
-  appId: wx414cffd0fc05e151
-  appSecret: 868ec372b9da961eb42989559bc9ccc5
+  # 小程序的appid
+  appId: wxe27c8f5249b7aeab
+  # 小程序的appSecret
+  appSecret: 9bd0efa102f148ff4ca09a1152310555
   apiUrl: https://api.weixin.qq.com/sns/jscode2session?
   #  企信企业id
   corpid: ww796c5d1684937b2f
@@ -104,6 +106,16 @@ wx:
   edit_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit_corp_tag?access_token=
   #  删除企业客户标签
   del_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token=
+  # 公众号发送消息的api
+  uniform_send: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=
+  # 公众号发送消息的api-对应获取token
+  token: http://ibossmp.dongkesoft.com:9000/get_access_token
+  # 公众号的appid appSecret 东科软件 公众号
+  wxPublicAccountAppId: wx6bb9335b534f7b28
+  wxPublicAccountAppSecret: 78a99837c113756599d1748b813ca698
+  templateId: V5Ju7-8BfDKJJm1HgH4j5km68rPs777pMVJ0_MKqR00
+
+
   # 支付的信息
   pay:
     # 商户号 微信支付
@@ -148,12 +160,21 @@ xxl:
       addresses: http://s.dev01.dkiboss.com:16100
     accessToken:
     executor:
-      appname: mes-mdm
+      appname: xxl-job-mini-customer-reminder
       address:
       ip:
-      port: 16001
+      port: 16111
       logpath: /data/applogs/xxl-job/jobhandler
       logretentiondays: 30
+  info:
+    plan:
+      job-desc: 跟进任务提醒
+      executo-handler: plan-reminder
+    follow:
+      job-desc: 客户跟进提醒
+      executo-handler: customer-reminder
+  job-group: 1
+  server-url: ${xxl.job.admin.addresses}
 
 
 pdf-folder: C:\Users\admin\Desktop\pdf\

+ 9 - 0
src/main/resources/test/bootstrap.yml

@@ -105,6 +105,15 @@ wx:
   edit_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/edit_corp_tag?access_token=
   #  删除企业客户标签
   del_corp_tag: https://qyapi.weixin.qq.com/cgi-bin/externalcontact/del_corp_tag?access_token=
+  # 公众号发送消息的api
+  uniform_send: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=
+  # 公众号发送消息的api-对应获取token
+  token: http://ibossmp.dongkesoft.com:9000/get_access_token
+  # 公众号的appid appSecret 东科软件 公众号
+  wxPublicAccountAppId: wx6bb9335b534f7b28
+  wxPublicAccountAppSecret: 78a99837c113756599d1748b813ca698
+  templateId: V5Ju7-8BfDKJJm1HgH4j5km68rPs777pMVJ0_MKqR00
+
   # 支付的信息
   pay:
     # 商户号 微信支付