feat:钱包流水备注

This commit is contained in:
dzc committed 2026-10-09 09:28:21 +08:00
1 parent 42ac8786ee
commit 65b00be0a4
26 files changed
+1399 -14

No files matched your search

@@ -0,0 +1,91 @@
package com.bsd.pjcloud.hard.api.utils;
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum;
import com.bsd.pjcloud.wallet.api.constant.WalletSysRemarkTemplate;
import java.util.Objects;
/**
* 硬件订单场景到钱包流水系统备注(sys_remark)的映射工具。
*
* <p>按订单类型({@link HardOrderTypeEnum})+ 系统类型({@link HardTypeEnum})选择
* {@link WalletSysRemarkTemplate} 中的文案模板并渲染金额。hardware 在线扣款与
* wallet 历史流水回填共用本映射,保证新旧数据口径一致。</p>
*
* @author pjcloud
*/
public final class HardOrderSysRemarkHelper {
private HardOrderSysRemarkHelper() {
}
/**
* 按订单场景渲染消费系统备注。
*
* @param orderType 订单类型编码,取值见 {@link HardOrderTypeEnum#getType()}
* @param sysType 系统类型编码,取值见 {@link HardTypeEnum#getType()};商超单与食堂单共用订单类型时靠它区分
* @param amountFen 消费金额,单位分,正负均可(渲染取绝对值)
* @return 场景文案,如"在食堂线下消费10元";类型缺失时返回通用兜底文案
*/
public static String renderConsume(String orderType, String sysType, Integer amountFen) {
return WalletSysRemarkTemplate.format(resolveConsumeTemplate(orderType, sysType), amountFen);
}
/**
* 按订单场景选择消费文案模板。
*
* @param orderType 订单类型编码
* @param sysType 系统类型编码
* @return 消费模板常量;类型缺失时返回通用兜底模板
*/
public static String resolveConsumeTemplate(String orderType, String sysType) {
HardOrderTypeEnum orderTypeEnum = HardOrderTypeEnum.valueOfByType(orderType);
if (orderTypeEnum == null) {
return WalletSysRemarkTemplate.OFFLINE_FALLBACK;
}
// 商超单与食堂单共用 BELOW/RESERVE 订单类型,需先按系统类型区分
if (Objects.equals(sysType, HardTypeEnum.SUPERMARKET.getType())) {
return WalletSysRemarkTemplate.SUPERMARKET;
}
// 扫商户码扣款牌的任意金额支付单
if (Objects.equals(sysType, HardTypeEnum.MERCHANT_QR_CODE.getType())) {
return WalletSysRemarkTemplate.SCAN_CODE;
}
// 生鲜柜免密支付不挂在食堂名下,使用通用线下文案
if (Objects.equals(sysType, HardTypeEnum.DOOR.getType())) {
return WalletSysRemarkTemplate.OFFLINE_FALLBACK;
}
return switch (orderTypeEnum) {
case BELOW, XFJ -> WalletSysRemarkTemplate.CANTEEN_OFFLINE;
case RESERVE -> WalletSysRemarkTemplate.CANTEEN_ONLINE_RESERVE;
case TAKE_OUT -> WalletSysRemarkTemplate.CANTEEN_TAKE_OUT;
case FARMER -> WalletSysRemarkTemplate.MALL;
case COFFEE -> WalletSysRemarkTemplate.COFFEE;
case ZY -> WalletSysRemarkTemplate.ZY;
case LB -> WalletSysRemarkTemplate.LB;
// 外来人员、跨单位、访客购买等其余订单类型统一走通用文案
default -> WalletSysRemarkTemplate.OFFLINE_FALLBACK;
};
}
/**
* 按订单场景渲染补偿/退款退回系统备注。
*
* @param amountFen 退款金额,单位分,正负均可(渲染取绝对值)
* @return 退款文案,如"订单取消退回10元"
*/
public static String renderCompensateRefund(Integer amountFen) {
return WalletSysRemarkTemplate.format(WalletSysRemarkTemplate.ORDER_COMPENSATE_REFUND, amountFen);
}
/**
* 渲染订单售后退款系统备注。
*
* @param amountFen 退款金额,单位分,正负均可(渲染取绝对值)
* @return 售后退款文案,如"订单退款退回10元"
*/
public static String renderAfterSaleRefund(Integer amountFen) {
return WalletSysRemarkTemplate.format(WalletSysRemarkTemplate.ORDER_AFTER_SALE_REFUND, amountFen);
}
}