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

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

退款订单回调修改

parent 830666c8
......@@ -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.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.param.PayAgainParam;
import com.liquidnet.service.goblin.param.RefundCallbackParam;
import com.liquidnet.service.goblin.param.SyncOrderParam;
import java.util.List;
......@@ -17,6 +18,8 @@ public interface IGoblinOrderService {
String syncOrder(SyncOrderParam syncOrderParam);
String refundSyncOrder(RefundCallbackParam refundCallbackParam);
ResponseDto<Integer> checkOrderResult(String orderId);
ResponseDto<Integer> checkOrderResultMaterCode(String materCode);
......
......@@ -36,5 +36,4 @@ public interface IGoblinStoreOrderService {
ResponseDto<Boolean> changeExpressMailNo(String orderId, String mailId,String mailNo);
String refundSyncOrder(RefundCallbackParam refundCallbackParam);
}
......@@ -103,7 +103,7 @@ liquidnet:
check: http://devdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://devorder.zhengzai.tv/order/order/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:
url: http://devcandy.zhengzai.tv/candy
goblin:
......
......@@ -105,7 +105,7 @@ liquidnet:
check: http://ttestdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://ttestorder.zhengzai.tv/order/order/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:
notifyUrl: https://ttestdragon.zhengzai.tv/dragon
urls:
......
......@@ -108,7 +108,7 @@ global-auth:
- ${liquidnet.info.context}/order/pay/syncOrder
- ${liquidnet.info.context}/store/coupon/backCoupon
- ${liquidnet.info.context}/store/coupon/useCoupon
- ${liquidnet.info.context}/store/order/refundSyncOrder
- ${liquidnet.info.context}/order/pay/refundSyncOrder
oncheck-url-pattern:
-
# -----------------------------------------------------------
......
......@@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.List;
@Slf4j
@Api(tags = "正在下单相关-商铺")
@Api(tags = "店铺券")
@RestController
@RequestMapping("/store/coupon")
public class GoblinCouponController {
......
......@@ -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.vo.GoblinPayInnerResultVo;
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.service.IGoblinOrderService;
import io.swagger.annotations.*;
......@@ -46,6 +47,12 @@ public class GoblinOrderController {
return goblinAppOrderService.syncOrder(syncOrderParam);
}
@ApiOperation(value = "退款回调")
@PostMapping(value = "refundSyncOrder")
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
return goblinAppOrderService.refundSyncOrder(refundCallbackParam);
}
@PostMapping("payAgain")
@ApiOperation("再次支付")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
......@@ -124,12 +124,6 @@ public class GoblinStoreOrderController {
return goblinStoreOrderService.refundOrderSku(orderId, orderSkuId, price);
}
@ApiOperation(value = "退款回调")
@PostMapping(value = "refundSyncOrder")
public String refundSyncOrder(RefundCallbackParam refundCallbackParam) {
return goblinStoreOrderService.refundSyncOrder(refundCallbackParam);
}
@ApiOperation(value = "发货")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "orderId", value = "订单id"),
......
......@@ -155,10 +155,20 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
return ResponseDto.failure("无权操作");
}
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())) {
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();
backOrder.setBackOrderId(IDGenerator.nextTimeId2());
......
......@@ -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
public ResponseDto<List<GoblinMailVo>> getMail(String orderId, String mailId) {
List<GoblinMailVo> voList = redisUtils.getGoblinMail(orderId);
......
......@@ -547,100 +547,6 @@ public class GoblinStoreOrderServiceImpl implements IGoblinStoreOrderService {
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) {
GoblinOrderOperationLog log = GoblinOrderOperationLog.getNew();
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