1.0.2 add客户信息、联系人
parent
44a3fc98f5
commit
b4eaa03923
@ -0,0 +1,116 @@
|
||||
package org.dromara.oa.crm.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.oa.crm.domain.vo.CrmCustomerContactVo;
|
||||
import org.dromara.oa.crm.domain.bo.CrmCustomerContactBo;
|
||||
import org.dromara.oa.crm.service.ICrmCustomerContactService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 客户联系人信息
|
||||
* 前端访问路由地址为:/oa/crm/customerContact
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-25
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/crm/customerContact")
|
||||
public class CrmCustomerContactController extends BaseController {
|
||||
|
||||
private final ICrmCustomerContactService crmCustomerContactService;
|
||||
|
||||
/**
|
||||
* 查询客户联系人信息列表
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<CrmCustomerContactVo> list(CrmCustomerContactBo bo, PageQuery pageQuery) {
|
||||
return crmCustomerContactService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出客户联系人信息列表
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:export")
|
||||
@Log(title = "客户联系人信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(CrmCustomerContactBo bo, HttpServletResponse response) {
|
||||
List<CrmCustomerContactVo> list = crmCustomerContactService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "客户联系人信息", CrmCustomerContactVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取客户联系人信息详细信息
|
||||
*
|
||||
* @param contactId 主键
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:query")
|
||||
@GetMapping("/{contactId}")
|
||||
public R<CrmCustomerContactVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("contactId") Long contactId) {
|
||||
return R.ok(crmCustomerContactService.queryById(contactId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增客户联系人信息
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:add")
|
||||
@Log(title = "客户联系人信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody CrmCustomerContactBo bo) {
|
||||
return toAjax(crmCustomerContactService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改客户联系人信息
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:edit")
|
||||
@Log(title = "客户联系人信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CrmCustomerContactBo bo) {
|
||||
return toAjax(crmCustomerContactService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除客户联系人信息
|
||||
*
|
||||
* @param contactIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("oa/crm:customerContact:remove")
|
||||
@Log(title = "客户联系人信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{contactIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("contactIds") Long[] contactIds) {
|
||||
return toAjax(crmCustomerContactService.deleteWithValidByIds(List.of(contactIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉框查询客户联系人信息列表
|
||||
*/
|
||||
@GetMapping("/getCrmCustomerContactList")
|
||||
public R<List<CrmCustomerContactVo>> getCrmCustomerContactList(CrmCustomerContactBo bo) {
|
||||
List<CrmCustomerContactVo> list = crmCustomerContactService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package org.dromara.oa.crm.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.oa.crm.domain.CrmCustomerContact;
|
||||
import org.dromara.oa.crm.domain.vo.CrmCustomerContactVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 客户联系人信息Mapper接口
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-25
|
||||
*/
|
||||
public interface CrmCustomerContactMapper extends BaseMapperPlus<CrmCustomerContact, CrmCustomerContactVo> {
|
||||
|
||||
/**
|
||||
* 查询客户联系人信息列表
|
||||
*
|
||||
* @param page 分页
|
||||
* @param queryWrapper 条件
|
||||
* @return 客户联系人信息集合
|
||||
*/
|
||||
public Page<CrmCustomerContactVo> selectCustomCrmCustomerContactVoList(@Param("page") Page<CrmCustomerContactVo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<CrmCustomerContact> queryWrapper);
|
||||
|
||||
/**
|
||||
* 查询客户联系人信息列表
|
||||
*
|
||||
* @param queryWrapper 条件
|
||||
* @return 客户联系人信息集合
|
||||
*/
|
||||
public List<CrmCustomerContactVo> selectCustomCrmCustomerContactVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<CrmCustomerContact> queryWrapper);
|
||||
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package org.dromara.oa.crm.service;
|
||||
|
||||
import org.dromara.oa.crm.domain.CrmCustomerContact;
|
||||
import org.dromara.oa.crm.domain.vo.CrmCustomerContactVo;
|
||||
import org.dromara.oa.crm.domain.bo.CrmCustomerContactBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 客户联系人信息Service接口
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-25
|
||||
*/
|
||||
public interface ICrmCustomerContactService {
|
||||
|
||||
/**
|
||||
* 查询客户联系人信息
|
||||
*
|
||||
* @param contactId 主键
|
||||
* @return 客户联系人信息
|
||||
*/
|
||||
CrmCustomerContactVo queryById(Long contactId);
|
||||
|
||||
/**
|
||||
* 分页查询客户联系人信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 客户联系人信息分页列表
|
||||
*/
|
||||
TableDataInfo<CrmCustomerContactVo> queryPageList(CrmCustomerContactBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的客户联系人信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 客户联系人信息列表
|
||||
*/
|
||||
List<CrmCustomerContactVo> queryList(CrmCustomerContactBo bo);
|
||||
|
||||
/**
|
||||
* 新增客户联系人信息
|
||||
*
|
||||
* @param bo 客户联系人信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(CrmCustomerContactBo bo);
|
||||
|
||||
/**
|
||||
* 修改客户联系人信息
|
||||
*
|
||||
* @param bo 客户联系人信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(CrmCustomerContactBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除客户联系人信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,145 @@
|
||||
package org.dromara.oa.crm.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.oa.crm.domain.bo.CrmCustomerContactBo;
|
||||
import org.dromara.oa.crm.domain.vo.CrmCustomerContactVo;
|
||||
import org.dromara.oa.crm.domain.CrmCustomerContact;
|
||||
import org.dromara.oa.crm.mapper.CrmCustomerContactMapper;
|
||||
import org.dromara.oa.crm.service.ICrmCustomerContactService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 客户联系人信息Service业务层处理
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-25
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class CrmCustomerContactServiceImpl implements ICrmCustomerContactService {
|
||||
|
||||
private final CrmCustomerContactMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询客户联系人信息
|
||||
*
|
||||
* @param contactId 主键
|
||||
* @return 客户联系人信息
|
||||
*/
|
||||
@Override
|
||||
public CrmCustomerContactVo queryById(Long contactId) {
|
||||
return baseMapper.selectVoById(contactId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询客户联系人信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 客户联系人信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<CrmCustomerContactVo> queryPageList(CrmCustomerContactBo bo, PageQuery pageQuery) {
|
||||
MPJLambdaWrapper<CrmCustomerContact> lqw = buildQueryWrapper(bo);
|
||||
Page<CrmCustomerContactVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的客户联系人信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 客户联系人信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<CrmCustomerContactVo> queryList(CrmCustomerContactBo bo) {
|
||||
MPJLambdaWrapper<CrmCustomerContact> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private MPJLambdaWrapper<CrmCustomerContact> buildQueryWrapper(CrmCustomerContactBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<CrmCustomerContact> lqw = JoinWrappers.lambda(CrmCustomerContact.class)
|
||||
.selectAll(CrmCustomerContact.class)
|
||||
.eq(bo.getCustomerId() != null, CrmCustomerContact::getCustomerId, bo.getCustomerId())
|
||||
.like(StringUtils.isNotBlank(bo.getContactName()), CrmCustomerContact::getContactName, bo.getContactName())
|
||||
.eq(StringUtils.isNotBlank(bo.getSexType()), CrmCustomerContact::getSexType, bo.getSexType())
|
||||
.eq(bo.getRoleType() != null, CrmCustomerContact::getRoleType, bo.getRoleType())
|
||||
.eq(StringUtils.isNotBlank(bo.getFirstFlag()), CrmCustomerContact::getFirstFlag, bo.getFirstFlag())
|
||||
.eq(bo.getBirthday() != null, CrmCustomerContact::getBirthday, bo.getBirthday())
|
||||
.eq(StringUtils.isNotBlank(bo.getDepartmentPosition()), CrmCustomerContact::getDepartmentPosition, bo.getDepartmentPosition())
|
||||
.eq(StringUtils.isNotBlank(bo.getDetailedAddress()), CrmCustomerContact::getDetailedAddress, bo.getDetailedAddress())
|
||||
.eq(StringUtils.isNotBlank(bo.getPhoneNumber()), CrmCustomerContact::getPhoneNumber, bo.getPhoneNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getLandlineNumber()), CrmCustomerContact::getLandlineNumber, bo.getLandlineNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getFacsimileNumber()), CrmCustomerContact::getFacsimileNumber, bo.getFacsimileNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getEmail()), CrmCustomerContact::getEmail, bo.getEmail())
|
||||
.eq(StringUtils.isNotBlank(bo.getWechatAccount()), CrmCustomerContact::getWechatAccount, bo.getWechatAccount())
|
||||
.eq(StringUtils.isNotBlank(bo.getQqNumber()), CrmCustomerContact::getQqNumber, bo.getQqNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), CrmCustomerContact::getActiveFlag, bo.getActiveFlag());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增客户联系人信息
|
||||
*
|
||||
* @param bo 客户联系人信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(CrmCustomerContactBo bo) {
|
||||
CrmCustomerContact add = MapstructUtils.convert(bo, CrmCustomerContact.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setContactId(add.getContactId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改客户联系人信息
|
||||
*
|
||||
* @param bo 客户联系人信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(CrmCustomerContactBo bo) {
|
||||
CrmCustomerContact update = MapstructUtils.convert(bo, CrmCustomerContact.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(CrmCustomerContact entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除客户联系人信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,149 @@
|
||||
package org.dromara.oa.crm.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.oa.crm.domain.bo.CrmCustomerInfoBo;
|
||||
import org.dromara.oa.crm.domain.vo.CrmCustomerInfoVo;
|
||||
import org.dromara.oa.crm.domain.CrmCustomerInfo;
|
||||
import org.dromara.oa.crm.mapper.CrmCustomerInfoMapper;
|
||||
import org.dromara.oa.crm.service.ICrmCustomerInfoService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 客户信息Service业务层处理
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-25
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class CrmCustomerInfoServiceImpl implements ICrmCustomerInfoService {
|
||||
|
||||
private final CrmCustomerInfoMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询客户信息
|
||||
*
|
||||
* @param customerId 主键
|
||||
* @return 客户信息
|
||||
*/
|
||||
@Override
|
||||
public CrmCustomerInfoVo queryById(Long customerId){
|
||||
return baseMapper.selectVoById(customerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询客户信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 客户信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<CrmCustomerInfoVo> queryPageList(CrmCustomerInfoBo bo, PageQuery pageQuery) {
|
||||
MPJLambdaWrapper<CrmCustomerInfo> lqw = buildQueryWrapper(bo);
|
||||
Page<CrmCustomerInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的客户信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 客户信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<CrmCustomerInfoVo> queryList(CrmCustomerInfoBo bo) {
|
||||
MPJLambdaWrapper<CrmCustomerInfo> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private MPJLambdaWrapper<CrmCustomerInfo> buildQueryWrapper(CrmCustomerInfoBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<CrmCustomerInfo> lqw = JoinWrappers.lambda(CrmCustomerInfo.class)
|
||||
.selectAll(CrmCustomerInfo.class)
|
||||
.like(StringUtils.isNotBlank(bo.getCustomerName()), CrmCustomerInfo::getCustomerName, bo.getCustomerName())
|
||||
.like(StringUtils.isNotBlank(bo.getMnemonicName()), CrmCustomerInfo::getMnemonicName, bo.getMnemonicName())
|
||||
.eq(bo.getIndustryId() != null, CrmCustomerInfo::getIndustryId, bo.getIndustryId())
|
||||
.eq(bo.getCustomerType() != null, CrmCustomerInfo::getCustomerType, bo.getCustomerType())
|
||||
.eq(bo.getCustomerStatus() != null, CrmCustomerInfo::getCustomerStatus, bo.getCustomerStatus())
|
||||
.eq(bo.getCustomerLevel() != null, CrmCustomerInfo::getCustomerLevel, bo.getCustomerLevel())
|
||||
.eq(bo.getCustomerSource() != null, CrmCustomerInfo::getCustomerSource, bo.getCustomerSource())
|
||||
.eq(bo.getOwnerId() != null, CrmCustomerInfo::getOwnerId, bo.getOwnerId())
|
||||
.eq(StringUtils.isNotBlank(bo.getDetailedAddress()), CrmCustomerInfo::getDetailedAddress, bo.getDetailedAddress())
|
||||
.eq(bo.getCustomerScale() != null, CrmCustomerInfo::getCustomerScale, bo.getCustomerScale())
|
||||
.eq(bo.getParentCustomerId() != null, CrmCustomerInfo::getParentCustomerId, bo.getParentCustomerId())
|
||||
.eq(StringUtils.isNotBlank(bo.getCustomerRelationship()), CrmCustomerInfo::getCustomerRelationship, bo.getCustomerRelationship())
|
||||
.eq(StringUtils.isNotBlank(bo.getLegalRepresentative()), CrmCustomerInfo::getLegalRepresentative, bo.getLegalRepresentative())
|
||||
.eq(StringUtils.isNotBlank(bo.getBusinessLicenseNumber()), CrmCustomerInfo::getBusinessLicenseNumber, bo.getBusinessLicenseNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getTaxNumber()), CrmCustomerInfo::getTaxNumber, bo.getTaxNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getBankAccountOpening()), CrmCustomerInfo::getBankAccountOpening, bo.getBankAccountOpening())
|
||||
.eq(StringUtils.isNotBlank(bo.getBankNumber()), CrmCustomerInfo::getBankNumber, bo.getBankNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getOssId()), CrmCustomerInfo::getOssId, bo.getOssId())
|
||||
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), CrmCustomerInfo::getActiveFlag, bo.getActiveFlag());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增客户信息
|
||||
*
|
||||
* @param bo 客户信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(CrmCustomerInfoBo bo) {
|
||||
CrmCustomerInfo add = MapstructUtils.convert(bo, CrmCustomerInfo.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setCustomerId(add.getCustomerId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改客户信息
|
||||
*
|
||||
* @param bo 客户信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(CrmCustomerInfoBo bo) {
|
||||
CrmCustomerInfo update = MapstructUtils.convert(bo, CrmCustomerInfo.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(CrmCustomerInfo entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除客户信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -1,147 +0,0 @@
|
||||
package org.dromara.oa.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.oa.domain.bo.BaseCustomerBo;
|
||||
import org.dromara.oa.domain.vo.BaseCustomerVo;
|
||||
import org.dromara.oa.domain.BaseCustomer;
|
||||
import org.dromara.oa.mapper.BaseCustomerMapper;
|
||||
import org.dromara.oa.service.IBaseCustomerService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 客户信息Service业务层处理
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-09-15
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BaseCustomerServiceImpl implements IBaseCustomerService {
|
||||
|
||||
private final BaseCustomerMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询客户信息
|
||||
*
|
||||
* @param customerId 主键
|
||||
* @return 客户信息
|
||||
*/
|
||||
@Override
|
||||
public BaseCustomerVo queryById(Long customerId) {
|
||||
return baseMapper.selectVoById(customerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询客户信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 客户信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BaseCustomerVo> queryPageList(BaseCustomerBo bo, PageQuery pageQuery) {
|
||||
MPJLambdaWrapper<BaseCustomer> lqw = buildQueryWrapper(bo);
|
||||
Page<BaseCustomerVo> result = baseMapper.selectCustomBaseCustomerVoList(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的客户信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 客户信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<BaseCustomerVo> queryList(BaseCustomerBo bo) {
|
||||
MPJLambdaWrapper<BaseCustomer> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectCustomBaseCustomerVoList(lqw);
|
||||
}
|
||||
|
||||
private MPJLambdaWrapper<BaseCustomer> buildQueryWrapper(BaseCustomerBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<BaseCustomer> lqw = JoinWrappers.lambda(BaseCustomer.class)
|
||||
.selectAll(BaseCustomer.class)
|
||||
.like(StringUtils.isNotBlank(bo.getCustomerName()), BaseCustomer::getCustomerName, bo.getCustomerName())
|
||||
.like(StringUtils.isNotBlank(bo.getMnemonicName()), BaseCustomer::getMnemonicName, bo.getMnemonicName())
|
||||
.eq(bo.getIndustryId() != null, BaseCustomer::getIndustryId, bo.getIndustryId())
|
||||
.eq(bo.getCustomerType() != null, BaseCustomer::getCustomerType, bo.getCustomerType())
|
||||
.eq(bo.getCustomerStatus() != null, BaseCustomer::getCustomerStatus, bo.getCustomerStatus())
|
||||
.eq(bo.getCustomerLevel() != null, BaseCustomer::getCustomerLevel, bo.getCustomerLevel())
|
||||
.eq(bo.getCustomerSource() != null, BaseCustomer::getCustomerSource, bo.getCustomerSource())
|
||||
.eq(bo.getOwnerId() != null, BaseCustomer::getOwnerId, bo.getOwnerId())
|
||||
.eq(StringUtils.isNotBlank(bo.getDetailedAddress()), BaseCustomer::getDetailedAddress, bo.getDetailedAddress())
|
||||
.eq(bo.getCustomerScale() != null, BaseCustomer::getCustomerScale, bo.getCustomerScale())
|
||||
.eq(bo.getParentCustomerId() != null, BaseCustomer::getParentCustomerId, bo.getParentCustomerId())
|
||||
.eq(StringUtils.isNotBlank(bo.getLegalRepresentative()), BaseCustomer::getLegalRepresentative, bo.getLegalRepresentative())
|
||||
.eq(StringUtils.isNotBlank(bo.getBusinessLicenseNumber()), BaseCustomer::getBusinessLicenseNumber, bo.getBusinessLicenseNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getBankAccountOpening()), BaseCustomer::getBankAccountOpening, bo.getBankAccountOpening())
|
||||
.eq(StringUtils.isNotBlank(bo.getTaxNumber()), BaseCustomer::getTaxNumber, bo.getTaxNumber())
|
||||
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseCustomer::getActiveFlag, bo.getActiveFlag())
|
||||
.orderByAsc(BaseCustomer::getCustomerId);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增客户信息
|
||||
*
|
||||
* @param bo 客户信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BaseCustomerBo bo) {
|
||||
BaseCustomer add = MapstructUtils.convert(bo, BaseCustomer.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setCustomerId(add.getCustomerId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改客户信息
|
||||
*
|
||||
* @param bo 客户信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BaseCustomerBo bo) {
|
||||
BaseCustomer update = MapstructUtils.convert(bo, BaseCustomer.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BaseCustomer entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除客户信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -1,39 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.oa.mapper.BaseCustomerMapper">
|
||||
<resultMap type="org.dromara.oa.domain.vo.BaseCustomerVo" id="BaseCustomerResult">
|
||||
</resultMap>
|
||||
|
||||
<select id="selectCustomBaseCustomerVoList" resultMap="BaseCustomerResult">
|
||||
select customer_id,
|
||||
tenant_id,
|
||||
customer_name,
|
||||
mnemonic_name,
|
||||
industry_id,
|
||||
customer_type,
|
||||
customer_status,
|
||||
customer_level,
|
||||
customer_source,
|
||||
owner_id,
|
||||
detailed_address,
|
||||
customer_scale,
|
||||
parent_customer_id,
|
||||
legal_representative,
|
||||
business_license_number,
|
||||
bank_account_opening,
|
||||
tax_number,
|
||||
remark,
|
||||
active_flag,
|
||||
del_flag,
|
||||
create_dept,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time
|
||||
from base_customer t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.oa.crm.mapper.CrmCustomerContactMapper">
|
||||
<resultMap type="org.dromara.oa.crm.domain.vo.CrmCustomerContactVo" id="CrmCustomerContactResult">
|
||||
</resultMap>
|
||||
|
||||
<select id="selectCustomCrmCustomerContactVoList" resultMap="CrmCustomerContactResult">
|
||||
select contact_id, tenant_id, customer_id, contact_name, sex_type, role_type, first_flag, birthday, department_position, detailed_address, phone_number, landline_number, facsimile_number, email, wechat_account, qq_number, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from crm_customer_contact t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.oa.crm.mapper.CrmCustomerInfoMapper">
|
||||
<resultMap type="org.dromara.oa.crm.domain.vo.CrmCustomerInfoVo" id="CrmCustomerInfoResult">
|
||||
</resultMap>
|
||||
|
||||
<select id="selectCustomCrmCustomerInfoVoList" resultMap="CrmCustomerInfoResult">
|
||||
select customer_id, tenant_id, customer_name, mnemonic_name, industry_id, customer_type, customer_status, customer_level, customer_source, owner_id, detailed_address, customer_scale, parent_customer_id, customer_relationship, legal_representative, business_license_number, tax_number, bank_account_opening, bank_number, oss_id, remark, active_flag, del_flag, create_dept, create_by, create_time, update_by, update_time from crm_customer_info t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue