记得上下班打卡 | 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
5422f5b1
Commit
5422f5b1
authored
Mar 14, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改消费 退券逻辑
parent
c8bf5823
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
5 deletions
+91
-5
AbstractOrderCloseReceiver.java
...e/consumer/kylin/receiver/AbstractOrderCloseReceiver.java
+91
-5
No files found.
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/AbstractOrderCloseReceiver.java
View file @
5422f5b1
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.goblin.constant.GoblinRedisConst
;
import
com.liquidnet.service.goblin.constant.GoblinStatusConst
;
import
com.liquidnet.service.goblin.dto.vo.GoblinOrderSkuVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinStoreOrderVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo
;
import
com.liquidnet.service.goblin.param.BackCouponParam
;
import
com.mongodb.BasicDBObject
;
import
com.mongodb.client.result.UpdateResult
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
...
...
@@ -21,12 +29,11 @@ import org.springframework.data.redis.connection.stream.MapRecord;
import
org.springframework.data.redis.connection.stream.StreamRecords
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.stream.StreamListener
;
import
org.springframework.util.MultiValueMap
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.LinkedList
;
import
java.util.Map
;
import
java.util.*
;
@Slf4j
public
abstract
class
AbstractOrderCloseReceiver
implements
StreamListener
<
String
,
MapRecord
<
String
,
String
,
String
>>
{
...
...
@@ -38,6 +45,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
private
MongoTemplate
mongoTemplate
;
@Autowired
private
MongoConverter
mongoConverter
;
@Value
(
"${liquidnet.service.candy.url}"
)
private
String
candyUrl
;
@Override
public
void
onMessage
(
MapRecord
<
String
,
String
,
String
>
message
)
{
...
...
@@ -119,6 +128,13 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
orderVo
.
setStatus
(
GoblinStatusConst
.
Status
.
ORDER_STATUS_5
.
getValue
());
updateGoblinStoreOrderVo
(
orderVo
.
getOrderId
(),
orderVo
);
setGoblinOrder
(
orderVo
.
getOrderId
(),
orderVo
);
//店铺券退券
BackCouponParam
backCouponParam
=
BackCouponParam
.
getNew
();
backCouponParam
.
setuCouponIds
(
orderVo
.
getStoreCouponId
());
backCouponParam
.
setUid
(
orderVo
.
getUserId
());
backStoreCoupon
(
backCouponParam
);
//平台券
backCoupon
(
orderVo
.
getUcouponId
(),
orderVo
.
getUserId
());
//mysql
sqlDataOrder
.
add
(
new
Object
[]{
orderVo
.
getStatus
(),
now
,
now
,
"超时关闭"
,
orderVo
.
getOrderId
(),
now
,
now
...
...
@@ -129,8 +145,8 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"库存回滚异常valueData={}"
,
valueData
,
e
);
}
catch
(
Exception
e
)
{
log
.
error
(
"库存回滚异常valueData={}"
,
valueData
,
e
);
}
return
true
;
}
...
...
@@ -214,11 +230,81 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
stringRedisTemplate
.
opsForStream
().
add
(
StreamRecords
.
mapBacked
(
map
).
withStreamKey
(
streamKey
));
}
public
Boolean
backStoreCoupon
(
BackCouponParam
params
)
{
try
{
List
<
GoblinUserCouponVo
>
voList
=
getUserCouponVos
(
params
.
getUid
());
for
(
GoblinUserCouponVo
vo
:
voList
)
{
if
(
vo
.
getUcouponId
().
equals
(
params
.
getuCouponIds
()))
{
if
(
LocalDateTime
.
now
().
isBefore
(
vo
.
getDuedAt
()))
{
vo
.
setState
(
1
);
vo
.
setUsedFor
(
""
);
setUserCouponVos
(
params
.
getUid
(),
voList
);
changeCouponVos
(
vo
.
getUcouponId
(),
vo
);
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_COUPON
.
getKey
(),
SqlMapping
.
get
(
"goblin_user_coupon.updateState"
,
vo
.
getState
(),
vo
.
getUsedFor
(),
LocalDateTime
.
now
(),
vo
.
getUcouponId
()));
}
break
;
}
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
public
void
backCoupon
(
String
uCouponId
,
String
uid
)
{
try
{
com
.
liquidnet
.
service
.
candy
.
param
.
BackCouponParam
param
=
com
.
liquidnet
.
service
.
candy
.
param
.
BackCouponParam
.
getNew
();
param
.
setuCouponIds
(
uCouponId
);
param
.
setUid
(
uid
);
MultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Authorization"
,
"Bearer "
+
CurrentUtil
.
getToken
());
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
ArrayList
<
com
.
liquidnet
.
service
.
candy
.
param
.
BackCouponParam
>
params
=
new
ArrayList
();
params
.
add
(
param
);
String
jsonString
=
JSON
.
toJSONString
(
params
);
String
returnData
=
HttpUtil
.
postRaw
(
candyUrl
+
"/candy-coupon/useBack"
,
jsonString
,
header
);
}
catch
(
Exception
e
)
{
log
.
error
(
"回退券ERROR:{}"
,
e
);
}
}
public
List
<
GoblinUserCouponVo
>
getUserCouponVos
(
String
uid
)
{
String
rk
=
GoblinRedisConst
.
USER_COUPON
.
concat
(
uid
);
String
valStr
=
(
String
)
redisUtil
.
get
(
rk
);
List
<
GoblinUserCouponVo
>
vos
;
if
(
org
.
springframework
.
util
.
StringUtils
.
isEmpty
(
valStr
))
{
return
getGoblinUserCouponVo
();
}
else
{
vos
=
JsonUtils
.
fromJson
(
valStr
,
new
TypeReference
<
List
<
GoblinUserCouponVo
>>()
{
});
}
return
vos
;
}
public
Boolean
changeCouponVos
(
String
ucouponId
,
GoblinUserCouponVo
vo
)
{
return
mongoTemplate
.
getCollection
(
GoblinUserCouponVo
.
class
.
getSimpleName
())
.
updateOne
(
Query
.
query
(
Criteria
.
where
(
"ucouponId"
).
is
(
ucouponId
)).
getQueryObject
(),
cloneBasicDBObject
().
append
(
"$set"
,
mongoConverter
.
convertToMongoType
(
vo
))
).
getModifiedCount
()
>
0
;
}
public
boolean
setUserCouponVos
(
String
uid
,
List
<
GoblinUserCouponVo
>
vos
)
{
return
redisUtil
.
set
(
GoblinRedisConst
.
USER_COUPON
.
concat
(
uid
),
JsonUtils
.
toJson
(
vos
));
}
private
static
final
BasicDBObject
basicDBObject
=
new
BasicDBObject
();
private
static
final
ArrayList
<
GoblinUserCouponVo
>
goblinUserCouponVo
=
new
ArrayList
<>();
public
static
BasicDBObject
cloneBasicDBObject
()
{
return
(
BasicDBObject
)
basicDBObject
.
clone
();
}
public
static
ArrayList
<
GoblinUserCouponVo
>
getGoblinUserCouponVo
()
{
return
(
ArrayList
<
GoblinUserCouponVo
>)
goblinUserCouponVo
.
clone
();
}
}
\ No newline at end of file
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