修改私信请求
parent
277278a01e
commit
0951b60c1e
@ -0,0 +1,134 @@
|
||||
package com.baiye.job.dy_tool_member;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baiye.api.TiktokRequestClient;
|
||||
import com.baiye.api.request.TiktokPrivateLetterRequest;
|
||||
import com.baiye.api.response.TiktokPrivateLetterResponse;
|
||||
import com.baiye.core.constant.DefaultNumberConstants;
|
||||
import com.baiye.core.constant.TiktokRequestConstants;
|
||||
import com.baiye.dto.TiktokMemberDTO;
|
||||
import com.baiye.entity.TiktokEquipmentEntity;
|
||||
import com.baiye.entity.TiktokPrivateLetter;
|
||||
import com.baiye.entity.TiktokPrivateLetterParameter;
|
||||
import com.baiye.properties.TiktokProperties;
|
||||
import com.baiye.service.TiktokEquipmentService;
|
||||
import com.baiye.service.TiktokMemberService;
|
||||
import com.baiye.service.TiktokPrivateLetterParameterService;
|
||||
import com.baiye.service.TiktokPrivateLetterService;
|
||||
import com.dangdang.ddframe.job.api.ShardingContext;
|
||||
import com.dangdang.ddframe.job.api.simple.SimpleJob;
|
||||
import com.example.autoconfig.ElasticSimpleJob;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 此方法与私信方式类似
|
||||
* 获取不是好友的私信
|
||||
* @author Enzo
|
||||
* @date : 2022/9/30
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@ElasticSimpleJob(jobName = "tiktokNotFriendPrivateLetterJop", cron = "0 0/10 * * * ? ")
|
||||
public class TiktokNotFriendPrivateLetterJop implements SimpleJob {
|
||||
|
||||
|
||||
@Value("${snowflake.workerId}")
|
||||
private int workerId;
|
||||
|
||||
@Value("${snowflake.datacenterId}")
|
||||
private int datacenterId;
|
||||
|
||||
@Resource
|
||||
private TiktokProperties tiktokProperties;
|
||||
|
||||
@Resource
|
||||
private TiktokMemberService tiktokMemberService;
|
||||
|
||||
@Resource
|
||||
private TiktokEquipmentService tiktokEquipmentService;
|
||||
|
||||
private static TiktokNotFriendPrivateLetterJop tiktokNotFriendPrivateLetterJop;
|
||||
|
||||
@Resource
|
||||
private TiktokPrivateLetterService tiktokPrivateLetterService;
|
||||
|
||||
@Resource
|
||||
private TiktokPrivateLetterParameterService tiktokPrivateLetterParameterService;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
tiktokNotFriendPrivateLetterJop = this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(ShardingContext shardingContext) {
|
||||
List<TiktokPrivateLetter> list = Lists.newArrayList();
|
||||
List<TiktokEquipmentEntity> equipmentEntityList =
|
||||
tiktokNotFriendPrivateLetterJop.tiktokEquipmentService.findBySignInStatus(DefaultNumberConstants.ONE_NUMBER);
|
||||
if (CollUtil.isNotEmpty(equipmentEntityList)) {
|
||||
for (TiktokEquipmentEntity entity : equipmentEntityList) {
|
||||
// 好友私信请求
|
||||
TiktokPrivateLetterRequest privateLetterRequest = new TiktokPrivateLetterRequest();
|
||||
TiktokPrivateLetterRequest.PrivateLetterDTO letterDTO = privateLetterRequest.new PrivateLetterDTO();
|
||||
|
||||
String dyVendorId = entity.getDyVendorId();
|
||||
TiktokPrivateLetterParameter byVendorId = tiktokNotFriendPrivateLetterJop.tiktokPrivateLetterParameterService.
|
||||
selectByVendorId(entity.getDyVendorId(), DefaultNumberConstants.TWO_NUMBER);
|
||||
letterDTO.setMaxTime((long) DefaultNumberConstants.ZERO_NUMBER);
|
||||
if (ObjectUtil.isNotNull(byVendorId)
|
||||
&& ObjectUtil.isNotNull(byVendorId.getMaxTime())) {
|
||||
letterDTO.setMaxTime(byVendorId.getMaxTime());
|
||||
}
|
||||
letterDTO.setVendorId(dyVendorId);
|
||||
privateLetterRequest.setData(letterDTO);
|
||||
|
||||
// 构建请求
|
||||
TiktokPrivateLetterResponse notFriendResponse = TiktokRequestClient.createTiktokResponse
|
||||
(TiktokRequestConstants.TIK_TOK_GET_RECENT_STRANGER_MESSAGE, privateLetterRequest, tiktokProperties);
|
||||
if (ObjectUtil.isNotNull(notFriendResponse.getSuccess())
|
||||
&& Boolean.TRUE.equals(notFriendResponse.getSuccess())
|
||||
&& notFriendResponse.getStatus() == HttpStatus.OK.value()) {
|
||||
TiktokPrivateLetterResponse.PrivateLetterResponse responseData = notFriendResponse.getData();
|
||||
if (CollUtil.isNotEmpty(responseData.getConvList())) {
|
||||
// 解析数据
|
||||
TiktokPrivateLetterResponse.PrivateLetterResponse.TikTokMessageDTO tikTokMessageDTO
|
||||
= responseData.getConvList().get(DefaultNumberConstants.ZERO_NUMBER);
|
||||
for (TiktokPrivateLetterResponse.PrivateLetterResponse.
|
||||
TikTokMessageDTO.MessageDTO dto : tikTokMessageDTO.getMsgList()) {
|
||||
String text = dto.getText().getText();
|
||||
Long nextId = IdUtil.getSnowflake(workerId, datacenterId).nextId();
|
||||
TiktokMemberDTO tiktokMemberDTO = tiktokNotFriendPrivateLetterJop.tiktokMemberService.
|
||||
saveTiktokMemberByTiktok(String.valueOf(dto.getSenderId()), entity.getDyVendorId());
|
||||
// 构建实体
|
||||
TiktokPrivateLetter privateLetter = TiktokPrivateLetter.builder().id(nextId).
|
||||
senderId(dto.getSenderId()).receiverId
|
||||
(Long.parseLong(entity.getDyUserId())).msg(text).memberId
|
||||
(ObjectUtil.isNotNull(tiktokMemberDTO) ? Long.parseLong(tiktokMemberDTO.getId()) : nextId).
|
||||
tiktokId(dto.getSenderId()).status(DefaultNumberConstants.ONE_NUMBER).msgType(dto.getText().getType()).
|
||||
isRead(DefaultNumberConstants.ZERO_NUMBER).msgTime(dto.getTime()).build();
|
||||
// 发送消息
|
||||
tiktokNotFriendPrivateLetterJop.tiktokPrivateLetterService.sendMessage(tiktokMemberDTO, privateLetter);
|
||||
list.add(privateLetter);
|
||||
}
|
||||
Long maxTime = responseData.getMaxTime();
|
||||
// 修改发送时间
|
||||
tiktokNotFriendPrivateLetterJop.tiktokPrivateLetterParameterService.
|
||||
saveOrUpdateParameter(byVendorId, dyVendorId, maxTime, DefaultNumberConstants.TWO_NUMBER);
|
||||
// 批量保存私信内容
|
||||
tiktokNotFriendPrivateLetterJop.tiktokPrivateLetterService.batchInsertPrivateLetter(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.baiye.dao;
|
||||
|
||||
import com.baiye.entity.TiktokPrivateLetterParameter;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2022-10-10
|
||||
*/
|
||||
public interface TiktokPrivateLetterParameterMapper extends BaseMapper<TiktokPrivateLetterParameter> {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.baiye.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 抖音私信
|
||||
* @author Enzo
|
||||
* @date : 2022-10-10
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("tb_tiktok_private_letter_parameter")
|
||||
public class TiktokPrivateLetterParameter implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5094808793570870865L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
@ApiModelProperty(value = "ID")
|
||||
private Long id;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "第一次请求0 第二次为第一次请求")
|
||||
private Long maxTime;
|
||||
|
||||
@ApiModelProperty(value = "抖音设备id")
|
||||
private String dyVendorId;
|
||||
|
||||
@ApiModelProperty(value = "请求类型")
|
||||
private Integer type;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright 2019-2020 Zheng Jie
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baiye.mapstruct;
|
||||
|
||||
import com.baiye.core.base.BaseMapStruct;
|
||||
import com.baiye.dto.TiktokPrivateLetterDTO;
|
||||
import com.baiye.entity.TiktokPrivateLetter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
|
||||
/**
|
||||
* @author Zheng Jie
|
||||
* @date 2019-03-29
|
||||
*/
|
||||
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface MessageRecordMapStruct extends BaseMapStruct<TiktokPrivateLetterDTO, TiktokPrivateLetter> {
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.baiye.api.response;
|
||||
|
||||
import com.baiye.core.base.api.BaseTiktokResponse;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/8/24
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
public class TiktokSendMessageResponse extends
|
||||
BaseTiktokResponse<TiktokSendMessageResponse> implements Serializable {
|
||||
|
||||
|
||||
|
||||
private static final long serialVersionUID = 7515504688664430338L;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.baiye.service;
|
||||
|
||||
import com.baiye.entity.TiktokPrivateLetterParameter;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2022-10-10
|
||||
*/
|
||||
public interface TiktokPrivateLetterParameterService extends IService<TiktokPrivateLetterParameter> {
|
||||
|
||||
|
||||
/**
|
||||
* 查询请求时间
|
||||
* @param dyVendorId
|
||||
* @param num
|
||||
* @return
|
||||
*/
|
||||
TiktokPrivateLetterParameter selectByVendorId(String dyVendorId, Integer num);
|
||||
|
||||
/**
|
||||
* 修改请求参数
|
||||
*
|
||||
* @param byVendorId
|
||||
* @param dyVendorId
|
||||
* @param maxTime
|
||||
* @param num
|
||||
* @return
|
||||
*/
|
||||
Boolean saveOrUpdateParameter(TiktokPrivateLetterParameter byVendorId, String dyVendorId, Long maxTime, Integer num);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.baiye.service;
|
||||
|
||||
import com.baiye.core.base.api.Result;
|
||||
import com.baiye.dto.request.SendMessageRequestDTO;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/10/12
|
||||
*/
|
||||
public interface TiktokUserMessageService {
|
||||
|
||||
|
||||
/**
|
||||
* 发送私信
|
||||
* @param messageRequestDTO
|
||||
* @return
|
||||
*/
|
||||
Result<Object> sendMessage(SendMessageRequestDTO messageRequestDTO);
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.baiye.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baiye.core.constant.DefaultNumberConstants;
|
||||
import com.baiye.dao.TiktokPrivateLetterParameterMapper;
|
||||
import com.baiye.entity.TiktokPrivateLetterParameter;
|
||||
import com.baiye.service.TiktokPrivateLetterParameterService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2022-10-10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TiktokPrivateLetterParameterServiceImpl extends
|
||||
ServiceImpl<TiktokPrivateLetterParameterMapper, TiktokPrivateLetterParameter> implements TiktokPrivateLetterParameterService {
|
||||
|
||||
|
||||
@Override
|
||||
public TiktokPrivateLetterParameter selectByVendorId(String dyVendorId, Integer num) {
|
||||
return this.baseMapper.selectOne(new LambdaQueryWrapper<TiktokPrivateLetterParameter>().eq
|
||||
(TiktokPrivateLetterParameter::getDyVendorId, dyVendorId).eq(TiktokPrivateLetterParameter::getType, num));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean saveOrUpdateParameter(TiktokPrivateLetterParameter byVendorId, String dyVendorId, Long maxTime, Integer num) {
|
||||
if (ObjectUtil.isNull(byVendorId)) {
|
||||
byVendorId = new TiktokPrivateLetterParameter();
|
||||
byVendorId.setType(num);
|
||||
byVendorId.setMaxTime(maxTime);
|
||||
byVendorId.setDyVendorId(dyVendorId);
|
||||
return baseMapper.insert(byVendorId) > DefaultNumberConstants.ZERO_NUMBER;
|
||||
}
|
||||
|
||||
return this.update(new LambdaUpdateWrapper<TiktokPrivateLetterParameter>().eq
|
||||
(TiktokPrivateLetterParameter::getId, byVendorId.getId()).
|
||||
set(TiktokPrivateLetterParameter::getMaxTime, maxTime));
|
||||
}
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package com.baiye.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baiye.api.TiktokRequestClient;
|
||||
import com.baiye.api.request.TiktokSendMessageRequest;
|
||||
import com.baiye.api.response.TiktokOptCommentVideoResponse;
|
||||
import com.baiye.api.response.TiktokSendMessageResponse;
|
||||
import com.baiye.core.base.api.Result;
|
||||
import com.baiye.core.base.api.ResultCode;
|
||||
import com.baiye.core.constant.DefaultNumberConstants;
|
||||
import com.baiye.core.constant.TiktokRequestConstants;
|
||||
import com.baiye.dao.TiktokPrivateLetterMapper;
|
||||
import com.baiye.dto.TiktokMemberDTO;
|
||||
import com.baiye.dto.request.SendMessageRequestDTO;
|
||||
import com.baiye.entity.TiktokEquipmentEntity;
|
||||
import com.baiye.entity.TiktokPrivateLetter;
|
||||
import com.baiye.properties.TiktokProperties;
|
||||
import com.baiye.request.MessageRequest;
|
||||
import com.baiye.service.TiktokEquipmentService;
|
||||
import com.baiye.service.TiktokMemberService;
|
||||
import com.baiye.service.TiktokUserMessageService;
|
||||
import com.baomidou.mybatisplus.extension.api.R;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/10/12
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TiktokUserMessageServiceImpl implements TiktokUserMessageService {
|
||||
|
||||
@Value("${snowflake.workerId}")
|
||||
private int workerId;
|
||||
|
||||
@Value("${snowflake.datacenterId}")
|
||||
private int datacenterId;
|
||||
private final TiktokProperties tiktokProperties;
|
||||
|
||||
private final TiktokMemberService tiktokMemberService;
|
||||
|
||||
private final TiktokEquipmentService tiktokEquipmentService;
|
||||
|
||||
private final TiktokPrivateLetterMapper tiktokPrivateLetterMapper;
|
||||
|
||||
@Override
|
||||
public Result<Object> sendMessage(SendMessageRequestDTO messageRequestDTO) {
|
||||
TiktokSendMessageRequest request = new TiktokSendMessageRequest();
|
||||
TiktokSendMessageRequest.TiktokSendMessageDTO messageDTO = request.new TiktokSendMessageDTO();
|
||||
BeanUtil.copyProperties(messageRequestDTO, messageDTO);
|
||||
request.setData(messageDTO);
|
||||
// 构建参数
|
||||
TiktokSendMessageResponse response = TiktokRequestClient.createTiktokResponse
|
||||
(TiktokRequestConstants.TIK_TOK_SEND_MESSAGE, request, tiktokProperties);
|
||||
if (ObjectUtil.isNotNull(response.getSuccess())
|
||||
&& Boolean.TRUE.equals(response.getSuccess())) {
|
||||
if (response.getStatus() == HttpStatus.OK.value()) {
|
||||
Long nextId = IdUtil.getSnowflake
|
||||
(workerId, datacenterId).nextId();
|
||||
TiktokEquipmentEntity byDyVendorId
|
||||
= tiktokEquipmentService.findByDyVendorId(messageRequestDTO.getVendorId());
|
||||
TiktokMemberDTO tiktokMemberDTO = tiktokMemberService.saveTiktokMemberByTiktok
|
||||
(messageRequestDTO.getUserId(), messageRequestDTO.getVendorId());
|
||||
|
||||
// 构建实体
|
||||
TiktokPrivateLetter privateLetter =
|
||||
TiktokPrivateLetter.builder().id(nextId).senderId(Long.parseLong(byDyVendorId.getDyUserId())).
|
||||
receiverId(Long.parseLong(messageRequestDTO.getUserId())).
|
||||
msg(messageRequestDTO.getContent()).memberId(ObjectUtil.isNotNull(tiktokMemberDTO)
|
||||
? Long.parseLong(tiktokMemberDTO.getId()) : nextId).tiktokId(Long.parseLong(messageRequestDTO.getUserId())).status
|
||||
(DefaultNumberConstants.ONE_NUMBER).msgType(messageRequestDTO.getType()).
|
||||
isRead(DefaultNumberConstants.ZERO_NUMBER).msgTime(DateUtil.date().getTime()).build();
|
||||
tiktokPrivateLetterMapper.insert(privateLetter);
|
||||
return Result.success();
|
||||
}
|
||||
return Result.fail(StringUtils.isNotBlank
|
||||
(response.getMsg()) ? response.getMsg()
|
||||
: ResultCode.SEND_MESSAGE_FAILED.getMsg());
|
||||
}
|
||||
return Result.fail(StringUtils.isNotBlank
|
||||
(response.getMsg()) ? response.getMsg()
|
||||
: ResultCode.SEND_MESSAGE_FAILED.getMsg());
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.baiye.dao.TiktokPrivateLetterParameterMapper">
|
||||
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue