diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java new file mode 100644 index 0000000..6a103eb --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/ModelCallbackController.java @@ -0,0 +1,35 @@ +package com.baiye.modules.distribute.controller; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; +import com.baiye.modules.distribute.dto.PushClueDTO; +import com.baiye.modules.distribute.service.BuildModelService; +import com.baiye.modules.distribute.service.TripartiteService; +import com.baiye.result.R; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +/** + * @author Enzo + * @date 2023-12-6 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/v1/build") +public class ModelCallbackController { + + private final BuildModelService buildModelService; + + /** + * 推送资源 + */ + @PostMapping("/model/callback") + public R pushClue( @RequestBody String body) { + log.info("=============== the body {} ==============", JSONUtil.toJsonStr(body)); + PushClueDTO clueDTO = BeanUtil.toBean(body, PushClueDTO.class); + return Boolean.TRUE.equals(buildModelService.callbackByNid(clueDTO)) ? R.ok("success") : R.failed("message callback failed"); + } + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java index 22066df..d999192 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/PushClueDTO.java @@ -2,6 +2,8 @@ package com.baiye.modules.distribute.dto; import lombok.Data; +import java.util.Map; + /** * @author Enzo * @date 2023-12-6 @@ -37,5 +39,8 @@ public class PushClueDTO { private String empClientTypeName; + private Map clientVariables; + + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/BuildModelService.java b/admin/src/main/java/com/baiye/modules/distribute/service/BuildModelService.java new file mode 100644 index 0000000..9546e56 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/service/BuildModelService.java @@ -0,0 +1,18 @@ +package com.baiye.modules.distribute.service; + +import com.baiye.modules.distribute.dto.PushClueDTO; + +/** + * @author Enzo + * @date 2023-12-6 + */ +public interface BuildModelService { + + + /** + * 保存信息 + * @param body + * @return + */ + Boolean callbackByNid(PushClueDTO body); +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/BuildModelServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/BuildModelServiceImpl.java new file mode 100644 index 0000000..c010dc0 --- /dev/null +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/BuildModelServiceImpl.java @@ -0,0 +1,82 @@ +package com.baiye.modules.distribute.service.impl; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.enums.ClueSourceEnum; +import com.baiye.modules.distribute.dto.CallbackCustomDTO; +import com.baiye.modules.distribute.dto.ClueDTO; +import com.baiye.modules.distribute.dto.PushClueDTO; +import com.baiye.modules.distribute.entity.PushLinkEntity; +import com.baiye.modules.distribute.service.*; +import com.baiye.notify.model.entity.Announcement; +import com.baiye.polling.QueueBalance; +import com.baiye.system.enums.RoleCodeEnum; +import com.baiye.system.model.entity.SysUser; +import com.baiye.system.model.entity.SysUserRolePromise; +import com.baiye.system.service.SysUserRolePromiseService; +import com.baiye.system.service.SysUserRoleService; +import com.baiye.system.service.SysUserService; +import com.baiye.util.AESUtils; +import com.baiye.util.DecryptPnoUtil; +import com.baiye.util.RedisUtils; +import com.google.common.collect.Lists; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.ballcat.security.properties.SecurityProperties; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * @author Enzo + * @date : 2023/12/6 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class BuildModelServiceImpl implements BuildModelService { + + + @Value("${snowflake.workerId}") + private int workerId; + + @Value("${snowflake.datacenterId}") + private int datacenterId; + + + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean callbackByNid(PushClueDTO dto) { + String recId = dto.getRecId(); + String called = dto.getCalled(); + String remark = dto.getRemark(); + String phone = CharSequenceUtil.EMPTY; + + String typeName = dto.getEmpClientTypeName(); + if (StringUtils.isNotBlank(dto.getMobile())) { + phone = Base64.decodeStr(dto.getMobile()); + } + // 格式校验 + if (StringUtils.isNotBlank(called) && StringUtils.isNotBlank(typeName) + && Announcement.TABLE_ALIAS.equalsIgnoreCase(typeName)) { + phone = called.length() > DefaultNumberConstants.ELEVEN_NUMBER + ? DecryptPnoUtil.decryptPno(called) : called; + } + + if (StringUtils.isNotBlank(phone) ) { + + } + return Boolean.TRUE; + } + + +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java index ed91345..8c9586a 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/ClueServiceImpl.java @@ -122,9 +122,12 @@ public class ClueServiceImpl extends ExtendServiceImpl i // // 手机号隐藏中间4位 String decryptNid = AESUtils.decrypt(record.getNid(), securityProperties.getPasswordSecretKey()); if (StringUtils.isNotBlank(decryptNid)) { - // StringBuilder stringBuilder = new StringBuilder(decryptNid); - // String nid = stringBuilder.replace(3, 7, "****").toString(); record.setNid(decryptNid); + if (ObjectUtil.isNotNull(qo.getSalesmanType()) && + qo.getSalesmanType() > DefaultNumberConstants.ONE_NUMBER && + qo.getSalesmanType() < DefaultNumberConstants.FOUR_NUMBER){ + record.setNid(decryptNid.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")); + } } else { record.setNid(""); } diff --git a/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java b/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java index e00b157..8beb62f 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/vo/ClueVO.java @@ -56,7 +56,7 @@ public class ClueVO { private String clueTime; @Schema(title = "资源标签") - @ExcelProperty(value = "资源标签", index = 5) + @ExcelProperty(value = "资源标签", index = 6) private String clueLabel; @ExcelIgnore @@ -65,7 +65,7 @@ public class ClueVO { @Schema(title = "创建时间") - @ExcelProperty(value = "线索时间", converter = LocalDateTimeConverter.class, index = 4) + @ExcelProperty(value = "线索时间", converter = LocalDateTimeConverter.class, index = 5) private LocalDateTime createTime; @ExcelIgnore @@ -80,7 +80,7 @@ public class ClueVO { @Schema(title = "资源线索名称") private String clueStageName; - @ExcelProperty(value = "资源标签集合", converter = CustomStringStringConverter.class, index = 6) + @ExcelProperty(value = "资源标签集合", converter = CustomStringStringConverter.class, index = 7) @Schema(title = "资源标签集合") private List clueLabelList; @@ -96,12 +96,12 @@ public class ClueVO { @Schema(title = "阶段信息") List clueStageEntities; - @ExcelProperty(value = "性别", converter = SexConverter.class, index = 3) + @ExcelProperty(value = "性别", converter = SexConverter.class, index = 4) @Schema(title = "性别(0-男,1-女)") private Integer sex; - @ExcelIgnore @Schema(title = "客户资料") + @ExcelProperty(value = "客户资料", index = 3) private String customInformation; @ExcelIgnore