记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
b069c250
Commit
b069c250
authored
Mar 23, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
huifu 回调接口迁移
parent
987f84a3
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
282 additions
and
135 deletions
+282
-135
IGoblinOrderAppService.java
...uidnet/service/goblin/service/IGoblinOrderAppService.java
+1
-1
IGoblinOrderService.java
...liquidnet/service/goblin/service/IGoblinOrderService.java
+4
-0
GoblinStoreZhengzaiController.java
...vice/goblin/controller/GoblinStoreZhengzaiController.java
+6
-6
GoblinOrderAppServiceImpl.java
...ervice/goblin/service/impl/GoblinOrderAppServiceImpl.java
+129
-126
GoblinOrderController.java
...idnet/service/order/controller/GoblinOrderController.java
+8
-0
GoblinOrderServiceImpl.java
...et/service/order/service/impl/GoblinOrderServiceImpl.java
+134
-2
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/service/IGoblinOrderAppService.java
View file @
b069c250
...
@@ -24,7 +24,7 @@ public interface IGoblinOrderAppService {
...
@@ -24,7 +24,7 @@ public interface IGoblinOrderAppService {
ResponseDto
<
List
<
GoblinBackOrderVo
>>
refundDetails
(
String
orderId
);
ResponseDto
<
List
<
GoblinBackOrderVo
>>
refundDetails
(
String
orderId
);
String
huiFuSync
(
HttpServletRequest
request
);
//
String huiFuSync(HttpServletRequest request);
ResponseDto
<
List
<
GoblinMailVo
>>
getMail
(
String
orderId
,
String
mailId
);
ResponseDto
<
List
<
GoblinMailVo
>>
getMail
(
String
orderId
,
String
mailId
);
}
}
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/service/IGoblinOrderService.java
View file @
b069c250
...
@@ -8,6 +8,7 @@ import com.liquidnet.service.goblin.param.PayAgainParam;
...
@@ -8,6 +8,7 @@ import com.liquidnet.service.goblin.param.PayAgainParam;
import
com.liquidnet.service.goblin.param.RefundCallbackParam
;
import
com.liquidnet.service.goblin.param.RefundCallbackParam
;
import
com.liquidnet.service.goblin.param.SyncOrderParam
;
import
com.liquidnet.service.goblin.param.SyncOrderParam
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.List
;
public
interface
IGoblinOrderService
{
public
interface
IGoblinOrderService
{
...
@@ -24,4 +25,7 @@ public interface IGoblinOrderService {
...
@@ -24,4 +25,7 @@ public interface IGoblinOrderService {
ResponseDto
<
Integer
>
checkOrderResultMaterCode
(
String
materCode
);
ResponseDto
<
Integer
>
checkOrderResultMaterCode
(
String
materCode
);
String
huiFuSync
(
HttpServletRequest
request
);
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/GoblinStoreZhengzaiController.java
View file @
b069c250
...
@@ -79,10 +79,10 @@ public class GoblinStoreZhengzaiController {
...
@@ -79,10 +79,10 @@ public class GoblinStoreZhengzaiController {
return
goblinOrderAppService
.
orderDetails
(
orderId
,
null
);
return
goblinOrderAppService
.
orderDetails
(
orderId
,
null
);
}
}
@PostMapping
(
"paySuccess"
)
//
@PostMapping("paySuccess")
@ApiOperation
(
"汇付支付成功回调"
)
//
@ApiOperation("汇付支付成功回调")
@ResponseBody
//
@ResponseBody
public
String
refundDetails
(
HttpServletRequest
request
)
{
//
public String refundDetails(HttpServletRequest request) {
return
goblinOrderAppService
.
huiFuSync
(
request
);
//
return goblinOrderAppService.huiFuSync(request);
}
//
}
}
}
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinOrderAppServiceImpl.java
View file @
b069c250
...
@@ -484,133 +484,136 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
...
@@ -484,133 +484,136 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
return
ResponseDto
.
success
(
vos
);
return
ResponseDto
.
success
(
vos
);
}
}
@Override
// @Override
public
String
huiFuSync
(
HttpServletRequest
request
)
{
// public String huiFuSync(HttpServletRequest request) {
try
{
// try {
// 验签请参data
// // 验签请参data
String
responseData
=
request
.
getParameter
(
"resp_data"
);
// String responseData = request.getParameter("resp_data");
// 验签请参sign
// // 验签请参sign
String
sign
=
request
.
getParameter
(
"sign"
);
// String sign = request.getParameter("sign");
// 使用汇付公钥验签
// // 使用汇付公钥验签
// if (!RsaUtils.verify(responseData, PUBLIC_KEY, sign)) {
//// if (!RsaUtils.verify(responseData, PUBLIC_KEY, sign)) {
// // 验签失败处理
//// // 验签失败处理
// return "";
//// 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
);
// return "RECV_ORD_ID_" + reqSeqId;
String
subRespCode
=
dataObj
.
getString
(
"sub_resp_code"
);
// } catch (Exception e) {
String
reqSeqId
=
dataObj
.
getString
(
"req_seq_id"
);
// log.info("异步回调开始,参数,request={},异常={}", request, e);
String
orderMasterCode
=
dataObj
.
getString
(
"mer_ord_id"
);
// e.printStackTrace();
String
payCode
=
dataObj
.
getString
(
"mer_ord_id"
);
// }
String
paymentType
=
dataObj
.
getString
(
"trans_type"
);
// return "";
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
""
;
}
private
GoblinBackOrderLog
initBackLog
(
String
orderId
,
String
uid
,
LocalDateTime
now
)
{
private
GoblinBackOrderLog
initBackLog
(
String
orderId
,
String
uid
,
LocalDateTime
now
)
{
GoblinBackOrderLog
log
=
GoblinBackOrderLog
.
getNew
();
GoblinBackOrderLog
log
=
GoblinBackOrderLog
.
getNew
();
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/GoblinOrderController.java
View file @
b069c250
...
@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
@Slf4j
@Slf4j
...
@@ -53,6 +54,13 @@ public class GoblinOrderController {
...
@@ -53,6 +54,13 @@ public class GoblinOrderController {
return
goblinAppOrderService
.
refundSyncOrder
(
refundCallbackParam
);
return
goblinAppOrderService
.
refundSyncOrder
(
refundCallbackParam
);
}
}
@PostMapping
(
"paySuccess"
)
@ApiOperation
(
"汇付支付成功回调"
)
@ResponseBody
public
String
refundDetails
(
HttpServletRequest
request
)
{
return
goblinAppOrderService
.
huiFuSync
(
request
);
}
@PostMapping
(
"payAgain"
)
@PostMapping
(
"payAgain"
)
@ApiOperation
(
"再次支付"
)
@ApiOperation
(
"再次支付"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinOrderServiceImpl.java
View file @
b069c250
package
com
.
liquidnet
.
service
.
order
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
order
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ErrorMapping
;
...
@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
...
@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
javax.servlet.http.HttpServletRequest
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
...
@@ -37,8 +39,7 @@ import java.util.LinkedList;
...
@@ -37,8 +39,7 @@ import java.util.LinkedList;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.
DTF_YMD_HMS
;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.*;
import
static
com
.
liquidnet
.
commons
.
lang
.
util
.
DateUtil
.
getNowTime
;
@Service
@Service
@Slf4j
@Slf4j
...
@@ -1033,4 +1034,135 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
...
@@ -1033,4 +1034,135 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
}
}
return
"success"
;
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
""
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment