|
|
|
@ -18,7 +18,6 @@ import com.hchbox.dto.SellerAccountDTO;
|
|
|
|
|
import com.hchbox.entity.master.*;
|
|
|
|
|
import com.hchbox.entity.slaver.JdpTrade;
|
|
|
|
|
import com.hchbox.enums.AppSettingTypeEnum;
|
|
|
|
|
import com.hchbox.enums.RefundStatusEnum;
|
|
|
|
|
import com.hchbox.enums.ResponseCode;
|
|
|
|
|
import com.hchbox.hander.message.TaoBaoMessage;
|
|
|
|
|
import com.hchbox.hander.message.TaoBaoRefundMessage;
|
|
|
|
@ -45,13 +44,13 @@ import com.taobao.api.request.TradesSoldGetRequest;
|
|
|
|
|
import com.taobao.api.response.TopOaidDecryptResponse;
|
|
|
|
|
import com.taobao.api.response.TradeFullinfoGetResponse;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
|
|
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
|
|
|
|
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
|
|
|
|
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
@ -73,10 +72,8 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
@Value("${hchbox.sub-tables}")
|
|
|
|
|
private Integer tableSum;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final MiProperties miProperties;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final MemberService memberService;
|
|
|
|
|
|
|
|
|
|
private final JdpTradeService jdpTradeService;
|
|
|
|
@ -143,7 +140,6 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
public Boolean createTrade(TopTrade topTrade, SellerAccountDTO sellerAccountDTO, List<TopOrder> topOrders) {
|
|
|
|
|
if (topTrade.getTid() != null) {
|
|
|
|
|
Long tid = topTrade.getTid();
|
|
|
|
|
|
|
|
|
|
Integer byTid = topTradeRepository.countByTid(tid);
|
|
|
|
|
if (byTid == null || byTid == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
// 设置账户
|
|
|
|
@ -161,12 +157,13 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public Boolean processTradeMessage(TaoBaoTradeMessage message) {
|
|
|
|
|
TopTrade trade = topTradeRepository.findByTid(message.getTid());
|
|
|
|
|
log.info("=========== update order status the message as {} ===========", message.getStatus());
|
|
|
|
|
if (trade != null && message.getStatus() != null) {
|
|
|
|
|
topTradeRepository.updateOrderStatus(message.getStatus(), message.getTid(), DateUtil.date());
|
|
|
|
|
log.info("=========== update order status the message as {} ===========", message.getStatus());
|
|
|
|
|
updateOrderStatus(DefaultNumberConstants.TEN_NUMBER,trade.getSellerNick(),message.getStatus(),trade);
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
return Boolean.FALSE;
|
|
|
|
@ -174,19 +171,20 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public Boolean updateOrderStatusByMessage(TaoBaoRefundMessage message) {
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public Boolean updateOrderStatusByMessage(TaoBaoRefundMessage message, String stateValue) {
|
|
|
|
|
TopTrade trade = topTradeRepository.findByTid(message.getTid());
|
|
|
|
|
if (trade != null) {
|
|
|
|
|
topTradeRepository.updateOrderStatus(RefundStatusEnum.SUCCESS.getStateValue(),
|
|
|
|
|
message.getTid(), DateUtil.date());
|
|
|
|
|
log.info("=========== update refundOrder status the status as {} ===========",stateValue);
|
|
|
|
|
updateOrderStatus(DefaultNumberConstants.TEN_NUMBER,trade.getSellerNick(),stateValue,trade);
|
|
|
|
|
return Boolean.TRUE;
|
|
|
|
|
}
|
|
|
|
|
return Boolean.FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public Boolean doAfterPayRemindMessage(TaoBaoTradeMessage message, AppSettingTypeEnum appSettingTypeEnum) {
|
|
|
|
|
return processingOrderInformation(message, message.getStatus(), appSettingTypeEnum);
|
|
|
|
@ -194,12 +192,15 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public Boolean tradeShipByMessage(TaoBaoShipMessage message, AppSettingTypeEnum appSettingTypeEnum) {
|
|
|
|
|
return processingOrderInformation(message, message.getStatus(), appSettingTypeEnum);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public Boolean tradeSuccessfulTransaction(TaoBaoTradeMessage message, AppSettingTypeEnum appSettingTypeEnum) {
|
|
|
|
|
return processingOrderInformation(message, message.getStatus(), appSettingTypeEnum);
|
|
|
|
|
}
|
|
|
|
@ -331,6 +332,7 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
private Boolean processingOrderInformation(TaoBaoMessage message, String status, AppSettingTypeEnum appSettingTypeEnum) {
|
|
|
|
|
|
|
|
|
|
String sellerNick = message.getSellerNick();
|
|
|
|
|
|
|
|
|
|
SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick);
|
|
|
|
|
if (sellerAccount == null ||
|
|
|
|
|
sellerAccount.getStatus()
|
|
|
|
@ -378,26 +380,12 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void sendMessageRemind(Integer type, String buyerNick, Long tid, String orderStatus, String template, AppSetting setting, List<String> sendNickList, SellerAccountDTO sellerAccountDTO) {
|
|
|
|
|
TopTrade trade = topTradeRepository.findByTid(tid);
|
|
|
|
|
TopTrade trade = topTradeRepository.findByTid(1434820972683809364L);
|
|
|
|
|
if (trade != null) {
|
|
|
|
|
topTradeRepository.updateOrderStatus(orderStatus, tid, DateUtil.date());
|
|
|
|
|
|
|
|
|
|
// 订单支付成功
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.PAYMENT_SUCCESSFUL.getType())) {
|
|
|
|
|
topTradeRepository.updateOrderStatusPaySuccess(orderStatus, tid, DateUtil.date());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 订单发货
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.MESSAGE_SHIPMENT_REMINDER.getType())) {
|
|
|
|
|
topTradeRepository.updateOrderStatusByShipDate(orderStatus, tid, DateUtil.date());
|
|
|
|
|
}
|
|
|
|
|
// 修改订单状态
|
|
|
|
|
updateOrderStatus(type, buyerNick, orderStatus, trade);
|
|
|
|
|
|
|
|
|
|
// 交易成功
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.SUCCESSFUL_TRANSACTION_REMINDER.getType())) {
|
|
|
|
|
topTradeRepository.updateOrderStatusSuccessfulTransaction(orderStatus, tid, DateUtil.date());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<TopOrder> orderList = topOrderRegistry.findByTid(tid);
|
|
|
|
|
List<TopOrder> orderList = topOrderRegistry.findByTid(1434820972683809364L);
|
|
|
|
|
if (!CollectionUtils.isEmpty(orderList)) {
|
|
|
|
|
trade.setOrders(orderList);
|
|
|
|
|
}
|
|
|
|
@ -454,6 +442,47 @@ public class TopTradeServiceImpl implements TopTradeService {
|
|
|
|
|
cacheManagerUtil.putCache(MessageConstants.SEND_MESSAGE_KEY, timeFormat, sendMessageCache);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateOrderStatus(Integer type, String buyerNick, String orderStatus, TopTrade trade) {
|
|
|
|
|
DateTime date = DateUtil.date();
|
|
|
|
|
StringBuilder updateString = new StringBuilder().append("update ")
|
|
|
|
|
.append(TableConstants.TRADE)
|
|
|
|
|
.append(Math.abs(buyerNick.hashCode()) % tableSum)
|
|
|
|
|
.append(" set status = :status, ");
|
|
|
|
|
|
|
|
|
|
if (type.equals(DefaultNumberConstants.TEN_NUMBER)){
|
|
|
|
|
updateString.append(" modified = :modified, ");
|
|
|
|
|
trade.setModified(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 订单支付成功
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.PAYMENT_SUCCESSFUL.getType())) {
|
|
|
|
|
updateString.append(" pay_time = :payTime, ");
|
|
|
|
|
trade.setPayTime(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 订单发货
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.MESSAGE_SHIPMENT_REMINDER.getType())) {
|
|
|
|
|
updateString.append(" consign_time = :consignTime, ");
|
|
|
|
|
trade.setConsignTime(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 交易成功
|
|
|
|
|
if (type.equals(AppSettingTypeEnum.SUCCESSFUL_TRANSACTION_REMINDER.getType())) {
|
|
|
|
|
updateString.append(" end_time = :endTime, ");
|
|
|
|
|
trade.setEndTime(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
updateString.append(" where tid = :tid");
|
|
|
|
|
trade.setStatus(orderStatus);
|
|
|
|
|
SqlParameterSource ps = new BeanPropertySqlParameterSource(trade);
|
|
|
|
|
namedParameterJdbcTemplate.update
|
|
|
|
|
(StrUtil.replace
|
|
|
|
|
(updateString.toString(),
|
|
|
|
|
updateString.toString().lastIndexOf(StrUtil.COMMA),
|
|
|
|
|
StrUtil.COMMA, StrUtil.SPACE,
|
|
|
|
|
Boolean.TRUE), ps);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private TaskMessageInfo createTaskMessageInfo(String template, AppSetting setting, List<String> sendNickList, TopTrade trade, Long taskId) {
|
|
|
|
|
TaskMessageInfo messageInfo = new TaskMessageInfo();
|
|
|
|
|
messageInfo.setTaskId(taskId);
|
|
|
|
|