点餐系统---消息01---微信模板消息推送

没有正式账号就在微信公众平台获取测试账号
在这里插入图片描述

1.新建service接口

/**
 * 推送消息
 */
public interface PushMessageService {

    /**
     * 订单状态变更消息
     */
    void orderStatus(OrderDTO orderDTO);
}

2.实现接口
先将模板id配置
在这里插入图片描述

在这里插入图片描述

@Service
@Slf4j
public class PushMessageServiceImpl implements PushMessageService {

    @Autowired
    private WxMpService wxMpService;

    @Autowired
    private WechatAccountConfig accountConfig;

    @Override
    public void orderStatus(OrderDTO orderDTO) {
        WxMpTemplateMessage templateMessage = new WxMpTemplateMessage();
        templateMessage.setTemplateId(accountConfig.getTemplateId().get("orderStatus"));//模板id
        templateMessage.setToUser(orderDTO.getBuyerOpenid());//推送给谁

        //内容按照模板详情里给出的来写
        List<WxMpTemplateData> data = Arrays.asList(
                new WxMpTemplateData("first", "亲,请记得收货。"),
                new WxMpTemplateData("keyword1", "微信点餐"),
                new WxMpTemplateData("keyword2", "18868812345"),
                new WxMpTemplateData("keyword3", orderDTO.getOrderId()),
                new WxMpTemplateData("keyword4", orderDTO.getOrderStatusEnum().getMessage()),
                new WxMpTemplateData("keyword5", "¥" + orderDTO.getOrderAmount()),
                new WxMpTemplateData("remark", "欢迎再次光临!")
        );
        templateMessage.setData(data);
        try {
			//与消息相关的操作都在getTemplateMsgService        
            wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
        }catch (WxErrorException e) {
            log.error("【微信模版消息】发送失败, {}", e);
        }
    }
}

3.进行测试
在这里插入图片描述
4.在订单完结后推送消息
在finish方法后调用
在这里插入图片描述
可以在任意时候推送,看实际的需要

在发送消息时,发现异常并没有抛出,只是进行了日志记录,因为一旦抛出在订单完结finish()时就会回滚,订单状态就没有被修改,订单就没有完结。所以与消息有关操作一般不抛出异常,不能影响主要业务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值