diff --git a/pom.xml b/pom.xml index 1f51b01..f412cef 100644 --- a/pom.xml +++ b/pom.xml @@ -161,6 +161,7 @@ org.springframework.boot spring-boot-maven-plugin + ${spring-boot.version} true -Dfile.encoding=UTF-8 diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessage.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessage.java new file mode 100644 index 0000000..0b2b91a --- /dev/null +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessage.java @@ -0,0 +1,70 @@ +package com.hchbox.entity.master; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author Enzo + * @date 2021-7-15 + */ +@Data +@Entity +@Table(name = "auto_task_message") +public class AutoTaskMessage implements Serializable { + + @Id + @Column(name = "id") + @ApiModelProperty(value = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long userId; + + @ApiModelProperty("类型") + private Integer status; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("买家昵称") + private String sellerNick; + + private String taksInfo; // 任务信息 + + private Date gmtCreate; // + + private Date gmtUpdate; + + private Date startDt; // 任务开始时间 + + private Date endDt; // 任务结束时间 + + private Integer isOver; // 0 默认未完成终止 1 明日再发 + + private Integer isRetry; // 重试次数 0 代表不重试 + + private String templt; // 模板 + + private Integer isRemark; // 是否备注 0不备注 1备注 + + private String result; // 结果 + + private String memo; + + private Integer type; // 0 应用dsr选中回访提交 1 为 手动提交 (应用 团队 后台 ) + + private String sendType; + + private Date statStartDt; // 统计开始时间 + + private Date statEndDt; // 统计结束时间 + + private String statType; // 统计类型 urgerate催评 marketing营销 + + + +} diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessageInfo.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessageInfo.java index ef2e792..6023d8c 100644 --- a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessageInfo.java +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/entity/master/AutoTaskMessageInfo.java @@ -14,7 +14,7 @@ import java.util.Date; */ @Data @Entity -@Table(name = "black_list") +@Table(name = "auto_task_message_info") public class AutoTaskMessageInfo implements Serializable { private static final long serialVersionUID = 4158774664555395433L; diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/AutoTaskMessageRepository.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/AutoTaskMessageRepository.java new file mode 100644 index 0000000..a275203 --- /dev/null +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/AutoTaskMessageRepository.java @@ -0,0 +1,24 @@ +package com.hchbox.repository.master; + +import com.hchbox.entity.master.AutoTaskMessage; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.Date; + +/** + * @author Enzo + * @date : 2021/7/15 + */ +public interface AutoTaskMessageRepository extends JpaRepository, JpaSpecificationExecutor { + + + /** + * 类型与 开始时间查询 + * @param type + * @param startTime + * @param endTime + * @return + */ + AutoTaskMessage findAutoTaskMessageTypeBetweenTime(String type, Date startTime, Date endTime); +} diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/SellerAccountRepository.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/SellerAccountRepository.java index f8aab43..2c41a21 100644 --- a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/SellerAccountRepository.java +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/SellerAccountRepository.java @@ -47,10 +47,7 @@ public interface SellerAccountRepository extends JpaRepository findNickByParentId(Long parentId); - - - + List findByParentId(Long parentId); } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java index ea5a68c..1fe2893 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java @@ -137,7 +137,7 @@ public class MemberServiceImpl implements MemberService { Member member = new Member(); Double payment = Double.valueOf(trade.getPayment()); SellerAccount sellerAccountByNick = sellerAccountRepository.findSellerAccountByNick(trade.getSellerNick()); - member.setAccountUid(sellerAccountByNick.getUid()); + member.setAccountUid(sellerAccountByNick.getId()); member.setAlipayNo(trade.getAlipayNo()); member.setAvgPrice(payment); if (trade.getAlipayNo() != null) { 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 255dd4f..760505a 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 @@ -1,46 +1,35 @@ package com.hchbox.service.impl; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.NumberUtil; -import cn.hutool.core.util.StrUtil; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import com.hchbox.api.TaoBaoApiClient; import com.hchbox.config.MiProperties; -import com.hchbox.constant.*; +import com.hchbox.constant.DefaultConstants; +import com.hchbox.constant.PayConstants; +import com.hchbox.constant.RemindTemplates; import com.hchbox.converter.CommConverter; import com.hchbox.dto.SellerAccountDTO; import com.hchbox.entity.master.*; import com.hchbox.enums.AppSettingTypeEnum; import com.hchbox.hander.message.TaoBaoTradeMessage; +import com.hchbox.repository.master.AutoTaskMessageRepository; import com.hchbox.repository.master.OrderRegistry; import com.hchbox.repository.master.TopTradeRepository; import com.hchbox.service.*; -import com.hchbox.uitl.TaoBaoEncryption; import com.hchbox.util.CacheManagerUtil; import com.taobao.api.domain.Order; import com.taobao.api.domain.Trade; -import com.taobao.api.request.TradeFullinfoGetRequest; import com.taobao.api.request.TradesSoldGetRequest; -import com.taobao.api.response.TradeFullinfoGetResponse; -import com.taobao.api.response.TradesSoldGetResponse; import lombok.AllArgsConstructor; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.shardingsphere.spi.order.OrderedRegistry; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import javax.jnlp.FileContents; -import java.lang.reflect.Field; -import java.math.BigDecimal; import java.time.LocalTime; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -71,6 +60,8 @@ public class TopTradeServiceImpl implements TopTradeService { private final SellerAccountService sellerAccountService; + private final AutoTaskMessageRepository autoTaskMessageRepository; + private final AutoTaskMessageInfoService autoTaskMessageInfoService; @@ -160,6 +151,7 @@ public class TopTradeServiceImpl implements TopTradeService { /** * 获取订单编号 + * * @param templateId * @param account * @return @@ -194,37 +186,33 @@ public class TopTradeServiceImpl implements TopTradeService { return; } - /* // 提交创建旺旺批次任务 - Integer wwid = createAutoTaskWwmsg(setting, template); + // 提交创建旺旺批次任务 + Long taskId = createAutoTaskMessage(setting, template); - if (wwid == null || wwid == 0) { - log.info("trade rate handler wwid is null tid=" + tid); + if (taskId == null) { + log.info("============== create trade task error the uid as {},time {} ==============", +trade.getTid(), DateUtil.date()); return; } AutoTaskMessageInfo messageInfo = new AutoTaskMessageInfo(); - messageInfo.setAtwId((long) wwid); + messageInfo.setAtwId(taskId); //默认第一个账号去发送,只发送一条消息 messageInfo.setWwNick(sendNickList.get(0)); messageInfo.setSellerNick(trade.getSellerNick()); - messageInfo.setStartDt(new Date()); + messageInfo.setStartDt(DateUtil.date()); messageInfo.setTid(trade.getTid()); - messageInfo.setStatus(0); - messageInfo.setType(0); + messageInfo.setStatus(DefaultConstants.ZERO_NUMBER); + messageInfo.setType(DefaultConstants.ZERO_NUMBER); messageInfo.setSendType(setting.getType()); messageInfo.setBuyerNick(trade.getBuyerNick()); - String content = RemindTemplateUtil.prepareMsg(template, trade); - messageInfo.setInfo(content);// 模板替换 - List infos = new ArrayList(); - infos.add(wwmsgInfo); - autoTaskWWMsgInfoService.batchCreate(infos); - taskAccountService.addCacheWwmsgQuota(wwmsgInfo.getWwNick(), AutoTaskConstants.TASK_ACCOUNT_TYPE_ONE, -1, redisCacheManager); - - NoticeWwSendMessage message = new NoticeWwSendMessage(); - message.setSendNick(wwmsgInfo.getWwNick()); - message.setTaskId(wwid); - message.setTaskName("自动任务(" + AppSettingType.getWwRemindType(setting.getType()) + ")"); - message.setType(AutoTaskConstants.WWMSG_TYPE_AUTO + setting.getType());*/ + String content = RemindTemplates.prepareMsg(template, trade); + // 模板替换 + messageInfo.setInfo(content); + List infos = new ArrayList(); + infos.add(messageInfo); + // TODO 批量插入 插入缓存 + //autoTaskMessageRepository.batchCreate(infos); + // taskAccountService.addCacheWwmsgQuota(wwmsgInfo.getWwNick(), AutoTaskConstants.TASK_ACCOUNT_TYPE_ONE, -1, redisCacheManager); // redisCacheManager.sendMessage(RedisConstants.NOTICE_WW_SEND_CHANNEL, message); } @@ -261,7 +249,7 @@ public class TopTradeServiceImpl implements TopTradeService { List list = trade.getOrders(); List ids = new ArrayList<>(); for (Order order : list) { - if(!ids.contains(order.getNumIid())){ + if (!ids.contains(order.getNumIid())) { ids.add(order.getNumIid()); } } @@ -276,9 +264,9 @@ public class TopTradeServiceImpl implements TopTradeService { return true; } return false; - }*/ + } - /* // 查询卖家指定的不发送宝贝, + // 查询卖家指定的不发送宝贝, int notSendCount = remindGoodsService.count(sellerNick, RemindGoods.FTYPE_DISABLE, setting.getType()); if (notSendCount > 0) { List notSendList = remindGoodsService.listByIds(iids, RemindGoods.FTYPE_DISABLE, @@ -293,4 +281,37 @@ public class TopTradeServiceImpl implements TopTradeService { return true; } + + /** + * 提交创建旺旺批次任务 + * + * @param setting + * @param template + * @return + */ + protected Long createAutoTaskMessage(AppSetting setting, String template) { + + DateTime date = DateUtil.date(); + AutoTaskMessage message = autoTaskMessageRepository.findAutoTaskMessageTypeBetweenTime(setting.getType(), DateUtil.beginOfDay(date), DateUtil.endOfDay(date)); + + if (message != null) { + return message.getId(); + } + + // 若不存在,则创建一个 + message = new AutoTaskMessage(); + message.setStartDt(date); + // 目前暂定的任务名 自动任务(好评感谢) + message.setTaskName("自动任务(" + ")"); + message.setTaksInfo(""); + message.setIsOver(0); + message.setTemplt(template); + message.setIsRemark(0); + message.setStatus(0); + message.setType(0); + message.setSendType(setting.getType()); + message.setSellerNick(setting.getSellerNick()); + return autoTaskMessageRepository.save(message).getId(); + } + } diff --git a/trade-common/src/main/java/com/hchbox/base/BaseMember.java b/trade-common/src/main/java/com/hchbox/base/BaseMember.java index a9d80bd..7cfd6e4 100644 --- a/trade-common/src/main/java/com/hchbox/base/BaseMember.java +++ b/trade-common/src/main/java/com/hchbox/base/BaseMember.java @@ -29,7 +29,7 @@ public class BaseMember implements Serializable { protected Long id; @ApiModelProperty("用户id") - protected String accountUid; + protected Long accountUid; @Column(name = "create_time") @ApiModelProperty("创建时间") diff --git a/trade-common/src/main/java/com/hchbox/constant/RemindTemplates.java b/trade-common/src/main/java/com/hchbox/constant/RemindTemplates.java index 927ca3c..f8d00e4 100644 --- a/trade-common/src/main/java/com/hchbox/constant/RemindTemplates.java +++ b/trade-common/src/main/java/com/hchbox/constant/RemindTemplates.java @@ -2,6 +2,7 @@ package com.hchbox.constant; import cn.hutool.core.util.StrUtil; +import com.taobao.api.domain.Trade; import org.apache.commons.lang3.StringUtils; /** @@ -34,4 +35,52 @@ public class RemindTemplates { return template.replace(SHOP_NAME, StringUtils.isNotBlank(shopTitle) ? shopTitle : StrUtil.EMPTY); } + + /** + * 使用订单替换提醒模板中的变量 + * + * @param template + * @param trade + * @return + */ + public static String prepareMsg(String template, Trade trade) { + + if (StringUtils.isBlank(template) || trade == null) { + return template; + } + + /*// 目前有一个变量,订单创建时间 + String orderTime = DateUtil.formatMMDDHHmm(trade.getCreated()); + // 下单时间,付款时间,店铺名称,宝贝名称,价格,数量,买家昵称 收货人姓名 + template = template.replace(RemindTemplates.ORDER_TIME, orderTime != null ? orderTime : ""); + if (trade.getPayTime() != null) { + template = template.replace(RemindTemplates.PAY_TIME, DateUtil.formatMMDDHHmm(trade.getPayTime())); + } + + String itemTitle = ""; + if (trade.getOrders() != null) { + itemTitle = trade.getOrders().get(0).getTitle(); + } else { + itemTitle = trade.getTitle(); + } + ; + template = template.replace(RemindTemplates.ITEM_TITLE, replaceBracket(itemTitle)); + template = template.replace(RemindTemplates.PRICE, trade.getPayment() != null ? trade.getPayment() : "" + "元"); + // template.replace(RemindTemplates.ITEM_NUMBER, trade.getNum() != null ? trade.getNum().toString() : ""); + template = template.replace(RemindTemplates.BUYER_NICK, + trade.getBuyerNick() != null ? trade.getBuyerNick() : ""); + template = template.replace(RemindTemplates.RECEIVER_NAME, + trade.getReceiverName() != null ? trade.getReceiverName() : ""); + template = template.replace(RemindTemplates.RECEIVER_MOBILE, + trade.getReceiverMobile() != null ? trade.getReceiverMobile() : ""); + template = template.replace(RemindTemplates.RECEIVER_ADDRESS, + trade.getReceiverAddress() != null ? trade.getReceiverAddress() : ""); + template = template.replace(RemindTemplates.ORDER_NO, + trade.getTid() != null ? String.valueOf(trade.getTid()) : ""); + template = template.replace(RemindTemplates.FRONT_PAYMENT, + trade.getStepPaidFee() != null ? trade.getStepPaidFee() : "");*/ + + return template; + } + }