Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-api-boot-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-api-boot-master
Commits
46102e37
Commit
46102e37
authored
Jun 03, 2024
by
liuzeheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化
parent
ace9f0a4
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
501 additions
and
34 deletions
+501
-34
CustomerMapper.java
...ao/module/customer/dal/mysql/customer/CustomerMapper.java
+8
-0
IndirectCustomerMapper.java
...er/dal/mysql/indirectCustomer/IndirectCustomerMapper.java
+9
-6
CustomerExportReqDTO.java
...coder/yudao/module/customer/dto/CustomerExportReqDTO.java
+1
-0
IndirectCustomerExportReqDTO.java
...er/dto/indirectCustomer/IndirectCustomerExportReqDTO.java
+55
-0
IndirectCustomerPageReqDTO.java
...omer/dto/indirectCustomer/IndirectCustomerPageReqDTO.java
+53
-0
CustomerService.java
...dao/module/customer/service/customer/CustomerService.java
+4
-0
CustomerServiceImpl.java
...module/customer/service/customer/CustomerServiceImpl.java
+28
-0
IndirectCustomerService.java
...mer/service/indirectCustomer/IndirectCustomerService.java
+8
-0
IndirectCustomerServiceImpl.java
...service/indirectCustomer/IndirectCustomerServiceImpl.java
+19
-0
CustomerMapper.xml
...ore/src/main/resources/mapper/customer/CustomerMapper.xml
+110
-0
IndirectCustomerMapper.xml
...main/resources/mapper/customer/IndirectCustomerMapper.xml
+163
-0
CustomerController.java
...ustomer/controller/admin/customer/CustomerController.java
+3
-3
IndirectCustomerController.java
...er/admin/indirectCustomer/IndirectCustomerController.java
+22
-3
CustomerExcelExportListener.java
...dao/module/sale/listener/CustomerExcelExportListener.java
+13
-20
IndirectCustomerExcelExportListener.java
...le/sale/listener/IndirectCustomerExcelExportListener.java
+5
-2
No files found.
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/dal/mysql/customer/CustomerMapper.java
View file @
46102e37
...
...
@@ -217,4 +217,12 @@ public interface CustomerMapper extends BaseMapperX<CustomerDO> {
long
getOpenSeaCustomerPageReqCount
(
@Param
(
"query"
)
CustomerPageReqDTO
pageReqVO
);
List
<
CustomerDO
>
getPublicCustomerExcelVoReqList
(
@Param
(
"query"
)
CustomerExportReqDTO
reqVO
);
List
<
CustomerDO
>
getDeptCustomerPageReq
(
@Param
(
"start"
)
int
start
,
@Param
(
"size"
)
int
size
,
@Param
(
"query"
)
CustomerPageReqDTO
pageReqVO
,
@Param
(
"deptId"
)
Long
deptId
);
long
getDeptCustomerPageReqCount
(
@Param
(
"query"
)
CustomerPageReqDTO
pageReqVO
,
@Param
(
"deptId"
)
Long
deptId
);
List
<
CustomerDO
>
getDeptCustomerExcelVoListReq
(
@Param
(
"query"
)
CustomerExportReqDTO
exportReqVO
,
@Param
(
"deptId"
)
Long
deptId
);
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/dal/mysql/indirectCustomer/IndirectCustomerMapper.java
View file @
46102e37
package
cn
.
iocoder
.
yudao
.
module
.
customer
.
dal
.
mysql
.
indirectCustomer
;
import
java.util.*
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO
;
import
cn.iocoder.yudao.
framework.mybatis.core.vo.PageV
O
;
import
cn.iocoder.yudao.
module.customer.dto.indirectCustomer.IndirectCustomerPageReqDT
O
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
org.apache.ibatis.annotations.Mapper
;
import
cn.iocoder.yudao.module.customer.vo.indirectCustomer.*
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 间接客户 Mapper
* @author yanghao
...
...
@@ -26,4 +23,10 @@ public interface IndirectCustomerMapper extends AbstractMapper<IndirectCustomerD
@Param
(
Constants
.
WRAPPER
)
Wrapper
<
IndirectCustomerDO
>
queryWrapper
);
List
<
IndirectCustomerDO
>
getList
(
@Param
(
Constants
.
WRAPPER
)
Wrapper
<
IndirectCustomerDO
>
queryWrapper
);
List
<
IndirectCustomerDO
>
getIndirectCustomerPageReq
(
@Param
(
"start"
)
int
start
,
@Param
(
"size"
)
int
size
,
@Param
(
"query"
)
IndirectCustomerPageReqDTO
pageReqVO
);
long
getOpenSeaCustomerPageReqCount
(
@Param
(
"query"
)
IndirectCustomerPageReqDTO
pageReqVO
);
List
<
IndirectCustomerDO
>
getIndirectCustomerListReq
(
@Param
(
"query"
)
IndirectCustomerPageReqDTO
reqVO
);
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/dto/CustomerExportReqDTO.java
View file @
46102e37
...
...
@@ -87,4 +87,5 @@ public class CustomerExportReqDTO {
private
List
<
Integer
>
marketType
;
private
int
deptId
;
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/dto/indirectCustomer/IndirectCustomerExportReqDTO.java
0 → 100644
View file @
46102e37
package
cn
.
iocoder
.
yudao
.
module
.
customer
.
dto
.
indirectCustomer
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
@Data
@ApiModel
(
"管理后台 - 间接客户导出 DTO"
)
public
class
IndirectCustomerExportReqDTO
{
@ApiModelProperty
(
value
=
"客户编号"
)
private
String
number
;
@ApiModelProperty
(
value
=
"客户名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"客户来源id"
)
private
Long
agentId
;
@ApiModelProperty
(
value
=
"客户经理"
)
private
List
<
Long
>
customerService
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"开始创建时间"
)
private
Date
beginCreateTime
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"结束创建时间"
)
private
Date
endCreateTime
;
@ApiModelProperty
(
value
=
"主联系人"
)
private
String
defaultContactName
;
@ApiModelProperty
(
value
=
"主联系电话"
)
private
String
defaultContactPhone
;
@ApiModelProperty
(
value
=
"市场获客"
)
private
List
<
Integer
>
marketType
;
/**
* 客户来源
*/
private
List
<
Integer
>
source
;
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/dto/indirectCustomer/IndirectCustomerPageReqDTO.java
0 → 100644
View file @
46102e37
package
cn
.
iocoder
.
yudao
.
module
.
customer
.
dto
.
indirectCustomer
;
import
cn.iocoder.yudao.framework.common.pojo.PageParam
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.util.Date
;
import
java.util.List
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
util
.
date
.
DateUtils
.
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
;
@Data
@ApiModel
(
"管理后台 - 间接客户查询 DTO"
)
public
class
IndirectCustomerPageReqDTO
{
@ApiModelProperty
(
value
=
"客户编号"
)
private
String
number
;
@ApiModelProperty
(
value
=
"客户名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"客户来源id"
)
private
Long
agentId
;
@ApiModelProperty
(
value
=
"客户经理"
)
private
List
<
Long
>
customerService
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"开始创建时间"
)
private
Date
beginCreateTime
;
@DateTimeFormat
(
pattern
=
FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND
)
@ApiModelProperty
(
value
=
"结束创建时间"
)
private
Date
endCreateTime
;
@ApiModelProperty
(
value
=
"主联系人"
)
private
String
defaultContactName
;
@ApiModelProperty
(
value
=
"主联系电话"
)
private
String
defaultContactPhone
;
@ApiModelProperty
(
value
=
"市场获客"
)
private
List
<
Integer
>
marketType
;
/**
* 客户来源
*/
private
List
<
Integer
>
source
;
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/service/customer/CustomerService.java
View file @
46102e37
...
...
@@ -115,6 +115,8 @@ public interface CustomerService extends IService<CustomerDO> {
*/
PageResult
<
CustomerDO
>
getDeptCustomerPage
(
CustomerPageReqVO
pageReqVO
);
PageResult
<
CustomerDO
>
getDeptCustomerPageReq
(
CustomerPageReqDTO
pageReqVO
,
PageVO
page
);
/**
* 获得部门客户分页
*
...
...
@@ -123,6 +125,8 @@ public interface CustomerService extends IService<CustomerDO> {
*/
List
<
CustomerDO
>
getDeptCustomerExcelVoList
(
CustomerExportReqVO
exportReqVO
);
List
<
CustomerDO
>
getDeptCustomerExcelVoListReq
(
CustomerExportReqDTO
exportReqVO
);
/**
* 获得待接收客户分页
*
...
...
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/service/customer/CustomerServiceImpl.java
View file @
46102e37
...
...
@@ -1183,6 +1183,34 @@ public class CustomerServiceImpl extends AbstractService<CustomerMapper, Custome
return
new
PageResult
<>(
mpPage
.
getRecords
(),
mpPage
.
getTotal
());
}
@Override
public
PageResult
<
CustomerDO
>
getDeptCustomerPageReq
(
CustomerPageReqDTO
pageReqVO
,
PageVO
page
){
IPage
<
CustomerDO
>
mpPage
=
MyBatisUtils
.
buildPage
(
page
);
log
.
warn
(
I18nMessage
.
getLang
().
toString
());
int
start
=
(
page
.
getPage
()
-
1
)
*
page
.
getRows
();
int
size
=
page
.
getRows
();
LoginUser
loginUser
=
SecurityFrameworkUtils
.
getLoginUser
();
Long
deptId
=
null
;
if
(
null
!=
loginUser
&&
null
!=
loginUser
.
getDeptId
())
{
deptId
=
loginUser
.
getDeptId
()
;
}
List
<
CustomerDO
>
list
=
customerMapper
.
getDeptCustomerPageReq
(
start
,
size
,
pageReqVO
,
deptId
);
long
total
=
customerMapper
.
getDeptCustomerPageReqCount
(
pageReqVO
,
deptId
)
;
return
new
PageResult
<>(
list
,
total
,
mpPage
.
getSize
(),
page
.
getPage
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
}
@Override
public
List
<
CustomerDO
>
getDeptCustomerExcelVoListReq
(
CustomerExportReqDTO
exportReqVO
)
{
LoginUser
loginUser
=
SecurityFrameworkUtils
.
getLoginUser
();
Long
deptId
=
null
;
if
(
null
!=
loginUser
&&
null
!=
loginUser
.
getDeptId
())
{
deptId
=
loginUser
.
getDeptId
()
;
}
return
customerMapper
.
getDeptCustomerExcelVoListReq
(
exportReqVO
,
deptId
)
;
}
@Override
public
List
<
CustomerDO
>
getDeptCustomerExcelVoList
(
CustomerExportReqVO
reqVO
)
{
...
...
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/service/indirectCustomer/IndirectCustomerService.java
View file @
46102e37
...
...
@@ -5,6 +5,9 @@ import javax.validation.*;
import
cn.iocoder.yudao.framework.apollo.core.event.AdminClientCreateEvent
;
import
cn.iocoder.yudao.framework.mybatis.core.service.IService
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerExportReqDTO
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO
;
import
cn.iocoder.yudao.module.customer.vo.customer.vo.CustomerUpdateReqVO
;
import
cn.iocoder.yudao.module.customer.vo.indirectCustomer.*
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO
;
...
...
@@ -66,10 +69,15 @@ public interface IndirectCustomerService extends IService<IndirectCustomerDO> {
*/
PageResult
<
IndirectCustomerDO
>
getIndirectCustomerPage
(
IndirectCustomerPageReqVO
pageReqVO
);
PageResult
<
IndirectCustomerDO
>
getIndirectCustomerPageReq
(
IndirectCustomerPageReqDTO
pageReqVO
,
PageVO
page
);
List
<
IndirectCustomerDO
>
getIndirectCustomerListReq
(
IndirectCustomerPageReqDTO
reqVO
);
/**
* 获得间接客户列表, 用于 Excel 导出
* @param reqVO 查询
* @return 间接客户列表
*/
List
<
IndirectCustomerDO
>
getIndirectCustomerList
(
IndirectCustomerExportReqVO
reqVO
);
}
yudao-module-customer/yudao-module-customer-core/src/main/java/cn/iocoder/yudao/module/customer/service/indirectCustomer/IndirectCustomerServiceImpl.java
View file @
46102e37
...
...
@@ -6,10 +6,12 @@ import cn.hutool.core.date.DateUtil;
import
cn.hutool.core.util.RandomUtil
;
import
cn.iocoder.yudao.framework.apollo.core.event.AdminClientCreateEvent
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.service.AbstractService
;
import
cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils
;
import
cn.iocoder.yudao.module.customer.convert.indirectCustomer.IndirectCustomerConvert
;
import
cn.iocoder.yudao.module.customer.convert.indirectCustomerContacts.IndirectCustomerContactsConvert
;
...
...
@@ -19,6 +21,7 @@ import cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.Indirect
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomerContacts.IndirectCustomerContactsDO
;
import
cn.iocoder.yudao.module.customer.dal.mysql.indirectCustomer.IndirectCustomerMapper
;
import
cn.iocoder.yudao.module.customer.dal.mysql.indirectCustomerContacts.IndirectCustomerContactsMapper
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO
;
import
cn.iocoder.yudao.module.customer.service.customer.CustomerService
;
import
cn.iocoder.yudao.module.customer.service.customerContacts.CustomerContactsService
;
import
cn.iocoder.yudao.module.customer.vo.indirectCustomer.IndirectCustomerCreateReqVO
;
...
...
@@ -384,6 +387,22 @@ public class IndirectCustomerServiceImpl extends AbstractService<IndirectCustome
return
new
PageResult
<>(
mpPage
.
getRecords
(),
mpPage
.
getTotal
());
}
@Override
public
PageResult
<
IndirectCustomerDO
>
getIndirectCustomerPageReq
(
IndirectCustomerPageReqDTO
pageReqVO
,
PageVO
page
){
IPage
<
IndirectCustomerDO
>
mpPage
=
MyBatisUtils
.
buildPage
(
page
);
log
.
warn
(
I18nMessage
.
getLang
().
toString
());
int
start
=
(
page
.
getPage
()
-
1
)
*
page
.
getRows
();
int
size
=
page
.
getRows
();
List
<
IndirectCustomerDO
>
list
=
indirectCustomerMapper
.
getIndirectCustomerPageReq
(
start
,
size
,
pageReqVO
);
long
total
=
indirectCustomerMapper
.
getOpenSeaCustomerPageReqCount
(
pageReqVO
)
;
return
new
PageResult
<>(
list
,
total
,
mpPage
.
getSize
(),
page
.
getPage
(),
(
total
+
mpPage
.
getSize
()
-
1
)
/
mpPage
.
getSize
());
}
@Override
public
List
<
IndirectCustomerDO
>
getIndirectCustomerListReq
(
IndirectCustomerPageReqDTO
reqVO
)
{
return
indirectCustomerMapper
.
getIndirectCustomerListReq
(
reqVO
)
;
}
@Override
public
List
<
IndirectCustomerDO
>
getIndirectCustomerList
(
IndirectCustomerExportReqVO
reqVO
)
{
LambdaQueryWrapper
<
IndirectCustomerDO
>
customerDOLambdaQueryWrapperX
=
new
LambdaQueryWrapperX
<
IndirectCustomerDO
>()
...
...
yudao-module-customer/yudao-module-customer-core/src/main/resources/mapper/customer/CustomerMapper.xml
View file @
46102e37
...
...
@@ -1562,6 +1562,116 @@
<include
refid=
"myCustomerQuery"
/>
</select>
<select
id=
"getDeptCustomerPageReq"
resultType=
"cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO"
>
select contact.*,
level.name_zh as vip_level_name_zh,
level.name_en as vip_level_name_en,
credit.name_zh as credit_level_name_zh,
credit.name_en as credit_level_name_en,
ec.name_zh as country_name,
(select GROUP_CONCAT(s.phone_new) from ecw_customer_contacts s where s.deleted = 0 and s.customer_id=contact.id) as all_contact_phone
from (select a.*,
c.name as default_contact_name,
concat(c.area_code, c.phone_new, '') as default_contact_phone,
c.phone_new as contactPhone,
c.id as defaultContactId,
c.social as default_social,
c.email as default_email,
c.social_number as default_social_number,
su.nickname as customer_service_name,
su.dept_id as dept_id
from ecw_customer a
left join (select * from ecw_customer_contacts where is_default = 1 and deleted = 0) as c on a.id = c.customer_id
left join system_user su on a.customer_service = su.id
where a.deleted = 0) contact
left join ecw_customer_level level
on contact.level = level.id
left join ecw_customer_credit credit
on contact.credit_level = credit.id
left join ecw_country ec on contact.country = ec.id
WHERE 1=1 AND contact.deleted = 0
<if
test=
"deptId != null and deptId>0"
>
AND contact.dept_id = #{deptId}
</if>
<include
refid=
"myCustomerQuery"
/>
GROUP BY contact.id
order by contact.id desc
limit #{start}, #{size}
</select>
<select
id=
"getDeptCustomerPageReqCount"
resultType=
"java.lang.Long"
parameterType=
"cn.iocoder.yudao.module.customer.dto.CustomerPageReqDTO"
>
select count(1)
from (select a.*,
c.name as default_contact_name,
concat(c.area_code, c.phone_new, '') as default_contact_phone,
c.phone_new as contactPhone,
c.id as defaultContactId,
c.social as default_social,
c.email as default_email,
c.social_number as default_social_number,
su.nickname as customer_service_name,
su.dept_id as dept_id
from ecw_customer a
left join (select * from ecw_customer_contacts where is_default = 1 and deleted = 0) as c on a.id = c.customer_id
left join system_user su on a.customer_service = su.id
where a.deleted = 0) contact
left join ecw_customer_level level
on contact.level = level.id
left join ecw_customer_credit credit
on contact.credit_level = credit.id
left join ecw_country ec on contact.country = ec.id
WHERE 1=1 AND contact.deleted = 0
<if
test=
"deptId != null and deptId>0"
>
AND contact.dept_id = #{deptId}
</if>
<include
refid=
"myCustomerQuery"
/>
</select>
<select
id=
"getDeptCustomerExcelVoListReq"
resultType=
"cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO"
>
select contact.*,
level.name_zh as vip_level_name_zh,
level.name_en as vip_level_name_en,
credit.name_zh as credit_level_name_zh,
credit.name_en as credit_level_name_en,
ec.name_zh as country_name,
(select GROUP_CONCAT(s.phone_new) from ecw_customer_contacts s where s.deleted = 0 and s.customer_id=contact.id) as all_contact_phone
from (select a.*,
c.name as default_contact_name,
concat(c.area_code, c.phone_new, '') as default_contact_phone,
c.phone_new as contactPhone,
c.id as defaultContactId,
c.social as default_social,
c.email as default_email,
c.social_number as default_social_number,
su.nickname as customer_service_name,
su.dept_id as dept_id
from ecw_customer a
left join (select * from ecw_customer_contacts where is_default = 1 and deleted = 0) as c on a.id = c.customer_id
left join system_user su on a.customer_service = su.id
where a.deleted = 0) contact
left join ecw_customer_level level
on contact.level = level.id
left join ecw_customer_credit credit
on contact.credit_level = credit.id
left join ecw_country ec on contact.country = ec.id
WHERE 1=1 AND contact.deleted = 0
<if
test=
"deptId != null and deptId>0"
>
AND contact.dept_id = #{deptId}
</if>
<include
refid=
"myCustomerQuery"
/>
GROUP BY contact.id
order by contact.id desc
</select>
</mapper>
yudao-module-customer/yudao-module-customer-core/src/main/resources/mapper/customer/IndirectCustomerMapper.xml
View file @
46102e37
...
...
@@ -37,9 +37,172 @@
) as t
${ew.customSqlSegment}
</select>
<select
id=
"getIndirectCustomerPageReq"
resultType=
"cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO"
>
SELECT
*
FROM
(
SELECT
a.*,
c.NAME AS default_contact_name,
concat( c.area_code, c.phone_new, '' ) AS default_contact_phone,
c.email AS default_email,
agent.NAME AS agent_customer_name,
su.nickname AS customer_service_name
FROM
ecw_indirect_customer a
LEFT JOIN ecw_indirect_customer_contacts c ON a.id = c.customer_id
LEFT JOIN ecw_customer agent ON a.agent_customer_id = agent.id
LEFT JOIN system_user su ON a.customer_service = su.id
WHERE
c.is_default = 1 AND a.deleted = 0
AND c.deleted = 0
) AS contact
where 1=1
<include
refid=
"indirectCustomerPageReq"
/>
GROUP BY contact.id
order by contact.id desc
limit #{start}, #{size}
</select>
<sql
id=
"indirectCustomerPageReq"
>
<if
test=
"query.number != null and query.number != '' "
>
AND contact.number LIKE concat('%', concat( #{query.number}, '%' ))
</if>
<if
test=
"query.name != null and query.name != '' "
>
AND contact.name LIKE concat('%', concat( #{query.name}, '%' ))
</if>
<if
test=
"query.defaultContactPhone != null and query.defaultContactPhone != '' "
>
AND contact.default_contact_phone LIKE concat('%', concat( #{query.defaultContactPhone}, '%' ))
</if>
<if
test=
"query.defaultContactName != null and query.defaultContactName != '' "
>
AND contact.all_contact_phone LIKE concat('%', concat( #{query.defaultContactName}, '%' ))
</if>
<if
test=
"query.beginCreateTime != null and query.endCreateTime != null "
>
AND contact. `create_time` between #{query.beginCreateTime} and #{query.endCreateTime}
</if>
<!--市场获客 -->
<if
test=
"query.marketType != null and query.marketType.size()>0"
>
<if
test=
"query.marketType != null and query.marketType != '' and query.marketType.size()==1 "
>
<foreach
item=
'marketType'
index=
"index"
collection=
'query.marketType'
>
<choose>
<when
test=
"marketType == 1"
>
AND contact.customer_service is not null
</when>
<when
test=
"marketType == 2"
>
AND contact.customer_service is null
</when>
</choose>
</foreach>
</if>
<if
test=
"query.marketType != null and query.marketType != '' and query.marketType.size()>1 "
>
AND (1!=1
<foreach
item=
'marketType'
index=
"index"
collection=
'query.marketType'
>
<choose>
<when
test=
"marketType == 1"
>
OR contact.customer_service is not null
</when>
<when
test=
"marketType == 2"
>
OR contact.customer_service is null
</when>
</choose>
</foreach>
)
</if>
</if>
<if
test=
"query.customerService != null and query.customerService.size()>0"
>
<if
test=
"query.customerService != null and query.customerService != '' and query.customerService.size()==1 "
>
AND contact.customer_service =
<foreach
item=
'customerService'
index=
"index"
collection=
'query.customerService'
>
#{customerService}
</foreach>
</if>
<if
test=
"query.customerService != null and query.customerService != '' and query.customerService.size()>1 "
>
AND contact.customer_service in
<foreach
item=
'customerService'
index=
"index"
collection=
'query.customerService'
open=
'('
separator=
','
close=
')'
>
#{customerService}
</foreach>
</if>
</if>
<!--客户来源 -->
<if
test=
"query.source != null and query.source.size()>0"
>
<if
test=
"query.source != null and query.source != '' and query.source.size()==1 "
>
AND contact.source =
<foreach
item=
'source'
index=
"index"
collection=
'query.source'
>
#{source}
</foreach>
</if>
<if
test=
"query.source != null and query.source != '' and query.source.size()>1 "
>
AND contact.source in
<foreach
item=
'source'
index=
"index"
collection=
'query.source'
open=
'('
separator=
','
close=
')'
>
#{source}
</foreach>
</if>
</if>
</sql>
<select
id=
"getOpenSeaCustomerPageReqCount"
resultType=
"java.lang.Long"
parameterType=
"cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO"
>
SELECT
count(1)
FROM
(
SELECT
a.*,
c.NAME AS default_contact_name,
concat( c.area_code, c.phone_new, '' ) AS default_contact_phone,
c.email AS default_email,
agent.NAME AS agent_customer_name,
su.nickname AS customer_service_name
FROM
ecw_indirect_customer a
LEFT JOIN ecw_indirect_customer_contacts c ON a.id = c.customer_id
LEFT JOIN ecw_customer agent ON a.agent_customer_id = agent.id
LEFT JOIN system_user su ON a.customer_service = su.id
WHERE
c.is_default = 1 AND a.deleted = 0
AND c.deleted = 0
) AS contact
where 1=1
<include
refid=
"indirectCustomerPageReq"
/>
</select>
<select
id=
"getIndirectCustomerListReq"
resultType=
"cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO"
parameterType=
"cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO"
>
SELECT
*
FROM
(
SELECT
a.*,
c.NAME AS default_contact_name,
concat( c.area_code, c.phone_new, '' ) AS default_contact_phone,
c.email AS default_email,
agent.NAME AS agent_customer_name,
su.nickname AS customer_service_name
FROM
ecw_indirect_customer a
LEFT JOIN ecw_indirect_customer_contacts c ON a.id = c.customer_id
LEFT JOIN ecw_customer agent ON a.agent_customer_id = agent.id
LEFT JOIN system_user su ON a.customer_service = su.id
WHERE
c.is_default = 1 AND a.deleted = 0
AND c.deleted = 0
) AS contact
where 1=1
<include
refid=
"indirectCustomerPageReq"
/>
</select>
</mapper>
yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/customer/CustomerController.java
View file @
46102e37
...
...
@@ -600,8 +600,8 @@ public class CustomerController {
@GetMapping
(
"/deptPage"
)
@ApiOperation
(
"获得部门客户"
)
@PreAuthorize
(
"@ss.hasAnyPermissions('ecw:customer:query', 'ecw:customer:dep-query')"
)
public
CommonResult
<
PageResult
<
CustomerRespVO
>>
getDeptCustomerPage
(
@Valid
CustomerPageReq
VO
pageVO
)
{
PageResult
<
CustomerDO
>
pageResult
=
customerService
.
getDeptCustomerPage
(
pageVO
);
public
CommonResult
<
PageResult
<
CustomerRespVO
>>
getDeptCustomerPage
(
@Valid
CustomerPageReq
DTO
pageVO
,
PageVO
page
)
{
PageResult
<
CustomerDO
>
pageResult
=
customerService
.
getDeptCustomerPage
Req
(
pageVO
,
page
);
return
success
(
CustomerConvert
.
INSTANCE
.
convertPage
(
pageResult
));
}
...
...
@@ -724,7 +724,7 @@ public class CustomerController {
@GetMapping
(
"/dept-export-excel"
)
@ApiOperation
(
"部门客户列表导出"
)
@OperateLog
(
type
=
EXPORT
)
public
CommonResult
<
Boolean
>
exportDeptCustomerExcel
(
@Valid
CustomerExportReq
V
O
exportReqVO
,
public
CommonResult
<
Boolean
>
exportDeptCustomerExcel
(
@Valid
CustomerExportReq
DT
O
exportReqVO
,
HttpServletResponse
response
)
throws
IOException
{
sendFileMake
(
exportReqVO
,
DownloadTypeEnum
.
CUSTOMER_DEPT_EXCEL_EXPORT
,
"部门客户导出Excel"
);
return
success
(
true
);
...
...
yudao-module-customer/yudao-module-customer-rest/src/main/java/cn/iocoder/yudao/module/customer/controller/admin/indirectCustomer/IndirectCustomerController.java
View file @
46102e37
...
...
@@ -5,10 +5,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import
cn.iocoder.yudao.framework.excel.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.i18n.core.I18nMessage
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.vo.PageVO
;
import
cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog
;
import
cn.iocoder.yudao.module.customer.convert.indirectCustomer.IndirectCustomerConvert
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomerContacts.IndirectCustomerContactsDO
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO
;
import
cn.iocoder.yudao.module.customer.service.indirectCustomer.IndirectCustomerService
;
import
cn.iocoder.yudao.module.customer.service.indirectCustomerContacts.IndirectCustomerContactsService
;
import
cn.iocoder.yudao.module.customer.vo.customer.vo.CustomerExportReqVO
;
...
...
@@ -110,8 +112,8 @@ public class IndirectCustomerController {
@GetMapping
(
"/page"
)
@ApiOperation
(
"获得间接客户分页"
)
// @PreAuthorize("@ss.hasPermission('customer:indirect-customer:query')")
public
CommonResult
<
PageResult
<
IndirectCustomerBackVO
>>
getIndirectCustomerPage
(
@Valid
IndirectCustomerPageReq
VO
pageVO
)
{
PageResult
<
IndirectCustomerDO
>
pageResult
=
indirectCustomerService
.
getIndirectCustomerPage
(
pageVO
);
public
CommonResult
<
PageResult
<
IndirectCustomerBackVO
>>
getIndirectCustomerPage
(
@Valid
IndirectCustomerPageReq
DTO
pageVO
,
PageVO
page
)
{
PageResult
<
IndirectCustomerDO
>
pageResult
=
indirectCustomerService
.
getIndirectCustomerPage
Req
(
pageVO
,
page
);
return
success
(
IndirectCustomerConvert
.
INSTANCE
.
convertPage
(
pageResult
));
}
...
...
@@ -120,7 +122,7 @@ public class IndirectCustomerController {
@ApiOperation
(
"间接客户导出"
)
// @PreAuthorize("@ss.hasPermission('customer:indirect-customer:export')")
@OperateLog
(
type
=
EXPORT
)
public
CommonResult
<
Boolean
>
exportIndirectCustomerExcel
(
@Valid
IndirectCustomer
ExportReqV
O
query
,
public
CommonResult
<
Boolean
>
exportIndirectCustomerExcel
(
@Valid
IndirectCustomer
PageReqDT
O
query
,
HttpServletResponse
response
)
throws
IOException
{
// List<IndirectCustomerDO> list = indirectCustomerService.getIndirectCustomerList(query);
// // 导出 Excel
...
...
@@ -131,6 +133,23 @@ public class IndirectCustomerController {
return
success
(
true
);
}
/**
* 多选
* @param exportReqVO
* @param downloadTypeEnum
* @param fileName
*/
private
void
sendFileMake
(
IndirectCustomerPageReqDTO
exportReqVO
,
DownloadTypeEnum
downloadTypeEnum
,
String
fileName
)
{
FileMakeReqDTO
reqDTO
=
new
FileMakeReqDTO
();
reqDTO
.
setType
(
downloadTypeEnum
.
getType
());
reqDTO
.
setName
(
fileName
);
reqDTO
.
setFileSuffix
(
"xlsx"
);
reqDTO
.
setTemporaryFile
(
true
);
reqDTO
.
setUserType
(
2
);
reqDTO
.
setLang
(
I18nMessage
.
getLang
());
reqDTO
.
setRequestParams
(
JSONObject
.
toJSONString
(
exportReqVO
));
fileMakeApi
.
sendFileMake
(
reqDTO
);
}
private
void
sendFileMake
(
IndirectCustomerExportReqVO
exportReqVO
,
DownloadTypeEnum
downloadTypeEnum
,
String
fileName
)
{
FileMakeReqDTO
reqDTO
=
new
FileMakeReqDTO
();
...
...
yudao-module-sale/yudao-module-sale-core/src/main/java/cn/iocoder/yudao/module/sale/listener/CustomerExcelExportListener.java
View file @
46102e37
...
...
@@ -5,15 +5,11 @@ import cn.hutool.core.util.StrUtil;
import
cn.iocoder.yudao.framework.apollo.core.event.export.*
;
import
cn.iocoder.yudao.framework.apollo.core.event.export.base.CustomerExportEvent
;
import
cn.iocoder.yudao.framework.excel.util.ExcelUtils
;
import
cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils
;
import
cn.iocoder.yudao.module.customer.convert.customer.CustomerConvert
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.customer.CustomerDO
;
import
cn.iocoder.yudao.module.customer.dto.CustomerExportReqDTO
;
import
cn.iocoder.yudao.module.customer.dto.CustomerPageReqDTO
;
import
cn.iocoder.yudao.module.customer.service.customer.CustomerService
;
import
cn.iocoder.yudao.module.customer.service.indirectCustomer.IndirectCustomerService
;
import
cn.iocoder.yudao.module.customer.vo.customer.vo.CustomerExcelVO
;
import
cn.iocoder.yudao.module.customer.vo.customer.vo.CustomerExportReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO
;
import
cn.iocoder.yudao.module.infra.service.file.FileService
;
import
cn.iocoder.yudao.module.system.framework.ue.UeProperties
;
...
...
@@ -65,6 +61,7 @@ public class CustomerExcelExportListener {
makeExcelUpload
(
event
,
list
);
}
/**
* 我的客户导出监听
*
...
...
@@ -74,13 +71,12 @@ public class CustomerExcelExportListener {
public
void
customerMineExcelExportPushEvent
(
CustomerMineExcelExportPushEvent
event
)
{
CustomerExportReqDTO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
CustomerExportReqDTO
.
class
);
List
<
Long
>
setCustomerService
=
new
ArrayList
<>();
if
(
getLoginUserId
()!=
null
)
{
setCustomerService
.
add
(
getLoginUserId
())
;
exportReqVO
.
setCustomerService
(
setCustomerService
)
;
if
(
getLoginUserId
()
!=
null
)
{
setCustomerService
.
add
(
getLoginUserId
());
exportReqVO
.
setCustomerService
(
setCustomerService
);
}
//未被接收
exportReqVO
.
setIsCustomerServiceConfirmed
(
true
);
List
<
CustomerDO
>
list
=
customerService
.
getMyCustomerExcelVoList
(
exportReqVO
);
...
...
@@ -124,9 +120,9 @@ public class CustomerExcelExportListener {
@EventListener
(
CustomerWaitDistributionExcelExportPushEvent
.
class
)
public
void
customerWaitDistributionExcelExportPushEvent
(
CustomerWaitDistributionExcelExportPushEvent
event
)
{
CustomerExportReqDTO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
CustomerExportReqDTO
.
class
);
exportReqVO
.
setIsInOpenSea
(
false
)
;
exportReqVO
.
setIsCustomerServiceConfirmed
(
false
)
;
exportReqVO
.
setCustomerService
(
null
)
;
exportReqVO
.
setIsInOpenSea
(
false
);
exportReqVO
.
setIsCustomerServiceConfirmed
(
false
);
exportReqVO
.
setCustomerService
(
null
);
List
<
CustomerDO
>
list
=
customerService
.
getWaitToAssignedCustomerExcelVoListReq
(
exportReqVO
);
makeExcelUpload
(
event
,
list
);
...
...
@@ -161,19 +157,18 @@ public class CustomerExcelExportListener {
*/
@EventListener
(
CustomerDeptExcelExportPushEvent
.
class
)
public
void
customerDeptExcelExportPushEvent
(
CustomerDeptExcelExportPushEvent
event
)
{
CustomerExportReqVO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
CustomerExportReqVO
.
class
);
List
<
CustomerDO
>
list
=
customerService
.
getDeptCustomerExcelVoList
(
exportReqVO
);
CustomerExportReqDTO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
CustomerExportReqDTO
.
class
);
// CustomerExportReqVO exportReqVO = JSONObject.parseObject(event.getRequestParams(), CustomerExportReqVO.class);
// List<CustomerDO> list = customerService.getDeptCustomerExcelVoList(exportReqVO);
List
<
CustomerDO
>
list
=
customerService
.
getDeptCustomerExcelVoListReq
(
exportReqVO
);
makeExcelUpload
(
event
,
list
);
}
public
void
makeExcelUpload
(
CustomerExportEvent
event
,
List
<
CustomerDO
>
customerDOList
)
{
if
(
StringUtils
.
isNotBlank
(
event
.
getRequestParams
()))
{
try
{
if
(
CollectionUtil
.
isEmpty
(
customerDOList
))
return
;
if
(
CollectionUtil
.
isEmpty
(
customerDOList
))
return
;
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
DATA_FORMAT
);
...
...
@@ -215,6 +210,4 @@ public class CustomerExcelExportListener {
}
}
yudao-module-sale/yudao-module-sale-core/src/main/java/cn/iocoder/yudao/module/sale/listener/IndirectCustomerExcelExportListener.java
View file @
46102e37
...
...
@@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.apollo.core.event.export.IndirectCustomerExcel
import
cn.iocoder.yudao.framework.excel.util.ExcelUtils
;
import
cn.iocoder.yudao.module.customer.convert.indirectCustomer.IndirectCustomerConvert
;
import
cn.iocoder.yudao.module.customer.dal.dataobject.indirectCustomer.IndirectCustomerDO
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerExportReqDTO
;
import
cn.iocoder.yudao.module.customer.dto.indirectCustomer.IndirectCustomerPageReqDTO
;
import
cn.iocoder.yudao.module.customer.service.indirectCustomer.IndirectCustomerService
;
import
cn.iocoder.yudao.module.customer.vo.indirectCustomer.IndirectCustomerExcelVO
;
import
cn.iocoder.yudao.module.customer.vo.indirectCustomer.IndirectCustomerExportReqVO
;
...
...
@@ -53,8 +55,9 @@ public class IndirectCustomerExcelExportListener {
*/
@EventListener
(
IndirectCustomerExcelExportPushEvent
.
class
)
public
void
customerIndirectExcelExportPushEvent
(
IndirectCustomerExcelExportPushEvent
event
)
{
IndirectCustomerExportReqVO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
IndirectCustomerExportReqVO
.
class
);
List
<
IndirectCustomerDO
>
list
=
indirectCustomerService
.
getIndirectCustomerList
(
exportReqVO
);
//IndirectCustomerExportReqVO exportReqVO = JSONObject.parseObject(event.getRequestParams(), IndirectCustomerExportReqVO.class);
IndirectCustomerPageReqDTO
exportReqVO
=
JSONObject
.
parseObject
(
event
.
getRequestParams
(),
IndirectCustomerPageReqDTO
.
class
);
List
<
IndirectCustomerDO
>
list
=
indirectCustomerService
.
getIndirectCustomerListReq
(
exportReqVO
);
makeExcelUpload
(
event
,
list
);
}
...
...
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