From 20b11236b4364034f52df294b9240776f539ede1 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 16 七月 2024 14:49:01 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbomyoujia

---
 server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java |  271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 271 insertions(+), 0 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java
new file mode 100644
index 0000000..bd783e7
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java
@@ -0,0 +1,271 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.biz.zbom.ZbomCRMService;
+import com.doumee.biz.zbom.model.crm.CRMConstants;
+import com.doumee.biz.zbom.model.crm.CrmDaogouBindListRequest;
+import com.doumee.biz.zbom.model.crm.response.CRMBaseResponse;
+import com.doumee.biz.zbom.model.crm.response.CRMDaogouBindListResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.CustomerUserMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.UsersMapper;
+import com.doumee.dao.business.model.CustomerUser;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Users;
+import com.doumee.service.business.CustomerUserService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瀹㈡埛瀵艰喘鍏宠仈琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2024/07/15 10:21
+ */
+@Service
+public class CustomerUserServiceImpl implements CustomerUserService {
+
+    @Autowired
+    private CustomerUserMapper customerUserMapper;
+    @Autowired
+    private MemberMapper memberMapper;
+    @Autowired
+    private UsersMapper usersMapper;
+    @Autowired
+    private ZbomCRMService zbomCRMService;
+
+    @Override
+    public Long create(CustomerUser customerUser) {
+        customerUserMapper.insert(customerUser);
+        return customerUser.getId();
+    }
+
+    @Override
+    public void deleteById(Long id) {
+        customerUserMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(CustomerUser customerUser) {
+        UpdateWrapper<CustomerUser> deleteWrapper = new UpdateWrapper<>(customerUser);
+        customerUserMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        customerUserMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(CustomerUser customerUser) {
+        customerUserMapper.updateById(customerUser);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<CustomerUser> customerUsers) {
+        if (CollectionUtils.isEmpty(customerUsers)) {
+            return;
+        }
+        for (CustomerUser customerUser: customerUsers) {
+            this.updateById(customerUser);
+        }
+    }
+
+    @Override
+    public CustomerUser findById(Long id) {
+        return customerUserMapper.selectById(id);
+    }
+
+    @Override
+    public CustomerUser findOne(CustomerUser customerUser) {
+        QueryWrapper<CustomerUser> wrapper = new QueryWrapper<>(customerUser);
+        return customerUserMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<CustomerUser> findList(CustomerUser customerUser) {
+        QueryWrapper<CustomerUser> wrapper = new QueryWrapper<>(customerUser);
+        return customerUserMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<CustomerUser> findPage(PageWrap<CustomerUser> pageWrap) {
+        IPage<CustomerUser> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<CustomerUser> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(CustomerUser::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(CustomerUser::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(CustomerUser::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(CustomerUser::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getEditor() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getEditor, pageWrap.getModel().getEditor());
+        }
+        if (pageWrap.getModel().getPhone() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getPhone, pageWrap.getModel().getPhone());
+        }
+        if (pageWrap.getModel().getInfo() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getInfo, pageWrap.getModel().getInfo());
+        }
+        if (pageWrap.getModel().getUserId() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getUserId, pageWrap.getModel().getUserId());
+        }
+        if (pageWrap.getModel().getIamUserId() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getIamUserId, pageWrap.getModel().getIamUserId());
+        }
+        if (pageWrap.getModel().getMemberId() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getMemberId, pageWrap.getModel().getMemberId());
+        }
+        if (pageWrap.getModel().getName() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getName, pageWrap.getModel().getName());
+        }
+        if (pageWrap.getModel().getOrgName() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getOrgName, pageWrap.getModel().getOrgName());
+        }
+        if (pageWrap.getModel().getUsername() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getUsername, pageWrap.getModel().getUsername());
+        }
+        if (pageWrap.getModel().getProductCodeName() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getProductCodeName, pageWrap.getModel().getProductCodeName());
+        }
+        if (pageWrap.getModel().getAddr() != null) {
+            queryWrapper.lambda().eq(CustomerUser::getAddr, pageWrap.getModel().getAddr());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(customerUserMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(CustomerUser customerUser) {
+        QueryWrapper<CustomerUser> wrapper = new QueryWrapper<>(customerUser);
+        return customerUserMapper.selectCount(wrapper);
+    }
+    @Override
+    @Transactional
+    public void syncYesterday(String date) {
+        CrmDaogouBindListRequest request = new CrmDaogouBindListRequest();
+        request.setPage(0);
+        request.setPageSize(100);
+        request.setTiming(Constants.ONE+"");
+        request.setCreationDate(date);
+        boolean hasMore = true;
+        int currentNum = 0;
+        Date cdate = new Date();
+        while (hasMore){
+            try {
+                request.setPage(request.getPage()+1);
+                currentNum += currentNum;
+                CRMBaseResponse<List<CRMDaogouBindListResponse>> response = zbomCRMService.getDaogouBindList(request);
+                if(response==null
+                        || !StringUtils.equals(response.getCode(), CRMConstants.CODE_SUCCESS)
+                        || response.getData() ==null
+                        || response.getData().size() ==0){
+                    hasMore = false;
+                }
+                if(currentNum >= response.getTotal()){
+                    hasMore = false;
+                }
+                dealSyncDataBiz(cdate,response.getData());
+            }catch (Exception e){
+               hasMore = false;
+            }
+        }
+    }
+
+    private void dealSyncDataBiz(Date date,List<CRMDaogouBindListResponse> list) {
+        List<CustomerUser> addList = new ArrayList<>();
+        List<String> phoneList = new ArrayList<>();
+        for(CRMDaogouBindListResponse data : list){
+            if(StringUtils.isBlank(data.getCustomerPhone())){
+                continue;
+            }
+            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+                    .eq(Member::getPhone,data.getCustomerPhone() )
+                    .eq(Member::getIsdeleted,Constants.ZERO)
+                    .last("limit 1" ));
+            Users user = usersMapper.selectOne(new QueryWrapper<Users>().lambda()
+                    .eq(Users::getIamId,data.getUserId() )
+                    .last("limit 1" ));
+            if(member == null){
+                continue;
+            }
+            phoneList.add(data.getCustomerPhone());
+
+            CustomerUser model = new CustomerUser();
+            model.setCreateDate(date);
+            model.setIsdeleted(Constants.ZERO);
+            model.setEditDate(date);
+            model.setName(data.getDgName());
+            model.setPhone(data.getDgPhone());
+            model.setOrgName(data.getOrgName());
+            model.setCustomerName(data.getCustomerName());
+            model.setCustomerPhone(data.getCustomerPhone());
+            model.setUsername(data.getUserName());
+            model.setSource(Constants.ONE);
+            model.setZtStatus(Constants.ONE);
+            model.setZtInfo("crm鍚屾");
+            model.setIamUserId(data.getUserId());
+            model.setUserId(user== null?null:user.getId());
+            model.setCreationDate(data.getCreationDate());
+            addList.add(model);
+        }
+        if(phoneList.size()>0){
+            /**
+             * 鍒犻櫎鑰佸緱鏁版嵁
+             */
+            customerUserMapper.update(null,new UpdateWrapper<CustomerUser>().lambda()
+                    .in(CustomerUser::getPhone,phoneList)
+                    .eq(CustomerUser::getZtStatus,Constants.ONE)
+                    .eq(CustomerUser::getIsdeleted,Constants.ZERO)
+                    .set(CustomerUser::getIsdeleted,Constants.ONE)
+            );
+        }
+        if(addList .size() >0){
+            int temp = 0;
+            while(temp < addList.size()){
+                int index;
+                if(temp + 500 <= addList.size()){
+                    index = temp+500;
+                }else{
+                    index = addList.size();
+                }
+                customerUserMapper.insert(addList.subList(temp,index));
+                temp = index;
+            }
+        }
+    }
+}

--
Gitblit v1.9.3