记得上下班打卡 | 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
e1ce19ad
Commit
e1ce19ad
authored
Aug 23, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev_member_voucher_refund' into dev_member_voucher_refund
parents
22605f86
efc7b6f3
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
469 additions
and
35 deletions
+469
-35
CandyCouponRulesVo.java
...va/com/liquidnet/service/candy/vo/CandyCouponRulesVo.java
+0
-0
CandyCouponVo.java
...in/java/com/liquidnet/service/candy/vo/CandyCouponVo.java
+0
-0
CandyMyCouponListVo.java
...a/com/liquidnet/service/candy/vo/CandyMyCouponListVo.java
+0
-0
CandyUseResultVo.java
...java/com/liquidnet/service/candy/vo/CandyUseResultVo.java
+0
-0
InnerReturnVo.java
...liquidnet/service/kylin/dto/vo/returns/InnerReturnVo.java
+24
-0
MQConst.java
...ain/java/com/liquidnet/service/base/constant/MQConst.java
+29
-0
application-dev.yml
liquidnet-bus-config/liquidnet-config/application-dev.yml
+2
-0
application-test.yml
liquidnet-bus-config/liquidnet-config/application-test.yml
+2
-0
liquidnet-service-order-dev.yml
...s-config/liquidnet-config/liquidnet-service-order-dev.yml
+2
-0
liquidnet-service-order-test.yml
...-config/liquidnet-config/liquidnet-service-order-test.yml
+2
-0
redis_queue_create.txt
.../liquidnet-service-candy-impl/docu/redis_queue_create.txt
+12
-0
pom.xml
...uidnet-service-candy/liquidnet-service-candy-impl/pom.xml
+2
-0
CandyCouponController.java
...idnet/service/candy/controller/CandyCouponController.java
+3
-2
ICandyCouponService.java
.../liquidnet/service/candy/service/ICandyCouponService.java
+1
-1
CandyCouponServiceImpl.java
...et/service/candy/service/impl/CandyCouponServiceImpl.java
+27
-16
sqlmap.properties
...t-service-candy-impl/src/main/resources/sqlmap.properties
+3
-5
ConsumerCandyCouponBackRedisStreamConfig.java
...ylin/config/ConsumerCandyCouponBackRedisStreamConfig.java
+78
-0
ConsumerCandyCouponReceiveRedisStreamConfig.java
...n/config/ConsumerCandyCouponReceiveRedisStreamConfig.java
+78
-0
ConsumerCandyCouponUseRedisStreamConfig.java
...kylin/config/ConsumerCandyCouponUseRedisStreamConfig.java
+78
-0
ConsumerCandyCouponBackRdsReceiver.java
...er/kylin/receiver/ConsumerCandyCouponBackRdsReceiver.java
+17
-0
ConsumerCandyCouponReceiveRdsReceiver.java
...kylin/receiver/ConsumerCandyCouponReceiveRdsReceiver.java
+17
-0
ConsumerCandyCouponUseRdsReceiver.java
...mer/kylin/receiver/ConsumerCandyCouponUseRdsReceiver.java
+17
-0
pom.xml
...uidnet-service-order/liquidnet-service-order-impl/pom.xml
+5
-0
KylinOrderTicketsServiceImpl.java
...vice/order/service/impl/KylinOrderTicketsServiceImpl.java
+16
-7
OrderUtils.java
...in/java/com/liquidnet/service/order/utils/OrderUtils.java
+54
-4
No files found.
liquidnet-bus-
service/liquidnet-service-candy/liquidnet-service-candy-impl
/src/main/java/com/liquidnet/service/candy/vo/CandyCouponRulesVo.java
→
liquidnet-bus-
api/liquidnet-service-candy-api
/src/main/java/com/liquidnet/service/candy/vo/CandyCouponRulesVo.java
View file @
e1ce19ad
File moved
liquidnet-bus-
service/liquidnet-service-candy/liquidnet-service-candy-impl
/src/main/java/com/liquidnet/service/candy/vo/CandyCouponVo.java
→
liquidnet-bus-
api/liquidnet-service-candy-api
/src/main/java/com/liquidnet/service/candy/vo/CandyCouponVo.java
View file @
e1ce19ad
File moved
liquidnet-bus-
service/liquidnet-service-candy/liquidnet-service-candy-impl
/src/main/java/com/liquidnet/service/candy/vo/CandyMyCouponListVo.java
→
liquidnet-bus-
api/liquidnet-service-candy-api
/src/main/java/com/liquidnet/service/candy/vo/CandyMyCouponListVo.java
View file @
e1ce19ad
File moved
liquidnet-bus-
service/liquidnet-service-candy/liquidnet-service-candy-impl
/src/main/java/com/liquidnet/service/candy/vo/CandyUseResultVo.java
→
liquidnet-bus-
api/liquidnet-service-candy-api
/src/main/java/com/liquidnet/service/candy/vo/CandyUseResultVo.java
View file @
e1ce19ad
File moved
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/InnerReturnVo.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
.
returns
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
InnerReturnVo
<
T
>
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
1541552316829686035L
;
private
String
code
;
private
String
message
;
private
T
data
;
private
static
final
InnerReturnVo
obj
=
new
InnerReturnVo
();
public
static
InnerReturnVo
getNew
()
{
try
{
return
(
InnerReturnVo
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
InnerReturnVo
();
}
}
}
liquidnet-bus-common/liquidnet-common-service-base/src/main/java/com/liquidnet/service/base/constant/MQConst.java
View file @
e1ce19ad
...
...
@@ -101,4 +101,33 @@ public class MQConst {
return
desc
;
}
}
public
enum
CandyQueue
{
COUPON_USE
(
"candy:stream:rk.coupon.use"
,
"group.coupon.use"
,
"券-使用"
),
COUPON_BACK
(
"candy:stream:rk.coupon.back"
,
"group.coupon.back"
,
"券-回退"
),
COUPON_RECEIVE
(
"candy:stream:rk.coupon.receive"
,
"group.coupon.receive"
,
"券-领取"
),
;
private
final
String
key
;
private
final
String
group
;
private
final
String
desc
;
CandyQueue
(
String
key
,
String
group
,
String
desc
)
{
this
.
key
=
key
;
this
.
group
=
group
;
this
.
desc
=
desc
;
}
public
String
getKey
()
{
return
key
;
}
public
String
getGroup
()
{
return
group
;
}
public
String
getDesc
()
{
return
desc
;
}
}
}
liquidnet-bus-config/liquidnet-config/application-dev.yml
View file @
e1ce19ad
...
...
@@ -59,6 +59,8 @@ liquidnet:
order
:
adam
:
url
:
http://devadam.zhengzai.tv/adam
candy
:
url
:
http://devcandy.zhengzai.tv/candy
url-pay
:
pay
:
http://devdragon.zhengzai.tv/dragon/pay/dragonPay
check
:
http://devdragon.zhengzai.tv/dragon/pay/checkOrder
...
...
liquidnet-bus-config/liquidnet-config/application-test.yml
View file @
e1ce19ad
...
...
@@ -59,6 +59,8 @@ liquidnet:
order
:
adam
:
url
:
http://testadam.zhengzai.tv/adam
candy
:
url
:
http://testcandy.zhengzai.tv/candy
url-pay
:
pay
:
http://testdragon.zhengzai.tv/dragon/pay/dragonPay
check
:
http://testdragon.zhengzai.tv/dragon/pay/checkOrder
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-order-dev.yml
View file @
e1ce19ad
...
...
@@ -26,3 +26,5 @@ liquidnet:
localUrl
:
${liquidnet.service.order.url-pay.localUrl}
adam
:
url:${liquidnet.service.order.adam.url}
candy
:
url:${liquidnet.service.order.candy.url}
liquidnet-bus-config/liquidnet-config/liquidnet-service-order-test.yml
View file @
e1ce19ad
...
...
@@ -26,3 +26,5 @@ liquidnet:
localUrl
:
${liquidnet.service.order.url-pay.localUrl}
adam
:
url:${liquidnet.service.order.adam.url}
candy
:
url:${liquidnet.service.order.candy.url}
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/docu/redis_queue_create.txt
0 → 100644
View file @
e1ce19ad
-- 使用 --
XADD candy:stream:rk.coupon.use * 0 0
XGROUP CREATE candy:stream:rk.coupon.use group.coupon.use 0
-- 回退 --
XADD candy:stream:rk.coupon.back * 0 0
XGROUP CREATE candy:stream:rk.coupon.back group.coupon.back 0
-- 领取 --
XADD candy:stream:rk.coupon.receive * 0 0
XGROUP CREATE candy:stream:rk.coupon.receive group.coupon.receive 0
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/pom.xml
View file @
e1ce19ad
...
...
@@ -8,6 +8,7 @@
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<packaging>
pom
</packaging>
<artifactId>
liquidnet-service-candy-impl
</artifactId>
...
...
@@ -44,4 +45,5 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/src/main/java/com/liquidnet/service/candy/controller/CandyCouponController.java
View file @
e1ce19ad
...
...
@@ -126,9 +126,10 @@ public class CandyCouponController {
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"uCouponId"
,
value
=
"券唯一表示id"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"content"
,
value
=
"消费内容"
,
required
=
true
),
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"String"
,
name
=
"totalPrice"
,
value
=
"消费价格"
,
required
=
true
),
})
public
ResponseDto
<
CandyUseResultVo
>
useCoupon
(
@RequestParam
(
"uCouponId"
)
String
uCouponId
,
@RequestParam
(
"content"
)
String
content
)
{
CandyUseResultVo
result
=
candyCouponService
.
useCoupon
(
uCouponId
,
content
);
public
ResponseDto
<
CandyUseResultVo
>
useCoupon
(
@RequestParam
(
"uCouponId"
)
String
uCouponId
,
@RequestParam
(
"content"
)
String
content
,
@RequestParam
(
"totalPrice"
)
String
totalPrice
)
{
CandyUseResultVo
result
=
candyCouponService
.
useCoupon
(
uCouponId
,
content
,
totalPrice
);
if
(
result
==
null
)
{
return
ResponseDto
.
failure
();
}
...
...
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/src/main/java/com/liquidnet/service/candy/service/ICandyCouponService.java
View file @
e1ce19ad
...
...
@@ -36,7 +36,7 @@ public interface ICandyCouponService extends IService<CandyCoupon> {
Integer
stateCoupon
(
String
uCouponId
);
CandyUseResultVo
useCoupon
(
String
uCouponId
,
String
content
);
CandyUseResultVo
useCoupon
(
String
uCouponId
,
String
content
,
String
totalPrice
);
Boolean
useBackCoupon
(
String
uCouponId
);
...
...
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/src/main/java/com/liquidnet/service/candy/service/impl/CandyCouponServiceImpl.java
View file @
e1ce19ad
...
...
@@ -184,20 +184,27 @@ public class CandyCouponServiceImpl extends ServiceImpl<CandyCouponMapper, Candy
}
@Override
public
CandyUseResultVo
useCoupon
(
String
uCouponId
,
String
content
)
{
public
CandyUseResultVo
useCoupon
(
String
uCouponId
,
String
content
,
String
totalPrice
)
{
String
uid
=
CurrentUtil
.
getCurrentUid
();
CandyUseResultVo
vo
=
CandyUseResultVo
.
getNew
();
List
<
CandyUserCouponBasicDto
>
dtoList
=
CouponBaseUtil
.
useCoupon
(
redisDataUtils
.
getCouponByUid
(
uid
),
uCouponId
,
content
);
List
<
CandyUserCouponBasicDto
>
dtoList
=
CouponBaseUtil
.
useCoupon
(
redisDataUtils
.
getCouponByUid
(
uid
),
uCouponId
,
content
);
if
(
dtoList
==
null
)
{
return
null
;
vo
.
setCouType
(-
1
);
vo
.
setValue
(
BigDecimal
.
ZERO
);
}
else
{
CandyUserCouponBasicDto
dto
=
CouponBaseUtil
.
getSingleDtoByUCouponId
(
redisDataUtils
.
getCouponByUid
(
uid
),
uCouponId
);
vo
.
setCouType
(
dto
.
getCouType
());
switch
(
dto
.
getCouType
())
{
//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券]
case
1
:
vo
.
setValue
(
dto
.
getValFace
());
break
;
case
2
:
if
(
dto
.
getValOver
().
compareTo
(
new
BigDecimal
(
totalPrice
))>=
0
)
{
vo
.
setValue
(
dto
.
getValMinus
());
}
else
{
vo
.
setCouType
(-
1
);
vo
.
setValue
(
BigDecimal
.
ZERO
);
}
break
;
case
3
:
vo
.
setValue
(
BigDecimal
.
valueOf
(-
1
));
...
...
@@ -209,15 +216,17 @@ public class CandyCouponServiceImpl extends ServiceImpl<CandyCouponMapper, Candy
vo
.
setValue
(
BigDecimal
.
valueOf
(
0
));
break
;
}
vo
.
setCouType
(
dto
.
getCouType
());
if
(
vo
.
getCouType
()!=-
1
)
{
redisDataUtils
.
setCouponByUid
(
uid
,
dtoList
);
//入库
queueUtils
.
sendMsgByRedis
(
MQConst
.
AdamQueue
.
SQL_UCENTER
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.use"
,
1
MQConst
.
CandyQueue
.
COUPON_USE
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.use"
,
uid
,
uCouponId
)
);
}
}
return
vo
;
}
...
...
@@ -231,8 +240,9 @@ public class CandyCouponServiceImpl extends ServiceImpl<CandyCouponMapper, Candy
redisDataUtils
.
setCouponByUid
(
uid
,
dtoList
);
//入库
queueUtils
.
sendMsgByRedis
(
MQConst
.
AdamQueue
.
SQL_UCENTER
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.back"
,
1
MQConst
.
CandyQueue
.
COUPON_BACK
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.back"
,
uid
,
uCouponId
)
);
}
...
...
@@ -254,8 +264,9 @@ public class CandyCouponServiceImpl extends ServiceImpl<CandyCouponMapper, Candy
redisDataUtils
.
addCouponByUid
(
uid
,
baseDto
);
//入库
queueUtils
.
sendMsgByRedis
(
MQConst
.
AdamQueue
.
SQL_UCENTER
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.receive"
,
1
MQConst
.
CandyQueue
.
COUPON_RECEIVE
.
getKey
(),
SqlMapping
.
get
(
"candy_coupon.receive"
,
uCouponId
,
uid
,
1
,
infoDto
.
getCouponId
(),
ccode
,
LocalDateTime
.
now
()
)
);
}
else
{
...
...
liquidnet-bus-service/liquidnet-service-candy/liquidnet-service-candy-impl/src/main/resources/sqlmap.properties
View file @
e1ce19ad
# -- 使用券 --
candy_coupon.use
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
candy_coupon.use
=
UPDATE candy_user_coupon SET state = 3 WHERE uid = ? AND ucoupon_id = ?
# -- 回退券 --
candy_coupon.back
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
candy_coupon.back
=
UPDATE candy_user_coupon SET state = 1 WHERE uid = ? AND ucoupon_id = ?
# -- 领取券 --
candy_coupon.receive
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
\ No newline at end of file
candy_coupon.receive
=
INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , ccdoe , bind_at ) VALUE ( ? , ? , ? , ? , ? , ? )
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponBackRedisStreamConfig.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
;
@Configuration
public
class
ConsumerCandyCouponBackRedisStreamConfig
{
@Autowired
ConsumerCandyCouponBackRdsReceiver
consumerCandyCouponBackRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponBack
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
SWEET_USER_INSERT_DRAW
.
getGroup
(),
SWEET_USER_INSERT_DRAW
.
name
()
+
t
),
StreamOffset
.
create
(
SWEET_USER_INSERT_DRAW
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponBackRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponBack
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponBack2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponBack3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponReceiveRedisStreamConfig.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponReceiveRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
;
@Configuration
public
class
ConsumerCandyCouponReceiveRedisStreamConfig
{
@Autowired
ConsumerCandyCouponReceiveRdsReceiver
consumerCandyCouponReceiveRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponReceive
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
SWEET_USER_INSERT_DRAW
.
getGroup
(),
SWEET_USER_INSERT_DRAW
.
name
()
+
t
),
StreamOffset
.
create
(
SWEET_USER_INSERT_DRAW
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponReceiveRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponReceive
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponReceive2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponBack3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponUseRedisStreamConfig.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetUserRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
;
@Configuration
public
class
ConsumerCandyCouponUseRedisStreamConfig
{
@Autowired
ConsumerCandyCouponUseRdsReceiver
consumerCandyCouponUseRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponUse
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
SWEET_USER_INSERT_DRAW
.
getGroup
(),
SWEET_USER_INSERT_DRAW
.
name
()
+
t
),
StreamOffset
.
create
(
SWEET_USER_INSERT_DRAW
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponUseRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponUse
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponUse2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponUse3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponBackRdsReceiver.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponBackRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_BACK
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_BACK
.
getGroup
();
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponReceiveRdsReceiver.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponReceiveRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_RECEIVE
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_RECEIVE
.
getGroup
();
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponUseRdsReceiver.java
0 → 100644
View file @
e1ce19ad
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponUseRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_USE
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_USE
.
getGroup
();
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/pom.xml
View file @
e1ce19ad
...
...
@@ -36,6 +36,11 @@
<artifactId>
liquidnet-service-adam-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-service-candy-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-common-sms
</artifactId>
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/KylinOrderTicketsServiceImpl.java
View file @
e1ce19ad
...
...
@@ -275,7 +275,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
}
private
ResponseDto
<
PayInnerResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
,
List
<
AdamEntersVo
>
entersVoList
,
Integer
isStudent
)
{
private
ResponseDto
<
PayInnerResultVo
>
order
(
PayOrderParam
payOrderParam
,
String
uid
,
boolean
isMember
,
int
isTrueName
,
KylinPerformanceVo
performanceData
,
KylinTicketVo
ticketData
,
List
<
AdamEntersVo
>
entersVoList
,
Integer
isStudent
)
throws
Exception
{
String
time1
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseStart
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
time2
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseEnd
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
useTime
=
ticketData
.
getType
()
==
2
?
time1
+
"~"
+
time2
:
time2
;
String
content
=
performanceData
.
getTitle
()
+
"-"
+
ticketData
.
getTitle
()
+
"-"
+
useTime
;
LinkedList
<
String
>
sqls
=
ObjectUtil
.
cloneLinkedListStr
();
String
headerCliSource
=
CurrentUtil
.
getHeaderCliSource
(),
headerCliVersion
=
CurrentUtil
.
getHeaderCliVersion
();
String
source
=
headerCliSource
==
null
?
""
:
headerCliSource
;
...
...
@@ -298,8 +303,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
orderTickets
.
setNumber
(
payOrderParam
.
getNumber
());
orderTickets
.
setPrice
(
ticketData
.
getPrice
());
orderTickets
.
setPriceMember
(
ticketData
.
getMemberPrice
());
//TODO 券的使用逻辑
orderTickets
.
setPriceVoucher
(
BigDecimal
.
valueOf
(
0.0
));
if
(
payOrderParam
.
getVoucherType
()
!=
null
)
{
orderTickets
.
setCouponType
(
payOrderParam
.
getVoucherType
().
equalsIgnoreCase
(
"exchange"
)
?
"exchange"
:
"no"
);
}
else
{
...
...
@@ -311,6 +315,14 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
else
{
orderTickets
.
setPriceTotal
(
ticketData
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
payOrderParam
.
getNumber
())).
add
(
payOrderParam
.
getIsExpress
()
==
1
?
ticketData
.
getPriceExpress
()
:
BigDecimal
.
valueOf
(
0
)));
}
//券的使用逻辑
BigDecimal
priceVoucher
=
orderUtils
.
useCoupon
(
payOrderParam
.
getVoucherCode
(),
content
,
orderTickets
.
getPriceTotal
());
if
(
priceVoucher
.
compareTo
(
BigDecimal
.
valueOf
(-
1
))==
0
){
throw
new
Exception
(
"券不可用"
);
}
orderTickets
.
setPriceVoucher
(
priceVoucher
);
orderTickets
.
setPriceActual
(
orderTickets
.
getPriceTotal
().
subtract
(
orderTickets
.
getPriceVoucher
()));
orderTickets
.
setPriceExpress
(
payOrderParam
.
getIsExpress
()
==
1
?
ticketData
.
getPriceExpress
()
:
BigDecimal
.
valueOf
(
0
));
orderTickets
.
setPriceRefund
(
BigDecimal
.
valueOf
(
0.0
));
...
...
@@ -462,14 +474,11 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
if
(
orderTickets
.
getPriceActual
().
compareTo
(
BigDecimal
.
valueOf
(
0
))
>
0
)
{
// 调用支付
String
time1
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseStart
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
time2
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
ticketData
.
getUseEnd
()),
DateUtil
.
Formatter
.
MM_dd_zh
);
String
useTime
=
ticketData
.
getType
()
==
2
?
time1
+
"~"
+
time2
:
time2
;
LinkedMultiValueMap
<
String
,
String
>
httpData
=
ObjectUtil
.
cloneLinkedMultiValueMapStringAndString
();
httpData
.
add
(
"type"
,
"TICKET"
);
httpData
.
add
(
"price"
,
orderTickets
.
getPriceActual
().
toString
());
httpData
.
add
(
"name"
,
useTime
+
ticketData
.
getTitle
()
+
"-"
+
performanceData
.
getTitle
());
httpData
.
add
(
"detail"
,
performanceData
.
getTitle
()
+
"-"
+
ticketData
.
getTitle
()
+
"-"
+
useTime
);
httpData
.
add
(
"detail"
,
content
);
httpData
.
add
(
"orderCode"
,
orderTickets
.
getOrderCode
());
httpData
.
add
(
"clientIp"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notifyUrl"
,
synUrl
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/OrderUtils.java
View file @
e1ce19ad
...
...
@@ -2,21 +2,27 @@ package com.liquidnet.service.order.utils;
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.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.vo.AdamAddressesVo
;
import
com.liquidnet.service.adam.dto.vo.AdamEntersVo
;
import
com.liquidnet.service.adam.dto.vo.AdamUserMemberVo
;
import
com.liquidnet.service.candy.vo.CandyUseResultVo
;
import
com.liquidnet.service.kylin.dto.param.SysDamaiParam
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.InnerReturnVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.PayResultVo
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -25,8 +31,10 @@ public class OrderUtils {
@Autowired
private
DataUtils
dataUtils
;
// @Value("${liquidnet.adam.url}")
// @Value("${liquidnet.adam.url}")
// private String adamUrl;
@Value
(
"${liquidnet.candy.url}"
)
private
String
candyUrl
;
@Autowired
private
RedisUtil
redisUtil
;
...
...
@@ -120,11 +128,11 @@ public class OrderUtils {
//判断 操作 普通库存还是兑换库存
public
int
changeSurplus
(
boolean
isPay
,
String
ticketId
,
int
number
)
{
public
int
changeSurplus
(
boolean
isPay
,
String
ticketId
,
int
number
)
{
int
surplusGeneral
;
if
(
isPay
)
{
if
(
isPay
)
{
surplusGeneral
=
dataUtils
.
changeSurplusGeneral
(
ticketId
,
number
);
}
else
{
}
else
{
surplusGeneral
=
dataUtils
.
changeSurplusExchange
(
ticketId
,
number
);
}
return
surplusGeneral
;
...
...
@@ -158,6 +166,48 @@ public class OrderUtils {
return
vos
.
stream
().
filter
(
r
->
r
.
getEntersId
().
equals
(
entersId
)).
findAny
().
orElse
(
null
);
}
/**
* 使用优惠券
*
* @param uCouponId 券id
* @param content 消费内容
* @param totalPrice 订单总价
* @return
*/
public
BigDecimal
useCoupon
(
String
uCouponId
,
String
content
,
BigDecimal
totalPrice
)
{
MultiValueMap
<
String
,
String
>
params
=
CollectionUtil
.
linkedMultiValueMapStringString
();
params
.
add
(
"uCouponId"
,
uCouponId
);
params
.
add
(
"content"
,
content
);
params
.
add
(
"totalPrice"
,
totalPrice
.
toString
());
String
returnData
=
HttpUtil
.
post
(
"/candy-coupon/use"
,
params
,
null
);
InnerReturnVo
<
CandyUseResultVo
>
innerReturnVo
=
JsonUtils
.
fromJson
(
returnData
,
InnerReturnVo
.
class
);
CandyUseResultVo
candyUseResultVo
=
innerReturnVo
.
getData
();
Integer
type
=
candyUseResultVo
.
getCouType
();
BigDecimal
value
=
candyUseResultVo
.
getValue
();
BigDecimal
voucher
=
BigDecimal
.
ZERO
;
switch
(
type
)
{
case
-
1
:
voucher
=
BigDecimal
.
valueOf
(-
1
);
break
;
case
1
:
voucher
=
voucher
.
add
(
value
);
break
;
case
2
:
voucher
=
voucher
.
add
(
value
);
break
;
case
3
:
voucher
=
voucher
.
add
(
totalPrice
);
break
;
case
4
:
voucher
=
totalPrice
.
subtract
(
totalPrice
.
multiply
(
value
));
break
;
default
:
voucher
=
BigDecimal
.
ZERO
;
break
;
}
return
voucher
;
}
/**
* @param userId 用户id
* @param type 1新增 2修改
...
...
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