diff --git a/service/trade-service-source/trade-service-source-api/src/main/java/com/hchbox/vo/SubmitSendMessageVo.java b/service/trade-service-source/trade-service-source-api/src/main/java/com/hchbox/vo/SubmitSendMessageVo.java index fefe573..4cb16c9 100644 --- a/service/trade-service-source/trade-service-source-api/src/main/java/com/hchbox/vo/SubmitSendMessageVo.java +++ b/service/trade-service-source/trade-service-source-api/src/main/java/com/hchbox/vo/SubmitSendMessageVo.java @@ -48,7 +48,7 @@ public class SubmitSendMessageVo { @ApiModelProperty(value = "统计结束时间") private Date statEndTime; - @NotEmpty(message = "买家信息不能为空") + @ApiModelProperty(value = "买家信息列表") private List buyerInfoList; diff --git a/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/AppConfigController.java b/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/AppConfigController.java index 9031f85..1c81a5e 100644 --- a/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/AppConfigController.java +++ b/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/AppConfigController.java @@ -38,7 +38,9 @@ public class AppConfigController { if (account == null) { return new CommonResult().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") diff --git a/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java b/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java index fe5a9a2..e91db47 100644 --- a/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java +++ b/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java @@ -166,7 +166,7 @@ public class SlaverTest { @Test public void openMessage(){ - + topTradeService.findByTid(2148563198943032631L); } @Test diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/AppSettingService.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/AppSettingService.java index ae0bb18..beb316c 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/AppSettingService.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/AppSettingService.java @@ -14,10 +14,11 @@ public interface AppSettingService { /** * 创建消息配置 * @return + * @param userId * @param account * @param vo */ - CommonResult createAppSetting(SellerAccountDTO account, AppConfigVo vo); + CommonResult createAppSetting(Long userId, SellerAccountDTO account, AppConfigVo vo); /** * 修改设置 diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/AppSettingServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/AppSettingServiceImpl.java index 22a47f8..5b517be 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/AppSettingServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/AppSettingServiceImpl.java @@ -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 createAppSetting(SellerAccountDTO account, AppConfigVo vo) { + @RedisLock(lockName = "createSetting", key = "#userId") + public CommonResult createAppSetting(Long userId, SellerAccountDTO account, AppConfigVo vo) { if (StrUtil.isBlank(vo.getSendMessage())) { return new CommonResult().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().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().forbidden(); } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageInfoServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageInfoServiceImpl.java index 6682857..1ebf5cc 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageInfoServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageInfoServiceImpl.java @@ -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()); diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageServiceImpl.java index 824c1d2..24771fe 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TaskMessageServiceImpl.java @@ -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 createTaskSendMessage(SubmitSendMessageVo submitSendMessageVo, SellerAccountDTO sellerAccount) { List list = new ArrayList<>(); HashMap 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 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().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 parameters = new HashMap<>(DefaultNumberConstants.SIXTEEN_NUMBER); + parameters.put("tidList", submitSendMessageVo.getOrderTidList()); + List> maps = namedParameterJdbcTemplate.queryForList(stringBuilder, parameters); + List 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> 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) diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java index 0172ced..8b184ef 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java @@ -231,7 +231,7 @@ public class TopTradeServiceImpl implements TopTradeService { new BeanPropertyRowMapper<>(TopTrade.class)); Map map = new HashMap<>(DefaultNumberConstants.TWO_NUMBER); List buyerList = new ArrayList<>(); - List tidList = new ArrayList<>(); + List tidList = new ArrayList<>(); if (!CollectionUtils.isEmpty(topTradeList)) { // 迭代器方式删除 Iterator 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); diff --git a/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java b/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java index f06f837..7a68729 100644 --- a/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java +++ b/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java @@ -120,7 +120,7 @@ public class DefaultNumberConstants { /** * % */ - public static final String DOLLAR_DELIM = "$"; + public static final String DOLLAR_DELIM = "${"; /** * 七彩之谜 diff --git a/trade-common/src/main/java/com/hchbox/util/TimeUtil.java b/trade-common/src/main/java/com/hchbox/util/TimeUtil.java index 4d45b3a..63328d8 100644 --- a/trade-common/src/main/java/com/hchbox/util/TimeUtil.java +++ b/trade-common/src/main/java/com/hchbox/util/TimeUtil.java @@ -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; }