Commit 6bda8ab9 by 查志伟

退款接口代码优化

parent 8eba73db
package cn.freemud.adapter;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.sdk.api.assortment.order.enums.AfterSalesRefunStateEnum;
import com.freemud.sdk.api.assortment.order.enums.OperationClientEnum;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import org.apache.commons.lang.StringUtils;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
public class CancelOrderRequestAdapter {
public static CancelOrderRequest convert(OrderInfoReqs order, String refundId, AfterSalesType afterSalesType, String reason, Boolean refundDeliveryFee, Byte refundMode) {
CancelOrderRequest req = new CancelOrderRequest();
req.setOrderId(order.getOrderCode());
req.setPartnerId(order.getPartnerId());
req.setAfterSalesType(afterSalesType);
req.setOrderClient(order.getOrderClient());
if (StringUtils.isNotBlank(reason) && reason.length() > 50) {
reason = reason.substring(0, 50);
}
req.setReason(reason);
req.setTrackingNo(LogThreadLocal.getTrackingNo());
req.setRefundSerialNo(refundId);
//操作来源客户端 1:POS插件 2:小助手 3:开放平台 4:自动任务 5:用户端 6:系统 7:万象 8:太一
req.setOperationClient(OperationClientEnum.STATE_5.getIndex());
req.setOperator(order.getUserName());
if (AfterSalesType.SYSTEM_CANCEL.getIndex().equals(afterSalesType.getIndex())) {
req.setOperator("admin");
req.setOperationClient(OperationClientEnum.STATE_6.getIndex());
}
//若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
req.setCreateEvent(4);
// 这里给默认值,外面调用者 自己的根据业务判断退款 状态
req.setRefundState(AfterSalesRefunStateEnum.STATE_1.getIndex());
req.setReqRemark(reason);
req.setRefundDeliveryAmount(refundDeliveryFee);
// 商城订单 增加拓展信息
CancelOrderRequest.AfterSalesOrderExtInfoReq ext = new CancelOrderRequest.AfterSalesOrderExtInfoReq();
ext.setRefundMode(refundMode);
req.setExtInfoReq(ext);
return req;
}
}
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
package cn.freemud.adapter; package cn.freemud.adapter;
import cn.freemud.entities.dto.PushMessageTokenDto; import cn.freemud.entities.dto.PushMessageTokenDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
...@@ -37,7 +36,7 @@ public class MessageNoticeAdapter { ...@@ -37,7 +36,7 @@ public class MessageNoticeAdapter {
return pushMessageTokenDto; return pushMessageTokenDto;
} }
public PushMessageNoticeDto convent2PushMessageNoticeDto(Integer targetType, String partnerId, public static PushMessageNoticeDto convent2PushMessageNoticeDto(Integer targetType, String partnerId,
String storeId, String userId, String oid, String takeCode, String queueIndex) { String storeId, String userId, String oid, String takeCode, String queueIndex) {
PushMessageNoticeDto pushMessageNoticeDto = new PushMessageNoticeDto(); PushMessageNoticeDto pushMessageNoticeDto = new PushMessageNoticeDto();
pushMessageNoticeDto.setPartnerId(partnerId); pushMessageNoticeDto.setPartnerId(partnerId);
......
package cn.freemud.adapter;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.OrderPrintDto;
import cn.freemud.enums.CostTypeEnum;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.sdk.api.assortment.order.enums.StoreDeliveryMethod;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
public class OrderPrintDtoAdapter {
public static OrderPrintDto convert(OrderInfoReqs order, String reason) {
OrderPrintDto orderPrintDto = new OrderPrintDto();
orderPrintDto.setPartnerId(order.getPartnerId());
orderPrintDto.setStoreId(order.getStoreId());
//确定日订单序号
orderPrintDto.setType(order.getOrderType());
orderPrintDto.setOid(order.getOrderCode());
orderPrintDto.setUserName(order.getUserName());
orderPrintDto.setDaySeq(order.getDaySeq() == null ? "" : order.getDaySeq().toString());
orderPrintDto.setPhone(order.getUserMobile());
if (CollectionUtils.isNotEmpty(order.getDeliveryContactInfoList())) {
order.getDeliveryContactInfoList().stream().filter(c -> Objects.equals(c.getRelateObjectType(), 1))
.findFirst().ifPresent(c -> orderPrintDto.setAddress(c.getAddressDetail()));
order.getDeliveryContactInfoList().stream().filter(c -> Objects.equals(c.getRelateObjectType(), 3))
.findFirst().ifPresent(c -> {
if (Objects.equals(c.getAddressDetail(), StoreDeliveryMethod.THIRD.getCode())) {
orderPrintDto.setDeliveryTypeDesc("第三方配送");
if (StringUtils.isNotBlank(order.getExpressChannelName())) {
orderPrintDto.setDeliveryTypeDesc(order.getExpressChannelName());
}
} else {
orderPrintDto.setDeliveryTypeDesc("自配送");
}
});
}
orderPrintDto.setGmtExpect(order.getExpectTime() == null
? "立即送出"
: (DateUtil.convert2String(new Date(Long.parseLong(order.getExpectTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)));
orderPrintDto.setRemark(order.getNote());
Integer count = order.getOrderItemList().stream().map(OrderItemResp::getProductQuantity).reduce(Integer::sum).get();
orderPrintDto.setProductTotalAmount(count);
Long packageFee = 0L;
long sendFee = 0L;
if (CollectionUtils.isNotEmpty(order.getOrderCostDetailList())) {
for (OrderCostResp cost : order.getOrderCostDetailList()) {
if (CostTypeEnum.PACK_AMOUNT.getCode().equals(cost.getCostType())) {
packageFee = cost.getActualCostAmount().longValue();
} else if (CostTypeEnum.DELIVERY_AMOUNT.getCode().equals(cost.getCostType())) {
sendFee = cost.getActualCostAmount().longValue();
}
}
}
orderPrintDto.setPackageFee(packageFee);
orderPrintDto.setProductAmount(order.getSettlementAmount().longValue() - sendFee);
orderPrintDto.setSendFee(sendFee);
orderPrintDto.setDiscountFee(order.getOriginalAmount().longValue() - order.getSettlementAmount().longValue());
orderPrintDto.setUserFee(order.getActualPayAmount().longValue());
orderPrintDto.setGmtCreate(DateUtil.convert2String(new Date(Long.parseLong(order.getCreateTime())), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
orderPrintDto.setShopName(order.getStoreName());
orderPrintDto.setOtherCode(order.getPickUpGoodsNo());
List<OrderPrintDto.ProductsBean> productsBeans = getProducts(order.getOrderItemList());
orderPrintDto.setProducts(productsBeans);
orderPrintDto.setBarCounter(order.getBarCounter());
orderPrintDto.setRemark(reason);
return orderPrintDto;
}
public static List<OrderPrintDto.ProductsBean> getProducts(List<OrderItemResp> itemList) {
if (CollectionUtils.isEmpty(itemList)) {
return Collections.emptyList();
}
List<OrderPrintDto.ProductsBean> products = Lists.newArrayList();
// 将订单里同一商品下的所有子商品放到一个集合中 key:父商品id, value为子商品集合
Map<String, List<OrderItemResp>> sItemMap = itemList
.stream()
.filter(item -> !item.getParentProductId().equals("0"))
.collect(Collectors.groupingBy(OrderItemResp::getParentProductId));
for (OrderItemResp item : itemList) {
//非主商品跳过
if (!item.getParentProductId().equals("0")) continue;
OrderPrintDto.ProductsBean productVO = getProductBean(item);
//匹配子商品
List<OrderItemResp> sList = sItemMap.get(item.getProductId() + "_" + item.getProductSeq());
List<OrderPrintDto.ProductsBean> comboProductVOs = new ArrayList<>();
List<OrderPrintDto.ProductsBean> materialProductVOs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sList)) {
sList.forEach(sItem -> {
OrderPrintDto.ProductsBean son = getProductBean(sItem);
if (ProductTypeEnum.MATERIAL_PRODUCT.getCode().equals(sItem.getProductType())) {
materialProductVOs.add(son);
} else {
comboProductVOs.add(son);
}
});
}
productVO.setSonProducts(comboProductVOs);
productVO.setMaterialProducts(materialProductVOs);
products.add(productVO);
}
return products;
}
private static OrderPrintDto.ProductsBean getProductBean(OrderItemResp item) {
OrderPrintDto.ProductsBean productBean1 = new OrderPrintDto.ProductsBean();
productBean1.setParentProductId(item.getParentProductId());
productBean1.setSequence(item.getProductSeq());
productBean1.setProductId(item.getProductSpec());
productBean1.setProductName(item.getProductSpecName());
productBean1.setNumber(item.getProductQuantity());
String extraName = "";
if (StringUtils.isNotBlank(item.getExtInfo())) {
OrderItemResp.ExtInfo itemExt = JSON.parseObject(item.getExtInfo(), OrderItemResp.ExtInfo.class);
if (CollectionUtils.isNotEmpty(itemExt.getSpecialAttrs())) {
extraName = StringUtils.join(itemExt.getSpecialAttrs().stream()
.map(OrderItemResp.ExtAttr::getExtraName)
.collect(Collectors.toList()), "/");
}
}
productBean1.setPrice(item.getProductPrice().longValue());
productBean1.setProductOtherInfo(extraName);
productBean1.setParentType(item.getProductType());
productBean1.setSonProducts(new ArrayList<>());
productBean1.setUnit(item.getProductUnit());
productBean1.setProductSpuQuantity(item.getProductSpuQuantity());
return productBean1;
}
}
...@@ -50,6 +50,7 @@ public class ExposureOrderController { ...@@ -50,6 +50,7 @@ public class ExposureOrderController {
*/ */
@ApiAnnotation(logMessage = "创建订单,死信队列") @ApiAnnotation(logMessage = "创建订单,死信队列")
@PostMapping("/deadLetterQueue") @PostMapping("/deadLetterQueue")
@Deprecated
public BaseResponse deadLetterQueue(@Validated @LogParams @RequestBody PutDeadLetterVo putDeadLetterVo) { public BaseResponse deadLetterQueue(@Validated @LogParams @RequestBody PutDeadLetterVo putDeadLetterVo) {
payService.putDelMq(putDeadLetterVo.getPartnerId(), putDeadLetterVo.getStoreId(), putDeadLetterVo.getFmId(), putDeadLetterVo.getOrderId(), putDeadLetterVo.getPayChanelType()); payService.putDelMq(putDeadLetterVo.getPartnerId(), putDeadLetterVo.getStoreId(), putDeadLetterVo.getFmId(), putDeadLetterVo.getOrderId(), putDeadLetterVo.getPayChanelType());
return ResponseUtil.success(); return ResponseUtil.success();
......
...@@ -26,6 +26,7 @@ import cn.freemud.handler.OrderReportJobHandler; ...@@ -26,6 +26,7 @@ import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.Orderservice; import cn.freemud.service.Orderservice;
import cn.freemud.service.PointsMallOrderService; import cn.freemud.service.PointsMallOrderService;
import cn.freemud.service.RefundService;
import cn.freemud.service.impl.MallOrderServiceImpl; import cn.freemud.service.impl.MallOrderServiceImpl;
import cn.freemud.service.impl.OrderAdapterServiceImpl; import cn.freemud.service.impl.OrderAdapterServiceImpl;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
...@@ -34,6 +35,7 @@ import cn.freemud.xxljob.OrderCountJobHandler; ...@@ -34,6 +35,7 @@ import cn.freemud.xxljob.OrderCountJobHandler;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
...@@ -64,6 +66,8 @@ public class OrderController { ...@@ -64,6 +66,8 @@ public class OrderController {
private CouponOrderAutoRefundHandler couponOrderAutoRefundHandler; private CouponOrderAutoRefundHandler couponOrderAutoRefundHandler;
@Autowired @Autowired
private PointsMallOrderService pointsMallOrderService; private PointsMallOrderService pointsMallOrderService;
@Autowired
private RefundService refundService;
/** /**
* 废弃,不在使用 * 废弃,不在使用
...@@ -240,8 +244,12 @@ public class OrderController { ...@@ -240,8 +244,12 @@ public class OrderController {
*/ */
@ApiAnnotation(logMessage = "refund") @ApiAnnotation(logMessage = "refund")
@PostMapping("/refund") @PostMapping("/refund")
public BaseResponse refund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) { public BaseResponse<Void> refund(@Validated @LogParams @RequestBody OrderRefundVo reqVo) {
return orderservice.orderRefund(orderRefundVo); // 微商城因为没有退款原因选项 所以将用户退款说明用户作为退款原因
String reason = StringUtils.isBlank(reqVo.getReason())
? reqVo.getRemarks() : reqVo.getReason();
refundService.refundOrder(reqVo.getPartnerId(), reqVo.getOid(), reason, reqVo.getRefundMode());
return ResponseUtil.success();
} }
......
...@@ -2,8 +2,8 @@ package cn.freemud.controller; ...@@ -2,8 +2,8 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.OrderDevelopRefundVo; import cn.freemud.entities.vo.OrderDevelopRefundVo;
import cn.freemud.entities.vo.OrderRefundVo; import cn.freemud.service.RefundService;
import cn.freemud.service.Orderservice; import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/** /**
* @author : xh.Z * @author : xh.Z
* @email : fisherman0510@163.com * @email : fisherman0510@163.com
...@@ -24,7 +26,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -24,7 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
public class OrderDeveloperController { public class OrderDeveloperController {
@Autowired @Autowired
private Orderservice orderservice; private RefundService refundService;
/** /**
* 订单内部人员操作 给订单退款, 使用该接口需要报备 * 订单内部人员操作 给订单退款, 使用该接口需要报备
...@@ -33,8 +35,8 @@ public class OrderDeveloperController { ...@@ -33,8 +35,8 @@ public class OrderDeveloperController {
*/ */
@ApiAnnotation(logMessage = "/order/develop/refund") @ApiAnnotation(logMessage = "/order/develop/refund")
@PostMapping("/refund") @PostMapping("/refund")
public BaseResponse developRefund(@Validated @LogParams @RequestBody OrderDevelopRefundVo orderRefundVo) { public BaseResponse<Map<String, String>> developRefund(@Validated @LogParams @RequestBody OrderDevelopRefundVo orderRefundVo) {
return orderservice.developRefund(orderRefundVo); return ResponseUtil.success(refundService.batchDevelopRefund(orderRefundVo));
} }
} }
...@@ -18,6 +18,7 @@ public enum PayStatus { ...@@ -18,6 +18,7 @@ public enum PayStatus {
HAVE_PAID(2, "已支付","Paid"), HAVE_PAID(2, "已支付","Paid"),
HAVE_REFUND(3, "已退款","Refunded"), HAVE_REFUND(3, "已退款","Refunded"),
HAVE_PART_REFUND(4, "已经部分退款","Partial refund"), HAVE_PART_REFUND(4, "已经部分退款","Partial refund"),
@Deprecated
COMPLETE(5, "完成","Complete"); COMPLETE(5, "完成","Complete");
......
...@@ -75,47 +75,11 @@ public interface Orderservice extends OrderFactoryService{ ...@@ -75,47 +75,11 @@ public interface Orderservice extends OrderFactoryService{
BaseResponse cancelPayOrder(DeleteOrderVo deleteOrderVo); BaseResponse cancelPayOrder(DeleteOrderVo deleteOrderVo);
/** /**
* 支付取消删除订单
*/
// BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo);
/**
* 订单申请退款
*/
BaseResponse orderRefund(OrderRefundVo orderRefundVo);
/**
* 获取订单排队号 * 获取订单排队号
*/ */
BaseResponse queryOrderQueueIndex(QueryOrderQueueIndexVo queryOrderQueueIndexVo); BaseResponse queryOrderQueueIndex(QueryOrderQueueIndexVo queryOrderQueueIndexVo);
/** /**
* 用户评价
*/
//BaseResponse userOrderEvaluation(AddUserOrderEvaluationRequestVo requestVo);
/**
* 用户评价(新接口)
*/
//BaseResponse userOrderEvaluationNew(AddUserOrderEvaluationNewRequestVo requestVo);
/**
* 根据订单查询对应的订单详情
*/
//BaseResponse getEvaluationByOrderId(GetEvaluationDetailByOrderIdRequestVo requestVo);
/**
* 判断订单是否已经评价
*/
//BaseResponse getEvaluationStatus(GetEvaluationDetailByOrderIdRequestVo requestVo);
/**
* 判断订单是否已经评价(新接口)
*/
//BaseResponse getEvaluationStatusNew(GetEvaluationStatusNewRequestVo requestVo);
/**
* 获取退款理由 * 获取退款理由
*/ */
@Deprecated @Deprecated
...@@ -220,10 +184,5 @@ public interface Orderservice extends OrderFactoryService{ ...@@ -220,10 +184,5 @@ public interface Orderservice extends OrderFactoryService{
*/ */
BaseResponse couponOrderRefundRetry(OrderRefundRetryVo orderRefundRetryVo); BaseResponse couponOrderRefundRetry(OrderRefundRetryVo orderRefundRetryVo);
/**
* 开发人员 操作退款订单 该接口 生产使用请通知SE
* @param orderRefundVo
* @return
*/
BaseResponse developRefund(OrderDevelopRefundVo orderRefundVo);
} }
...@@ -201,7 +201,7 @@ public class OrderCommonService { ...@@ -201,7 +201,7 @@ public class OrderCommonService {
* 发送pos端消息 * 发送pos端消息
*/ */
public void sendPosMessage(String partnerId, String storeId,String orderId) { public void sendPosMessage(String partnerId, String storeId,String orderId) {
PushMessageNoticeDto pushMessageNoticeDto = messageNoticeAdapter.convent2PushMessageNoticeDto(1, partnerId, storeId, PushMessageNoticeDto pushMessageNoticeDto = MessageNoticeAdapter.convent2PushMessageNoticeDto(1, partnerId, storeId,
null, orderId, null, null); null, orderId, null, null);
messageNoticeClient.createMessage(pushMessageNoticeDto,LogThreadLocal.getTrackingNo()); messageNoticeClient.createMessage(pushMessageNoticeDto,LogThreadLocal.getTrackingNo());
} }
......
package cn.freemud.service.thirdparty;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import cn.freemud.entities.dto.QueryInvoiceRepDto;
import cn.freemud.entities.vo.QueryInvoiceReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "ORDER-SERVICE")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface OrderClient {
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 开票历史列表接口
*/
@PostMapping(value = "/order/v2/invoice/list/forUser")
@LogIgnoreFeign(logMessage="queryInvoiceList")
QueryInvoiceRepDto queryInvoiceList(@RequestBody QueryInvoiceReq queryInvoiceReq);
}
...@@ -2,7 +2,6 @@ package cn.freemud.management.adapter; ...@@ -2,7 +2,6 @@ package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq; import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
...@@ -32,16 +31,17 @@ public class PaymentSdkAdapter { ...@@ -32,16 +31,17 @@ public class PaymentSdkAdapter {
@Value("${saas.refund.notify.callback}") @Value("${saas.refund.notify.callback}")
private String refundNotifyCallback; private String refundNotifyCallback;
public PayRefundRequestDto getOrderRefundRequest(OrderBeanV1 orderBean, BigDecimal refundAmount) { public PayRefundRequestDto getOrderRefundRequest(String partnerId, String storeCode, String orderCode,
BigDecimal refundAmount, String payNo, String extInfoStr) {
PayRefundRequestDto refundRequestDTO = new PayRefundRequestDto(); PayRefundRequestDto refundRequestDTO = new PayRefundRequestDto();
refundRequestDTO.setPartnerId(orderBean.getCompanyId()); refundRequestDTO.setPartnerId(partnerId);
refundRequestDTO.setStoreId(orderBean.getShopId()); refundRequestDTO.setStoreId(storeCode);
refundRequestDTO.setOrgTransId(orderBean.getOid()); refundRequestDTO.setOrgTransId(orderCode);
refundRequestDTO.setRefundAmount(refundAmount.longValue()); refundRequestDTO.setRefundAmount(refundAmount.longValue());
refundRequestDTO.setNotifyUrl(refundNotifyCallback); refundRequestDTO.setNotifyUrl(refundNotifyCallback);
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class); OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(extInfoStr, OrderExtInfoDto.class);
refundRequestDTO.setAppId(orderExtInfoDto.getAppid()); refundRequestDTO.setAppId(orderExtInfoDto.getAppid());
refundRequestDTO.setOrgPayFmId(orderBean.getPayVoucher()); refundRequestDTO.setOrgPayFmId(payNo);
refundRequestDTO.setOpenid(orderExtInfoDto.getOpenid()); refundRequestDTO.setOpenid(orderExtInfoDto.getOpenid());
refundRequestDTO.setRefundId(getRefundSerialNo().toString()); refundRequestDTO.setRefundId(getRefundSerialNo().toString());
return refundRequestDTO; return refundRequestDTO;
...@@ -62,30 +62,28 @@ public class PaymentSdkAdapter { ...@@ -62,30 +62,28 @@ public class PaymentSdkAdapter {
} }
@SneakyThrows @SneakyThrows
public MultiOrderRefundRequest getMultiOrderPayRefundRequest(OrderBeanV1 orderBean, BigDecimal refundAmount) { public MultiOrderRefundRequest getMultiOrderPayRefundRequest(String partnerId, String storeCode, String orderCode, BigDecimal refundAmount) {
MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest(); MultiOrderRefundRequest multiQueryRequest = new MultiOrderRefundRequest();
multiQueryRequest.setStationId("1"); multiQueryRequest.setStationId("1");
multiQueryRequest.setPartnerId(orderBean.getCompanyId()); multiQueryRequest.setPartnerId(partnerId);
multiQueryRequest.setStoreId(orderBean.getShopId()); multiQueryRequest.setStoreId(storeCode);
multiQueryRequest.setFmId(""); multiQueryRequest.setFmId("");
multiQueryRequest.setRefundAmount(Long.valueOf(String.valueOf(refundAmount))); multiQueryRequest.setRefundAmount(Long.valueOf(String.valueOf(refundAmount)));
multiQueryRequest.setRefundTradeNo(String.valueOf(getRefundSerialNo())); multiQueryRequest.setRefundTradeNo(String.valueOf(getRefundSerialNo()));
multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setNotifyUrl(refundNotifyCallback); multiQueryRequest.setNotifyUrl(refundNotifyCallback);
multiQueryRequest.setVer("V1"); multiQueryRequest.setVer("V1");
multiQueryRequest.setVer3(false); multiQueryRequest.setVer3(false);
multiQueryRequest.setOutOrderNo(orderBean.getOid()); multiQueryRequest.setOutOrderNo(orderCode);
return multiQueryRequest; return multiQueryRequest;
} }
@SneakyThrows @SneakyThrows
public AgentPayRefundReq getAgentPayefundReq(OrderBeanV1 orderBean, BigDecimal refundAmount) { public AgentPayRefundReq getAgentPayRefundReq(String partnerId, String storeCode, String orderCode, BigDecimal refundAmount, String fmTradeNo) {
OrderExtInfoDto ext = JSON.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
AgentPayRefundReq req = new AgentPayRefundReq(); AgentPayRefundReq req = new AgentPayRefundReq();
req.setPartnerId(orderBean.getCompanyId()); req.setPartnerId(partnerId);
req.setStoreId(orderBean.getShopId()); req.setStoreId(storeCode);
req.setFmTradeNo(ext.getPayTransId()); req.setFmTradeNo(fmTradeNo);
req.setOutOrderNo(orderBean.getOid()); req.setOutOrderNo(orderCode);
req.setRefundTradeNo(this.getRefundSerialNo().toString()); req.setRefundTradeNo(this.getRefundSerialNo().toString());
req.setRefundAmount(refundAmount.longValue()); req.setRefundAmount(refundAmount.longValue());
req.setNotifyUrl(refundNotifyCallback); req.setNotifyUrl(refundNotifyCallback);
......
...@@ -15,6 +15,7 @@ package com.freemud.application.sdk.api.ordercenter.response.orderInfo; ...@@ -15,6 +15,7 @@ package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class OrderItemResp { public class OrderItemResp {
...@@ -135,4 +136,117 @@ public class OrderItemResp { ...@@ -135,4 +136,117 @@ public class OrderItemResp {
*/ */
private Integer productSpuQuantity; private Integer productSpuQuantity;
@Data
public static class ExtInfo {
/**
* 是否是赠品
*/
private Boolean isSendGoods;
/**
* 购物车行id
*/
private String cartGoodsUid;
/**
* 积分商品活动使用总积分
*/
private Long score;
/**
* 是否是固定搭配
*/
private Boolean isFixedProduct;
/**
* spu商品货号
*/
private String spuProductCode;
/**
* 属性三方id, 多个用,拼接(推送pos需要)
*/
private String thirdProductPropertyId;
/**
* 三方规格值id, 多个用,拼接(推送pos需要)
*/
private String thirdProductSpecId;
/**
* 凌顶pos 商品编码id
*/
private String linkedId;
/**
* 买一赠一时, 赠品商品的该属性表示原商品购物车id
* 其他赠送活动, 这里设置为活动号
*/
private String originalId;
/**
* 商品组信息
*/
private List<ExtGroup> productGroupList;
/**
* 商品属性信息
*/
private List<ExtAttr> specialAttrs;
/**
* 虚拟商品绑定的券信息
*/
private List<CouponInfo> productBindingCoupons;
/**
* 参与会员价活动时,用户所生效的会员卡或者会员等级名称
*/
private String currentMembershipLevel;
/**
* 是否限制库存
* 用于创建订单时,是否扣减库存
*/
private boolean stockLimit;
/**
* 套餐库存模式
*/
private Integer stockMode;
}
@Data
public static class ExtAttr {
/**
* 属性id
*/
private String extraId;
/**
* 属性名称
*/
private String extraName;
}
@Data
public static class ExtGroup {
/**
* 商品组id
*/
private String groupId;
/**
* 商品组名称
*/
private String groupName;
/**
* 第三方商品组编码
*/
private String thirdGroupId;
}
@Data
public static class CouponInfo {
/**
* 券模板(券活动号)
*/
private String activityCode;
/**
* 券模板名称(活动名称)
*/
private String activityName;
/**
* 券商品数量
*/
private Integer num;
}
} }
...@@ -3,6 +3,7 @@ package com.freemud.application.sdk.api.ordercenter.service; ...@@ -3,6 +3,7 @@ package com.freemud.application.sdk.api.ordercenter.service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.freemud.application.sdk.api.base.BaseRequest; import com.freemud.application.sdk.api.base.BaseRequest;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties; import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant; import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant;
import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant; import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant;
...@@ -115,6 +116,17 @@ public class OrderSdkService { ...@@ -115,6 +116,17 @@ public class OrderSdkService {
return responseDTO; return responseDTO;
} }
/**
* 查询单个订单详情
*
* @param partnerId 商户号
* @param orderCode 订单号
* @return
*/
public QueryByCodeResponse getOrderInfo(String partnerId, String orderCode) {
return getOrderInfo(null, orderCode, null, null, LogThreadLocal.getTrackingNo(), partnerId);
}
/** /**
* 查询单个订单详情 * 查询单个订单详情
......
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