Authored by wujiexiang

Merge branch 'dev_bid' into test6.9.13

... ... @@ -342,6 +342,9 @@
<update id="updateByOrderCode" parameterType="com.yohoufo.dal.order.model.BuyerOrder">
update buyer_order
set
<if test="sellerUid != null">
seller_uid = #{sellerUid,jdbcType=INTEGER},
</if>
<if test="status != null">
status = #{status,jdbcType=INTEGER},
</if>
... ...
... ... @@ -16,6 +16,7 @@ import com.yohoufo.order.constants.MetaKey;
import com.yohoufo.order.model.bo.SubmitSellerOrder;
import com.yohoufo.order.model.dto.SellerOrderComputeResult;
import com.yohoufo.order.utils.LoggerUtils;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
... ... @@ -79,6 +80,12 @@ public class SellerBidOrderBindService {
private SellerOrderMetaMapper somMapper;
@Autowired
private BuyerOrderGoodsMapper buyerOrderGoodsMapper;
@Autowired
private BuyerOrderMapper buyerOrderMapper;
@Autowired
private BidSkupService bidSkupService;
/**
... ... @@ -97,6 +104,7 @@ public class SellerBidOrderBindService {
bidSkupService.bind(submitSellerOrder.getUid(), submitSellerOrder.getSkup(), submitSellerOrder.isFinishPay());
insertOrder(submitSellerOrder);
insertOrderMeta(submitSellerOrder);
bindSellerUidWithBuyerOrder(submitSellerOrder.getSkup(), submitSellerOrder.getUid());
}
... ... @@ -105,6 +113,7 @@ public class SellerBidOrderBindService {
bidSkupService.unbind(uid, skup);
unbindSellerOrder(uid, orderCode, skup, targetStatus);
unbindOrderMeta(skup);
bindSellerUidWithBuyerOrder(skup, 0);
}
... ... @@ -187,5 +196,34 @@ public class SellerBidOrderBindService {
}
logger.info("[{}] is unbind with seller order meta success", skup);
}
protected void bindSellerUidWithBuyerOrder(int skup, int sellerUid) {
BuyerOrderGoods buyerOrderGoods = getBuyerOrderGoods(skup);
BuyerOrder buyerOrder = new BuyerOrder();
buyerOrder.setUid(buyerOrderGoods.getUid());
buyerOrder.setOrderCode(buyerOrderGoods.getOrderCode());
buyerOrder.setSellerUid(sellerUid);
boolean success = buyerOrderMapper.updateByOrderCode(buyerOrder) > 0;
if (!success) {
logger.warn("[{}] buyer order is bind with sellerUid:{} fail ", buyerOrderGoods.getOrderCode());
throw new UfoServiceException(500, "操作失败");
}
logger.warn("[{}] buyer order is bind with sellerUid:{} success ", buyerOrderGoods.getOrderCode());
}
private BuyerOrderGoods getBuyerOrderGoods(int skup) {
List<BuyerOrderGoods> buyerOrderGoodsList = buyerOrderGoodsMapper.selectOrderBySkups(skup);
if (CollectionUtils.isEmpty(buyerOrderGoodsList)) {
logger.warn("not find buyer order goods by skup:{}", skup);
return null;
}
if (buyerOrderGoodsList.size() != 1) {
logger.warn("is impossible,buyer order goods size != 1 by skup:{}", skup);
return null;
}
return buyerOrderGoodsList.get(0);
}
}
}
\ No newline at end of file
... ...
... ... @@ -6,15 +6,21 @@ import com.yohobuy.ufo.model.order.common.OrderStatus;
import com.yohobuy.ufo.model.order.common.Payment;
import com.yohoufo.common.alarm.EventBusPublisher;
import com.yohoufo.dal.order.model.*;
import com.yohoufo.order.common.TransferCase;
import com.yohoufo.order.event.PayConfirmEvent;
import com.yohoufo.order.model.PayQueryBo;
import com.yohoufo.order.model.RequestedCancelEventStatusChangeBuyerOrder;
import com.yohoufo.order.model.RequestedStatusChangeBuyerOrder;
import com.yohoufo.order.model.request.TranseferCellNode;
import com.yohoufo.order.model.request.TransferMoneyRequest;
import com.yohoufo.order.service.AbstractBuyerOrderStateChanger;
import com.yohoufo.order.service.impl.TransferService;
import com.yohoufo.order.service.listener.BuyerOrderChangeEvent;
import com.yohoufo.order.service.pay.AbstractPayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
... ... @@ -29,6 +35,9 @@ import static com.yohobuy.ufo.model.order.common.OrderStatus.*;
@Service
public class BuyerOrderWaitingPayCancelChanger extends AbstractBuyerOrderStateChanger<RequestedCancelEventStatusChangeBuyerOrder> {
@Autowired
private TransferService transferService;
@Override
protected boolean beforeChange(RequestedCancelEventStatusChangeBuyerOrder statusChangeBuyerOrder) {
BuyerOrder buyerOrder = statusChangeBuyerOrder.getBuyerOrder();
... ... @@ -90,9 +99,43 @@ public class BuyerOrderWaitingPayCancelChanger extends AbstractBuyerOrderStateCh
* @param buyerOrder
*/
private void bidOrderAfterStatement(BuyerOrder buyerOrder) {
//todo
//定金金额
double depositAmount = getDepositAmount(buyerOrder);
// //定金赔偿给卖家
int buyerUid = buyerOrder.getUid();
long buyerOrderCode = buyerOrder.getOrderCode();
int sellerUid = buyerOrder.getSellerUid();
logger.info("Transfer deposit to sellerUid:{} with depositAmount:{},because buyerOrder:{} is canceled", sellerUid, depositAmount, buyerOrderCode);
TransferMoneyRequest tmReq = buildTransferMoneyRequest4Seller(buyerUid, buyerOrderCode, sellerUid, BigDecimal.valueOf(depositAmount));
transferService.transfer(tmReq);
logger.info("Transfer deposit to sellerUid:{} with depositAmount:{} end ", sellerUid, depositAmount);
}
/**
* @param buyerUid
* @param buyerOrderCode
* @param sellerUid
* @param penaltyAmount
* @return
*/
private TransferMoneyRequest buildTransferMoneyRequest4Seller(int buyerUid, long buyerOrderCode,
int sellerUid,
BigDecimal penaltyAmount) {
TransferCase transferCase = TransferCase.PART_GOODS_MONEY_TO_SELLER;
TranseferCellNode transeferCellNode = new TranseferCellNode();
transeferCellNode.setUid(buyerUid);
transeferCellNode.setAmount(penaltyAmount);
TransferMoneyRequest tmReq = TransferMoneyRequest.builder()
.sellerUid(sellerUid)
.buyerOrderCode(buyerOrderCode)
.type(transferCase.getCode())
.transferCase(transferCase)
.transeferCellNode(transeferCellNode)
.build();
return tmReq;
}
@Override
public boolean isSupport(RequestedStatusChangeBuyerOrder statusChangeBuyerOrder) {
OrderStatus sourceStatus = statusChangeBuyerOrder.getSourceStatus();
... ...