From 131ecaed5d8df7c0febc18db8aebfb60e0076699 Mon Sep 17 00:00:00 2001 From: yqy Date: Thu, 7 Dec 2023 19:00:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E5=8F=91=E5=91=98=E5=88=86=E5=8F=91?= =?UTF-8?q?=E4=BF=AE=E6=94=B9(=E5=90=88=E4=BB=A3=E7=A0=81,=E6=9C=AA?= =?UTF-8?q?=E6=B5=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baiye/validation/group/SubmitGroup.java | 7 ++ .../controller/CustomController.java | 28 +---- .../distribute/dto/CallbackCustomDTO.java | 4 +- .../distribute/dto/ChangeCustomDTO.java | 24 ++++- .../baiye/modules/distribute/dto/ClueDTO.java | 41 +++++-- .../modules/distribute/dto/CustomDTO.java | 19 +++- .../modules/distribute/entity/ClueEntity.java | 40 ++++--- .../distribute/entity/CustomEntity.java | 10 +- .../distribute/service/CustomService.java | 15 +-- .../service/impl/CustomServiceImpl.java | 101 +++++++++++------- .../impl/OceanEngineClueServiceImpl.java | 2 +- .../service/impl/TripartiteServiceImpl.java | 2 +- 12 files changed, 186 insertions(+), 107 deletions(-) create mode 100644 ad-distribute-common/common-core/src/main/java/com/baiye/validation/group/SubmitGroup.java diff --git a/ad-distribute-common/common-core/src/main/java/com/baiye/validation/group/SubmitGroup.java b/ad-distribute-common/common-core/src/main/java/com/baiye/validation/group/SubmitGroup.java new file mode 100644 index 0000000..07964ee --- /dev/null +++ b/ad-distribute-common/common-core/src/main/java/com/baiye/validation/group/SubmitGroup.java @@ -0,0 +1,7 @@ +package com.baiye.validation.group; + +/** + * Validation Group,提交时校验 + */ +public interface SubmitGroup { +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java index f431f85..bbab24f 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/CustomController.java @@ -21,6 +21,7 @@ import com.baiye.security.util.SecurityUtils; import com.baiye.system.checker.AdminUserChecker; import com.baiye.system.service.SysUserService; import com.baiye.validation.group.CreateGroup; +import com.baiye.validation.group.SubmitGroup; import com.baiye.validation.group.UpdateGroup; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -73,20 +74,12 @@ public class CustomController { return customService.update(customDTO) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改失败"); } - @GetMapping("/details") @Operation(summary = "ID查询详情") public R getClueDetails(@RequestParam("id") Long id) { return R.ok(customService.details(id)); } - - /** - * 删除角色 - * - * @param id id - * @return 结果信息 - */ @DeleteMapping("/{id}") @DeleteOperationLogging(msg = "删除表单信息") @Operation(summary = "通过id删除系统角色", description = "通过id删除系统角色") @@ -95,16 +88,10 @@ public class CustomController { return Boolean.TRUE.equals(result) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "删除表单失败"); } - /** - * 删除角色 - * - * @param dto - * @return 结果信息 - */ @PostMapping("/audit") @Operation(summary = "审核表单") - public R audit(@Validated({UpdateGroup.class}) @RequestBody ChangeCustomDTO dto) { - Boolean result = customService.auditFormById(dto); + public R audit(@Validated({SubmitGroup.class}) @RequestBody CustomDTO customDTO) { + Boolean result = customService.auditFormById(customDTO); return Boolean.TRUE.equals(result) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "审核失败"); } @@ -123,15 +110,8 @@ public class CustomController { - - /** - * 表单重审 - * - * @param dto - * @return 结果信息 - */ @PostMapping("/reAudit") - @Operation(summary = "审核表单") + @Operation(summary = "表单重审") public R reAudit(@Validated({UpdateGroup.class}) @RequestBody ChangeCustomDTO dto) { Boolean result = customService.reAuditFormById(dto); return Boolean.TRUE.equals(result) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "审核失败"); diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java index 7d3b169..e4cb087 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CallbackCustomDTO.java @@ -3,6 +3,8 @@ package com.baiye.modules.distribute.dto; import lombok.Builder; import lombok.Data; +import java.util.List; + /** * @author Enzo * @date : 2023/12/7 @@ -27,6 +29,6 @@ public class CallbackCustomDTO { private Long distributeId; - private String identifying; + private List identifying; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java index 46d87f4..3aa14e9 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/ChangeCustomDTO.java @@ -1,19 +1,33 @@ package com.baiye.modules.distribute.dto; +import com.baiye.validation.group.SubmitGroup; import lombok.Data; -/** - * @author Enzo - * @date - */ +import javax.validation.constraints.NotNull; +import java.util.List; + @Data public class ChangeCustomDTO { + /** + * 客户ID + */ + @NotNull(message = "ID不能为空", groups = { SubmitGroup.class }) private Long customId; + /** + * 状态: 0-地理分发 1-基础分发 2-复审 + */ + @NotNull(message = "状态不能为空", groups = { SubmitGroup.class }) private Integer status; + /** + * 复审员用户ID + */ private Long reviewUserId; - + /** + * 业务员用户ID + */ + private List salesmanUserIdList; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java index faa4831..6a85f26 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/ClueDTO.java @@ -1,7 +1,9 @@ package com.baiye.modules.distribute.dto; +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; import com.baiye.modules.distribute.entity.LabelEntity; import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; @@ -11,10 +13,6 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import java.util.List; -/** - * @Author YQY - * @Date 2023/8/10 - */ @Data @Builder @AllArgsConstructor @@ -60,16 +58,45 @@ public class ClueDTO { @Schema(title = "资源线索名称") private String clueStageName; - @Schema(title = "创建者") private Long createBy; @Schema(title = "资源线索ID") private Boolean isNewClue; - - @Schema(title = "资源标签集合") private List clueLabelList; + @Schema(title = "公司管理员用户ID") + private Long companyId; + + @Schema(title = "性别(0-男,1-女)") + private Integer sex; + + @Schema(title = "客户资料") + private String customInformation; + + @TableField(value = "channel_identifying", typeHandler = JsonStringArrayTypeHandler.class) + @Schema(title = "渠道标识") + private List channelIdentifying; + + @Schema(title = "渠道类型渠道类型(1 手动创建 2文件上传 3飞鱼回传 4话单回传 5 api回传)") + private Integer channelType; + + public ClueDTO(Long clueId, String originName, String nid, String remark, String otherClue, Long assignedBy, String assignedName, Long createBy, Boolean isNewClue, Long companyId, Integer sex, String customInformation, List channelIdentifying, Integer channelType) { + this.clueId = clueId; + this.originName = originName; + this.nid = nid; + this.remark = remark; + this.otherClue = otherClue; + this.assignedBy = assignedBy; + this.assignedName = assignedName; + this.createBy = createBy; + this.isNewClue = isNewClue; + this.companyId = companyId; + this.sex = sex; + this.customInformation = customInformation; + this.channelIdentifying = channelIdentifying; + this.channelType = channelType; + } } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java index bc2f7ce..188fab7 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CustomDTO.java @@ -2,6 +2,7 @@ package com.baiye.modules.distribute.dto; import com.baiye.modules.distribute.entity.CustomStoreEntity; import com.baiye.validation.group.CreateGroup; +import com.baiye.validation.group.SubmitGroup; import com.baiye.validation.group.UpdateGroup; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -14,7 +15,7 @@ import java.util.List; public class CustomDTO { @Schema(title = "ID") - @NotNull(message = "ID不能为空", groups = { UpdateGroup.class }) + @NotNull(message = "ID不能为空", groups = { UpdateGroup.class, SubmitGroup.class }) private Long customId; @Schema(title = "客户名称") @@ -60,12 +61,28 @@ public class CustomDTO { @Schema(title = "创建人") private Long createBy; + @Schema(title = "客户资料") + private String customInformation; + @Schema(title = "渠道类型(1 手动创建 2文件上传 3飞鱼回传 4话单回传 5 api回传)") private Integer channelType; @Schema(title = "渠道名称") private String channelName; + @Schema(title = "复审员id") + private Long reviewUserId; + @Schema(title = "分发员id") private Long distributorId; + + @Schema(title = "性别(0-男,1-女)") + private Integer sex; + + @Schema(title = "业务员用户ID") + private List salesmanUserIdList; + + @Schema(title = "分发员分发时状态:0-地理分发 1-基础分发 2-复审") + @NotNull(message = "状态不能为空", groups = { SubmitGroup.class }) + private Integer status; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java index 35aab25..42e3e3d 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/ClueEntity.java @@ -2,14 +2,17 @@ package com.baiye.modules.distribute.entity; import com.baiye.entity.LogicDeletedBaseEntity; import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; import com.baiye.validation.group.UpdateGroup; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import javax.validation.constraints.NotNull; +import java.util.List; @Getter @Setter @@ -41,33 +44,46 @@ public class ClueEntity extends LogicDeletedBaseEntity { @Schema(title = "记录ID") private Long clueRecordId; + @Schema(title = "其它线索(jsonStr格式)") private String otherClue; @Schema(title = "分配人用户ID") private Long assignedBy; - @Schema(title = "资源标签") - private String clueLabel; - - @Schema(title = "资源标签名称") - private String clueLabelName; - @Schema(title = "分配人用户名") private String assignedName; - @Schema(title = "分发员id") - private Long distributorId; + @Schema(title = "资源标签关联ID") + private String clueLabel; - @Schema(title = "资源线索ID") + @Schema(title = "资源所打标签信息(jsonStr格式)") + private String clueLabelName; + + @Schema(title = "资源阶段关联ID") private Long clueStageId; + @Schema(title = "资源所打的阶段名称") + private String clueStageName; + @Schema(title = "资源线索ID") private Boolean isNewClue; - @Schema(title = "资源线索名称") - private String clueStageName; - @Schema(title = "太空猫传递的线索ID") private Long variable; + @Schema(title = "公司管理员用户ID") + private Long companyId; + + @Schema(title = "性别(0-男,1-女)") + private Integer sex; + + @Schema(title = "客户资料") + private String customInformation; + + @TableField(value = "channel_identifying", typeHandler = JsonStringArrayTypeHandler.class) + @Schema(title = "渠道标识") + private List channelIdentifying; + + @Schema(title = "渠道类型渠道类型(1 手动创建 2文件上传 3飞鱼回传 4话单回传 5 api回传)") + private Integer channelType; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java index 65d9505..ab16197 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java +++ b/admin/src/main/java/com/baiye/modules/distribute/entity/CustomEntity.java @@ -2,8 +2,10 @@ package com.baiye.modules.distribute.entity; import com.baiye.entity.BaseEntity; import com.baiye.extend.mybatis.plus.alias.TableAlias; +import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler; import com.baiye.validation.group.CreateGroup; import com.baiye.validation.group.UpdateGroup; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.v3.oas.annotations.media.Schema; @@ -13,6 +15,7 @@ import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; /** * @author Enzo @@ -105,6 +108,11 @@ public class CustomEntity extends BaseEntity { @Schema(title = "渠道名称") private String channelName; + @TableField(value = "channel_identifying", typeHandler = JsonStringArrayTypeHandler.class) @Schema(title = "渠道标识") - private String channelIdentifying; + private List channelIdentifying; + + @TableField(value = "salesman_user_id", typeHandler = JsonStringArrayTypeHandler.class) + @Schema(title = "业务员ID集合") + private List salesmanUserId; } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java b/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java index 75b552f..ec6f03b 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/CustomService.java @@ -17,23 +17,16 @@ public interface CustomService extends ExtendService { /** * 分页查询数据 - * @param pageParam - * @param qo - * @return */ PageResult queryPage(PageParam pageParam, CustomQo qo); /** * 新增 - * @param customDTO - * @return */ boolean add(CustomDTO customDTO); /** * 修改信息 - * @param customDTO - * @return */ boolean update(CustomDTO customDTO); @@ -45,23 +38,17 @@ public interface CustomService extends ExtendService { /** * 删除表单 - * @param id - * @return */ Boolean deleteApprovalFormById(Long id); /** * 审批表单 - * @param dto - * @return */ - Boolean auditFormById(ChangeCustomDTO dto); + Boolean auditFormById(CustomDTO customDTO); /** * 重新审核操作 - * @param dto - * @return */ Boolean reAuditFormById(ChangeCustomDTO dto); diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java index 78450a8..c357cc8 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/CustomServiceImpl.java @@ -30,6 +30,7 @@ import com.baiye.system.constant.LetterConst; import com.baiye.system.enums.RoleCodeEnum; import com.baiye.system.model.entity.SysUser; import com.baiye.system.service.SysUserRoleService; +import com.baiye.system.model.entity.SysUser; import com.baiye.system.service.SysUserService; import com.baiye.util.AESUtils; import com.baiye.utils.SerialCode; @@ -158,50 +159,71 @@ public class CustomServiceImpl extends ExtendServiceImpl salesmanUserIdList = customDTO.getSalesmanUserIdList(); + Long reviewUserId = customDTO.getReviewUserId(); + Long currentUserId = SecurityUtils.getCurrentUserId(); + CustomEntity updateCustomEntity = CustomConverter.INSTANCE.dtoToPo(customDTO); + + List list = Lists.newArrayList(); + CustomEntity customEntity = baseMapper.selectById(customId); if (ObjectUtil.isNotNull(customEntity)) { - if (ObjectUtil.isNotNull(status) && status == 0) { - if (ObjectUtil.isNull(dto.getReviewUserId())) { - throw new BadRequestException("复审员不能为空!"); - } - customEntity.setType(3); - customEntity.setReviewUserId(dto.getReviewUserId()); - return SqlHelper.retBool(baseMapper.updateById(customEntity)); - } - Gson gson = new Gson(); - AddressDTO address = new AddressDTO(); - List list = Lists.newArrayList(); - BeanUtils.copyProperties(customEntity, address); - address.setCustomerName(customEntity.getCustomName()); - String otherClue = gson.toJson(address); - List customStores = customStoreService.selectListByCustomId(id); - if (CollUtil.isNotEmpty(customStores)) { - for (CustomStoreEntity store : customStores) { - // 雪花算法id - Long clueId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); - StoreUserDTO entity = storeUserService.findUserIdByStoreId(store.getStoreId()); - if (ObjectUtil.isNotNull(entity) && ObjectUtil.isNotNull(entity.getUserId())) { - // 扣减余额 - Boolean result = sysUserService.deductionQuantity(entity.getUserId(), entity.getStoreName()); - if (Boolean.TRUE.equals(result)) { - ClueDTO clueDTO = ClueDTO.builder().originName(ClueSourceEnum.STORE_DISTRIBUTION.getDescription()).clueId(clueId).remark - (customEntity.getRemark()).nid(AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey())).assignedBy - (entity.getUserId()).createBy(customEntity.getCompanyId()).assignedName(store.getStoreName()).otherClue(otherClue).isNewClue(Boolean.TRUE).build(); - list.add(clueDTO); + String phone = AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey()); + Long companyId = customEntity.getCompanyId(); + if (status == 0) { + Gson gson = new Gson(); + AddressDTO address = new AddressDTO(); + BeanUtils.copyProperties(customEntity, address); + address.setCustomerName(customEntity.getCustomName()); + String otherClue = gson.toJson(address); + List customStores = customStoreService.selectListByCustomId(customId); + if (CollUtil.isNotEmpty(customStores)) { + for (CustomStoreEntity store : customStores) { + Long clueId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + StoreUserDTO entity = storeUserService.findUserIdByStoreId(store.getStoreId()); + if (ObjectUtil.isNotNull(entity) && ObjectUtil.isNotNull(entity.getUserId())) { + String username = sysUserService.findById(entity.getUserId()).getUsername(); + // 扣减余额 + Boolean result = sysUserService.deductionQuantity(entity.getUserId(), entity.getStoreName()); + if (Boolean.TRUE.equals(result)) { + ClueDTO clueDTO = new ClueDTO(clueId, ClueSourceEnum.STORE_DISTRIBUTION.getDescription(), phone, updateCustomEntity.getRemark(), + otherClue, entity.getUserId(), username, currentUserId, Boolean.TRUE, companyId, updateCustomEntity.getSex(), + customEntity.getCustomInformation(), customEntity.getChannelIdentifying(), customEntity.getChannelType()); + list.add(clueDTO); + } } } } - if (CollUtil.isNotEmpty(list)) { - // 扣减数量 - customEntity.setEnrollStatus(2); - clueService.saveClueListByStoreInfo(list); - customEntity.setDistributeTime(DateUtil.date()); - customEntity.setUpdateTime(LocalDateTime.now()); - return SqlHelper.retBool(baseMapper.updateById(customEntity)); + } else if (status == 1) { + if (CollUtil.isEmpty(salesmanUserIdList)) throw new BadRequestException("下发人员不能为空!"); + Map> listMap = sysUserService.listByUserIds(salesmanUserIdList).stream().collect(Collectors.groupingBy(SysUser::getUserId)); + for (Long userId : salesmanUserIdList) { + String username = listMap.get(userId).get(0).getUsername(); + // 扣减余额 + Boolean result = sysUserService.deductionQuantity(userId, null); + if (Boolean.TRUE.equals(result)) { + Long clueId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + ClueDTO clueDTO = new ClueDTO(clueId, customEntity.getChannelName(), phone, updateCustomEntity.getRemark(), null, userId, + username, currentUserId, Boolean.TRUE, companyId, updateCustomEntity.getSex(), customEntity.getCustomInformation(), + customEntity.getChannelIdentifying(), customEntity.getChannelType()); + list.add(clueDTO); + } } + } else { + if (reviewUserId != null) throw new BadRequestException("复审员不能为空!"); + updateCustomEntity.setType(3); + updateCustomEntity.setReviewUserId(customDTO.getReviewUserId()); + return SqlHelper.retBool(baseMapper.updateById(updateCustomEntity)); + } + // 扣减数量,插入资源 + if (CollUtil.isNotEmpty(list)) { + updateCustomEntity.setEnrollStatus(2); + clueService.saveClueListByStoreInfo(list); + updateCustomEntity.setDistributeTime(DateUtil.date()); + updateCustomEntity.setUpdateTime(LocalDateTime.now()); + return SqlHelper.retBool(baseMapper.updateById(updateCustomEntity)); } } return Boolean.FALSE; @@ -279,7 +301,6 @@ public class CustomServiceImpl extends ExtendServiceImpl balance = new QueueBalance<>(); Long distributeId = balance.chooseOne(userList); CallbackCustomDTO customDTO = CallbackCustomDTO.builder().channelType(DefaultNumberConstants.THREE_NUMBER).customNid - (phone).customName(name).distributeId(distributeId).identifying(JSONUtil.toJsonStr(pushLinkEntity.getChannelIdentifying())).reportUserId(userId).remark + (phone).customName(name).distributeId(distributeId).identifying(pushLinkEntity.getChannelIdentifying()).reportUserId(userId).remark (jsonStr).companyId(byId.getWhichUserId()).enterName(byId.getUsername()).build(); dtoList.add(customDTO); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/TripartiteServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/TripartiteServiceImpl.java index 096969d..788028b 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/TripartiteServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/TripartiteServiceImpl.java @@ -114,7 +114,7 @@ public class TripartiteServiceImpl implements TripartiteService { } SysUser byId = sysUserService.findById(reportUserId); CallbackCustomDTO customDTO = CallbackCustomDTO.builder().channelType(DefaultNumberConstants.FOUR_NUMBER).customNid - (phone).distributeId(distributeId).identifying(JSONUtil.toJsonStr(channelIdentifying)).reportUserId(reportUserId).remark(remark).companyId + (phone).distributeId(distributeId).identifying(channelIdentifying).reportUserId(reportUserId).remark(remark).companyId (byId.getWhichUserId()).enterName(byId.getUsername()).build(); // 插入资源表