package com.doumee.service.business.impl; 
 | 
  
 | 
import com.alibaba.druid.sql.visitor.functions.Concat; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
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.CustomerLogMapper; 
 | 
import com.doumee.dao.business.CustomerMapper; 
 | 
import com.doumee.dao.business.MemberMapper; 
 | 
import com.doumee.dao.business.model.Customer; 
 | 
import com.doumee.dao.business.model.CustomerLog; 
 | 
import com.doumee.dao.business.model.Member; 
 | 
import com.doumee.dao.web.reqeust.FreeCustomizationDTO; 
 | 
import com.doumee.dao.web.reqeust.RenovationCalculatorDTO; 
 | 
import com.doumee.dao.web.reqeust.TestTrimStyleDTO; 
 | 
import com.doumee.service.business.CustomerLogService; 
 | 
import com.doumee.service.business.CustomerService; 
 | 
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.checkerframework.checker.units.qual.A; 
 | 
import org.checkerframework.checker.units.qual.C; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
import org.springframework.util.StringUtils; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 客户信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/07/04 14:40 
 | 
 */ 
 | 
@Service 
 | 
public class CustomerServiceImpl implements CustomerService { 
 | 
  
 | 
    @Autowired 
 | 
    private CustomerMapper customerMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private CustomerLogMapper customerLogMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private MemberMapper memberMapper; 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public Long create(Customer customer) { 
 | 
        customerMapper.insert(customer); 
 | 
        return customer.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Long id) { 
 | 
        customerMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(Customer customer) { 
 | 
        UpdateWrapper<Customer> deleteWrapper = new UpdateWrapper<>(customer); 
 | 
        customerMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Long> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        customerMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(Customer customer) { 
 | 
        customerMapper.updateById(customer); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<Customer> customers) { 
 | 
        if (CollectionUtils.isEmpty(customers)) { 
 | 
            return; 
 | 
        } 
 | 
        for (Customer customer: customers) { 
 | 
            this.updateById(customer); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Customer findById(Long id) { 
 | 
        return customerMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Customer findOne(Customer customer) { 
 | 
        QueryWrapper<Customer> wrapper = new QueryWrapper<>(customer); 
 | 
        return customerMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<Customer> findList(Customer customer) { 
 | 
        QueryWrapper<Customer> wrapper = new QueryWrapper<>(customer); 
 | 
        return customerMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<Customer> findPage(PageWrap<Customer> pageWrap) { 
 | 
        IPage<Customer> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<Customer> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIsdeleted() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getIsdeleted, pageWrap.getModel().getIsdeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateDate() != null) { 
 | 
            queryWrapper.lambda().ge(Customer::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); 
 | 
            queryWrapper.lambda().le(Customer::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreator() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getCreator, pageWrap.getModel().getCreator()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditDate() != null) { 
 | 
            queryWrapper.lambda().ge(Customer::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); 
 | 
            queryWrapper.lambda().le(Customer::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditor() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getEditor, pageWrap.getModel().getEditor()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getName() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getName, pageWrap.getModel().getName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPhone() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getPhone, pageWrap.getModel().getPhone()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getAddr() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getAddr, pageWrap.getModel().getAddr()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getInfo() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getInfo, pageWrap.getModel().getInfo()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDesignerId() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getDesignerId, pageWrap.getModel().getDesignerId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getMemberId() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getMemberId, pageWrap.getModel().getMemberId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRecPhone() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getRecPhone, pageWrap.getModel().getRecPhone()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRecName() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getRecName, pageWrap.getModel().getRecName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIp() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getIp, pageWrap.getModel().getIp()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProName() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getProName, pageWrap.getModel().getProName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCityName() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getCityName, pageWrap.getModel().getCityName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getAreaName() != null) { 
 | 
            queryWrapper.lambda().like(Customer::getAreaName, pageWrap.getModel().getAreaName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSysVersion() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getSysVersion, pageWrap.getModel().getSysVersion()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBrowser() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getBrowser, pageWrap.getModel().getBrowser()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getTerminal() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getTerminal, pageWrap.getModel().getTerminal()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getOpenid() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getOpenid, pageWrap.getModel().getOpenid()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCityCode() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getCityCode, pageWrap.getModel().getCityCode()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProvinceCode() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getProvinceCode, pageWrap.getModel().getProvinceCode()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getAreaCode() != null) { 
 | 
            queryWrapper.lambda().eq(Customer::getAreaCode, pageWrap.getModel().getAreaCode()); 
 | 
        } 
 | 
        queryWrapper.lambda().orderByDesc(Customer::getCreateDate ); 
 | 
        return PageData.from(customerMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(Customer customer) { 
 | 
        QueryWrapper<Customer> wrapper = new QueryWrapper<>(customer); 
 | 
        return customerMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public CustomerLog saveRenovationCalculator(RenovationCalculatorDTO renovationCalculatorDTO){ 
 | 
        if(Objects.isNull(renovationCalculatorDTO) 
 | 
            || Objects.isNull(renovationCalculatorDTO.getMemberId()) 
 | 
            || Objects.isNull(renovationCalculatorDTO.getHouseStatus()) 
 | 
            || Objects.isNull(renovationCalculatorDTO.getHouseType()) 
 | 
            || Objects.isNull(renovationCalculatorDTO.getBudget()) 
 | 
            || StringUtils.isEmpty(renovationCalculatorDTO.getArea()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        Member member = memberMapper.selectById(renovationCalculatorDTO.getMemberId()); 
 | 
        if(Objects.isNull(member)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息"); 
 | 
        } 
 | 
        if(StringUtils.isEmpty(member.getPhone())){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未授权手机号"); 
 | 
        } 
 | 
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda().eq(Customer::getPhone,member.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1")); 
 | 
        if(Objects.isNull(customer)){ 
 | 
            customer = new Customer(); 
 | 
            customer.setIsdeleted(Constants.ZERO); 
 | 
            customer.setPhone(member.getPhone()); 
 | 
            customer.setCreateDate(new Date()); 
 | 
        } else{ 
 | 
            customer.setEditDate(new Date()); 
 | 
        } 
 | 
        customer.setOpenid(member.getOpenid()); 
 | 
        customer.setMemberId(member.getId()); 
 | 
  
 | 
        customerMapper.insertOrUpdate(customer); 
 | 
  
 | 
        //存储 customerLog 数据 
 | 
        CustomerLog customerLog = new CustomerLog(); 
 | 
        customerLog.setCreateDate(new Date()); 
 | 
        customerLog.setIsdeleted(Constants.ZERO); 
 | 
        customerLog.setType(Constants.TWO); 
 | 
        customerLog.setCrmStatus(Constants.ZERO); 
 | 
        customerLog.setName(StringUtils.isEmpty(member.getName())?member.getNickname():member.getName()); 
 | 
        customerLog.setPhone(customer.getPhone()); 
 | 
        customerLog.setBudget(renovationCalculatorDTO.getBudget().multiply(new BigDecimal(10000)).toString()); 
 | 
        customerLog.setHouseStatus(renovationCalculatorDTO.getHouseStatus()); 
 | 
        customerLog.setArea(renovationCalculatorDTO.getArea()); 
 | 
        customerLog.setHouseType(renovationCalculatorDTO.getHouseType()); 
 | 
        customerLog.setCostomerId(customer.getId().toString()); 
 | 
        customerLogMapper.insert(customerLog); 
 | 
        customerLog.setOpenid(member.getOpenid()); 
 | 
        return  customerLog; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public CustomerLog saveFreeCustomizationApply(FreeCustomizationDTO freeCustomizationDTO){ 
 | 
        if(Objects.isNull(freeCustomizationDTO) 
 | 
                || Objects.isNull(freeCustomizationDTO.getMemberId()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getName()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getPhone()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getCityCode()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getCityName()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getProvinceName()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getProvinceCode()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getAreaCode()) 
 | 
                || StringUtils.isEmpty(freeCustomizationDTO.getAreaName()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        Member member = memberMapper.selectById(freeCustomizationDTO.getMemberId()); 
 | 
        if(Objects.isNull(member)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息"); 
 | 
        } 
 | 
        if(StringUtils.isEmpty(member.getPhone())){ 
 | 
            member.setPhone(freeCustomizationDTO.getPhone()); 
 | 
            memberMapper.updateById(member); 
 | 
        } 
 | 
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda() 
 | 
                .eq(Customer::getPhone,freeCustomizationDTO.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1")); 
 | 
        if(Objects.isNull(customer)){ 
 | 
            customer = new Customer(); 
 | 
            customer.setPhone(freeCustomizationDTO.getPhone()); 
 | 
            customer.setCreateDate(new Date()); 
 | 
            customer.setIsdeleted(Constants.ZERO); 
 | 
        } else{ 
 | 
            customer.setEditDate(new Date()); 
 | 
        } 
 | 
        customer.setOpenid(member.getOpenid()); 
 | 
        customer.setMemberId(member.getId()); 
 | 
        customer.setName(freeCustomizationDTO.getName()); 
 | 
  
 | 
        customer.setProName(freeCustomizationDTO.getProvinceName()); 
 | 
        customer.setCityName(freeCustomizationDTO.getCityName()); 
 | 
        customer.setAreaName(freeCustomizationDTO.getAreaName()); 
 | 
        customer.setProvinceCode(freeCustomizationDTO.getProvinceCode()); 
 | 
        customer.setCityCode(freeCustomizationDTO.getCityCode()); 
 | 
        customer.setAreaCode(freeCustomizationDTO.getAreaCode()); 
 | 
        customerMapper.insertOrUpdate(customer); 
 | 
  
 | 
        //存储 customerLog 数据 
 | 
        CustomerLog customerLog = new CustomerLog(); 
 | 
        customerLog.setCreateDate(new Date()); 
 | 
        customerLog.setIsdeleted(Constants.ZERO); 
 | 
        customerLog.setType(Constants.ONE); 
 | 
        customerLog.setCrmStatus(Constants.ZERO); 
 | 
        customerLog.setPhone(customer.getPhone()); 
 | 
        customerLog.setCostomerId(customer.getId().toString()); 
 | 
  
 | 
        customerLog.setProvinceName(freeCustomizationDTO.getProvinceName()); 
 | 
        customerLog.setCityName(freeCustomizationDTO.getCityName()); 
 | 
        customerLog.setAreaCode(freeCustomizationDTO.getAreaName()); 
 | 
        customerLog.setProvicneCode(freeCustomizationDTO.getProvinceCode()); 
 | 
        customerLog.setCityCode(freeCustomizationDTO.getCityCode()); 
 | 
        customerLog.setAreaCode(freeCustomizationDTO.getAreaCode()); 
 | 
        customerLog.setName(freeCustomizationDTO.getName()); 
 | 
        customerLog.setPhone(freeCustomizationDTO.getPhone()); 
 | 
        customerLogMapper.insert(customerLog); 
 | 
        customerLog.setOpenid(member.getOpenid()); 
 | 
        return  customerLog; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public CustomerLog saveTestTrimStyle(TestTrimStyleDTO testTrimStyleDTO){ 
 | 
        if(Objects.isNull(testTrimStyleDTO) 
 | 
                || Objects.isNull(testTrimStyleDTO.getMemberId()) 
 | 
  
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getStyleInfo()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getAgeInfo()) 
 | 
                || Objects.isNull(testTrimStyleDTO.getSex()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getHouseType()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getAgeInfo()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getPhone()) 
 | 
  
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getCityCode()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getCityName()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getProvinceName()) 
 | 
                || StringUtils.isEmpty(testTrimStyleDTO.getProvinceCode()) 
 | 
        ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST); 
 | 
        } 
 | 
        Member member = memberMapper.selectById(testTrimStyleDTO.getMemberId()); 
 | 
        if(Objects.isNull(member)){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息"); 
 | 
        } 
 | 
        if(StringUtils.isEmpty(member.getPhone())){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未授权手机号"); 
 | 
        } 
 | 
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda() 
 | 
                .eq(Customer::getPhone,testTrimStyleDTO.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1")); 
 | 
        if(Objects.isNull(customer)){ 
 | 
            customer = new Customer(); 
 | 
            customer.setPhone(testTrimStyleDTO.getPhone()); 
 | 
            customer.setCreateDate(new Date()); 
 | 
            customer.setIsdeleted(Constants.ZERO); 
 | 
        } else{ 
 | 
            customer.setEditDate(new Date()); 
 | 
        } 
 | 
        customer.setOpenid(member.getOpenid()); 
 | 
        customer.setMemberId(member.getId()); 
 | 
  
 | 
        customer.setProName(testTrimStyleDTO.getProvinceName()); 
 | 
        customer.setCityName(testTrimStyleDTO.getCityName()); 
 | 
        customer.setProvinceCode(testTrimStyleDTO.getProvinceCode()); 
 | 
        customer.setCityCode(testTrimStyleDTO.getCityCode()); 
 | 
        customerMapper.insertOrUpdate(customer); 
 | 
  
 | 
        //存储 customerLog 数据 
 | 
        CustomerLog customerLog = new CustomerLog(); 
 | 
        customerLog.setCreateDate(new Date()); 
 | 
        customerLog.setIsdeleted(Constants.ZERO); 
 | 
        customerLog.setType(Constants.ZERO); 
 | 
        customerLog.setCrmStatus(Constants.ZERO); 
 | 
        customerLog.setPhone(customer.getPhone()); 
 | 
        customerLog.setCostomerId(customer.getId().toString()); 
 | 
  
 | 
        customerLog.setProvinceName(testTrimStyleDTO.getProvinceName()); 
 | 
        customerLog.setCityName(testTrimStyleDTO.getCityName()); 
 | 
        customerLog.setProvicneCode(testTrimStyleDTO.getProvinceCode()); 
 | 
        customerLog.setCityCode(testTrimStyleDTO.getCityCode()); 
 | 
  
 | 
        customerLog.setAgeInfo(testTrimStyleDTO.getAgeInfo()); 
 | 
        customerLog.setHouseType(testTrimStyleDTO.getHouseType()); 
 | 
        customerLog.setStyleInfo(testTrimStyleDTO.getStyleInfo()); 
 | 
        customerLog.setSex(testTrimStyleDTO.getSex()); 
 | 
        customerLog.setAgeInfo(testTrimStyleDTO.getAgeInfo()); 
 | 
        customerLog.setPhone(testTrimStyleDTO.getPhone()); 
 | 
        customerLogMapper.insert(customerLog); 
 | 
        customerLog.setOpenid(member.getOpenid()); 
 | 
        return  customerLog; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |