消息接收修改状态

master
bynt 3 years ago
parent c6deea021e
commit c9592d1234

@ -1,6 +1,7 @@
package com.hchbox.hander; package com.hchbox.hander;
import com.hchbox.annotaion.RedisLock; import com.hchbox.annotaion.RedisLock;
import com.hchbox.enums.RefundStatusEnum;
import com.hchbox.hander.message.TaoBaoRefundMessage; import com.hchbox.hander.message.TaoBaoRefundMessage;
import com.hchbox.service.TopTradeService; import com.hchbox.service.TopTradeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -25,7 +26,7 @@ public class TradeRefundSellerAgreeAgreement implements TaoBaoHandler<TaoBaoRefu
public boolean onMessage(TaoBaoRefundMessage message) { public boolean onMessage(TaoBaoRefundMessage message) {
if (message != null) { if (message != null) {
log.info("=============== seller agrees to refund message start ================= "); log.info("=============== seller agrees to refund message start ================= ");
return topTradeService.updateOrderStatusByMessage(message); return topTradeService.updateOrderStatusByMessage(message, RefundStatusEnum.WAIT_BUYER_RETURN_GOODS.getStateValue());
} }
return Boolean.FALSE; return Boolean.FALSE;
} }

@ -1,6 +1,7 @@
package com.hchbox.hander; package com.hchbox.hander;
import com.hchbox.annotaion.RedisLock; import com.hchbox.annotaion.RedisLock;
import com.hchbox.enums.RefundStatusEnum;
import com.hchbox.hander.message.TaoBaoRefundMessage; import com.hchbox.hander.message.TaoBaoRefundMessage;
import com.hchbox.service.TopTradeService; import com.hchbox.service.TopTradeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -24,7 +25,7 @@ public class TradeRefundSuccessHandler implements TaoBaoHandler<TaoBaoRefundMess
public boolean onMessage(TaoBaoRefundMessage message) { public boolean onMessage(TaoBaoRefundMessage message) {
if (message != null) { if (message != null) {
log.info("=============== refund successfully processed message start ================= "); log.info("=============== refund successfully processed message start ================= ");
return topTradeService.updateOrderStatusByMessage(message); return topTradeService.updateOrderStatusByMessage(message, RefundStatusEnum.SUCCESS.getStateValue());
} }
return Boolean.FALSE; return Boolean.FALSE;
} }

@ -82,9 +82,10 @@ public interface TopTradeService {
/** /**
* 退 * 退
* @param message * @param message
* @param stateValue
* @return * @return
*/ */
Boolean updateOrderStatusByMessage(TaoBaoRefundMessage message); Boolean updateOrderStatusByMessage(TaoBaoRefundMessage message, String stateValue);
/** /**
* *

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

@ -22,7 +22,7 @@ public class RemindTemplates {
} }
public static final String PRICE = "${店铺名称}"; public static final String PRICE = "${宝贝价格}";
public static final String PAY_TIME = "${支付时间}"; public static final String PAY_TIME = "${支付时间}";

@ -29,11 +29,11 @@ public enum RefundStatusEnum {
/** /**
* 退 * 退
*/ */
CLOSED("CLOSED"), CLOSED("REFUND_CLOSED"),
/** /**
* 退 * 退
*/ */
SUCCESS("SUCCESS"), SUCCESS("REFUND_SUCCESS"),
; ;
private final String stateValue; private final String stateValue;
} }

Loading…
Cancel
Save