|
@@ -38,9 +38,7 @@ import com.kmall.admin.fromcomm.entity.SysUserEntity;
|
|
|
import com.kmall.admin.haikong.constant.*;
|
|
|
import com.kmall.admin.haikong.dto.*;
|
|
|
import com.kmall.admin.haikong.utils.ListUtils;
|
|
|
-import com.kmall.admin.haikong.vo.CalculateOrderDiscountPriceResponseVO;
|
|
|
-import com.kmall.admin.haikong.vo.PointsRulesAndDetailVO;
|
|
|
-import com.kmall.admin.haikong.vo.QueryGoodsVO;
|
|
|
+import com.kmall.admin.haikong.vo.*;
|
|
|
import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
|
|
|
import com.kmall.admin.haikong.client.HaiKongWarehouseTemplate;
|
|
|
import com.kmall.admin.haikong.client.VmcShopTemplate;
|
|
@@ -63,7 +61,6 @@ import com.kmall.admin.utils.data.response.ResponseMessageData;
|
|
|
import com.kmall.admin.utils.jackson.JacksonUtil;
|
|
|
import com.kmall.admin.utils.oms.OmsSign;
|
|
|
import com.kmall.admin.utils.pdf.BarcodeUtil;
|
|
|
-import com.kmall.admin.haikong.vo.CalculateOrderDiscountPriceVO;
|
|
|
import com.kmall.admin.websocket.WebSocketServer;
|
|
|
import com.kmall.api.entity.OrderGoodsRestoreVo;
|
|
|
import com.kmall.api.entity.OrderGoodsVo;
|
|
@@ -113,6 +110,7 @@ import java.util.*;
|
|
|
import java.util.concurrent.*;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -2144,33 +2142,80 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// e.printStackTrace();
|
|
|
LOGGER.error("decode machine code failed! error message : ", e);
|
|
|
}
|
|
|
+ Integer storeId = user.getStoreId();
|
|
|
+ // 根据商品条码、sku、门店id查询相对应的商品信息,并组装成对象
|
|
|
+ List<QueryGoodsVO> queryGoodsVOList = new ArrayList<>();
|
|
|
+ Map<String, GoodsEntity> goodsEntityMap;
|
|
|
+ List<GoodsEntity> goodsEntityList;
|
|
|
+ try {
|
|
|
+ goodsList.forEach(map -> {
|
|
|
+ QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
|
|
|
+ queryGoodsVo.setProdBarcode((String) map.get("prodBarcode"));
|
|
|
+ queryGoodsVo.setSku((String) map.get("goodsSn"));
|
|
|
+ queryGoodsVo.setStoreId(storeId.longValue());
|
|
|
+ queryGoodsVo.setSellVolume((Integer) map.get("sellVolume"));
|
|
|
+ queryGoodsVo.setRetailPrice(new BigDecimal(String.valueOf(map.get("retailPrice"))));
|
|
|
+ queryGoodsVo.setGoodsTaxes(new BigDecimal(String.valueOf(map.get("goodstaxes"))));
|
|
|
+ queryGoodsVo.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
|
|
|
+ queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
|
|
|
+ queryGoodsVo.setActivity((String) map.get("activity"));
|
|
|
+ queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
|
|
|
+ queryGoodsVOList.add(queryGoodsVo);
|
|
|
+ });
|
|
|
+ // 将在循环中查询数据库改为一次性查询
|
|
|
+ goodsEntityList = goodsService.queryGoodsStockByQueryGoodsVoList(queryGoodsVOList);
|
|
|
+ goodsEntityMap = goodsEntityList.stream().collect(Collectors.toMap(GoodsEntity::getSku, Function.identity(), (k1, k2) -> k2));
|
|
|
+ } catch (Exception e){
|
|
|
+ LOGGER.error("组装查询商品数据或查询商品数据时出现异常!", e);
|
|
|
+ throw new ServiceException(e);
|
|
|
+ }
|
|
|
|
|
|
Map resultObj = Maps.newHashMap();
|
|
|
// 海控需求,下单流程修改,收银端接收会员码,付款码,用户信息,订单数据
|
|
|
// 1. 校验库存:保税仓库存 + 展销店库存 - 出区数 >= 购买数
|
|
|
// TODO 获取保税仓库存,测试时注释
|
|
|
-// String queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(null);
|
|
|
-// if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
|
|
|
-// LOGGER.error("调用库存系统接口出现错误!返回结果为空!");
|
|
|
-// throw new ServiceException("调用库存系统接口出现错误!");
|
|
|
-// }
|
|
|
-// WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
|
|
|
-// if (Objects.isNull(wareQueryStockResponseDTO)) {
|
|
|
-// throw new ServiceException("解析一步达库存系统响应数据出现错误!");
|
|
|
-// }
|
|
|
-// List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
|
|
|
-// // 解析xml,组装成map key=>sku value=>库存
|
|
|
-// Map<String, Integer> stockMap = new HashMap<>(16);
|
|
|
-// items.forEach(item -> {
|
|
|
-// String itemCode = item.getItemCode();
|
|
|
-// Integer quantity = item.getQuantity();
|
|
|
-// if (stockMap.containsKey(itemCode)) {
|
|
|
-// // 避免出现sku相同情况
|
|
|
-// stockMap.put(itemCode, stockMap.get(itemCode) + quantity);
|
|
|
-// } else {
|
|
|
-// stockMap.put(itemCode, quantity);
|
|
|
-// }
|
|
|
-// });
|
|
|
+ /*WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
|
|
|
+ List<Criteria> criteriaList = new ArrayList<>();
|
|
|
+ goodsList.forEach(goods -> {
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ String sku = (String) goods.get("goodsSn");
|
|
|
+ criteria.setItemCode(sku);
|
|
|
+ GoodsEntity goodsEntity = goodsEntityMap.get(sku);
|
|
|
+ criteria.setItemId(goodsEntity.getWarehousSysGoodId());
|
|
|
+ criteria.setWarehouseCode(goodsEntity.getWarehouseSn());
|
|
|
+ criteria.setOwnerCode(goodsEntity.getConsignorSn());
|
|
|
+ criteria.setInventoryType(Constants.InventoryType.ZP.getType());
|
|
|
+ criteriaList.add(criteria);
|
|
|
+ });
|
|
|
+ wareQueryStockParamDTO.setCriteriaList(criteriaList);
|
|
|
+ String queryWarehouseStockResponse = null;
|
|
|
+ try {
|
|
|
+ queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("下单调用海控仓库系统查询库存出现异常!", e);
|
|
|
+ throw new ServiceException(String.format("下单调用海控仓库系统查询库存出现异常!"));
|
|
|
+ }
|
|
|
+ if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
|
|
|
+ LOGGER.error("调用库存系统接口出现错误!返回结果为空!");
|
|
|
+ throw new ServiceException("调用库存系统接口出现错误!");
|
|
|
+ }
|
|
|
+ WareQueryStockResponseDTO wareQueryStockResponseDTO = JacksonUtil.fromStringJson(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
|
|
|
+ if (Objects.isNull(wareQueryStockResponseDTO)) {
|
|
|
+ throw new ServiceException("解析一步达库存系统响应数据出现错误!");
|
|
|
+ }
|
|
|
+ List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
|
|
|
+ // 解析xml,组装成map key=>sku value=>库存
|
|
|
+ Map<String, Integer> stockMap = new HashMap<>(16);
|
|
|
+ items.forEach(item -> {
|
|
|
+ String itemCode = item.getItemCode();
|
|
|
+ Integer quantity = item.getQuantity();
|
|
|
+ if (stockMap.containsKey(itemCode)) {
|
|
|
+ // 避免出现sku相同情况
|
|
|
+ stockMap.put(itemCode, stockMap.get(itemCode) + quantity);
|
|
|
+ } else {
|
|
|
+ stockMap.put(itemCode, quantity);
|
|
|
+ }
|
|
|
+ });*/
|
|
|
|
|
|
// TODO 上生产时注释,模拟仓库系统(sku最大库存为3)返回
|
|
|
Map<String, Integer> stockMap = new HashMap<>(16);
|
|
@@ -2201,32 +2246,17 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return resultObj;
|
|
|
}
|
|
|
Long userId = user.getUserId();
|
|
|
- Integer storeId = user.getStoreId();
|
|
|
|
|
|
List<GoodsEntity> goodsEntities = new ArrayList<>();
|
|
|
|
|
|
BigDecimal totalTax = new BigDecimal(0);
|
|
|
- // 根据商品条码、sku、门店id查询相对应的商品信息,并组装成对象
|
|
|
- List<QueryGoodsVO> queryGoodsVOList = new ArrayList<>();
|
|
|
- goodsList.forEach(map -> {
|
|
|
- QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
|
|
|
- queryGoodsVo.setProdBarcode((String) map.get("prodBarcode"));
|
|
|
- queryGoodsVo.setSku((String) map.get("goodsSn"));
|
|
|
- queryGoodsVo.setStoreId(storeId.longValue());
|
|
|
- queryGoodsVo.setSellVolume((Integer) map.get("sellVolume"));
|
|
|
- queryGoodsVo.setRetailPrice(new BigDecimal(String.valueOf(map.get("retailPrice"))));
|
|
|
- queryGoodsVo.setGoodsTaxes(new BigDecimal(String.valueOf(map.get("goodstaxes"))));
|
|
|
- queryGoodsVo.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
|
|
|
- queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
|
|
|
- queryGoodsVo.setActivity((String) map.get("activity"));
|
|
|
- queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
|
|
|
- queryGoodsVOList.add(queryGoodsVo);
|
|
|
- });
|
|
|
- // 将在循环中查询数据库改为一次性查询
|
|
|
- List<GoodsEntity> goodsEntityList = goodsService.queryGoodsStockByQueryGoodsVoList(queryGoodsVOList);
|
|
|
+
|
|
|
// 复制集合数据
|
|
|
ListUtils listUtils = BeanUtils.instantiate(ListUtils.class);
|
|
|
listUtils.copyList(goodsEntityList, queryGoodsVOList);
|
|
|
+
|
|
|
+ // 商品总重量
|
|
|
+ BigDecimal weight = new BigDecimal(0);
|
|
|
// 检查库存和更新库存
|
|
|
for (QueryGoodsVO goodsDto : queryGoodsVOList) {
|
|
|
// 要购买的数量
|
|
@@ -2319,6 +2349,17 @@ public class OrderServiceImpl implements OrderService {
|
|
|
goodsEntity.setSellVolume(goodsDto.getSellVolume());
|
|
|
goodsEntity.setActivity(goodsDto.getActivity());
|
|
|
goodsEntity.setStoreId(storeId);
|
|
|
+ goodsEntity.setListPicUrl(goodsDto.getListPicUrl());
|
|
|
+ GoodsEntity goodsEntity1 = goodsEntityMap.get(sku);
|
|
|
+ if (Objects.nonNull(goodsEntity1)) {
|
|
|
+ goodsEntity.setNetWeight(goodsEntity1.getNetWeight());
|
|
|
+ goodsEntity.setWarehouseSn(goodsEntity1.getWarehouseSn());
|
|
|
+ goodsEntity.setConsignorSn(goodsEntity1.getConsignorSn());
|
|
|
+ goodsEntity.setWarehousSysGoodId(goodsEntity1.getWarehousSysGoodId());
|
|
|
+ goodsEntity.setInventoryType(goodsEntity1.getInventoryType());
|
|
|
+ goodsEntity.setDefectiveProductsGrade(goodsEntity1.getDefectiveProductsGrade());
|
|
|
+ weight = weight.add(goodsEntity1.getNetWeight().multiply(new BigDecimal(goodsEntity.getSellVolume())));
|
|
|
+ }
|
|
|
goodsEntities.add(goodsEntity);
|
|
|
} else {
|
|
|
// sku不存在
|
|
@@ -2393,6 +2434,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
order.setMerchOrderSn(merchOrderSn);
|
|
|
order.setCoupon_name(couponSn); // 借用这个字段来记录是否使用优惠券
|
|
|
order.setIdCard(userEntity.getIdNo());
|
|
|
+ order.setWeight(weight);
|
|
|
//插入订单信息和订单商品
|
|
|
orderDao.saveOrderVo(order);
|
|
|
|
|
@@ -2494,6 +2536,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 总的积分:基础积分
|
|
|
AtomicReference<Integer> memberScore = new AtomicReference<>(0);
|
|
|
// 无会员码,不参与积分赠送
|
|
|
+ Map<String, OrderGiftScoreRulesVo> giftGoodsScoreDetailMap = new HashMap<>();
|
|
|
if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date());
|
|
|
// 商品map,key===>sku value===>金额
|
|
@@ -2516,13 +2559,21 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 商品积分生成规则包含这个sku
|
|
|
// 订单中该sku的总金额
|
|
|
BigDecimal money = goodsMap.get(pointsDetailNameId);
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.TWO.getCode());
|
|
|
if (ratio.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
// 算出所积的分
|
|
|
- memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
|
|
|
+ int giftScore = money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue();
|
|
|
+ memberScore.set(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(ratio);
|
|
|
} else {
|
|
|
// 积分比例设置为0,该商品不记积分。
|
|
|
LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
+ giftGoodsScoreDetailMap.put(pointsDetailNameId, orderGiftScoreRulesVo);
|
|
|
goodsDataMap.remove(pointsDetailNameId);
|
|
|
}
|
|
|
|
|
@@ -2533,17 +2584,25 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 商品类别
|
|
|
Integer categoryId = goodsEntity.getCategoryId();
|
|
|
String sku = goodsEntity.getSku();
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.ONE.getCode());
|
|
|
if (categorySet.contains(categoryId)) {
|
|
|
if (categoryId.equals(Integer.parseInt(pointsDetailNameId))) {
|
|
|
// 订单中该sku的总金额
|
|
|
BigDecimal money = goodsMap.get(sku);
|
|
|
if (ratio.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
// 算出所积的分
|
|
|
- memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
|
|
|
+ int giftScore = money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue();
|
|
|
+ memberScore.set(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(ratio);
|
|
|
} else {
|
|
|
// 积分比例设置为0,该商品不记积分。
|
|
|
LOGGER.info("分类:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
+ giftGoodsScoreDetailMap.put(sku, orderGiftScoreRulesVo);
|
|
|
goodsDataMap.remove(sku);
|
|
|
}
|
|
|
}
|
|
@@ -2555,20 +2614,37 @@ public class OrderServiceImpl implements OrderService {
|
|
|
goodsEntityCollection.forEach(goodsEntity -> {
|
|
|
Integer storeId1 = goodsEntity.getStoreId();
|
|
|
String sku = goodsEntity.getSku();
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.ZERO.getCode());
|
|
|
if (storeId.equals(storeId1)) {
|
|
|
// 订单中该sku的总金额
|
|
|
BigDecimal money = goodsMap.get(sku);
|
|
|
if (ratio.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
// 算出所积的分
|
|
|
- memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
|
|
|
+ int giftScore = money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue();
|
|
|
+ memberScore.set(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(giftScore);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(ratio);
|
|
|
} else {
|
|
|
// 积分比例设置为0,该商品不记积分。
|
|
|
LOGGER.info("门店:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
+ giftGoodsScoreDetailMap.put(sku, orderGiftScoreRulesVo);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
+ goodsSkuList.forEach(s -> {
|
|
|
+ if (!giftGoodsScoreDetailMap.containsKey(s)) {
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(3);
|
|
|
+ giftGoodsScoreDetailMap.put(s, orderGiftScoreRulesVo);
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
// 增加该会员的积分
|
|
|
Mall2MemberPointsEntity memberPointsEntity = memberPointsDao.queryByUserId(userEntityId);
|
|
@@ -2621,10 +2697,10 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
// 同步会员订单消费记录
|
|
|
syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
|
- syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", queryGoodsVOList, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
+ syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
// 积分变动接口,下单扣减
|
|
|
Integer score = memberScore.get();
|
|
|
- syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
|
+ syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
|
}
|
|
|
|
|
|
// 生成取票码
|
|
@@ -2703,6 +2779,11 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 组装推送订单数据:跨境数据
|
|
|
+ * @param order 订单数据
|
|
|
+ * @return 跨境数据
|
|
|
+ */
|
|
|
private SeaportInfoDTO wrapSeaportInfo(OrderVo order) {
|
|
|
SeaportInfoDTO seaportInfoDTO = new SeaportInfoDTO();
|
|
|
seaportInfoDTO.setSeaportCode("4600");
|
|
@@ -2713,6 +2794,11 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return seaportInfoDTO;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 组装推送订单数据:支付数据
|
|
|
+ * @param order 订单数据
|
|
|
+ * @return 支付数据
|
|
|
+ */
|
|
|
private PayInfoDTO wrapPayInfo(OrderVo order) {
|
|
|
PayInfoDTO payInfoDTO = new PayInfoDTO();
|
|
|
payInfoDTO.setMoney(order.getActual_price());
|
|
@@ -2723,11 +2809,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return payInfoDTO;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 组装推送订单数据:订单详情数据
|
|
|
+ * @param orderGoodsVo 订单详情
|
|
|
+ * @return 订单详情数据
|
|
|
+ */
|
|
|
private OrderInfoItemDTO wrapOrderInfoItem(OrderGoodsVo orderGoodsVo) {
|
|
|
OrderInfoItemDTO orderInfoItemDTO = new OrderInfoItemDTO();
|
|
|
orderInfoItemDTO.setOrderId(orderGoodsVo.getOrderSn());
|
|
|
orderInfoItemDTO.setImageUrl(orderGoodsVo.getList_pic_url());
|
|
|
- orderInfoItemDTO.setBn("11111111");
|
|
|
+ orderInfoItemDTO.setBn(orderGoodsVo.getSku());
|
|
|
orderInfoItemDTO.setBarcode(orderGoodsVo.getBarcode());
|
|
|
orderInfoItemDTO.setName(orderGoodsVo.getGoods_name());
|
|
|
orderInfoItemDTO.setCost(orderGoodsVo.getMarket_price());
|
|
@@ -2740,6 +2831,11 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return orderInfoItemDTO;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 组装推送订单数据:跨境数据
|
|
|
+ * @param order 订单数据
|
|
|
+ * @return 订单数据
|
|
|
+ */
|
|
|
private OrderInfoDTO wrapOrderInfo(OrderVo order) {
|
|
|
OrderInfoDTO orderInfoDTO = new OrderInfoDTO();
|
|
|
orderInfoDTO.setOuterOrderNo(order.getOrder_sn());
|
|
@@ -2754,7 +2850,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderInfoDTO.setConsigneeTel("0756-8800000");
|
|
|
orderInfoDTO.setConsigneeEmail("hk@greedc.com");
|
|
|
orderInfoDTO.setConsigneeMobile(order.getMobile());
|
|
|
- orderInfoDTO.setWeight("?");
|
|
|
+ BigDecimal weight = order.getWeight();
|
|
|
+ if (Objects.nonNull(weight)) {
|
|
|
+ orderInfoDTO.setWeight(weight.toString());
|
|
|
+ } else {
|
|
|
+ orderInfoDTO.setWeight("0");
|
|
|
+ }
|
|
|
orderInfoDTO.setQuantity(order.getNumber());
|
|
|
orderInfoDTO.setOrderTotal(order.getActual_price());
|
|
|
orderInfoDTO.setPlatform("store");
|
|
@@ -2769,6 +2870,9 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return orderProductInfoDTO;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 支付宝支付
|
|
|
+ */
|
|
|
private void AliPay(SysUserEntity user, String parCode, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws Exception {
|
|
|
|
|
|
AliPayRequestParams params = new AliPayRequestParams();
|
|
@@ -2812,6 +2916,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 组装支付单信息
|
|
|
Map<String, Object> orderSendCusParams = new HashMap<>();
|
|
|
orderSendCusParams.put("merchSn", order.getMerchSn());
|
|
|
+ orderSendCusParams.put("orderSn", order.getOrder_sn());
|
|
|
orderSendCusParams.put("merchName", order.getMerchName());
|
|
|
orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
|
|
|
orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
|
|
@@ -2894,6 +2999,9 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 微信支付
|
|
|
+ */
|
|
|
private void wxPay(SysUserEntity user, String parCode, Map resultObj, OrderVo order, OrderProcessRecordEntity processRecordEntity, OrderWXPayRecordEntity orderWXPayRecordCurrent, StoreEntity store) throws ParseException {
|
|
|
R r;
|
|
|
|
|
@@ -2940,6 +3048,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 组装支付单信息
|
|
|
Map<String, Object> orderSendCusParams = new HashMap<>();
|
|
|
orderSendCusParams.put("merchSn", order.getMerchSn());
|
|
|
+ orderSendCusParams.put("orderSn", order.getOrder_sn());
|
|
|
orderSendCusParams.put("merchName", order.getMerchName());
|
|
|
orderSendCusParams.put("thirdPartyMerchCode", store.getThirdPartyMerchCode());
|
|
|
orderSendCusParams.put("thirdPartyMerchName", store.getThirdPartyMerchName());
|
|
@@ -3045,9 +3154,16 @@ public class OrderServiceImpl implements OrderService {
|
|
|
* @param changeEvent 变动事件
|
|
|
* @param changeReason 变动原因
|
|
|
* @param goodsList 商品详情
|
|
|
+ * @param giftGoodsScoreDetailMap 赠送积分详情
|
|
|
* @param score 变动积分
|
|
|
*/
|
|
|
- private void syncMemberScoreChangeRecord(String openId, OrderVo order, Integer score, String changeReason, List<QueryGoodsVO> goodsList, String changeEvent) {
|
|
|
+ private void syncMemberScoreChangeRecord(String openId,
|
|
|
+ OrderVo order,
|
|
|
+ Integer score,
|
|
|
+ String changeReason,
|
|
|
+ List<QueryGoodsVO> goodsList,
|
|
|
+ Map<String, OrderGiftScoreRulesVo> giftGoodsScoreDetailMap,
|
|
|
+ String changeEvent) {
|
|
|
HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity = new HaiKongMemberScoreChangeRecordEntity();
|
|
|
MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
|
String changeId = UUID.randomUUID(true).toString();
|
|
@@ -3081,14 +3197,22 @@ public class OrderServiceImpl implements OrderService {
|
|
|
haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
|
}
|
|
|
+ LOGGER.info("保存会员系统积分变动详情记录中......");
|
|
|
List<HaiKongMemberScoreChangeDetailRecordEntity> recordEntityList = goodsList.stream().map(goodsEntity -> {
|
|
|
HaiKongMemberScoreChangeDetailRecordEntity entity = new HaiKongMemberScoreChangeDetailRecordEntity();
|
|
|
+ String sku = goodsEntity.getSku();
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = giftGoodsScoreDetailMap.get(sku);
|
|
|
+ if (Objects.nonNull(orderGiftScoreRulesVo)) {
|
|
|
+ entity.setGenerateRatio(orderGiftScoreRulesVo.getGenerateRatio());
|
|
|
+ entity.setGenerateRules(orderGiftScoreRulesVo.getGenerateType());
|
|
|
+ entity.setGiftScore(orderGiftScoreRulesVo.getGiftScore());
|
|
|
+ }
|
|
|
entity.setOrderSn(order.getOrder_sn());
|
|
|
entity.setRetailPrice(goodsEntity.getRetailPrice());
|
|
|
entity.setActualPrice(goodsEntity.getTotalPrice());
|
|
|
entity.setProductBarcode(goodsEntity.getProdBarcode());
|
|
|
entity.setSellVolume(goodsEntity.getSellVolume());
|
|
|
- entity.setSku(goodsEntity.getSku());
|
|
|
+ entity.setSku(sku);
|
|
|
entity.setDeductionScore(goodsEntity.getDeductionScore());
|
|
|
return entity;
|
|
|
}).collect(Collectors.toList());
|
|
@@ -4796,6 +4920,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderGoodsVo.setGoodsRate(goodsDto.getGoodsRate());
|
|
|
orderGoodsVo.setSku(goodsDto.getSku());
|
|
|
|
|
|
+ orderGoodsVo.setNetWeight(goodsDto.getNetWeight());
|
|
|
+ orderGoodsVo.setWarehouseSn(goodsDto.getWarehouseSn());
|
|
|
+ orderGoodsVo.setConsignorSn(goodsDto.getConsignorSn());
|
|
|
+ orderGoodsVo.setWarehouseSysGoodId(goodsDto.getWarehousSysGoodId());
|
|
|
+ orderGoodsVo.setInventoryType(goodsDto.getInventoryType());
|
|
|
+ orderGoodsVo.setDefectiveProductsGrade(goodsDto.getDefectiveProductsGrade());
|
|
|
|
|
|
BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getSellVolume()));
|
|
|
BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
|
|
@@ -4827,7 +4957,6 @@ public class OrderServiceImpl implements OrderService {
|
|
|
orderGoodsVo.setSettlePrice(settlePrice);//商品结算平摊价格
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// 计算税费
|
|
|
GoodsEntity goodsEntity = goodsService.queryObject(goodsDto.getId().intValue());
|
|
|
BigDecimal goodsTax = CalculateTax.calculateFinalTax(goodsEntity, goodsDto.getStoreRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
@@ -4837,4 +4966,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
return orderGoodsVo;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 支付单凭证回传更新 buyer_pay_check
|
|
|
+ *
|
|
|
+ * @param wxMap 更新数据
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int updateBuyerPayCheck(Map<String, Object> wxMap) {
|
|
|
+ return orderDao.updateBuyerPayCheck(wxMap);
|
|
|
+ }
|
|
|
}
|