feat:钱包流水备注
This commit is contained in:
1 parent
42ac8786ee
commit
65b00be0a4
26 files changed
+1399
-14
No files matched your search
+91
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user