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
5cc763ef
Commit
5cc763ef
authored
Jun 22, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
d5c03ea8
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
1229 additions
and
25 deletions
+1229
-25
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCsfClientUserController.java
+12
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentAccumulatedFycService.java
+8
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentReferralRelationService.java
+7
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentTutoringRelationService.java
+10
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiCommissionRuleBindingService.java
+8
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiCsfClientUserService.java
+3
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiMemberGradeConfigService.java
+7
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiUserBankService.java
+12
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentAccumulatedFycServiceImpl.java
+100
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentReferralRelationServiceImpl.java
+41
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentTutoringRelationServiceImpl.java
+59
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiCommissionRuleBindingServiceImpl.java
+73
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiCsfClientUserServiceImpl.java
+336
-16
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiMemberGradeConfigServiceImpl.java
+32
-0
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiUserBankServiceImpl.java
+57
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/client/csfclientuser/ApiCsfClientUserFeignClient.java
+14
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/clientrole/ApiClientRoleDTO.java
+17
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/csfclientuser/ApiCsfClientUserDTO.java
+5
-3
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/org/ApiCsfClientUserOrgDTO.java
+14
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/referrer/ApiReferrerDTO.java
+57
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/rule/ApiRuleDTO.java
+18
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/tutor/ApiTutorDTO.java
+57
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/request/csfclientuser/ApiCsfClientUserPageRequest.java
+2
-1
yd-csf-feign/src/main/java/com/yd/csf/feign/request/fyc/ApiInitAgentAccumulatedFycRequest.java
+22
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/request/rulebind/ApiCommissionRuleBindingRequest.java
+44
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/response/csfclientuser/ApiCsfClientUserDetailResponse.java
+27
-0
yd-csf-feign/src/main/java/com/yd/csf/feign/response/csfclientuser/ApiCsfClientUserPageResponse.java
+7
-2
yd-csf-service/src/main/java/com/yd/csf/service/dao/CsfClientUserMapper.java
+7
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IAgentTutoringRelationService.java
+3
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IClientRoleService.java
+3
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/ICommissionRuleBindingService.java
+2
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/ICommissionRuleConfigService.java
+2
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/ICsfClientUserService.java
+9
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IMemberGradeConfigService.java
+2
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/IUserBankService.java
+5
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/AgentReferralRelationServiceImpl.java
+2
-2
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/AgentTutoringRelationServiceImpl.java
+9
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/ClientRoleServiceImpl.java
+8
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionRuleBindingServiceImpl.java
+6
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionRuleConfigServiceImpl.java
+6
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CsfClientUserServiceImpl.java
+18
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/MemberGradeConfigServiceImpl.java
+9
-0
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/UserBankServiceImpl.java
+14
-0
yd-csf-service/src/main/resources/mappers/CsfClientUserMapper.xml
+75
-1
No files found.
yd-csf-api/src/main/java/com/yd/csf/api/controller/ApiCsfClientUserController.java
View file @
5cc763ef
...
@@ -6,11 +6,13 @@ import com.yd.csf.api.service.ApiCsfClientUserService;
...
@@ -6,11 +6,13 @@ import com.yd.csf.api.service.ApiCsfClientUserService;
import
com.yd.csf.feign.client.csfclientuser.ApiCsfClientUserFeignClient
;
import
com.yd.csf.feign.client.csfclientuser.ApiCsfClientUserFeignClient
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotBlank
;
/**
/**
* CSF客户端用户信息接口
* CSF客户端用户信息接口
...
@@ -37,6 +39,16 @@ public class ApiCsfClientUserController implements ApiCsfClientUserFeignClient {
...
@@ -37,6 +39,16 @@ public class ApiCsfClientUserController implements ApiCsfClientUserFeignClient {
}
}
/**
/**
* 详情-人员信息
* @param csfClientUserBizId
* @return
*/
@Override
public
Result
<
ApiCsfClientUserDetailResponse
>
detail
(
String
csfClientUserBizId
)
{
return
apiCsfClientUserService
.
detail
(
csfClientUserBizId
);
}
/**
* 新增-人员信息
* 新增-人员信息
* @param request
* @param request
* @return
* @return
...
...
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentAccumulatedFycService.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.request.fyc.ApiInitAgentAccumulatedFycRequest
;
public
interface
ApiAgentAccumulatedFycService
{
Result
initAgentAccumulatedFyc
(
ApiInitAgentAccumulatedFycRequest
request
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentReferralRelationService.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.dto.referrer.ApiReferrerDTO
;
import
com.yd.csf.feign.request.agentreferralrelation.ApiAgentReferralRelationSaveRequest
;
import
com.yd.csf.feign.request.agentreferralrelation.ApiAgentReferralRelationSaveRequest
;
import
com.yd.csf.service.model.CsfClientUser
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
public
interface
ApiAgentReferralRelationService
{
public
interface
ApiAgentReferralRelationService
{
Result
save
(
ApiAgentReferralRelationSaveRequest
request
);
Result
save
(
ApiAgentReferralRelationSaveRequest
request
);
Result
saveAgentReferralRelationList
(
List
<
ApiReferrerDTO
>
referrerDTOList
,
CsfClientUser
csfClientUser
);
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiAgentTutoringRelationService.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.dto.tutor.ApiTutorDTO
;
import
java.util.List
;
public
interface
ApiAgentTutoringRelationService
{
Result
saveAgentTutoringRelationList
(
List
<
ApiTutorDTO
>
tutorDTOList
,
String
clientUserBizId
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiCommissionRuleBindingService.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.request.rulebind.ApiCommissionRuleBindingRequest
;
public
interface
ApiCommissionRuleBindingService
{
Result
saveCommissionRuleBinding
(
ApiCommissionRuleBindingRequest
request
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiCsfClientUserService.java
View file @
5cc763ef
...
@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
...
@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
public
interface
ApiCsfClientUserService
{
public
interface
ApiCsfClientUserService
{
Result
<
IPage
<
ApiCsfClientUserPageResponse
>>
page
(
ApiCsfClientUserPageRequest
request
);
Result
<
IPage
<
ApiCsfClientUserPageResponse
>>
page
(
ApiCsfClientUserPageRequest
request
);
Result
<
ApiCsfClientUserDetailResponse
>
detail
(
String
csfClientUserBizId
);
Result
add
(
ApiCsfClientUserAddRequest
request
);
Result
add
(
ApiCsfClientUserAddRequest
request
);
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiMemberGradeConfigService.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
import
java.math.BigDecimal
;
public
interface
ApiMemberGradeConfigService
{
BigDecimal
getInitEffect
(
String
initGrade
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/ApiUserBankService.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
;
import
com.yd.common.result.Result
;
import
com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO
;
import
com.yd.csf.service.model.CsfClientUser
;
import
java.util.List
;
public
interface
ApiUserBankService
{
Result
saveUserBankList
(
CsfClientUser
csfClientUser
,
List
<
ApiCsfClientUserBankDTO
>
bankDTOList
);
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentAccumulatedFycServiceImpl.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.service.ApiAgentAccumulatedFycService
;
import
com.yd.csf.api.service.ApiMemberGradeConfigService
;
import
com.yd.csf.feign.request.fyc.ApiInitAgentAccumulatedFycRequest
;
import
com.yd.csf.service.model.AgentAccumulatedFyc
;
import
com.yd.csf.service.service.IAgentAccumulatedFycService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
@Slf4j
@Service
public
class
ApiAgentAccumulatedFycServiceImpl
implements
ApiAgentAccumulatedFycService
{
@Resource
private
IAgentAccumulatedFycService
iAgentAccumulatedFycService
;
@Resource
private
ApiMemberGradeConfigService
apiMemberGradeConfigService
;
/**
* 初始化fyc
* @param request
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
initAgentAccumulatedFyc
(
ApiInitAgentAccumulatedFycRequest
request
)
{
//校验初始化fyc入参参数
verifyInitFycRequest
(
request
);
//新增初始化fyc记录
AgentAccumulatedFyc
fyc
=
new
AgentAccumulatedFyc
();
fyc
.
setFycBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_AGENT_ACCUMULATED_FYC
.
getCode
()));
//业务员ID
fyc
.
setAgentId
(
request
.
getAgentId
());
//业务员名称
fyc
.
setAgentName
(
request
.
getAgentName
());
//初始化等级(初始化已生效积分对应等级)
fyc
.
setInitGrade
(
request
.
getInitGrade
());
//初始化已生效积分(不限业务场景)=> 通过积分等级配置表查询对应的等级的积分范围最高值
BigDecimal
initEffect
=
apiMemberGradeConfigService
.
getInitEffect
(
request
.
getInitGrade
());
fyc
.
setInitEffect
(
initEffect
);
//未生效累计积分(不限业务场景)
fyc
.
setNoEffect
(
BigDecimal
.
ZERO
);
//已生效累计积分(不限业务场景)= 初始化已生效积分
fyc
.
setEffect
(
fyc
.
getInitEffect
());
//累计积分 = 未生效累计积分 + 已生效累计积分
fyc
.
setTotalFyc
(
fyc
.
getNoEffect
().
add
(
fyc
.
getEffect
()));
//已生效累计首期佣金积分值(佣金场景)
fyc
.
setFirstCommission
(
BigDecimal
.
ZERO
);
//未生效累计首期佣金积分值(佣金场景)
fyc
.
setNoFirstCommission
(
BigDecimal
.
ZERO
);
//已生效累计非首期佣金积分值(佣金场景)
fyc
.
setRyc
(
BigDecimal
.
ZERO
);
//未生效累计非首期佣金积分值(佣金场景)
fyc
.
setNoRyc
(
BigDecimal
.
ZERO
);
//已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
fyc
.
setFirstSalesCommission
(
BigDecimal
.
ZERO
);
//未生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
fyc
.
setNoFirstSalesCommission
(
BigDecimal
.
ZERO
);
//晋升职级累计积分 = 初始化已生效积分(不限业务场景) + 已生效累计首期销售佣金积分值(销售佣金场景(佣金场景的其中一个))
fyc
.
setPromotion
(
fyc
.
getInitEffect
().
add
(
fyc
.
getFirstSalesCommission
()));
//当前等级,业务员当前的会员等级编码(会员等级配置表等级编码)
fyc
.
setCurrentGradeCode
(
request
.
getInitGrade
());
//最后计算日期,记录最后一次计算累计FYC的日期
fyc
.
setLastCalcDate
(
LocalDateTime
.
now
());
//状态(0:停用 1:启用)
fyc
.
setStatus
(
1
);
iAgentAccumulatedFycService
.
saveOrUpdate
(
fyc
);
return
Result
.
success
();
}
/**
* 校验初始化fyc入参参数
* @param request
*/
public
void
verifyInitFycRequest
(
ApiInitAgentAccumulatedFycRequest
request
){
if
(
StringUtils
.
isBlank
(
request
.
getAgentId
()))
{
throw
new
BusinessException
(
"业务员ID不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getAgentName
()))
{
throw
new
BusinessException
(
"业务员名称不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getInitGrade
()))
{
throw
new
BusinessException
(
"初始化等级不能为空"
);
}
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentReferralRelationServiceImpl.java
View file @
5cc763ef
...
@@ -4,9 +4,15 @@ import com.yd.common.enums.CommonEnum;
...
@@ -4,9 +4,15 @@ import com.yd.common.enums.CommonEnum;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.service.ApiAgentReferralRelationService
;
import
com.yd.csf.api.service.ApiAgentReferralRelationService
;
import
com.yd.csf.feign.dto.referrer.ApiReferrerDTO
;
import
com.yd.csf.feign.dto.tutor.ApiTutorDTO
;
import
com.yd.csf.feign.request.agentreferralrelation.ApiAgentReferralRelationSaveRequest
;
import
com.yd.csf.feign.request.agentreferralrelation.ApiAgentReferralRelationSaveRequest
;
import
com.yd.csf.service.model.AgentReferralRelation
;
import
com.yd.csf.service.model.AgentReferralRelation
;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.service.IAgentReferralRelationService
;
import
com.yd.csf.service.service.IAgentReferralRelationService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -53,4 +59,39 @@ public class ApiAgentReferralRelationServiceImpl implements ApiAgentReferralRela
...
@@ -53,4 +59,39 @@ public class ApiAgentReferralRelationServiceImpl implements ApiAgentReferralRela
}
}
/**
* 保存推荐关系列表
* @param referrerDTOList
* @param csfClientUser
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
saveAgentReferralRelationList
(
List
<
ApiReferrerDTO
>
referrerDTOList
,
CsfClientUser
csfClientUser
)
{
//根据用户唯一业务ID删除记录
iAgentReferralRelationService
.
del
(
csfClientUser
.
getClientUserBizId
(),
""
);
List
<
String
>
referrerIdList
=
referrerDTOList
.
stream
()
.
filter
(
d
->
StringUtils
.
isNotBlank
(
d
.
getClientUserBizId
()))
.
map
(
ApiReferrerDTO:
:
getClientUserBizId
)
.
collect
(
Collectors
.
toList
());
//新增辅导关系列表
if
(
CollectionUtils
.
isEmpty
(
referrerIdList
))
{
return
Result
.
success
();
}
List
<
AgentReferralRelation
>
saveList
=
referrerIdList
.
stream
().
map
(
id
->
{
AgentReferralRelation
relation
=
new
AgentReferralRelation
();
relation
.
setAgentId
(
csfClientUser
.
getClientUserBizId
());
relation
.
setIsActive
(
1
);
//推荐人ID
relation
.
setReferrerId
(
id
);
relation
.
setReferralBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_AGENT_REFERRAL_RELATION
.
getCode
()));
relation
.
setSource
(
CommonEnum
.
SOURCE_TYPE_PC
.
getCode
());
return
relation
;
}).
collect
(
Collectors
.
toList
());
iAgentReferralRelationService
.
saveOrUpdateBatch
(
saveList
);
return
Result
.
success
();
}
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiAgentTutoringRelationServiceImpl.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.yd.common.enums.CommonEnum
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.service.ApiAgentTutoringRelationService
;
import
com.yd.csf.feign.dto.tutor.ApiTutorDTO
;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.yd.csf.service.service.IAgentTutoringRelationService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
ApiAgentTutoringRelationServiceImpl
implements
ApiAgentTutoringRelationService
{
@Resource
private
IAgentTutoringRelationService
iAgentTutoringRelationService
;
/**
* 保存辅导关系列表
* @param tutorDTOList
* @param clientUserBizId
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
saveAgentTutoringRelationList
(
List
<
ApiTutorDTO
>
tutorDTOList
,
String
clientUserBizId
)
{
//根据用户唯一业务ID删除记录
iAgentTutoringRelationService
.
del
(
clientUserBizId
);
List
<
String
>
tutorIdList
=
tutorDTOList
.
stream
()
.
filter
(
d
->
StringUtils
.
isNotBlank
(
d
.
getClientUserBizId
()))
.
map
(
ApiTutorDTO:
:
getClientUserBizId
)
.
collect
(
Collectors
.
toList
());
//新增辅导关系列表
if
(
CollectionUtils
.
isEmpty
(
tutorIdList
))
{
return
Result
.
success
();
}
List
<
AgentTutoringRelation
>
saveList
=
tutorIdList
.
stream
().
map
(
id
->
{
AgentTutoringRelation
relation
=
new
AgentTutoringRelation
();
relation
.
setAgentId
(
clientUserBizId
);
relation
.
setIsActive
(
1
);
//辅导人ID
relation
.
setTutorId
(
id
);
relation
.
setTutoringBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_AGENT_TUTORING_RELATION
.
getCode
()));
return
relation
;
}).
collect
(
Collectors
.
toList
());
iAgentTutoringRelationService
.
saveOrUpdateBatch
(
saveList
);
return
Result
.
success
();
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiCommissionRuleBindingServiceImpl.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.csf.api.service.ApiCommissionRuleBindingService
;
import
com.yd.csf.feign.request.rulebind.ApiCommissionRuleBindingRequest
;
import
com.yd.csf.service.model.CommissionRuleBinding
;
import
com.yd.csf.service.service.ICommissionRuleBindingService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
ApiCommissionRuleBindingServiceImpl
implements
ApiCommissionRuleBindingService
{
@Resource
private
ICommissionRuleBindingService
bindingService
;
/**
* 保存基本法绑定信息
* @param request
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
saveCommissionRuleBinding
(
ApiCommissionRuleBindingRequest
request
)
{
//校验入参参数
verifyRuleBindingRequest
(
request
);
//通过目标ID删除记录
bindingService
.
del
(
request
.
getTargetId
());
//新增基本法绑定记录
List
<
CommissionRuleBinding
>
saveList
=
request
.
getRuleBizIdList
()
.
stream
()
.
map
(
ruleBizId
->
{
CommissionRuleBinding
binding
=
new
CommissionRuleBinding
();
BeanUtils
.
copyProperties
(
request
,
binding
);
binding
.
setRuleBizId
(
ruleBizId
);
return
binding
;
}).
collect
(
Collectors
.
toList
());
bindingService
.
saveOrUpdateBatch
(
saveList
);
return
Result
.
success
();
}
/**
* 校验基本法绑定信息入参参数
* @param request
*/
public
void
verifyRuleBindingRequest
(
ApiCommissionRuleBindingRequest
request
){
if
(
CollectionUtils
.
isEmpty
(
request
.
getRuleBizIdList
()))
{
throw
new
BusinessException
(
"基本法配置表唯一业务ID列表不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getTargetType
()))
{
throw
new
BusinessException
(
"绑定目标类型不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getTargetId
()))
{
throw
new
BusinessException
(
"绑定目标ID不能为空"
);
}
if
(
StringUtils
.
isBlank
(
request
.
getTargetName
()))
{
throw
new
BusinessException
(
"绑定目标名称不能为空"
);
}
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiCsfClientUserServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
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.CommonEnum
;
import
com.yd.common.enums.ProjectEnum
;
import
com.yd.common.enums.ProjectEnum
;
import
com.yd.common.enums.TenantEnum
;
import
com.yd.common.enums.TenantEnum
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.exception.BusinessException
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.common.utils.RandomStringGenerator
;
import
com.yd.csf.api.service.ApiCsfClientUserService
;
import
com.yd.csf.api.service.*
;
import
com.yd.csf.feign.dto.clientrole.ApiClientRoleDTO
;
import
com.yd.csf.feign.dto.csfclientuser.ApiCsfClientUserDTO
;
import
com.yd.csf.feign.dto.csfclientuser.ApiCsfClientUserDTO
;
import
com.yd.csf.feign.dto.org.ApiCsfClientUserOrgDTO
;
import
com.yd.csf.feign.dto.referrer.ApiReferrerDTO
;
import
com.yd.csf.feign.dto.rule.ApiRuleDTO
;
import
com.yd.csf.feign.dto.tutor.ApiTutorDTO
;
import
com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO
;
import
com.yd.csf.feign.enums.ClientRoleEnum
;
import
com.yd.csf.feign.enums.ClientRoleEnum
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.request.fyc.ApiInitAgentAccumulatedFycRequest
;
import
com.yd.csf.feign.request.rulebind.ApiCommissionRuleBindingRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.model.*
;
import
com.yd.csf.service.model.PolicyFollow
;
import
com.yd.csf.service.service.*
;
import
com.yd.csf.service.service.ICsfClientUserService
;
import
com.yd.insurance.base.feign.client.usersaleexpand.ApiUserSaleExpandFeignClient
;
import
com.yd.insurance.base.feign.client.usersignexpand.ApiUserSignExpandFeignClient
;
import
com.yd.insurance.base.feign.request.usersaleexpand.ApiUserSaleExpandSaveRequest
;
import
com.yd.insurance.base.feign.request.usersignexpand.ApiUserSignExpandSaveRequest
;
import
com.yd.user.feign.client.clientuser.ApiClientUserFeignClient
;
import
com.yd.user.feign.client.clientuser.ApiClientUserFeignClient
;
import
com.yd.user.feign.request.clientuser.ApiClientUserConditionListRequest
;
import
com.yd.user.feign.request.clientuser.ApiClientUserConditionListRequest
;
import
com.yd.user.feign.request.clientuser.ApiClientUserSaveRequest
;
import
com.yd.user.feign.response.clientuser.ApiClientUserDetailResponse
;
import
com.yd.user.feign.response.clientuser.ApiClientUserDetailResponse
;
import
com.yd.user.feign.response.clientuser.ApiClientUserSaveResponse
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -41,8 +56,44 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
...
@@ -41,8 +56,44 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
private
ICsfClientUserService
csfClientUserService
;
private
ICsfClientUserService
csfClientUserService
;
@Resource
@Resource
private
ApiAgentAccumulatedFycService
apiAgentAccumulatedFycService
;
@Resource
private
ApiCommissionRuleBindingService
apiCommissionRuleBindingService
;
@Resource
private
ApiUserBankService
apiUserBankService
;
@Resource
private
ApiAgentTutoringRelationService
apiAgentTutoringRelationService
;
@Resource
private
ApiAgentReferralRelationService
apiAgentReferralRelationService
;
@Resource
private
IClientRoleService
iClientRoleService
;
@Resource
private
IUserBankService
iUserBankService
;
@Resource
private
ICommissionRuleConfigService
iCommissionRuleConfigService
;
@Resource
private
IAgentTutoringRelationService
iAgentTutoringRelationService
;
@Resource
private
IAgentReferralRelationService
iAgentReferralRelationService
;
@Resource
private
ApiClientUserFeignClient
apiClientUserFeignClient
;
private
ApiClientUserFeignClient
apiClientUserFeignClient
;
@Resource
private
ApiUserSaleExpandFeignClient
apiUserSaleExpandFeignClient
;
@Resource
private
ApiUserSignExpandFeignClient
apiUserSignExpandFeignClient
;
/**
/**
* 分页查询-人员信息
* 分页查询-人员信息
* @param request
* @param request
...
@@ -50,9 +101,190 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
...
@@ -50,9 +101,190 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
*/
*/
@Override
@Override
public
Result
<
IPage
<
ApiCsfClientUserPageResponse
>>
page
(
ApiCsfClientUserPageRequest
request
)
{
public
Result
<
IPage
<
ApiCsfClientUserPageResponse
>>
page
(
ApiCsfClientUserPageRequest
request
)
{
return
null
;
Page
<
ApiCsfClientUserPageResponse
>
page
=
new
Page
<>(
request
.
getPageNo
(),
request
.
getPageSize
());
IPage
<
ApiCsfClientUserPageResponse
>
iPage
=
csfClientUserService
.
iPage
(
page
,
request
);
return
Result
.
success
(
iPage
);
}
}
/**
* 详情-人员信息
* @param csfClientUserBizId
* @return
*/
@Override
public
Result
<
ApiCsfClientUserDetailResponse
>
detail
(
String
csfClientUserBizId
)
{
CsfClientUser
csfClientUser
=
csfClientUserService
.
queryOne
(
csfClientUserBizId
);
if
(
csfClientUser
==
null
)
{
throw
new
BusinessException
(
"人员信息不存在"
);
}
ApiCsfClientUserDetailResponse
response
=
new
ApiCsfClientUserDetailResponse
();
//人员信息
ApiCsfClientUserDTO
userDTO
=
new
ApiCsfClientUserDTO
();
BeanUtils
.
copyProperties
(
csfClientUser
,
userDTO
);
//设置绑定的角色列表
List
<
ApiClientRoleDTO
>
roleDTOList
=
getRoleDTOList
(
csfClientUser
.
getRoleBizIds
());
userDTO
.
setRoleDTOList
(
roleDTOList
);
//设置绑定的基本法列表
List
<
ApiRuleDTO
>
ruleDTOList
=
getRuleDTOList
(
csfClientUser
.
getRuleBizIds
());
userDTO
.
setRuleDTOList
(
ruleDTOList
);
response
.
setUserDTO
(
userDTO
);
//人员银行信息列表
List
<
ApiCsfClientUserBankDTO
>
bankDTOList
=
getBankDTOList
(
csfClientUser
.
getCsfClientUserBizId
());
response
.
setBankDTOList
(
bankDTOList
);
//组织信息
//辅导列表
ApiCsfClientUserOrgDTO
orgDTO
=
new
ApiCsfClientUserOrgDTO
();
List
<
ApiTutorDTO
>
tutorDTOList
=
getTutorDTOList
(
csfClientUser
.
getClientUserBizId
());
orgDTO
.
setTutorDTOList
(
tutorDTOList
);
//推荐列表
List
<
ApiReferrerDTO
>
referrerDTOList
=
getReferrerDTOList
(
csfClientUser
.
getClientUserBizId
());
orgDTO
.
setReferrerDTOList
(
referrerDTOList
);
//一级和二级列表 TODO
response
.
setOrgDTO
(
orgDTO
);
return
Result
.
success
(
response
);
}
/**
* 获取推荐列表
* @param clientUserBizId
* @return
*/
public
List
<
ApiReferrerDTO
>
getReferrerDTOList
(
String
clientUserBizId
)
{
List
<
ApiReferrerDTO
>
referrerDTOList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
clientUserBizId
))
{
return
referrerDTOList
;
}
List
<
String
>
referrerIdList
=
iAgentReferralRelationService
.
lambdaQuery
()
.
select
(
AgentReferralRelation:
:
getReferrerId
)
.
eq
(
AgentReferralRelation:
:
getAgentId
,
clientUserBizId
)
.
list
()
// 返回 List<AgentTutoringRelation>
.
stream
()
.
map
(
AgentReferralRelation:
:
getReferrerId
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
referrerIdList
))
{
return
referrerDTOList
;
}
List
<
CsfClientUser
>
referrerList
=
csfClientUserService
.
lambdaQuery
()
.
in
(
CsfClientUser:
:
getClientUserBizId
,
referrerIdList
)
.
list
();
if
(
CollectionUtils
.
isEmpty
(
referrerList
))
{
return
referrerDTOList
;
}
return
referrerList
.
stream
().
map
(
user
->
{
ApiReferrerDTO
dto
=
new
ApiReferrerDTO
();
BeanUtils
.
copyProperties
(
user
,
dto
);
//TODO 设置等级名称
return
dto
;
}).
collect
(
Collectors
.
toList
());
}
/**
* 获取辅导列表
* @param clientUserBizId
* @return
*/
public
List
<
ApiTutorDTO
>
getTutorDTOList
(
String
clientUserBizId
)
{
List
<
ApiTutorDTO
>
tutorDTOList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
clientUserBizId
))
{
return
tutorDTOList
;
}
List
<
String
>
tutorIdList
=
iAgentTutoringRelationService
.
lambdaQuery
()
.
select
(
AgentTutoringRelation:
:
getTutorId
)
.
eq
(
AgentTutoringRelation:
:
getAgentId
,
clientUserBizId
)
.
list
()
// 返回 List<AgentTutoringRelation>
.
stream
()
.
map
(
AgentTutoringRelation:
:
getTutorId
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
tutorIdList
))
{
return
tutorDTOList
;
}
List
<
CsfClientUser
>
tutorList
=
csfClientUserService
.
lambdaQuery
()
.
in
(
CsfClientUser:
:
getClientUserBizId
,
tutorIdList
)
.
list
();
if
(
CollectionUtils
.
isEmpty
(
tutorList
))
{
return
tutorDTOList
;
}
return
tutorList
.
stream
().
map
(
user
->
{
ApiTutorDTO
dto
=
new
ApiTutorDTO
();
BeanUtils
.
copyProperties
(
user
,
dto
);
//TODO 设置等级名称
return
dto
;
}).
collect
(
Collectors
.
toList
());
}
/**
* 获取绑定的角色列表
* @param roleBizIds
* @return
*/
public
List
<
ApiClientRoleDTO
>
getRoleDTOList
(
String
roleBizIds
)
{
List
<
ApiClientRoleDTO
>
roleDTOList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
roleBizIds
))
{
return
roleDTOList
;
}
List
<
String
>
roleBizIdList
=
Arrays
.
asList
(
roleBizIds
.
split
(
";"
));
List
<
ClientRole
>
clientRoleList
=
iClientRoleService
.
queryList
(
roleBizIdList
);
if
(
CollectionUtils
.
isEmpty
(
clientRoleList
))
{
return
roleDTOList
;
}
roleDTOList
=
clientRoleList
.
stream
().
map
(
d
->
{
ApiClientRoleDTO
roleDTO
=
new
ApiClientRoleDTO
();
roleDTO
.
setName
(
d
.
getName
());
roleDTO
.
setRoleBizId
(
d
.
getRoleBizId
());
return
roleDTO
;
}).
collect
(
Collectors
.
toList
());
return
roleDTOList
;
}
/**
* 获取绑定的基本法列表
* @param ruleBizIds
* @return
*/
public
List
<
ApiRuleDTO
>
getRuleDTOList
(
String
ruleBizIds
)
{
List
<
ApiRuleDTO
>
ruleDTOList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
ruleBizIds
))
{
return
ruleDTOList
;
}
List
<
String
>
ruleBizIdList
=
Arrays
.
asList
(
ruleBizIds
.
split
(
";"
));
List
<
CommissionRuleConfig
>
ruleConfigList
=
iCommissionRuleConfigService
.
queryList
(
ruleBizIdList
);
if
(
CollectionUtils
.
isEmpty
(
ruleConfigList
))
{
return
ruleDTOList
;
}
ruleDTOList
=
ruleConfigList
.
stream
().
map
(
d
->
{
ApiRuleDTO
ruleDTO
=
new
ApiRuleDTO
();
ruleDTO
.
setRuleName
(
d
.
getRuleName
());
ruleDTO
.
setRuleBizId
(
d
.
getRuleBizId
());
return
ruleDTO
;
}).
collect
(
Collectors
.
toList
());
return
ruleDTOList
;
}
/**
* 获取人员银行信息列表
* @param csfClientUserBizId
* @return
*/
public
List
<
ApiCsfClientUserBankDTO
>
getBankDTOList
(
String
csfClientUserBizId
)
{
List
<
ApiCsfClientUserBankDTO
>
userBankDTOList
=
new
ArrayList
<>();
if
(
StringUtils
.
isBlank
(
csfClientUserBizId
))
{
return
userBankDTOList
;
}
List
<
UserBank
>
userBankList
=
iUserBankService
.
queryList
(
csfClientUserBizId
);
if
(
CollectionUtils
.
isEmpty
(
userBankList
))
{
return
userBankDTOList
;
}
userBankDTOList
=
userBankList
.
stream
().
map
(
d
->
{
ApiCsfClientUserBankDTO
bankDTO
=
new
ApiCsfClientUserBankDTO
();
BeanUtils
.
copyProperties
(
d
,
bankDTO
);
return
bankDTO
;
}).
collect
(
Collectors
.
toList
());
return
userBankDTOList
;
}
/**
/**
* 新增-人员信息
* 新增-人员信息
...
@@ -97,29 +329,117 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
...
@@ -97,29 +329,117 @@ public class ApiCsfClientUserServiceImpl implements ApiCsfClientUserService {
//中心用户记录不为空,获取中心用户ID保存
//中心用户记录不为空,获取中心用户ID保存
csfClientUser
.
setClientUserBizId
(
response
.
getClientUserBizId
());
csfClientUser
.
setClientUserBizId
(
response
.
getClientUserBizId
());
}
else
{
}
else
{
//中心用户记录为空,远程调用接口->创建中心用户 TODO
//中心用户记录为空,远程调用接口->创建中心用户
ApiClientUserSaveRequest
saveRequest
=
new
ApiClientUserSaveRequest
();
saveRequest
.
setApprovalStatus
(
CommonEnum
.
APPROVAL_STATUS_CG
.
getCode
());
saveRequest
.
setName
(
userDTO
.
getName
());
saveRequest
.
setPhone
(
userDTO
.
getPhone
());
//注册来源-PC
saveRequest
.
setRegisterSource
(
CommonEnum
.
SOURCE_TYPE_PC
.
getCode
());
saveRequest
.
setStatus
(
1
);
//租户唯一业务ID
saveRequest
.
setTenantBizId
(
TenantEnum
.
YD
.
getTenantBizId
());
//项目唯一业务ID
saveRequest
.
setProjectBizId
(
ProjectEnum
.
CSF_PC
.
getProjectBizId
());
try
{
//远程调用中心用户微服务-保存中心客户端用户信息
Result
<
ApiClientUserSaveResponse
>
saveResponseResult
=
apiClientUserFeignClient
.
save
(
saveRequest
);
if
(
saveResponseResult
!=
null
&&
saveResponseResult
.
getCode
()
==
200
)
{
ApiClientUserSaveResponse
userSaveResponse
=
saveResponseResult
.
getData
();
if
(
userSaveResponse
!=
null
)
{
csfClientUser
.
setClientUserBizId
(
userSaveResponse
.
getClientUserBizId
());
}
}
}
catch
(
Exception
e
)
{
log
.
info
(
"远程调用中心用户微服务-保存中心客户端用户信息失败:{}"
,
e
.
getMessage
());
throw
new
BusinessException
(
e
.
getMessage
());
}
}
}
csfClientUser
.
setCsfClientUserBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_CSF_CLIENT_USER
.
getCode
()));
csfClientUser
.
setCsfClientUserBizId
(
RandomStringGenerator
.
generateBizId16
(
CommonEnum
.
UID_TYPE_CSF_CLIENT_USER
.
getCode
()));
//绑定的客户端角色表表唯一业务ID列表(多个分号分隔)
//绑定的客户端角色表表唯一业务ID列表(多个分号分隔)
csfClientUser
.
setRoleBizIds
(
CollectionUtils
.
isNotEmpty
(
userDTO
.
getRoleBizIdList
())
?
String
.
join
(
";"
,
userDTO
.
getRoleBizIdList
())
:
""
);
List
<
String
>
roleBizIdList
=
userDTO
.
getRoleDTOList
().
stream
()
.
filter
(
d
->
StringUtils
.
isNotBlank
(
d
.
getRoleBizId
()))
.
map
(
ApiClientRoleDTO:
:
getRoleBizId
)
.
collect
(
Collectors
.
toList
());
csfClientUser
.
setRoleBizIds
(
CollectionUtils
.
isNotEmpty
(
roleBizIdList
)
?
String
.
join
(
";"
,
roleBizIdList
)
:
""
);
//绑定的基本法配置表唯一业务ID列表(多个分号分隔)
//绑定的基本法配置表唯一业务ID列表(多个分号分隔)
csfClientUser
.
setRuleBizIds
(
CollectionUtils
.
isNotEmpty
(
userDTO
.
getRuleBizIdList
())
?
String
.
join
(
";"
,
userDTO
.
getRuleBizIdList
())
:
""
);
List
<
String
>
ruleBizIdList
=
userDTO
.
getRuleDTOList
().
stream
()
.
filter
(
d
->
StringUtils
.
isNotBlank
(
d
.
getRuleBizId
()))
.
map
(
ApiRuleDTO:
:
getRuleBizId
)
.
collect
(
Collectors
.
toList
());
csfClientUser
.
setRuleBizIds
(
CollectionUtils
.
isNotEmpty
(
ruleBizIdList
)
?
String
.
join
(
";"
,
ruleBizIdList
)
:
""
);
csfClientUserService
.
saveOrUpdate
(
csfClientUser
);
csfClientUserService
.
saveOrUpdate
(
csfClientUser
);
//根据初始化职级,fyc表(业务员累计积分表 - 存储业务员的累计FYC积分和当前等级信息)新增初始化记录
ApiInitAgentAccumulatedFycRequest
fycRequest
=
new
ApiInitAgentAccumulatedFycRequest
();
fycRequest
.
setAgentId
(
csfClientUser
.
getClientUserBizId
());
fycRequest
.
setAgentName
(
csfClientUser
.
getName
());
fycRequest
.
setInitGrade
(
userDTO
.
getInitGradeCode
());
apiAgentAccumulatedFycService
.
initAgentAccumulatedFyc
(
fycRequest
);
//根据绑定的基本法配置,新增基本法绑定表记录
ApiCommissionRuleBindingRequest
bindingRequest
=
new
ApiCommissionRuleBindingRequest
();
bindingRequest
.
setTargetId
(
csfClientUser
.
getClientUserBizId
());
bindingRequest
.
setTargetName
(
csfClientUser
.
getName
());
bindingRequest
.
setTargetType
(
"AGENT"
);
bindingRequest
.
setStatus
(
1
);
bindingRequest
.
setRuleBizIdList
(
roleBizIdList
);
apiCommissionRuleBindingService
.
saveCommissionRuleBinding
(
bindingRequest
);
//保存用户银行列表信息
apiUserBankService
.
saveUserBankList
(
csfClientUser
,
request
.
getBankDTOList
());
//根据选择的角色,对应更新相关的表(转介人表、签单员表、合伙人表等)
//根据选择的角色,对应更新相关的表(转介人表、签单员表、合伙人表等)
List
<
String
>
roleBizIdList
=
userDTO
.
getRoleBizIdList
();
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
ZJR
.
getItemValue
()))
{
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
ZJR
.
getItemValue
()))
{
// 处理转介人逻辑 => 更新或新增转介人信息 TODO
// 处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存转介人表信息
ApiUserSaleExpandSaveRequest
saleExpandSaveRequest
=
new
ApiUserSaleExpandSaveRequest
();
BeanUtils
.
copyProperties
(
csfClientUser
,
saleExpandSaveRequest
);
saleExpandSaveRequest
.
setRealName
(
csfClientUser
.
getName
());
saleExpandSaveRequest
.
setClientUserBizId
(
csfClientUser
.
getClientUserBizId
());
try
{
apiUserSaleExpandFeignClient
.
save
(
saleExpandSaveRequest
);
}
catch
(
Exception
e
){
log
.
info
(
"处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存转介人表信息失败:{}"
,
e
.
getMessage
());
throw
new
BusinessException
(
e
.
getMessage
());
}
}
}
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
QDY
.
getItemValue
()))
{
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
QDY
.
getItemValue
()))
{
// 处理签单员逻辑 => 更新或新增签单员信息 TODO
// 处理签单员逻辑 => 更新或新增签单员信息 => 远程调用保险基础数据服务保存签单员表信息
ApiUserSignExpandSaveRequest
signExpandSaveRequest
=
new
ApiUserSignExpandSaveRequest
();
BeanUtils
.
copyProperties
(
csfClientUser
,
signExpandSaveRequest
);
signExpandSaveRequest
.
setRealName
(
csfClientUser
.
getName
());
signExpandSaveRequest
.
setClientUserBizId
(
csfClientUser
.
getClientUserBizId
());
try
{
apiUserSignExpandFeignClient
.
save
(
signExpandSaveRequest
);
}
catch
(
Exception
e
){
log
.
info
(
"处理转介人逻辑 => 更新或新增转介人信息 => 远程调用保险基础数据服务保存签单员表信息失败:{}"
,
e
.
getMessage
());
throw
new
BusinessException
(
e
.
getMessage
());
}
}
}
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
HHR
.
getItemValue
()))
{
if
(
roleBizIdList
!=
null
&&
roleBizIdList
.
contains
(
ClientRoleEnum
.
HHR
.
getItemValue
()))
{
// 处理合伙人逻辑 TODO
// 处理合伙人逻辑 TODO
}
}
return
null
;
//处理组织关系
handleOrgRel
(
request
.
getOrgDTO
(),
csfClientUser
);
return
Result
.
success
();
}
}
/**
* 处理组织关系
* @param orgDTO
* @param csfClientUser
* @return
*/
public
Result
handleOrgRel
(
ApiCsfClientUserOrgDTO
orgDTO
,
CsfClientUser
csfClientUser
)
{
//处理辅导关系
apiAgentTutoringRelationService
.
saveAgentTutoringRelationList
(
orgDTO
.
getTutorDTOList
(),
csfClientUser
.
getClientUserBizId
());
//处理推荐关系
apiAgentReferralRelationService
.
saveAgentReferralRelationList
(
orgDTO
.
getReferrerDTOList
(),
csfClientUser
);
//处理一级和二级关系 TODO
return
Result
.
success
();
}
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiMemberGradeConfigServiceImpl.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.yd.csf.api.service.ApiMemberGradeConfigService
;
import
com.yd.csf.service.model.MemberGradeConfig
;
import
com.yd.csf.service.service.IMemberGradeConfigService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
@Slf4j
@Service
public
class
ApiMemberGradeConfigServiceImpl
implements
ApiMemberGradeConfigService
{
@Resource
private
IMemberGradeConfigService
iMemberGradeConfigService
;
/**
* 根据初始化等级获取初始化积分值
* @param initGrade
* @return
*/
@Override
public
BigDecimal
getInitEffect
(
String
initGrade
)
{
MemberGradeConfig
memberGradeConfig
=
iMemberGradeConfigService
.
queryOne
(
initGrade
);
if
(
memberGradeConfig
==
null
)
{
return
BigDecimal
.
ZERO
;
}
//最大积分值等于空,返回最小积分值。否则返回最大积分值-1
return
memberGradeConfig
.
getMaxValue
()
==
null
?
memberGradeConfig
.
getMinValue
()
:
memberGradeConfig
.
getMaxValue
().
subtract
(
new
BigDecimal
(
"1.00"
));
}
}
yd-csf-api/src/main/java/com/yd/csf/api/service/impl/ApiUserBankServiceImpl.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
api
.
service
.
impl
;
import
com.yd.common.result.Result
;
import
com.yd.csf.api.service.ApiUserBankService
;
import
com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.model.UserBank
;
import
com.yd.csf.service.service.IUserBankService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Slf4j
@Service
public
class
ApiUserBankServiceImpl
implements
ApiUserBankService
{
@Resource
private
IUserBankService
iUserBankService
;
/**
* 处理用户银行列表信息
* @param csfClientUser
* @param bankDTOList
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Result
saveUserBankList
(
CsfClientUser
csfClientUser
,
List
<
ApiCsfClientUserBankDTO
>
bankDTOList
)
{
//根据CSF客户端用户表唯一业务ID逻辑删除
iUserBankService
.
del
(
csfClientUser
.
getCsfClientUserBizId
());
//新增银行列表信息
if
(
CollectionUtils
.
isEmpty
(
bankDTOList
))
{
return
Result
.
success
();
}
List
<
UserBank
>
saveList
=
bankDTOList
.
stream
().
map
(
d
->
{
UserBank
userBank
=
new
UserBank
();
BeanUtils
.
copyProperties
(
d
,
userBank
);
return
userBank
;
}).
collect
(
Collectors
.
toList
());
iUserBankService
.
saveOrUpdateBatch
(
saveList
);
return
Result
.
success
();
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/client/csfclientuser/ApiCsfClientUserFeignClient.java
View file @
5cc763ef
...
@@ -4,10 +4,16 @@ import com.yd.common.result.Result;
...
@@ -4,10 +4,16 @@ import com.yd.common.result.Result;
import
com.yd.csf.feign.fallback.csfclientuser.ApiCsfClientUserFeignFallbackFactory
;
import
com.yd.csf.feign.fallback.csfclientuser.ApiCsfClientUserFeignFallbackFactory
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserAddRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserDetailResponse
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.validation.constraints.NotBlank
;
/**
/**
* 香港保险服务-CSF客户端用户信息接口Feign客户端
* 香港保险服务-CSF客户端用户信息接口Feign客户端
...
@@ -24,6 +30,14 @@ public interface ApiCsfClientUserFeignClient {
...
@@ -24,6 +30,14 @@ public interface ApiCsfClientUserFeignClient {
Result
page
(
@Validated
@RequestBody
ApiCsfClientUserPageRequest
request
);
Result
page
(
@Validated
@RequestBody
ApiCsfClientUserPageRequest
request
);
/**
/**
* 详情-人员信息
* @param csfClientUserBizId
* @return
*/
@GetMapping
(
"/detail"
)
Result
<
ApiCsfClientUserDetailResponse
>
detail
(
@NotBlank
(
message
=
"CSF客户端用户表唯一业务ID不能为空"
)
@RequestParam
(
value
=
"csfClientUserBizId"
)
String
csfClientUserBizId
);
/**
* 新增-人员信息
* 新增-人员信息
* @param request
* @param request
* @return
* @return
...
...
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/clientrole/ApiClientRoleDTO.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
clientrole
;
import
lombok.Data
;
@Data
public
class
ApiClientRoleDTO
{
/**
* 客户端角色表唯一业务ID
*/
private
String
roleBizId
;
/**
* 角色名称
*/
private
String
name
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/csfclientuser/ApiCsfClientUserDTO.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
csfclientuser
;
package
com
.
yd
.
csf
.
feign
.
dto
.
csfclientuser
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.yd.csf.feign.dto.clientrole.ApiClientRoleDTO
;
import
com.yd.csf.feign.dto.rule.ApiRuleDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
...
@@ -14,8 +16,8 @@ public class ApiCsfClientUserDTO {
...
@@ -14,8 +16,8 @@ public class ApiCsfClientUserDTO {
/**
/**
* 绑定的角色列表(转介人、签单员、合伙人等)
* 绑定的角色列表(转介人、签单员、合伙人等)
*/
*/
@NotEmpty
(
message
=
"角色不能为空"
)
@NotEmpty
(
message
=
"角色
列表
不能为空"
)
private
List
<
String
>
roleBizId
List
;
private
List
<
ApiClientRoleDTO
>
roleDTO
List
;
/**
/**
* 姓名
* 姓名
...
@@ -75,7 +77,7 @@ public class ApiCsfClientUserDTO {
...
@@ -75,7 +77,7 @@ public class ApiCsfClientUserDTO {
/**
/**
* 绑定的基本法配置表唯一业务ID列表(可以勾选多个)
* 绑定的基本法配置表唯一业务ID列表(可以勾选多个)
*/
*/
private
List
<
String
>
ruleBizId
List
;
private
List
<
ApiRuleDTO
>
ruleDTO
List
;
/**
/**
* 初始化等级编码
* 初始化等级编码
...
...
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/org/ApiCsfClientUserOrgDTO.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
org
;
package
com
.
yd
.
csf
.
feign
.
dto
.
org
;
import
com.yd.csf.feign.dto.referrer.ApiReferrerDTO
;
import
com.yd.csf.feign.dto.tutor.ApiTutorDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Data
public
class
ApiCsfClientUserOrgDTO
{
public
class
ApiCsfClientUserOrgDTO
{
//TODO 一级和二级关系待定
/**
* 辅导人的客户端用户列表
*/
private
List
<
ApiTutorDTO
>
tutorDTOList
;
/**
* 推荐人的客户端用户唯一业务ID列表
*/
private
List
<
ApiReferrerDTO
>
referrerDTOList
;
}
}
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/referrer/ApiReferrerDTO.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
referrer
;
import
lombok.Data
;
@Data
public
class
ApiReferrerDTO
{
/**
* 中台客户端用户表唯一业务ID(客户端用户中心表)
*/
private
String
clientUserBizId
;
/**
* 姓名
*/
private
String
name
;
/**
* 性别(0:未知 1:男 2:女)
*/
private
String
gender
;
/**
* 等级编码
*/
private
String
gradeCode
;
/**
* 等级名称
*/
private
String
gradeName
;
/**
* 手机号
*/
private
String
phone
;
/**
* 邮箱
*/
private
String
email
;
/**
* 内部编号
*/
private
String
internalNumber
;
/**
* 所属团队名称
*/
private
String
teamName
;
/**
* 所属公司名称(中台部门名称)
*/
private
String
deptName
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/rule/ApiRuleDTO.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
rule
;
import
lombok.Data
;
@Data
public
class
ApiRuleDTO
{
/**
* 基本法配置表唯一业务ID
*/
private
String
ruleBizId
;
/**
* 基本法名称
*/
private
String
ruleName
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/dto/tutor/ApiTutorDTO.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
dto
.
tutor
;
import
lombok.Data
;
@Data
public
class
ApiTutorDTO
{
/**
* 中台客户端用户表唯一业务ID(客户端用户中心表)
*/
private
String
clientUserBizId
;
/**
* 姓名
*/
private
String
name
;
/**
* 性别(0:未知 1:男 2:女)
*/
private
String
gender
;
/**
* 等级编码
*/
private
String
gradeCode
;
/**
* 等级名称
*/
private
String
gradeName
;
/**
* 手机号
*/
private
String
phone
;
/**
* 邮箱
*/
private
String
email
;
/**
* 内部编号
*/
private
String
internalNumber
;
/**
* 所属团队名称
*/
private
String
teamName
;
/**
* 所属公司名称(中台部门名称)
*/
private
String
deptName
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/request/csfclientuser/ApiCsfClientUserPageRequest.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
request
.
csfclientuser
;
package
com
.
yd
.
csf
.
feign
.
request
.
csfclientuser
;
import
com.yd.common.dto.PageDto
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.List
;
@Data
@Data
public
class
ApiCsfClientUserPageRequest
{
public
class
ApiCsfClientUserPageRequest
extends
PageDto
{
/**
/**
* 姓名
* 姓名
...
...
yd-csf-feign/src/main/java/com/yd/csf/feign/request/fyc/ApiInitAgentAccumulatedFycRequest.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
request
.
fyc
;
import
lombok.Data
;
@Data
public
class
ApiInitAgentAccumulatedFycRequest
{
/**
* 业务员ID(会员唯一业务ID)
*/
private
String
agentId
;
/**
* 业务员名称
*/
private
String
agentName
;
/**
* 初始化等级(初始化已生效积分对应等级)
*/
private
String
initGrade
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/request/rulebind/ApiCommissionRuleBindingRequest.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
request
.
rulebind
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Data
public
class
ApiCommissionRuleBindingRequest
{
/**
* 基本法配置表唯一业务ID列表
*/
private
List
<
String
>
ruleBizIdList
;
/**
* 绑定目标类型:AGENT-业务员, TEAM-团队
*/
private
String
targetType
;
/**
* 目标ID,业务员ID或团队ID
*/
private
String
targetId
;
/**
* 目标名称,业务员姓名或团队名称
*/
private
String
targetName
;
/**
* 生效开始时间,绑定关系开始生效的时间
*/
private
LocalDateTime
effectiveStart
;
/**
* 生效结束时间,绑定关系失效的时间
*/
private
LocalDateTime
effectiveEnd
;
/**
* 状态(0:停用 1:启用)
*/
private
Integer
status
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/response/csfclientuser/ApiCsfClientUserDetailResponse.java
0 → 100644
View file @
5cc763ef
package
com
.
yd
.
csf
.
feign
.
response
.
csfclientuser
;
import
com.yd.csf.feign.dto.csfclientuser.ApiCsfClientUserDTO
;
import
com.yd.csf.feign.dto.org.ApiCsfClientUserOrgDTO
;
import
com.yd.csf.feign.dto.userbank.ApiCsfClientUserBankDTO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ApiCsfClientUserDetailResponse
{
/**
* 人员基本信息
*/
private
ApiCsfClientUserDTO
userDTO
;
/**
* 人员银行信息列表
*/
private
List
<
ApiCsfClientUserBankDTO
>
bankDTOList
;
/**
* 组织信息
*/
private
ApiCsfClientUserOrgDTO
orgDTO
;
}
yd-csf-feign/src/main/java/com/yd/csf/feign/response/csfclientuser/ApiCsfClientUserPageResponse.java
View file @
5cc763ef
...
@@ -57,7 +57,12 @@ public class ApiCsfClientUserPageResponse {
...
@@ -57,7 +57,12 @@ public class ApiCsfClientUserPageResponse {
private
String
deptName
;
private
String
deptName
;
/**
/**
* 绑定的客户端角色表名称列表
* 绑定的客户端角色表名称列表
(多个用分号分隔)
*/
*/
private
List
<
String
>
roleNameList
;
private
String
roleNameList
;
/**
* 基本法名称列表(多个用分号分隔)
*/
private
String
ruleNameList
;
}
}
yd-csf-service/src/main/java/com/yd/csf/service/dao/CsfClientUserMapper.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
dao
;
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.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
/**
/**
* <p>
* <p>
...
@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...
@@ -13,4 +18,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
*/
public
interface
CsfClientUserMapper
extends
BaseMapper
<
CsfClientUser
>
{
public
interface
CsfClientUserMapper
extends
BaseMapper
<
CsfClientUser
>
{
IPage
<
ApiCsfClientUserPageResponse
>
page
(
@Param
(
"page"
)
Page
<
ApiCsfClientUserPageResponse
>
page
,
@Param
(
"request"
)
ApiCsfClientUserPageRequest
request
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IAgentTutoringRelationService.java
View file @
5cc763ef
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 辅导关系表 服务类
* 辅导关系表 服务类
...
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
*/
public
interface
IAgentTutoringRelationService
extends
IService
<
AgentTutoringRelation
>
{
public
interface
IAgentTutoringRelationService
extends
IService
<
AgentTutoringRelation
>
{
Boolean
del
(
String
agentId
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IClientRoleService.java
View file @
5cc763ef
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
import
com.yd.csf.service.model.ClientRole
;
import
com.yd.csf.service.model.ClientRole
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 客户端角色表 服务类
* 客户端角色表 服务类
...
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
*/
public
interface
IClientRoleService
extends
IService
<
ClientRole
>
{
public
interface
IClientRoleService
extends
IService
<
ClientRole
>
{
List
<
ClientRole
>
queryList
(
List
<
String
>
roleBizIdList
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/ICommissionRuleBindingService.java
View file @
5cc763ef
...
@@ -17,4 +17,6 @@ import java.util.List;
...
@@ -17,4 +17,6 @@ import java.util.List;
public
interface
ICommissionRuleBindingService
extends
IService
<
CommissionRuleBinding
>
{
public
interface
ICommissionRuleBindingService
extends
IService
<
CommissionRuleBinding
>
{
List
<
CommissionRuleBinding
>
queryList
(
CommissionRuleBindingDto
dto
);
List
<
CommissionRuleBinding
>
queryList
(
CommissionRuleBindingDto
dto
);
Boolean
del
(
String
targetId
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/ICommissionRuleConfigService.java
View file @
5cc763ef
...
@@ -25,5 +25,7 @@ public interface ICommissionRuleConfigService extends IService<CommissionRuleCon
...
@@ -25,5 +25,7 @@ public interface ICommissionRuleConfigService extends IService<CommissionRuleCon
List
<
CommissionRuleConfig
>
queryList
(
CommissionRuleConfigDto
dto
);
List
<
CommissionRuleConfig
>
queryList
(
CommissionRuleConfigDto
dto
);
List
<
CommissionRuleConfig
>
queryList
(
List
<
String
>
ruleBizIdList
);
CommissionRuleConfig
queryOne
(
String
ruleBizId
);
CommissionRuleConfig
queryOne
(
String
ruleBizId
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/ICsfClientUserService.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
;
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.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
...
@@ -16,5 +20,10 @@ import java.util.List;
...
@@ -16,5 +20,10 @@ import java.util.List;
*/
*/
public
interface
ICsfClientUserService
extends
IService
<
CsfClientUser
>
{
public
interface
ICsfClientUserService
extends
IService
<
CsfClientUser
>
{
IPage
<
ApiCsfClientUserPageResponse
>
iPage
(
Page
<
ApiCsfClientUserPageResponse
>
page
,
ApiCsfClientUserPageRequest
request
);
List
<
CsfClientUser
>
queryList
(
QueryCsfClientUserDTO
userDTO
);
List
<
CsfClientUser
>
queryList
(
QueryCsfClientUserDTO
userDTO
);
CsfClientUser
queryOne
(
String
csfClientUserBizId
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IMemberGradeConfigService.java
View file @
5cc763ef
...
@@ -24,4 +24,6 @@ public interface IMemberGradeConfigService extends IService<MemberGradeConfig> {
...
@@ -24,4 +24,6 @@ public interface IMemberGradeConfigService extends IService<MemberGradeConfig> {
* @return Map<业务员ID, 匹配的等级配置>(未匹配到的不包含在Map中)
* @return Map<业务员ID, 匹配的等级配置>(未匹配到的不包含在Map中)
*/
*/
Map
<
String
,
MemberGradeConfig
>
batchGetGradeByPromotion
(
List
<
GradeQueryParam
>
paramList
);
Map
<
String
,
MemberGradeConfig
>
batchGetGradeByPromotion
(
List
<
GradeQueryParam
>
paramList
);
MemberGradeConfig
queryOne
(
String
gradeCode
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/IUserBankService.java
View file @
5cc763ef
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
...
@@ -3,6 +3,8 @@ package com.yd.csf.service.service;
import
com.yd.csf.service.model.UserBank
;
import
com.yd.csf.service.model.UserBank
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 用户银行信息表 服务类
* 用户银行信息表 服务类
...
@@ -13,4 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
...
@@ -13,4 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
*/
public
interface
IUserBankService
extends
IService
<
UserBank
>
{
public
interface
IUserBankService
extends
IService
<
UserBank
>
{
Boolean
del
(
String
csfClientUserBizId
);
List
<
UserBank
>
queryList
(
String
csfClientUserBizId
);
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/AgentReferralRelationServiceImpl.java
View file @
5cc763ef
...
@@ -49,8 +49,8 @@ public class AgentReferralRelationServiceImpl extends ServiceImpl<AgentReferralR
...
@@ -49,8 +49,8 @@ public class AgentReferralRelationServiceImpl extends ServiceImpl<AgentReferralR
@Override
@Override
public
Boolean
del
(
String
agentId
,
String
referrerId
)
{
public
Boolean
del
(
String
agentId
,
String
referrerId
)
{
return
this
.
remove
(
new
LambdaQueryWrapper
<
AgentReferralRelation
>()
return
this
.
remove
(
new
LambdaQueryWrapper
<
AgentReferralRelation
>()
.
eq
(
AgentReferralRelation:
:
getAgentId
,
agentId
)
.
eq
(
StringUtils
.
isNotBlank
(
agentId
),
AgentReferralRelation:
:
getAgentId
,
agentId
)
.
eq
(
AgentReferralRelation:
:
getReferrerId
,
referrerId
)
.
eq
(
StringUtils
.
isNotBlank
(
referrerId
),
AgentReferralRelation:
:
getReferrerId
,
referrerId
)
);
);
}
}
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/AgentTutoringRelationServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.yd.csf.service.model.AgentTutoringRelation
;
import
com.yd.csf.service.dao.AgentTutoringRelationMapper
;
import
com.yd.csf.service.dao.AgentTutoringRelationMapper
;
import
com.yd.csf.service.service.IAgentTutoringRelationService
;
import
com.yd.csf.service.service.IAgentTutoringRelationService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 辅导关系表 服务实现类
* 辅导关系表 服务实现类
...
@@ -17,4 +20,10 @@ import org.springframework.stereotype.Service;
...
@@ -17,4 +20,10 @@ import org.springframework.stereotype.Service;
@Service
@Service
public
class
AgentTutoringRelationServiceImpl
extends
ServiceImpl
<
AgentTutoringRelationMapper
,
AgentTutoringRelation
>
implements
IAgentTutoringRelationService
{
public
class
AgentTutoringRelationServiceImpl
extends
ServiceImpl
<
AgentTutoringRelationMapper
,
AgentTutoringRelation
>
implements
IAgentTutoringRelationService
{
@Override
public
Boolean
del
(
String
agentId
)
{
return
this
.
remove
(
new
LambdaQueryWrapper
<
AgentTutoringRelation
>()
.
eq
(
AgentTutoringRelation:
:
getAgentId
,
agentId
));
}
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/ClientRoleServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.csf.service.model.ClientRole
;
import
com.yd.csf.service.model.ClientRole
;
import
com.yd.csf.service.dao.ClientRoleMapper
;
import
com.yd.csf.service.dao.ClientRoleMapper
;
import
com.yd.csf.service.service.IClientRoleService
;
import
com.yd.csf.service.service.IClientRoleService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 客户端角色表 服务实现类
* 客户端角色表 服务实现类
...
@@ -17,4 +20,9 @@ import org.springframework.stereotype.Service;
...
@@ -17,4 +20,9 @@ import org.springframework.stereotype.Service;
@Service
@Service
public
class
ClientRoleServiceImpl
extends
ServiceImpl
<
ClientRoleMapper
,
ClientRole
>
implements
IClientRoleService
{
public
class
ClientRoleServiceImpl
extends
ServiceImpl
<
ClientRoleMapper
,
ClientRole
>
implements
IClientRoleService
{
@Override
public
List
<
ClientRole
>
queryList
(
List
<
String
>
roleBizIdList
)
{
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
ClientRole
>()
.
in
(
ClientRole:
:
getRoleBizId
,
roleBizIdList
));
}
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionRuleBindingServiceImpl.java
View file @
5cc763ef
...
@@ -38,5 +38,11 @@ public class CommissionRuleBindingServiceImpl extends ServiceImpl<CommissionRule
...
@@ -38,5 +38,11 @@ public class CommissionRuleBindingServiceImpl extends ServiceImpl<CommissionRule
return
list
;
return
list
;
}
}
@Override
public
Boolean
del
(
String
targetId
)
{
return
this
.
remove
(
new
LambdaQueryWrapper
<
CommissionRuleBinding
>()
.
eq
(
CommissionRuleBinding:
:
getTargetId
,
targetId
));
}
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CommissionRuleConfigServiceImpl.java
View file @
5cc763ef
...
@@ -49,6 +49,12 @@ public class CommissionRuleConfigServiceImpl extends ServiceImpl<CommissionRuleC
...
@@ -49,6 +49,12 @@ public class CommissionRuleConfigServiceImpl extends ServiceImpl<CommissionRuleC
return
list
;
return
list
;
}
}
@Override
public
List
<
CommissionRuleConfig
>
queryList
(
List
<
String
>
ruleBizIdList
)
{
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CommissionRuleConfig
>()
.
eq
(
CommissionRuleConfig:
:
getRuleBizId
,
ruleBizIdList
));
}
/**
/**
* 查询单个对象
* 查询单个对象
* @param ruleBizId
* @param ruleBizId
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/CsfClientUserServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yd.csf.feign.request.csfclientuser.ApiCsfClientUserPageRequest
;
import
com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.dto.query.QueryCsfClientUserDTO
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.model.CsfClientUser
;
import
com.yd.csf.service.dao.CsfClientUserMapper
;
import
com.yd.csf.service.dao.CsfClientUserMapper
;
...
@@ -23,10 +27,24 @@ import java.util.List;
...
@@ -23,10 +27,24 @@ import java.util.List;
public
class
CsfClientUserServiceImpl
extends
ServiceImpl
<
CsfClientUserMapper
,
CsfClientUser
>
implements
ICsfClientUserService
{
public
class
CsfClientUserServiceImpl
extends
ServiceImpl
<
CsfClientUserMapper
,
CsfClientUser
>
implements
ICsfClientUserService
{
@Override
@Override
public
IPage
<
ApiCsfClientUserPageResponse
>
iPage
(
Page
<
ApiCsfClientUserPageResponse
>
page
,
ApiCsfClientUserPageRequest
request
)
{
return
this
.
baseMapper
.
page
(
page
,
request
);
}
@Override
public
List
<
CsfClientUser
>
queryList
(
QueryCsfClientUserDTO
userDTO
)
{
public
List
<
CsfClientUser
>
queryList
(
QueryCsfClientUserDTO
userDTO
)
{
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CsfClientUser
>()
return
this
.
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
CsfClientUser
>()
.
eq
(
StringUtils
.
isNotBlank
(
userDTO
.
getPhone
()),
CsfClientUser:
:
getPhone
,
userDTO
.
getPhone
())
.
eq
(
StringUtils
.
isNotBlank
(
userDTO
.
getPhone
()),
CsfClientUser:
:
getPhone
,
userDTO
.
getPhone
())
.
ne
(
userDTO
.
getIsMy
(),
CsfClientUser:
:
getCsfClientUserBizId
,
userDTO
.
getCsfClientUserBizId
())
.
ne
(
userDTO
.
getIsMy
(),
CsfClientUser:
:
getCsfClientUserBizId
,
userDTO
.
getCsfClientUserBizId
())
);
);
}
}
@Override
public
CsfClientUser
queryOne
(
String
csfClientUserBizId
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
CsfClientUser
>()
.
eq
(
CsfClientUser:
:
getCsfClientUserBizId
,
csfClientUserBizId
)
.
last
(
" limit 1 "
)
);
}
}
}
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/MemberGradeConfigServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.csf.service.dto.GradeQueryParam
;
import
com.yd.csf.service.dto.GradeQueryParam
;
import
com.yd.csf.service.model.MemberGradeConfig
;
import
com.yd.csf.service.model.MemberGradeConfig
;
import
com.yd.csf.service.dao.MemberGradeConfigMapper
;
import
com.yd.csf.service.dao.MemberGradeConfigMapper
;
...
@@ -89,6 +90,14 @@ public class MemberGradeConfigServiceImpl extends ServiceImpl<MemberGradeConfigM
...
@@ -89,6 +90,14 @@ public class MemberGradeConfigServiceImpl extends ServiceImpl<MemberGradeConfigM
return
resultMap
;
return
resultMap
;
}
}
@Override
public
MemberGradeConfig
queryOne
(
String
gradeCode
)
{
return
this
.
getOne
(
new
LambdaQueryWrapper
<
MemberGradeConfig
>()
.
eq
(
MemberGradeConfig:
:
getGradeCode
,
gradeCode
)
.
last
(
" limit 1 "
)
);
}
/**
/**
* 检查等级区间是否有重叠
* 检查等级区间是否有重叠
*/
*/
...
...
yd-csf-service/src/main/java/com/yd/csf/service/service/impl/UserBankServiceImpl.java
View file @
5cc763ef
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
package
com
.
yd
.
csf
.
service
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yd.csf.service.model.UserBank
;
import
com.yd.csf.service.model.UserBank
;
import
com.yd.csf.service.dao.UserBankMapper
;
import
com.yd.csf.service.dao.UserBankMapper
;
import
com.yd.csf.service.service.IUserBankService
;
import
com.yd.csf.service.service.IUserBankService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 用户银行信息表 服务实现类
* 用户银行信息表 服务实现类
...
@@ -17,4 +20,15 @@ import org.springframework.stereotype.Service;
...
@@ -17,4 +20,15 @@ import org.springframework.stereotype.Service;
@Service
@Service
public
class
UserBankServiceImpl
extends
ServiceImpl
<
UserBankMapper
,
UserBank
>
implements
IUserBankService
{
public
class
UserBankServiceImpl
extends
ServiceImpl
<
UserBankMapper
,
UserBank
>
implements
IUserBankService
{
@Override
public
Boolean
del
(
String
csfClientUserBizId
)
{
return
this
.
remove
(
new
LambdaQueryWrapper
<
UserBank
>()
.
eq
(
UserBank:
:
getCsfClientUserBizId
,
csfClientUserBizId
));
}
@Override
public
List
<
UserBank
>
queryList
(
String
csfClientUserBizId
)
{
return
this
.
list
(
new
LambdaQueryWrapper
<
UserBank
>()
.
eq
(
UserBank:
:
getCsfClientUserBizId
,
csfClientUserBizId
));
}
}
}
yd-csf-service/src/main/resources/mappers/CsfClientUserMapper.xml
View file @
5cc763ef
...
@@ -2,4 +2,77 @@
...
@@ -2,4 +2,77 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!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.CsfClientUserMapper"
>
<mapper
namespace=
"com.yd.csf.service.dao.CsfClientUserMapper"
>
</mapper>
<select
id=
"page"
resultType=
"com.yd.csf.feign.response.csfclientuser.ApiCsfClientUserPageResponse"
>
SELECT
u.name,
u.gender,
u.current_grade_code AS currentGradeCode,
(SELECT grade_name
FROM member_grade_config
WHERE grade_code = u.current_grade_code
AND is_deleted = 0 LIMIT 1 ) AS currentGradeName,
u.phone,
u.email,
u.internal_number AS internalNumber,
u.ra_number AS raNumber,
u.team_name AS teamName,
u.dept_name AS deptName,
(SELECT GROUP_CONCAT(r.name SEPARATOR ';')
FROM client_role r
WHERE r.is_deleted = 0
AND FIND_IN_SET(r.role_biz_id, REPLACE(u.role_biz_ids, ';', ',')) > 0) AS roleNameList,
(SELECT GROUP_CONCAT(c.rule_name SEPARATOR ';')
FROM commission_rule_config c
WHERE c.is_deleted = 0
AND FIND_IN_SET(c.rule_biz_id, REPLACE(u.rule_biz_ids, ';', ',')) > 0) AS ruleNameList
FROM csf_client_user u
WHERE u.is_deleted = 0
<if
test=
"request.name != null and request.name != ''"
>
AND u.name LIKE CONCAT('%', #{request.name}, '%')
</if>
<if
test=
"request.gender != null and request.gender != ''"
>
AND u.gender = #{request.gender}
</if>
<if
test=
"request.gradeCode != null and request.gradeCode != ''"
>
AND u.current_grade_code = #{request.gradeCode}
</if>
<if
test=
"request.deptBizId != null and request.deptBizId != ''"
>
AND u.dept_biz_id = #{request.deptBizId}
</if>
<if
test=
"request.phone != null and request.phone != ''"
>
AND u.phone LIKE CONCAT('%', #{request.phone}, '%')
</if>
<if
test=
"request.internalNumber != null and request.internalNumber != ''"
>
AND u.internal_number LIKE CONCAT('%', #{request.internalNumber}, '%')
</if>
<if
test=
"request.raNumber != null and request.raNumber != ''"
>
AND u.ra_number LIKE CONCAT('%', #{request.raNumber}, '%')
</if>
<if
test=
"request.roleBizIdList != null and request.roleBizIdList.size > 0"
>
AND EXISTS (
SELECT 1
FROM client_role r
WHERE r.is_deleted = 0
AND FIND_IN_SET(r.role_biz_id, REPLACE(u.role_biz_ids, ';', ',')) > 0
AND r.role_biz_id IN
<foreach
collection=
"request.roleBizIdList"
item=
"roleBizId"
open=
"("
separator=
","
close=
")"
>
#{roleBizId}
</foreach>
)
</if>
<if
test=
"request.ruleBizIdList != null and request.ruleBizIdList.size > 0"
>
AND EXISTS (
SELECT 1
FROM commission_rule_config c
WHERE c.is_deleted = 0
AND FIND_IN_SET(c.rule_biz_id, REPLACE(u.rule_biz_ids, ';', ',')) > 0
AND c.rule_biz_id IN
<foreach
collection=
"request.ruleBizIdList"
item=
"ruleBizId"
open=
"("
separator=
","
close=
")"
>
#{ruleBizId}
</foreach>
)
</if>
ORDER BY u.id DESC
</select>
</mapper>
\ No newline at end of file
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