Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
f6727afa
Commit
f6727afa
authored
Apr 22, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
支付成功发送模板消息
parent
25e2a1d7
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
114 additions
and
49 deletions
+114
-49
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/DistributionOrderRequestDto.java
...dto/request/distribution/DistributionOrderRequestDto.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
...com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
+3
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
...main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
+97
-20
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
...ch/wx/impl/distribution/DistributionOrderServiceImpl.java
+12
-29
No files found.
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/DistributionOrderRequestDto.java
View file @
f6727afa
...
...
@@ -19,6 +19,8 @@ public class DistributionOrderRequestDto extends BaseRequestDto implements Entit
*/
private
String
searchParam
;
private
Long
userId
;
/**
* 分销分享记录id
*/
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
View file @
f6727afa
...
...
@@ -79,6 +79,9 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
public
int
updateStock
(
long
itemId
,
int
stock
)
{
SupplierItem
supplierItem
=
new
SupplierItem
();
supplierItem
.
setStock
(
stock
);
if
(
stock
<=
0
)
{
supplierItem
.
setIsOnSale
(
false
);
}
SupplierItemExample
supplierItemExample
=
new
SupplierItemExample
();
SupplierItemExample
.
Criteria
criteria
=
supplierItemExample
.
createCriteria
();
criteria
.
andIdEqualTo
(
itemId
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
View file @
f6727afa
...
...
@@ -8,6 +8,7 @@ import com.wechat.pay.java.service.refund.model.RefundNotification;
import
com.wwdz.ch.core.api.OfficialAccountApi
;
import
com.wwdz.ch.core.api.wxpay.WxPayServiceApi
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.notify.AliSmsSender
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.RedisUtils
;
...
...
@@ -15,6 +16,7 @@ import com.wwdz.ch.core.util.TimeUtil;
import
com.wwdz.ch.db.dao.distribution.*
;
import
com.wwdz.ch.db.domain.distribution.*
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.wx.entity.DistributionOrderNoticeMsg
;
import
com.wwdz.ch.wx.entity.PayNoticeMsg
;
import
com.wwdz.ch.wx.service.distribution.SendMsgService
;
import
com.wwdz.ch.wx.service.distribution.SupplierItemService
;
...
...
@@ -79,6 +81,12 @@ public class WxPayCallbackController {
@Autowired
RefundOrderDao
refundOrderDao
;
@Autowired
AliSmsSender
aliSmsSender
;
@Autowired
WxAppletApi
wxAppletApi
;
@RequestMapping
(
value
=
"/getPayNotify"
)
public
String
payNotify
(
HttpServletRequest
request
)
throws
IOException
{
logger
.
info
(
"------------------ 收到微信支付回调通知 ------------------"
);
...
...
@@ -144,12 +152,18 @@ public class WxPayCallbackController {
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
else
{
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
AUCTION
.
getCode
())
{
//竞拍订单处理
Result
updateResult
=
handleAuctionOrder
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
COLLECT
.
getCode
())
{
//藏馆订单
Result
updateResult
=
handleOrderOfCollector
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
}
}
...
...
@@ -192,7 +206,7 @@ public class WxPayCallbackController {
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
//更新库存
supplierItemService
.
reduceStock
(
distributionOrder
.
getItemId
(),
distributionOrder
.
getItemNum
());
logger
.
info
(
">>>>>>>>>>>> 微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<"
);
logger
.
info
(
">>>>>>>>>>>>
一口价订单,
微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<"
);
//用户首次购买的话,即绑定该分销商
boolean
isExisted
=
distributorBindDao
.
isExisted
(
distributionOrder
.
getBuyerId
());
if
(!
isExisted
)
{
...
...
@@ -206,26 +220,28 @@ public class WxPayCallbackController {
distributorBind
.
setIsValid
(
true
);
distributorBindDao
.
insert
(
distributorBind
);
}
//用户支付成功,发送模板信息通知分销商
try
{
String
openId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
StringUtils
.
hasLength
(
openId
))
{
PayNoticeMsg
payNoticeMsg
=
new
PayNoticeMsg
();
payNoticeMsg
.
setDistributionOrderId
(
distributionOrderId
);
payNoticeMsg
.
setItemName
(
supplierItem
.
getName
());
payNoticeMsg
.
setItemNum
(
distributionOrder
.
getItemNum
());
payNoticeMsg
.
setAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()));
payNoticeMsg
.
setPayTime
(
TimeUtil
.
wxTimeConvert
(
payTime
));
sendMsgService
.
sendPayTempletMsg
(
openId
,
payNoticeMsg
);
}
else
{
logger
.
info
(
">>>>> 分销商id :{}, 获取openid失败 <<<<<"
,
distributionOrder
.
getSellerId
());
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
FIXED_PRICE
.
getCode
())
{
//用户支付成功,发送模板信息通知分销商
try
{
String
openId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
StringUtils
.
hasLength
(
openId
))
{
PayNoticeMsg
payNoticeMsg
=
new
PayNoticeMsg
();
payNoticeMsg
.
setDistributionOrderId
(
distributionOrderId
);
payNoticeMsg
.
setItemName
(
supplierItem
.
getName
());
payNoticeMsg
.
setItemNum
(
distributionOrder
.
getItemNum
());
payNoticeMsg
.
setAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()));
payNoticeMsg
.
setPayTime
(
TimeUtil
.
wxTimeConvert
(
payTime
));
sendMsgService
.
sendPayTempletMsg
(
openId
,
payNoticeMsg
);
}
else
{
logger
.
info
(
">>>>> 分销商id :{}, 获取openid失败 <<<<<"
,
distributionOrder
.
getSellerId
());
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"用户支付成功,向分销商发送模板信息失败:{}"
,
e
);
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"用户支付成功,向分销商发送模板信息失败:{}"
,
e
);
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>> 微信支付回调通知处理失败 error :{}"
,
e
);
logger
.
error
(
">>>>>>>>>>>>
一口价订单,
微信支付回调通知处理失败 error :{}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
...
...
@@ -255,7 +271,7 @@ public class WxPayCallbackController {
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
//更新库存
supplierItemService
.
reduceStock
(
distributionOrder
.
getItemId
(),
distributionOrder
.
getItemNum
());
logger
.
info
(
">>>>>>>>>>>> 微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<"
);
logger
.
info
(
">>>>>>>>>>>>
竞拍订单,
微信支付回调通知处理成功,更新拍卖订单状态和商品库存 <<<<<<<<<<<<"
);
//用户首次购买的话,即绑定该分销商
boolean
isExisted
=
distributorBindDao
.
isExisted
(
distributionOrder
.
getBuyerId
());
if
(!
isExisted
)
{
...
...
@@ -271,7 +287,68 @@ public class WxPayCallbackController {
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>> 微信支付回调通知处理失败 error :{}"
,
e
);
logger
.
error
(
">>>>>>>>>>>> 竞拍订单,微信支付回调通知处理失败 error :{}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
}
/**
* 更新仓管订单状态
* @return
*/
@Transactional
public
Result
handleOrderOfCollector
(
Transaction
transaction
)
{
try
{
//商户订单号,分销订单号
String
distributionOrderId
=
transaction
.
getOutTradeNo
();
//微信支付交易id
String
transactionId
=
transaction
.
getTransactionId
();
//支付成功时间
String
payTime
=
transaction
.
getSuccessTime
();
//支付成功,更新订单状态为待发货
DistributionOrder
distributionOrderDto
=
new
DistributionOrder
();
distributionOrderDto
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrderDto
.
setTransactionId
(
transactionId
);
distributionOrderDto
.
setPayTime
(
TimeUtil
.
wxTimeConvertToDate
(
payTime
));
distributionOrderDto
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_SEND
.
getCode
());
distributionOrderDao
.
update
(
distributionOrderDto
);
//用户付款成功后,把藏家利润的记录更新为有效,因为未付款前只是创建了预计利润记录,但并未生效
distributorProfitDao
.
updateValidState
(
distributionOrderId
,
true
);
//用户确认签收,新增分销商利润
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
//更新库存
supplierItemService
.
reduceStock
(
distributionOrder
.
getItemId
(),
distributionOrder
.
getItemNum
());
logger
.
info
(
">>>>>>>>>>>> 藏馆订单,微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<"
);
//给藏家发信息
String
lastOpenId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
com
.
xxdxxs
.
utils
.
StringUtils
.
hasLength
(
lastOpenId
))
{
DistributionOrderNoticeMsg
distributionOrderNoticeMsg
=
new
DistributionOrderNoticeMsg
();
distributionOrderNoticeMsg
.
setOpenId
(
lastOpenId
);
distributionOrderNoticeMsg
.
setItemId
(
supplierItem
.
getId
());
distributionOrderNoticeMsg
.
setItemName
(
supplierItem
.
getName
());
distributionOrderNoticeMsg
.
setItemNum
(
distributionOrder
.
getItemNum
());
distributionOrderNoticeMsg
.
setAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()));
distributionOrderNoticeMsg
.
setCreateTime
(
distributionOrder
.
getCreateTime
());
Result
result
=
sendMsgService
.
newOrderNoticeMsg
(
distributionOrderNoticeMsg
);
if
(!
result
.
getSuccess
())
{
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/saleOrder/index"
,
"shopState=2"
);
String
msg
=
"您的藏馆收到一个新订单,请前往"
+
url
+
"查看"
;
aliSmsSender
.
sendSms
(
distributionOrder
.
getSellerId
(),
msg
);
}
}
else
{
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/saleOrder/index"
,
"shopState=2"
);
String
msg
=
"您的藏馆收到一个新订单,请前往"
+
url
+
"查看"
;
aliSmsSender
.
sendSms
(
distributionOrder
.
getSellerId
(),
msg
);
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>> 藏馆订单,微信支付回调通知处理失败 error :{}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
View file @
f6727afa
...
...
@@ -479,27 +479,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributorProfit
.
setIsValid
(
false
);
distributorProfitDao
.
insert
(
distributorProfit
);
//给藏家发信息
String
lastOpenId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
com
.
xxdxxs
.
utils
.
StringUtils
.
hasLength
(
lastOpenId
))
{
DistributionOrderNoticeMsg
distributionOrderNoticeMsg
=
new
DistributionOrderNoticeMsg
();
distributionOrderNoticeMsg
.
setOpenId
(
lastOpenId
);
distributionOrderNoticeMsg
.
setItemId
(
supplierItem
.
getId
());
distributionOrderNoticeMsg
.
setItemName
(
supplierItem
.
getName
());
distributionOrderNoticeMsg
.
setItemNum
(
distributionOrder
.
getItemNum
());
distributionOrderNoticeMsg
.
setAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()));
distributionOrderNoticeMsg
.
setCreateTime
(
distributionOrder
.
getCreateTime
());
Result
result
=
sendMsgService
.
newOrderNoticeMsg
(
distributionOrderNoticeMsg
);
if
(!
result
.
getSuccess
())
{
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/saleOrder/index"
,
"shopState=2"
);
String
msg
=
"您的藏馆收到一个新订单,请前往"
+
url
+
"查看"
;
aliSmsSender
.
sendSms
(
distributionOrder
.
getSellerId
(),
msg
);
}
}
else
{
String
url
=
wxAppletApi
.
getUrlLink
(
"/pages/saleOrder/index"
,
"shopState=2"
);
String
msg
=
"您的藏馆收到一个新订单,请前往"
+
url
+
"查看"
;
aliSmsSender
.
sendSms
(
distributionOrder
.
getSellerId
(),
msg
);
}
return
Result
.
success
(
map
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"创建藏品一口价订单失败 error : {}"
,
e
);
...
...
@@ -718,17 +698,20 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
deliveryNoticeMsg
.
setDeliveryTime
(
now
);
//发送给卖家
String
sellerOpenId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
com
.
xxdxxs
.
utils
.
StringUtils
.
hasLength
(
sellerOpenId
))
{
if
(
distributionOrder
.
getType
().
intValue
()
==
DistributionEnum
.
DistributionTypeEnum
.
COLLECT
.
getCode
())
{
deliveryNoticeMsg
.
setShopState
(
2
);
if
(
dto
.
getUserId
()
==
null
||
distributionOrder
.
getSellerId
().
longValue
()
!=
dto
.
getUserId
())
{
String
sellerOpenId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getSellerId
());
if
(
com
.
xxdxxs
.
utils
.
StringUtils
.
hasLength
(
sellerOpenId
))
{
if
(
distributionOrder
.
getType
().
intValue
()
==
DistributionEnum
.
DistributionTypeEnum
.
COLLECT
.
getCode
())
{
deliveryNoticeMsg
.
setShopState
(
2
);
}
else
{
deliveryNoticeMsg
.
setShopState
(
1
);
}
sendMsgService
.
sendDeliveryTempletMsg
(
sellerOpenId
,
deliveryNoticeMsg
);
}
else
{
deliveryNoticeMsg
.
setShopState
(
1
);
logger
.
info
(
">>>>> 卖家id :{}, 获取openid失败 <<<<<"
,
distributionOrder
.
getSellerId
()
);
}
sendMsgService
.
sendDeliveryTempletMsg
(
sellerOpenId
,
deliveryNoticeMsg
);
}
else
{
logger
.
info
(
">>>>> 分销商id :{}, 获取openid失败 <<<<<"
,
distributionOrder
.
getSellerId
());
}
//发送给买家
String
buyerOpenId
=
sendMsgService
.
getOpenIdByUserId
(
distributionOrder
.
getBuyerId
());
if
(
com
.
xxdxxs
.
utils
.
StringUtils
.
hasLength
(
buyerOpenId
))
{
...
...
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