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
c2efc288
Commit
c2efc288
authored
Jul 17, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
计算介绍佣金
parent
00dd1533
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
4 deletions
+108
-4
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysUserBillServiceImpl.java
...n/java/com/wwdz/ch/admin/impl/SysUserBillServiceImpl.java
+42
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
...com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
+8
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
...wdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
+9
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
...com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
+49
-4
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysUserBillServiceImpl.java
View file @
c2efc288
...
@@ -6,9 +6,11 @@ import com.wwdz.ch.core.consts.CommConsts;
...
@@ -6,9 +6,11 @@ import com.wwdz.ch.core.consts.CommConsts;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IdUtils
;
import
com.wwdz.ch.core.util.IdUtils
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.UserAccountDetailDao
;
import
com.wwdz.ch.db.dao.distribution.UserBillDao
;
import
com.wwdz.ch.db.dao.distribution.UserBillDao
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
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.db.domain.distribution.UserBill
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.api.RedissonClient
;
...
@@ -40,6 +42,9 @@ public class SysUserBillServiceImpl implements SysUserBillService {
...
@@ -40,6 +42,9 @@ public class SysUserBillServiceImpl implements SysUserBillService {
@Autowired
@Autowired
DistributorProfitDao
distributorProfitDao
;
DistributorProfitDao
distributorProfitDao
;
@Autowired
UserAccountDetailDao
userAccountDetailDao
;
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
@Override
@Override
public
Result
finishCalculate
(
DistributionOrder
distributionOrder
){
public
Result
finishCalculate
(
DistributionOrder
distributionOrder
){
...
@@ -86,6 +91,12 @@ public class SysUserBillServiceImpl implements SysUserBillService {
...
@@ -86,6 +91,12 @@ public class SysUserBillServiceImpl implements SysUserBillService {
updateBill
.
setTotalEntryAmount
(
updateBill
.
getOrderEntryAmount
()
+
userBill
.
getIntroduceEntryAmount
());
updateBill
.
setTotalEntryAmount
(
updateBill
.
getOrderEntryAmount
()
+
userBill
.
getIntroduceEntryAmount
());
}
}
userBillDao
.
updateByPrimaryKey
(
updateBill
);
userBillDao
.
updateByPrimaryKey
(
updateBill
);
//计算介绍人的佣金(介绍人非卖家自己和平台)
if
(!
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
().
toString
())
&&
distributionOrder
.
getSellerId
().
longValue
()
!=
CommConsts
.
SYSTEM_ACCOUNT
)
{
calculateIntroduceAmount
(
distributionOrder
.
getDistributionOrderId
(),
accountPeriod
);
}
return
Result
.
success
();
return
Result
.
success
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"************ 订单完成后计算订单账单ERROR: {}"
,
e
);
logger
.
error
(
"************ 订单完成后计算订单账单ERROR: {}"
,
e
);
...
@@ -98,4 +109,35 @@ public class SysUserBillServiceImpl implements SysUserBillService {
...
@@ -98,4 +109,35 @@ public class SysUserBillServiceImpl implements SysUserBillService {
}
}
return
Result
.
failed
();
return
Result
.
failed
();
}
}
/**
* 计算介绍佣金
*/
private
void
calculateIntroduceAmount
(
String
distributionOrderId
,
String
accountPeriod
)
{
UserAccountDetail
userAccountDetail
=
userAccountDetailDao
.
find
(
distributionOrderId
,
BillEnum
.
AccountDetailTypeEnum
.
INTRODUCE
.
getCode
());
if
(
userAccountDetail
==
null
)
{
logger
.
error
(
"********** 交易id:{}, 查询不到佣金记录 **********"
,
distributionOrderId
);
return
;
}
long
userId
=
userAccountDetail
.
getUserId
();
long
amount
=
userAccountDetail
.
getAmount
();
//查询介绍人是否有账单
UserBill
userBill
=
userBillDao
.
findOne
(
accountPeriod
,
userId
,
BillEnum
.
BillStateEnum
.
NOT_PAID
.
getCode
());
if
(
userBill
==
null
)
{
logger
.
error
(
"********* 订单完成,介绍人: {}, 尚未创建 {} 账单 *********"
,
userId
,
accountPeriod
);
}
UserBill
updateBill
=
new
UserBill
();
long
newTotalWaitEntryAmount
=
userBill
.
getTotalWaitEntryAmount
()
-
amount
;
long
newIntroduceWaitEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
-
amount
;
long
newIntroduceEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
+
amount
;
long
newTotalEntryAmount
=
userBill
.
getTotalEntryAmount
()
+
amount
;
updateBill
.
setId
(
userBill
.
getId
());
updateBill
.
setTotalWaitEntryAmount
(
newTotalWaitEntryAmount
);
updateBill
.
setIntroduceWaitEntryAmount
(
newIntroduceWaitEntryAmount
);
updateBill
.
setTotalEntryAmount
(
newTotalEntryAmount
);
updateBill
.
setIntroduceEntryAmount
(
newIntroduceEntryAmount
);
userBillDao
.
updateByPrimaryKey
(
updateBill
);
}
}
}
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserAccountDetailDao.java
View file @
c2efc288
...
@@ -15,6 +15,14 @@ public interface UserAccountDetailDao {
...
@@ -15,6 +15,14 @@ public interface UserAccountDetailDao {
List
<
UserAccountDetail
>
findList
(
UserAccountDetailRequestDto
dto
);
List
<
UserAccountDetail
>
findList
(
UserAccountDetailRequestDto
dto
);
/**
* 根据交易id和收支类型查询账单明细
* @param transactionId
* @param type
* @return
*/
UserAccountDetail
find
(
String
transactionId
,
int
type
);
/**
/**
* 按照筛选条件汇总账户金额
* 按照筛选条件汇总账户金额
* @param dto
* @param dto
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
View file @
c2efc288
...
@@ -66,6 +66,15 @@ public class UserAccountDetailDaoImpl implements UserAccountDetailDao {
...
@@ -66,6 +66,15 @@ public class UserAccountDetailDaoImpl implements UserAccountDetailDao {
}
}
@Override
public
UserAccountDetail
find
(
String
transactionId
,
int
type
)
{
UserAccountDetailExample
example
=
new
UserAccountDetailExample
();
UserAccountDetailExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransactionIdEqualTo
(
transactionId
);
criteria
.
andTypeEqualTo
(
type
);
return
userAccountDetailMapper
.
selectOneByExample
(
example
);
}
@Override
@Override
public
long
summaryAmount
(
UserAccountDetailRequestDto
dto
)
{
public
long
summaryAmount
(
UserAccountDetailRequestDto
dto
)
{
UserAccountDetailExample
example
=
new
UserAccountDetailExample
();
UserAccountDetailExample
example
=
new
UserAccountDetailExample
();
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
View file @
c2efc288
...
@@ -5,9 +5,11 @@ import com.wwdz.ch.core.consts.CommConsts;
...
@@ -5,9 +5,11 @@ import com.wwdz.ch.core.consts.CommConsts;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IdUtils
;
import
com.wwdz.ch.core.util.IdUtils
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.DistributorProfitDao
;
import
com.wwdz.ch.db.dao.distribution.UserAccountDetailDao
;
import
com.wwdz.ch.db.dao.distribution.UserBillDao
;
import
com.wwdz.ch.db.dao.distribution.UserBillDao
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
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.db.domain.distribution.UserBill
;
import
com.wwdz.ch.wx.service.distribution.UserBillService
;
import
com.wwdz.ch.wx.service.distribution.UserBillService
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RLock
;
...
@@ -40,6 +42,9 @@ public class UserBillServiceImpl implements UserBillService {
...
@@ -40,6 +42,9 @@ public class UserBillServiceImpl implements UserBillService {
@Autowired
@Autowired
DistributorProfitDao
distributorProfitDao
;
DistributorProfitDao
distributorProfitDao
;
@Autowired
UserAccountDetailDao
userAccountDetailDao
;
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
@Transactional
(
propagation
=
Propagation
.
REQUIRES_NEW
)
@Override
@Override
public
Result
payCalculate
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
{
public
Result
payCalculate
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
{
...
@@ -93,13 +98,18 @@ public class UserBillServiceImpl implements UserBillService {
...
@@ -93,13 +98,18 @@ public class UserBillServiceImpl implements UserBillService {
updateBill
.
setId
(
userBill
.
getId
());
updateBill
.
setId
(
userBill
.
getId
());
updateBill
.
setTotalWaitEntryAmount
(
newTotalWaitEntryAmount
);
updateBill
.
setTotalWaitEntryAmount
(
newTotalWaitEntryAmount
);
updateBill
.
setOrderWaitEntryAmount
(
newOrderWaitEntryAmount
);
updateBill
.
setOrderWaitEntryAmount
(
newOrderWaitEntryAmount
);
if
(
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
()))
{
if
(
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
()
.
toString
()
))
{
//表示介绍人是卖家自己
//表示介绍人是卖家自己
long
newIntroduceWaitEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
+
introduceCost
;
long
newIntroduceWaitEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
+
introduceCost
;
updateBill
.
setIntroduceWaitEntryAmount
(
newIntroduceWaitEntryAmount
);
updateBill
.
setIntroduceWaitEntryAmount
(
newIntroduceWaitEntryAmount
);
}
}
userBillDao
.
updateByPrimaryKey
(
updateBill
);
userBillDao
.
updateByPrimaryKey
(
updateBill
);
}
}
//计算介绍人的佣金(介绍人非卖家自己和平台)
if
(!
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
().
toString
())
&&
distributionOrder
.
getSellerId
().
longValue
()
!=
CommConsts
.
SYSTEM_ACCOUNT
)
{
calculateIntroduceAmount
(
distributionOrder
.
getDistributionOrderId
(),
accountPeriod
);
}
return
Result
.
success
();
return
Result
.
success
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"************ 计算订单账单ERROR: {}"
,
e
);
logger
.
error
(
"************ 计算订单账单ERROR: {}"
,
e
);
...
@@ -113,8 +123,43 @@ public class UserBillServiceImpl implements UserBillService {
...
@@ -113,8 +123,43 @@ public class UserBillServiceImpl implements UserBillService {
return
Result
.
failed
();
return
Result
.
failed
();
}
}
/**
private
void
calculate
()
{
* 计算介绍佣金
*/
private
void
calculateIntroduceAmount
(
String
distributionOrderId
,
String
accountPeriod
)
{
UserAccountDetail
userAccountDetail
=
userAccountDetailDao
.
find
(
distributionOrderId
,
BillEnum
.
AccountDetailTypeEnum
.
INTRODUCE
.
getCode
());
if
(
userAccountDetail
==
null
)
{
logger
.
error
(
"********** 交易id:{}, 查询不到佣金记录 **********"
,
distributionOrderId
);
return
;
}
long
userId
=
userAccountDetail
.
getUserId
();
long
amount
=
userAccountDetail
.
getAmount
();
//查询介绍人是否有账单
UserBill
userBill
=
userBillDao
.
findOne
(
accountPeriod
,
userId
,
BillEnum
.
BillStateEnum
.
NOT_PAID
.
getCode
());
if
(
userBill
==
null
)
{
UserBill
newBill
=
new
UserBill
();
String
billId
=
IdUtils
.
getOrderNumber
(
CommConsts
.
USER_BILL_PREFIX
);
newBill
.
setBillId
(
billId
);
newBill
.
setAccountPeriod
(
accountPeriod
);
newBill
.
setUserId
(
userId
);
newBill
.
setTotalWaitEntryAmount
(
0L
);
newBill
.
setTotalEntryAmount
(
0L
);
newBill
.
setOrderWaitEntryAmount
(
0L
);
newBill
.
setOrderEntryAmount
(
0L
);
newBill
.
setIntroduceWaitEntryAmount
(
amount
);
newBill
.
setIntroduceEntryAmount
(
0L
);
newBill
.
setCreateTime
(
new
Date
());
newBill
.
setUpdateTime
(
new
Date
());
newBill
.
setState
(
BillEnum
.
BillStateEnum
.
NOT_PAID
.
getCode
());
userBillDao
.
insert
(
newBill
);
}
else
{
UserBill
updateBill
=
new
UserBill
();
long
newTotalWaitEntryAmount
=
userBill
.
getTotalWaitEntryAmount
()
+
amount
;
long
newIntroduceWaitEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
+
amount
;
updateBill
.
setId
(
userBill
.
getId
());
updateBill
.
setTotalWaitEntryAmount
(
newTotalWaitEntryAmount
);
updateBill
.
setIntroduceWaitEntryAmount
(
newIntroduceWaitEntryAmount
);
userBillDao
.
updateByPrimaryKey
(
updateBill
);
}
}
}
}
}
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