|
|
|
@ -1,17 +1,20 @@
|
|
|
|
|
package com.hchbox.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.extra.emoji.EmojiUtil;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.hchbox.constant.DefaultNumberConstants;
|
|
|
|
|
import com.hchbox.constant.MessageConstants;
|
|
|
|
|
import com.hchbox.constant.TimeConstants;
|
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
|
import com.hchbox.config.DataSourceConfiguration;
|
|
|
|
|
import com.hchbox.constant.*;
|
|
|
|
|
import com.hchbox.dto.BathSendMessageDTO;
|
|
|
|
|
import com.hchbox.dto.SellerAccountDTO;
|
|
|
|
|
import com.hchbox.entity.master.TaskMessage;
|
|
|
|
|
import com.hchbox.entity.master.TaskMessageInfo;
|
|
|
|
|
import com.hchbox.entity.master.TopTrade;
|
|
|
|
|
import com.hchbox.enums.ResponseCode;
|
|
|
|
|
import com.hchbox.model.param.CommonResult;
|
|
|
|
|
import com.hchbox.repository.master.TaskMessageRepository;
|
|
|
|
@ -30,10 +33,12 @@ import com.hchbox.vo.taobao.TaskMessageSearchVo;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.data.domain.Page;
|
|
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
|
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
@ -50,6 +55,7 @@ import java.util.concurrent.CompletableFuture;
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class TaskMessageServiceImpl implements TaskMessageService {
|
|
|
|
|
|
|
|
|
|
private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
|
|
|
|
|
|
|
|
|
private final TaskMessageInfoService taskMessageInfoService;
|
|
|
|
|
|
|
|
|
@ -59,9 +65,13 @@ public class TaskMessageServiceImpl implements TaskMessageService {
|
|
|
|
|
|
|
|
|
|
private final BlacklistService blacklistService;
|
|
|
|
|
|
|
|
|
|
@Value("${hchbox.sub-tables}")
|
|
|
|
|
private Integer tableSum;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public CommonResult<String> createTaskSendMessage(SubmitSendMessageVo submitSendMessageVo, SellerAccountDTO sellerAccount) {
|
|
|
|
|
List<String> list = new ArrayList<>();
|
|
|
|
|
HashMap<String, Object> hashMap = new HashMap<>(DefaultNumberConstants.SIXTEEN_NUMBER);
|
|
|
|
@ -76,7 +86,7 @@ public class TaskMessageServiceImpl implements TaskMessageService {
|
|
|
|
|
sellerAccount.getParentId() != DefaultNumberConstants.ZERO_NUMBER ?
|
|
|
|
|
sellerAccount.getParentId() : sellerAccount.getId();
|
|
|
|
|
List<String> buyerNickByUserId = blacklistService.queryBuyerNickByUserId(accountId);
|
|
|
|
|
|
|
|
|
|
submitSendMessageVo.setMessageInfo(EmojiUtil.toUnicode(submitSendMessageVo.getMessageInfo()));
|
|
|
|
|
// 剔除黑名单
|
|
|
|
|
submitSendMessageVo.getBuyerInfoList().removeAll(buyerNickByUserId);
|
|
|
|
|
String templateStr = RemindTemplates.initShopTitle(submitSendMessageVo.getMessageInfo(), sellerAccount.getShopTitle());
|
|
|
|
@ -113,14 +123,40 @@ public class TaskMessageServiceImpl implements TaskMessageService {
|
|
|
|
|
message, submitSendMessageVo.getBuyerInfoList(),
|
|
|
|
|
submitSendMessageVo.getOrderTidList());
|
|
|
|
|
});
|
|
|
|
|
submitSendMessageVo.getBuyerInfoList().forEach(submitSendMessageVo.getMessageInfo().contains(DefaultNumberConstants.DOLLAR_DELIM) ? (info -> {
|
|
|
|
|
if (submitSendMessageVo.getMessageInfo().contains(RemindTemplates.BUYER_NICK)) {
|
|
|
|
|
list.add(RemindTemplates.prepareMsg(submitSendMessageVo.getMessageInfo(), info));
|
|
|
|
|
}
|
|
|
|
|
if (submitSendMessageVo.getMessageInfo().contains(RemindTemplates.SHOP_NAME)) {
|
|
|
|
|
list.add(RemindTemplates.prepareMsg(submitSendMessageVo.getMessageInfo(), sellerAccount.getShopTitle()));
|
|
|
|
|
}
|
|
|
|
|
}) : (info -> list.add(submitSendMessageVo.getMessageInfo())));
|
|
|
|
|
|
|
|
|
|
boolean collectorsFlag = CollectionUtils.isEmpty(submitSendMessageVo.getOrderTidList());
|
|
|
|
|
String messageInfo = submitSendMessageVo.getMessageInfo();
|
|
|
|
|
if (collectorsFlag) {
|
|
|
|
|
submitSendMessageVo.getBuyerInfoList().forEach
|
|
|
|
|
(messageInfo.contains(DefaultNumberConstants.DOLLAR_DELIM)
|
|
|
|
|
&& messageInfo.contains(StrUtil.DELIM_END) ? (info -> {
|
|
|
|
|
if (submitSendMessageVo.getMessageInfo().contains(RemindTemplates.BUYER_NICK)) {
|
|
|
|
|
list.add(RemindTemplates.prepareMsg(submitSendMessageVo.getMessageInfo(), info));
|
|
|
|
|
}
|
|
|
|
|
if (submitSendMessageVo.getMessageInfo().contains(RemindTemplates.SHOP_NAME)) {
|
|
|
|
|
list.add(RemindTemplates.prepareMsg(submitSendMessageVo.getMessageInfo(), sellerAccount.getShopTitle()));
|
|
|
|
|
}
|
|
|
|
|
}) : (info -> list.add(submitSendMessageVo.getMessageInfo())));
|
|
|
|
|
hashMap.put("sendList", list);
|
|
|
|
|
hashMap.put("buyerInfoList", submitSendMessageVo.getBuyerInfoList());
|
|
|
|
|
return new CommonResult<String>().success(hashMap);
|
|
|
|
|
}
|
|
|
|
|
// java代理小程序端将查询不到数据
|
|
|
|
|
String sellerNick =
|
|
|
|
|
sellerAccount.getNickname().contains(StrUtil.COLON)
|
|
|
|
|
? sellerAccount.getNickname().split(StrUtil.COLON)[DefaultNumberConstants.ZERO_NUMBER] :
|
|
|
|
|
sellerAccount.getNickname();
|
|
|
|
|
String stringBuilder =
|
|
|
|
|
SqlConstants.QUERY_TOP_TRADE_SQL +
|
|
|
|
|
TableConstants.TRADE
|
|
|
|
|
+ Math.abs(sellerNick.hashCode()) % tableSum
|
|
|
|
|
+ " where tid in (:tidList)";
|
|
|
|
|
|
|
|
|
|
Map<String, Object> parameters = new HashMap<>(DefaultNumberConstants.SIXTEEN_NUMBER);
|
|
|
|
|
parameters.put("tidList", submitSendMessageVo.getOrderTidList());
|
|
|
|
|
List<Map<String, Object>> maps = namedParameterJdbcTemplate.queryForList(stringBuilder, parameters);
|
|
|
|
|
List<TopTrade> topTrades = Convert.toList(TopTrade.class, maps);
|
|
|
|
|
topTrades.forEach(topTrade -> list.add(RemindTemplates.prepareMsg(submitSendMessageVo.getMessageInfo(), topTrade)));
|
|
|
|
|
|
|
|
|
|
hashMap.put("sendList", list);
|
|
|
|
|
hashMap.put("buyerInfoList", submitSendMessageVo.getBuyerInfoList());
|
|
|
|
@ -203,9 +239,9 @@ public class TaskMessageServiceImpl implements TaskMessageService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CommonResult<Map<String, String>> getRedisMessage(SellerAccountDTO sellerAccountDTO, Date date) {
|
|
|
|
|
DateTime dateTime = DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER);
|
|
|
|
|
DateTime dateTime = DateUtil.offsetMinute(date, -DefaultNumberConstants.FIVE_NUMBER);
|
|
|
|
|
String format = DateUtil.format(dateTime, TimeConstants.YYYY_MM_DD_HH);
|
|
|
|
|
int minuteInt = (DateUtil.minute(dateTime) / DefaultNumberConstants.TEN_NUMBER) * DefaultNumberConstants.TEN_NUMBER;
|
|
|
|
|
int minuteInt = (DateUtil.minute(dateTime) / DefaultNumberConstants.FIVE_NUMBER) * DefaultNumberConstants.FIVE_NUMBER;
|
|
|
|
|
// 拼接参数
|
|
|
|
|
String concat = sellerAccountDTO.getId().toString()
|
|
|
|
|
.concat(StrUtil.DASHED)
|
|
|
|
|