| package com.doumee.service.business.impl; | 
|   | 
| import cn.emay.sdk.util.StringUtil; | 
| import cn.hutool.core.util.IdcardUtil; | 
| import cn.hutool.core.util.PhoneUtil; | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.core.model.LoginUserInfo; | 
| import com.doumee.core.model.PageData; | 
| import com.doumee.core.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.DESUtil; | 
| import com.doumee.core.utils.Utils; | 
| import com.doumee.dao.business.MemberMapper; | 
| import com.doumee.dao.business.YwCustomerMapper; | 
| import com.doumee.dao.business.model.Member; | 
| import com.doumee.dao.business.model.YwCustomer; | 
| import com.doumee.service.business.YwCustomerService; | 
| 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 com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.checkerframework.checker.units.qual.A; | 
| 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.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| /** | 
|  * 运维客户信息表Service实现 | 
|  * @author 江蹄蹄 | 
|  * @date 2024/11/19 16:07 | 
|  */ | 
| @Service | 
| public class YwCustomerServiceImpl implements YwCustomerService { | 
|   | 
|     @Autowired | 
|     private YwCustomerMapper ywCustomerMapper; | 
|   | 
|     @Autowired | 
|     private MemberMapper memberMapper; | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class,Exception.class}) | 
|     public Integer create(YwCustomer ywCustomer) { | 
|         if(Objects.isNull(ywCustomer) | 
|             || Objects.isNull(ywCustomer.getType()) | 
|             || StringUtils.isBlank(ywCustomer.getName()) | 
|             || Objects.isNull(ywCustomer.getMember()) | 
|             || StringUtils.isBlank(ywCustomer.getMember().getName()) | 
|             || StringUtils.isBlank(ywCustomer.getMember().getPhone()) | 
|             || Objects.isNull(ywCustomer.getMember().getHighCheckor()) | 
|             || Objects.isNull(ywCustomer.getMember().getIdcardType()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|         LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo(); | 
|         ywCustomer.setStatus(Constants.ZERO); | 
|         ywCustomer.setIsdeleted(Constants.ZERO); | 
|         ywCustomer.setCreator(loginUserInfo.getId()); | 
|         ywCustomer.setCreateDate(new Date()); | 
|         ywCustomerMapper.insert(ywCustomer); | 
|   | 
|         Member member = ywCustomer.getMember(); | 
|         member.setCreator(loginUserInfo.getId()); | 
|         member.setCreateDate(new Date()); | 
|         member.setIsdeleted(Constants.ZERO); | 
|         member.setStatus(Constants.ZERO); | 
|         member.setType(Constants.memberType.customer); | 
|         member.setCustomerId(ywCustomer.getId()); | 
|         this.checkMember(member); | 
|         memberMapper.insert(member); | 
|   | 
|         ywCustomer.setMemberId(member.getId()); | 
|         ywCustomerMapper.updateById(ywCustomer); | 
|   | 
|         return ywCustomer.getId(); | 
|     } | 
|   | 
|   | 
|     public void checkMember(Member member){ | 
|         if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); | 
|         } | 
|         if (StringUtils.isNotBlank(member.getIdcardNo()) && Constants.equalsInteger(member.getIdcardType(),Constants.ZERO)  && !IdcardUtil.isValidCard(member.getIdcardNo())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); | 
|         } | 
|         if(StringUtils.isNotBlank(member.getIdcardNo() ) && Constants.equalsInteger(member.getIdcardType(),Constants.ZERO) ){ | 
|             if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() | 
|                     .eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) | 
|                     .eq(Member::getIsdeleted,Constants.ZERO)) >0){ | 
|                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "身份证号【"+member.getIdcardNo()+"】已被使用,不能重复"); | 
|             } | 
|         } | 
|         if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() | 
|                 .eq(Member::getPhone,  member.getPhone()) | 
|                 .eq(Member::getIsdeleted,Constants.ZERO) ) >0){ | 
|             throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+member.getPhone()+"】已被使用,不能重复"); | 
|         } | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public void deleteById(Integer id, LoginUserInfo user) { | 
|         ywCustomerMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(YwCustomer ywCustomer) { | 
|         UpdateWrapper<YwCustomer> deleteWrapper = new UpdateWrapper<>(ywCustomer); | 
|         ywCustomerMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         ywCustomerMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(YwCustomer ywCustomer) { | 
|         if(Objects.isNull(ywCustomer) | 
|                 || Objects.isNull(ywCustomer.getType()) | 
|                 || StringUtils.isBlank(ywCustomer.getName()) | 
|                 || Objects.isNull(ywCustomer.getMemberId()) | 
|         ){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST); | 
|         } | 
|   | 
|         LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo(); | 
|         ywCustomer.setEditor(loginUserInfo.getId()); | 
|         ywCustomer.setEditDate(new Date()); | 
|         ywCustomerMapper.updateById(ywCustomer); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<YwCustomer> ywCustomers) { | 
|         if (CollectionUtils.isEmpty(ywCustomers)) { | 
|             return; | 
|         } | 
|         for (YwCustomer ywCustomer: ywCustomers) { | 
|             this.updateById(ywCustomer); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public YwCustomer findById(Integer id) { | 
|         return ywCustomerMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public YwCustomer getDetail(Integer id) { | 
|         YwCustomer ywCustomer = ywCustomerMapper.selectById(id); | 
|         if(Objects.isNull(ywCustomer)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
|         } | 
|         Member member = memberMapper.selectById(ywCustomer.getMemberId()); | 
|         if(Objects.nonNull(member)){ | 
|             ywCustomer.setMember(member); | 
|         } | 
|         return ywCustomer; | 
|     } | 
|     @Override | 
|     public YwCustomer findOne(YwCustomer ywCustomer) { | 
|         QueryWrapper<YwCustomer> wrapper = new QueryWrapper<>(ywCustomer); | 
|         return ywCustomerMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<YwCustomer> findList(YwCustomer ywCustomer) { | 
|         QueryWrapper<YwCustomer> wrapper = new QueryWrapper<>(ywCustomer); | 
|         return ywCustomerMapper.selectList(wrapper); | 
|     } | 
|    | 
|     @Override | 
|     public PageData<YwCustomer> findPage(PageWrap<YwCustomer> pageWrap) { | 
|         IPage<YwCustomer> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         MPJLambdaWrapper<YwCustomer> queryWrapper = new MPJLambdaWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         YwCustomer model = pageWrap.getModel(); | 
|         IPage iPage = ywCustomerMapper.selectJoinPage(page,YwCustomer.class, | 
|                 queryWrapper | 
|                 .selectAll(YwCustomer.class) | 
|                 .selectAs(Member::getName,YwCustomer::getMemberName) | 
|                 .selectAs(Member::getPhone,YwCustomer::getMemberPhone) | 
|                 .leftJoin(Member.class,Member::getId,YwCustomer::getMemberId) | 
|                 .eq(YwCustomer::getIsdeleted,Constants.ZERO) | 
|                 .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),YwCustomer::getName,model.getName()) | 
|                 .orderByDesc(YwCustomer::getCreateDate) | 
|         ); | 
|         return PageData.from(iPage); | 
|     } | 
|   | 
|     @Override | 
|     public long count(YwCustomer ywCustomer) { | 
|         QueryWrapper<YwCustomer> wrapper = new QueryWrapper<>(ywCustomer); | 
|         return ywCustomerMapper.selectCount(wrapper); | 
|     } | 
| } |