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
1d1c0d4c
Commit
1d1c0d4c
authored
Jul 11, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
查询账单列表
parent
22b314aa
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
485 additions
and
11 deletions
+485
-11
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/UserBillVo.java
...src/main/java/com/wwdz/ch/admin/entity/vo/UserBillVo.java
+92
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/UserOrderBillVo.java
...ain/java/com/wwdz/ch/admin/entity/vo/UserOrderBillVo.java
+94
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysFinanceServiceImpl.java
...in/java/com/wwdz/ch/admin/impl/SysFinanceServiceImpl.java
+70
-8
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
...ore/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
+5
-0
ch-core/src/main/java/com/wwdz/ch/core/util/DateTimeUtil.java
...ore/src/main/java/com/wwdz/ch/core/util/DateTimeUtil.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/SettlementRecordDao.java
.../com/wwdz/ch/db/dao/distribution/SettlementRecordDao.java
+2
-1
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserBillDao.java
...ain/java/com/wwdz/ch/db/dao/distribution/UserBillDao.java
+9
-0
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/UserAccountDetailRequestDto.java
...dto/request/distribution/UserAccountDetailRequestDto.java
+6
-2
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SettlementRecordDaoImpl.java
...wwdz/ch/db/impl/distribution/SettlementRecordDaoImpl.java
+9
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
...wdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserBillDaoImpl.java
...ava/com/wwdz/ch/db/impl/distribution/UserBillDaoImpl.java
+36
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
...ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
+24
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
...com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
+115
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/UserBillService.java
.../com/wwdz/ch/wx/service/distribution/UserBillService.java
+19
-0
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/UserBillVo.java
0 → 100644
View file @
1d1c0d4c
package
com.wwdz.ch.admin.entity.vo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
UserBillVo
implements
Entity
{
private
Integer
id
;
/**
* 账单id
*/
private
String
billId
;
/**
* 账期
*/
private
String
accountPeriod
;
/**
* 用户id
*/
private
Long
userId
;
/**
* 用户名称
*/
private
String
userName
;
/**
* 总入账金额
*/
private
Long
totalEntryAmount
;
/**
* 总待入账金额
*/
private
Long
totalWaitEntryAmount
;
/**
* 订单入账金额
*/
private
Long
orderEntryAmount
;
/**
* 订单待入账金额
*/
private
Long
orderWaitEntryAmount
;
/**
* 介绍佣金入账金额
*/
private
Long
introduceEntryAmount
;
/**
* 介绍佣金待入账金额
*/
private
Long
introduceWaitEntryAmount
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
/**
* 状态0未结款;1结款
*/
private
Integer
state
;
/**
* 银行卡号
*/
private
String
bankCardId
;
/**
* 银行卡号真实姓名
*/
private
String
realName
;
/**
* 结款凭证
*/
private
String
voucher
;
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/UserOrderBillVo.java
0 → 100644
View file @
1d1c0d4c
package
com.wwdz.ch.admin.entity.vo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Map
;
@Data
public
class
UserOrderBillVo
implements
Entity
{
/**
* 分销订单号
*/
private
String
distributionOrderId
;
/**
* 账期
*/
private
String
accountPeriod
;
/**
* 用于列表展示的图片对象
*/
private
Map
<
String
,
Object
>
homePageImage
;
/**
* 商品名称
*/
private
String
itemName
;
/**
* 卖方id
*/
private
Long
sellerId
;
/**
* 卖家名称
*/
private
String
sellerName
;
/**
* 订单金额,要除以100
*/
private
String
amount
;
/**
* 平台实际到账金额
* 要减去微信手续费1%
*/
private
String
realAmount
;
/**
* 订单创建时间
*/
private
Date
createTime
;
/**
* 分销订单状态
*/
private
Integer
state
;
/**
* 订单状态
*/
private
String
stateName
;
/**
* 订单类型1一口价2竞拍
*/
private
Integer
orderType
;
/**
* 订单类型1一口价2竞拍
*/
private
String
orderTypeName
;
/**
* 收入类型
*/
private
Integer
type
;
private
String
typeName
;
/**
* 已入账金额
*/
private
String
enrtyAmount
;
/**
* 待入账金额
*/
private
String
waitEnrtyAmount
;
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysFinanceServiceImpl.java
View file @
1d1c0d4c
...
...
@@ -2,23 +2,26 @@ package com.wwdz.ch.admin.impl;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.admin.entity.vo.OrderBillVo
;
import
com.wwdz.ch.admin.entity.vo.UserBillVo
;
import
com.wwdz.ch.admin.entity.vo.UserOrderBillVo
;
import
com.wwdz.ch.admin.service.SysFinanceService
;
import
com.wwdz.ch.core.consts.BillEnum
;
import
com.wwdz.ch.core.consts.CommConsts
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.consts.LogisticsEnum
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.DateTimeUtil
;
import
com.wwdz.ch.core.util.MediaUtil
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.db.dao.distribution.*
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
import
com.wwdz.ch.db.domain.distribution.SupplierItem
;
import
com.wwdz.ch.db.domain.distribution.*
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.UserAccountDetailRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.UserBillRequestDto
;
import
com.xxdxxs.utils.EntityMapper
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -29,6 +32,7 @@ import java.time.LocalDateTime;
import
java.time.YearMonth
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Service
...
...
@@ -54,6 +58,12 @@ public class SysFinanceServiceImpl implements SysFinanceService {
@Autowired
CacheUtil
cacheUtil
;
@Autowired
UserBankCardDao
userBankCardDao
;
@Autowired
SettlementRecordDao
settlementRecordDao
;
@Override
public
Result
findOrderBillDetail
(
DistributionOrderRequestDto
dto
)
{
try
{
...
...
@@ -61,8 +71,8 @@ public class SysFinanceServiceImpl implements SysFinanceService {
PageInfo
<
DistributionOrder
>
pageInfo
=
new
PageInfo
<>(
distributionOrderList
);
List
<
OrderBillVo
>
orderBillVoList
=
new
ArrayList
<>();
for
(
DistributionOrder
distributionOrder
:
distributionOrderList
)
{
String
distributionOrderId
=
distributionOrder
.
getDistributionOrderId
();
DistributorProfit
distributorProfit
=
distributorProfitDao
.
findById
(
distributionOrderId
);
String
distributionOrderId
=
distributionOrder
.
getDistributionOrderId
();
DistributorProfit
distributorProfit
=
distributorProfitDao
.
findById
(
distributionOrderId
);
OrderBillVo
orderBillVo
=
new
OrderBillVo
();
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
orderBillVo
.
setDistributionOrderId
(
distributionOrderId
);
...
...
@@ -107,8 +117,30 @@ public class SysFinanceServiceImpl implements SysFinanceService {
@Override
public
Result
findUserBill
(
UserBillRequestDto
dto
)
{
try
{
return
Result
.
success
();
List
<
UserBill
>
userBillList
=
userBillDao
.
findList
(
dto
);
PageInfo
<
UserBill
>
pageInfo
=
new
PageInfo
<>();
List
<
UserBillVo
>
userBillVoList
=
new
ArrayList
<>();
for
(
UserBill
userBill
:
userBillList
)
{
UserBillVo
userBillVo
=
new
UserBillVo
();
EntityMapper
.
copyAttribute
(
userBill
,
userBillVo
);
userBillVo
.
setAccountPeriod
(
userBill
.
getAccountPeriod
());
userBillVo
.
setUserName
(
cacheUtil
.
appletUserInfoCache
.
get
(
userBill
.
getUserId
()).
get
().
getNickname
());
//查询银行卡信息
UserBankCard
userBankCard
=
userBankCardDao
.
findById
(
userBill
.
getUserId
());
if
(
userBankCard
!=
null
)
{
userBillVo
.
setBankCardId
(
userBankCard
.
getCardId
());
userBillVo
.
setRealName
(
userBillVo
.
getRealName
());
}
if
(
userBill
.
getState
()
==
BillEnum
.
BillStateEnum
.
PAID
.
getCode
())
{
//查询结款凭证
SettlementRecord
settlementRecord
=
settlementRecordDao
.
findByBillId
(
userBill
.
getBillId
());
if
(
settlementRecord
!=
null
)
{
userBillVo
.
setVoucher
(
settlementRecord
.
getVoucher
());
}
}
userBillVoList
.
add
(
userBillVo
);
}
return
Result
.
success
(
PageSearchResult
.
of
(
pageInfo
,
userBillList
));
}
catch
(
Exception
e
)
{
logger
.
error
(
"查询用户账单error:{}"
,
e
);
}
...
...
@@ -118,7 +150,35 @@ public class SysFinanceServiceImpl implements SysFinanceService {
@Override
public
Result
findUserBillDetail
(
UserAccountDetailRequestDto
dto
)
{
try
{
if
(
dto
.
getStartCreateTime
()
==
null
||
dto
.
getEndCreateTime
()
==
null
)
{
Date
[]
dates
=
DateTimeUtil
.
getMonthDateTimeRange
(
dto
.
getAccountPeriod
());
dto
.
setStartCreateTime
(
dates
[
0
]);
dto
.
setEndCreateTime
(
dates
[
1
]);
}
List
<
UserAccountDetail
>
userAccountDetailList
=
userAccountDetailDao
.
findList
(
dto
);
PageInfo
<
UserAccountDetail
>
pageInfo
=
new
PageInfo
<>(
userAccountDetailList
);
List
<
UserOrderBillVo
>
userOrderBillVoList
=
new
ArrayList
<>();
for
(
UserAccountDetail
userAccountDetail
:
userAccountDetailList
)
{
UserOrderBillVo
userOrderBillVo
=
new
UserOrderBillVo
();
String
distributionOrderId
=
userAccountDetail
.
getTransactionId
();
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findById
(
distributionOrderId
);
DistributorProfit
distributorProfit
=
distributorProfitDao
.
findById
(
distributionOrderId
);
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
distributionOrder
.
getItemId
());
userOrderBillVo
.
setDistributionOrderId
(
distributionOrderId
);
userOrderBillVo
.
setItemName
(
supplierItem
.
getName
());
userOrderBillVo
.
setHomePageImage
(
MediaUtil
.
getHomePageImage
(
supplierItem
.
getImages
(),
supplierItem
.
getVideos
()));
userOrderBillVo
.
setSellerId
(
distributionOrder
.
getSellerId
());
userOrderBillVo
.
setSellerName
(
cacheUtil
.
appletUserInfoCache
.
get
(
distributionOrder
.
getSellerId
()).
get
().
getNickname
());
userOrderBillVo
.
setAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributionOrder
.
getAmount
()));
userOrderBillVo
.
setRealAmount
(
PriceUtil
.
convertPriceFenToYuan
(
distributorProfit
.
getRealAmount
()));
userOrderBillVo
.
setOrderType
(
distributionOrder
.
getType
());
userOrderBillVo
.
setOrderTypeName
(
DistributionEnum
.
DistributionTypeEnum
.
getNameByCode
(
distributionOrder
.
getType
()));
userOrderBillVo
.
setCreateTime
(
distributionOrder
.
getCreateTime
());
userOrderBillVo
.
setState
(
distributionOrder
.
getState
());
userOrderBillVo
.
setStateName
(
DistributionEnum
.
DistributionOrderStateEnum
.
getNameByCode
(
distributionOrder
.
getState
()));
userOrderBillVo
.
setType
(
userAccountDetail
.
getType
());
userOrderBillVo
.
setTypeName
(
BillEnum
.
AccountDetailTypeEnum
.
getNameByCode
(
userAccountDetail
.
getType
()));
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"查询用户账单明细error:{}"
,
e
);
...
...
@@ -126,6 +186,8 @@ public class SysFinanceServiceImpl implements SysFinanceService {
return
Result
.
failed
();
}
@Override
public
Result
findSystemBillDetail
(
UserAccountDetailRequestDto
dto
)
{
try
{
...
...
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
View file @
1d1c0d4c
...
...
@@ -73,6 +73,11 @@ public interface CommConsts {
*/
public
final
static
String
IDENTIFY_ORDER_PREFIX
=
"IE"
;
/**
* 用户账单前缀
*/
public
final
static
String
USER_BILL_PREFIX
=
"BL"
;
/**
* 平台收货地址
*/
...
...
ch-core/src/main/java/com/wwdz/ch/core/util/DateTimeUtil.java
View file @
1d1c0d4c
...
...
@@ -89,6 +89,8 @@ public class DateTimeUtil {
}
/**
* 判断是否是当前的日期
* @param date
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/SettlementRecordDao.java
View file @
1d1c0d4c
package
com.wwdz.ch.db.dao.distribution
;
import
com.wwdz.ch.db.domain.distribution.SettlementRecord
;
import
com.wwdz.ch.db.domain.distribution.UserBill
;
public
interface
SettlementRecordDao
{
boolean
insert
(
SettlementRecord
settlementRecord
);
boolean
update
(
SettlementRecord
settlementRecord
);
SettlementRecord
findByBillId
(
String
billId
);
}
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/UserBillDao.java
View file @
1d1c0d4c
package
com.wwdz.ch.db.dao.distribution
;
import
com.wwdz.ch.db.domain.distribution.UserBill
;
import
com.wwdz.ch.db.dto.request.distribution.UserBillRequestDto
;
import
java.util.List
;
public
interface
UserBillDao
{
boolean
insert
(
UserBill
userBill
);
boolean
updateByPrimaryKey
(
UserBill
userBill
);
boolean
update
(
UserBill
userBill
);
boolean
update
(
String
billId
,
int
state
);
UserBill
findOne
(
String
accountPeriod
,
long
userId
,
Integer
state
);
List
<
UserBill
>
findList
(
UserBillRequestDto
dto
);
}
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/UserAccountDetailRequestDto.java
View file @
1d1c0d4c
...
...
@@ -16,6 +16,8 @@ public class UserAccountDetailRequestDto extends BaseRequestDto implements Entit
*/
private
Long
userId
;
private
String
accountPeriod
;
/**
* 交易id
* 可以是订单号,也可以是转账记录id
...
...
@@ -39,7 +41,9 @@ public class UserAccountDetailRequestDto extends BaseRequestDto implements Entit
/**
* 收入或支出的类型
* 1收入; -1支出
* ORDER(1, "订单收入"),
* CHANNEL(2, "平台佣金"),
* INTRODUCE(3, "介绍佣金"),
*/
private
Integer
type
;
...
...
@@ -60,7 +64,7 @@ public class UserAccountDetailRequestDto extends BaseRequestDto implements Entit
private
Date
startCreateTime
;
private
Date
startEnd
Time
;
private
Date
endCreate
Time
;
/**
* 更新时间
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SettlementRecordDaoImpl.java
View file @
1d1c0d4c
...
...
@@ -2,6 +2,7 @@ package com.wwdz.ch.db.impl.distribution;
import
com.wwdz.ch.db.dao.distribution.SettlementRecordDao
;
import
com.wwdz.ch.db.domain.distribution.SettlementRecord
;
import
com.wwdz.ch.db.domain.distribution.SettlementRecordExample
;
import
com.wwdz.ch.db.mapper.distribution.SettlementRecordMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -21,4 +22,12 @@ public class SettlementRecordDaoImpl implements SettlementRecordDao {
public
boolean
update
(
SettlementRecord
settlementRecord
)
{
return
false
;
}
@Override
public
SettlementRecord
findByBillId
(
String
billId
)
{
SettlementRecordExample
example
=
new
SettlementRecordExample
();
SettlementRecordExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andBillIdEqualTo
(
billId
);
return
settlementRecordMapper
.
selectOneByExampleWithBLOBs
(
example
);
}
}
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserAccountDetailDaoImpl.java
View file @
1d1c0d4c
...
...
@@ -55,6 +55,8 @@ public class UserAccountDetailDaoImpl implements UserAccountDetailDao {
JdbcHelper
.
ifPresent
(
dto
.
getTransactionId
(),
criteria:
:
andTransactionIdEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getTransactionIdList
(),
criteria:
:
andTransactionIdIn
);
JdbcHelper
.
ifPresent
(
dto
.
getFilterTransactionIdList
(),
criteria:
:
andTransactionIdNotIn
);
JdbcHelper
.
ifPresent
(
dto
.
getStartCreateTime
(),
criteria:
:
andCreateTimeGreaterThanOrEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getEndCreateTime
(),
criteria:
:
andCreateTimeLessThanOrEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getState
(),
criteria:
:
andStateEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getType
(),
criteria:
:
andTypeEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getFundType
(),
criteria:
:
andFundTypeEqualTo
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/UserBillDaoImpl.java
View file @
1d1c0d4c
package
com.wwdz.ch.db.impl.distribution
;
import
com.github.pagehelper.PageHelper
;
import
com.wwdz.ch.db.dao.distribution.UserBillDao
;
import
com.wwdz.ch.db.domain.distribution.UserBill
;
import
com.wwdz.ch.db.domain.distribution.UserBillExample
;
import
com.wwdz.ch.db.dto.request.distribution.UserBillRequestDto
;
import
com.wwdz.ch.db.mapper.distribution.UserBillMapper
;
import
com.xxdxxs.db.component.JdbcHelper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.List
;
@Repository
public
class
UserBillDaoImpl
implements
UserBillDao
{
@Autowired
UserBillMapper
userBillMapper
;
@Override
public
UserBill
findOne
(
String
accountPeriod
,
long
userId
,
Integer
state
)
{
UserBillExample
example
=
new
UserBillExample
();
UserBillExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andAccountPeriodEqualTo
(
accountPeriod
);
criteria
.
andUserIdEqualTo
(
userId
);
JdbcHelper
.
ifPresent
(
state
,
criteria:
:
andStateEqualTo
);
return
userBillMapper
.
selectOneByExample
(
example
);
}
@Override
public
List
<
UserBill
>
findList
(
UserBillRequestDto
dto
)
{
UserBillExample
example
=
new
UserBillExample
();
UserBillExample
.
Criteria
criteria
=
example
.
createCriteria
();
JdbcHelper
.
ifPresent
(
dto
.
getUserId
(),
criteria:
:
andUserIdEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getAccountPeriod
(),
criteria:
:
andAccountPeriodEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getState
(),
criteria:
:
andStateEqualTo
);
example
.
setOrderByClause
(
" update_time desc"
);
PageHelper
.
startPage
(
dto
.
getPage
(),
dto
.
getLimit
());
return
userBillMapper
.
selectByExample
(
example
);
}
@Override
public
boolean
updateByPrimaryKey
(
UserBill
userBill
)
{
userBill
.
setUpdateTime
(
new
Date
());
return
userBillMapper
.
updateByPrimaryKeySelective
(
userBill
)
>
0
;
}
@Override
public
boolean
insert
(
UserBill
userBill
)
{
return
userBillMapper
.
insert
(
userBill
)
>
0
;
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserAccountDetailServiceImpl.java
View file @
1d1c0d4c
...
...
@@ -3,12 +3,19 @@ package com.wwdz.ch.wx.impl.distribution;
import
com.wwdz.ch.core.consts.BillEnum
;
import
com.wwdz.ch.core.consts.CommConsts
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IdUtils
;
import
com.wwdz.ch.db.dao.distribution.UserAccountDetailDao
;
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.wwdz.ch.wx.util.RedisUtil
;
import
com.xxdxxs.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -16,18 +23,32 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.text.SimpleDateFormat
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
UserAccountDetailServiceImpl
implements
UserAccountDetailService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SelfPageServiceImpl
.
class
);
@Autowired
UserAccountDetailDao
userAccountDetailDao
;
@Autowired
UserBillDao
userBillDao
;
@Autowired
UserBillService
userBillService
;
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
Result
create
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
throws
Exception
{
try
{
//订单金额
long
orderAmount
=
distributionOrder
.
getAmount
();
...
...
@@ -78,6 +99,9 @@ public class UserAccountDetailServiceImpl implements UserAccountDetailService {
introduceAccountDetail
.
setState
(
BillEnum
.
AccountDetailStateEnum
.
INVALID
.
getCode
());
introduceAccountDetail
.
setCreateTime
(
distributionOrder
.
getCreateTime
());
userAccountDetailDao
.
insert
(
introduceAccountDetail
);
//计算
userBillService
.
calculate
(
distributionOrder
,
distributorProfit
);
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"新增用户账户明细error:{}"
,
e
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/UserBillServiceImpl.java
0 → 100644
View file @
1d1c0d4c
package
com.wwdz.ch.wx.impl.distribution
;
import
com.wwdz.ch.core.consts.BillEnum
;
import
com.wwdz.ch.core.consts.CommConsts
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.IdUtils
;
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.UserBill
;
import
com.wwdz.ch.wx.service.distribution.UserBillService
;
import
com.xxdxxs.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
UserBillServiceImpl
implements
UserBillService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
SelfPageServiceImpl
.
class
);
private
static
final
String
COUNT_ORDER_PROFIT_KEY
=
"COUNT_ORDER_PROFIT_KEY:"
;
@Autowired
RedissonClient
redissonClient
;
@Autowired
UserBillDao
userBillDao
;
@Transactional
@Override
public
Result
calculate
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
throws
Exception
{
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM"
);
//账期
String
accountPeriod
=
formatter
.
format
(
distributionOrder
.
getCreateTime
());
String
key
=
COUNT_ORDER_PROFIT_KEY
+
accountPeriod
+
":"
+
distributionOrder
.
getSellerId
();
RLock
lock
=
redissonClient
.
getLock
(
key
);
try
{
//计算卖家实时账单明细user_bill
if
(!
lock
.
tryLock
(
10
,
10
,
TimeUnit
.
SECONDS
))
{
logger
.
warn
(
"订单号:{}, 账期为:{}, 用户id:{}, 计算订单账单获取锁失败 ERROR !!!!"
,
distributionOrder
.
getDistributionOrderId
(),
accountPeriod
,
distributionOrder
.
getSellerId
());
throw
new
Exception
(
"计算订单账单获取锁失败"
);
}
//订单金额
long
orderAmount
=
distributionOrder
.
getAmount
();
//平台佣金
long
channelCost
=
distributorProfit
.
getChannelCost
();
//介绍佣金
long
introduceCost
=
distributorProfit
.
getIntroduceCost
();
//卖家实际收益
long
sellerProfitAmount
=
distributorProfit
.
getProfit
();
UserBill
userBill
=
userBillDao
.
findOne
(
accountPeriod
,
distributionOrder
.
getSellerId
(),
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
(
distributionOrder
.
getSellerId
());
newBill
.
setTotalWaitEntryAmount
(
sellerProfitAmount
);
newBill
.
setTotalEntryAmount
(
0L
);
newBill
.
setOrderWaitEntryAmount
(
sellerProfitAmount
);
newBill
.
setOrderEntryAmount
(
0L
);
if
(
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
()))
{
//表示介绍人是卖家自己
newBill
.
setIntroduceWaitEntryAmount
(
introduceCost
);
}
else
{
newBill
.
setIntroduceWaitEntryAmount
(
0L
);
}
newBill
.
setIntroduceEntryAmount
(
0L
);
userBill
.
setCreateTime
(
new
Date
());
userBill
.
setUpdateTime
(
new
Date
());
userBill
.
setState
(
BillEnum
.
BillStateEnum
.
NOT_PAID
.
getCode
());
userBillDao
.
insert
(
userBill
);
}
else
{
UserBill
updateBill
=
new
UserBill
();
long
newTotalWaitEntryAmount
=
userBill
.
getTotalWaitEntryAmount
()
+
sellerProfitAmount
;
long
newOrderWaitEntryAmount
=
userBill
.
getOrderWaitEntryAmount
()
+
sellerProfitAmount
;
updateBill
.
setId
(
userBill
.
getId
());
updateBill
.
setTotalWaitEntryAmount
(
newTotalWaitEntryAmount
);
updateBill
.
setOrderWaitEntryAmount
(
newOrderWaitEntryAmount
);
if
(
distributionOrder
.
getShareRecordId
().
equals
(
distributionOrder
.
getSellerId
()))
{
//表示介绍人是卖家自己
long
newIntroduceWaitEntryAmount
=
userBill
.
getIntroduceWaitEntryAmount
()
+
introduceCost
;
updateBill
.
setIntroduceWaitEntryAmount
(
newIntroduceWaitEntryAmount
);
}
userBillDao
.
update
(
updateBill
);
}
return
Result
.
success
();
}
catch
(
Exception
e
)
{
logger
.
error
(
"************ 计算订单账单ERROR: {}"
,
e
);
throw
new
Exception
(
"计算订单账单ERROR"
);
}
finally
{
if
(
lock
!=
null
&&
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
logger
.
info
(
"======================== 订单号:{}, 计算订单账单释放锁成功 ========================"
,
distributionOrder
.
getDistributionOrderId
());
}
}
}
@Transactional
@Override
public
Result
calculateByOrderId
(
String
distributionOrderId
)
{
return
null
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/UserBillService.java
0 → 100644
View file @
1d1c0d4c
package
com.wwdz.ch.wx.service.distribution
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.domain.distribution.DistributorProfit
;
public
interface
UserBillService
{
/**
* 计算账单
* @param distributionOrder
* @param distributorProfit
* @return
*/
Result
calculate
(
DistributionOrder
distributionOrder
,
DistributorProfit
distributorProfit
)
throws
Exception
;
Result
calculateByOrderId
(
String
distributionOrderId
);
}
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