修改自动发送保存逻辑 修改自动发送bug

master
bynt 3 years ago
parent 72ca9d738b
commit 8002ae79b9

@ -48,7 +48,7 @@ public class SubmitSendMessageVo {
@ApiModelProperty(value = "统计结束时间")
private Date statEndTime;
@NotEmpty(message = "买家信息不能为空")
@ApiModelProperty(value = "买家信息列表")
private List<String> buyerInfoList;

@ -38,7 +38,9 @@ public class AppConfigController {
if (account == null) {
return new CommonResult<String>().accountException();
}
return appSettingService.createAppSetting(account, vo);
Long userId = account.getParentId() != DefaultNumberConstants.ZERO_NUMBER ?
account.getParentId() : account.getId();
return appSettingService.createAppSetting(userId, account, vo);
}
@PostMapping("/update")

@ -166,7 +166,7 @@ public class SlaverTest {
@Test
public void openMessage(){
topTradeService.findByTid(2148563198943032631L);
}
@Test

@ -14,10 +14,11 @@ public interface AppSettingService {
/**
*
* @return
* @param userId
* @param account
* @param vo
*/
CommonResult<String> createAppSetting(SellerAccountDTO account, AppConfigVo vo);
CommonResult<String> createAppSetting(Long userId, SellerAccountDTO account, AppConfigVo vo);
/**
*

@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.emoji.EmojiUtil;
import cn.hutool.json.JSONUtil;
import com.google.common.base.Joiner;
import com.hchbox.annotaion.RedisLock;
import com.hchbox.constant.DefaultNumberConstants;
import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.AppSetting;
@ -33,14 +34,14 @@ public class AppSettingServiceImpl implements AppSettingService {
private final AppSettingRepository appSettingRepository;
@Override
public CommonResult<String> createAppSetting(SellerAccountDTO account, AppConfigVo vo) {
@RedisLock(lockName = "createSetting", key = "#userId")
public CommonResult<String> createAppSetting(Long userId, SellerAccountDTO account, AppConfigVo vo) {
if (StrUtil.isBlank(vo.getSendMessage())) {
return new CommonResult<String>().forbidden(ResponseCode.MESSAGE_CONTENT_ERROR.getDesc());
}
// 开启设置
AppSetting setting = new AppSetting();
setting.setUserId(account.getParentId() != DefaultNumberConstants.ZERO_NUMBER ?
account.getParentId() : account.getId());
setting.setUserId(userId);
setting.setSellerNick(account.getNickname());
return getStringCommonResult(vo, setting);
}
@ -52,11 +53,13 @@ public class AppSettingServiceImpl implements AppSettingService {
StrUtil.isBlank(vo.getSendMessage())) {
return new CommonResult<String>().forbidden(ResponseCode.MESSAGE_CONTENT_ERROR.getDesc());
}
// 修改方法
AppSetting appSetting = new AppSetting();
appSetting.setUserId(userId);
appSetting.setSellerNick(account.getNickname());
return getStringCommonResult(vo, appSetting);
AppSetting appSetting = appSettingRepository.findByUserIdAndType(userId, vo.getSettingType());
if (appSetting != null) {
appSetting.setUserId(userId);
appSetting.setSellerNick(account.getNickname());
return getStringCommonResult(vo, appSetting);
}
return new CommonResult<String>().forbidden();
}

@ -63,6 +63,7 @@ public class TaskMessageInfoServiceImpl implements TaskMessageInfoService {
TaskMessageInfo info = new TaskMessageInfo();
// 可在字段上直接添加
info.setStatus(DefaultNumberConstants.ZERO_NUMBER);
info.setInfo(message.getSendMessage());
info.setTaskId(message.getId());
info.setUserId(message.getUserId());
info.setSendType(message.getSendType());

@ -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)

@ -231,7 +231,7 @@ public class TopTradeServiceImpl implements TopTradeService {
new BeanPropertyRowMapper<>(TopTrade.class));
Map<String, Object> map = new HashMap<>(DefaultNumberConstants.TWO_NUMBER);
List<String> buyerList = new ArrayList<>();
List<Long> tidList = new ArrayList<>();
List<String> tidList = new ArrayList<>();
if (!CollectionUtils.isEmpty(topTradeList)) {
// 迭代器方式删除
Iterator<TopTrade> topTradeIterator = topTradeList.iterator();
@ -245,7 +245,7 @@ public class TopTradeServiceImpl implements TopTradeService {
continue;
}
buyerList.add(topTrade.getBuyerNick());
tidList.add(topTrade.getTid());
tidList.add(topTrade.getTid().toString());
}
map.put(OrderConstants.BUYER_NICK, buyerList);
map.put(OrderConstants.TID, tidList);

@ -120,7 +120,7 @@ public class DefaultNumberConstants {
/**
* %
*/
public static final String DOLLAR_DELIM = "$";
public static final String DOLLAR_DELIM = "${";
/**
*

@ -22,7 +22,7 @@ public class TimeUtil {
return DateUtil.format(DateUtil.date(),
TimeConstants.YYYY_MM_DD_HH)
+ StrUtil.DASHED + (DateUtil.minute(DateUtil.date())
/ DefaultNumberConstants.TEN_NUMBER) * DefaultNumberConstants.TEN_NUMBER;
/ DefaultNumberConstants.FIVE_NUMBER) * DefaultNumberConstants.FIVE_NUMBER;
}

Loading…
Cancel
Save