记得上下班打卡 | git大法好,push需谨慎

Commit 8d6488fa authored by wangyifan's avatar wangyifan

partner后台 退款订单列表增加字段;优化数据落库顺序

parent 33b70f3e
...@@ -83,6 +83,8 @@ public class GoblinBackOrderVo implements Serializable, Cloneable { ...@@ -83,6 +83,8 @@ public class GoblinBackOrderVo implements Serializable, Cloneable {
private String auditAt; private String auditAt;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private String createdAt; private String createdAt;
@ApiModelProperty(value = "发起方[1-用户|2-商家]")
private Integer operationType;
@ApiModelProperty(value = "过期时间") @ApiModelProperty(value = "过期时间")
private String expireAt; private String expireAt;
......
...@@ -20,11 +20,23 @@ public class GoblinStoreBackOrderListVo implements Cloneable { ...@@ -20,11 +20,23 @@ public class GoblinStoreBackOrderListVo implements Cloneable {
private Integer type; private Integer type;
@ApiModelProperty(value = "退款/退货状态[0-商铺发起退款|1-退款申请(用户发送退款请求)|2-退款成功(商家同意退款)|3-退款拒绝(商家拒绝退款)|4-退货申请(用户发起退货请求)|5-退货拒绝(商家拒绝退货)|6-退货审核通过等待用户填写物流(商家审核通过,等待用户寄回商品)|7-待收货(用户已确认)|8-退货完成(商家收货并且同意退款给用户)|9-退货失败(商家不同意退款)|10-退款失败|11-取消退款") @ApiModelProperty(value = "退款/退货状态[0-商铺发起退款|1-退款申请(用户发送退款请求)|2-退款成功(商家同意退款)|3-退款拒绝(商家拒绝退款)|4-退货申请(用户发起退货请求)|5-退货拒绝(商家拒绝退货)|6-退货审核通过等待用户填写物流(商家审核通过,等待用户寄回商品)|7-待收货(用户已确认)|8-退货完成(商家收货并且同意退款给用户)|9-退货失败(商家不同意退款)|10-退款失败|11-取消退款")
private Integer status; private Integer status;
@ApiModelProperty(value = " 退款金额") @ApiModelProperty(value = "退款范围[1-整单退款|2-部分退款]")
private Integer refundScope;
@ApiModelProperty(value = "原订单实付金额")
private BigDecimal priceActual;
@ApiModelProperty(value = "实际退款金额")
private BigDecimal realBackPrice; private BigDecimal realBackPrice;
@ApiModelProperty(value = " 创建时间") @ApiModelProperty(value = "发起方[1-用户发起|2-商家发起]")
private Integer operationType;
@ApiModelProperty(value = "申请时间")
private String createdAt; private String createdAt;
@ApiModelProperty(value = "退款sku") @ApiModelProperty(value = "审核时间")
private String auditAt;
@ApiModelProperty(value = "退款完成时间")
private String refundAt;
@ApiModelProperty(value = "处理时间(优先退款完成时间,否则审核时间)")
private String processedAt;
@ApiModelProperty(value = "退款商品明细")
private List<GoblinBackOrderSkuVo> backOrderSkuVos; private List<GoblinBackOrderSkuVo> backOrderSkuVos;
......
...@@ -517,22 +517,12 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService { ...@@ -517,22 +517,12 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
vo.setStatus(backOrder.getStatus()); vo.setStatus(backOrder.getStatus());
vo.setAuditAt(backOrder.getAuditAt() == null ? null : nowStr); vo.setAuditAt(backOrder.getAuditAt() == null ? null : nowStr);
vo.setBackOrderSkuVos(orderSkuVoList); vo.setBackOrderSkuVos(orderSkuVoList);
vo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
//添加日志 //添加日志
GoblinBackOrderLog backOrderLog = initBackLog(param.getOrderId(), uid, now); GoblinBackOrderLog backOrderLog = initBackLog(param.getOrderId(), uid, now);
backOrderLog.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_21.getValue()); backOrderLog.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_21.getValue());
backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue()); backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
backOrderLog.setMessage("用户发起发起:" + JsonUtils.toJson(param)); backOrderLog.setMessage("用户发起发起:" + JsonUtils.toJson(param));
if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {
String returnString = refundHelper.initRefund(orderVo, backOrder.getRealBackPrice(), backOrder.getBackCode());
if (!refundHelper.isRefundSuccess(returnString)) {
String message = refundHelper.getRefundMessage(returnString);
backOrder.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue());
backOrder.setErrorReason("失败原因:" + message);
vo.setStatus(backOrder.getStatus());
vo.setErrorReason(backOrder.getErrorReason());
log.error("REFUND DATA = " + returnString);
}
}
//redis //redis
redisUtils.setBackOrderVo(backOrder.getBackOrderId(), vo); redisUtils.setBackOrderVo(backOrder.getBackOrderId(), vo);
redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo); redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo);
...@@ -556,7 +546,23 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService { ...@@ -556,7 +546,23 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
}); });
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(), SqlMapping.gets(sqls, applyRefund, orderStatus, orderSkuStatus, refundLog, updateCandyUserCouponObjs)); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(), SqlMapping.gets(sqls, applyRefund, orderStatus, orderSkuStatus, refundLog, updateCandyUserCouponObjs));
if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) { if (orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue()) {
if (backOrder.getStatus() == GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue()) { String returnString = refundHelper.initRefund(orderVo, backOrder.getRealBackPrice(), backOrder.getBackCode());
if (!refundHelper.isRefundSuccess(returnString)) {
String message = refundHelper.getRefundMessage(returnString);
backOrder.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue());
backOrder.setErrorReason("失败原因:" + message);
vo.setStatus(backOrder.getStatus());
vo.setErrorReason(backOrder.getErrorReason());
log.error("REFUND DATA = " + returnString);
redisUtils.setBackOrderVo(backOrder.getBackOrderId(), vo);
mongoUtils.updateGoblinBackOrderVo(backOrder.getBackOrderId(), vo);
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_USER_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.store.applyRefund",
vo.getStatus(), vo.getReason(), vo.getAuditAt(), now,
backOrder.getBackOrderId(), now, now
)
);
return ResponseDto.failure("退款失败:" + backOrder.getErrorReason()); return ResponseDto.failure("退款失败:" + backOrder.getErrorReason());
} }
if (DragonConstant.REFUND_TYPE_MICROPAY_ALIPAY.equals(orderVo.getPaymentType())) { if (DragonConstant.REFUND_TYPE_MICROPAY_ALIPAY.equals(orderVo.getPaymentType())) {
......
...@@ -54,16 +54,7 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -54,16 +54,7 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
long total = (long) map.get("total"); long total = (long) map.get("total");
List<GoblinBackOrderVo> voList = (List<GoblinBackOrderVo>) map.get("data"); List<GoblinBackOrderVo> voList = (List<GoblinBackOrderVo>) map.get("data");
for (GoblinBackOrderVo item : voList) { for (GoblinBackOrderVo item : voList) {
GoblinStoreBackOrderListVo vo = GoblinStoreBackOrderListVo.getNew(); listVos.add(buildStoreBackOrderListVo(item));
vo.setCreatedAt(item.getCreatedAt());
vo.setBackOrderId(item.getBackOrderId());
vo.setBackCode(item.getBackCode());
vo.setBackOrderSkuVos(item.getBackOrderSkuVos());
vo.setOrderCode(item.getOrderCode());
vo.setRealBackPrice(item.getRealBackPrice());
vo.setStatus(item.getStatus());
vo.setType(item.getType());
listVos.add(vo);
} }
PageInfo<GoblinStoreBackOrderListVo> pageInfo = new PageInfo(listVos); PageInfo<GoblinStoreBackOrderListVo> pageInfo = new PageInfo(listVos);
pageInfo.setTotal(total); pageInfo.setTotal(total);
...@@ -177,20 +168,8 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -177,20 +168,8 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderLog.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue()); backOrderLog.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue());
backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue()); backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue());
backOrderLog.setMessage("商户退款-同意退款:backOrderId=[" + backOrderId + "]"); backOrderLog.setMessage("商户退款-同意退款:backOrderId=[" + backOrderId + "]");
//调用退款
String returnString = refundHelper.initRefund(orderVo, backOrderVo.getRealBackPrice(), backOrderVo.getBackCode());
Boolean success = refundHelper.isRefundSuccess(returnString);
String message = refundHelper.getRefundMessage(returnString);
if (!success) {
backOrderVo.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue());
backOrderVo.setErrorReason("失败原因:" + message);
log.error("REFUND DATA = " + returnString);
}
//redis
redisUtils.setBackOrderVo(backOrderId, backOrderVo); redisUtils.setBackOrderVo(backOrderId, backOrderVo);
//mongo
mongoUtils.updateGoblinBackOrderVo(backOrderId, backOrderVo); mongoUtils.updateGoblinBackOrderVo(backOrderId, backOrderVo);
//mysql
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(), MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.store.applyRefund", SqlMapping.get("goblin_order.store.applyRefund",
...@@ -198,6 +177,15 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -198,6 +177,15 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderId, now, now backOrderId, now, now
) )
); );
String returnString = refundHelper.initRefund(orderVo, backOrderVo.getRealBackPrice(), backOrderVo.getBackCode());
Boolean success = refundHelper.isRefundSuccess(returnString);
String message = refundHelper.getRefundMessage(returnString);
if (!success) {
backOrderVo.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue());
backOrderVo.setErrorReason("失败原因:" + message);
log.error("REFUND DATA = " + returnString);
updateStoreRefundOrderAfterPayment(backOrderVo, now);
}
//添加日志 //添加日志
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(), MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
...@@ -282,6 +270,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -282,6 +270,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
return ResponseDto.success(); return ResponseDto.success();
} }
/**
* 管理端新退款入口。
* 发货前(子单全为待发货):整单 + 运费,自动退款;
* 发货后(存在待收货/已完成子单):可选商品,不含运费,生成待审核退款单。
*/
@Override @Override
public ResponseDto<Boolean> refundOrder(GoblinStoreOrderRefundParam param) { public ResponseDto<Boolean> refundOrder(GoblinStoreOrderRefundParam param) {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
...@@ -302,13 +295,18 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -302,13 +295,18 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
return ResponseDto.failure("已有退款处理中"); return ResponseDto.failure("已有退款处理中");
} }
// 管理端发起退款:根据子单状态决定「发货前整单自动退」还是「发货后部分退待审核」
List<GoblinOrderSkuVo> orderSkuVos = getOrderSkuVos(orderVo); List<GoblinOrderSkuVo> orderSkuVos = getOrderSkuVos(orderVo);
// 发货前:所有子单均为 status=2(待发货)→ 强制整单退、含运费、自动调支付
boolean beforeShip = orderSkuVos.stream().allMatch(GoblinRefundHelper::isUnshippedSku); boolean beforeShip = orderSkuVos.stream().allMatch(GoblinRefundHelper::isUnshippedSku);
// 是否允许发起:全部待发货,或至少有一个子单已发货/已完成(status=3/4)
// 注意:若存在已退完子单(status=6)与待发货子单混合(如旧接口部分退后),此处会判为不可退,需单独兼容
boolean canRefund = beforeShip || orderSkuVos.stream().anyMatch(GoblinRefundHelper::isShippedSku); boolean canRefund = beforeShip || orderSkuVos.stream().anyMatch(GoblinRefundHelper::isShippedSku);
if (!canRefund) { if (!canRefund) {
return ResponseDto.failure("不可退款"); return ResponseDto.failure("不可退款");
} }
// 发货前忽略 orderSkuIds,整单退;发货后按入参选择子单(不传则默认整单剩余可退商品)
List<GoblinOrderSkuVo> refundSkuVos = beforeShip ? orderSkuVos : getSelectedOrderSkuVos(orderVo, orderSkuVos, param.getOrderSkuIds()); List<GoblinOrderSkuVo> refundSkuVos = beforeShip ? orderSkuVos : getSelectedOrderSkuVos(orderVo, orderSkuVos, param.getOrderSkuIds());
if (refundSkuVos.isEmpty()) { if (refundSkuVos.isEmpty()) {
return ResponseDto.failure("请选择退款商品"); return ResponseDto.failure("请选择退款商品");
...@@ -458,12 +456,14 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -458,12 +456,14 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrderVo.setAuditAt(beforeShip ? nowStr : null); backOrderVo.setAuditAt(beforeShip ? nowStr : null);
backOrderVo.setBackPriceExpress(backPriceExpress); backOrderVo.setBackPriceExpress(backPriceExpress);
backOrderVo.setBackOrderSkuVos(backOrderSkuVos); backOrderVo.setBackOrderSkuVos(backOrderSkuVos);
backOrderVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue());
GoblinBackOrderLog backOrderLog = initBackLog(backOrder.getBackOrderId(), uid, now); GoblinBackOrderLog backOrderLog = initBackLog(backOrder.getBackOrderId(), uid, now);
backOrderLog.setStatus(beforeShip ? GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue() : GoblinStatusConst.Status.ORDER_LOG_STATUS_20.getValue()); backOrderLog.setStatus(beforeShip ? GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue() : GoblinStatusConst.Status.ORDER_LOG_STATUS_20.getValue());
backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue()); backOrderLog.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue());
backOrderLog.setMessage("商户发起退款:orderSkuIds=[" + backOrder.getSkuIdNums() + "],refundPrice=[" + realBackPrice + "],[refundCode=" + refundCode + "]"); backOrderLog.setMessage("商户发起退款:orderSkuIds=[" + backOrder.getSkuIdNums() + "],refundPrice=[" + realBackPrice + "],[refundCode=" + refundCode + "]");
saveStoreRefundOrder(orderVo, refundSkuVos, backOrder, backOrderVo, backOrderLog, now);
if (beforeShip) { if (beforeShip) {
String returnString = refundHelper.initRefund(orderVo, realBackPrice, refundCode); String returnString = refundHelper.initRefund(orderVo, realBackPrice, refundCode);
if (!refundHelper.isRefundSuccess(returnString)) { if (!refundHelper.isRefundSuccess(returnString)) {
...@@ -472,14 +472,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -472,14 +472,11 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
backOrder.setStatus(backOrderVo.getStatus()); backOrder.setStatus(backOrderVo.getStatus());
backOrder.setErrorReason(backOrderVo.getErrorReason()); backOrder.setErrorReason(backOrderVo.getErrorReason());
log.error("REFUND DATA = " + returnString); log.error("REFUND DATA = " + returnString);
updateStoreRefundOrderAfterPayment(backOrderVo, now);
} else if (DragonConstant.REFUND_TYPE_MICROPAY_ALIPAY.equals(orderVo.getPaymentType())) {
refundHelper.alipayCallBack(orderVo, refundCode);
} }
} }
saveStoreRefundOrder(orderVo, refundSkuVos, backOrder, backOrderVo, backOrderLog, now);
if (beforeShip && GoblinStatusConst.Status.ORDER_BACK_STATUS_0.getValue() == backOrderVo.getStatus()
&& DragonConstant.REFUND_TYPE_MICROPAY_ALIPAY.equals(orderVo.getPaymentType())) {
refundHelper.alipayCallBack(orderVo, refundCode);
}
return backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue() return backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_BACK_STATUS_10.getValue()
? ResponseDto.failure("退款失败:" + backOrderVo.getErrorReason()) ? ResponseDto.failure("退款失败:" + backOrderVo.getErrorReason())
: ResponseDto.success(); : ResponseDto.success();
...@@ -527,6 +524,61 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer ...@@ -527,6 +524,61 @@ public class GoblinStoreBackOrderServiceImpl implements IGoblinStoreBackOrderSer
SqlMapping.gets(sqls, backOrderSql, orderSkuStatusSql, refundLogSql)); SqlMapping.gets(sqls, backOrderSql, orderSkuStatusSql, refundLogSql));
} }
private void updateStoreRefundOrderAfterPayment(GoblinBackOrderVo backOrderVo, LocalDateTime now) {
redisUtils.setBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
mongoUtils.updateGoblinBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
queueUtils.sendMsgByRedis(
MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
SqlMapping.get("goblin_order.store.applyRefund",
backOrderVo.getStatus(), backOrderVo.getReason(), backOrderVo.getAuditAt(), now,
backOrderVo.getBackOrderId(), now, now
)
);
}
private GoblinStoreBackOrderListVo buildStoreBackOrderListVo(GoblinBackOrderVo item) {
GoblinStoreBackOrderListVo vo = GoblinStoreBackOrderListVo.getNew();
vo.setBackOrderId(item.getBackOrderId());
vo.setBackCode(item.getBackCode());
vo.setOrderCode(item.getOrderCode());
vo.setType(item.getType());
vo.setStatus(item.getStatus());
vo.setRealBackPrice(item.getRealBackPrice());
vo.setCreatedAt(item.getCreatedAt());
vo.setAuditAt(item.getAuditAt());
vo.setRefundAt(item.getRefundAt());
vo.setBackOrderSkuVos(item.getBackOrderSkuVos());
if (StringUtil.isNotBlank(item.getRefundAt())) {
vo.setProcessedAt(item.getRefundAt());
} else if (StringUtil.isNotBlank(item.getAuditAt())) {
vo.setProcessedAt(item.getAuditAt());
}
Integer operationType = resolveBackOrderOperationType(item);
vo.setOperationType(operationType);
if (StringUtil.isNotBlank(item.getOrderId())) {
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(item.getOrderId());
if (orderVo != null) {
vo.setPriceActual(orderVo.getPriceActual());
int orderSkuCount = orderVo.getOrderSkuVoIds() == null ? 0 : orderVo.getOrderSkuVoIds().size();
int refundSkuCount = item.getBackOrderSkuVos() == null ? 0 : item.getBackOrderSkuVos().size();
boolean fullRefund = orderSkuCount > 0 && refundSkuCount >= orderSkuCount;
vo.setRefundScope(fullRefund ? 1 : 2);
}
}
return vo;
}
private Integer resolveBackOrderOperationType(GoblinBackOrderVo item) {
if (item.getOperationType() != null) {
return item.getOperationType();
}
if ("店铺退款".equals(item.getDescribes())
|| GoblinStatusConst.Type.BACK_REASON_TYPE_8.getDesc().equals(item.getReason())) {
return GoblinStatusConst.Type.OPERATION_TYPE_2.getValue();
}
return GoblinStatusConst.Type.OPERATION_TYPE_1.getValue();
}
private GoblinBackOrderLog initBackLog(String orderId, String uid, LocalDateTime now) { private GoblinBackOrderLog initBackLog(String orderId, String uid, LocalDateTime now) {
GoblinBackOrderLog log = GoblinBackOrderLog.getNew(); GoblinBackOrderLog log = GoblinBackOrderLog.getNew();
log.setBackOrderId(orderId); log.setBackOrderId(orderId);
......
...@@ -1501,7 +1501,9 @@ public class GoblinMongoUtils { ...@@ -1501,7 +1501,9 @@ public class GoblinMongoUtils {
Query query = Query.query(criteria); Query query = Query.query(criteria);
query.skip(skipCount).limit(size).with(Sort.by(Sort.Order.desc("createdAt"))); query.skip(skipCount).limit(size).with(Sort.by(Sort.Order.desc("createdAt")));
; ;
query.fields().include("backCode").include("orderCode").include("backOrderId").include("type").include("status").include("realBackPrice").include("createdAt") query.fields().include("backCode").include("orderCode").include("orderId").include("backOrderId").include("type").include("status")
.include("realBackPrice").include("createdAt").include("auditAt").include("refundAt").include("describes").include("reason")
.include("operationType")
.include("backOrderSkuVos.spuName").include("backOrderSkuVos.skuName").include("backOrderSkuVos.spuPic").include("backOrderSkuVos.skuPic") .include("backOrderSkuVos.spuName").include("backOrderSkuVos.skuName").include("backOrderSkuVos.spuPic").include("backOrderSkuVos.skuPic")
.include("backOrderSkuVos.skuSpecs").include("backOrderSkuVos.skuId").include("backOrderSkuVos.spuId").include("backOrderSkuVos.orderSkuId") .include("backOrderSkuVos.skuSpecs").include("backOrderSkuVos.skuId").include("backOrderSkuVos.spuId").include("backOrderSkuVos.orderSkuId")
.include("backOrderSkuVos.refundPrice"); .include("backOrderSkuVos.refundPrice");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment