From b78aff5727d5b6bd9d3e188d27507cb3710bf2cc Mon Sep 17 00:00:00 2001 From: bynt <13586541001@163.com> Date: Sat, 9 Dec 2023 15:16:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20=E4=BF=AE=E6=94=B9=E8=BD=AC=E6=8D=A2=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converters/BooleanStringConverter.java | 23 +++++------ .../converters/LocalDateTimeConverter.java | 41 +++++++++++++++++++ .../common/excel/converters/SexConverter.java | 35 ++++++++++++++++ .../controller/TripartiteController.java | 2 +- .../distribute/dto/CreateCustomDTO.java | 7 +++- .../modules/distribute/dto/PushLinkDTO.java | 1 + .../impl/OceanEngineClueServiceImpl.java | 40 +++++++++++++++--- .../service/impl/PushLinkServiceImpl.java | 20 +++++---- .../baiye/modules/distribute/vo/ClueVO.java | 18 ++++---- 9 files changed, 149 insertions(+), 38 deletions(-) create mode 100644 ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/LocalDateTimeConverter.java create mode 100644 ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/SexConverter.java diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java index bd2431a..0114b28 100644 --- a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/BooleanStringConverter.java @@ -1,29 +1,25 @@ package com.baiye.common.excel.converters; -import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; -import com.alibaba.excel.converters.WriteConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.data.WriteCellData; -import com.baiye.util.AESUtils; - -import java.util.Objects; +import com.alibaba.excel.metadata.property.ExcelContentProperty; /** * @author Enzo * @date : 2023/12/8 */ -public class BooleanStringConverter implements Converter { +public class BooleanStringConverter implements Converter { @Override public Class supportJavaTypeKey() { - return String.class; + return Boolean.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { - return CellDataTypeEnum.STRING; + return CellDataTypeEnum.BOOLEAN; } /** @@ -33,8 +29,8 @@ public class BooleanStringConverter implements Converter { * @return */ @Override - public String convertToJavaData(ReadConverterContext context) { - return context.getReadCellData().getStringValue().equals(Boolean.TRUE.toString()) ? "是" : "否"; + public Boolean convertToJavaData(ReadConverterContext context) { + return "是".equals(context.getReadCellData().getStringValue()) ? Boolean.TRUE : Boolean.FALSE; } /** @@ -43,8 +39,9 @@ public class BooleanStringConverter implements Converter { * @return */ @Override - public WriteCellData convertToExcelData(WriteConverterContext context) { - return new WriteCellData<>(Boolean.parseBoolean(context.getValue()) ? "是" : "否"); + public WriteCellData convertToExcelData(Boolean value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + return new WriteCellData<>(value.equals(Boolean.TRUE) ? "是" : "否"); } + } diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/LocalDateTimeConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/LocalDateTimeConverter.java new file mode 100644 index 0000000..1bbe543 --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/LocalDateTimeConverter.java @@ -0,0 +1,41 @@ +package com.baiye.common.excel.converters; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.baiye.util.LocalDateTimeUtils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author Enzo + * @date : 2023/12/9 + */ +public class LocalDateTimeConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return LocalDateTime.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public LocalDateTime convertToJavaData(ReadCellData readCellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return LocalDateTime.parse(readCellData.getStringValue(), DateTimeFormatter.ofPattern(LocalDateTimeUtils.STRING_FORMATTER_YMD_HMS)); + } + + @Override + public WriteCellData convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return new WriteCellData<>(value.format(DateTimeFormatter.ofPattern(LocalDateTimeUtils.STRING_FORMATTER_YMD))); + } +} diff --git a/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/SexConverter.java b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/SexConverter.java new file mode 100644 index 0000000..dcc232c --- /dev/null +++ b/ad-distribute-starters/ad-distribute-starter-easyexcel/src/main/java/com/baiye/common/excel/converters/SexConverter.java @@ -0,0 +1,35 @@ +package com.baiye.common.excel.converters; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * @author Enzo + * @date : 2023/12/9 + */ +public class SexConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return Integer.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Integer convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { + return "男".equals(cellData.getStringValue()) ? 1 : 0; + } + + + @Override + public WriteCellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return new WriteCellData<>(value.equals(1) ? "男" : "女"); + } +} diff --git a/admin/src/main/java/com/baiye/modules/distribute/controller/TripartiteController.java b/admin/src/main/java/com/baiye/modules/distribute/controller/TripartiteController.java index 7f3c6bc..5f4bed8 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/controller/TripartiteController.java +++ b/admin/src/main/java/com/baiye/modules/distribute/controller/TripartiteController.java @@ -23,7 +23,7 @@ public class TripartiteController { @PostMapping("/push/clue/{appKey}") public R pushClue(@PathVariable("appKey") String appKey, @RequestBody PushClueDTO dto) { return Boolean.TRUE.equals(tripartiteService.callbackByAppKeyAndNid - (appKey, dto)) ? R.ok("success") : R.failed("消息回传失败"); + (appKey, dto)) ? R.ok("success") : R.failed("message callback failed"); } } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java index 0efea97..15ab884 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/CreateCustomDTO.java @@ -3,7 +3,6 @@ package com.baiye.modules.distribute.dto; import com.baiye.validation.group.CreateGroup; import com.baiye.validation.group.UpdateGroup; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -13,10 +12,12 @@ import javax.validation.constraints.NotBlank; * @date 2023-12-6 */ @Data -@Builder public class CreateCustomDTO { + public CreateCustomDTO() { + } + @Schema(title = "客户名称") private String customName; @@ -31,4 +32,6 @@ public class CreateCustomDTO { @Schema(title = "渠道类型") private Integer channelType; + + } diff --git a/admin/src/main/java/com/baiye/modules/distribute/dto/PushLinkDTO.java b/admin/src/main/java/com/baiye/modules/distribute/dto/PushLinkDTO.java index fe26c49..c7ddb3d 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/dto/PushLinkDTO.java +++ b/admin/src/main/java/com/baiye/modules/distribute/dto/PushLinkDTO.java @@ -28,6 +28,7 @@ public class PushLinkDTO { @Schema(title = "渠道标识") private List channelIdentifyingList; + @Schema(title = "渠道链接") private String channelUrl; diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/OceanEngineClueServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/OceanEngineClueServiceImpl.java index a56fa55..fecb260 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/OceanEngineClueServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/OceanEngineClueServiceImpl.java @@ -1,6 +1,7 @@ package com.baiye.modules.distribute.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.http.HttpRequest; @@ -9,25 +10,29 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.UrlConstant; +import com.baiye.enums.ClueSourceEnum; import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl; import com.baiye.modules.distribute.dto.CallbackCustomDTO; +import com.baiye.modules.distribute.dto.ClueDTO; import com.baiye.modules.distribute.dto.OceanEngineResponseDTO; import com.baiye.modules.distribute.entity.OceanEngineSourceEntity; import com.baiye.modules.distribute.entity.OceanEngineToken; import com.baiye.modules.distribute.entity.PushLinkEntity; import com.baiye.modules.distribute.mapper.OceanEngineSourceMapper; -import com.baiye.modules.distribute.service.CustomService; -import com.baiye.modules.distribute.service.OceanEngineClueService; -import com.baiye.modules.distribute.service.OceanEngineService; -import com.baiye.modules.distribute.service.PushLinkService; +import com.baiye.modules.distribute.service.*; 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.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.ballcat.security.properties.SecurityProperties; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,17 +49,29 @@ import java.util.concurrent.CompletableFuture; @Slf4j public class OceanEngineClueServiceImpl extends ExtendServiceImpl implements OceanEngineClueService { + + @Value("${snowflake.workerId}") + private int workerId; + + @Value("${snowflake.datacenterId}") + private int datacenterId; + + private final ClueService clueService; + private final CustomService customService; private final SysUserService sysUserService; private final PushLinkService pushLinkService; + private final SecurityProperties securityProperties; private final OceanEngineService oceanEngineService; private final SysUserRoleService sysUserRoleService; + private final SysUserRolePromiseService sysUserRolePromiseService; + @Override public void getFeiYuSource(Date startTime, Date endTime) { @@ -209,13 +226,26 @@ public class OceanEngineClueServiceImpl extends ExtendServiceImpl balance = new QueueBalance<>(); Long distributeId = balance.chooseOne(userList); + SysUserRolePromise promise = sysUserRolePromiseService.queryIsShowByUserId(distributeId); + if (ObjectUtil.isNotNull(promise) && ObjectUtil.isNotNull + (promise.getIsAutoAudits()) && promise.getIsAutoAudits().equals(Boolean.TRUE)) { + List list = Lists.newArrayList(); + // 雪花算法id + Long clueId = IdUtil.getSnowflake(workerId, datacenterId).nextId(); + ClueDTO clueDTO = ClueDTO.builder().originName(ClueSourceEnum.STORE_DISTRIBUTION.getDescription()).clueId(clueId).remark + (jsonStr).nid(AESUtils.encrypt(phone, securityProperties.getPasswordSecretKey())).assignedBy + (userId).createBy(distributeId).isNewClue(Boolean.TRUE).build(); + list.add(clueDTO); + clueService.saveClueListByStoreInfo(list); + } + CallbackCustomDTO customDTO = CallbackCustomDTO.builder().channelType(DefaultNumberConstants.THREE_NUMBER).customNid (phone).customName(name).distributeId(distributeId).identifying(pushLinkEntity.getChannelIdentifying()).reportUserId(userId).remark (jsonStr).companyId(byId.getWhichUserId()).enterName(byId.getUsername()).build(); diff --git a/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushLinkServiceImpl.java b/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushLinkServiceImpl.java index 4d05d31..95073e0 100644 --- a/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushLinkServiceImpl.java +++ b/admin/src/main/java/com/baiye/modules/distribute/service/impl/PushLinkServiceImpl.java @@ -1,5 +1,6 @@ package com.baiye.modules.distribute.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.core.annotation.CacheDel; @@ -55,16 +56,17 @@ public class PushLinkServiceImpl extends ExtendServiceImpl().eq(PushLinkEntity::getAppKey, appKey)); - if (ObjectUtil.isNull(entity)) break; - appKey = AppUtils.getAppId(); - } // 大坝推送接口参数拼接 if (channelType == DefaultNumberConstants.ONE_NUMBER) { + String appKey = AppUtils.getAppId(); + while (true) { + PushLinkEntity entity = baseMapper.selectOne(new LambdaQueryWrapper().eq(PushLinkEntity::getAppKey, appKey)); + if (ObjectUtil.isNull(entity)) break; + appKey = AppUtils.getAppId(); + } pushLinkEntity.setChannelType(DefaultNumberConstants.ONE_NUMBER); baseUrl = baseUrl.concat(appKey).concat("?dataType=detail&encrypt=1"); + pushLinkEntity.setAppKey(appKey); } else if (channelType == DefaultNumberConstants.ZERO_NUMBER) { pushLinkEntity.setChannelType(DefaultNumberConstants.ZERO_NUMBER); OceanEngineTokenDto tokenDto = new OceanEngineTokenDto(); @@ -73,7 +75,7 @@ public class PushLinkServiceImpl extends ExtendServiceImpl clueStageEntities; + @ExcelProperty(value = "性别", converter = SexConverter.class, index = 3) @Schema(title = "性别(0-男,1-女)") private Integer sex; + @ExcelIgnore @Schema(title = "客户资料") private String customInformation; + @ExcelIgnore @Schema(title = "渠道标识") private List channelIdentifying; + @ExcelIgnore @Schema(title = "渠道类型渠道类型(1 手动创建 2文件上传 3飞鱼回传 4话单回传 5 api回传)") private Integer channelType;