|
@@ -34,6 +34,7 @@ import com.yami.shop.common.util.hb.HBR;
|
|
|
import com.yami.shop.dao.*;
|
|
|
import com.yami.shop.service.*;
|
|
|
import com.yami.shop.service.hb.IHBOrderService;
|
|
|
+import com.yami.shop.utils.CullenUtils;
|
|
|
import com.yami.shop.utils.HBSignUtil;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -268,7 +269,12 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
save(orderRefund);
|
|
|
// 更新订单状态
|
|
|
Order order = orderService.getById(orderRefund.getOrderId());
|
|
|
- order.setRefundStatus(RefundStatusEnum.APPLY.value());
|
|
|
+ Integer refundType = orderRefund.getRefundType();
|
|
|
+ if (Objects.equals(refundType, RefundType.ALL.value())) {
|
|
|
+ order.setRefundStatus(RefundStatusEnum.APPLY.value());
|
|
|
+ } else {
|
|
|
+ order.setRefundStatus(RefundStatusEnum.PARTIAL_SUCCESS.value());
|
|
|
+ }
|
|
|
orderService.updateById(order);
|
|
|
return orderRefund;
|
|
|
}
|
|
@@ -952,23 +958,25 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
build.setBody(JSON.toJSONString(requestBody));
|
|
|
|
|
|
build.setSign(hbSignUtil.signMd5(build));
|
|
|
- log.info("post 订单推送单号参数:{}", JSON.toJSONString(build));
|
|
|
+ log.info("post 退款单推送单号参数:{}", JSON.toJSONString(build));
|
|
|
String post = post(hbSignUtil.getHBHost() + "/api/refund/asyncSave", build);
|
|
|
- log.info("post 订单推送结果:{}", post);
|
|
|
+ log.info("post 退款单推送结果:{}", post);
|
|
|
return post;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String changeStatus(String afterSaleOrder) {
|
|
|
+ public String changeStatus(String afterSaleOrder, Integer refundStatus) {
|
|
|
HBBaseReq<Object> build = HBBaseReq.create();
|
|
|
build.setAppId(hbSignUtil.getAppId());
|
|
|
OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getRefundSn, afterSaleOrder));
|
|
|
+ orderRefund.setReturnMoneySts(refundStatus);
|
|
|
+ orderRefundMapper.updateById(orderRefund);
|
|
|
|
|
|
// 3. 构建外层请求体
|
|
|
JSONObject requestBody = new JSONObject();
|
|
|
requestBody.put("afterSaleOrder", afterSaleOrder);
|
|
|
// 退款单状态 10:待审核 20:处理中 30:驳回退款 40:撤销退款 60:待退货(一审同意) 65:待确认收货(二审待审核) 70:退款完成
|
|
|
- requestBody.put("refundStatus", refundHbStatus(orderRefund.getReturnMoneySts()));
|
|
|
+ requestBody.put("refundStatus", refundStatus);
|
|
|
requestBody.put("timestamp", orderRefund.getApplyTime().getTime());
|
|
|
|
|
|
// deliveryMan 退货的配送员名称
|
|
@@ -978,9 +986,15 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
// 4. 将整个JSON对象序列化为字符串并设置
|
|
|
build.setBody(JSON.toJSONString(requestBody));
|
|
|
build.setSign(hbSignUtil.signMd5(build));
|
|
|
- log.info("post 订单推送单号参数:{}", JSON.toJSONString(build));
|
|
|
+ log.info("post 退款单推送单号参数:{}", JSON.toJSONString(build));
|
|
|
String post = post(hbSignUtil.getHBHost() + "/api/refund/changeStatus", build);
|
|
|
- log.info("post 订单推送结果:{}", post);
|
|
|
+ log.info("post 退款单推送结果:{}", post);
|
|
|
+
|
|
|
+ //TODO 退款单完成处理积分
|
|
|
+ if (refundStatus == 70){
|
|
|
+// orderService.returnRefund(orderRefund.getOrderNumber());
|
|
|
+ }
|
|
|
+
|
|
|
return post;
|
|
|
}
|
|
|
|
|
@@ -1002,8 +1016,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
thirdPartyRefundRequest.setProblemDescription(orderRefund.getBuyerDesc());
|
|
|
thirdPartyRefundRequest.setPictures(orderRefund.getPhotoFiles());
|
|
|
|
|
|
- Integer returnMoneySts = orderRefund.getReturnMoneySts();
|
|
|
- thirdPartyRefundRequest.setRefundStatus(refundHbStatus(returnMoneySts));
|
|
|
+ thirdPartyRefundRequest.setRefundStatus(orderRefund.getReturnMoneySts());
|
|
|
Integer applyType = orderRefund.getApplyType();
|
|
|
if (Objects.equals(applyType, 2)) {
|
|
|
thirdPartyRefundRequest.setApplyDeal(40);
|
|
@@ -1019,15 +1032,15 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
|
|
|
|
|
|
List<ProductRequest> productRequests = new ArrayList<>();
|
|
|
- orderItemService.list(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, orderRefund.getOrderId())).forEach(orderItem -> {
|
|
|
- Sku sku = skuService.getById(orderItem.getSkuId());
|
|
|
+ orderRefundSkuMapper.selectList(new LambdaQueryWrapper<OrderRefundSku>().eq(OrderRefundSku::getOrderRefundId, orderRefund.getRefundId())).forEach(orderRefundSku -> {
|
|
|
+ Sku sku = skuService.getById(orderRefundSku.getSkuId());
|
|
|
ProductRequest productRequest = new ProductRequest();
|
|
|
- productRequest.setSkuName(orderItem.getSkuName());
|
|
|
- productRequest.setSkuId(orderItem.getSkuId());
|
|
|
+ productRequest.setSkuName(sku.getSkuName());
|
|
|
+ productRequest.setSkuId(orderRefundSku.getSkuId());
|
|
|
productRequest.setChannelSkuId(sku.getHbSkuId());
|
|
|
// productRequest.setUpcCode(orderItem.getSkuId());
|
|
|
- productRequest.setRefundCount(orderItem.getProdCount());
|
|
|
- productRequest.setRefundMoney((long) (orderItem.getProductTotalAmount() == null ? 0 : orderItem.getProductTotalAmount() * 100));
|
|
|
+ productRequest.setRefundCount(orderRefundSku.getProductCount());
|
|
|
+ productRequest.setRefundMoney((long) (orderRefundSku.getSkuPrice() == null ? 0 : orderRefundSku.getProductCount() * orderRefundSku.getSkuPrice() * 100));
|
|
|
productRequest.setTransId(sku.getSkuId().toString());
|
|
|
productRequests.add(productRequest);
|
|
|
|
|
@@ -1043,16 +1056,15 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
thirdPartyRefundRequest.setOrderPayments(orderPaymentRequests);
|
|
|
log.info("退款订单信息,参数:{}", thirdPartyRefundRequest);
|
|
|
|
|
|
-
|
|
|
// 返回退款单信息
|
|
|
- changeStatus(orderRefund.getRefundSn());
|
|
|
+ changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
log.error("海博退款订单查询异常:{}", e);
|
|
|
HBR.error("未知异常");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ log.info("退款订单信息,返回:{}", thirdPartyRefundRequest);
|
|
|
return HBR.success(thirdPartyRefundRequest);
|
|
|
}
|
|
|
|
|
@@ -1076,14 +1088,11 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
|
|
|
OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getRefundSn, afterSaleOrder));
|
|
|
|
|
|
- if (auditType == 2) {
|
|
|
- orderRefund.setApplyType(applyDeal);
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
- } else if (auditType == 4) {
|
|
|
+ if (auditType == 2 || auditType == 4) {
|
|
|
orderRefund.setApplyType(applyDeal);
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.PROCESSING.value());
|
|
|
} else {
|
|
|
- orderRefund.setReturnMoneySts(7);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
|
|
|
orderRefund.setRejectMessage(bodyStr.getString("reason"));
|
|
|
}
|
|
|
orderRefundMapper.updateById(orderRefund);
|
|
@@ -1115,16 +1124,14 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
|
|
|
OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getRefundSn, afterSaleOrder));
|
|
|
|
|
|
- if (auditType == 2) {
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
+ if (auditType == 2 || auditType == 4) {
|
|
|
orderRefund.setIsReceiver(true);
|
|
|
- } else if (auditType == 4) {
|
|
|
- orderRefund.setIsReceiver(true);
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.PROCESSING.value());
|
|
|
} else {
|
|
|
- orderRefund.setReturnMoneySts(7);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
|
|
|
orderRefund.setRejectMessage(bodyStr.getString("reason"));
|
|
|
}
|
|
|
+
|
|
|
orderRefundMapper.updateById(orderRefund);
|
|
|
|
|
|
|
|
@@ -1151,8 +1158,21 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
Integer auditType = bodyStr.getInteger("auditType");
|
|
|
Integer applyDeal = bodyStr.getInteger("applyDeal");
|
|
|
|
|
|
- OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getOrderNumber, channelOrderId));
|
|
|
|
|
|
+ OrderRefundParam orderRefundParam = new OrderRefundParam();
|
|
|
+ Order order = orderMapper.getOrderAndOrderItemByOrderNumber(channelOrderId);
|
|
|
+
|
|
|
+ orderRefundParam.setOrderNumber(channelOrderId);
|
|
|
+ orderRefundParam.setRefundType( RefundType.SINGLE.value());
|
|
|
+ orderRefundParam.setApplyType(1);
|
|
|
+ orderRefundParam.setRefundType(1);
|
|
|
+ orderRefundParam.setIsReceiver(false);
|
|
|
+ orderRefundParam.setBuyerReason("17");
|
|
|
+ orderRefundParam.setBuyerDesc(bodyStr.getString("reason"));
|
|
|
+ orderRefundParam.setBuyerMobile(order.getUserMobile());
|
|
|
+ orderRefundParam.setRefundAmount(order.getActualTotal());
|
|
|
+
|
|
|
+ OrderRefund orderRefund = new OrderRefund();
|
|
|
if (ObjectUtil.isNotEmpty(applyDeal)) {
|
|
|
if (applyDeal == 10) {
|
|
|
orderRefund.setApplyType(1);
|
|
@@ -1161,32 +1181,42 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (auditType == 2) {
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
- orderRefund.setIsReceiver(true);
|
|
|
- } else if (auditType == 4) {
|
|
|
+ if (auditType == 2 || auditType == 4) {
|
|
|
orderRefund.setIsReceiver(true);
|
|
|
- orderRefund.setReturnMoneySts(2);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.PROCESSING.value());
|
|
|
} else {
|
|
|
- orderRefund.setReturnMoneySts(7);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.REJECT.value());
|
|
|
orderRefund.setRejectMessage(bodyStr.getString("reason"));
|
|
|
}
|
|
|
|
|
|
JSONArray products = bodyStr.getJSONArray("products");
|
|
|
log.info("部分退款接口-回调接口,products:{}", products);
|
|
|
+
|
|
|
+
|
|
|
+ List<OrderRefundSku> orderRefundSkuList = new ArrayList<>();
|
|
|
+ int goodsNum = 0;
|
|
|
for (Object product : products) {
|
|
|
- JSONObject productJson = (JSONObject) product;
|
|
|
+ JSONObject productJson = JSON.parseObject(product.toString());
|
|
|
+ long channelSkuId = Long.parseLong(productJson.getString("channelSkuId"));
|
|
|
OrderRefundSku orderRefundSku = new OrderRefundSku();
|
|
|
- String skuId = productJson.getString("skuId");
|
|
|
- orderRefundSku.setSkuId(Long.parseLong(productJson.getString("channelSkuId")));
|
|
|
- orderRefundSku.setProductCount(Integer.parseInt(productJson.getString("productCount")));
|
|
|
- orderRefundSkuMapper.insert(orderRefundSku);
|
|
|
+// String skuId = productJson.getString("skuId");
|
|
|
+ skuService.getOne(new LambdaQueryWrapper<Sku>().eq(Sku::getHbSkuId, channelSkuId));
|
|
|
+ OrderItem orderItem = orderItemService.getOne(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getSkuId, channelSkuId)
|
|
|
+ .eq(OrderItem::getOrderNumber, channelOrderId));
|
|
|
+
|
|
|
+ orderRefundSku.setSkuId(orderItem.getSkuId());
|
|
|
+ orderRefundSku.setOrderItemId(orderItem.getOrderItemId());
|
|
|
+ orderRefundSku.setSkuPrice(orderItem.getPrice());
|
|
|
+ int count = Integer.parseInt(productJson.getString("productCount"));
|
|
|
+ goodsNum += count;
|
|
|
+ orderRefundSku.setProductCount(count);
|
|
|
+ orderRefundSkuList.add(orderRefundSku);
|
|
|
}
|
|
|
+ orderRefund.setGoodsNum(goodsNum);
|
|
|
+ orderRefundParam.setOrderRefundSkuList(orderRefundSkuList);
|
|
|
|
|
|
|
|
|
- Order orderByOrderNumber = orderService.getById(orderRefund.getOrderId());
|
|
|
- orderByOrderNumber.setRefundStatus(3);
|
|
|
- orderService.updateById(orderByOrderNumber);
|
|
|
+ orderService.applyAgain(orderRefundParam,ReturnMoneyStsType.APPLY.value());
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
log.error("海博退款订单查询异常:{}", e);
|
|
@@ -1204,7 +1234,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
String afterSaleOrder = bodyStr.getString("afterSaleOrder");
|
|
|
|
|
|
OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>().eq(OrderRefund::getRefundSn, afterSaleOrder));
|
|
|
- orderRefund.setReturnMoneySts(5);
|
|
|
+ orderRefund.setReturnMoneySts(ReturnMoneyStsType.SUCCESS.value());
|
|
|
orderRefundMapper.updateById(orderRefund);
|
|
|
|
|
|
Order orderByOrderNumber = orderService.getById(orderRefund.getOrderId());
|
|
@@ -1218,31 +1248,5 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
|
|
|
return HBR.success();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 系统订单状态转换为海博订单状态
|
|
|
- * 退款单状态 10:待审核 20:处理中 30:驳回退款 40:撤销退款 60:待退货(一审同意) 65:待确认收货(二审待审核) 70:退款完成
|
|
|
- * 处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功 6.买家撤回申请 7.商家拒绝 -1.退款关闭)详情见ReturnMoneyStsType
|
|
|
- *
|
|
|
- * @param returnMoneySts 退款单状态
|
|
|
- * @return HB退款单状态
|
|
|
- */
|
|
|
- private Integer refundHbStatus(Integer returnMoneySts) {
|
|
|
- switch (returnMoneySts) {
|
|
|
- case 1:
|
|
|
- return 10;
|
|
|
- case 2:
|
|
|
- return 60;
|
|
|
- case 3:
|
|
|
- return 10;
|
|
|
- case 4:
|
|
|
- return 20;
|
|
|
- case 6:
|
|
|
- return 40;
|
|
|
- case 7:
|
|
|
- return 30;
|
|
|
- case 5:
|
|
|
- return 70;
|
|
|
- }
|
|
|
- return 10;
|
|
|
- }
|
|
|
+
|
|
|
}
|