|
|
@@ -117,7 +117,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * to update 18
|
|
|
+ * 只能购买一份
|
|
|
* 后期规则:自营服务订单 、需求订单、其他订单不能同时加入购物车
|
|
|
*/
|
|
|
@Override
|
|
|
@@ -130,7 +130,6 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
: new BigDecimal(Double.valueOf(bo.getCommodityFirstPayment()));
|
|
|
BigDecimal discountPrice = commodityPrice.multiply(new BigDecimal(DEFAULT_COMMODITY_DISCOUNT));
|
|
|
BigDecimal discountFirstPayment = commodityFirstPayment.multiply(new BigDecimal(DEFAULT_COMMODITY_DISCOUNT));
|
|
|
- BigDecimal orderAmount = discountPrice.multiply(new BigDecimal(commodityQuantity));
|
|
|
TOrder tOrder = new TOrder();
|
|
|
tOrder.setOrderNo(orderNo);
|
|
|
tOrder.setCreater(DEFAULT_CREATER);
|
|
|
@@ -144,13 +143,17 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
}
|
|
|
tOrder.setOrderType(commodityType);
|
|
|
tOrder.setBrokerageAmount(discountPrice.multiply(new BigDecimal(DEFAULT_BROKERAGE_PROPORTION)));
|
|
|
- tOrder.setFirstPayment(DEFAULT_FIRST_PAYMENT);
|
|
|
- tOrder.setOrderAmount(orderAmount);
|
|
|
- tOrder.setOrderRemarks(remarks);
|
|
|
+ tOrder.setOrderAmount(commodityPrice);
|
|
|
+ tOrder.setFirstPayment(commodityFirstPayment);
|
|
|
+ tOrder.setSignTotalAmount(discountPrice);
|
|
|
+ tOrder.setSignFirstPayment(discountFirstPayment);
|
|
|
+ tOrder.setSignBrokerageAmount(discountPrice.multiply(new BigDecimal(DEFAULT_BROKERAGE_PROPORTION)));
|
|
|
+ tOrder.setSignWithdrawAmount(discountPrice.subtract(discountPrice.multiply(new BigDecimal(DEFAULT_BROKERAGE_PROPORTION))));
|
|
|
tOrder.setDeleteSign(DeleteStatus.UNDELETE.getCode());
|
|
|
tOrder.setOrderChannel(OrderChannel.APP.getCode());
|
|
|
tOrder.setApproval(ApprovalState.NORMAL.getCode());
|
|
|
tOrder.setSalesmanId(getSalesmanIdByUid(TokenManager.getAdminId()));
|
|
|
+ tOrder.setOrderRemarks(remarks);
|
|
|
setOrderState(OrderAction.ADD_INTENTION, new BigDecimal(0), tOrder, false);
|
|
|
|
|
|
TOrderDetail tOrderDetail = new TOrderDetail();
|
|
|
@@ -190,13 +193,9 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
tOrder.setOrderStage(OrderStage.INTENTION.getCode());
|
|
|
tOrder.setProjectStage(ProjectStage.NOT_SATISFY_CONDITION.getCode());
|
|
|
tOrder.setLiquidationStatus(LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode());
|
|
|
- tOrder.setSignFirstPayment(initial);
|
|
|
tOrder.setActuallyFirstPayment(initial);
|
|
|
- tOrder.setSignBrokerageAmount(initial);
|
|
|
tOrder.setActuallyBrokerageAmount(initial);
|
|
|
- tOrder.setSignTotalAmount(initial);
|
|
|
tOrder.setActuallyTotalAmount(initial);
|
|
|
- tOrder.setSignWithdrawAmount(initial);
|
|
|
tOrder.setActuallyWithdrawAmount(initial);
|
|
|
}else if(orderAction == OrderAction.CONFIRM_INTENTION){ //确认意向订单 (用户确认)
|
|
|
if(tOrder.getOrderStatus() != OrderState.WAIT_FOR_CONFIRM.getCode()){
|
|
|
@@ -217,21 +216,25 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
if(boundary2 == 1){
|
|
|
throw new BusinessException(new Error(ErrorConstants.PAY_BEYOND_SIGN,"支付首付款"));
|
|
|
}else if(boundary2 == 0){ //全付清
|
|
|
+ System.out.println("-----------全付清-------------");
|
|
|
tOrder.setActuallyTotalAmount(tOrder.getSignTotalAmount());
|
|
|
tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
|
|
|
tOrder.setLiquidationStatus(LiquidationState.ALREADY_PAY.getCode());
|
|
|
tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
|
|
|
}else if(boundary == 1){ //超过首付未达尾款
|
|
|
+ System.out.println("-----------超过首付未达尾款-------------");
|
|
|
tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
|
|
|
tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
|
|
|
tOrder.setLiquidationStatus(LiquidationState.WAIT_PAY_LAST_BALANCE.getCode());
|
|
|
tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
|
|
|
}else if(boundary == -1){ //首付待付清
|
|
|
+ System.out.println("-----------首付待付清-------------");
|
|
|
tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
|
|
|
tOrder.setActuallyFirstPayment(tOrder.getActuallyFirstPayment().add(changeAmount));
|
|
|
}else if(boundary == 0){ //首付已结清
|
|
|
+ System.out.println("-----------首付已结清-------------");
|
|
|
tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
|
|
|
- tOrder.setActuallyFirstPayment(tOrder.getActuallyFirstPayment().add(changeAmount));
|
|
|
+ tOrder.setActuallyFirstPayment(tOrder.getSignFirstPayment());
|
|
|
tOrder.setLiquidationStatus(LiquidationState.WAIT_PAY_LAST_BALANCE.getCode());
|
|
|
tOrder.setProjectStage(ProjectStage.WAIT_SET_UP.getCode());
|
|
|
}
|
|
|
@@ -241,7 +244,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
}
|
|
|
int boundary = tOrder.getActuallyTotalAmount().add(changeAmount).compareTo(tOrder.getSignTotalAmount());
|
|
|
if(boundary == 1){
|
|
|
- throw new BusinessException(new Error(ErrorConstants.NOT_ACCORD_WITH_NEXT,"支付尾款"));
|
|
|
+ throw new BusinessException(new Error(ErrorConstants.PAY_BEYOND_SIGN,"支付尾款"));
|
|
|
}else if(boundary == -1){
|
|
|
tOrder.setActuallyTotalAmount(tOrder.getActuallyTotalAmount().add(changeAmount));
|
|
|
}else if(boundary == 0){
|
|
|
@@ -267,7 +270,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
}else if(orderAction == OrderAction.APPLY_FOR_CANCEL){ //取消订单
|
|
|
boolean flag = true;
|
|
|
if(tOrder.getOrderStatus() != OrderState.WAIT_FOR_CONFIRM.getCode()
|
|
|
- || tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()){
|
|
|
+ && tOrder.getOrderStatus() != OrderState.WAIT_FOR_SIGN.getCode()){
|
|
|
flag = false;
|
|
|
}
|
|
|
if(tOrder.getLiquidationStatus() != LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode()
|
|
|
@@ -287,12 +290,12 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
if(TokenManager.getUserId().equals(tOrder.getSellerId())){
|
|
|
if(tOrder.getOrderStatus() == OrderState.WAIT_FOR_CONFIRM.getCode())
|
|
|
tOrder.setOrderStatus(OrderState.SELLER_REFUSE_BEFORE_SIGNL.getCode());
|
|
|
- if( tOrder.getOrderStatus() == OrderState.WAIT_FOR_SIGN.getCode())
|
|
|
+ if( tOrder.getOrderStatus() == OrderState.ALREADY_SIGN.getCode())
|
|
|
tOrder.setOrderStatus(OrderState.SELLER_CANCEL_AFTER_SIGN.getCode());
|
|
|
}else if(TokenManager.getUserId().equals(tOrder.getBuyerId())){
|
|
|
if(tOrder.getOrderStatus() == OrderState.WAIT_FOR_CONFIRM.getCode())
|
|
|
tOrder.setOrderStatus(OrderState.BUYER_CANCEL_BEFORE_SIGN.getCode());
|
|
|
- if( tOrder.getOrderStatus() == OrderState.WAIT_FOR_SIGN.getCode())
|
|
|
+ if( tOrder.getOrderStatus() == OrderState.ALREADY_SIGN.getCode())
|
|
|
tOrder.setOrderStatus(OrderState.BUYER_CANCEL_AFTER_SIGN.getCode());
|
|
|
}
|
|
|
}
|
|
|
@@ -389,12 +392,14 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
active.setConfirmIntention(false);
|
|
|
active.setRefuseIntention(false);
|
|
|
}
|
|
|
- if (tOrder.getLiquidationStatus() == LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode()) {
|
|
|
+ if ((tOrder.getOrderStatus() == OrderState.WAIT_FOR_SIGN.getCode() || tOrder.getOrderStatus() == OrderState.ALREADY_SIGN.getCode())
|
|
|
+ && tOrder.getLiquidationStatus() == LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode()) {
|
|
|
active.setPayForFirst(true); //支付首付
|
|
|
} else {
|
|
|
active.setPayForFirst(false); //支付首付
|
|
|
}
|
|
|
- if (tOrder.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()) {
|
|
|
+ if ((tOrder.getOrderStatus() == OrderState.WAIT_FOR_SIGN.getCode() || tOrder.getOrderStatus() == OrderState.ALREADY_SIGN.getCode())
|
|
|
+ && tOrder.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()) {
|
|
|
active.setPayForLast(true); //支付尾款
|
|
|
} else {
|
|
|
active.setPayForLast(false); //支付尾款
|
|
|
@@ -624,8 +629,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
addFundRecord(orderNo, TokenManager.getUserToken().getNickname(), DEFAULT_PLATFORM_ID, TokenManager.getUserId(), remarks,
|
|
|
TransactionSubject.SUPPLY_PAY,PayChannel.UNIONPAY, fundAmount, TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
|
|
|
tOrder.setUpdateTime(new Date());
|
|
|
- tOrderMapper.updateByPrimaryKeySelective(tOrder);
|
|
|
- return 1;
|
|
|
+ return tOrderMapper.updateByPrimaryKeySelective(tOrder);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -634,17 +638,15 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
addFundRecord(orderNo, TokenManager.getUserToken().getNickname(), DEFAULT_PLATFORM_ID, TokenManager.getUserId(), remarks,
|
|
|
TransactionSubject.SUPPLY_PAY,PayChannel.UNIONPAY, fundAmount, TransactionMode.OFFLINE, AuditState.WAIT_AUDIT);
|
|
|
tOrder.setUpdateTime(new Date());
|
|
|
- tOrderMapper.updateByPrimaryKeySelective(tOrder);
|
|
|
- return 1;
|
|
|
+ return tOrderMapper.updateByPrimaryKeySelective(tOrder);
|
|
|
}
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@Override
|
|
|
- //to update 18
|
|
|
public Pagination<C2BOrderDetailBo> selectOrderList(boolean confirm,Integer pageNo,Integer pageSize) {
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
Pagination<C2BOrderDetailBo> result = new Pagination<C2BOrderDetailBo>();
|
|
|
- //if(!confirm) params.put("intentionStatus", IntentionSate.WAIT_SELLER_CONFIRM.getCode()); //购买意向
|
|
|
+ if(!confirm) params.put("orderStatus", OrderState.WAIT_FOR_CONFIRM.getCode()); //购买意向
|
|
|
params.put("uid", TokenManager.getUserId());
|
|
|
Pagination<TOrder> data = (Pagination<TOrder>)findPage("selectOrderListByPage", "selectOrderListCount", params, pageNo, pageSize);
|
|
|
List<TOrder> list = (List<TOrder>)data.getList();
|
|
|
@@ -958,8 +960,7 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public int updateOrderCommodity(String detailId,String commodityId, String commodityName,String commodityMode, Integer commodityQuantity,Integer commodityType,
|
|
|
- String commodityPrice, String discountPrice,String commodityFirstPayment,String discountFirstPayment,String remarks) {
|
|
|
+ public int updateOrderCommodity(String detailId,String discountPrice,String discountFirstPayment,Integer commodityQuantity,String remarks) {
|
|
|
TOrderDetail oldDetail = tOrderDetailMapper.selectByPrimaryKey(detailId);
|
|
|
TOrder tOrder = tOrderMapper.selectByPrimaryKey(oldDetail.getOrderNo());
|
|
|
checkOrder(tOrder);
|
|
|
@@ -969,34 +970,17 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
TOrderDetail detail = new TOrderDetail();
|
|
|
detail.setId(detailId);
|
|
|
detail.setOrderNo(oldDetail.getOrderNo());
|
|
|
- detail.setCommodityId(commodityId);
|
|
|
detail.setCommodityQuantity(commodityQuantity);
|
|
|
- detail.setCommodityType(commodityType);
|
|
|
- detail.setCommodityMode(StringUtils.isBlank(commodityMode) ? DEFAULT_COMMODITY_MODE : commodityMode);
|
|
|
- detail.setCommodityPrice(new BigDecimal(commodityPrice));
|
|
|
detail.setDiscountPrice(new BigDecimal(discountPrice));
|
|
|
- detail.setCommodityFirstPayment(new BigDecimal(commodityFirstPayment));
|
|
|
detail.setDiscountFirstPayment(new BigDecimal(discountFirstPayment));
|
|
|
detail.setRemarks(remarks);
|
|
|
- tOrderDetailMapper.insert(detail);
|
|
|
- new BigDecimal(discountFirstPayment).multiply(new BigDecimal(commodityQuantity)).subtract(
|
|
|
- oldDetail.getDiscountFirstPayment().multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
- // 订单市场价总额
|
|
|
- BigDecimal totalAmountChange = new BigDecimal(commodityPrice).multiply(new BigDecimal(commodityQuantity))
|
|
|
- .subtract(oldDetail.getCommodityPrice().multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
- // 订单市场价首付金额
|
|
|
- BigDecimal firstPaymentChange = new BigDecimal(commodityFirstPayment)
|
|
|
- .multiply(new BigDecimal(commodityQuantity)).subtract(oldDetail.getCommodityFirstPayment()
|
|
|
- .multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
+ tOrderDetailMapper.updateByPrimaryKeySelective(detail);
|
|
|
// 订单签单总额
|
|
|
BigDecimal signTotalAmountChange = new BigDecimal(discountPrice).multiply(new BigDecimal(commodityQuantity))
|
|
|
.subtract(oldDetail.getDiscountPrice().multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
// 订单签单首付金额
|
|
|
- BigDecimal signFirstPaymentChange = new BigDecimal(discountFirstPayment)
|
|
|
- .multiply(new BigDecimal(commodityQuantity)).subtract(oldDetail.getDiscountFirstPayment()
|
|
|
- .multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
- tOrder.setOrderAmount(tOrder.getOrderAmount().add(totalAmountChange));
|
|
|
- tOrder.setFirstPayment(tOrder.getFirstPayment().add(firstPaymentChange));
|
|
|
+ BigDecimal signFirstPaymentChange = new BigDecimal(discountFirstPayment).multiply(new BigDecimal(commodityQuantity))
|
|
|
+ .subtract(oldDetail.getDiscountFirstPayment().multiply(new BigDecimal(oldDetail.getCommodityQuantity())));
|
|
|
tOrder.setSignTotalAmount(tOrder.getSignTotalAmount().add(signTotalAmountChange));
|
|
|
tOrder.setSignFirstPayment(tOrder.getSignFirstPayment().add(signFirstPaymentChange));
|
|
|
tOrder.setUpdateTime(new Date());
|
|
|
@@ -1283,14 +1267,20 @@ public class OrderServiceImpl extends BaseMybatisDao<TOrderMapper> implements Or
|
|
|
bill.setConfirmTime(confirmTime);
|
|
|
bill.setConfirmSign(AuditState.AUDIT_SUCCESS.getCode());
|
|
|
checkOrder(order);
|
|
|
- if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode())
|
|
|
- setOrderState(OrderAction.CONFIRM_PAY_FOR_FIRST, bill.getTransactionAmount(), order, false);
|
|
|
- if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode())
|
|
|
+ if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_FIRST_BALANCE.getCode()
|
|
|
+ && bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode()) //代付+首付状态
|
|
|
+ setOrderState(OrderAction.CONFIRM_PAY_FOR_FIRST, bill.getTransactionAmount(), order, false);
|
|
|
+ else if(order.getLiquidationStatus() == LiquidationState.WAIT_PAY_LAST_BALANCE.getCode()
|
|
|
+ && bill.getTransactionSubject() == TransactionSubject.SUPPLY_PAY.getCode()) //代付+尾款状态
|
|
|
setOrderState(OrderAction.CONFIRM_PAY_FOR_LAST, bill.getTransactionAmount(), order, false);
|
|
|
- if(order.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode())
|
|
|
+ else if(order.getLiquidationStatus() == LiquidationState.AGREE_REFUND.getCode()
|
|
|
+ && bill.getTransactionSubject() == TransactionSubject.REFUND.getCode()) //待退+退款状态
|
|
|
setOrderState(OrderAction.COMPLETE_REFUND, bill.getTransactionAmount(), order, false);
|
|
|
- if(order.getLiquidationStatus() == LiquidationState.WAIT_FOR_WITHDRAW.getCode())
|
|
|
- setOrderState(OrderAction.CONFIRM_WITHDRAW, bill.getTransactionAmount(), order, false);
|
|
|
+ else if(order.getLiquidationStatus() == LiquidationState.WAIT_FOR_WITHDRAW.getCode()
|
|
|
+ && bill.getTransactionSubject() == TransactionSubject.SUPPLY_COLLECT.getCode()) //代收+提现状态
|
|
|
+ setOrderState(OrderAction.CONFIRM_WITHDRAW, bill.getTransactionAmount(), order, false);
|
|
|
+ else
|
|
|
+ throw new BusinessException(new Error(ErrorConstants.BILL_ALREADY_EXPIRE, billNo , ""));
|
|
|
order.setUpdateTime(new Date());
|
|
|
tOrderMapper.updateByPrimaryKeySelective(order);
|
|
|
}else if(confrim == AFTConstants.NO){
|