Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-csf
Commits
a83b541d
Commit
a83b541d
authored
Nov 17, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
预计发佣
parent
7eed1e91
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1037 additions
and
9 deletions
+1037
-9
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiExpectedFortuneController.java
+49
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/ExecuteBillingDto.java
+11
-0
yd-csf-api/src/main/java/com/yd/csf/api/dto/GenerateExpectedFortuneDto.java
+102
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiBasicLawCalculateService.java
+8
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
+14
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiBasicLawCalculateServiceImpl.java
+1
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
+296
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/client/expectedfortune/ApiExpectedFortuneFeignClient.java
+34
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/fallback/expectedfortune/ApiExpectedFortuneFeignFallbackFactory.java
+32
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/request/expectedfortune/ApiExpectedFortunePageRequest.java
+24
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/request/expectedfortune/ApiGenerateExpectedFortuneRequest.java
+15
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/response/expectedfortune/ApiExpectedFortunePageResponse.java
+85
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/response/expectedfortune/ApiGenerateExpectedFortuneResponse.java
+7
-0
yd-csf-service/src/main/java/com/yd/csf/service/dao/ExpectedFortuneMapper.java
+23
-0
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyMapper.java
+5
-0
yd-csf-service/src/main/java/com/yd/csf/service/dto/QueryPolicyAndBrokerDto.java
+68
-0
yd-csf-service/src/main/java/com/yd/csf/service/model/ExpectedFortune.java
+171
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IExpectedFortuneService.java
+22
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
+4
-4
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/ExpectedFortuneServiceImpl.java
+29
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
+6
-4
yd-csf-service/src/main/java/com/yd/csf/service/utils/MyBatisPlusCodeGenerator.java
+1
-1
yd-csf-service/src/main/resources/mappers/ExpectedFortuneMapper.xml
+17
-0
yd-csf-service/src/main/resources/mappers/PolicyMapper.xml
+13
-0
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiExpectedFortuneController.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
controller
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.yd.common.result.Result
;
import
com.yd.csf.api.service.ApiExpectedFortuneService
;
import
com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 预计发佣信息
*
* @author zxm
* @since 2025-11-17
*/
@RestController
@RequestMapping
(
"/expectedFortune"
)
@Validated
public
class
ApiExpectedFortuneController
implements
ApiExpectedFortuneFeignClient
{
@Autowired
private
ApiExpectedFortuneService
apiExpectedFortuneService
;
/**
* 生成预计发佣
* @param request
* @return
*/
@Override
public
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
)
{
return
apiExpectedFortuneService
.
generate
(
request
);
}
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@Override
public
Result
<
IPage
<
ApiExpectedFortunePageResponse
>>
page
(
ApiExpectedFortunePageRequest
request
)
{
return
apiExpectedFortuneService
.
page
(
request
);
}
}
yd-csf-api/src/main/java/com/yd/csf/api/dto/ExecuteBillingDto.java
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
dto
;
import
com.yd.csf.service.dto.CommissionBindPolicyBrokerDto
;
import
com.yd.csf.service.dto.QueryPolicyAndBrokerDto
;
import
com.yd.csf.service.model.Commission
;
import
com.yd.csf.service.model.CommissionRuleBinding
;
import
com.yd.csf.service.model.Policy
;
...
...
@@ -32,6 +33,16 @@ public class ExecuteBillingDto {
private
String
batchBizId
;
/**
* 期数(数字代表第几年)
*/
private
Integer
issueNumber
;
/**
* 保单和转介人信息
*/
private
QueryPolicyAndBrokerDto
policyAndBrokerDto
;
/**
* 来佣绑定的保单和转介人(销售)信息封装
*/
private
CommissionBindPolicyBrokerDto
brokerDto
;
...
...
yd-csf-api/src/main/java/com/yd/csf/api/dto/GenerateExpectedFortuneDto.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
GenerateExpectedFortuneDto
{
/**
* 保单发佣批次ID
*/
private
String
batchBizId
;
/**
* 保单发佣业务id
*/
private
String
fortuneBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private
Integer
fortunePeriod
;
/**
* 发佣总期数
*/
private
Integer
fortuneTotalPeriod
;
/**
* 转介人 (获得积分的业务员)
*/
private
String
broker
;
/**
* 转介人业务ID (获得积分的业务员)
*/
private
String
brokerBizId
;
/**
* 所属团队
*/
private
String
team
;
/**
* 所属团队业务ID
*/
private
String
teamBizId
;
/**
* 来佣名称
*/
private
String
fortuneName
;
/**
* 发佣类型
*/
private
String
fortuneType
;
/**
* 发佣金额
*/
private
BigDecimal
amount
;
/**
* 发佣币种
*/
private
String
currency
;
/**
* 佣金发放状态 0=待出账 1=可出账 2=已出账
*/
private
String
status
;
/**
* 发佣日期
*/
private
Date
payoutDate
;
/**
* 基本法项目配置表唯一业务ID
*/
private
String
ruleItemBizId
;
/**
* 获得积分业务员绑定的基本法列表对应计算值
*/
private
List
<
AlgorithmResDto
>
algorithmResDtoList
;
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiBasicLawCalculateService.java
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.csf.api.dto.AlgorithmDto
;
import
com.yd.csf.api.dto.AlgorithmResDto
;
import
com.yd.csf.api.dto.ExecuteBillingDto
;
import
com.yd.csf.feign.request.basiclawcalculate.ApiGenerateBillingRequest
;
import
com.yd.csf.feign.response.basiclawcalculate.ApiGenerateBillingResponse
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
public
interface
ApiBasicLawCalculateService
{
Result
<
ApiGenerateBillingResponse
>
generateBilling
(
ApiGenerateBillingRequest
request
);
Result
<
List
<
AlgorithmResDto
>>
policyBrokerAlgorithm
(
AlgorithmDto
algorithmDto
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiExpectedFortuneService.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
public
interface
ApiExpectedFortuneService
{
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
);
Result
<
IPage
<
ApiExpectedFortunePageResponse
>>
page
(
ApiExpectedFortunePageRequest
request
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiBasicLawCalculateServiceImpl.java
View file @
a83b541d
...
...
@@ -366,6 +366,7 @@ public class ApiBasicLawCalculateServiceImpl implements ApiBasicLawCalculateServ
* @param algorithmDto
* @return
*/
@Override
public
Result
<
List
<
AlgorithmResDto
>>
policyBrokerAlgorithm
(
AlgorithmDto
algorithmDto
)
{
List
<
AlgorithmResDto
>
algorithmResDtoList
=
new
ArrayList
<>();
//校验 - 转介人业务ID(客户端用户表唯一业务ID)不能为空
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiExpectedFortuneServiceImpl.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.enums.ProjectEnum
;
import
com.yd.common.enums.TenantEnum
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.dto.*
;
import
com.yd.csf.api.service.ApiBasicLawCalculateService
;
import
com.yd.csf.api.service.ApiExpectedFortuneService
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
com.yd.csf.service.dto.CommissionRuleBindingDto
;
import
com.yd.csf.service.dto.QueryPolicyAndBrokerDto
;
import
com.yd.csf.service.enums.FortuneStatusEnum
;
import
com.yd.csf.service.model.CommissionRuleBinding
;
import
com.yd.csf.service.model.ExpectedFortune
;
import
com.yd.csf.service.service.ICommissionRuleBindingService
;
import
com.yd.csf.service.service.IExpectedFortuneService
;
import
com.yd.csf.service.service.PolicyService
;
import
com.yd.user.feign.client.clientuser.ApiClientUserFeignClient
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
@Slf4j
@Service
public
class
ApiExpectedFortuneServiceImpl
implements
ApiExpectedFortuneService
{
@Autowired
private
PolicyService
policyService
;
@Autowired
private
ApiClientUserFeignClient
apiClientUserFeignClient
;
@Autowired
private
ICommissionRuleBindingService
iCommissionRuleBindingService
;
@Autowired
private
ApiBasicLawCalculateService
apiBasicLawCalculateService
;
@Autowired
private
IExpectedFortuneService
iExpectedFortuneService
;
/**
* 生成预计发佣
* @param request
* @return
*/
@Override
public
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
)
{
//根据保单号查询保单和转介人列表信息
List
<
QueryPolicyAndBrokerDto
>
queryPolicyAndBrokerDtoList
=
policyService
.
queryPolicyBrokerList
(
request
.
getPolicyNo
());
if
(
CollectionUtils
.
isEmpty
(
queryPolicyAndBrokerDtoList
))
{
throw
new
BusinessException
(
"保单和转介人信息不存在"
);
}
//查询所有绑定基本法的业务员(客户端用户表用户), 计算业务员绑定的所有基本法对应的计算值, 新增积分明细和发佣记录
List
<
CommissionRuleBinding
>
commissionRuleBindingList
=
new
ArrayList
<>();
//根据租户ID和项目ID查询客户端用户ID列表
Result
<
List
<
String
>>
result
=
apiClientUserFeignClient
.
clientUserBizIdList
(
TenantEnum
.
YD
.
getTenantBizId
(),
ProjectEnum
.
CSF_MINI_PROGRAM
.
getProjectBizId
());
if
(!
CollectionUtils
.
isEmpty
(
result
.
getData
()))
{
commissionRuleBindingList
=
iCommissionRuleBindingService
.
queryList
(
CommissionRuleBindingDto
.
builder
()
.
targetIdList
(
result
.
getData
())
.
build
());
}
if
(
CollectionUtils
.
isEmpty
(
commissionRuleBindingList
))
{
throw
new
BusinessException
(
"绑定基本法数据不存在"
);
}
//遍历保单转介人列表信息 -> 调用基本法算出预计发佣列表
for
(
QueryPolicyAndBrokerDto
brokerDto
:
queryPolicyAndBrokerDtoList
)
{
Integer
paymentTerm
=
brokerDto
.
getPaymentTerm
();
//获取保单的供款年期,遍历每个年期算出对应每个年期的佣金列表
if
(
Objects
.
isNull
(
paymentTerm
))
{
throw
new
BusinessException
(
"保单的供款年期不存在"
);
}
//遍历供款年期
for
(
int
i
=
1
;
i
<=
paymentTerm
;
i
++)
{
//执行 - 销售佣金 - 出账 (销售佣金基本法)
executeBilling
(
ExecuteBillingDto
.
builder
()
.
name
(
brokerDto
.
getBrokerName
())
.
policyAndBrokerDto
(
brokerDto
)
.
issueNumber
(
i
)
.
build
());
//非销售佣金积基本法 - 遍历所有绑定基本法的用户(客户端用户表用户), 计算用户绑定的所有基本法对应的计算值, 新增积分明细和发佣记录 (和保单绑定的转介人在执行基本法项目的SQL时候进行关系对比)
for
(
CommissionRuleBinding
binding
:
commissionRuleBindingList
)
{
//执行 - 奖励 (非销售佣金积基本法)
executeReward
(
ExecuteBillingDto
.
builder
()
.
clientUserBizId
(
binding
.
getTargetId
())
.
name
(
binding
.
getTargetName
())
.
policyAndBrokerDto
(
brokerDto
)
.
issueNumber
(
i
)
.
build
());
}
}
}
return
Result
.
success
();
}
/**
* 执行 - 奖励(非销售佣金基本法)
* @param dto
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
executeReward
(
ExecuteBillingDto
dto
)
{
QueryPolicyAndBrokerDto
brokerDto
=
dto
.
getPolicyAndBrokerDto
();
//构造销售佣金基本法项目的顺序下标值执行
List
<
Integer
>
executionOrderList
=
new
ArrayList
<>();
executionOrderList
.
add
(
1
);
//执行获得积分用户的非销售佣金基本法项目
Result
<
List
<
AlgorithmResDto
>>
result
=
apiBasicLawCalculateService
.
policyBrokerAlgorithm
(
AlgorithmDto
.
builder
()
.
brokerBizId
(
brokerDto
.
getBrokerBizId
())
.
clientUserBizId
(
dto
.
getClientUserBizId
())
.
sqlTemplateParamDto
(
SqlTemplateParamDto
.
builder
()
.
brokerBizId
(
brokerDto
.
getBrokerBizId
())
.
clientUserBizId
(
dto
.
getClientUserBizId
())
.
policyNo
(
brokerDto
.
getPolicyNo
())
.
productBizId
(
brokerDto
.
getPlanBizId
())
.
productCode
(
brokerDto
.
getProductCode
())
.
term
(
brokerDto
.
getPaymentTerm
())
.
issueNumber
(
dto
.
getIssueNumber
())
.
build
())
.
executionOrderList
(
executionOrderList
)
.
isNegateExecutionOrderList
(
true
)
.
build
());
//生成保单预计发佣表记录 (非销售佣金基本法)
generateExpectedFortune
(
GenerateExpectedFortuneDto
.
builder
()
//获得积分的用户绑定的基本法列表对应计算值
.
algorithmResDtoList
(
result
.
getData
())
//保单发佣批次ID
//获得积分的用户姓名
.
broker
(
dto
.
getName
())
//获得积分的用户业务ID
.
brokerBizId
(
dto
.
getClientUserBizId
())
//发佣币种
.
currency
(
brokerDto
.
getCurrency
())
//发佣期数
.
fortunePeriod
(
dto
.
getIssueNumber
())
//发佣总期数
.
fortuneTotalPeriod
(
brokerDto
.
getPaymentTerm
())
//发佣类型 TODO
// .fortuneType()
//发佣日期
.
payoutDate
(
new
Date
())
//保单号
.
policyNo
(
brokerDto
.
getPolicyNo
())
//佣金发放状态 0=待出账 1=可出账 2=已出账
.
status
(
FortuneStatusEnum
.
WAIT
.
getItemValue
())
//所属团队 TODO
// .team()
//所属团队业务ID TODO
// .teamBizId()
.
build
());
return
Result
.
success
();
}
/**
* 执行 - 销售佣金(销售佣金基本法)
* @param dto
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
executeBilling
(
ExecuteBillingDto
dto
)
{
QueryPolicyAndBrokerDto
brokerDto
=
dto
.
getPolicyAndBrokerDto
();
//构造销售佣金基本法项目的顺序下标值执行
List
<
Integer
>
executionOrderList
=
new
ArrayList
<>();
executionOrderList
.
add
(
1
);
//保单出账先执行销售佣金基本法项目,入完到积分明细表里后,再执行保单绑定人的其他基本法项目
Result
<
List
<
AlgorithmResDto
>>
result
=
apiBasicLawCalculateService
.
policyBrokerAlgorithm
(
AlgorithmDto
.
builder
()
.
brokerBizId
(
brokerDto
.
getBrokerBizId
())
.
clientUserBizId
(
brokerDto
.
getBrokerBizId
())
.
sqlTemplateParamDto
(
SqlTemplateParamDto
.
builder
()
.
brokerBizId
(
brokerDto
.
getBrokerBizId
())
.
policyNo
(
brokerDto
.
getPolicyNo
())
.
productBizId
(
brokerDto
.
getPlanBizId
())
.
productCode
(
brokerDto
.
getProductCode
())
.
term
(
brokerDto
.
getPaymentTerm
())
.
issueNumber
(
dto
.
getIssueNumber
())
.
build
())
.
executionOrderList
(
executionOrderList
)
.
isNegateExecutionOrderList
(
false
)
.
build
());
//生成保单预计发佣表记录 (销售佣金基本法)
generateExpectedFortune
(
GenerateExpectedFortuneDto
.
builder
()
//转介人绑定的基本法列表对应计算值
.
algorithmResDtoList
(
result
.
getData
())
//保单发佣批次ID
//获得积分的转介人(业务员)姓名
.
broker
(
dto
.
getName
())
//获得积分的转介人(业务员)业务ID
.
brokerBizId
(
brokerDto
.
getBrokerBizId
())
//发佣币种
.
currency
(
brokerDto
.
getCurrency
())
//发佣期数
.
fortunePeriod
(
dto
.
getIssueNumber
())
//发佣总期数
.
fortuneTotalPeriod
(
brokerDto
.
getPaymentTerm
())
//发佣类型 TODO
// .fortuneType()
//发佣日期
.
payoutDate
(
new
Date
())
//保单号
.
policyNo
(
brokerDto
.
getPolicyNo
())
//佣金发放状态 0=待出账 1=可出账 2=已出账
.
status
(
FortuneStatusEnum
.
WAIT
.
getItemValue
())
//所属团队 TODO
// .team()
//所属团队业务ID TODO
// .teamBizId()
.
build
());
return
Result
.
success
();
}
/**
* 生成保单预计发佣表记录
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
generateExpectedFortune
(
GenerateExpectedFortuneDto
fortuneDto
)
{
List
<
ExpectedFortune
>
fortuneList
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
fortuneDto
.
getAlgorithmResDtoList
()))
{
//获得积分业务员绑定的基本法列表对应计算值结果集合
for
(
AlgorithmResDto
algorithmResDto
:
fortuneDto
.
getAlgorithmResDtoList
())
{
if
(
Objects
.
isNull
(
algorithmResDto
.
getCalculatedValue
())
||
algorithmResDto
.
getCalculatedValue
().
compareTo
(
BigDecimal
.
ZERO
)
==
0
){
//判空判0
continue
;
}
ExpectedFortune
fortune
=
new
ExpectedFortune
();
//发佣金额 -> 计算值 - sqlAlgorithmResultDtoList集合里面的计算值和值
fortune
.
setAmount
(
algorithmResDto
.
getCalculatedValue
());
//保单发佣批次ID
// fortune.setBatchBizId(fortuneDto.getBatchBizId());
//转介人姓名 (获得积分的业务员)
fortune
.
setBroker
(
fortuneDto
.
getBroker
());
//转介人业务ID (获得积分的业务员)
fortune
.
setBrokerBizId
(
fortuneDto
.
getBrokerBizId
());
//出账项目名称 -> 基本法项目名称
fortune
.
setFortuneName
(
algorithmResDto
.
getItemName
());
//保单预计发佣业务id
fortune
.
setExpectedFortuneBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_EXPECTED_FORTUNE
.
getCode
()));
//基本法项目配置表唯一业务ID
fortune
.
setRuleItemBizId
(
algorithmResDto
.
getRuleItemBizId
());
//发佣币种
fortune
.
setCurrency
(
fortuneDto
.
getCurrency
());
//发佣期数
fortune
.
setFortunePeriod
(
fortuneDto
.
getFortunePeriod
());
//发佣总期数
fortune
.
setFortuneTotalPeriod
(
fortuneDto
.
getFortuneTotalPeriod
());
//保单号
fortune
.
setPolicyNo
(
fortuneDto
.
getPolicyNo
());
fortuneList
.
add
(
fortune
);
}
}
if
(!
CollectionUtils
.
isEmpty
(
fortuneList
))
{
iExpectedFortuneService
.
saveOrUpdateBatch
(
fortuneList
);
}
return
Result
.
success
();
}
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@Override
public
Result
<
IPage
<
ApiExpectedFortunePageResponse
>>
page
(
ApiExpectedFortunePageRequest
request
)
{
Page
<
ApiExpectedFortunePageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
IPage
<
ApiExpectedFortunePageResponse
>
iPage
=
iExpectedFortuneService
.
page
(
page
,
request
);
return
Result
.
success
(
iPage
);
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/client/expectedfortune/ApiExpectedFortuneFeignClient.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
client
.
expectedfortune
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.fallback.expectedfortune.ApiExpectedFortuneFeignFallbackFactory
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
/**
* 香港保险服务-预计发佣信息Feign客户端
*/
@FeignClient
(
name
=
"yd-csf-api"
,
fallbackFactory
=
ApiExpectedFortuneFeignFallbackFactory
.
class
)
public
interface
ApiExpectedFortuneFeignClient
{
/**
* 生成预计发佣
* @param request
* @return
*/
@PostMapping
(
"/generate"
)
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
@Validated
@RequestBody
ApiGenerateExpectedFortuneRequest
request
);
/**
* 分页查询 - 预计发佣
* @param request
* @return
*/
@PostMapping
(
"/page"
)
Result
page
(
@RequestBody
ApiExpectedFortunePageRequest
request
);
}
yd-csf-feign/src/main/java/com/yd/csf/feign/fallback/expectedfortune/ApiExpectedFortuneFeignFallbackFactory.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
fallback
.
expectedfortune
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient
;
import
com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiGenerateExpectedFortuneResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.cloud.openfeign.FallbackFactory
;
import
org.springframework.stereotype.Component
;
/**
* 香港保险服务-预计发佣信息Feign降级处理
*/
@Slf4j
@Component
public
class
ApiExpectedFortuneFeignFallbackFactory
implements
FallbackFactory
<
ApiExpectedFortuneFeignClient
>
{
@Override
public
ApiExpectedFortuneFeignClient
create
(
Throwable
cause
)
{
return
new
ApiExpectedFortuneFeignClient
()
{
@Override
public
Result
<
ApiGenerateExpectedFortuneResponse
>
generate
(
ApiGenerateExpectedFortuneRequest
request
)
{
return
null
;
}
@Override
public
Result
page
(
ApiExpectedFortunePageRequest
request
)
{
return
null
;
}
};
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/request/expectedfortune/ApiExpectedFortunePageRequest.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
request
.
expectedfortune
;
import
com.yd.common.dto.PageDto
;
import
lombok.Data
;
@Data
public
class
ApiExpectedFortunePageRequest
extends
PageDto
{
/**
* 保单号
*/
private
String
policyNo
;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private
Integer
fortunePeriod
;
/**
* 转介人名称
*/
private
String
broker
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/request/expectedfortune/ApiGenerateExpectedFortuneRequest.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
request
.
expectedfortune
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
@Data
public
class
ApiGenerateExpectedFortuneRequest
{
/**
* 保单号
*/
@NotBlank
(
message
=
"保单号不能为空"
)
private
String
policyNo
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/response/expectedfortune/ApiExpectedFortunePageResponse.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
response
.
expectedfortune
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
@Data
public
class
ApiExpectedFortunePageResponse
{
/**
* 主键ID
*/
private
Long
id
;
/**
* 预计发佣表唯一业务id
*/
private
String
expectedFortuneBizId
;
/**
* 保单号
*/
private
String
policyNo
;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
private
Integer
fortunePeriod
;
/**
* 发佣总期数
*/
private
Integer
fortuneTotalPeriod
;
/**
* 转介人名称
*/
private
String
broker
;
/**
* 转介人业务ID
*/
private
String
brokerBizId
;
/**
* 团队名称
*/
private
String
team
;
/**
* 所属团队业务ID
*/
private
String
teamBizId
;
/**
* 发佣名称
*/
private
String
fortuneName
;
/**
* 发佣类型
*/
private
String
fortuneType
;
/**
* 发佣金额
*/
private
BigDecimal
amount
;
/**
* 发佣币种
*/
private
String
currency
;
/**
* 基本法项目配置表唯一业务ID
*/
private
String
ruleItemBizId
;
/**
* 创建时间
*/
private
LocalDateTime
createTime
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/response/expectedfortune/ApiGenerateExpectedFortuneResponse.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
feign
.
response
.
expectedfortune
;
import
lombok.Data
;
@Data
public
class
ApiGenerateExpectedFortuneResponse
{
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/ExpectedFortuneMapper.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.service.model.ExpectedFortune
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
* 预计发佣表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-11-17
*/
public
interface
ExpectedFortuneMapper
extends
BaseMapper
<
ExpectedFortune
>
{
IPage
<
ApiExpectedFortunePageResponse
>
page
(
@Param
(
"page"
)
Page
<
ApiExpectedFortunePageResponse
>
page
,
@Param
(
"request"
)
ApiExpectedFortunePageRequest
request
);
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/PolicyMapper.java
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
dao
;
import
com.yd.csf.service.dto.QueryPolicyAndBrokerDto
;
import
com.yd.csf.service.model.Policy
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @author Zhang Jianan
...
...
@@ -11,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public
interface
PolicyMapper
extends
BaseMapper
<
Policy
>
{
List
<
QueryPolicyAndBrokerDto
>
queryPolicyBrokerList
(
@Param
(
"policyNo"
)
String
policyNo
);
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/dto/QueryPolicyAndBrokerDto.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
dto
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 保单和转介人信息
*/
@Data
public
class
QueryPolicyAndBrokerDto
{
//======保单信息start=======
/**
* 保单号
*/
private
String
policyNo
;
/**
* 用户业务id
*/
private
String
userBizId
;
/**
* 产品业务id
*/
private
String
planBizId
;
/**
* 产品代码
*/
private
String
productCode
;
/**
* 供款年期(字典)
*/
private
Integer
paymentTerm
;
/**
* 币种
*/
private
String
currency
;
//======保单信息end=======
//======保单转介人信息start=======
/**
* 转介人名称
*/
private
String
brokerName
;
/**
* 转介人业务ID(客户端用户表唯一业务ID)
*/
private
String
brokerBizId
;
/**
* 所属团队
*/
private
String
team
;
/**
* 所属团队业务id
*/
private
String
teamBizId
;
//======保单转介人信息end=======
}
yd-csf-service/src/main/java/com/yd/csf/service/model/ExpectedFortune.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
model
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* <p>
* 预计发佣表
* </p>
*
* @author zxm
* @since 2025-11-17
*/
@Getter
@Setter
@TableName
(
"expected_fortune"
)
public
class
ExpectedFortune
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键ID
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 预计发佣表唯一业务id
*/
@TableField
(
"expected_fortune_biz_id"
)
private
String
expectedFortuneBizId
;
/**
* 保单号
*/
@TableField
(
"policy_no"
)
private
String
policyNo
;
/**
* 发佣期数(1=第一年; 2=第二年; 3=第三年; 4=第四年; 5=第五年)
*/
@TableField
(
"fortune_period"
)
private
Integer
fortunePeriod
;
/**
* 发佣总期数
*/
@TableField
(
"fortune_total_period"
)
private
Integer
fortuneTotalPeriod
;
/**
* 转介人名称
*/
@TableField
(
"broker"
)
private
String
broker
;
/**
* 转介人业务ID
*/
@TableField
(
"broker_biz_id"
)
private
String
brokerBizId
;
/**
* 团队名称
*/
@TableField
(
"team"
)
private
String
team
;
/**
* 所属团队业务ID
*/
@TableField
(
"team_biz_id"
)
private
String
teamBizId
;
/**
* 发佣名称
*/
@TableField
(
"fortune_name"
)
private
String
fortuneName
;
/**
* 发佣类型
*/
@TableField
(
"fortune_type"
)
private
String
fortuneType
;
/**
* 发佣金额
*/
@TableField
(
"amount"
)
private
BigDecimal
amount
;
/**
* 发佣币种
*/
@TableField
(
"currency"
)
private
String
currency
;
/**
* 佣金发放状态 0=待出账 1=可出帐 2=已出账
*/
@TableField
(
"status"
)
private
String
status
;
/**
* 是否含税 0=No, 1=Yes
*/
@TableField
(
"is_tax"
)
private
Integer
isTax
;
/**
* 应缴税额
*/
@TableField
(
"tax_amount"
)
private
BigDecimal
taxAmount
;
/**
* 税后发佣
*/
@TableField
(
"net_amount"
)
private
BigDecimal
netAmount
;
/**
* 基本法项目配置表唯一业务ID
*/
@TableField
(
"rule_item_biz_id"
)
private
String
ruleItemBizId
;
/**
* 通用备注
*/
@TableField
(
"remark"
)
private
String
remark
;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField
(
"is_deleted"
)
private
Integer
isDeleted
;
/**
* 创建人ID
*/
@TableField
(
"creator_id"
)
private
String
creatorId
;
/**
* 更新人ID
*/
@TableField
(
"updater_id"
)
private
String
updaterId
;
/**
* 创建时间
*/
@TableField
(
"create_time"
)
private
LocalDateTime
createTime
;
/**
* 更新时间
*/
@TableField
(
"update_time"
)
private
LocalDateTime
updateTime
;
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IExpectedFortuneService.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.service.model.ExpectedFortune
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 预计发佣表 服务类
* </p>
*
* @author zxm
* @since 2025-11-17
*/
public
interface
IExpectedFortuneService
extends
IService
<
ExpectedFortune
>
{
IPage
<
ApiExpectedFortunePageResponse
>
page
(
Page
<
ApiExpectedFortunePageResponse
>
page
,
ApiExpectedFortunePageRequest
request
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/PolicyService.java
View file @
a83b541d
...
...
@@ -2,13 +2,11 @@ package com.yd.csf.service.service;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.service.dto.PolicyDto
;
import
com.yd.csf.service.dto.PolicyQueryRequest
;
import
com.yd.csf.service.dto.PolicyUpdateRequest
;
import
com.yd.csf.service.dto.QueryPolicyDto
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.model.Policy
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yd.csf.service.vo.PolicyVO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
...
...
@@ -27,4 +25,6 @@ public interface PolicyService extends IService<Policy> {
List
<
Policy
>
queryList
(
QueryPolicyDto
dto
);
List
<
QueryPolicyAndBrokerDto
>
queryPolicyBrokerList
(
String
policyNo
);
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/ExpectedFortuneServiceImpl.java
0 → 100644
View file @
a83b541d
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest
;
import
com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse
;
import
com.yd.csf.service.model.ExpectedFortune
;
import
com.yd.csf.service.dao.ExpectedFortuneMapper
;
import
com.yd.csf.service.service.IExpectedFortuneService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 预计发佣表 服务实现类
* </p>
*
* @author zxm
* @since 2025-11-17
*/
@Service
public
class
ExpectedFortuneServiceImpl
extends
ServiceImpl
<
ExpectedFortuneMapper
,
ExpectedFortune
>
implements
IExpectedFortuneService
{
@Override
public
IPage
<
ApiExpectedFortunePageResponse
>
page
(
Page
<
ApiExpectedFortunePageResponse
>
page
,
ApiExpectedFortunePageRequest
request
)
{
return
baseMapper
.
page
(
page
,
request
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/PolicyServiceImpl.java
View file @
a83b541d
...
...
@@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.yd.common.enums.ResultCode
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.csf.feign.dto.appointment.ApiProductPlanAdditionalInfoDto
;
import
com.yd.csf.service.dto.PolicyDto
;
import
com.yd.csf.service.dto.PolicyQueryRequest
;
import
com.yd.csf.service.dto.PolicyUpdateRequest
;
import
com.yd.csf.service.dto.QueryPolicyDto
;
import
com.yd.csf.service.dto.*
;
import
com.yd.csf.service.model.AppointmentFile
;
import
com.yd.csf.service.model.Policy
;
import
com.yd.csf.service.model.PolicyAdditional
;
...
...
@@ -148,6 +145,11 @@ public class PolicyServiceImpl extends ServiceImpl<PolicyMapper, Policy>
);
return
list
;
}
@Override
public
List
<
QueryPolicyAndBrokerDto
>
queryPolicyBrokerList
(
String
policyNo
)
{
return
baseMapper
.
queryPolicyBrokerList
(
policyNo
);
}
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/utils/MyBatisPlusCodeGenerator.java
View file @
a83b541d
...
...
@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
})
.
strategyConfig
(
builder
->
{
builder
.
addInclude
(
"
agent_manage_relation
"
"
expected_fortune
"
)
.
entityBuilder
()
...
...
yd-csf-service/src/main/resources/mappers/ExpectedFortuneMapper.xml
0 → 100644
View file @
a83b541d
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yd.csf.service.dao.ExpectedFortuneMapper"
>
<select
id=
"page"
resultType=
"com.yd.csf.feign.response.expectedfortune.ApiExpectedFortunePageResponse"
>
select * from expected_fortune ef
<where>
<if
test=
"request.broker != null and request.broker != ''"
>
and ef.broker like concat('%', #{request.broker}, '%')
</if>
<if
test=
"request.fortunePeriod != null"
>
and ef.fortune_period = #{request.fortunePeriod}
</if>
</where>
</select>
</mapper>
yd-csf-service/src/main/resources/mappers/PolicyMapper.xml
View file @
a83b541d
...
...
@@ -58,4 +58,17 @@
reconciliation_company,reconciliation_company_biz_id,policy_transfer,remark,is_deleted,creator_id,
updater_id,create_time,update_time
</sql>
<select
id=
"queryPolicyBrokerList"
resultType=
"com.yd.csf.service.dto.QueryPolicyAndBrokerDto"
>
select p.*,pb.*
from policy p
left join policy_broker pb on pb.policy_no = p.policy_no and pb.is_deleted = 0
<where>
<if
test=
"policyNo != null and policyNo != ''"
>
and p.policy_no = #{policyNo}
</if>
and p.is_deleted = 0
</where>
</select>
</mapper>
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