|
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
-import com.yonge.cooleshow.enums.OrderStatusEnum;
|
|
|
import com.yonge.cooleshow.enums.PayStatusEnum;
|
|
|
import com.yonge.cooleshow.mall.common.api.CommonPage;
|
|
|
import com.yonge.cooleshow.mall.common.exception.Asserts;
|
|
@@ -19,11 +18,10 @@ import com.yonge.cooleshow.portal.dao.SmsCouponHistoryDao;
|
|
|
import com.yonge.cooleshow.portal.domain.*;
|
|
|
import com.yonge.cooleshow.portal.service.*;
|
|
|
import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
|
|
|
-import com.yonge.cooleshow.sdk.req.OrderCloseReq;
|
|
|
import com.yonge.cooleshow.sdk.req.OrderPayReq;
|
|
|
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
|
|
|
import com.yonge.cooleshow.sdk.res.OrderPayRes;
|
|
|
import com.yonge.cooleshow.service.PaymentService;
|
|
|
+import com.yonge.toolset.utils.string.StringUtil;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -92,7 +90,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
ConfirmOrderResult result = new ConfirmOrderResult();
|
|
|
//获取购物车信息
|
|
|
UmsMember currentMember = memberService.getCurrentMember();
|
|
|
- List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), cartIds);
|
|
|
+ List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), cartIds,true);
|
|
|
result.setCartPromotionItemList(cartPromotionItemList);
|
|
|
//获取用户收货地址列表
|
|
|
List<UmsMemberReceiveAddress> memberReceiveAddressList = memberReceiveAddressService.list();
|
|
@@ -116,7 +114,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
List<OmsOrderItem> orderItemList = new ArrayList<>();
|
|
|
//获取购物车及优惠信息
|
|
|
UmsMember currentMember = memberService.getCurrentMember();
|
|
|
- List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), orderParam.getCartIds());
|
|
|
+ List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(), orderParam.getCartIds(),
|
|
|
+ true);
|
|
|
for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
|
|
|
//生成下单商品信息
|
|
|
OmsOrderItem orderItem = new OmsOrderItem();
|
|
@@ -182,6 +181,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
lockStock(cartPromotionItemList);
|
|
|
//根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
|
|
|
OmsOrder order = new OmsOrder();
|
|
|
+ StringBuilder cartIds = new StringBuilder();
|
|
|
+ for (Long cartId : orderParam.getCartIds()) {
|
|
|
+ cartIds.append(cartId.toString());
|
|
|
+ }
|
|
|
+ order.setCartIds(cartIds.toString());
|
|
|
order.setDiscountAmount(new BigDecimal(0));
|
|
|
order.setTotalAmount(calcTotalAmount(orderItemList));
|
|
|
order.setFreightAmount(new BigDecimal(0));
|
|
@@ -327,26 +331,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
UmsMember member = memberService.getById(cancelOrder.getMemberId());
|
|
|
memberService.updateIntegration(cancelOrder.getMemberId(), member.getIntegration() + cancelOrder.getUseIntegration());
|
|
|
}
|
|
|
- UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(cancelOrder.getOrderSn());
|
|
|
- if (null != orderPayment) {
|
|
|
- // 发起关单
|
|
|
- OrderCloseReq orderCloseReq = new OrderCloseReq();
|
|
|
- orderCloseReq.setPaymentId(orderPayment.getTransNo());
|
|
|
- orderCloseReq.setReason(message);
|
|
|
- OrderCloseRes closeRes = adapayPaymentService.orderClose(orderCloseReq);
|
|
|
- if (closeRes.isStatus()) {
|
|
|
- orderPayment.setCloseStatus(PayStatusEnum.pending.getCode());
|
|
|
- } else {
|
|
|
- orderPayment.setCloseStatus(PayStatusEnum.failed.getCode());
|
|
|
- orderPayment.setCloseFailMsg(closeRes.getFailMsg());
|
|
|
- }
|
|
|
+ // 发起关单
|
|
|
+ userOrderPaymentService.closePayment(cancelOrder.getOrderSn(),message);
|
|
|
|
|
|
- //更新付款单
|
|
|
- orderPayment.setStatus(PayStatusEnum.failed.getCode());
|
|
|
- orderPayment.setPayFailMsg(message);
|
|
|
- orderPayment.setUpdateTime(new Date());
|
|
|
- userOrderPaymentService.saveOrUpdate(orderPayment);
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -376,8 +363,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public CommonPage<OmsOrderDetail> list(Integer status, Integer pageNum, Integer pageSize) {
|
|
|
- if(status==-1){
|
|
|
+ public CommonPage<OmsOrderDetail> list(String status, Integer pageNum, Integer pageSize) {
|
|
|
+ if(status.equals("-1")){
|
|
|
status = null;
|
|
|
}
|
|
|
UmsMember member = memberService.getCurrentMember();
|
|
@@ -386,8 +373,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
OmsOrderExample.Criteria criteria = orderExample.createCriteria();
|
|
|
criteria.andDeleteStatusEqualTo(0)
|
|
|
.andMemberIdEqualTo(member.getId());
|
|
|
- if(status!=null){
|
|
|
- criteria.andStatusEqualTo(status);
|
|
|
+ if(status != null && !StringUtil.isEmpty(status)) {
|
|
|
+ List<Long> list = StringUtil.toLongList(status);
|
|
|
+ List<Integer> collect = list.stream().map(Long::intValue).collect(Collectors.toList());
|
|
|
+ criteria.andStatusIn(collect);
|
|
|
}
|
|
|
orderExample.setOrderByClause("create_time desc");
|
|
|
List<OmsOrder> orderList = orderMapper.selectByExample(orderExample);
|
|
@@ -479,16 +468,20 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
orderPayRes.setMessage("订单已付款或已关闭");
|
|
|
return orderPayRes;
|
|
|
}
|
|
|
+ payReq.setOrderPrice(detail.getPayAmount());
|
|
|
UserOrderPayment userOrderPayment = userOrderPaymentService
|
|
|
.getByOrderNo(detail.getOrderSn(), payReq.getPayChannel(), PayStatusEnum.pending);
|
|
|
- payReq.orderStatus(detail.getStatus());
|
|
|
- payReq.setOrderNo(detail.getOrderSn());
|
|
|
- payReq.setOrderPrice(detail.getPayAmount());
|
|
|
- payReq.setGoodTitle("");
|
|
|
- payReq.setGoodDesc("");
|
|
|
- if (userOrderPayment != null) {
|
|
|
+
|
|
|
+ if (userOrderPayment == null) {
|
|
|
+ // 支付订单号
|
|
|
+ payReq.setOrderNo(generateOrderSn(detail));
|
|
|
+ }else {
|
|
|
+ // 拉起原有的支付
|
|
|
payReq.setPayInfo(userOrderPayment.getPayInfo());
|
|
|
+ return adapayPaymentService.orderContinue(payReq);
|
|
|
}
|
|
|
+ payReq.setGoodTitle("酷乐秀商城订单编号-" + detail.getOrderSn());
|
|
|
+ payReq.setGoodDesc("酷乐秀商城订单编号-" + detail.getOrderSn());
|
|
|
// 支付中的返回拉起信息
|
|
|
orderPayRes = adapayPaymentService.orderPay(payReq);
|
|
|
if (!orderPayRes.isStatus()) {
|
|
@@ -500,23 +493,16 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
cancelOrder(detail.getId(),"订单金额和实际支付金额不符");
|
|
|
throw new BizException("订单金额和实际支付金额不符");
|
|
|
}
|
|
|
- // 订单状态和付款状态都是付款中,直接返回付款拉起信息
|
|
|
- if (OrderStatusEnum.PAYING.getCode().equals(payReq.getOrderStatus().getCode())
|
|
|
- && PayStatusEnum.pending.getCode().equals(orderPayRes.getPayStatus().getCode())) {
|
|
|
- return orderPayRes;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
OmsOrder omsOrder = new OmsOrder();
|
|
|
omsOrder.setId(detail.getId());
|
|
|
- if (orderPayRes.getPayStatus().getCode().equals(OrderStatusEnum.PAYING.getCode())) {
|
|
|
+ if (orderPayRes.getPayStatus().getCode().equals(PayStatusEnum.pending.getCode())) {
|
|
|
omsOrder.setStatus(0);
|
|
|
orderMapper.updateByPrimaryKeySelective(omsOrder);
|
|
|
// 保存订单支付表
|
|
|
- if (userOrderPayment == null) {
|
|
|
- userOrderPayment = new UserOrderPayment();
|
|
|
- }
|
|
|
- userOrderPayment.setOrderNo(orderPayRes.getOrderNo());
|
|
|
+ userOrderPayment = new UserOrderPayment();
|
|
|
+ userOrderPayment.setOrderNo(detail.getOrderSn());
|
|
|
+ userOrderPayment.setAdapayNo(orderPayRes.getOrderNo());
|
|
|
userOrderPayment.setPayChannel(orderPayRes.getPayChannel());
|
|
|
userOrderPayment.setTransNo(orderPayRes.getTransNo());
|
|
|
userOrderPayment.setPayAmt(new BigDecimal(orderPayRes.getPay_amt()));
|
|
@@ -535,6 +521,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public OmsOrder getOrderById(Long orderId) {
|
|
|
+ return orderMapper.selectByPrimaryKey(orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
public void orderCallback(String data, String type) {
|
|
|
JSONObject hfRes = JSONObject.parseObject(data);
|
|
|
|
|
@@ -635,9 +626,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
void payingOrderHandle(OmsOrder userOrder) {
|
|
|
//判断汇付订单状态
|
|
|
- UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(userOrder.getOrderSn());
|
|
|
+ UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNoAndStatusPaying(userOrder.getOrderSn());
|
|
|
if (null == orderPayment) {
|
|
|
- return;
|
|
|
+ cancelOrder(userOrder.getId(), "支付超时");
|
|
|
}
|
|
|
try {
|
|
|
Map<String, Object> resMap = paymentSdk.queryPayment(orderPayment.getTransNo());
|
|
@@ -659,14 +650,13 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
/**
|
|
|
* 订单完成
|
|
|
*
|
|
|
- * @author liweifan
|
|
|
* @param: detail
|
|
|
* @updateTime 2022/4/13 17:17
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
void orderSuccess(OmsOrder detail, JSONObject hfRes) {
|
|
|
//更新订单
|
|
|
- UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(detail.getOrderSn());
|
|
|
+ UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNoAndStatusPaying(detail.getOrderSn());
|
|
|
if (orderPayment.getPayChannel().equals("alipay")) {
|
|
|
paySuccess(detail.getId(),1);
|
|
|
} else if (orderPayment.getPayChannel().equals("wx_lite")) {
|
|
@@ -984,9 +974,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
*/
|
|
|
private void lockStock(List<CartPromotionItem> cartPromotionItemList) {
|
|
|
for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
|
|
|
- PmsSkuStock skuStock = skuStockMapper.selectByPrimaryKey(cartPromotionItem.getProductSkuId());
|
|
|
- skuStock.setLockStock(skuStock.getLockStock() + cartPromotionItem.getQuantity());
|
|
|
- skuStockMapper.updateByPrimaryKeySelective(skuStock);
|
|
|
+ int i = skuStockMapper.lockStock(cartPromotionItem.getProductSkuId(),cartPromotionItem.getQuantity());
|
|
|
+ if (i == 0) {
|
|
|
+ Asserts.fail("库存不足,无法下单");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|