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

Commit 28233dd3 authored by 胡佳晨's avatar 胡佳晨

退款订单回调修改

parent 830666c8
...@@ -5,6 +5,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam; ...@@ -5,6 +5,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinMailVo; import com.liquidnet.service.goblin.dto.vo.GoblinMailVo;
import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo; import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.param.PayAgainParam; import com.liquidnet.service.goblin.param.PayAgainParam;
import com.liquidnet.service.goblin.param.RefundCallbackParam;
import com.liquidnet.service.goblin.param.SyncOrderParam; import com.liquidnet.service.goblin.param.SyncOrderParam;
import java.util.List; import java.util.List;
...@@ -17,6 +18,8 @@ public interface IGoblinOrderService { ...@@ -17,6 +18,8 @@ public interface IGoblinOrderService {
String syncOrder(SyncOrderParam syncOrderParam); String syncOrder(SyncOrderParam syncOrderParam);
String refundSyncOrder(RefundCallbackParam refundCallbackParam);
ResponseDto<Integer> checkOrderResult(String orderId); ResponseDto<Integer> checkOrderResult(String orderId);
ResponseDto<Integer> checkOrderResultMaterCode(String materCode); ResponseDto<Integer> checkOrderResultMaterCode(String materCode);
......
...@@ -36,5 +36,4 @@ public interface IGoblinStoreOrderService { ...@@ -36,5 +36,4 @@ public interface IGoblinStoreOrderService {
ResponseDto<Boolean> changeExpressMailNo(String orderId, String mailId,String mailNo); ResponseDto<Boolean> changeExpressMailNo(String orderId, String mailId,String mailNo);
String refundSyncOrder(RefundCallbackParam refundCallbackParam);
} }
...@@ -103,7 +103,7 @@ liquidnet: ...@@ -103,7 +103,7 @@ liquidnet:
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://devorder.zhengzai.tv/order/order/syncOrder localUrl: http://devorder.zhengzai.tv/order/order/syncOrder
goblinUrl: http://devgoblin.zhengzai.tv/goblin/order/pay/syncOrder goblinUrl: http://devgoblin.zhengzai.tv/goblin/order/pay/syncOrder
goblinRefundUrl: http://devgoblin.zhengzai.tv/goblin/store/order/refundSyncOrder goblinRefundUrl: http://devgoblin.zhengzai.tv/goblin/order/pay/refundSyncOrder
candy: candy:
url: http://devcandy.zhengzai.tv/candy url: http://devcandy.zhengzai.tv/candy
goblin: goblin:
......
...@@ -105,7 +105,7 @@ liquidnet: ...@@ -105,7 +105,7 @@ liquidnet:
check: http://ttestdragon.zhengzai.tv/dragon/pay/checkOrder check: http://ttestdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://ttestorder.zhengzai.tv/order/order/syncOrder localUrl: http://ttestorder.zhengzai.tv/order/order/syncOrder
goblinUrl: http://ttestgoblin.zhengzai.tv/goblin/order/pay/syncOrder goblinUrl: http://ttestgoblin.zhengzai.tv/goblin/order/pay/syncOrder
goblinRefundUrl: http://ttestgoblin.zhengzai.tv/goblin/store/order/refundSyncOrder goblinRefundUrl: http://ttestgoblin.zhengzai.tv/goblin/order/pay/refundSyncOrder
dragon: dragon:
notifyUrl: https://ttestdragon.zhengzai.tv/dragon notifyUrl: https://ttestdragon.zhengzai.tv/dragon
urls: urls:
......
...@@ -108,7 +108,7 @@ global-auth: ...@@ -108,7 +108,7 @@ global-auth:
- ${liquidnet.info.context}/order/pay/syncOrder - ${liquidnet.info.context}/order/pay/syncOrder
- ${liquidnet.info.context}/store/coupon/backCoupon - ${liquidnet.info.context}/store/coupon/backCoupon
- ${liquidnet.info.context}/store/coupon/useCoupon - ${liquidnet.info.context}/store/coupon/useCoupon
- ${liquidnet.info.context}/store/order/refundSyncOrder - ${liquidnet.info.context}/order/pay/refundSyncOrder
oncheck-url-pattern: oncheck-url-pattern:
- -
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -21,7 +21,7 @@ import java.util.ArrayList; ...@@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@Api(tags = "正在下单相关-商铺") @Api(tags = "店铺券")
@RestController @RestController
@RequestMapping("/store/coupon") @RequestMapping("/store/coupon")
public class GoblinCouponController { public class GoblinCouponController {
......
...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.codec.vo.EncryptedReq; ...@@ -6,6 +6,7 @@ import com.liquidnet.service.base.codec.vo.EncryptedReq;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam; import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo; import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.param.PayAgainParam; import com.liquidnet.service.goblin.param.PayAgainParam;
import com.liquidnet.service.goblin.param.RefundCallbackParam;
import com.liquidnet.service.goblin.param.SyncOrderParam; import com.liquidnet.service.goblin.param.SyncOrderParam;
import com.liquidnet.service.goblin.service.IGoblinOrderService; import com.liquidnet.service.goblin.service.IGoblinOrderService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
...@@ -46,6 +47,12 @@ public class GoblinOrderController { ...@@ -46,6 +47,12 @@ public class GoblinOrderController {
return goblinAppOrderService.syncOrder(syncOrderParam); return goblinAppOrderService.syncOrder(syncOrderParam);
} }
@ApiOperation(value = "退款回调")
@PostMapping(value = "refundSyncOrder")
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
return goblinAppOrderService.refundSyncOrder(refundCallbackParam);
}
@PostMapping("payAgain") @PostMapping("payAgain")
@ApiOperation("再次支付") @ApiOperation("再次支付")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
......
...@@ -124,12 +124,6 @@ public class GoblinStoreOrderController { ...@@ -124,12 +124,6 @@ public class GoblinStoreOrderController {
return goblinStoreOrderService.refundOrderSku(orderId, orderSkuId, price); return goblinStoreOrderService.refundOrderSku(orderId, orderSkuId, price);
} }
@ApiOperation(value = "退款回调")
@PostMapping(value = "refundSyncOrder")
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
return goblinStoreOrderService.refundSyncOrder(refundCallbackParam);
}
@ApiOperation(value = "发货") @ApiOperation(value = "发货")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id"),
......
...@@ -155,10 +155,20 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService { ...@@ -155,10 +155,20 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
return ResponseDto.failure("无权操作"); return ResponseDto.failure("无权操作");
} }
if (!(orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue() || if (!(orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_2.getValue() ||
orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_3.getValue() || // orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_3.getValue() ||
orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_4.getValue())) { orderVo.getStatus() == GoblinStatusConst.Status.ORDER_STATUS_4.getValue())) {
return ResponseDto.failure("不可操作"); return ResponseDto.failure("不可操作");
} }
//判断7天
LocalDateTime canRefundTime = getCanRefundTime(orderVo);
if (canRefundTime == null) {
return ResponseDto.failure("申请失败");
} else {
if (LocalDateTime.now().isAfter(canRefundTime)) {
return ResponseDto.failure("申请失败");
}
}
//退款订单生成 //退款订单生成
GoblinBackOrder backOrder = GoblinBackOrder.getNew(); GoblinBackOrder backOrder = GoblinBackOrder.getNew();
backOrder.setBackOrderId(IDGenerator.nextTimeId2()); backOrder.setBackOrderId(IDGenerator.nextTimeId2());
......
...@@ -823,6 +823,100 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -823,6 +823,100 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
} }
} }
@Override
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
LocalDateTime now = LocalDateTime.now();
String nowStr = DateUtil.getNowTime();
log.info("refundCallback订单退款回调参数: [RefundCallbackParam={}]", refundCallbackParam);
GoblinBackOrderVo backOrderVo = mongoUtils.getGoblinBackOrderVoByBackCode(refundCallbackParam.getOrderRefundCode());
if (backOrderVo == null) {
log.info("refundCallback: 退款订单查询失败,编号{}", refundCallbackParam.getOrderRefundCode());
return "fail";
}
if (backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_20.getValue() || backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_201.getValue()) {
log.info("refundCallback: 退款订单已取消,编号{}", refundCallbackParam.getOrderRefundCode());
return "fail";
}
if (backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue()) {
log.info("refundCallback: 退款订单已完成,编号{}", refundCallbackParam.getOrderRefundCode());
return "success";
}
Integer status = refundCallbackParam.getStatus();
if (1 == status && (backOrderVo.getStatus() == 0 || backOrderVo.getStatus() == 10)) { // 退款成功
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsOrderSku = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsBackOrder = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("goblin_order.store.refundPrice"));
sqls.add(SqlMapping.get("goblin_order.store.refundSkuPrice"));
sqls.add(SqlMapping.get("goblin_order.store.refundBackOrder"));
String orderId = backOrderVo.getOrderId();
List<GoblinBackOrderSkuVo> backOrderSkuVos = backOrderVo.getBackOrderSkuVos();
BigDecimal price = refundCallbackParam.getRefundPrice();
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
orderVo.setPriceRefund(orderVo.getPriceRefund().add(price));
if (orderVo.getPriceRefund().compareTo(orderVo.getPriceActual()) >= 0) {
orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
}
backOrderVo.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_2.getValue());
backOrderVo.setRefundAt(nowStr);
for (GoblinBackOrderSkuVo backOrderSkuVo : backOrderSkuVos) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(backOrderSkuVo.getOrderSkuId());
orderSkuVo.setPriceRefund(orderSkuVo.getPriceRefund() == null ? BigDecimal.ZERO : orderSkuVo.getPriceRefund().add(price));
if (orderSkuVo.getPriceRefund().compareTo(orderSkuVo.getSkuPriceActual()) == 0) {
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
String pre = GoblinStatusConst.MarketPreStatus.getPre(orderSkuVo.getSkuId());
String skuId = orderSkuVo.getSkuId();
redisUtils.incrSkuStock(pre, skuId, orderSkuVo.getNum());
}
redisUtils.setGoblinOrderSku(backOrderSkuVo.getOrderSkuId(), orderSkuVo);
mongoUtils.updateGoblinOrderSkuVo(backOrderSkuVo.getOrderSkuId(), orderSkuVo);
sqlsOrderSku.add(new Object[]{
orderSkuVo.getPriceRefund(), orderSkuVo.getStatus(), now,
backOrderSkuVo.getOrderSkuId(), now, now
});
GoblinOrderLogVo logVo = GoblinOrderLogVo.getNew();
logVo.setOrderId(orderVo.getOrderId());
logVo.setOrderCode(orderVo.getOrderCode());
logVo.setPayCode(orderVo.getPayCode());
if (orderSkuVo.getSkuId().indexOf(GoblinStatusConst.MarketPreStatus.MARKET_PRE_PURCHASE.getValue()) > 0) {
logVo.setOrderType("zhengzai");
} else {
logVo.setOrderType("order");
}
logVo.setStoreId(orderVo.getStoreId());
logVo.setSpuId(orderSkuVo.getSpuId());
logVo.setSpuName(backOrderSkuVo.getSpuName());
logVo.setSkuId(backOrderSkuVo.getSkuId());
logVo.setSkuPriceActual(price.multiply(BigDecimal.valueOf(100)).negate().longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue());
logVo.setOperationId(backOrderVo.getUserId());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue());
logVo.setCreatedAt(now);
mongoUtils.insertGoblinOrderLogVo(logVo);
}
//redis
redisUtils.setGoblinOrder(orderId, orderVo);
redisUtils.setBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
//mongo
mongoUtils.updateGoblinStoreOrderVo(orderId, orderVo);
mongoUtils.updateGoblinBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
//mysql
sqlsOrder.add(new Object[]{
orderVo.getPriceRefund(), orderVo.getStatus(), now,
orderId, now, now
});
sqlsBackOrder.add(new Object[]{
backOrderVo.getStatus(), now, now, backOrderVo.getBackOrderId(), now, now
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
SqlMapping.gets(sqls, sqlsOrder, sqlsOrderSku, sqlsBackOrder));
} else if (0 == status) {
}
return "success";
}
@Override @Override
public ResponseDto<List<GoblinMailVo>> getMail(String orderId, String mailId) { public ResponseDto<List<GoblinMailVo>> getMail(String orderId, String mailId) {
List<GoblinMailVo> voList = redisUtils.getGoblinMail(orderId); List<GoblinMailVo> voList = redisUtils.getGoblinMail(orderId);
......
...@@ -547,100 +547,6 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService { ...@@ -547,100 +547,6 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService {
return ResponseDto.success(); return ResponseDto.success();
} }
@Override
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
LocalDateTime now = LocalDateTime.now();
String nowStr = DateUtil.getNowTime();
log.info("refundCallback订单退款回调参数: [RefundCallbackParam={}]", refundCallbackParam);
GoblinBackOrderVo backOrderVo = mongoUtils.getGoblinBackOrderVoByBackCode(refundCallbackParam.getOrderRefundCode());
if (backOrderVo == null) {
log.info("refundCallback: 退款订单查询失败,编号{}", refundCallbackParam.getOrderRefundCode());
return "fail";
}
if (backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_20.getValue() || backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_201.getValue()) {
log.info("refundCallback: 退款订单已取消,编号{}", refundCallbackParam.getOrderRefundCode());
return "fail";
}
if (backOrderVo.getStatus() == GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue()) {
log.info("refundCallback: 退款订单已完成,编号{}", refundCallbackParam.getOrderRefundCode());
return "success";
}
Integer status = refundCallbackParam.getStatus();
if (1 == status && (backOrderVo.getStatus() == 0 || backOrderVo.getStatus() == 10)) { // 退款成功
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsOrderSku = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlsBackOrder = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("goblin_order.store.refundPrice"));
sqls.add(SqlMapping.get("goblin_order.store.refundSkuPrice"));
sqls.add(SqlMapping.get("goblin_order.store.refundBackOrder"));
String orderId = backOrderVo.getOrderId();
List<GoblinBackOrderSkuVo> backOrderSkuVos = backOrderVo.getBackOrderSkuVos();
BigDecimal price = refundCallbackParam.getRefundPrice();
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
orderVo.setPriceRefund(orderVo.getPriceRefund().add(price));
if (orderVo.getPriceRefund().compareTo(orderVo.getPriceActual()) == 0) {
orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
}
backOrderVo.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_2.getValue());
backOrderVo.setRefundAt(nowStr);
for (GoblinBackOrderSkuVo backOrderSkuVo : backOrderSkuVos) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(backOrderSkuVo.getOrderSkuId());
orderSkuVo.setPriceRefund(orderSkuVo.getPriceRefund() == null ? BigDecimal.ZERO : orderSkuVo.getPriceRefund().add(price));
if (orderSkuVo.getPriceRefund().compareTo(orderSkuVo.getSkuPriceActual()) == 0) {
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
String pre = GoblinStatusConst.MarketPreStatus.getPre(orderSkuVo.getSkuId());
String skuId = orderSkuVo.getSkuId();
redisUtils.incrSkuStock(pre, skuId, orderSkuVo.getNum());
}
redisUtils.setGoblinOrderSku(backOrderSkuVo.getOrderSkuId(), orderSkuVo);
mongoUtils.updateGoblinOrderSkuVo(backOrderSkuVo.getOrderSkuId(), orderSkuVo);
sqlsOrderSku.add(new Object[]{
orderSkuVo.getPriceRefund(), orderSkuVo.getStatus(), now,
backOrderSkuVo.getOrderSkuId(), now, now
});
GoblinOrderLogVo logVo = GoblinOrderLogVo.getNew();
logVo.setOrderId(orderVo.getOrderId());
logVo.setOrderCode(orderVo.getOrderCode());
logVo.setPayCode(orderVo.getPayCode());
if (orderSkuVo.getSkuId().indexOf(GoblinStatusConst.MarketPreStatus.MARKET_PRE_PURCHASE.getValue()) > 0) {
logVo.setOrderType("zhengzai");
} else {
logVo.setOrderType("order");
}
logVo.setStoreId(orderVo.getStoreId());
logVo.setSpuId(orderSkuVo.getSpuId());
logVo.setSpuName(backOrderSkuVo.getSpuName());
logVo.setSkuId(backOrderSkuVo.getSkuId());
logVo.setSkuPriceActual(price.multiply(BigDecimal.valueOf(100)).negate().longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_22.getValue());
logVo.setOperationId(backOrderVo.getUserId());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_2.getValue());
logVo.setCreatedAt(now);
mongoUtils.insertGoblinOrderLogVo(logVo);
}
//redis
redisUtils.setGoblinOrder(orderId, orderVo);
redisUtils.setBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
//mongo
mongoUtils.updateGoblinStoreOrderVo(orderId, orderVo);
mongoUtils.updateGoblinBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
//mysql
sqlsOrder.add(new Object[]{
orderVo.getPriceRefund(), orderVo.getStatus(), now,
orderId, now, now
});
sqlsBackOrder.add(new Object[]{
backOrderVo.getStatus(), now, now, backOrderVo.getBackOrderId(), now, now
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_STORE_ORDER_OPERA.getKey(),
SqlMapping.gets(sqls, sqlsOrder, sqlsOrderSku, sqlsBackOrder));
} else if (0 == status) {
}
return "success";
}
private GoblinOrderOperationLog initLog(String orderId, String uid, LocalDateTime now) { private GoblinOrderOperationLog initLog(String orderId, String uid, LocalDateTime now) {
GoblinOrderOperationLog log = GoblinOrderOperationLog.getNew(); GoblinOrderOperationLog log = GoblinOrderOperationLog.getNew();
log.setOrderId(orderId); log.setOrderId(orderId);
......
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