退款打印方法调试
This commit is contained in:
parent
a73615f350
commit
1d328b38f7
@ -29,6 +29,9 @@ public class OrderPrintVO implements Serializable {
|
||||
@ApiModelProperty(value = "退单编号")
|
||||
private String return_id;
|
||||
|
||||
@ApiModelProperty(value = "店铺Id")
|
||||
private Integer store_id;
|
||||
|
||||
@ApiModelProperty(value = "店铺名称")
|
||||
private String store_name;
|
||||
|
||||
@ -132,7 +135,7 @@ public class OrderPrintVO implements Serializable {
|
||||
private String cashier = "收银员";
|
||||
|
||||
@ApiModelProperty(value = "订单商品详情打印对象列表")
|
||||
private List<OrderItemPrintVO> orderItemPrintVOList;
|
||||
private List<OrderItemPrintVO> order_items;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ public class FreeMakerUtils {
|
||||
* @throws IOException
|
||||
* @throws TemplateException
|
||||
*/
|
||||
public static String processTemplate(Configuration configuration, String templateName, String templateValue, Map<String, Object> binding) {
|
||||
public static String processTemplate(Configuration configuration, String templateName, String templateValue, Object binding) {
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
try {
|
||||
Template template = new Template(templateName, templateValue, configuration);
|
||||
@ -63,4 +63,8 @@ public class FreeMakerUtils {
|
||||
public static String processTemplate(String templateName, String templateValue, Map<String, Object> binding) {
|
||||
return processTemplate(stringTempConfiguration(), templateName, templateValue, binding);
|
||||
}
|
||||
|
||||
public static String processTemplate(String templateName, String templateValue, Object binding) {
|
||||
return processTemplate(stringTempConfiguration(), templateName, templateValue, binding);
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,6 +20,7 @@ import com.suisung.mall.shop.message.service.PushMessageService;
|
||||
import com.suisung.mall.shop.order.service.ShopOrderBaseService;
|
||||
import com.suisung.mall.shop.order.service.ShopOrderReturnService;
|
||||
import com.suisung.mall.shop.sfexpress.service.SFExpressApiService;
|
||||
import com.suisung.mall.shop.store.service.ShopStorePrinterService;
|
||||
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@ -77,7 +78,7 @@ public class LakalaController extends BaseControllerImpl {
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private LakalaApiService lakalaApiService;
|
||||
private ShopStorePrinterService shopStorePrinterService;
|
||||
|
||||
@Resource
|
||||
private LklLedgerEcService lklLedgerEcService;
|
||||
@ -93,7 +94,7 @@ public class LakalaController extends BaseControllerImpl {
|
||||
|
||||
// return lakalaApiService.tradeQuery(paramsJSON.getInt("storeId"), paramsJSON.getStr("orderId"));
|
||||
|
||||
return JSONUtil.parseObj(shopOrderReturnService.fetchReturnOrderPrintInfo("", "FX_20251127_9"));
|
||||
return shopStorePrinterService.printShopStoreReturnOrder(paramsJSON.getStr("orderId"), paramsJSON.getStr("returnId"));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "批量发送推送消息 - 测试案例", notes = "批量发送推送消息 - 测试案例")
|
||||
|
||||
@ -80,6 +80,15 @@ public interface ShopStorePrinterService extends IBaseService<ShopStorePrinter>
|
||||
*/
|
||||
Boolean printShopStoreOrder(Integer storeId, String orderId);
|
||||
|
||||
/**
|
||||
* 退货成功后,立即打印门店的退货信息
|
||||
*
|
||||
* @param orderId
|
||||
* @param returnId
|
||||
* @return
|
||||
*/
|
||||
Boolean printShopStoreReturnOrder(String orderId, String returnId);
|
||||
|
||||
/**
|
||||
* 获取店铺所有有效打印机
|
||||
*
|
||||
|
||||
@ -5,11 +5,9 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.suisung.mall.common.modules.store.ShopStorePrinterLog;
|
||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||
import com.suisung.mall.shop.store.mapper.ShopStorePrinterLogMapper;
|
||||
import com.suisung.mall.shop.store.mapper.ShopStorePrinterMapper;
|
||||
import com.suisung.mall.shop.store.service.ShopStorePrinterLogService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@ -19,41 +17,70 @@ import java.util.List;
|
||||
public class ShopStorePrinterLogServiceImpl extends BaseServiceImpl<ShopStorePrinterLogMapper, ShopStorePrinterLog> implements ShopStorePrinterLogService {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(ShopStorePrinterLogServiceImpl.class);
|
||||
@Autowired
|
||||
private ShopStorePrinterMapper shopStorePrinterMapper;
|
||||
|
||||
@Override
|
||||
public Boolean insertShopStorePrinterLog(ShopStorePrinterLog record) {
|
||||
// 参数校验
|
||||
if (record == null) {
|
||||
logger.warn("插入打印日志失败:记录为空");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 必要字段校验
|
||||
if (record.getStore_id() == null ||
|
||||
StrUtil.isBlank(record.getOrder_id()) ||
|
||||
StrUtil.isBlank(record.getTemplate_value()) ||
|
||||
StrUtil.isBlank(record.getPrint_content())) {
|
||||
logger.warn("插入打印日志失败:必要字段缺失,storeId={}, orderId={}",
|
||||
record.getStore_id(), record.getOrder_id());
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
// 执行插入操作
|
||||
return add(record);
|
||||
} catch (Exception e) {
|
||||
logger.error("插入打印日志时发生异常,storeId={}, orderId={}",
|
||||
record.getStore_id(), record.getOrder_id(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void insertShopStorePrinterLogBatch(List<ShopStorePrinterLog> records) {
|
||||
// 参数校验
|
||||
if (CollUtil.isEmpty(records)) {
|
||||
logger.debug("批量插入打印日志失败:记录列表为空");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
for (ShopStorePrinterLog record : records) {
|
||||
// 单条记录校验
|
||||
if (record == null) {
|
||||
logger.warn("批量插入打印日志跳过:记录为空");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (record.getStore_id() == null ||
|
||||
StrUtil.isBlank(record.getOrder_id()) ||
|
||||
StrUtil.isBlank(record.getTemplate_value()) ||
|
||||
StrUtil.isBlank(record.getPrint_content())) {
|
||||
logger.warn("批量插入打印日志跳过:必要字段缺失,storeId={}, orderId={}",
|
||||
record.getStore_id(), record.getOrder_id());
|
||||
continue;
|
||||
}
|
||||
|
||||
// 执行插入操作
|
||||
add(record);
|
||||
}
|
||||
|
||||
logger.debug("批量插入打印日志完成,共处理 {} 条记录", records.size());
|
||||
} catch (Exception e) {
|
||||
logger.error("批量插入打印日志时发生异常,记录数: {}", records.size(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -14,13 +14,15 @@ import com.suisung.mall.common.domain.UserDto;
|
||||
import com.suisung.mall.common.modules.store.ShopStorePrinter;
|
||||
import com.suisung.mall.common.modules.store.ShopStorePrinterLog;
|
||||
import com.suisung.mall.common.modules.store.ShopStorePrinterTemplate;
|
||||
import com.suisung.mall.common.pojo.vo.OrderItemPrintVO;
|
||||
import com.suisung.mall.common.pojo.vo.OrderPrintVO;
|
||||
import com.suisung.mall.common.pojo.vo.ShopStorePrinterVO;
|
||||
import com.suisung.mall.common.utils.CheckUtil;
|
||||
import com.suisung.mall.common.utils.FreeMakerUtils;
|
||||
import com.suisung.mall.common.utils.JsonUtil;
|
||||
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
|
||||
import com.suisung.mall.shop.order.service.ShopOrderBaseService;
|
||||
import com.suisung.mall.shop.order.service.impl.ShopOrderInfoServiceImpl;
|
||||
import com.suisung.mall.shop.order.service.ShopOrderReturnService;
|
||||
import com.suisung.mall.shop.store.mapper.ShopStorePrinterMapper;
|
||||
import com.suisung.mall.shop.store.service.ShopStorePrinterLogService;
|
||||
import com.suisung.mall.shop.store.service.ShopStorePrinterService;
|
||||
@ -49,15 +51,13 @@ public class ShopStorePrinterServiceImpl extends BaseServiceImpl<ShopStorePrinte
|
||||
@Autowired
|
||||
private FeieUtil feieUtil;
|
||||
@Autowired
|
||||
private FreeMakerUtils freeMakerUtils;
|
||||
@Autowired
|
||||
private ShopStorePrinterTemplateService shopStorePrinterTemplateService;
|
||||
@Autowired
|
||||
private ShopOrderBaseService shopOrderBaseService;
|
||||
@Autowired
|
||||
private ShopStorePrinterLogService shopStorePrinterLogService;
|
||||
@Autowired
|
||||
private ShopOrderInfoServiceImpl shopOrderInfoServiceImpl;
|
||||
private ShopOrderReturnService shopOrderReturnService;
|
||||
|
||||
@Override
|
||||
public CommonResult shopStorePrinterPageList(String keyword, Integer pageNum, Integer pageSize) {
|
||||
@ -406,6 +406,137 @@ public class ShopStorePrinterServiceImpl extends BaseServiceImpl<ShopStorePrinte
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印店铺退货订单的小票信息。
|
||||
* <p>
|
||||
* 该方法通过调用飞鹅打票机接口,完成指定订单的退货小票打印功能。主要流程包括:
|
||||
* 1. 校验订单号是否合法;
|
||||
* 2. 获取订单及店铺相关信息;
|
||||
* 3. 查询对应店铺绑定的打印机列表与打印模板;
|
||||
* 4. 渲染打印内容并发送至所有绑定的打印机;
|
||||
* 5. 记录打印日志。
|
||||
* </p>
|
||||
*
|
||||
* @param orderId 订单编号,不能为空
|
||||
* @param returnId 退货单编号,用于标识具体的退货记录
|
||||
* @return 打印操作是否成功,成功返回 true,否则返回 false
|
||||
*/
|
||||
@Override
|
||||
public Boolean printShopStoreReturnOrder(String orderId, String returnId) {
|
||||
logger.debug("#### 调用飞鹅打票机的打印退款订单操作开始 ####");
|
||||
|
||||
// 参数校验
|
||||
if (StrUtil.isBlank(returnId)) {
|
||||
logger.error("退款订单为空,无法打印小票。");
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
// 获取打印的订单信息,并检查订单是否存在且已支付
|
||||
OrderPrintVO binding = shopOrderReturnService.fetchReturnOrderPrintInfo(orderId, returnId);
|
||||
if (binding == null) {
|
||||
logger.error("退款订单Id{}信息无法获取,无法打印小票。", returnId);
|
||||
return false;
|
||||
}
|
||||
|
||||
logger.debug("退款订单信息:{}", binding);
|
||||
|
||||
orderId = binding.getOrder_id();
|
||||
Integer storeId = binding.getStore_id();
|
||||
if (CheckUtil.isEmpty(storeId) || CheckUtil.isEmpty(orderId)) {
|
||||
logger.warn("订单Id:{},店铺ID:{}为空,无法打印小票。", orderId, storeId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 查询店铺配置的打印机列表
|
||||
List<ShopStorePrinter> printerList = selectPrinterList(storeId);
|
||||
if (CollUtil.isEmpty(printerList)) {
|
||||
// 店铺没有打印机,不再继续执行打印逻辑
|
||||
logger.error("店铺{}未添加打票机,无法打印小票。", storeId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取适用于退货场景的打印模板
|
||||
ShopStorePrinterTemplate template = shopStorePrinterTemplateService.getShopStorePrinterTemplateInner(storeId, StateCode.PRINTER_TEMP_CATE_REFUND);
|
||||
if (template == null || StrUtil.isBlank(template.getTemplate_name()) || StrUtil.isBlank(template.getTemplate_value())) {
|
||||
// 模板缺失或无效,终止打印流程
|
||||
logger.error("店铺{}未添加打票机打印模版,无法打印小票。", storeId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 重要:重构实体类,处理标题,数量,价格适应长度
|
||||
List<OrderItemPrintVO> orderItems = binding.getOrder_items();
|
||||
if (CollUtil.isEmpty(orderItems)) {
|
||||
logger.error("订单{}商品信息为空,无法打印小票。", orderId);
|
||||
return false;
|
||||
}
|
||||
|
||||
List<OrderItemPrintVO> rebuiltItems = new ArrayList<>(orderItems.size());
|
||||
for (OrderItemPrintVO item : orderItems) {
|
||||
if (item != null) {
|
||||
rebuiltItems.add(item.rebuild());
|
||||
}
|
||||
}
|
||||
binding.setOrder_items(rebuiltItems);
|
||||
|
||||
// 使用 FreeMarker 模板引擎渲染实际要打印的内容
|
||||
String printContent = FreeMakerUtils.processTemplate(template.getTemplate_name(), template.getTemplate_value(), binding);
|
||||
if (StrUtil.isBlank(printContent)) {
|
||||
logger.error("订单{}信息模版渲染异常,无法打印小票。", orderId);
|
||||
return false;
|
||||
}
|
||||
logger.debug("打印内容长度:{}", printContent.length());
|
||||
|
||||
// 提取所有打印机设备序列号,准备批量打印
|
||||
List<String> printerSnList = new ArrayList<>(printerList.size());
|
||||
for (ShopStorePrinter printer : printerList) {
|
||||
if (printer != null && StrUtil.isNotBlank(printer.getPrinter_sn())) {
|
||||
printerSnList.add(printer.getPrinter_sn());
|
||||
}
|
||||
}
|
||||
|
||||
if (CollUtil.isEmpty(printerSnList)) {
|
||||
logger.error("订单{}没有有效的打印机设备,无法打印小票。", orderId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 向飞鹅打票机发送打印任务
|
||||
List<Pair<String, String>> respList = feieUtil.printContentByList(printerSnList, printContent);
|
||||
if (CollUtil.isEmpty(respList)) {
|
||||
// 所有打印机均未能响应,视为失败
|
||||
logger.error("订单{}信息打印,调用飞鹅打印机打印失败。", orderId);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 遍历每台打印机的响应结果,记录打印日志
|
||||
for (Pair<String, String> respSn : respList) {
|
||||
if (respSn != null) {
|
||||
// 构造并保存本次打印的日志记录
|
||||
ShopStorePrinterLog shopStorePrinterLog = new ShopStorePrinterLog(
|
||||
template.getCategory(),
|
||||
storeId,
|
||||
orderId,
|
||||
template.getTemplate_id(),
|
||||
template.getTemplate_value(),
|
||||
JsonUtil.object2json(binding),
|
||||
printContent,
|
||||
respSn.getSecond(),
|
||||
respSn.getFirst()
|
||||
);
|
||||
shopStorePrinterLogService.insertShopStorePrinterLog(shopStorePrinterLog);
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug("#### 调用飞鹅打票机的打印操作结束 ####");
|
||||
return true;
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("打印退货订单小票时发生异常,订单ID: {}, 退货单ID: {}", orderId, returnId, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<ShopStorePrinter> selectPrinterList(Integer storeId) {
|
||||
if (storeId == null) {
|
||||
|
||||
@ -92,6 +92,7 @@
|
||||
<!--订单对象映射-->
|
||||
<result property="order_id" column="order_id"/>
|
||||
<result property="return_id" column="return_id"/>
|
||||
<result property="store_id" column="store_id"/>
|
||||
<result property="store_name" column="store_name"/>
|
||||
<result property="store_tel" column="store_tel"/>
|
||||
<result property="order_pickup_num_str" column="order_pickup_num_str"/>
|
||||
@ -123,7 +124,7 @@
|
||||
<result property="da_address" column="da_address"/>
|
||||
<result property="cashier" column="cashier"/>
|
||||
<!-- 集合类型映射 -->
|
||||
<collection property="orderItemPrintVOList" ofType="com.suisung.mall.common.pojo.vo.OrderItemPrintVO">
|
||||
<collection property="order_items" ofType="com.suisung.mall.common.pojo.vo.OrderItemPrintVO">
|
||||
<result property="item_name" column="item_name"/>
|
||||
<result property="order_item_quantity" column="order_item_quantity"/>
|
||||
<result property="order_item_amount" column="order_item_amount"/>
|
||||
|
||||
@ -47,16 +47,16 @@
|
||||
--------------------------------<BR>
|
||||
<CB>#${order_pickup_num_str}</CB><BR>
|
||||
<L>退款原因:${return_buyer_message!'-'}</L><BR>
|
||||
<BOLD>配送时间:${payment_time}(之后20-30分钟)</BOLD><BR>
|
||||
<BOLD>配送时间:${payment_time?string('yyyy-MM-dd HH:mm:ss')}(之后20-30分钟)</BOLD><BR>
|
||||
--------------------------------<BR>
|
||||
订单编号:${order_id}<BR>
|
||||
退单编号:${return_id}<BR>
|
||||
订单来源:${order_channel_name!'微信小程序'}<BR>
|
||||
支付方式:${payment_type_name!'微信支付'}<BR>
|
||||
配送来源:${deliver_type_name!'顺丰同城'}<BR>
|
||||
付款时间:${payment_time}<BR>
|
||||
申请退款:${return_add_time}<BR>
|
||||
确认退款:${return_finish_time}<BR>
|
||||
付款时间:${payment_time?string('yyyy-MM-dd HH:mm:ss')}<BR>
|
||||
申请退款:${return_add_time?string('yyyy-MM-dd HH:mm:ss')}<BR>
|
||||
确认退款:${return_finish_time?string('yyyy-MM-dd HH:mm:ss')}<BR>
|
||||
--------------------------------<BR>
|
||||
<C>******* 退款商品 ******</C><BR>
|
||||
--------------------------------<BR>
|
||||
@ -78,4 +78,4 @@
|
||||
<CB>${store_name}</CB><BR>--------------------------------<BR><CB>#${order_pickup_num_str}</CB><BR><L>买家备注:${order_message!'-'}</L><BR><BOLD>配送时间:${delivery_time}</BOLD><BR>--------------------------------<BR>订单编号:${order_id}<BR>订单来源:微信小程序<BR>支付方式:微信支付<BR>配送来源:顺丰同城<BR>付款时间:${payment_time}<BR>--------------------------------<BR><L>商品名称 数量 金额</L><BR>--------------------------------<BR><#list order_items as item><L>${item.s_name}</L><L><BOLD>${item.s_quantity}</BOLD></L><L>${item.s_amount}</L><BR><#if item.s_name_segs??><#list item.s_name_segs as seg><L>${seg}</L><BR></#list></#if><BOLD><#if item.product_sn?default("")?trim?length gt 1>${item.product_sn}</BOLD><BR></#if></#list>--------------------------------<BR>商品总件数:<BOLD>${order_items_count!0}</BOLD><BR>商品总额:<BOLD>¥${order_product_amount?string('0.00')}</BOLD><BR>押金:<BOLD>¥${(yajin!0)?string('0.00')}</BOLD><BR>运费:<BOLD>¥${order_shipping_fee?string('0.00')}</BOLD><BR>会员权益:<BOLD>-¥${(quanyi!0)?string('0.00')}</BOLD><BR>秒杀:<BOLD>-¥${(miaosha!0)?string('0.00')}</BOLD><BR>实付金额:<BOLD>¥${order_payment_amount?string('0.00')}</BOLD><BR><#if seller_message?default("")?trim?length gt 1>--------------------------------<BR><BOLD>商家备注:${seller_message!'---'}</BOLD><BR></#if>--------------------------------<BR><BOLD>收货人:${buyer_user_name!''}</BOLD><BR><BOLD>收货人手机:${store_tel!''}</BOLD><BR><BOLD>收货地址:${da_province!'-'}${da_city!'-'}${da_address!'-'}</BOLD><BR>--------------------------------<BR>门店:${store_name}<BR>门店电话:<BOLD>${store_tel!'-'}</BOLD><BR>收银员:${cashier!'-'}<BR>
|
||||
|
||||
带参模版:
|
||||
<CB><B>用户退款订单<BR></B></CB><CB>${store_name}</CB><BR>--------------------------------<BR><CB>#${order_pickup_num_str}</CB><BR><L>退款原因:${return_buyer_message!'-'}</L><BR><BOLD>配送时间:${payment_time}(之后20-30分钟)</BOLD><BR>--------------------------------<BR>订单编号:${order_id}<BR>退单编号:${return_id}<BR>订单来源:${order_channel_name!'微信小程序'}<BR>支付方式:${payment_type_name!'微信支付'}<BR>配送来源:${deliver_type_name!'顺丰同城'}<BR>付款时间:${payment_time}<BR>申请退款:${return_add_time}<BR>确认退款:${return_finish_time}<BR>--------------------------------<BR><C>******* 退款商品 ******</C><BR>--------------------------------<BR><#list order_items as item><L>${item.s_name}</L><L><BOLD>${item.s_quantity}</BOLD></L><L>${item.s_amount}</L><BR><#if item.s_name_segs??><#list item.s_name_segs as seg><L>${seg}</L><BR></#list></#if><BOLD><#if item.product_sn?default("")?trim?length gt 1>${item.product_sn}</BOLD><BR></#if></#list>--------------------------------<BR>实付金额:<BOLD>¥${order_payment_amount?string('0.00')}元</BOLD><BR>配送费:<BOLD>¥${order_shipping_fee?string('0.00')}元</BOLD><BR>申请退款:<BOLD>¥${return_refund_amount?string('0.00')}</BOLD><BR>退款方式:<BOLD>${return_flag_str}</BOLD><BR>商家审批备注:<BOLD>${return_store_message!'-'}</BOLD><BR>--------------------------------<BR><BOLD>会员名称:${buyer_user_name}</BOLD><BR><BOLD>会员手机:${return_tel}</BOLD><BR>--------------------------------<BR>操作员:${cashier!'-'}<BR>
|
||||
<CB><B>用户退款订单<BR></B></CB><CB>${store_name}</CB><BR>--------------------------------<BR><CB>#${order_pickup_num_str}</CB><BR><L>退款原因:${return_buyer_message!'-'}</L><BR><BOLD>配送时间:${payment_time?string('yyyy-MM-dd HH:mm:ss')}(20-30分钟)</BOLD><BR>--------------------------------<BR>订单编号:${order_id}<BR>退单编号:${return_id}<BR>订单来源:${order_channel_name!'微信小程序'}<BR>支付方式:${payment_type_name!'微信支付'}<BR>配送来源:${deliver_type_name!'顺丰同城'}<BR>付款时间:${payment_time?string('yyyy-MM-dd HH:mm:ss')}<BR>申请退款:${return_add_time?string('yyyy-MM-dd HH:mm:ss')}<BR>确认退款:${return_finish_time?string('yyyy-MM-dd HH:mm:ss')}<BR>--------------------------------<BR><C>******* 退款商品 ******</C><BR>--------------------------------<BR><#list order_items as item><L>${item.s_name}</L><L><BOLD>${item.s_quantity}</BOLD></L><L>${item.s_amount}</L><BR><#if item.s_name_segs??><#list item.s_name_segs as seg><L>${seg}</L><BR></#list></#if><BOLD><#if item.product_sn?default("")?trim?length gt 1>${item.product_sn}</BOLD><BR></#if></#list>--------------------------------<BR>实付金额:<BOLD>¥${order_payment_amount?string('0.00')}元</BOLD><BR>配送费:<BOLD>¥${order_shipping_fee?string('0.00')}元</BOLD><BR>申请退款:<BOLD>¥${return_refund_amount?string('0.00')}</BOLD><BR>退款方式:<BOLD>${return_flag_str}</BOLD><BR>商家审批备注:<BOLD>${return_store_message!'-'}</BOLD><BR>--------------------------------<BR><BOLD>会员名称:${buyer_user_name}</BOLD><BR><BOLD>会员手机:${return_tel}</BOLD><BR>--------------------------------<BR>操作员:${cashier!'-'}<BR>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user