消息接收修改状态

master
bynt 3 years ago
parent c6deea021e
commit c9592d1234

@ -1,6 +1,7 @@
package com.hchbox.hander;
import com.hchbox.annotaion.RedisLock;
import com.hchbox.enums.RefundStatusEnum;
import com.hchbox.hander.message.TaoBaoRefundMessage;
import com.hchbox.service.TopTradeService;
import lombok.RequiredArgsConstructor;
@ -25,7 +26,7 @@ public class TradeRefundSellerAgreeAgreement implements TaoBaoHandler<TaoBaoRefu
public boolean onMessage(TaoBaoRefundMessage message) {
if (message != null) {
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;
}

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

@ -82,9 +82,10 @@ public interface TopTradeService {
/**
* 退
* @param message
* @param stateValue
* @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.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);

@ -22,7 +22,7 @@ public class RemindTemplates {
}
public static final String PRICE = "${店铺名称}";
public static final String PRICE = "${宝贝价格}";
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;
}

Loading…
Cancel
Save