Authored by chenchao

check is change price order

package com.yohoufo.order.service.impl;
import com.google.common.collect.Lists;
import com.yoho.core.rest.client.ServiceCaller;
import com.yoho.error.ServiceError;
import com.yoho.error.exception.ServiceException;
import com.yohobuy.ufo.model.order.common.OrderAttributes;
import com.yohobuy.ufo.model.order.constants.ChangePriceStatus;
import com.yohobuy.ufo.model.order.constants.SkupType;
import com.yohobuy.ufo.model.promotion.UserCouponsBo;
import com.yohoufo.common.alarm.EventBusPublisher;
import com.yohoufo.common.exception.UfoServiceException;
import com.yohoufo.common.utils.AddressUtil;
import com.yohoufo.dal.order.SellerChangePriceRecordMapper;
import com.yohoufo.dal.order.SellerOrderGoodsMapper;
import com.yohoufo.dal.order.SellerOrderMapper;
import com.yohoufo.dal.order.model.SellerChangePriceRecord;
import com.yohoufo.dal.order.model.SellerOrder;
import com.yohoufo.dal.order.model.SellerOrderGoods;
import com.yohobuy.ufo.model.order.common.OrderCodeType;
import com.yohobuy.ufo.model.order.common.SkupStatus;
... ... @@ -43,6 +50,7 @@ import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
import com.yohoufo.order.utils.AddressHelper;
import com.yohoufo.order.utils.LoggerUtils;
import com.yohoufo.order.utils.MathUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.slf4j.Logger;
... ... @@ -99,6 +107,11 @@ public class ShoppingServiceImpl implements IShoppingService {
@Autowired
private CouponSupport couponSupport;
@Autowired
private SellerChangePriceRecordMapper sellerChangePriceRecordMapper;
@Autowired
private SellerOrderMapper sellerOrderMapper;
/**
* 结算页数据
* @param request
... ... @@ -106,8 +119,9 @@ public class ShoppingServiceImpl implements IShoppingService {
*/
public PaymentResponse payment(ShoppingRequest request){
int skup;
int uid;
// 入口参数检查
if ((skup=request.getSkup()) < 0 || request.getUid() <0){
if ((skup=request.getSkup()) < 0 || (uid=request.getUid()) <0){
logger.warn("payment uid or skup is null");
throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
}
... ... @@ -115,6 +129,7 @@ public class ShoppingServiceImpl implements IShoppingService {
// 检查 商品sku是否可售
SellerOrderGoods skupGood = checkSkupSellOrNot(request.getSkup());
checkSkupIsChangePrice(uid, skup);
//构建算费
ChargeContext chargeContext = buildChargeContext(request, skupGood);
//算费
... ... @@ -153,6 +168,19 @@ public class ShoppingServiceImpl implements IShoppingService {
return skupGood;
}
private void checkSkupIsChangePrice(int buyerUid, int skup){
SellerOrder sellerOrder = sellerOrderMapper.selectBySkup(skup);
Long orderCode = sellerOrder.getOrderCode();
List<Short> statusList = Lists.newArrayList(ChangePriceStatus.WAITING_DEAL.getCode(),
ChangePriceStatus.SUCCESS.getCode());
List<SellerChangePriceRecord> scprs = sellerChangePriceRecordMapper.selectByPreOrderCodeNStatus(orderCode, statusList);
if (CollectionUtils.isNotEmpty(scprs)){
logger.warn("choose a change price goods,buyerUid {} skup {}", buyerUid, skup);
throw new UfoServiceException(401, "商品不可售,请重新选购");
}
}
private ChargeContext buildChargeContext(ShoppingRequest request, SellerOrderGoods skupInfo) {
ChargeParam chargeParam = ChargeParam.builder().uid(request.getUid())
.deliveryWay(buildDeliveryWay())
... ... @@ -202,13 +230,16 @@ public class ShoppingServiceImpl implements IShoppingService {
public ComputeResponse compute(ShoppingRequest request) {
// 入口参数检查
if ((request.getSkup()) < 0 || request.getUid() < 0) {
int uid;
if ((request.getSkup()) < 0 || (uid=request.getUid()) < 0) {
logger.warn("compute uid or skup is null");
throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
}
int skup;
// 检查 商品sku是否可售
SellerOrderGoods skupGood = checkSkupSellOrNot(request.getSkup());
SellerOrderGoods skupGood = checkSkupSellOrNot(skup=request.getSkup());
// 检查
checkSkupIsChangePrice(uid, skup);
//构建算费
ChargeContext chargeContext = buildChargeContext(request, skupGood);
//算费
... ... @@ -230,10 +261,11 @@ public class ShoppingServiceImpl implements IShoppingService {
* @return
*/
public OrderSubmitResponse submit(ShoppingRequest shoppingRequest){
int skup;
int uid;
// 入口参数检查
if (shoppingRequest.getSkup() < 0
|| shoppingRequest.getUid() < 0
if ((skup=shoppingRequest.getSkup()) < 0
|| (uid=shoppingRequest.getUid()) < 0
|| StringUtils.isEmpty(shoppingRequest.getAddressId())){
logger.warn("submit param is null");
throw new ServiceException(ServiceError.ORDER_REQUEST_PARM_IS_EMPTY);
... ... @@ -245,6 +277,7 @@ public class ShoppingServiceImpl implements IShoppingService {
// 检查skup是否可售
SellerOrderGoods psog = checkSkupSellOrNot(shoppingRequest.getSkup());
checkSkupIsChangePrice(uid, skup);
//算费
ChargeContext chargeContext = buildChargeContext(shoppingRequest,psog);
chargeService.charge(chargeContext);
... ... @@ -258,9 +291,8 @@ public class ShoppingServiceImpl implements IShoppingService {
// 减库存,skup更新成不可售,入库
//BigDecimal shipFee = new BigDecimal(delivery_way_sf_cost);
int uid;
OrderBuilder orderBuilder = OrderBuilder.builder()
.uid(uid=shoppingRequest.getUid())
.uid(uid)
.skup(shoppingRequest.getSkup())
.orderCode(orderCode)
.productId(psog.getProductId())
... ...