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
4dd4c6ca
Commit
4dd4c6ca
authored
Jul 31, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
团购商品列表
parent
41a6eace
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
238 additions
and
207 deletions
+238
-207
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
...va/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
+7
-5
ch-core/src/main/java/com/wwdz/ch/core/consts/DistributionEnum.java
...c/main/java/com/wwdz/ch/core/consts/DistributionEnum.java
+1
-1
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
...com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/GroupPurchaseRecordRequestDto.java
...o/request/distribution/GroupPurchaseRecordRequestDto.java
+5
-5
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
...wdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
+8
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
...main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
+52
-75
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/GroupPurchaseInfo.java
...rc/main/java/com/wwdz/ch/wx/entity/GroupPurchaseInfo.java
+3
-3
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/GroupPurchaseItemVo.java
...wdz/ch/wx/entity/vo/distribution/GroupPurchaseItemVo.java
+2
-2
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
...ch/wx/impl/distribution/DistributionOrderServiceImpl.java
+60
-14
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/GroupPurchaseServiceImpl.java
...wdz/ch/wx/impl/distribution/GroupPurchaseServiceImpl.java
+29
-74
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
...ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
+40
-2
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/GroupPurchaseService.java
...wwdz/ch/wx/service/distribution/GroupPurchaseService.java
+6
-12
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/UserAccountDetailService.java
.../ch/wx/service/distribution/UserAccountDetailService.java
+7
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
...z/ch/wx/web/distribution/DistributionOrderController.java
+13
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/GroupPurchaseController.java
.../wwdz/ch/wx/web/distribution/GroupPurchaseController.java
+3
-14
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
View file @
4dd4c6ca
...
...
@@ -190,11 +190,13 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
}
}
else
if
(
supplierItem
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
GROUP_PURCHASE
.
getCode
())
{
GroupPurchaseConfig
groupPurchaseConfig
=
groupPurchaseConfigDao
.
findByItemId
(
supplierItem
.
getId
());
if
(
groupPurchaseConfig
.
getEndTime
().
before
(
now
)
&&
groupPurchaseConfig
.
getState
()
!=
GroupPurchaseEnum
.
ItemStateEnum
.
END
.
getCode
())
{
groupPurchaseConfigDao
.
updateState
(
supplierItem
.
getId
(),
GroupPurchaseEnum
.
ItemStateEnum
.
END
.
getCode
());
}
else
if
(
now
.
after
(
groupPurchaseConfig
.
getStartTime
())
&&
groupPurchaseConfig
.
getEndTime
().
after
(
now
)
&&
groupPurchaseConfig
.
getState
()
==
GroupPurchaseEnum
.
ItemStateEnum
.
NOT_START
.
getCode
())
{
groupPurchaseConfigDao
.
updateState
(
groupPurchaseConfig
.
getItemId
(),
GroupPurchaseEnum
.
ItemStateEnum
.
PROCESSING
.
getCode
());
if
(
groupPurchaseConfig
.
getStartTime
()
!=
null
&&
groupPurchaseConfig
.
getEndTime
()
!=
null
)
{
if
(
groupPurchaseConfig
.
getEndTime
().
before
(
now
)
&&
groupPurchaseConfig
.
getState
()
!=
GroupPurchaseEnum
.
ItemStateEnum
.
END
.
getCode
())
{
groupPurchaseConfigDao
.
updateState
(
supplierItem
.
getId
(),
GroupPurchaseEnum
.
ItemStateEnum
.
END
.
getCode
());
}
else
if
(
now
.
after
(
groupPurchaseConfig
.
getStartTime
())
&&
groupPurchaseConfig
.
getEndTime
().
after
(
now
)
&&
groupPurchaseConfig
.
getState
()
==
GroupPurchaseEnum
.
ItemStateEnum
.
NOT_START
.
getCode
())
{
groupPurchaseConfigDao
.
updateState
(
groupPurchaseConfig
.
getItemId
(),
GroupPurchaseEnum
.
ItemStateEnum
.
PROCESSING
.
getCode
());
}
}
supplierItemVo
.
setSalePrice
(
PriceUtil
.
convertPriceFenToYuan
(
groupPurchaseConfig
.
getPrice
()));
supplierItemVo
.
setGroupPurchaseStartTime
(
DateUtils
.
toString
(
groupPurchaseConfig
.
getStartTime
()));
...
...
ch-core/src/main/java/com/wwdz/ch/core/consts/DistributionEnum.java
View file @
4dd4c6ca
...
...
@@ -7,7 +7,7 @@ public class DistributionEnum {
*/
public
enum
DistributionOrderStateEnum
{
PRE_PAY
(
1
,
"待付款"
),
PRE_SALE
(
5
,
"
预售
中"
),
PRE_SALE
(
5
,
"
众筹
中"
),
PRE_SEND
(
10
,
"待发货"
),
PRE_SIGNED
(
20
,
"待收货"
),
AFTER_SALE
(
30
,
"售后中"
),
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
View file @
4dd4c6ca
...
...
@@ -15,6 +15,8 @@ public interface UserAccountDetailDao {
List
<
UserAccountDetail
>
findList
(
UserAccountDetailRequestDto
dto
);
List
<
UserAccountDetail
>
findByTransactionId
(
String
transactionId
);
/**
* 根据交易id和收支类型查询账单明细
* @param transactionId
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/GroupPurchaseRecordRequestDto.java
View file @
4dd4c6ca
...
...
@@ -30,6 +30,11 @@ public class GroupPurchaseRecordRequestDto extends BaseRequestDto {
*/
private
String
transactionId
;
/**
* 买方的微信openid
*/
private
String
buyerOpenid
;
/**
* 商品id
*/
...
...
@@ -45,11 +50,6 @@ public class GroupPurchaseRecordRequestDto extends BaseRequestDto {
*/
private
Long
userId
;
/**
* 用户openid
*/
private
String
userOpenid
;
/**
* 定金金额
*/
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
View file @
4dd4c6ca
...
...
@@ -66,6 +66,14 @@ public class UserAccountDetailDaoImpl implements UserAccountDetailDao {
}
@Override
public
List
<
UserAccountDetail
>
findByTransactionId
(
String
transactionId
)
{
UserAccountDetailExample
example
=
new
UserAccountDetailExample
();
UserAccountDetailExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransactionIdEqualTo
(
transactionId
);
return
userAccountDetailMapper
.
selectByExample
(
example
);
}
@Override
public
UserAccountDetail
find
(
String
transactionId
,
int
type
)
{
UserAccountDetailExample
example
=
new
UserAccountDetailExample
();
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/api/WxPayCallbackController.java
View file @
4dd4c6ca
...
...
@@ -166,46 +166,38 @@ public class WxPayCallbackController {
Result
<
Transaction
>
queryResult
=
wxPayServiceApi
.
queryOrderBytOutTradeNo
(
distributionOrderRequestDto
);
//支付成功,修改订单状态
if
(
queryResult
.
getSuccess
())
{
//处理团购支付订单定金的逻辑,判断单号的前缀是否是定金交易订单号
if
(
distributionOrderId
.
startsWith
(
CommConsts
.
GROUPPURCHASE_DEPOSIT_PREFIX
))
{
Result
updateResult
=
handleOrderOfDeposit
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
else
{
//查询系统中订单现在的状态,避免重复更新
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
if
(
distributionOrder
.
getState
()
==
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_PAY
.
getCode
())
{
//一口价处理逻辑
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
FIXED_PRICE
.
getCode
())
{
Result
updateResult
=
updateOrderStateAndInsertProfit
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
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
);
}
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
DISCOUNT
.
getCode
())
{
//折扣订单
Result
updateResult
=
handleOrderOfDiscount
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
GROUP_PURCHASE
.
getCode
())
{
//团购订单
Result
updateResult
=
handleOrderOfGroupPurchase
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
//查询系统中订单现在的状态,避免重复更新
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
if
(
distributionOrder
.
getState
()
==
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_PAY
.
getCode
())
{
//一口价处理逻辑
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
FIXED_PRICE
.
getCode
())
{
Result
updateResult
=
updateOrderStateAndInsertProfit
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
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
);
}
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
DISCOUNT
.
getCode
())
{
//折扣订单
Result
updateResult
=
handleOrderOfDiscount
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
else
if
(
distributionOrder
.
getType
()
==
DistributionEnum
.
DistributionTypeEnum
.
GROUP_PURCHASE
.
getCode
())
{
//团购订单
Result
updateResult
=
handleOrderOfGroupPurchase
(
transaction
);
if
(!
updateResult
.
getSuccess
())
{
return
JsonUtils
.
from
(
returnMap
);
}
}
}
...
...
@@ -398,13 +390,11 @@ public class WxPayCallbackController {
}
return
Result
.
failed
();
}
/**
/*
*//**
* 处理团购订单定金支付回调
* @return
*/
*/
/*
public Result handleOrderOfDeposit(Transaction transaction) {
try {
//商户订单号,分销订单号
...
...
@@ -435,8 +425,7 @@ public class WxPayCallbackController {
logger.error(">>>>>>>>>>>> 团购订单支付定金回调通知处理失败 error :{}", e);
}
return Result.failed();
}
}*/
/**
...
...
@@ -471,7 +460,7 @@ public class WxPayCallbackController {
/**
* 处理
团购订单
的回调
* 处理
众筹祝福成功
的回调
* @param transaction
* @return
*/
...
...
@@ -488,24 +477,23 @@ public class WxPayCallbackController {
distributionOrderDto
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrderDto
.
setTransactionId
(
transactionId
);
distributionOrderDto
.
setPayTime
(
TimeUtil
.
wxTimeConvertToDate
(
payTime
));
distributionOrderDto
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_S
END
.
getCode
());
distributionOrderDto
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_S
ALE
.
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
(
">>>>>>>>>>>> 团购订单,微信支付回调通知处理成功,更新
拍卖
订单状态和商品库存 <<<<<<<<<<<<"
);
logger
.
info
(
">>>>>>>>>>>> 团购订单,微信支付回调通知处理成功,更新
团购
订单状态和商品库存 <<<<<<<<<<<<"
);
//新增用户账户的明细,调整月度账单
DistributorProfit
distributorProfit
=
distributorProfitDao
.
findById
(
distributionOrderId
);
userAccountDetailService
.
create
(
distributionOrder
,
distributorProfit
);
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>
竞拍
订单,微信支付回调通知处理失败 error :{}"
,
e
);
logger
.
error
(
">>>>>>>>>>>>
团购
订单,微信支付回调通知处理失败 error :{}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
return
Result
.
failed
();
...
...
@@ -597,29 +585,10 @@ public class WxPayCallbackController {
String
successTime
=
refundNotification
.
getSuccessTime
();
//查询系统中订单现在的状态,避免重复更新
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
if
(
distributionOrderId
.
startsWith
(
CommConsts
.
DISTRIBUTION_ORDER_PREFIX
))
{
//只有在订单状态为退款处理中,才进行退款成功的状态修改
if
(
distributionOrder
.
getState
()
==
DistributionEnum
.
DistributionOrderStateEnum
.
REFUNDING
.
getCode
())
{
//订单改为已取消的状态
distributionOrderDao
.
updateState
(
distributionOrderId
,
DistributionEnum
.
DistributionOrderStateEnum
.
CANCEL
.
getCode
());
//退款单状态改为成功
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setRefundId
(
refundId
);
refundOrder
.
setWxRefundId
(
refundNotification
.
getRefundId
());
refundOrder
.
setUpdateTime
(
new
Date
());
refundOrder
.
setSuccessTime
(
TimeUtil
.
wxTimeConvertToDate
(
successTime
));
refundOrder
.
setUserReceivedAccount
(
refundNotification
.
getUserReceivedAccount
());
refundOrder
.
setState
(
RefundOrderEnum
.
StateEnum
.
SUCCESS
.
getCode
());
refundOrderDao
.
update
(
refundOrder
);
//分销商利润记录改为无效
distributorProfitDao
.
updateValidState
(
distributionOrderId
,
false
);
logger
.
info
(
">>>>>>>> 分销单号:{}, 退款单号:{},退款处理成功, 退款时间为: {}<<<<<<<<<"
,
distributionOrderId
,
refundId
,
TimeUtil
.
wxTimeConvertToDate
(
successTime
));
returnMap
.
put
(
"code"
,
"SUCCESS"
);
returnMap
.
put
(
"message"
,
"成功"
);
return
JsonUtils
.
from
(
returnMap
);
}
}
else
if
(
distributionOrderId
.
startsWith
(
CommConsts
.
GROUPPURCHASE_DEPOSIT_PREFIX
))
{
//团购定金交易单的退款处理
//只有在订单状态为退款处理中,才进行退款成功的状态修改
if
(
distributionOrder
.
getState
()
==
DistributionEnum
.
DistributionOrderStateEnum
.
REFUNDING
.
getCode
())
{
//订单改为已取消的状态
distributionOrderDao
.
updateState
(
distributionOrderId
,
DistributionEnum
.
DistributionOrderStateEnum
.
CANCEL
.
getCode
());
//退款单状态改为成功
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setRefundId
(
refundId
);
...
...
@@ -629,6 +598,14 @@ public class WxPayCallbackController {
refundOrder
.
setUserReceivedAccount
(
refundNotification
.
getUserReceivedAccount
());
refundOrder
.
setState
(
RefundOrderEnum
.
StateEnum
.
SUCCESS
.
getCode
());
refundOrderDao
.
update
(
refundOrder
);
//分销商利润记录改为无效
distributorProfitDao
.
updateValidState
(
distributionOrderId
,
false
);
//账单记录设置无效
userAccountDetailService
.
cancel
(
distributionOrder
);
logger
.
info
(
">>>>>>>> 分销单号:{}, 退款单号:{},退款处理成功, 退款时间为: {} <<<<<<<<<"
,
distributionOrderId
,
refundId
,
TimeUtil
.
wxTimeConvertToDate
(
successTime
));
returnMap
.
put
(
"code"
,
"SUCCESS"
);
returnMap
.
put
(
"message"
,
"成功"
);
return
JsonUtils
.
from
(
returnMap
);
}
}
else
{
//退款单状态改为失败
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/GroupPurchaseInfo.java
View file @
4dd4c6ca
...
...
@@ -12,7 +12,7 @@ public class GroupPurchaseInfo implements Entity {
/**
* 团购优惠要求件数
*/
private
Integer
require
Num
;
private
Integer
target
Num
;
/**
* 已达到的件数
...
...
@@ -40,9 +40,9 @@ public class GroupPurchaseInfo implements Entity {
private
List
<
String
>
userAvatarList
;
/**
*
优惠
比例
*
进度
比例
*/
private
String
r
eb
ate
;
private
String
rate
;
/**
* 团购结束时间
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/GroupPurchaseItemVo.java
View file @
4dd4c6ca
...
...
@@ -53,8 +53,8 @@ public class GroupPurchaseItemVo implements Entity {
private
Boolean
isSubscribedOfPay
;
/**
*
折扣相关信息、
进度
*
团购
进度
*/
private
GroupPurchaseInfo
discount
Info
;
private
GroupPurchaseInfo
rate
Info
;
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
View file @
4dd4c6ca
...
...
@@ -491,15 +491,12 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public
Result
createGroupPurchaseOrder
(
GroupPurchaseRecordRequestDto
dto
)
{
try
{
//查询团购定金
GroupPurchaseRecord
groupPurchaseRecord
=
groupPurchaseRecordDao
.
findByPayId
(
dto
.
getDepositPayId
());
long
itemId
=
groupPurchaseRecord
.
getItemId
();
long
itemId
=
dto
.
getItemId
();
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
itemId
);
//查询该用户和藏家的介绍人
FollowFansRecordRequestDto
followFansRecordRequestDto
=
new
FollowFansRecordRequestDto
();
followFansRecordRequestDto
.
setFollowerId
(
supplierItem
.
getCreatorId
());
followFansRecordRequestDto
.
setFansId
(
groupPurchaseRecord
.
getUserId
());
followFansRecordRequestDto
.
setFansId
(
dto
.
getUserId
());
FollowFansRecord
followFansRecord
=
followFansRecordDao
.
findOne
(
followFansRecordRequestDto
);
long
introducerId
;
//没有关注记录,则介绍费算作平台的
...
...
@@ -509,25 +506,76 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
//把介绍人作为该订单的分享链接字段的值
introducerId
=
followFansRecord
.
getIntroducerId
();
}
//查询团购商品配置
GroupPurchaseConfig
groupPurchaseConfig
=
groupPurchaseConfigDao
.
findByItemId
(
itemId
);
String
distributionOrderId
=
IdUtils
.
getOrderNumber
(
DISTRIBUTION_ORDER_PREFIX
);
DistributionOrderRequestDto
prePayDto
=
new
DistributionOrderRequestDto
();
prePayDto
.
setDistributionOrderId
(
distributionOrderId
);
prePayDto
.
setAmount
(
dto
.
getAmount
());
prePayDto
.
setBuyerOpenid
(
dto
.
getBuyerOpenid
());
prePayDto
.
setItemName
(
supplierItem
.
getName
());
Result
prePayResult
=
wxPayServiceApi
.
createPrepareOrder
(
prePayDto
);
if
(!
prePayResult
.
getSuccess
())
{
return
Result
.
failed
(
"众筹预下单失败"
);
}
String
prepayId
=
(
String
)
prePayResult
.
getData
();
DistributionOrder
distributionOrder
=
new
DistributionOrder
();
distributionOrder
.
setItemId
(
itemId
);
distributionOrder
.
setItemNum
(
groupPurchaseRecord
.
getItemNum
());
distributionOrder
.
setItemNum
(
dto
.
getItemNum
());
distributionOrder
.
setShareRecordId
(
String
.
valueOf
(
introducerId
));
distributionOrder
.
setDistributionOrderId
(
distributionOrderId
);
distributionOrder
.
setBuyerId
(
groupPurchaseRecord
.
getUserId
());
distributionOrder
.
setBuyerOpenid
(
groupPurchaseRecord
.
getUs
erOpenid
());
distributionOrder
.
setBuyerId
(
dto
.
getUserId
());
distributionOrder
.
setBuyerOpenid
(
dto
.
getBuy
erOpenid
());
distributionOrder
.
setShopId
(
supplierItem
.
getCreatorId
());
distributionOrder
.
setSellerId
(
supplierItem
.
getCreatorId
());
distributionOrder
.
setAmount
(
groupPurchaseConfig
.
getPrice
(
));
distributionOrder
.
setAmount
(
PriceUtil
.
convertPriceFromStr
(
dto
.
getAmount
()
));
distributionOrder
.
setCreateTime
(
new
Date
());
distributionOrder
.
setUpdateTime
(
new
Date
());
distributionOrder
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_
SALE
.
getCode
());
distributionOrder
.
setState
(
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_
PAY
.
getCode
());
distributionOrder
.
setType
(
DistributionEnum
.
DistributionTypeEnum
.
GROUP_PURCHASE
.
getCode
());
distributionOrderDao
.
insert
(
distributionOrder
);
//保存众筹记录
String
depositPayId
=
IdUtils
.
getOrderNumber
(
CommConsts
.
GROUPPURCHASE_DEPOSIT_PREFIX
);
GroupPurchaseRecord
groupPurchaseRecord
=
new
GroupPurchaseRecord
();
groupPurchaseRecord
.
setDepositPayId
(
depositPayId
);
groupPurchaseRecord
.
setPrepayId
(
prepayId
);
groupPurchaseRecord
.
setItemId
(
distributionOrder
.
getItemId
());
groupPurchaseRecord
.
setItemNum
(
distributionOrder
.
getItemNum
());
groupPurchaseRecord
.
setUserId
(
distributionOrder
.
getBuyerId
());
groupPurchaseRecord
.
setUserOpenid
(
distributionOrder
.
getBuyerOpenid
());
groupPurchaseRecord
.
setAmount
(
distributionOrder
.
getAmount
());
groupPurchaseRecord
.
setState
(
GroupPurchaseEnum
.
StateEnum
.
INVALID
.
getCode
());
groupPurchaseRecordDao
.
insert
(
groupPurchaseRecord
);
//计算利润
//查询该用户和藏家的介绍人
double
rebate
=
distributorProfitService
.
getIntroduceRebate
(
followFansRecordRequestDto
);
double
introduceCost
=
distributionOrder
.
getAmount
().
doubleValue
()
*
rebate
;
//实际订单到账金额
double
realAmount
=
distributionOrder
.
getAmount
().
doubleValue
()
*
(
1
-
CommConsts
.
WX_COMMISSION_REBATE
);
DistributorProfit
distributorProfit
=
new
DistributorProfit
();
//团购的平台佣金 = 订单金额 - 藏家供货价 - 介绍佣金
double
channelServiceCost
=
distributionOrder
.
getAmount
().
doubleValue
()
-
supplierItem
.
getSupplyPrice
()
-
introduceCost
;
distributorProfit
.
setChannelCost
(
PriceUtil
.
convertPriceFromStr
(
PriceUtil
.
convertDoubleToString
(
channelServiceCost
)));
distributorProfit
.
setIntroduceCost
(
PriceUtil
.
convertPriceFromStr
(
PriceUtil
.
convertDoubleToString
(
introduceCost
)));
distributorProfit
.
setDistributionOrderId
(
distributionOrderId
);
distributorProfit
.
setDistributorId
(
distributionOrder
.
getSellerId
());
distributorProfit
.
setItemId
(
distributionOrder
.
getItemId
());
distributorProfit
.
setItemNum
(
distributionOrder
.
getItemNum
());
distributorProfit
.
setAmount
(
distributionOrder
.
getAmount
());
distributorProfit
.
setRealAmount
(
PriceUtil
.
convertPriceFromStr
(
PriceUtil
.
convertDoubleToString
(
realAmount
)));
distributorProfit
.
setItemCost
(
supplierItem
.
getSupplyPrice
());
distributorProfit
.
setChannelCost
(
PriceUtil
.
convertPriceFromStr
(
PriceUtil
.
convertDoubleToString
(
channelServiceCost
)));
distributorProfit
.
setIntroduceCost
(
PriceUtil
.
convertPriceFromStr
(
PriceUtil
.
convertDoubleToString
(
introduceCost
)));
//团购订单,藏家的利润就是商品设置的供货价
distributorProfit
.
setProfit
(
supplierItem
.
getSupplyPrice
());
distributorProfit
.
setCreateTime
(
new
Date
());
distributorProfit
.
setType
(
DistributionEnum
.
DistributionTypeEnum
.
GROUP_PURCHASE
.
getCode
());
distributorProfit
.
setIsValid
(
false
);
distributorProfitDao
.
insert
(
distributorProfit
);
return
Result
.
success
(
distributionOrderId
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"团购订单创建失败 error : {}"
,
e
);
...
...
@@ -1007,8 +1055,6 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
Result
<
GroupPurchaseInfo
>
result
=
groupPurchaseService
.
checkGroupPurchase
(
groupPurchaseRecordRequestDto
);
GroupPurchaseConfig
groupPurchaseConfig
=
groupPurchaseConfigDao
.
findByItemId
(
distributionOrder
.
getItemId
());
distributionOrderDetailVo
.
setDeposit
(
PriceUtil
.
convertPriceFenToYuan
(
groupPurchaseConfig
.
getDeposit
()));
distributionOrderDetailVo
.
setSurplusAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()
-
groupPurchaseConfig
.
getDeposit
()));
distributionOrderDetailVo
.
setGroupPurchaseEndTime
(
groupPurchaseConfig
.
getEndTime
());
Date
endTime
=
groupPurchaseConfig
.
getEndTime
();
Instant
instant
=
endTime
.
toInstant
().
plus
(
Duration
.
ofHours
(
24
));
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/GroupPurchaseServiceImpl.java
View file @
4dd4c6ca
...
...
@@ -15,12 +15,11 @@ import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.GroupPurchaseConfigRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.GroupPurchaseRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.SpecialPerformanceRequestDto
;
import
com.wwdz.ch.wx.entity.GroupPurchaseInfo
;
import
com.wwdz.ch.wx.entity.vo.distribution.GroupPurchaseItemVo
;
import
com.wwdz.ch.wx.service.distribution.DistributorProfitService
;
import
com.wwdz.ch.wx.service.distribution.GroupPurchaseService
;
import
jdk.internal.org.objectweb.asm.Handl
e
;
import
com.wwdz.ch.wx.service.distribution.UserAccountDetailServic
e
;
import
org.redisson.api.RLock
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -28,12 +27,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
GroupPurchaseServiceImpl
implements
GroupPurchaseService
{
...
...
@@ -46,9 +43,6 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
@Autowired
GroupPurchaseConfigDao
groupPurchaseConfigDao
;
@Autowired
GroupPurchaseDiscountDao
groupPurchaseDiscountDao
;
@Autowired
GroupPurchaseRecordDao
groupPurchaseRecordDao
;
...
...
@@ -73,6 +67,8 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
@Autowired
DisposableSubscribeRecordDao
disposableSubscribeRecordDao
;
@Autowired
UserAccountDetailService
userAccountDetailService
;
@Override
public
Result
findList
(
GroupPurchaseConfigRequestDto
dto
)
{
...
...
@@ -108,7 +104,7 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
if
(!
result
.
getSuccess
())
{
continue
;
}
groupPurchaseItemVo
.
set
Discount
Info
(
result
.
getData
());
groupPurchaseItemVo
.
set
Rate
Info
(
result
.
getData
());
groupPurchaseItemVos
.
add
(
groupPurchaseItemVo
);
}
return
Result
.
success
(
groupPurchaseItemVos
);
...
...
@@ -138,7 +134,7 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
if
(!
result
.
getSuccess
())
{
return
Result
.
failed
(
"查询团购信息错误"
);
}
groupPurchaseItemVo
.
set
Discount
Info
(
result
.
getData
());
groupPurchaseItemVo
.
set
Rate
Info
(
result
.
getData
());
groupPurchaseItemVo
.
setIsSubscribedOfCloseToSuccess
(
disposableSubscribeRecordDao
.
isSubscribed
(
dto
.
getUserId
(),
itemId
,
DisposableSubscribeRecordEnum
.
TypeEnum
.
GROUPPURASE_CLOSER_TO_SUCCESS
.
getType
()));
groupPurchaseItemVo
.
setIsSubscribedOfPay
(
disposableSubscribeRecordDao
.
isSubscribed
(
dto
.
getUserId
(),
itemId
,
DisposableSubscribeRecordEnum
.
TypeEnum
.
GROUPPURASE_SURPLUS_AMOUNT_PAY
.
getType
()));
return
Result
.
success
(
groupPurchaseItemVo
);
...
...
@@ -148,42 +144,11 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
return
Result
.
failed
(
"查询团购商品详情失败"
);
}
@Override
public
Result
payDeposit
(
GroupPurchaseRecordRequestDto
dto
)
{
try
{
GroupPurchaseRecord
groupPurchaseRecord
=
new
GroupPurchaseRecord
();
//支付团购定金的交易单号
String
depositPayId
=
IdUtils
.
getOrderNumber
(
CommConsts
.
GROUPPURCHASE_DEPOSIT_PREFIX
);
groupPurchaseRecord
.
setDepositPayId
(
depositPayId
);
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
dto
.
getItemId
());
DistributionOrderRequestDto
prePayDto
=
new
DistributionOrderRequestDto
();
prePayDto
.
setDistributionOrderId
(
depositPayId
);
prePayDto
.
setAmount
(
PriceUtil
.
convertPriceFromStr
(
dto
.
getAmount
()).
toString
());
String
openid
=
cacheUtil
.
appletUserInfoCache
.
get
(
dto
.
getUserId
()).
get
().
getWeixinOpenid
();
prePayDto
.
setBuyerOpenid
(
openid
);
prePayDto
.
setItemName
(
supplierItem
.
getName
());
Result
prePayResult
=
wxPayServiceApi
.
createPrepareOrder
(
prePayDto
);
if
(!
prePayResult
.
getSuccess
())
{
logger
.
error
(
">>>>>>>> 团购定金交易号: {}, 预下单失败 <<<<<<<<"
,
depositPayId
);
return
Result
.
failed
(
ResultCode
.
PAY_FAILED
);
}
String
prepayId
=
(
String
)
prePayResult
.
getData
();
groupPurchaseRecord
.
setPrepayId
(
prepayId
);
groupPurchaseRecord
.
setState
(
GroupPurchaseEnum
.
StateEnum
.
INVALID
.
getCode
());
groupPurchaseRecordDao
.
insert
(
groupPurchaseRecord
);
Result
result
=
wxPayServiceApi
.
wxAppPayTuneUp
(
prepayId
);
return
result
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"团购定金预支付失败 error : {}"
,
e
);
}
return
Result
.
failed
(
"团购定金支付失败"
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
cancel
Deposit
(
GroupPurchaseRecordRequestDto
dto
)
{
public
Result
cancel
Order
(
GroupPurchaseRecordRequestDto
dto
)
{
RLock
lock
=
null
;
try
{
String
refundId
=
IdUtils
.
getOrderNumber
(
CommConsts
.
REFUND_ORDER_PREFIX
);
...
...
@@ -191,15 +156,14 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
String
distributionOrderId
=
dto
.
getDistributionOrderId
();
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
if
(
distributionOrder
.
getState
()
!=
DistributionEnum
.
DistributionOrderStateEnum
.
PRE_SALE
.
getCode
())
{
return
Result
.
failed
(
"订单不是
预售状态,不能取消定金
"
);
return
Result
.
failed
(
"订单不是
众筹中的状态,不能取消
"
);
}
//查询
定金支付
记录
//查询
团购
记录
GroupPurchaseRecord
groupPurchaseRecord
=
groupPurchaseRecordDao
.
findByOrderId
(
distributionOrderId
);
DistributionOrderRefundRequestDto
refundRequestDto
=
new
DistributionOrderRefundRequestDto
();
String
depositPayId
=
groupPurchaseRecord
.
getDepositPayId
();
refundRequestDto
.
setDistributionOrderId
(
depositPayId
);
refundRequestDto
.
setRefundPrice
(
groupPurchaseRecord
.
getAmount
());
refundRequestDto
.
setAmount
(
groupPurchaseRecord
.
getAmount
());
refundRequestDto
.
setDistributionOrderId
(
distributionOrderId
);
refundRequestDto
.
setRefundPrice
(
distributionOrder
.
getAmount
());
refundRequestDto
.
setAmount
(
distributionOrder
.
getAmount
());
refundRequestDto
.
setRefundId
(
refundId
);
Result
result
=
wxPayServiceApi
.
orderRefund
(
refundRequestDto
);
if
(!
result
.
getSuccess
())
{
...
...
@@ -211,27 +175,28 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
//创建退款单
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setRefundId
(
refundId
);
refundOrder
.
setRefundAmount
(
groupPurchaseRecord
.
getAmount
());
refundOrder
.
setAmount
(
groupPurchaseRecord
.
getAmount
());
refundOrder
.
setDistributionOrderId
(
d
epositPay
Id
);
refundOrder
.
setRefundAmount
(
distributionOrder
.
getAmount
());
refundOrder
.
setAmount
(
distributionOrder
.
getAmount
());
refundOrder
.
setDistributionOrderId
(
d
istributionOrder
Id
);
refundOrder
.
setDistributorId
(
distributionOrder
.
getSellerId
());
refundOrder
.
setCreateTime
(
now
);
refundOrder
.
setUpdateTime
(
now
);
refundOrder
.
setState
(
RefundOrderEnum
.
StateEnum
.
PROCESSING
.
getCode
());
refundOrderDao
.
insert
(
refundOrder
);
//退款受理成功,订单的状态改为
取消
distributionOrderDao
.
updateState
(
distributionOrderId
,
DistributionEnum
.
DistributionOrderStateEnum
.
CANCEL
.
getCode
());
//退款受理成功,订单的状态改为
退款中
distributionOrderDao
.
updateState
(
distributionOrderId
,
DistributionEnum
.
DistributionOrderStateEnum
.
REFUNDING
.
getCode
());
//团购的记录改为无效
GroupPurchaseRecord
updateRecord
=
new
GroupPurchaseRecord
();
updateRecord
.
setId
(
groupPurchaseRecord
.
getId
());
updateRecord
.
setState
(
GroupPurchaseEnum
.
StateEnum
.
INVALID
.
getCode
());
groupPurchaseRecordDao
.
updateByPrimaryKey
(
updateRecord
);
logger
.
info
(
">>>>>>>> 分销单号:{}, 退款单号:{}, 定金退款申请成功,创建退款单 <<<<<<<<<"
,
distributionOrderId
,
refundId
);
//利润记录无效
distributorProfitDao
.
updateValidState
(
dto
.
getDistributionOrderId
(),
false
);
logger
.
info
(
">>>>>>>> 订单号:{}, 退款单号:{}, 退款申请成功,创建退款单 <<<<<<<<<"
,
distributionOrderId
,
refundId
);
return
Result
.
success
(
refundId
);
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"
定金
退款申请失败 error : {}"
,
e
);
logger
.
error
(
"
团购
退款申请失败 error : {}"
,
e
);
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
}
finally
{
if
(
lock
!=
null
&&
lock
.
isHeldByCurrentThread
())
{
...
...
@@ -262,30 +227,21 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
userAvatarList
.
add
(
StringUtils
.
isEmpty
(
avatarUrl
)
?
CommConsts
.
DEFAULT_AVATAR_URL
:
avatarUrl
);
}
//查询团购
的优惠
信息
//查询团购
配置
信息
GroupPurchaseConfig
groupPurchaseConfig
=
groupPurchaseConfigDao
.
findByItemId
(
dto
.
getItemId
());
List
<
GroupPurchaseDiscount
>
groupPurchaseDiscounts
=
groupPurchaseDiscountDao
.
findByItemId
(
dto
.
getItemId
());
//目前只有一个优惠,取第一个
if
(
CollectionUtils
.
isEmpty
(
groupPurchaseDiscounts
))
{
return
Result
.
failed
(
"没有团购配置信息"
);
}
GroupPurchaseDiscount
groupPurchaseDiscount
=
groupPurchaseDiscounts
.
get
(
0
);
int
requireNum
=
groupPurchaseDiscount
.
getRequireNum
();
if
(
itemNum
>=
requireNum
)
{
rebate
=
groupPurchaseDiscount
.
getRebate
();
}
int
targetNum
=
groupPurchaseConfig
.
getTargetNum
();
GroupPurchaseInfo
groupPurchaseInfo
=
new
GroupPurchaseInfo
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
itemNum
>=
requireNum
)
{
if
(
itemNum
>=
targetNum
)
{
groupPurchaseInfo
.
setGroupPurchaseSuccess
(
true
);
}
else
{
groupPurchaseInfo
.
setGroupPurchaseSuccess
(
false
);
}
groupPurchaseInfo
.
setRequireNum
(
requireNum
);
double
num
=
(
double
)
itemNum
/
(
double
)
targetNum
*
100
;
String
rate
=
String
.
format
(
"%.0f"
,
num
);
groupPurchaseInfo
.
setRate
(
String
.
valueOf
(
rate
));
groupPurchaseInfo
.
setTargetNum
(
targetNum
);
groupPurchaseInfo
.
setItemNum
((
int
)
itemNum
);
groupPurchaseInfo
.
setPeopleNum
((
int
)
peopleNum
);
groupPurchaseInfo
.
setDeposit
(
PriceUtil
.
convertPriceFenToYuan
(
groupPurchaseConfig
.
getDeposit
()));
groupPurchaseInfo
.
setRebate
(
rebate
.
toPlainString
());
groupPurchaseInfo
.
setEndTime
(
groupPurchaseConfig
.
getEndTime
());
groupPurchaseInfo
.
setSalePrice
(
PriceUtil
.
convertPriceFenToYuan
(
groupPurchaseConfig
.
getPrice
()));
groupPurchaseInfo
.
setUserAvatarList
(
userAvatarList
);
...
...
@@ -304,7 +260,7 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
return
Result
.
failed
(
"查询团购进度失败"
);
}
/*
@Override
public Result payBalance(GroupPurchaseRecordRequestDto dto) {
try {
...
...
@@ -313,9 +269,8 @@ public class GroupPurchaseServiceImpl implements GroupPurchaseService {
logger.error("支付尾款失败 error : {}", e);
}
return Result.failed("支付尾款失败");
}
}
*/
@Override
@Transactional
public
Result
calculateProfit
(
GroupPurchaseRecordRequestDto
dto
)
{
try
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
View file @
4dd4c6ca
...
...
@@ -8,6 +8,7 @@ import com.wwdz.ch.db.dao.distribution.UserBillDao;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
import
com.wwdz.ch.db.domain.distribution.UserAccountDetail
;
import
com.wwdz.ch.db.domain.distribution.UserBill
;
import
com.wwdz.ch.wx.service.distribution.UserAccountDetailService
;
import
com.wwdz.ch.wx.service.distribution.UserBillService
;
import
com.xxdxxs.utils.StringUtils
;
...
...
@@ -19,6 +20,9 @@ import org.springframework.transaction.annotation.Propagation;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
java.text.SimpleDateFormat
;
import
java.util.List
;
@Service
public
class
UserAccountDetailServiceImpl
implements
UserAccountDetailService
{
...
...
@@ -103,6 +107,40 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
}
}
@Override
public
Result
cancel
(
DistributionOrder
distributionOrder
)
{
try
{
String
distributionOrderId
=
distributionOrder
.
getDistributionOrderId
();
userAccountDetailDao
.
updateState
(
distributionOrderId
,
BillEnum
.
AccountDetailStateEnum
.
INVALID
.
getCode
());
logger
.
info
(
"========= 订单号:{},相关账户明细已失效 ========="
,
distributionOrder
);
//用户账户待入账金额需要减去当前退款的订单收入
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM"
);
String
accountPeriod
=
formatter
.
format
(
distributionOrder
.
getCreateTime
());
List
<
UserAccountDetail
>
userAccountDetailList
=
userAccountDetailDao
.
findByTransactionId
(
distributionOrderId
);
for
(
UserAccountDetail
userAccountDetail
:
userAccountDetailList
)
{
long
userId
=
userAccountDetail
.
getUserId
();
UserBill
userBill
=
userBillDao
.
findOne
(
accountPeriod
,
userId
,
null
);
if
(
userBill
!=
null
)
{
if
(
userAccountDetail
.
getType
()
==
BillEnum
.
AccountDetailTypeEnum
.
ORDER
.
getCode
())
{
//卖家订单收入无效
userBill
.
setOrderWaitEntryAmount
(
userBill
.
getOrderWaitEntryAmount
()
-
userAccountDetail
.
getAmount
());
userBill
.
setTotalWaitEntryAmount
(
userBill
.
getTotalWaitEntryAmount
()
-
userAccountDetail
.
getAmount
());
userBillDao
.
updateByPrimaryKey
(
userBill
);
logger
.
info
(
"========= 订单号:{},用户账单中的订单收入已失效 ========="
,
distributionOrder
);
}
else
if
(
userAccountDetail
.
getType
()
==
BillEnum
.
AccountDetailTypeEnum
.
INTRODUCE
.
getCode
())
{
//用户的介绍佣金无效
userBill
.
setIntroduceWaitEntryAmount
(
userBill
.
getIntroduceWaitEntryAmount
()
-
userAccountDetail
.
getAmount
());
userBill
.
setTotalWaitEntryAmount
(
userBill
.
getTotalWaitEntryAmount
()
-
userAccountDetail
.
getAmount
());
userBillDao
.
updateByPrimaryKey
(
userBill
);
logger
.
info
(
"========= 订单号:{},用户账单中的介绍佣金已失效 ========="
,
distributionOrder
);
}
}
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"账单设置失效 error:{}"
,
e
);
}
return
Result
.
failed
();
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/GroupPurchaseService.java
View file @
4dd4c6ca
...
...
@@ -24,19 +24,13 @@ public interface GroupPurchaseService {
*/
Result
findItemDetail
(
GroupPurchaseConfigRequestDto
dto
);
/**
* 支付团购定金
* @param dto
* @return
*/
Result
payDeposit
(
GroupPurchaseRecordRequestDto
dto
);
/**
* 取消
订单退定金
* 取消
团购订单
* @param dto
* @return
*/
Result
cancel
Deposit
(
GroupPurchaseRecordRequestDto
dto
);
Result
cancel
Order
(
GroupPurchaseRecordRequestDto
dto
);
/**
* 查询团购当前进度
...
...
@@ -45,15 +39,15 @@ public interface GroupPurchaseService {
*/
Result
<
GroupPurchaseInfo
>
checkGroupPurchase
(
GroupPurchaseRecordRequestDto
dto
);
/**
/* */
/**
* 支付团购订单尾款
* @param dto
* @return
*/
Result
payBalance
(
GroupPurchaseRecordRequestDto
dto
);
*/
/*
Result payBalance(GroupPurchaseRecordRequestDto dto);
*/
Result
calculateProfit
(
GroupPurchaseRecordRequestDto
dto
);
//
Result calculateProfit(GroupPurchaseRecordRequestDto dto);
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/UserAccountDetailService.java
View file @
4dd4c6ca
...
...
@@ -13,4 +13,11 @@ public interface UserAccountDetailService {
* @return
*/
Result
create
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
throws
Exception
;
/**
* 订单取消后,账单记录设置失效
* @param distributionOrder
* @return
*/
Result
cancel
(
DistributionOrder
distributionOrder
)
throws
Exception
;
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/DistributionOrderController.java
View file @
4dd4c6ca
...
...
@@ -2,10 +2,13 @@ package com.wwdz.ch.wx.web.distribution;
import
com.alibaba.fastjson.JSON
;
import
com.wwdz.ch.core.api.wxpay.WxPayServiceApi
;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.GroupPurchaseRecordRequestDto
;
import
com.wwdz.ch.wx.service.distribution.DistributionOrderService
;
import
com.xxdxxs.service.FormHandler
;
import
com.xxdxxs.utils.StringUtils
;
import
com.xxdxxs.validation.Validator
;
import
io.swagger.annotations.ApiOperation
;
import
org.slf4j.Logger
;
...
...
@@ -103,6 +106,16 @@ public class DistributionOrderController {
}
@ApiOperation
(
value
=
"创建团购订单"
)
@PostMapping
(
"/createGroupPurchaseOrder"
)
public
Result
createGroupPurchaseOrder
(
@RequestBody
GroupPurchaseRecordRequestDto
dto
)
{
logger
.
info
(
"创建团购订单,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
if
(!
StringUtils
.
isAllNotEmpty
(
dto
.
getItemId
(),
dto
.
getItemNum
(),
dto
.
getUserId
(),
dto
.
getBuyerOpenid
(),
dto
.
getAmount
()))
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
return
distributionOrderService
.
createGroupPurchaseOrder
(
dto
);
}
@ApiOperation
(
value
=
"前端获取支付所需参数"
)
@PostMapping
(
"/getPayParam"
)
public
Result
getPayParam
(
@RequestBody
DistributionOrderRequestDto
dto
)
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/web/distribution/GroupPurchaseController.java
View file @
4dd4c6ca
...
...
@@ -5,7 +5,6 @@ import com.wwdz.ch.core.consts.ResultCode;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.db.dto.request.distribution.GroupPurchaseConfigRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.GroupPurchaseRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.SpecialPerformanceRequestDto
;
import
com.wwdz.ch.wx.service.distribution.GroupPurchaseService
;
import
com.xxdxxs.utils.StringUtils
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -45,24 +44,14 @@ public class GroupPurchaseController {
}
@ApiOperation
(
value
=
"支付团购定金"
)
@PostMapping
(
"/payDeposit"
)
public
Result
payDeposit
(
@RequestBody
GroupPurchaseRecordRequestDto
dto
)
{
logger
.
info
(
"支付团购定金,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
if
(!
StringUtils
.
isAllNotEmpty
(
dto
.
getItemId
(),
dto
.
getUserId
(),
dto
.
getAmount
()))
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
return
groupPurchaseService
.
payDeposit
(
dto
);
}
@ApiOperation
(
value
=
"取消
订单退定金
"
)
@ApiOperation
(
value
=
"取消
团购订单
"
)
@PostMapping
(
"/cancelDeposit"
)
public
Result
cancelDeposit
(
@RequestBody
GroupPurchaseRecordRequestDto
dto
)
{
logger
.
info
(
"取消
订单退定金
,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
logger
.
info
(
"取消
团购订单
,请求参数:{}"
,
JSON
.
toJSONString
(
dto
));
if
(!
StringUtils
.
isAllNotEmpty
(
dto
.
getDistributionOrderId
()))
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
return
groupPurchaseService
.
cancel
Deposit
(
dto
);
return
groupPurchaseService
.
cancel
Order
(
dto
);
}
}
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