PaymentSuccessParamBuilder.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.kym.service.wechat.impl;
  2. import com.kym.entity.PayLog;
  3. import com.kym.service.cache.KymCache;
  4. import com.kym.service.wechat.TemplateParamBuilder;
  5. import java.util.Map;
  6. /**
  7. * 充值支付成功消息模板参数构建器
  8. */
  9. public class PaymentSuccessParamBuilder implements TemplateParamBuilder {
  10. // 模板键常量定义
  11. private static final String KEY_OUT_TRADE_NO = "character_string4";
  12. private static final String KEY_STATION_NAME = "thing9";
  13. private static final String KEY_PAY_AMOUNT = "amount1";
  14. private static final String KEY_RECHARGE_AMOUNT = "amount2";
  15. private static final String KEY_SUCCESS_TIME = "time5";
  16. @Override
  17. public Map<String, String> buildParams(Object... args) {
  18. if (args.length < 2 || !(args[0] instanceof PayLog)) {
  19. throw new IllegalArgumentException("需要传入 PayLog 和 Integer 类型的参数");
  20. }
  21. PayLog payLog = (PayLog) args[0];
  22. Object rechargeAmountObj = args[1];
  23. if (!(rechargeAmountObj instanceof Number)) {
  24. throw new IllegalArgumentException("第二个参数必须是数字类型");
  25. }
  26. int rechargeAmount = ((Number) rechargeAmountObj).intValue();
  27. String outTradeNo = payLog.getOutTradeNo();
  28. String stationName = KymCache.INSTANCE.getUserStationName(payLog.getUserId());
  29. String payAmount = formatAmount(payLog.getTotal());
  30. String rechargeAmountStr = formatAmount(rechargeAmount);
  31. String successTime = payLog.getSuccessTime() != null ? payLog.getSuccessTime().format(formatter) : "";
  32. return Map.of(
  33. KEY_OUT_TRADE_NO, outTradeNo,
  34. KEY_STATION_NAME, stationName != null ? stationName : "",
  35. KEY_PAY_AMOUNT, payAmount,
  36. KEY_RECHARGE_AMOUNT, rechargeAmountStr,
  37. KEY_SUCCESS_TIME, successTime
  38. );
  39. }
  40. }