Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cust-api
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
李伟
cust-api
Commits
75837549
Commit
75837549
authored
Feb 14, 2025
by
gaoyingwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改 订单添加金币相关代码
parent
b8b90cfe
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
353 additions
and
142 deletions
+353
-142
AppOrderController.java
...g/rcisoft/app/appOrder/controller/AppOrderController.java
+11
-0
WxPayController.java
.../java/org/rcisoft/app/pay/controller/WxPayController.java
+2
-2
WxPayService.java
src/main/java/org/rcisoft/app/pay/service/WxPayService.java
+4
-3
WxPayServiceImpl.java
...va/org/rcisoft/app/pay/service/impl/WxPayServiceImpl.java
+46
-14
OrderActivityDto.java
...a/org/rcisoft/business/cmsOrder/dto/OrderActivityDto.java
+3
-0
CmsOrder.java
...n/java/org/rcisoft/business/cmsOrder/entity/CmsOrder.java
+4
-0
CmsOrderService.java
...rg/rcisoft/business/cmsOrder/service/CmsOrderService.java
+7
-0
CmsOrderServiceImpl.java
...t/business/cmsOrder/service/impl/CmsOrderServiceImpl.java
+270
-122
AsyncFactory.java
src/main/java/org/rcisoft/core/async/AsyncFactory.java
+4
-1
RedisCons.java
src/main/java/org/rcisoft/core/util/RedisCons.java
+2
-0
No files found.
src/main/java/org/rcisoft/app/appOrder/controller/AppOrderController.java
View file @
75837549
...
...
@@ -87,4 +87,15 @@ public class AppOrderController extends CyPaginationController<CmsOrder> {
}
@PreAuthorize
(
"@cyPerm.hasPerm('app:order:add')"
)
@CyOpeLogAnno
(
title
=
"system-订单信息表管理-充值金币"
,
businessType
=
CyLogTypeEnum
.
INSERT
)
@Operation
(
summary
=
"充值金币"
,
description
=
"充值金币"
)
@PostMapping
(
value
=
"/order/addGold"
)
public
CyResult
addGold
(
@Valid
@RequestBody
CmsOrder
cmsOrder
,
BindingResult
bindingResult
)
{
CyPersistModel
data
=
cmsOrderServiceImpl
.
addGold
(
cmsOrder
);
return
CyResultGenUtil
.
builder
(
data
,
CyMessCons
.
MESSAGE_ALERT_SUCCESS
,
CyMessCons
.
MESSAGE_ALERT_ERROR
,
cmsOrder
);
}
}
src/main/java/org/rcisoft/app/pay/controller/WxPayController.java
View file @
75837549
...
...
@@ -42,7 +42,7 @@ public class WxPayController {
*/
@PostMapping
(
"/pay"
)
public
Map
<
String
,
Object
>
pay
(
HttpServletRequest
request
,
@RequestBody
OrderActivityDto
orderActivityDto
)
throws
IOException
,
JDOMException
{
return
wxPayService
.
wxPay
(
orderActivityDto
.
getOrderId
(),
orderActivityDto
.
getActivityId
(),
request
);
return
wxPayService
.
wxPay
(
orderActivityDto
.
getOrderId
(),
orderActivityDto
.
getActivityId
(),
orderActivityDto
.
getType
(),
request
);
}
/**
...
...
@@ -52,7 +52,7 @@ public class WxPayController {
*/
@PostMapping
(
"/updateOrderStatus"
)
public
CyResult
updateOrderStatus
(
@RequestBody
OrderActivityDto
orderActivityDto
)
{
CyPersistModel
data
=
wxPayService
.
updateOrderStatus
(
orderActivityDto
.
getOrderId
(),
orderActivityDto
.
getActivityId
());
CyPersistModel
data
=
wxPayService
.
updateOrderStatus
(
orderActivityDto
.
getOrderId
(),
orderActivityDto
.
getActivityId
()
,
orderActivityDto
.
getType
()
);
return
CyResultGenUtil
.
builder
(
data
,
CyMessCons
.
MESSAGE_ALERT_SUCCESS
,
CyMessCons
.
MESSAGE_ALERT_ERROR
,
...
...
src/main/java/org/rcisoft/app/pay/service/WxPayService.java
View file @
75837549
...
...
@@ -19,7 +19,7 @@ import java.io.IOException;
public
interface
WxPayService
{
JSONObject
wxPay
(
Long
orderId
,
Long
activityId
,
HttpServletRequest
request
)
throws
IOException
,
JDOMException
;
JSONObject
wxPay
(
Long
orderId
,
Long
activityId
,
Integer
type
,
HttpServletRequest
request
)
throws
IOException
,
JDOMException
;
void
wxNotify
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
JDOMException
;
...
...
@@ -27,12 +27,13 @@ public interface WxPayService {
/**
* 小程序调用wx.requestPayment(OBJECT)发起微信支付成功后更新订单状态
* @param request
* @param orderId
* @param activityId
* @param
request
* @param
type
* @return
*/
CyPersistModel
updateOrderStatus
(
Long
orderId
,
Long
activityId
);
CyPersistModel
updateOrderStatus
(
Long
orderId
,
Long
activityId
,
Integer
type
);
//主动查询微信订单状态
String
selectWxOrderStatus
(
String
orderNo
)
throws
IOException
,
JDOMException
;
...
...
src/main/java/org/rcisoft/app/pay/service/impl/WxPayServiceImpl.java
View file @
75837549
...
...
@@ -95,7 +95,7 @@ public class WxPayServiceImpl implements WxPayService {
private
static
final
String
UTF8
=
"utf-8"
;
@Override
public
JSONObject
wxPay
(
Long
orderId
,
Long
activityId
,
HttpServletRequest
request
)
throws
IOException
,
JDOMException
{
public
JSONObject
wxPay
(
Long
orderId
,
Long
activityId
,
Integer
type
,
HttpServletRequest
request
)
throws
IOException
,
JDOMException
{
//添加实名判断
String
userId
=
CyUserUtil
.
getAuthenBusinessId
();
MemInfo
memInfo
=
memInfoRepository
.
getInfoByUserId
(
userId
);
...
...
@@ -104,13 +104,14 @@ public class WxPayServiceImpl implements WxPayService {
JSONObject
json
=
new
JSONObject
();
// try{
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;status -> 待支付 ,可以进行支付
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
activityId
+
":"
+
orderId
);
if
(
detail
!=
null
)
{
if
(
Objects
.
equals
(
type
,
0
))
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
activityId
+
":"
+
orderId
);
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
0
)){
if
(
orderDetail
.
getStatus
().
equals
(
0
))
{
//校验【活动已结束】不允许支付
Object
activity
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ACTIVITY_DETAIL
+
":"
+
activityId
);
if
(
activity
!=
null
)
{
Object
activity
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ACTIVITY_DETAIL
+
":"
+
activityId
);
if
(
activity
!=
null
)
{
CmsActivity
info
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
activity
),
CmsActivity
.
class
);
if
(
info
.
getEndTime
().
before
(
new
Date
()))
throw
new
CyServiceException
(
"活动已结束,不允许支付"
);
...
...
@@ -122,6 +123,18 @@ public class WxPayServiceImpl implements WxPayService {
}
else
{
throw
new
CyServiceException
(
"订单支付失败,请稍后重试"
);
}
}
else
if
(
Objects
.
equals
(
type
,
1
))
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_GOLD
+
":"
+
activityId
+
":"
+
orderId
);
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
0
))
{
createWxOrder
(
request
,
json
,
orderDetail
);
}
else
throw
new
CyServiceException
(
"该订单不是待支付订单,不能支付"
);
}
else
{
throw
new
CyServiceException
(
"订单支付失败,请稍后重试"
);
}
}
// }catch(Exception e){
// log.error("失败",e);
// json.put("errMsg", "Failed");
...
...
@@ -218,7 +231,10 @@ public class WxPayServiceImpl implements WxPayService {
orderDetail
.
setState
(
0
);
orderDetail
.
setStatus
(
8
);
orderDetail
.
setApplicationStatus
(
"1"
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
if
(
orderDetail
.
getType
().
equals
(
0
))
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
else
if
(
orderDetail
.
getType
().
equals
(
1
))
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_GOLD
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME,rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -244,11 +260,12 @@ public class WxPayServiceImpl implements WxPayService {
* 小程序调用wx.requestPayment(OBJECT) 更新订单状态为待支付
* @param orderId
* @param activityId
* @param type
* @return
*/
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
isolation
=
Isolation
.
DEFAULT
)
@Override
public
CyPersistModel
updateOrderStatus
(
Long
orderId
,
Long
activityId
)
{
public
CyPersistModel
updateOrderStatus
(
Long
orderId
,
Long
activityId
,
Integer
type
)
{
//加订单redis锁
boolean
isGetLock
=
false
;
RLock
redisLock
=
redissonClient
.
getLock
(
RedisCons
.
ORDER_REDIS
+
orderId
);
...
...
@@ -256,14 +273,19 @@ public class WxPayServiceImpl implements WxPayService {
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
activityId
+
":"
+
orderId
);
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
Objects
.
equals
(
type
,
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
Objects
.
equals
(
type
,
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
activityId
+
":"
+
orderId
);
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 待支付
orderDetail
.
setState
(
0
);
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME,rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
else
...
...
@@ -370,7 +392,12 @@ public class WxPayServiceImpl implements WxPayService {
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
activityId
+
":"
+
orderId
);
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
//活动
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
activityId
+
":"
+
orderId
);
if
(
detail
==
null
)
{
redisKey
=
RedisCons
.
ORDER_GOLD
;
//金币
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
activityId
+
":"
+
orderId
);
}
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
orderDetail
.
setTransactionId
(
transactionId
);
...
...
@@ -404,7 +431,7 @@ public class WxPayServiceImpl implements WxPayService {
orderDetail
.
setApplicationStatus
(
"1"
);
}
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付中
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -527,7 +554,12 @@ public class WxPayServiceImpl implements WxPayService {
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
CmsOrder
order
=
orderInfoRepository
.
selectById
(
Long
.
valueOf
(
orderId
));
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
order
.
getGoodsId
()
+
":"
+
orderId
);
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
order
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
order
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
order
.
getGoodsId
()
+
":"
+
orderId
);
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(!
orderDetail
.
getStatus
().
equals
(
2
)
&&
!
orderDetail
.
getStatus
().
equals
(
3
)
...
...
@@ -550,7 +582,7 @@ public class WxPayServiceImpl implements WxPayService {
orderDetail
.
setApplicationStatus
(
"3"
);
orderDetail
.
setState
(
0
);
// //redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付中
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
// //发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
src/main/java/org/rcisoft/business/cmsOrder/dto/OrderActivityDto.java
View file @
75837549
...
...
@@ -12,4 +12,7 @@ public class OrderActivityDto {
/** 活动id */
private
Long
activityId
;
/** 订单类型 0活动 1金币 */
private
Integer
type
;
}
src/main/java/org/rcisoft/business/cmsOrder/entity/CmsOrder.java
View file @
75837549
...
...
@@ -209,5 +209,9 @@ public class CmsOrder extends CyIdSnowflakeEntity<CmsOrder> {
@Transient
@TableField
(
exist
=
false
)
private
String
applicationStatus
;
//现在的余额
@TableField
(
exist
=
false
)
private
Integer
balance
;
}
src/main/java/org/rcisoft/business/cmsOrder/service/CmsOrderService.java
View file @
75837549
...
...
@@ -128,4 +128,11 @@ public interface CmsOrderService {
* @return
*/
int
manualCompensateOrder
(
CmsOrder
dto
);
/**
* 充值金币
* @param cmsOrder
* @return
*/
CyPersistModel
addGold
(
CmsOrder
cmsOrder
);
}
src/main/java/org/rcisoft/business/cmsOrder/service/impl/CmsOrderServiceImpl.java
View file @
75837549
...
...
@@ -13,6 +13,8 @@ import org.rcisoft.business.cmsActivity.service.impl.StockService;
import
org.rcisoft.business.cmsApplication.dao.CmsApplicationRepository
;
import
org.rcisoft.business.cmsApplication.entity.CmsApplication
;
import
org.rcisoft.business.cmsOrder.dto.OrderActivityDto
;
import
org.rcisoft.business.memGoldCoinFlow.dao.MemGoldCoinFlowRepository
;
import
org.rcisoft.business.memGoldCoinFlow.entity.MemGoldCoinFlow
;
import
org.rcisoft.business.memInfo.dao.MemInfoRepository
;
import
org.rcisoft.business.memInfo.entity.MemInfo
;
import
org.rcisoft.core.async.AsyncFactory
;
...
...
@@ -40,6 +42,7 @@ import org.rcisoft.core.model.CyPageInfo;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.SecureRandom
;
import
java.text.SimpleDateFormat
;
...
...
@@ -94,6 +97,9 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
@Autowired
private
MemInfoRepository
memInfoRepository
;
@Autowired
private
MemGoldCoinFlowRepository
memGoldCoinFlowRepository
;
/**
* 保存 订单信息表
* @param cmsOrder
...
...
@@ -181,7 +187,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderInfo
.
setStatus
(
9
);
orderInfo
.
setApplicationStatus
(
"1"
);
}
orderInfo
.
setType
(
1
);
orderInfo
.
setType
(
0
);
orderInfo
.
setOrderTime
(
new
Date
());
orderInfo
.
setDelFlag
(
"0"
);
orderInfo
.
setCreateDate
(
new
Date
());
...
...
@@ -443,7 +449,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
{
List
<
CmsOrder
>
orderRedis
=
new
ArrayList
<>();
//查询edis + DB ,redis 优先
Set
<
String
>
map
=
redisTemplate
.
keys
(
RedisCons
.
ORDER_ACTIVITY
+
"
*"
);
Set
<
String
>
map
=
redisTemplate
.
keys
(
"order:
*"
);
if
(
CollectionUtils
.
isNotEmpty
(
map
))
{
for
(
String
key
:
map
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
key
);
...
...
@@ -500,7 +506,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
// 查询订单的其他信息
List
<
CmsOrder
>
infos
=
baseMapper
.
queryOrderInfoByIds
(
list
);
for
(
CmsOrder
info
:
list
)
{
CmsOrder
o
=
infos
.
stream
().
filter
(
l
->
l
.
getBusinessId
().
equals
(
info
.
getBusinessId
())).
toList
().
get
(
0
);
CmsOrder
o
=
infos
.
stream
().
filter
(
l
->
l
.
getBusinessId
().
equals
(
info
.
getBusinessId
())).
findFirst
().
orElse
(
new
CmsOrder
()
);
info
.
setImgUrl
(
o
.
getImgUrl
());
info
.
setActivityBeginDate
(
o
.
getActivityBeginDate
());
}
...
...
@@ -541,7 +547,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
2
)
||
orderDetail
.
getStatus
().
equals
(
4
))
{
...
...
@@ -552,7 +563,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
7
);
orderDetail
.
setApplicationStatus
(
"3"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -609,7 +620,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
8
))
{
...
...
@@ -617,7 +633,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
9
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -644,7 +660,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
8
))
{
...
...
@@ -652,7 +673,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -687,14 +708,19 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 待支付
orderDetail
.
setState
(
0
);
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME,rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
else
...
...
@@ -721,7 +747,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
8
))
{
...
...
@@ -729,7 +760,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -843,7 +874,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDb
.
getGoodsId
()
+
":"
+
orderDb
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderDb
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderDb
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderDb
.
getGoodsId
()
+
":"
+
orderDb
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderRedis
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
orderRedis
.
setState
(
0
);
...
...
@@ -856,7 +892,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
}
orderRedis
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款中 (2 3)
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderRedis
.
getGoodsId
()
+
":"
+
orderRedis
.
getBusinessId
(),
orderRedis
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderRedis
.
getGoodsId
()
+
":"
+
orderRedis
.
getBusinessId
(),
orderRedis
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderRedis, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -1069,7 +1105,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
@Transactional
public
void
executeInsertOrder
()
throws
NoSuchAlgorithmException
{
// 查询 【order:activity:${所有}:${所有}】
Set
<
String
>
map
=
redisTemplate
.
keys
(
RedisCons
.
ORDER_ACTIVITY
+
"
*"
);
Set
<
String
>
map
=
redisTemplate
.
keys
(
"order:
*"
);
if
(
CollectionUtils
.
isNotEmpty
(
map
))
{
List
<
String
>
list
=
new
ArrayList
<>(
map
);
if
(
list
.
size
()>
50
){
...
...
@@ -1106,34 +1142,33 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
//未落库->落库;redis key: 【order:activity:${aid}:${oid}】【未同步】 => 落库
if
(
info
==
null
)
{
baseMapper
.
insert
(
orderDetail
);
//添加报名信息
CmsApplication
application
=
new
CmsApplication
();
application
.
setUserId
(
orderDetail
.
getUserId
());
application
.
setActivityId
(
orderDetail
.
getGoodsId
());
application
.
setName
(
orderDetail
.
getAccount
());
// application.setPhone(orderDetail.get);
//0 待支付 1已取消 2退款中 3退款中 4后台退款中 5后台退款中 6退款完成 7后台退款完成 8支付中 9 支付完成 10订单关闭
// if (orderDetail.getStatus().equals(0)||orderDetail.getStatus().equals(2)||orderDetail.getStatus().equals(3)||orderDetail.getStatus().equals(4)||
// orderDetail.getStatus().equals(5)||orderDetail.getStatus().equals(8)||orderDetail.getStatus().equals(9))
// application.setStatus("1");
// else if (orderDetail.getStatus().equals(1)||orderDetail.getStatus().equals(10))
// application.setStatus("2");
// else if (orderDetail.getStatus().equals(6)||orderDetail.getStatus().equals(7))
// application.setStatus("3");
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
application
.
setApplicationFee
(
orderDetail
.
getPayPrice
());
application
.
setOrderId
(
orderDetail
.
getBusinessId
());
applicationRepository
.
insert
(
application
);
// //如果有优惠券,进行核销
// if (orderDetail.getCouponId() != null) {
// UserCouponRelative userCouponRelative = new UserCouponRelative();
// userCouponRelative.setBusinessId(orderDetail.getCouponId());
// userCouponRelative.setCancelId(orderDetail.getStoreId());
// userCouponRelative.setOrderId(orderDetail.getBusinessId());
// userCouponRelative.setStatus(1);
// userCouponRelative.setCancelTime(new Date());
// couponInfoRepository.useCouponById(userCouponRelative);
// }
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
//添加报名信息
CmsApplication
application
=
new
CmsApplication
();
application
.
setUserId
(
orderDetail
.
getUserId
());
application
.
setActivityId
(
orderDetail
.
getGoodsId
());
application
.
setName
(
orderDetail
.
getAccount
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
application
.
setApplicationFee
(
orderDetail
.
getPayPrice
());
application
.
setOrderId
(
orderDetail
.
getBusinessId
());
applicationRepository
.
insert
(
application
);
}
else
if
(
orderDetail
.
getType
().
equals
(
1
))
{
//金币
if
(
orderDetail
.
getStatus
().
equals
(
9
))
{
MemInfo
memInfo
=
memInfoRepository
.
getInfoByUserId
(
String
.
valueOf
(
orderDetail
.
getUserId
()));
//增加到金币流水表
MemGoldCoinFlow
memGoldCoinFlow
=
new
MemGoldCoinFlow
();
memGoldCoinFlow
.
setType
(
"1"
);
memGoldCoinFlow
.
setActionType
(
"10"
);
memGoldCoinFlow
.
setCount
(
orderDetail
.
getNum
());
memGoldCoinFlow
.
setEndCount
(
memGoldCoinFlow
.
getCount
()
+
memInfo
.
getGoldCoinsCount
());
memGoldCoinFlow
.
setOrderId
(
BigInteger
.
valueOf
(
orderDetail
.
getBusinessId
()));
memGoldCoinFlow
.
setTargetId
(
BigInteger
.
valueOf
(
orderDetail
.
getUserId
()));
memGoldCoinFlowRepository
.
insert
(
memGoldCoinFlow
);
//修改会员表的金币余额
memInfo
.
setGoldCoinsCount
(
memGoldCoinFlow
.
getCount
()
+
memInfo
.
getGoldCoinsCount
());
memInfoRepository
.
updateById
(
memInfo
);
}
}
//加订单redis锁
RLock
redisLock
=
redissonClient
.
getLock
(
RedisCons
.
ORDER_REDIS
+
orderDetail
.
getBusinessId
());
try
{
...
...
@@ -1142,7 +1177,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
if
(
isGetLock
)
{
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【已同步】
orderDetail
.
setState
(
1
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
()
,
orderDetail
);
cyRedisServiceImpl
.
set
(
key
,
orderDetail
);
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1198,33 +1233,26 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
boolean
isGetLock
=
false
;
orderDetail
.
setUpdateDate
(
new
Date
());
baseMapper
.
updateById
(
orderDetail
);
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
//积分计算
// BigDecimal price = orderDetail.getPayPrice();
// IntegralAmountRelative relative = integralAmountRelativeRepository.queryIntegralByPrice(price);
// if (relative != null) {
// //查询会员信息
// SysUser info = sysUserRepositorys.selectUserById(orderDetail.getUserId());
// UserIntegral userIntegral = new UserIntegral();
// userIntegral.setUserId(orderDetail.getUserId());
// userIntegral.setGoodsId(orderDetail.getGoodsId());
// userIntegral.setChange(relative.getIntegral());
// Integer integral = info.getIntegral() + relative.getIntegral();
// userIntegral.setIntegral(integral);
// userIntegral.setCreateBy(String.valueOf(orderDetail.getUserId()));
// userIntegral.setCreateTime(new Date());
// userIntegralRepository.insertUserIntegral(userIntegral);
// //会员等级计算
// MemberBenefits benefits = memberBenefitsRepository.selectMemberBenefitsByLevel(info.getLevel()+1);
// if (benefits != null && (integral >= benefits.getIntegral())) {
// info.setLevel(info.getLevel()+1);
// }
// info.setIntegral(integral);
// sysUserRepositorys.updateSysUser(info);
// cyRedisServiceImpl.set(RedisCons.MEMBER_INFO + ":" + orderDetail.getUserId(), info);
// }
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
}
else
if
(
orderDetail
.
getType
().
equals
(
1
)){
//金币
MemInfo
memInfo
=
memInfoRepository
.
getInfoByUserId
(
String
.
valueOf
(
orderDetail
.
getUserId
()));
//增加到金币流水表
MemGoldCoinFlow
memGoldCoinFlow
=
new
MemGoldCoinFlow
();
memGoldCoinFlow
.
setType
(
"1"
);
memGoldCoinFlow
.
setActionType
(
"10"
);
memGoldCoinFlow
.
setCount
(
orderDetail
.
getNum
());
memGoldCoinFlow
.
setEndCount
(
memGoldCoinFlow
.
getCount
()
+
memInfo
.
getGoldCoinsCount
());
memGoldCoinFlow
.
setOrderId
(
BigInteger
.
valueOf
(
orderDetail
.
getBusinessId
()));
memGoldCoinFlow
.
setTargetId
(
BigInteger
.
valueOf
(
orderDetail
.
getUserId
()));
memGoldCoinFlowRepository
.
insert
(
memGoldCoinFlow
);
//修改会员表的金币余额
memInfo
.
setGoldCoinsCount
(
memGoldCoinFlow
.
getCount
()
+
memInfo
.
getGoldCoinsCount
());
memInfoRepository
.
updateById
(
memInfo
);
}
//加订单redis锁
RLock
redisLock
=
redissonClient
.
getLock
(
RedisCons
.
ORDER_REDIS
+
orderDetail
.
getBusinessId
());
try
{
...
...
@@ -1233,7 +1261,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
if
(
isGetLock
)
{
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【已同步】
orderDetail
.
setState
(
1
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderDetail
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderDetail
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1249,9 +1282,11 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
boolean
isGetLock
=
false
;
orderDetail
.
setUpdateDate
(
new
Date
());
baseMapper
.
updateById
(
orderDetail
);
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
}
//加订单redis锁
RLock
redisLock
=
redissonClient
.
getLock
(
RedisCons
.
ORDER_REDIS
+
orderDetail
.
getBusinessId
());
try
{
...
...
@@ -1260,7 +1295,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
if
(
isGetLock
)
{
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【已同步】
orderDetail
.
setState
(
1
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderDetail
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderDetail
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1276,9 +1316,11 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
boolean
isGetLock
=
false
;
orderDetail
.
setUpdateDate
(
new
Date
());
baseMapper
.
updateById
(
orderDetail
);
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
orderDetail
.
getApplicationStatus
());
applicationRepository
.
updateById
(
application
);
}
//订单优惠券退还
// if (orderDetail.getCouponId() != null) {
// UserCouponRelative userCouponRelative = new UserCouponRelative();
...
...
@@ -1292,9 +1334,14 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderDetail
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderDetail
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【已同步】
orderDetail
.
setState
(
1
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1311,7 +1358,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
@Transactional
public
void
executeCloseOrder
()
throws
NoSuchAlgorithmException
{
// 查询 【order:activity:${所有}:${所有}】
Set
<
String
>
map
=
redisTemplate
.
keys
(
RedisCons
.
ORDER_ACTIVITY
+
"
*"
);
Set
<
String
>
map
=
redisTemplate
.
keys
(
"order:
*"
);
if
(
CollectionUtils
.
isNotEmpty
(
map
))
{
List
<
String
>
list
=
new
ArrayList
<>(
map
);
if
(
list
.
size
()>
50
){
...
...
@@ -1353,18 +1400,21 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
CmsOrder
info
=
baseMapper
.
selectById
(
orderDetail
.
getBusinessId
());
if
(
info
!=
null
)
{
baseMapper
.
updateById
(
orderDetail
);
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
"2"
);
applicationRepository
.
updateById
(
application
);
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
CmsApplication
application
=
applicationRepository
.
selectByOrderId
(
orderDetail
.
getBusinessId
());
application
.
setStatus
(
"2"
);
applicationRepository
.
updateById
(
application
);
}
}
else
{
baseMapper
.
insert
(
orderDetail
);
//添加报名信息
CmsApplication
application
=
new
CmsApplication
();
application
.
setUserId
(
orderDetail
.
getUserId
());
application
.
setActivityId
(
orderDetail
.
getGoodsId
());
application
.
setName
(
orderDetail
.
getAccount
());
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
//添加报名信息
CmsApplication
application
=
new
CmsApplication
();
application
.
setUserId
(
orderDetail
.
getUserId
());
application
.
setActivityId
(
orderDetail
.
getGoodsId
());
application
.
setName
(
orderDetail
.
getAccount
());
// application.setPhone(orderDetail.get);
//0 待支付 1已取消 2退款中 3退款中 4后台退款中 5后台退款中 6退款完成 7后台退款完成 8支付中 9 支付完成 10订单关闭
//0 待支付 1已取消 2退款中 3退款中 4后台退款中 5后台退款中 6退款完成 7后台退款完成 8支付中 9 支付完成 10订单关闭
// if (orderDetail.getStatus().equals(0)||orderDetail.getStatus().equals(2)||orderDetail.getStatus().equals(3)||orderDetail.getStatus().equals(4)||
// orderDetail.getStatus().equals(5)||orderDetail.getStatus().equals(8)||orderDetail.getStatus().equals(9))
// application.setStatus("1");
...
...
@@ -1372,10 +1422,11 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
// application.setStatus("2");
// else if (orderDetail.getStatus().equals(6)||orderDetail.getStatus().equals(7))
// application.setStatus("3");
application
.
setStatus
(
"2"
);
application
.
setApplicationFee
(
orderDetail
.
getPayPrice
());
application
.
setOrderId
(
orderDetail
.
getBusinessId
());
applicationRepository
.
insert
(
application
);
application
.
setStatus
(
"2"
);
application
.
setApplicationFee
(
orderDetail
.
getPayPrice
());
application
.
setOrderId
(
orderDetail
.
getBusinessId
());
applicationRepository
.
insert
(
application
);
}
}
//如果使用了优惠券,则改为未使用
...
...
@@ -1393,11 +1444,13 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
if
(
isGetLock
)
{
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【已同步】
orderDetail
.
setState
(
1
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//退人数
// ActivityInfo activityInfo = activityInfoRepository.selectActivityInfoById(orderDetail.getGoodsId());
// if (activityInfo.getIsRestrictions().equals(0))
stockService
.
addStock
(
RedisCons
.
ACTIVITY_COUNT
+
":"
+
orderDetail
.
getGoodsId
(),
1
);
if
(
orderDetail
.
getType
().
equals
(
0
))
{
//活动
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//退人数
stockService
.
addStock
(
RedisCons
.
ACTIVITY_COUNT
+
":"
+
orderDetail
.
getGoodsId
(),
1
);
}
else
if
(
orderDetail
.
getType
().
equals
(
1
))
//金币
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_GOLD
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1443,14 +1496,19 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
orderDetail
.
setState
(
0
);
orderDetail
.
setStatus
(
9
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -1482,14 +1540,19 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 待支付
orderDetail
.
setState
(
0
);
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME,rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
else
...
...
@@ -1514,7 +1577,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
if
(
orderDetail
.
getStatus
().
equals
(
8
))
{
...
...
@@ -1522,7 +1590,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
0
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 支付完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -1564,21 +1632,30 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
orderInfo
.
setState
(
0
);
if
(
"SUCCESS"
.
equals
(
result
)){
//接口成功
if
(
orderInfo
.
getStatus
().
equals
(
3
))
orderInfo
.
setStatus
(
2
);
else
orderInfo
.
setStatus
(
4
);
}
else
{
//接口失败
Integer
refundCount
=
orderInfo
.
getRefundCount
();
orderInfo
.
setRefundCount
(
refundCount
+
1
);
}
orderInfo
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款中 (2 3)
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
(),
orderInfo
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
orderDetail
.
setState
(
0
);
if
(
"SUCCESS"
.
equals
(
result
))
{
//接口成功
if
(
orderDetail
.
getStatus
().
equals
(
3
))
orderDetail
.
setStatus
(
2
);
else
orderDetail
.
setStatus
(
4
);
}
else
{
//接口失败
Integer
refundCount
=
orderDetail
.
getRefundCount
();
orderDetail
.
setRefundCount
(
refundCount
+
1
);
}
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款中 (2 3)
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderInfo, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
}
}
catch
(
InterruptedException
e
)
{
Thread
.
currentThread
().
interrupt
();
...
...
@@ -1620,7 +1697,12 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
isGetLock
=
redisLock
.
tryLock
(
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_WAIT_TIME
),
Long
.
parseLong
(
RedisCons
.
ORDER_INFO_LOCK_LEASE_TIME
),
TimeUnit
.
SECONDS
);
if
(
isGetLock
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
String
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
if
(
orderInfo
.
getType
().
equals
(
0
))
//活动
redisKey
=
RedisCons
.
ORDER_ACTIVITY
;
else
if
(
orderInfo
.
getType
().
equals
(
1
))
//金币
redisKey
=
RedisCons
.
ORDER_GOLD
;
Object
detail
=
cyRedisServiceImpl
.
get
(
redisKey
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
());
if
(
detail
!=
null
)
{
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
orderDetail
.
setState
(
0
);
...
...
@@ -1630,7 +1712,7 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
orderDetail
.
setStatus
(
7
);
orderDetail
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款完成
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
cyRedisServiceImpl
.
set
(
redisKey
+
":"
+
orderDetail
.
getGoodsId
()
+
":"
+
orderDetail
.
getBusinessId
(),
orderDetail
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// rabbitClusterUtil.sendMsg(orderDetail, rabbitMQConfigBean.ORDER_EXCHANGE_NAME, rabbitMQConfigBean.ORDER_STATUS_QUEUE_NAME);
}
...
...
@@ -1686,5 +1768,71 @@ public class CmsOrderServiceImpl extends ServiceImpl<CmsOrderRepository,CmsOrder
}
}
// 查询DB,下单完成,近4个月的订单,如今日是2023-5-5,查询 2023-1-5 至2023-4-5 的
QueryWrapper
<
CmsOrder
>
wrapper1
=
new
QueryWrapper
<>();
wrapper1
.
eq
(
"del_flag"
,
0
);
wrapper1
.
in
(
"status"
,
1
,
6
,
7
,
9
);
wrapper1
.
between
(
"order_time"
,
df
.
format
(
startTime
),
df
.
format
(
endTime
));
List
<
CmsOrder
>
orderList
=
baseMapper
.
selectList
(
wrapper1
);
for
(
CmsOrder
order
:
orderList
)
{
Object
detail
=
cyRedisServiceImpl
.
get
(
RedisCons
.
ORDER_GOLD
+
":"
+
order
.
getGoodsId
()
+
":"
+
order
.
getBusinessId
());
CmsOrder
orderDetail
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
detail
),
CmsOrder
.
class
);
//state->已同步 => del key
if
(
Objects
.
equals
(
orderDetail
.
getState
(),
1
))
redisTemplate
.
delete
(
RedisCons
.
ORDER_GOLD
+
":"
+
order
.
getGoodsId
()
+
":"
+
order
.
getBusinessId
());
}
}
/**
* 金币充值
* @param cmsOrder
* @return
*/
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
isolation
=
Isolation
.
DEFAULT
)
@Override
public
CyPersistModel
addGold
(
CmsOrder
cmsOrder
){
//增加操作
int
line
=
1
;
//添加实名判断
String
userId
=
CyUserUtil
.
getAuthenBusinessId
();
MemInfo
memInfo
=
memInfoRepository
.
getInfoByUserId
(
userId
);
if
(!
"1"
.
equals
(
memInfo
.
getMemRealAuthen
()))
throw
new
CyServiceException
(
"您未实名认证,不能充值"
);
long
orderId
=
cyIdGenUtil
.
getSnowFlakedId
();
CmsOrder
orderInfo
=
new
CmsOrder
();
orderInfo
.
setBusinessId
(
orderId
);
orderInfo
.
setName
(
"金币充值"
);
orderInfo
.
setGoodsId
(
0
);
orderInfo
.
setUserId
(
Integer
.
valueOf
(
userId
));
orderInfo
.
setAccount
(
CyUserUtil
.
getAuthenUsername
());
orderInfo
.
setNum
(
orderInfo
.
getNum
());
//计算价格 -开始
if
(
cmsOrder
.
getPrice
()
!=
null
&&
cmsOrder
.
getPrice
().
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
BigDecimal
price
=
cmsOrder
.
getPrice
().
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
);
orderInfo
.
setStatus
(
0
);
//查询会员折扣
BigDecimal
discount
=
new
BigDecimal
(
"100.00"
);
orderInfo
.
setPrice
(
price
);
orderInfo
.
setPayPrice
(
price
.
multiply
(
discount
.
divide
(
BigDecimal
.
valueOf
(
100
),
2
,
BigDecimal
.
ROUND_DOWN
)).
setScale
(
2
,
BigDecimal
.
ROUND_DOWN
));
if
(
orderInfo
.
getPayPrice
().
compareTo
(
BigDecimal
.
ZERO
)
<=
0
){
orderInfo
.
setStatus
(
9
);
}
}
else
{
//免费 --> 支付完成
orderInfo
.
setPrice
(
BigDecimal
.
ZERO
);
orderInfo
.
setPayPrice
(
BigDecimal
.
ZERO
);
orderInfo
.
setStatus
(
9
);
}
orderInfo
.
setType
(
1
);
orderInfo
.
setOrderTime
(
new
Date
());
orderInfo
.
setDelFlag
(
"0"
);
orderInfo
.
setCreateDate
(
new
Date
());
orderInfo
.
setCreateBy
(
CyUserUtil
.
getAuthenBusinessId
());
orderInfo
.
setState
(
0
);
cyRedisServiceImpl
.
set
(
RedisCons
.
ORDER_GOLD
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderId
,
orderInfo
);
return
new
CyPersistModel
(
line
);
}
}
src/main/java/org/rcisoft/core/async/AsyncFactory.java
View file @
75837549
...
...
@@ -165,7 +165,10 @@ public class AsyncFactory
}
orderInfo
.
setApplicationStatus
(
"1"
);
//redis key: 【order:activity:${aid}:${oid}】 value 【hash】;ttl:-1;hash state-> 【未同步】,status -> 退款中 (2 3)
CySpringBeanComp
.
getBean
(
CyRedisServiceImpl
.
class
).
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
(),
orderInfo
);
if
(
orderInfo
.
getType
().
equals
(
0
))
CySpringBeanComp
.
getBean
(
CyRedisServiceImpl
.
class
).
set
(
RedisCons
.
ORDER_ACTIVITY
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
(),
orderInfo
);
else
if
(
orderInfo
.
getType
().
equals
(
1
))
CySpringBeanComp
.
getBean
(
CyRedisServiceImpl
.
class
).
set
(
RedisCons
.
ORDER_GOLD
+
":"
+
orderInfo
.
getGoodsId
()
+
":"
+
orderInfo
.
getBusinessId
(),
orderInfo
);
//发送 mq,exchange:`order_activity` route-key:`order_activity_status` value 【订单】
// CySpringBeanComp.getBean(RabbitClusterUtil.class).sendMsg(orderInfo,
// CySpringBeanComp.getBean(RabbitMQConfigBean.class).ORDER_EXCHANGE_NAME,
...
...
src/main/java/org/rcisoft/core/util/RedisCons.java
View file @
75837549
...
...
@@ -24,6 +24,8 @@ public class RedisCons {
//订单活动信息
public
static
final
String
ORDER_ACTIVITY
=
"order:activity"
;
//订单金币信息
public
static
final
String
ORDER_GOLD
=
"order:gold"
;
//订单数据库锁
public
static
final
String
ORDER_DB
=
"order:db:"
;
//订单redis锁
...
...
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