|
@@ -76,6 +76,7 @@ import com.kmall.common.utils.wechat.WechatReverseApiResult;
|
|
|
import com.kmall.manager.manager.alipay.AliPayMicropayApiResult;
|
|
|
import com.kmall.manager.manager.alipay.AliPayRequestParams;
|
|
|
import com.kmall.manager.manager.alipay.AliPayUtil;
|
|
|
+import com.kmall.manager.manager.dto.PayOriginInfoDTO;
|
|
|
import com.kmall.manager.manager.express.kdn.KdniaoUtil;
|
|
|
import com.kmall.manager.manager.express.sf.ServiceException;
|
|
|
import com.kmall.manager.manager.express.sf.entity.RouteEntity;
|
|
@@ -2668,6 +2669,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
String couponSn = (String) userInfo.get("couponSn");
|
|
|
order.setMerchOrderSn(merchOrderSn);
|
|
|
order.setCoupon_name(couponSn); // 借用这个字段来记录是否使用优惠券
|
|
|
+ order.setIdCard(userEntity.getIdNo());
|
|
|
//插入订单信息和订单商品
|
|
|
orderDao.saveOrderVo(order);
|
|
|
|
|
@@ -2906,6 +2908,14 @@ public class OrderServiceImpl implements OrderService {
|
|
|
+ "");
|
|
|
|
|
|
JedisUtil.del(Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId);
|
|
|
+
|
|
|
+ // TODO 推单测试用
|
|
|
+ order.setPayApp("wxpay");
|
|
|
+ order.setRequest("1111111111111111111");
|
|
|
+ order.setResponse("2222222222222222222");
|
|
|
+ // 推单
|
|
|
+ sendOrderInfoToVmcShop(order, orderGoodsVoList);
|
|
|
+
|
|
|
return resultObj;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@@ -2915,6 +2925,110 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 免税mall创建订单
|
|
|
+ * @param order 订单信息:包含订单信息,支付信息,跨境信息
|
|
|
+ * @param orderGoodsVoList 订单详情数据
|
|
|
+ */
|
|
|
+ private void sendOrderInfoToVmcShop(OrderVo order, List<OrderGoodsVo> orderGoodsVoList) {
|
|
|
+ SendOrderToVmcShopDTO sendOrderToVmcShopDTO = new SendOrderToVmcShopDTO();
|
|
|
+
|
|
|
+ OrderInfoDTO orderInfoDTO = wrapOrderInfo(order);
|
|
|
+ PayInfoDTO payInfoDTO = wrapPayInfo(order);
|
|
|
+ SeaportInfoDTO seaportInfoDTO = wrapSeaportInfo(order);
|
|
|
+ List<OrderProductInfoDTO> orderProductInfoDTOList = orderGoodsVoList.stream().map(this::wrapOrderProductInfo).collect(Collectors.toList());
|
|
|
+ seaportInfoDTO.setOrderProductInfoList(orderProductInfoDTOList);
|
|
|
+ List<OrderInfoItemDTO> orderInfoItemDTOList = orderGoodsVoList.stream().map(this::wrapOrderInfoItem).collect(Collectors.toList());
|
|
|
+
|
|
|
+ sendOrderToVmcShopDTO.setOrderInfo(orderInfoDTO);
|
|
|
+ sendOrderToVmcShopDTO.setOrderInfoItems(orderInfoItemDTOList);
|
|
|
+ sendOrderToVmcShopDTO.setSeaportInfo(seaportInfoDTO);
|
|
|
+ sendOrderToVmcShopDTO.setPayInfo(payInfoDTO);
|
|
|
+
|
|
|
+ String body = JacksonUtil.toJson(sendOrderToVmcShopDTO);
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ String response = vmcShopTemplate.sendOrder(body);
|
|
|
+
|
|
|
+ com.kmall.admin.haikong.utils.R<String> r = JacksonUtil.fromListJson(response, new TypeReference<com.kmall.admin.haikong.utils.R<String>>() {});
|
|
|
+
|
|
|
+ if (Objects.nonNull(r) && r.getCode() == 0) {
|
|
|
+ LOGGER.info("推送订单到免税mall成功!响应结果:{}", response);
|
|
|
+ } else {
|
|
|
+ LOGGER.error("推送订单到免税mall失败!响应结果:{}", response);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("推送订单到免税mall失败!出现异常!", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private SeaportInfoDTO wrapSeaportInfo(OrderVo order) {
|
|
|
+ SeaportInfoDTO seaportInfoDTO = new SeaportInfoDTO();
|
|
|
+ seaportInfoDTO.setSeaportCode("4600");
|
|
|
+ seaportInfoDTO.setPlatform("1");
|
|
|
+ seaportInfoDTO.setIdentityCard(order.getIdCard());
|
|
|
+ seaportInfoDTO.setIdentityName(order.getPay_name());
|
|
|
+ seaportInfoDTO.setIdentityMobile(order.getMobile());
|
|
|
+ return seaportInfoDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private PayInfoDTO wrapPayInfo(OrderVo order) {
|
|
|
+ PayInfoDTO payInfoDTO = new PayInfoDTO();
|
|
|
+ payInfoDTO.setMoney(order.getActual_price());
|
|
|
+ payInfoDTO.setPayMode("offline");
|
|
|
+ payInfoDTO.setRequest(order.getRequest());
|
|
|
+ payInfoDTO.setResponse(order.getResponse());
|
|
|
+ payInfoDTO.setOutTradeNo(order.getOrder_sn());
|
|
|
+ return payInfoDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OrderInfoItemDTO wrapOrderInfoItem(OrderGoodsVo orderGoodsVo) {
|
|
|
+ OrderInfoItemDTO orderInfoItemDTO = new OrderInfoItemDTO();
|
|
|
+ orderInfoItemDTO.setOrderId(orderGoodsVo.getOrderSn());
|
|
|
+ orderInfoItemDTO.setImageUrl(orderGoodsVo.getList_pic_url());
|
|
|
+ orderInfoItemDTO.setBn("11111111");
|
|
|
+ orderInfoItemDTO.setBarcode(orderGoodsVo.getBarcode());
|
|
|
+ orderInfoItemDTO.setName(orderGoodsVo.getGoods_name());
|
|
|
+ orderInfoItemDTO.setCost(orderGoodsVo.getMarket_price());
|
|
|
+ orderInfoItemDTO.setPrice(orderGoodsVo.getRetail_price());
|
|
|
+ orderInfoItemDTO.setItemcode(orderGoodsVo.getSku());
|
|
|
+ orderInfoItemDTO.setAmount(orderGoodsVo.getActualPaymentAmount());
|
|
|
+ orderInfoItemDTO.setNums(orderGoodsVo.getNumber());
|
|
|
+ orderInfoItemDTO.setTax(true);
|
|
|
+ orderInfoItemDTO.setTaxPrice(orderGoodsVo.getTaxPrice());
|
|
|
+ return orderInfoItemDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OrderInfoDTO wrapOrderInfo(OrderVo order) {
|
|
|
+ OrderInfoDTO orderInfoDTO = new OrderInfoDTO();
|
|
|
+ orderInfoDTO.setOuterOrderNo(order.getOrder_sn());
|
|
|
+ orderInfoDTO.setPayApp(order.getPayApp());
|
|
|
+ orderInfoDTO.setDlytypeCode("SF");
|
|
|
+ orderInfoDTO.setConsigneeName(order.getPay_name());
|
|
|
+ orderInfoDTO.setConsigneeAreaProvince(order.getProvince());
|
|
|
+ orderInfoDTO.setConsigneeAreaCity(order.getCity());
|
|
|
+ orderInfoDTO.setConsigneeAreaCounty(order.getDistrict());
|
|
|
+ orderInfoDTO.setConsigneeAddress(order.getAddress());
|
|
|
+ orderInfoDTO.setConsigneeZip("519000");
|
|
|
+ orderInfoDTO.setConsigneeTel("0756-8800000");
|
|
|
+ orderInfoDTO.setConsigneeEmail("hk@greedc.com");
|
|
|
+ orderInfoDTO.setConsigneeMobile(order.getMobile());
|
|
|
+ orderInfoDTO.setWeight("?");
|
|
|
+ orderInfoDTO.setQuantity(order.getNumber());
|
|
|
+ orderInfoDTO.setOrderTotal(order.getActual_price());
|
|
|
+ orderInfoDTO.setPlatform("store");
|
|
|
+
|
|
|
+ return orderInfoDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private OrderProductInfoDTO wrapOrderProductInfo(OrderGoodsVo orderGoodsVo) {
|
|
|
+ OrderProductInfoDTO orderProductInfoDTO = new OrderProductInfoDTO();
|
|
|
+ orderProductInfoDTO.setProductId(orderGoodsVo.getBarcode());
|
|
|
+ orderProductInfoDTO.setGoodsId(orderGoodsVo.getGoods_sn());
|
|
|
+ return orderProductInfoDTO;
|
|
|
+ }
|
|
|
+
|
|
|
private void AliPay(SysUserEntity user, String parCode, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws Exception {
|
|
|
|
|
|
AliPayRequestParams params = new AliPayRequestParams();
|
|
@@ -2934,11 +3048,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
params.setSubject(store.getMerchName() + "-" + store.getStoreName() + "-" + orderBizTypeZn);
|
|
|
params.setStoreId(store.getId() + "");
|
|
|
params.setTotalAmount(order.getActual_price().setScale(2, BigDecimal.ROUND_HALF_UP) + "");
|
|
|
- LOGGER.info("调用阿里支付接口的请求参数:" + JacksonUtils.toJson(params));
|
|
|
+ String paramsJson = JacksonUtils.toJson(params);
|
|
|
+ order.setRequest(paramsJson);
|
|
|
+ LOGGER.info("调用阿里支付接口的请求参数:" + paramsJson);
|
|
|
AliPayMicropayApiResult aliPayMicropayApiResult = AliPayUtil.aliTradePay(params);
|
|
|
orderWXPayRecordService.updateRecordByAli(orderWXPayRecordCurrent.getId(), aliPayMicropayApiResult);
|
|
|
- LOGGER.info("调用阿里支付接口的同步返回结果:" + JacksonUtils.toJson(aliPayMicropayApiResult));
|
|
|
-
|
|
|
+ String responseJson = JacksonUtils.toJson(aliPayMicropayApiResult);
|
|
|
+ LOGGER.info("调用阿里支付接口的同步返回结果:" + responseJson);
|
|
|
+ order.setResponse(responseJson);
|
|
|
+ order.setPayApp("alipay");
|
|
|
|
|
|
// 修改订单状态
|
|
|
//当支付成功时,修改订单,并把其他支付记录撤销
|
|
@@ -3047,14 +3165,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
-
|
|
|
+ PayOriginInfoDTO payOriginInfoDTO = new PayOriginInfoDTO();
|
|
|
WechatMicropayApiResult wechatMicropayApiResult = WechatUtil
|
|
|
.wxMicropay(store.getMerchName() + "-" + store.getStoreName(), order.getOrderBizType(), null,
|
|
|
orderWXPayRecordCurrent.getOutTradeNoWX(), order.getActual_price().doubleValue(),
|
|
|
- ip, parCode);
|
|
|
+ ip, parCode, payOriginInfoDTO);
|
|
|
orderWXPayRecordService.updateRecord(orderWXPayRecordCurrent.getId(), wechatMicropayApiResult);
|
|
|
|
|
|
-
|
|
|
+ order.setRequest(payOriginInfoDTO.getRequest());
|
|
|
+ order.setResponse(payOriginInfoDTO.getResponse());
|
|
|
+ order.setPayApp("wxpay");
|
|
|
resultObj.put("shopName", store.getStoreName()); // 根据门店编号查询
|
|
|
resultObj.put("userName", user.getUsername());
|
|
|
// 修改订单状态
|
|
@@ -4749,6 +4869,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
BigDecimal couponPrice = BigDecimal.ZERO;
|
|
|
BigDecimal freightPrice = Constant.ZERO;
|
|
|
BigDecimal actualPrice = Constant.ZERO;
|
|
|
+ Integer number = 0;
|
|
|
//订单价格计算:订单的总价+运费
|
|
|
for (GoodsEntity goodsEntity : goodsList) {
|
|
|
goodsTotalPrice = goodsTotalPrice
|
|
@@ -4758,6 +4879,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
actualPrice = actualPrice
|
|
|
.add(goodsEntity.getActualPaymentAmount()).setScale(2, RoundingMode.HALF_UP);
|
|
|
couponPrice = couponPrice.add(goodsEntity.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ number += goodsEntity.getSellVolume();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -4773,6 +4895,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderInfo.setOrder_sn(orderSn);
|
|
|
orderInfo.setMerchSn(merchSn);
|
|
|
orderInfo.setUser_id(loginUser.getId().longValue());
|
|
|
+ orderInfo.setNumber(number);
|
|
|
actualPrice = actualPrice.subtract(couponPrice);
|
|
|
|
|
|
//StoreEntity storeEntity = storeDao.queryObject(storeId);
|
|
@@ -4878,6 +5001,8 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderGoodsVo.setList_pic_url(goodsDto.getListPicUrl());
|
|
|
orderGoodsVo.setMarket_price(goodsDto.getStoreRetailPrice());
|
|
|
orderGoodsVo.setRetail_price(goodsDto.getStoreRetailPrice());
|
|
|
+ orderGoodsVo.setOrderSn(orderInfo.getOrder_sn());
|
|
|
+ orderGoodsVo.setBarcode(goodsDto.getProdBarcode());
|
|
|
|
|
|
orderGoodsVo.setDiscountedPrice(goodsDto.getDiscountedPrice());
|
|
|
orderGoodsVo.setActualPaymentAmount(goodsDto.getActualPaymentAmount());
|