添加代码逻辑 修改转换方式

master
bynt 10 months ago
parent 4167aa9a01
commit b78aff5727

@ -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<String> {
public class BooleanStringConverter implements Converter<Boolean> {
@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<String> {
* @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<String> {
* @return
*/
@Override
public WriteCellData<?> convertToExcelData(WriteConverterContext<String> context) {
return new WriteCellData<>(Boolean.parseBoolean(context.getValue()) ? "是" : "否");
public WriteCellData<?> convertToExcelData(Boolean value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
return new WriteCellData<>(value.equals(Boolean.TRUE) ? "是" : "否");
}
}

@ -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<LocalDateTime> {
@Override
public Class<LocalDateTime> 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<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
return new WriteCellData<>(value.format(DateTimeFormatter.ofPattern(LocalDateTimeUtils.STRING_FORMATTER_YMD)));
}
}

@ -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<Integer> {
@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) ? "男" : "女");
}
}

@ -23,7 +23,7 @@ public class TripartiteController {
@PostMapping("/push/clue/{appKey}")
public R<String> 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");
}
}

@ -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;
}

@ -28,6 +28,7 @@ public class PushLinkDTO {
@Schema(title = "渠道标识")
private List<String> channelIdentifyingList;
@Schema(title = "渠道链接")
private String channelUrl;

@ -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<OceanEngineSourceMapper, OceanEngineSourceEntity> 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<OceanEngineSou
//===========原数据保存
OceanEngineSourceEntity oceanEngineSource = new OceanEngineSourceEntity();
oceanEngineSource.setUserId(userId);
oceanEngineSource.setContent(JSONUtil.toJsonStr(json));
oceanEngineSources.add(oceanEngineSource);
oceanEngineSource.setContent(JSONUtil.toJsonStr(json));
// 传递线索
String jsonStr = JSONUtil.toJsonStr(map);
// 查询所有分发员
QueueBalance<Long> 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<ClueDTO> 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();

@ -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<PushLinkMapper, PushL
.eq(PushLinkEntity::getCreateBy, currentUserId));
if (ObjectUtil.isNotNull(linkEntity)) throw new BadRequestException("渠道名称重复,请重新输入");
String appKey = AppUtils.getAppId();
while (true) {
PushLinkEntity entity = baseMapper.selectOne(new LambdaQueryWrapper<PushLinkEntity>().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<PushLinkEntity>().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<PushLinkMapper, PushL
tokenDto.setAuthorizeName(pushLinkDTO.getName());
baseUrl = oceanEngineService.save(tokenDto);
}
pushLinkEntity.setAppKey(appKey);
pushLinkEntity.setChannelUrl(baseUrl);
pushLinkEntity.setCompanyId(user.getWhichUserId());
pushLinkEntity.setStatus(DefaultNumberConstants.ONE_NUMBER);
@ -90,7 +92,9 @@ public class PushLinkServiceImpl extends ExtendServiceImpl<PushLinkMapper, PushL
@Transactional(rollbackFor = Exception.class)
public boolean update(PushLinkDTO pushLinkDTO) {
PushLinkEntity pushLinkEntity = PushLinkConverter.INSTANCE.dtoToPo(pushLinkDTO);
if (CollUtil.isNotEmpty(pushLinkDTO.getChannelIdentifyingList())){
pushLinkEntity.setChannelIdentifying(pushLinkDTO.getChannelIdentifyingList());
}
// 修改飞鱼状态
if (ObjectUtil.isNotNull(pushLinkDTO.getChannelType())
&& pushLinkDTO.getChannelType() == DefaultNumberConstants.ONE_NUMBER) {

@ -2,14 +2,9 @@ package com.baiye.modules.distribute.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baiye.common.excel.converters.BooleanStringConverter;
import com.baiye.common.excel.converters.CustomStringStringConverter;
import com.baiye.common.excel.converters.NidStringConverter;
import com.baiye.extend.mybatis.plus.converter.JsonStringArrayTypeHandler;
import com.baiye.common.excel.converters.*;
import com.baiye.modules.distribute.entity.ClueStageEntity;
import com.baiye.modules.distribute.entity.LabelOrganizeEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -23,12 +18,13 @@ public class ClueVO {
@Schema(title = "线索ID")
private String clueId;
@ExcelProperty(value = "是否有效", converter = BooleanStringConverter.class, index = 4)
@ExcelIgnore
// @ExcelProperty(value = "是否有效", converter = BooleanStringConverter.class, index = 7)
@Schema(title = "是否有效")
private Boolean isEffective;
@Schema(title = "手机号")
@ExcelProperty(value = "手机号",converter = NidStringConverter.class, index = 0)
@ExcelProperty(value = "手机号", converter = NidStringConverter.class, index = 0)
private String nid;
@Schema(title = "线索来源")
@ -67,7 +63,7 @@ public class ClueVO {
@Schema(title = "创建时间")
@ExcelProperty(value = "线索时间", index = 3)
@ExcelProperty(value = "线索时间", converter = LocalDateTimeConverter.class, index = 4)
private LocalDateTime createTime;
@ExcelIgnore
@ -98,15 +94,19 @@ public class ClueVO {
@Schema(title = "阶段信息")
List<ClueStageEntity> 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<String> channelIdentifying;
@ExcelIgnore
@Schema(title = "渠道类型渠道类型(1 手动创建 2文件上传 3飞鱼回传 4话单回传 5 api回传)")
private Integer channelType;

Loading…
Cancel
Save