From d98ab38f6f41029593b8200453d7ea2ea0b49be1 Mon Sep 17 00:00:00 2001 From: yechenhao Date: Thu, 14 May 2020 20:47:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kiisoo/ic/customer/CustomerService.java | 27 ++++++---- .../OpSellerCustomerRelationDOMapper.java | 2 + .../ic/employee/service/EmployeeService.java | 3 +- .../wx/service/QWMailListManageService.java | 49 ++++++++++++++++++- .../OpSellerCustomerRelationDOMapper.xml | 15 ++++++ .../mapper/PrivilageCpUserDOMapper.xml | 4 +- 6 files changed, 87 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/kiisoo/ic/customer/CustomerService.java b/src/main/java/com/kiisoo/ic/customer/CustomerService.java index 59a0746..64f4723 100644 --- a/src/main/java/com/kiisoo/ic/customer/CustomerService.java +++ b/src/main/java/com/kiisoo/ic/customer/CustomerService.java @@ -128,14 +128,14 @@ public class CustomerService { insertCustomer.setCreateTime(opCustomer.getCreateTime()); if (null != opCustomer) { //存在--1.处理客户导购关系。 - sellerCustomerRelation(opCustomer, customerDTO.getStaffCode(),opCustomer.getCreateTime(), poiStore.getId(), poiStoreStaff.getUserId()); + sellerCustomerRelation(opCustomer, opCustomer.getCreateTime(), poiStore.getId(), poiStoreStaff.getUserId()); return opCustomer.getId(); } else { insertCustomer.setCreateBy(Constants.SYS_OPERATION); //不存在 opCustomerDOMapper.insert(insertCustomer); //添加关系 - sellerCustomerRelation(insertCustomer, customerDTO.getStaffCode(),insertCustomer.getCreateTime(), poiStore.getId(), poiStoreStaff.getUserId()); + sellerCustomerRelation(insertCustomer, insertCustomer.getCreateTime(), poiStore.getId(), poiStoreStaff.getUserId()); return insertCustomer.getId(); } } @@ -229,7 +229,7 @@ public class CustomerService { if (poiStoreStaff != null) { //存在--1.处理客户导购关系。 try { - sellerCustomerRelation(insertCustomer, turnBackDTOS.getEaCode(),sdf.parse(turnBackDTOS.getJoinTime()), poiStore.getStoreId(), poiStoreStaff.getId()); + sellerCustomerRelation(insertCustomer, sdf.parse(turnBackDTOS.getJoinTime()), poiStore.getStoreId(), poiStoreStaff.getId()); }catch (Exception e) { log.error(insertCustomer.toString(),e); return; @@ -255,7 +255,7 @@ public class CustomerService { if (poiStoreStaff != null) { //添加关系 try { - sellerCustomerRelation(insertCustomer, turnBackDTOS.getEaCode(),sdf.parse(turnBackDTOS.getJoinTime()), poiStore.getStoreId(), poiStoreStaff.getId()); + sellerCustomerRelation(insertCustomer, sdf.parse(turnBackDTOS.getJoinTime()), poiStore.getStoreId(), poiStoreStaff.getId()); }catch (Exception e) { log.error(insertCustomer.toString(),e); return; @@ -331,13 +331,10 @@ public class CustomerService { * @param staffCode 导购Code */ @Transactional(rollbackFor = Exception.class) - public void sellerCustomerRelation(OpCustomer opCustomer, String staffCode,Date joinTime, long shopId, long sellerId) { - QueryWrapper staf = new QueryWrapper(); - staf.eq("staff_code", staffCode).eq("status", 1).ne("user_id", 0).last("limit 1"); - - PoiStoreStaff poiStoreStaff = poiStoreStaffDOMapper.selectOne(staf); + public void sellerCustomerRelation(OpCustomer opCustomer, Date joinTime, long shopId, long sellerId) { QueryWrapper wrapper1 = new QueryWrapper<>(); - wrapper1.eq("customer_id", opCustomer.getId()).eq("user_id", poiStoreStaff.getId()).eq("store_id", shopId).last("limit 1"); + //一个客户只能添加一个店的店长微信,所以根据店铺判断即可 + wrapper1.eq("customer_id", opCustomer.getId()).eq("store_id", shopId).last("limit 1"); OpSellerCustomerRelation opSellerCustomerRelation = opSellerCustomerRelationDOMapper.selectOne(wrapper1); if (null == opSellerCustomerRelation) { //不存在就添加 @@ -362,6 +359,16 @@ public class CustomerService { insertRelation.setType(2); } opSellerCustomerRelationDOMapper.insert(insertRelation); + }else{ + //可能是同步过来的数据,此时已经存在的话,用有导购的代替 + opSellerCustomerRelation.setCreateTime(joinTime); + opSellerCustomerRelation.setUpdateTime(new Date()); + opSellerCustomerRelation.setCustomerId(opCustomer.getId()); + opSellerCustomerRelation.setStoreId(shopId); + opSellerCustomerRelation.setUserId(sellerId); + opSellerCustomerRelation.setCreateBy(Constants.SYS_OPERATION); + opSellerCustomerRelation.setUpdateBy(Constants.SYS_OPERATION); + opSellerCustomerRelationDOMapper.updateById(opSellerCustomerRelation); } } diff --git a/src/main/java/com/kiisoo/ic/customer/mapper/OpSellerCustomerRelationDOMapper.java b/src/main/java/com/kiisoo/ic/customer/mapper/OpSellerCustomerRelationDOMapper.java index 86eee04..d980a8e 100644 --- a/src/main/java/com/kiisoo/ic/customer/mapper/OpSellerCustomerRelationDOMapper.java +++ b/src/main/java/com/kiisoo/ic/customer/mapper/OpSellerCustomerRelationDOMapper.java @@ -96,4 +96,6 @@ public interface OpSellerCustomerRelationDOMapper extends BaseMapper getCustomer(String cpUserId) throws WxErrorException { - List customers = new ArrayList<>(); + //查询店铺id——店铺ID存在说明该账号的客户都绑在店上,不存在则说明绑在账号上 + Long storeId = privilageCpUserStoreDOMapper.selectOneByCpUserId(cpUserId); + + //账号一定存在,不存在则返回null + QueryWrapper cpQw = new QueryWrapper<>(); + cpQw.eq("cp_user_id",cpUserId).last("limit 1"); + PrivilageCpUserDO privilageCpUserDO = privilageCpUserDOMapper.selectOne(cpQw); + if (privilageCpUserDO == null){ + return null; + } + + //获取第三方接口方法 + List customers = null; wxCpService = WxCpConfiguration.getCpService(applicationid); WxCpExternalContactService externalContactService = wxCpService.getExternalContactService(); List customerStrs = externalContactService.listExternalContacts(cpUserId); + //查询客户列表为空则直接返回 if (CollectionUtils.isNotEmpty(customerStrs)){ + customers = new ArrayList<>(); for (String customerStr:customerStrs){ + //查询该客户id的关系是否存在 + QueryWrapper customerQueryWrapper = new QueryWrapper<>(); + customerQueryWrapper.eq("external_userid",customerStr).last("limit 1"); + OpCustomer opCustomer = opCustomerDOMapper.selectOne(customerQueryWrapper); + //客户都不存在则直接下一步 + if (opCustomer != null){ + Long relationId = opSellerCustomerRelationDOMapper.selectSellerCustomerRelation(opCustomer.getId(), privilageCpUserDO.getId(), storeId); + //关系存在则不查询明细 + if (relationId != null){ + continue; + } + } + WxCpUserExternalContactInfo contactDetail = externalContactService.getContactDetail(customerStr); customers.add(contactDetail); diff --git a/src/main/resources/mapper/OpSellerCustomerRelationDOMapper.xml b/src/main/resources/mapper/OpSellerCustomerRelationDOMapper.xml index 4ff2b9b..fb1f8c9 100644 --- a/src/main/resources/mapper/OpSellerCustomerRelationDOMapper.xml +++ b/src/main/resources/mapper/OpSellerCustomerRelationDOMapper.xml @@ -210,4 +210,19 @@ GROUP BY t4.id order by t1.create_time desc + + + diff --git a/src/main/resources/mapper/PrivilageCpUserDOMapper.xml b/src/main/resources/mapper/PrivilageCpUserDOMapper.xml index 02a5bf3..8a86b59 100644 --- a/src/main/resources/mapper/PrivilageCpUserDOMapper.xml +++ b/src/main/resources/mapper/PrivilageCpUserDOMapper.xml @@ -9,7 +9,9 @@ select customer_user_id as customerUserId,cp_user_id as cpUserId,cp_id as cpId from op_cp_user_customer_relation where customer_user_id = #{customerUserId} and cp_user_id = #{cpUserId} - and cp_id = #{cpId} + + and cp_id = #{cpId} + limit 1