Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
f33e600e
Commit
f33e600e
authored
Nov 28, 2020
by
zhiheng.zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
退款单号修改自定义生成
parent
934ca1b4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
138 additions
and
3 deletions
+138
-3
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+5
-2
order-management/src/main/java/cn/freemud/management/adapter/PaymentSdkAdapter.java
+4
-1
order-management/src/main/java/cn/freemud/management/util/GlobalSnowflakeIdWorker.java
+129
-0
No files found.
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
f33e600e
...
...
@@ -48,6 +48,7 @@ import cn.freemud.entities.vo.*;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.management.thirdparty.MulitiPaymentClient
;
import
cn.freemud.management.util.GlobalSnowflakeIdWorker
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.service.thirdparty.*
;
...
...
@@ -126,6 +127,7 @@ import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.gson.Gson
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
...
...
@@ -1684,7 +1686,8 @@ public class OrderServiceImpl implements Orderservice {
* @param orderRefundVo
* @param orderBean
*/
private
BaseResponse
partnerNoTakeOrder
(
OrderRefundVo
orderRefundVo
,
OrderBean
orderBean
,
String
fatherOrderId
,
AfterSalesType
afterSalesType
,
Boolean
isRefundDeliveryFee
)
{
@SneakyThrows
private
BaseResponse
partnerNoTakeOrder
(
OrderRefundVo
orderRefundVo
,
OrderBean
orderBean
,
String
fatherOrderId
,
AfterSalesType
afterSalesType
,
Boolean
isRefundDeliveryFee
)
{
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
OrderRefundResponse
>
response
=
null
;
Long
refundId
=
System
.
currentTimeMillis
();
String
partnerId
=
orderBean
.
getCompanyId
();
...
...
@@ -1692,7 +1695,7 @@ public class OrderServiceImpl implements Orderservice {
if
(
orderBean
.
getAmount
()
!=
0
)
{
if
(
null
!=
orderBean
.
getOrderPayItem
()
&&
orderBean
.
getOrderPayItem
().
size
()>
0
){
//调用支付退款
MultiOrderRefundRequest
multiOrderRefundRequest
=
orderAdapter
.
getMultiOrderPayRefundRequest
(
orderBean
,
refundId
);
MultiOrderRefundRequest
multiOrderRefundRequest
=
orderAdapter
.
getMultiOrderPayRefundRequest
(
orderBean
,
GlobalSnowflakeIdWorker
.
generateId
()
);
MultiOrderRefundResponse
multiOrderRefundResponse
=
mulitiPaymentClient
.
paymentApplicationRefund
(
multiOrderRefundRequest
,
orderBean
.
getCompanyId
());
if
(
multiOrderRefundResponse
==
null
||
multiOrderRefundResponse
.
getData
()
==
null
||
!
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
ORDER_PAY_RESPONSE_SUCCESS
.
equals
(
multiOrderRefundResponse
.
getCode
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
MULTIORDER__ERRORREFUND
.
getCode
(),
"multiOrderRefund_failed"
);
...
...
order-management/src/main/java/cn/freemud/management/adapter/PaymentSdkAdapter.java
View file @
f33e600e
package
cn
.
freemud
.
management
.
adapter
;
import
cn.freemud.management.util.GlobalSnowflakeIdWorker
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.base.SDKCommonBaseContextWare
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
lombok.SneakyThrows
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
...
...
@@ -43,6 +45,7 @@ public class PaymentSdkAdapter {
return
refundRequestDTO
;
}
@SneakyThrows
public
MultiOrderRefundRequest
getMultiOrderPayRefundRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
BigDecimal
refundAmount
)
{
MultiOrderRefundRequest
multiQueryRequest
=
new
MultiOrderRefundRequest
();
multiQueryRequest
.
setStationId
(
"1"
);
...
...
@@ -50,7 +53,7 @@ public class PaymentSdkAdapter {
multiQueryRequest
.
setStoreId
(
orderBean
.
getShopId
());
multiQueryRequest
.
setFmId
(
""
);
multiQueryRequest
.
setRefundAmount
(
Long
.
valueOf
(
String
.
valueOf
(
refundAmount
)));
multiQueryRequest
.
setRefundTradeNo
(
getRefundSerialNo
().
toString
(
));
multiQueryRequest
.
setRefundTradeNo
(
String
.
valueOf
(
GlobalSnowflakeIdWorker
.
generateId
()
));
multiQueryRequest
.
setStoreId
(
orderBean
.
getShopId
());
multiQueryRequest
.
setNotifyUrl
(
refundNotifyCallback
);
multiQueryRequest
.
setVer
(
"V1"
);
...
...
order-management/src/main/java/cn/freemud/management/util/GlobalSnowflakeIdWorker.java
0 → 100644
View file @
f33e600e
package
cn
.
freemud
.
management
.
util
;
import
com.thoughtworks.xstream.core.BaseException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.concurrent.atomic.AtomicInteger
;
@Component
@Slf4j
public
class
GlobalSnowflakeIdWorker
{
/**
* 起始时间 2015/1/1 0:0:0
*/
private
static
long
TIMESTAMP_START
=
1420041600000L
;
/**
* 时间戳向左位移位数
*/
private
static
int
timestampShift
;
/**
* 机器号
*/
private
static
long
machineNo
;
/**
* 机器Id向左位移位数
*/
private
static
int
machineNoShift
;
/**
* 每毫秒能产生的最大序列号
*/
private
static
int
maxSequence
;
/**
* 当前自增序列
*/
private
static
AtomicInteger
sequence
;
/**
* 初始化方法
*
* @param machineId 机器ID
*/
public
static
synchronized
void
init
(
int
machineId
)
{
timestampShift
=
20
;
machineNoShift
=
8
;
machineNo
=
(
long
)
(
machineId
<<
machineNoShift
);
maxSequence
=
128
;
//7位序列号
sequence
=
new
AtomicInteger
(
0
);
}
public
static
long
getDatetimeId
(
Date
time
)
{
long
timestamp
=
time
.
getTime
()
-
TIMESTAMP_START
;
timestamp
<<=
timestampShift
;
return
timestamp
+
machineNo
;
}
/**
* 获取Id产生的时间
*
* @param id
* @return ID产生时间
*/
public
static
Date
getDatetime
(
Long
id
)
{
id
=
id
>>
timestampShift
;
id
=
id
+
TIMESTAMP_START
;
return
new
Date
(
id
);
}
/**
* 专门提代给shardingjdbc使用
* @param id
* @return
*/
public
static
Date
getDatetimeByShardingJdbc
(
Long
id
)
{
id
=
id
>>
20
;
id
=
id
+
TIMESTAMP_START
;
return
new
Date
(
id
);
}
/**
* 获取时间戳
* @param id
* @return
*/
public
static
Long
getTimeStamp
(
Long
id
)
{
id
=
id
>>
timestampShift
;
id
=
id
+
TIMESTAMP_START
;
return
id
;
}
/**
* 生成ID
* 此处实现存在部分问题,但影响甚微。运行的逻辑是sequence用完之后会睡眠1ms,然后开始
*
* @return id
*/
public
static
long
generateId
()
throws
Exception
{
while
(
true
)
{
int
sec
=
sequence
.
incrementAndGet
();
try
{
if
(
sec
==
maxSequence
)
{
Thread
.
sleep
(
1L
);
sequence
.
set
(
0
);
}
else
{
if
(
sec
<=
maxSequence
)
{
long
timestamp
=
System
.
currentTimeMillis
()
-
TIMESTAMP_START
;
timestamp
<<=
timestampShift
;
return
timestamp
+
machineNo
+
(
long
)
sec
;
}
Thread
.
sleep
(
1L
);
}
}
catch
(
InterruptedException
e
){
log
.
error
(
"!!!!Snowflake InterruptedException"
,
e
);
Thread
.
currentThread
().
interrupt
();
throw
new
Exception
(
e
.
getMessage
());
}
}
}
}
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