diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/controller/admin/BusinessChannelController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/controller/admin/BusinessChannelController.java new file mode 100644 index 00000000..73da3550 --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/controller/admin/BusinessChannelController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.business.controller.admin; + +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.business.entity.DlBusinessChannel; +import cn.iocoder.yudao.module.business.service.BusinessChannelService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/business") +@RequiredArgsConstructor +public class BusinessChannelController { + + private final BusinessChannelService businessChannelService; + + /** + * @Author 许 + * @Description 获取客户来源和业务渠道 + * @Date 13:54 2025/9/8 + * @Param [channel] + * @return cn.iocoder.yudao.framework.common.pojo.CommonResult> + **/ + @GetMapping("/list") + public CommonResult> list(DlBusinessChannel channel) { + return CommonResult.success(businessChannelService.list(Wrappers.lambdaQuery() + .eq(ObjectUtil.isNotEmpty(channel.getType()), DlBusinessChannel::getType, channel.getType()) + .like(ObjectUtil.isNotEmpty(channel.getName()), DlBusinessChannel::getName, channel.getName()) + .orderByAsc(DlBusinessChannel::getSort))); + } + + /** + * 新增业务渠道或客户来源 + */ + @PostMapping("/add") + public boolean addChannel(@RequestBody DlBusinessChannel channel) { + if (ObjectUtil.isNotEmpty(channel.getUserIdList())) { + String userIds = channel.getUserIdList().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + channel.setUserIds(userIds); + + } + return businessChannelService.save(channel); + } + + /** + * 获取业务渠道或客户来源 + */ + @GetMapping("/{id}") + public CommonResult getChannelById(@PathVariable("id") Long id) { + DlBusinessChannel info = businessChannelService.getById(id); + + //将字符串转为集合 + if (ObjectUtil.isNotEmpty(info.getUserIds())) { + List userIdList = Arrays.stream(info.getUserIds().split(",")) + .filter(s -> s != null && !s.isEmpty()) // 可选:避免空字符串 + .map(Long::valueOf) + .collect(Collectors.toList()); + info.setUserIdList(userIdList); + } + return CommonResult.success(info); + } + + /** + * 修改业务渠道或客户来源 + */ + @PutMapping("/update") + public CommonResult updateChannel(@RequestBody DlBusinessChannel channel) { + if (ObjectUtil.isNotEmpty(channel.getUserIdList())) { + String userIds = channel.getUserIdList().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")); + channel.setUserIds(userIds); + }else if (ObjectUtil.isEmpty(channel.getUserIds())) { + channel.setUserIds(""); + } + return CommonResult.success(businessChannelService.updateById(channel)); + } + + /** + * 删除业务渠道或客户来源 + */ + @DeleteMapping("/delete/{id}") + public CommonResult deleteChannel(@PathVariable("id") Long id) { + return CommonResult.success(businessChannelService.removeById(id)); + } +} diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/entity/DlBusinessChannel.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/entity/DlBusinessChannel.java new file mode 100644 index 00000000..939125e2 --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/entity/DlBusinessChannel.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.business.entity; + +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.List; + +@Data +@TableName("inspection_business_channel") +public class DlBusinessChannel extends TenantBaseDO { + + private Integer id; // 主键ID + + private Integer pid; // 父ID + + private String name; // 名称 + + private Integer type; // 0-业务渠道 1-客户来源 + + private String userIds; // 绑定的用户ID + + private Integer sort; // 排序 + + private String systemCode; // 系统标识 + + // 子节点 + @TableField(exist = false) + private List children; + + @TableField(exist = false) + private List userIdList; +} diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/mapper/BusinessChannelMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/mapper/BusinessChannelMapper.java new file mode 100644 index 00000000..e5f3a394 --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/mapper/BusinessChannelMapper.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.business.mapper; + +import cn.iocoder.yudao.module.business.entity.DlBusinessChannel; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BusinessChannelMapper extends BaseMapper { + /** + * 获取业务渠道 和 客户来源 + * @param userId + * @return + */ + DlBusinessChannel getBusinessChannelByUserId(Long userId); +} diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/BusinessChannelService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/BusinessChannelService.java new file mode 100644 index 00000000..d5bcdc1b --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/BusinessChannelService.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.business.service; + +import cn.iocoder.yudao.module.business.entity.DlBusinessChannel; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +public interface BusinessChannelService extends IService { + /** + * 获取业务渠道和客户来源 + * + * @param userId 用户id + * @return + */ + Map getBusinessChannelByUserId(Long userId); +} diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/impl/BusinessChannelServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/impl/BusinessChannelServiceImpl.java new file mode 100644 index 00000000..f525cd7c --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/business/service/impl/BusinessChannelServiceImpl.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.business.service.impl; + +import cn.iocoder.yudao.module.business.entity.DlBusinessChannel; +import cn.iocoder.yudao.module.business.mapper.BusinessChannelMapper; +import cn.iocoder.yudao.module.business.service.BusinessChannelService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class BusinessChannelServiceImpl extends ServiceImpl implements BusinessChannelService { + + /** + * 获取业务渠道和客户来源 + * + * @param userId 用户id + * @return + */ + @Override + public Map getBusinessChannelByUserId(Long userId) { + Map map = new HashMap<>(); + // 客户来源 + DlBusinessChannel channel = baseMapper.getBusinessChannelByUserId(userId); + if (channel == null) { + return null; + } + map.put("channel", channel); + // 根据客户来源的父id查询业务渠道 + DlBusinessChannel business = getOne(Wrappers.lambdaQuery() + .eq(DlBusinessChannel::getId, channel.getPid())); + if (business != null) { + map.put("business", business); + } + return map; + } + +} diff --git a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java index fc7bdaf5..dd29a57b 100644 --- a/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java +++ b/dl-module-inspection/src/main/java/cn/iocoder/yudao/module/inspection/entity/InspectionBusinessChannel.java @@ -21,6 +21,8 @@ public class InspectionBusinessChannel extends TenantBaseDO { private Integer sort; // 排序 + private String systemCode; // 系统编码 + // 子节点 @TableField(exist = false) private List children;