MpMsgTemplateServiceImpl.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.kym.service.impl;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.kym.common.enums.MsgTemplateType;
  4. import com.kym.common.utils.wx.WxPbUtil;
  5. import com.kym.entity.MpMsgTemplate;
  6. import com.kym.entity.MpRelation;
  7. import com.kym.entity.PayLog;
  8. import com.kym.entity.WashOrder;
  9. import com.kym.mapper.MpMsgTemplateMapper;
  10. import com.kym.service.MpMsgTemplateService;
  11. import com.kym.service.MpRelationService;
  12. import com.kym.service.wechat.TemplateParamBuilder;
  13. import org.springframework.scheduling.annotation.Async;
  14. import org.springframework.stereotype.Service;
  15. import java.util.Map;
  16. /**
  17. * <p>
  18. * 微信公众号消息模版表 服务实现类
  19. * </p>
  20. *
  21. * @author skyline
  22. * @since 2024-08-07
  23. */
  24. @Service
  25. public class MpMsgTemplateServiceImpl extends ServiceImpl<MpMsgTemplateMapper, MpMsgTemplate> implements MpMsgTemplateService {
  26. private final Map<MsgTemplateType, TemplateParamBuilder> paramBuilders;
  27. private final MpRelationService mpRelationService;
  28. public MpMsgTemplateServiceImpl(Map<MsgTemplateType, TemplateParamBuilder> paramBuilders, MpRelationService mpRelationService) {
  29. this.paramBuilders = paramBuilders;
  30. this.mpRelationService = mpRelationService;
  31. }
  32. /**
  33. * 发送充值成功消息
  34. *
  35. * @param payLog
  36. * @param balance
  37. */
  38. @Override
  39. public void sendPaymentSuccessMsg(PayLog payLog, Integer balance) {
  40. sendTemplateMessage(MsgTemplateType.PAYMENT_SUCCESS, payLog.getUserId(), payLog, balance);
  41. }
  42. /**
  43. * 发送订单完成提醒
  44. *
  45. * @param washOrder
  46. * @param balance
  47. */
  48. @Override
  49. public void sendOrderCompletedMsg(WashOrder washOrder, Integer balance) {
  50. sendTemplateMessage(MsgTemplateType.ORDER_COMPLETED, washOrder.getUserId(), washOrder, balance);
  51. }
  52. /**
  53. * 发送停车优惠券
  54. *
  55. * @param washOrder
  56. */
  57. @Override
  58. public void sendParkingCouponMsg(WashOrder washOrder, String parkingCouponUrl) {
  59. sendTemplateMessage(MsgTemplateType.PARKING_COUPON, washOrder.getUserId(), washOrder, parkingCouponUrl);
  60. }
  61. @Override
  62. @Async
  63. public void sendTemplateMessage(MsgTemplateType templateType, Long userId, Object... args) {
  64. try {
  65. var mpMsgTemplate = lambdaQuery().eq(MpMsgTemplate::getBizType, templateType.getBizType()).one();
  66. if (mpMsgTemplate == null) {
  67. return;
  68. }
  69. mpRelationService.lambdaQuery().eq(MpRelation::getUserId, userId).oneOpt().ifPresent(mpRelation -> {
  70. TemplateParamBuilder builder = paramBuilders.get(templateType);
  71. Map<String, String> params = builder.buildParams(args);
  72. WxPbUtil.sendPublicTemplateMessage(
  73. mpRelation.getMpOpenid(),
  74. mpMsgTemplate.getTemplateId(),
  75. params,
  76. templateType.equals(MsgTemplateType.PARKING_COUPON) ? args[1].toString() : "",
  77. ""
  78. );
  79. });
  80. } catch (Exception e) {
  81. log.error("发送模板消息失败", e);
  82. }
  83. }
  84. }