|
@@ -13,6 +13,9 @@ import com.fdkankan.redis.util.RedisUtil;
|
|
|
import com.fdkankan.ucenter.common.RedisKeyUtil;
|
|
|
import com.fdkankan.ucenter.constant.*;
|
|
|
import com.fdkankan.ucenter.entity.*;
|
|
|
+import com.fdkankan.ucenter.httpClient.param.PayGoods;
|
|
|
+import com.fdkankan.ucenter.httpClient.service.PayService;
|
|
|
+import com.fdkankan.ucenter.httpClient.vo.PayOrderVo;
|
|
|
import com.fdkankan.ucenter.mapper.IOrderMapper;
|
|
|
import com.fdkankan.ucenter.pay.alipay.sdk.AlipayService;
|
|
|
import com.fdkankan.ucenter.pay.wx.WXPay;
|
|
@@ -27,6 +30,7 @@ import com.fdkankan.ucenter.vo.request.OrderParam;
|
|
|
import com.fdkankan.ucenter.vo.request.PlaceOrderParam;
|
|
|
import com.fdkankan.ucenter.vo.response.GoodsSkuVo;
|
|
|
import com.fdkankan.ucenter.vo.response.OrderVo;
|
|
|
+import com.google.common.collect.Ordering;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -121,6 +125,9 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
this.update(wrapper);
|
|
|
}
|
|
|
|
|
|
+ @Autowired
|
|
|
+ PayService payService;
|
|
|
+
|
|
|
@Override
|
|
|
public Order placeOrder(PlaceOrderParam param) {
|
|
|
List<Long> id = param.getGoods().parallelStream().map(CartParam::getId).collect(Collectors.toList());
|
|
@@ -135,7 +142,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
OrderItem orderItemEntity = null;
|
|
|
int goodsTotalCount = 0;
|
|
|
BigDecimal goodsAmount = new BigDecimal(0);
|
|
|
-
|
|
|
+ List<PayGoods> goodsInfoList = new ArrayList<>();
|
|
|
for(CartParam requestCart : param.getGoods()){
|
|
|
goodsTotalCount += requestCart.getGoodsCount();
|
|
|
|
|
@@ -165,10 +172,16 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
orderItemEntities.add(orderItemEntity);
|
|
|
|
|
|
goodsAmount = goodsAmount.add(orderItemEntity.getGoodsPrice().multiply(new BigDecimal(orderItemEntity.getGoodsCount())));
|
|
|
+ PayGoods payGoods = new PayGoods(orderItemEntity.getGoodsName(),orderItemEntity.getGoodsCount());
|
|
|
+ goodsInfoList.add(payGoods);
|
|
|
}
|
|
|
|
|
|
+ PayOrderVo payOrderVo = payService.downOrder(goodsAmount, "partOrder",user.getUserName(),user.getNickName(),goodsInfoList);
|
|
|
+ if(payOrderVo == null){
|
|
|
+ throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005);
|
|
|
+ }
|
|
|
Order orderEntity = new Order();
|
|
|
- orderEntity.setOrderSn(NumberUtils.getOrderSn());
|
|
|
+ orderEntity.setOrderSn(payOrderVo.getOrderSn());
|
|
|
orderEntity.setOrderTime(DateUserUtil.getDate(new Date()));
|
|
|
orderEntity.setOrderStatus(OrderStatus.unprocessed.name());
|
|
|
orderEntity.setPaymentStatus(PaymentStatus.unpaid.name());
|
|
@@ -209,90 +222,24 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
|
|
|
@Override
|
|
|
public boolean queryOrderStatus(OrderParam param) throws Exception {
|
|
|
- boolean success = false;
|
|
|
String orderSn = param.getOrderSn();
|
|
|
- switch (param.getOrderType()){
|
|
|
- case 0:
|
|
|
- orderSn += "_entity";
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- orderSn += "_recharge";
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- orderSn += "_expansion";
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- orderSn += "_commerce";
|
|
|
- break;
|
|
|
- case 4: //国内参数
|
|
|
- case 6: //国际服参数
|
|
|
- orderSn += "_increment";
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- orderSn += "_download";
|
|
|
- break;
|
|
|
+ if(StringUtils.isBlank(orderSn)){
|
|
|
+ return false;
|
|
|
}
|
|
|
- if(param.getPayType()!= 2 && !redisUtil.hasKey(RedisKeyUtil.QRCODE + orderSn)){
|
|
|
- String wxPngPath = QrCodeFilePath.WEIXIN_QRCODE_FOLDER + orderSn + ".png";
|
|
|
- String aliPngPath = QrCodeFilePath.ALI_QRCODE_FOLDER + orderSn + ".png";
|
|
|
- FileUtils.deleteFile(wxPngPath);
|
|
|
- FileUtils.deleteFile(aliPngPath);
|
|
|
- //throw new BusinessException(LoginConstant.FAILURE_CODE_3035,LoginConstant.FAILURE_MSG_3035);
|
|
|
+ Order order = orderService.getByOrderSn(orderSn);
|
|
|
+ //付款状态(未付款unpaid、已付款paid、已取消cancel, 部分支付partPayment, 部分退款partRefund, 全额退款refunded)
|
|
|
+ if(order != null && order.getPaymentStatus().equals("paid")){
|
|
|
+ return true;
|
|
|
}
|
|
|
- switch (param.getPayType()){
|
|
|
- // 微信
|
|
|
- case 0:
|
|
|
- String orderSnE = redisUtil.get(orderSn);
|
|
|
- log.warn("out_trade_no:" + orderSnE);
|
|
|
- if (StringUtils.isNotEmpty(orderSnE)){
|
|
|
- Map<String, String> data = new HashMap<String, String>();
|
|
|
- data.put("out_trade_no", orderSnE);
|
|
|
- WXPayDefaultConfig config = new WXPayDefaultConfig();
|
|
|
- WXPay wxPay = new WXPay(config);
|
|
|
- Map<String, String> resp = wxPay.orderQuery(data);
|
|
|
- if (resp.get("trade_state") != null && resp.get("trade_state").equals(WXPayConstants.SUCCESS)) {
|
|
|
- redisUtil.del(orderSnE);
|
|
|
- success = true;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- // 支付宝
|
|
|
- case 1:
|
|
|
- log.warn("alipay out_trade_no:" + orderSn);
|
|
|
- String type = alipayService.tradeQuery(orderSn);
|
|
|
- log.warn("alipay type:" + type);
|
|
|
- if ("SUCCESS".equals(type)){
|
|
|
- success = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- // paypal
|
|
|
- case 2:
|
|
|
- String[] str = orderSn.split("_");
|
|
|
- orderSn = str[0];
|
|
|
- String key = str[1];
|
|
|
-
|
|
|
- if(key.equals("increment")){
|
|
|
- log.warn("paypal out_trade_no:" + orderSn);
|
|
|
- IncrementOrder orderEntity = incrementOrderService.getByOrderSn(orderSn);
|
|
|
- if (orderEntity.getPayStatus().equals(1)){
|
|
|
- success = true;
|
|
|
- }
|
|
|
- } else if(key.equals("download")) {
|
|
|
- log.warn("paypal out_trade_no:" + orderSn);
|
|
|
- DownloadOrder orderEntity = downloadOrderService.getByOrderSn(orderSn);
|
|
|
- if (orderEntity.getPayStatus().equals(1)) {
|
|
|
- success = true;
|
|
|
- }
|
|
|
- }else{
|
|
|
- log.warn("paypal out_trade_no:" + orderSn);
|
|
|
- Order orderEntity = orderService.getByOrderSn(orderSn);
|
|
|
- if (PaymentStatus.paid.name().equals(orderEntity.getPaymentStatus())){
|
|
|
- success = true;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
+ DownloadOrder downloadOrder = downloadOrderService.getByOrderSn(orderSn);
|
|
|
+ if(downloadOrder != null && downloadOrder.getPayStatus() == 1){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ IncrementOrder incrementOrder = incrementOrderService.getByOrderSn(orderSn);
|
|
|
+ if(incrementOrder != null && incrementOrder.getPayStatus() == 1){
|
|
|
+ return true;
|
|
|
}
|
|
|
- return success;
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -328,7 +275,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
|
|
|
}
|
|
|
|
|
|
- return downloadOrderService.insertDownloadOrder(user.getId(),param,incrementType.getDownloadPrice());
|
|
|
+ return downloadOrderService.insertDownloadOrder(user,param,incrementType.getDownloadPrice());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -345,7 +292,7 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
|
|
|
if(incrementType == null){
|
|
|
throw new BusinessException(OrderConstant.FAILURE_CODE_8004, OrderConstant.FAILURE_MSG_8004);
|
|
|
}
|
|
|
- return incrementOrderService.insertIncrementOrder(user.getId(), param,incrementType);
|
|
|
+ return incrementOrderService.insertIncrementOrder(user, param,incrementType);
|
|
|
}
|
|
|
|
|
|
@Override
|