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

Commit b069c250 authored by 胡佳晨's avatar 胡佳晨

huifu 回调接口迁移

parent 987f84a3
......@@ -24,7 +24,7 @@ public interface IGoblinOrderAppService {
ResponseDto<List<GoblinBackOrderVo>> refundDetails(String orderId);
String huiFuSync(HttpServletRequest request);
// String huiFuSync(HttpServletRequest request);
ResponseDto<List<GoblinMailVo>> getMail(String orderId, String mailId);
}
......@@ -8,6 +8,7 @@ import com.liquidnet.service.goblin.param.PayAgainParam;
import com.liquidnet.service.goblin.param.RefundCallbackParam;
import com.liquidnet.service.goblin.param.SyncOrderParam;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface IGoblinOrderService {
......@@ -24,4 +25,7 @@ public interface IGoblinOrderService {
ResponseDto<Integer> checkOrderResultMaterCode(String materCode);
String huiFuSync(HttpServletRequest request);
}
......@@ -79,10 +79,10 @@ public class GoblinStoreZhengzaiController {
return goblinOrderAppService.orderDetails(orderId, null);
}
@PostMapping("paySuccess")
@ApiOperation("汇付支付成功回调")
@ResponseBody
public String refundDetails(HttpServletRequest request) {
return goblinOrderAppService.huiFuSync(request);
}
// @PostMapping("paySuccess")
// @ApiOperation("汇付支付成功回调")
// @ResponseBody
// public String refundDetails(HttpServletRequest request) {
// return goblinOrderAppService.huiFuSync(request);
// }
}
......@@ -484,133 +484,136 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
return ResponseDto.success(vos);
}
@Override
public String huiFuSync(HttpServletRequest request) {
try {
// 验签请参data
String responseData = request.getParameter("resp_data");
// 验签请参sign
String sign = request.getParameter("sign");
// 使用汇付公钥验签
// if (!RsaUtils.verify(responseData, PUBLIC_KEY, sign)) {
// // 验签失败处理
// return "";
// @Override
// public String huiFuSync(HttpServletRequest request) {
// try {
// // 验签请参data
// String responseData = request.getParameter("resp_data");
// // 验签请参sign
// String sign = request.getParameter("sign");
// // 使用汇付公钥验签
//// if (!RsaUtils.verify(responseData, PUBLIC_KEY, sign)) {
//// // 验签失败处理
//// return "";
//// }
// JSONObject dataObj = JSON.parseObject(responseData);
// String subRespCode = dataObj.getString("sub_resp_code");
// String reqSeqId = dataObj.getString("req_seq_id");
// String orderMasterCode = dataObj.getString("mer_ord_id");
// String payCode = dataObj.getString("mer_ord_id");
// String paymentType = dataObj.getString("trans_type");
// String paymentId = dataObj.getString("hf_seq_id");
// String paymentAt = dataObj.getString("end_time");
// if ("00000000".equals(subRespCode)) {
// log.debug("SYNC PARAM = " + responseData);
// //支付时间
// LocalDateTime now = LocalDateTime.now();
// String[] array = redisUtils.getMasterCode(orderMasterCode);
// String uid = "zhengzai";
// BigDecimal priceActual = BigDecimal.ZERO;
// for (String orderId : array) {
// GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
// if(orderVo.getStatus()==GoblinStatusConst.Status.ORDER_STATUS_4.getValue()){
// continue;
// }
// uid = orderVo.getUserId();
// priceActual = priceActual.add(orderVo.getPriceActual());
// if (orderVo == null) {
// log.error("订单号:" + orderMasterCode + " 订单不存在");
// return "fail";//订单不存在
// }
// LinkedList<String> sqls = CollectionUtil.linkedListString();
// LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
// LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr();
// GoblinStoreOrder storeOrder = GoblinStoreOrder.getNew();
// storeOrder.setPaymentType(paymentType);
// storeOrder.setPaymentId(paymentId);
// storeOrder.setPayCode(payCode);
// LocalDateTime payTime = LocalDateTime.parse(paymentAt, DTFYMDHMS);
// storeOrder.setPayTime(payTime);
// if (orderVo.getWriteOffCode().equals("EMPTY")) {
// storeOrder.setWriteOffCode(IDGenerator.getWriteOffCode());
// } else {
// storeOrder.setWriteOffCode("");
// }
// storeOrder.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
// storeOrder.setUpdatedAt(now);
// sqls.add(SqlMapping.get("goblin_order.pay.order"));
// sqlDataOrder.add(new Object[]{
// storeOrder.getPaymentType(), storeOrder.getPaymentId(), storeOrder.getPayCode(), storeOrder.getPayTime(), storeOrder.getWriteOffCode(), storeOrder.getStatus(), storeOrder.getUpdatedAt(),
// orderId, now, now
// });
// sqls.add(SqlMapping.get("goblin_order.pay.sku"));
// List<String> skuList = orderVo.getOrderSkuVoIds();
// for (String orderSkuVoIds : skuList) {
// GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuVoIds);
// //增加销量
// redisUtils.incrSkuSaleCount(orderSkuVo.getSpuId(), orderSkuVo.getSkuId(), orderSkuVo.getNum());
// orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
// //redis
// redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
// //mongo
// mongoUtils.updateGoblinOrderSkuVo(orderSkuVo.getOrderSkuId(), orderSkuVo);
// //mongo 添加操作日志
// GoblinOrderLogVo logVo = GoblinOrderLogVo.getNew();
// logVo.setOrderId(orderVo.getOrderId());
// logVo.setOrderCode(orderVo.getOrderCode());
// logVo.setPayCode(orderVo.getPayCode());
// logVo.setStoreId(orderVo.getStoreId());
// if (orderSkuVo.getSkuId().indexOf(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue()) > 0) {
// logVo.setOrderType("zhengzai");
// } else {
// logVo.setOrderType("order");
// }
// logVo.setSpuId(orderSkuVo.getSpuId());
// logVo.setSkuId(orderSkuVo.getSkuId());
// logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue());
// logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue());
// logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc());
// logVo.setOperationId(uid);
// logVo.setOperationName(orderVo.getUserName());
// logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
// logVo.setCreatedAt(LocalDateTime.now());
// mongoUtils.insertGoblinOrderLogVo(logVo);
// //mysql
// sqlDataSku.add(new Object[]{
// orderSkuVo.getStatus(), now,
// orderSkuVo.getOrderSkuId(), now, now
// });
// }
// //redis
// orderVo.setPayCode(storeOrder.getPayCode());
// orderVo.setPayTime(paymentAt);
// orderVo.setWriteOffCode(storeOrder.getWriteOffCode());
// orderVo.setStatus(storeOrder.getStatus());
// orderVo.setPaymentId(paymentId);
// orderVo.setPaymentType(paymentType);
// orderVo.setOrderSkuVoIds(skuList);
// redisUtils.setGoblinOrder(orderId, orderVo);
// redisUtils.setOffCode(orderVo.getWriteOffCode(), orderVo.getMasterOrderCode());
// //删除未支付订单
// redisUtils.removeGoblinOrder(orderVo.getRandomKey() + "", orderId);
// //mongo
// mongoUtils.updateGoblinStoreOrderVo(orderId, orderVo);
// //mysql
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(),
// SqlMapping.gets(sqls, sqlDataOrder, sqlDataSku));
// }
// //加分
// if (noZhengzaiOrder(uid)) {
// orderUtils.doTask(uid, priceActual);
// }
// } else {
// // 业务处理失败
// log.info("处理失败");
// }
JSONObject dataObj = JSON.parseObject(responseData);
String subRespCode = dataObj.getString("sub_resp_code");
String reqSeqId = dataObj.getString("req_seq_id");
String orderMasterCode = dataObj.getString("mer_ord_id");
String payCode = dataObj.getString("mer_ord_id");
String paymentType = dataObj.getString("trans_type");
String paymentId = dataObj.getString("hf_seq_id");
String paymentAt = dataObj.getString("end_time");
if ("00000000".equals(subRespCode)) {
log.debug("SYNC PARAM = " + responseData);
//支付时间
LocalDateTime now = LocalDateTime.now();
String[] array = redisUtils.getMasterCode(orderMasterCode);
String uid = "zhengzai";
BigDecimal priceActual = BigDecimal.ZERO;
for (String orderId : array) {
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
uid = orderVo.getUserId();
priceActual = priceActual.add(orderVo.getPriceActual());
if (orderVo == null) {
log.error("订单号:" + orderMasterCode + " 订单不存在");
return "fail";//订单不存在
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr();
GoblinStoreOrder storeOrder = GoblinStoreOrder.getNew();
storeOrder.setPaymentType(paymentType);
storeOrder.setPaymentId(paymentId);
storeOrder.setPayCode(payCode);
LocalDateTime payTime = LocalDateTime.parse(paymentAt, DTFYMDHMS);
storeOrder.setPayTime(payTime);
if (orderVo.getWriteOffCode().equals("EMPTY")) {
storeOrder.setWriteOffCode(IDGenerator.getWriteOffCode());
} else {
storeOrder.setWriteOffCode("");
}
storeOrder.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
storeOrder.setUpdatedAt(now);
sqls.add(SqlMapping.get("goblin_order.pay.order"));
sqlDataOrder.add(new Object[]{
storeOrder.getPaymentType(), storeOrder.getPaymentId(), storeOrder.getPayCode(), storeOrder.getPayTime(), storeOrder.getWriteOffCode(), storeOrder.getStatus(), storeOrder.getUpdatedAt(),
orderId, now, now
});
sqls.add(SqlMapping.get("goblin_order.pay.sku"));
List<String> skuList = orderVo.getOrderSkuVoIds();
for (String orderSkuVoIds : skuList) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuVoIds);
//增加销量
redisUtils.incrSkuSaleCount(orderSkuVo.getSpuId(), orderSkuVo.getSkuId(), orderSkuVo.getNum());
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
//redis
redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo
mongoUtils.updateGoblinOrderSkuVo(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo 添加操作日志
GoblinOrderLogVo logVo = GoblinOrderLogVo.getNew();
logVo.setOrderId(orderVo.getOrderId());
logVo.setOrderCode(orderVo.getOrderCode());
logVo.setPayCode(orderVo.getPayCode());
logVo.setStoreId(orderVo.getStoreId());
if (orderSkuVo.getSkuId().indexOf(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue()) > 0) {
logVo.setOrderType("zhengzai");
} else {
logVo.setOrderType("order");
}
logVo.setSpuId(orderSkuVo.getSpuId());
logVo.setSkuId(orderSkuVo.getSkuId());
logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue());
logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc());
logVo.setOperationId(uid);
logVo.setOperationName(orderVo.getUserName());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
logVo.setCreatedAt(LocalDateTime.now());
mongoUtils.insertGoblinOrderLogVo(logVo);
//mysql
sqlDataSku.add(new Object[]{
orderSkuVo.getStatus(), now,
orderSkuVo.getOrderSkuId(), now, now
});
}
//redis
orderVo.setPayCode(storeOrder.getPayCode());
orderVo.setPayTime(paymentAt);
orderVo.setWriteOffCode(storeOrder.getWriteOffCode());
orderVo.setStatus(storeOrder.getStatus());
orderVo.setPaymentId(paymentId);
orderVo.setPaymentType(paymentType);
orderVo.setOrderSkuVoIds(skuList);
redisUtils.setGoblinOrder(orderId, orderVo);
redisUtils.setOffCode(orderVo.getWriteOffCode(), orderVo.getMasterOrderCode());
//删除未支付订单
redisUtils.removeGoblinOrder(orderVo.getRandomKey() + "", orderId);
//mongo
mongoUtils.updateGoblinStoreOrderVo(orderId, orderVo);
//mysql
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(),
SqlMapping.gets(sqls, sqlDataOrder, sqlDataSku));
}
//加分
if (noZhengzaiOrder(uid)) {
orderUtils.doTask(uid, priceActual);
}
} else {
// 业务处理失败
log.info("处理失败");
}
return "RECV_ORD_ID_" + reqSeqId;
} catch (Exception e) {
log.info("异步回调开始,参数,request={},异常={}", request, e);
e.printStackTrace();
}
return "";
}
// return "RECV_ORD_ID_" + reqSeqId;
// } catch (Exception e) {
// log.info("异步回调开始,参数,request={},异常={}", request, e);
// e.printStackTrace();
// }
// return "";
// }
private GoblinBackOrderLog initBackLog(String orderId, String uid, LocalDateTime now) {
GoblinBackOrderLog log = GoblinBackOrderLog.getNew();
......
......@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
@Slf4j
......@@ -53,6 +54,13 @@ public class GoblinOrderController {
return goblinAppOrderService.refundSyncOrder(refundCallbackParam);
}
@PostMapping("paySuccess")
@ApiOperation("汇付支付成功回调")
@ResponseBody
public String refundDetails(HttpServletRequest request) {
return goblinAppOrderService.huiFuSync(request);
}
@PostMapping("payAgain")
@ApiOperation("再次支付")
@ApiResponse(code = 200, message = "接口返回对象参数")
......
package com.liquidnet.service.order.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ErrorMapping;
......@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
......@@ -37,8 +39,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
import static com.liquidnet.commons.lang.util.DateUtil.getNowTime;
import static com.liquidnet.commons.lang.util.DateUtil.*;
@Service
@Slf4j
......@@ -1033,4 +1034,135 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
}
return "success";
}
@Override
public String huiFuSync(HttpServletRequest request) {
try {
// 验签请参data
String responseData = request.getParameter("resp_data");
// 验签请参sign
String sign = request.getParameter("sign");
// 使用汇付公钥验签
// if (!RsaUtils.verify(responseData, PUBLIC_KEY, sign)) {
// // 验签失败处理
// return "";
// }
JSONObject dataObj = JSON.parseObject(responseData);
String subRespCode = dataObj.getString("sub_resp_code");
String reqSeqId = dataObj.getString("req_seq_id");
String orderMasterCode = dataObj.getString("mer_ord_id");
String payCode = dataObj.getString("mer_ord_id");
String paymentType = dataObj.getString("trans_type");
String paymentId = dataObj.getString("hf_seq_id");
String paymentAt = dataObj.getString("end_time");
if ("00000000".equals(subRespCode)) {
log.debug("SYNC PARAM = " + responseData);
//支付时间
LocalDateTime now = LocalDateTime.now();
String[] array = redisUtils.getMasterCode(orderMasterCode);
String uid = "zhengzai";
BigDecimal priceActual = BigDecimal.ZERO;
for (String orderId : array) {
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
if(orderVo.getStatus()==GoblinStatusConst.Status.ORDER_STATUS_4.getValue()){
continue;
}
uid = orderVo.getUserId();
priceActual = priceActual.add(orderVo.getPriceActual());
if (orderVo == null) {
log.error("订单号:" + orderMasterCode + " 订单不存在");
return "fail";//订单不存在
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlDataOrder = CollectionUtil.linkedListObjectArr();
LinkedList<Object[]> sqlDataSku = CollectionUtil.linkedListObjectArr();
GoblinStoreOrder storeOrder = GoblinStoreOrder.getNew();
storeOrder.setPaymentType(paymentType);
storeOrder.setPaymentId(paymentId);
storeOrder.setPayCode(payCode);
LocalDateTime payTime = LocalDateTime.parse(paymentAt, DTFYMDHMS);
storeOrder.setPayTime(payTime);
if (orderVo.getWriteOffCode().equals("EMPTY")) {
storeOrder.setWriteOffCode(IDGenerator.getWriteOffCode());
} else {
storeOrder.setWriteOffCode("");
}
storeOrder.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
storeOrder.setUpdatedAt(now);
sqls.add(SqlMapping.get("goblin_order.pay.order"));
sqlDataOrder.add(new Object[]{
storeOrder.getPaymentType(), storeOrder.getPaymentId(), storeOrder.getPayCode(), storeOrder.getPayTime(), storeOrder.getWriteOffCode(), storeOrder.getStatus(), storeOrder.getUpdatedAt(),
orderId, now, now
});
sqls.add(SqlMapping.get("goblin_order.pay.sku"));
List<String> skuList = orderVo.getOrderSkuVoIds();
for (String orderSkuVoIds : skuList) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuVoIds);
//增加销量
redisUtils.incrSkuSaleCount(orderSkuVo.getSpuId(), orderSkuVo.getSkuId(), orderSkuVo.getNum());
orderSkuVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_4.getValue());
//redis
redisUtils.setGoblinOrderSku(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo
mongoUtils.updateGoblinOrderSkuVo(orderSkuVo.getOrderSkuId(), orderSkuVo);
//mongo 添加操作日志
GoblinOrderLogVo logVo = GoblinOrderLogVo.getNew();
logVo.setOrderId(orderVo.getOrderId());
logVo.setOrderCode(orderVo.getOrderCode());
logVo.setPayCode(orderVo.getPayCode());
logVo.setStoreId(orderVo.getStoreId());
if (orderSkuVo.getSkuId().indexOf(GoblinStatusConst.MarketPreStatus.MARKET_PRE_ZHENGZAI.getValue()) > 0) {
logVo.setOrderType("zhengzai");
} else {
logVo.setOrderType("order");
}
logVo.setSpuId(orderSkuVo.getSpuId());
logVo.setSkuId(orderSkuVo.getSkuId());
logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue());
logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc());
logVo.setOperationId(uid);
logVo.setOperationName(orderVo.getUserName());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
logVo.setCreatedAt(LocalDateTime.now());
mongoUtils.insertGoblinOrderLogVo(logVo);
//mysql
sqlDataSku.add(new Object[]{
orderSkuVo.getStatus(), now,
orderSkuVo.getOrderSkuId(), now, now
});
}
//redis
orderVo.setPayCode(storeOrder.getPayCode());
orderVo.setPayTime(paymentAt);
orderVo.setWriteOffCode(storeOrder.getWriteOffCode());
orderVo.setStatus(storeOrder.getStatus());
orderVo.setPaymentId(paymentId);
orderVo.setPaymentType(paymentType);
orderVo.setOrderSkuVoIds(skuList);
redisUtils.setGoblinOrder(orderId, orderVo);
redisUtils.setOffCode(orderVo.getWriteOffCode(), orderVo.getMasterOrderCode());
// //删除未支付订单
// redisUtils.removeGoblinOrder(orderVo.getRandomKey() + "", orderId);
//mongo
mongoUtils.updateGoblinStoreOrderVo(orderId, orderVo);
//mysql
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(),
SqlMapping.gets(sqls, sqlDataOrder, sqlDataSku));
}
//加分
if (orderUtils.noZhengzaiOrder(uid)) {
orderUtils.doTask(uid, priceActual);
}
} else {
// 业务处理失败
log.info("处理失败");
}
return "RECV_ORD_ID_" + reqSeqId;
} catch (Exception e) {
log.info("异步回调开始,参数,request={},异常={}", request, e);
e.printStackTrace();
}
return "";
}
}
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