|
@@ -1,5 +1,6 @@
|
|
|
package com.kmall.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.lang.UUID;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
@@ -21,6 +22,7 @@ import com.kmall.admin.dao.vip.Mall2PointsRulesDao;
|
|
|
import com.kmall.admin.dto.*;
|
|
|
import com.kmall.admin.entity.*;
|
|
|
import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
|
|
|
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
|
|
|
import com.kmall.admin.entity.mk.MkActivitiesEntity;
|
|
|
import com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity;
|
|
|
import com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity;
|
|
@@ -31,9 +33,9 @@ import com.kmall.admin.fromcomm.dao.SysConfigDao;
|
|
|
import com.kmall.admin.fromcomm.entity.SysUserEntity;
|
|
|
import com.kmall.admin.haikong.constant.Constants;
|
|
|
import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
|
|
|
+import com.kmall.admin.haikong.constant.HaiKongMemberScoreChangeEventEnum;
|
|
|
import com.kmall.admin.haikong.constant.VmcconnectUrlEnum;
|
|
|
-import com.kmall.admin.haikong.dto.MemberOrderInfoSyncDTO;
|
|
|
-import com.kmall.admin.haikong.dto.WareQueryStockResponseDTO;
|
|
|
+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.QueryGoodsVO;
|
|
@@ -41,10 +43,10 @@ import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
|
|
|
import com.kmall.admin.haikong.client.HaiKongWarehouseTemplate;
|
|
|
import com.kmall.admin.haikong.client.VmcShopTemplate;
|
|
|
import com.kmall.admin.haikong.config.HaiKongProperties;
|
|
|
-import com.kmall.admin.haikong.dto.MemberInfoDTO;
|
|
|
import com.kmall.admin.haikong.utils.Response;
|
|
|
import com.kmall.admin.service.*;
|
|
|
import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
|
|
|
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
|
|
|
import com.kmall.admin.service.kmall2eccs.KtoEccsService;
|
|
|
import com.kmall.admin.service.mk.MkActivitiesService;
|
|
|
import com.kmall.admin.service.mk.store.MkStoreCampMinusService;
|
|
@@ -259,8 +261,14 @@ public class OrderServiceImpl implements OrderService {
|
|
|
/**
|
|
|
* 同步订单消费信息,重发业务
|
|
|
*/
|
|
|
+ @Autowired
|
|
|
private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
|
|
|
|
|
|
+ /**
|
|
|
+ * 会员积分变动业务
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -2355,29 +2363,42 @@ public class OrderServiceImpl implements OrderService {
|
|
|
Map resultObj = Maps.newHashMap();
|
|
|
// 海控需求,下单流程修改,收银端接收会员码,付款码,用户信息,订单数据
|
|
|
// 1. 校验库存:保税仓库存 + 展销店库存 - 出区数 >= 购买数
|
|
|
- // 获取保税仓库存
|
|
|
- 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=>库存
|
|
|
+ // 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);
|
|
|
+// }
|
|
|
+// });
|
|
|
+
|
|
|
+ // TODO 上生产时注释,模拟仓库系统(sku最大库存为3)返回
|
|
|
Map<String, Integer> stockMap = new HashMap<>(16);
|
|
|
- items.forEach(item -> {
|
|
|
- String itemCode = item.getItemCode();
|
|
|
- Integer quantity = item.getQuantity();
|
|
|
- if (stockMap.containsKey(itemCode)) {
|
|
|
+ goodsList.forEach(goods -> {
|
|
|
+ String sku = (String) goods.get("goodsSn");
|
|
|
+ if (stockMap.containsKey(sku)) {
|
|
|
// 避免出现sku相同情况
|
|
|
- stockMap.put(itemCode, stockMap.get(itemCode) + quantity);
|
|
|
+ stockMap.put(sku, stockMap.get(sku) + 3);
|
|
|
} else {
|
|
|
- stockMap.put(itemCode, quantity);
|
|
|
+ stockMap.put(sku, 3);
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
try {
|
|
|
if (user == null) {
|
|
|
resultObj.put("errno", 400);
|
|
@@ -2406,11 +2427,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
|
|
|
queryGoodsVo.setProdBarcode((String) map.get("prodBarcode"));
|
|
|
queryGoodsVo.setSku((String) map.get("goodsSn"));
|
|
|
- queryGoodsVo.setStoreId(storeId);
|
|
|
+ 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.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
|
|
|
+ queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
|
|
|
queryGoodsVo.setActivity((String) map.get("activity"));
|
|
|
queryGoodsVOList.add(queryGoodsVo);
|
|
|
});
|
|
@@ -2425,7 +2447,10 @@ public class OrderServiceImpl implements OrderService {
|
|
|
Integer sellVolume = goodsDto.getSellVolume();
|
|
|
String prodBarcode = goodsDto.getProdBarcode();
|
|
|
String sku = goodsDto.getSku();
|
|
|
+ // 园区库存
|
|
|
Integer goodsNumber = goodsDto.getGoodsNumber();
|
|
|
+ // 门店库存
|
|
|
+ Integer stockNum = goodsDto.getStockNum();
|
|
|
// 仓库库存可用库存数
|
|
|
Integer warehouseStock = stockMap.get(sku);
|
|
|
|
|
@@ -2477,17 +2502,19 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
|
// 如果园区库存数量小于等于0, 则不更新园区库存, 园区库存只做参考
|
|
|
int diff = Math.max(goodsNumber - sellVolume, 0);
|
|
|
- goodsDto.setGoodsNumber(diff);
|
|
|
- goodsDto.setLastSaleTime(new Date());
|
|
|
- GoodsEntity goodsEntity = new GoodsEntity(goodsDto);
|
|
|
- goodsDao.update(goodsEntity);
|
|
|
+ GoodsEntity goodsEntity = new GoodsEntity();
|
|
|
+ goodsEntity.setGoodsNumber(diff);
|
|
|
+ goodsEntity.setLastSaleTime(new Date());
|
|
|
+ BeanUtils.copyProperties(goodsDto, goodsEntity);
|
|
|
+ goodsService.updateStockNumberByProductCodeAndSku(goodsEntity);
|
|
|
// 门店库存
|
|
|
- goodsDto.setStockNum(validNum);
|
|
|
- goodsDto.setStoreId(storeId);
|
|
|
- goodsDto.setSellVolume(goodsDto.getSellVolume() + sellVolume);
|
|
|
- goodsDto.setLastSaleTime(new Date());
|
|
|
- ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity(goodsDto);
|
|
|
- productStoreRelaDao.updateStockNum(productStoreRelaEntity);//修改普通商品库存
|
|
|
+ ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity();
|
|
|
+ BeanUtils.copyProperties(goodsDto, productStoreRelaEntity);
|
|
|
+ productStoreRelaEntity.setStockNum(validNum);
|
|
|
+ productStoreRelaEntity.setStoreId(storeId.longValue());
|
|
|
+ productStoreRelaEntity.setSellVolume(goodsDto.getSellVolume() + sellVolume);
|
|
|
+ productStoreRelaEntity.setLastSaleTime(new Date());
|
|
|
+ productStoreRelaService.updateStockNum(productStoreRelaEntity);//修改普通商品库存
|
|
|
|
|
|
BigDecimal retailPrice = goodsDto.getRetailPrice(); // 单价
|
|
|
BigDecimal storeRetailPrice = goodsDto.getRetailPrice(); // 单价
|
|
@@ -2496,24 +2523,14 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 实际支付价
|
|
|
BigDecimal actualPaymentAmount = goodsDto.getTotalPrice();
|
|
|
|
|
|
- disCountedPrice = disCountedPrice
|
|
|
- .divide(new BigDecimal(sellVolume), 3, RoundingMode.HALF_UP)
|
|
|
- .multiply(new BigDecimal(sellVolume))
|
|
|
- .setScale(2, RoundingMode.HALF_UP);
|
|
|
- actualPaymentAmount = actualPaymentAmount
|
|
|
- .divide(new BigDecimal(sellVolume), 3, RoundingMode.HALF_UP)
|
|
|
- .multiply(new BigDecimal(sellVolume))
|
|
|
- .setScale(2, RoundingMode.HALF_UP);
|
|
|
-
|
|
|
- goodsDto.setRetailPrice(retailPrice);
|
|
|
- goodsDto.setStoreRetailPrice(storeRetailPrice);
|
|
|
- goodsDto.setDisCountedPrice(disCountedPrice);
|
|
|
- goodsDto.setTotalPrice(actualPaymentAmount);
|
|
|
-
|
|
|
- // 借用这个字段来存储购买数
|
|
|
- goodsDto.setGoodsNumber(sellVolume);
|
|
|
- goodsDto.setActivity(goodsDto.getActivity());
|
|
|
- goodsEntity = new GoodsEntity(goodsDto);
|
|
|
+ goodsEntity = new GoodsEntity();
|
|
|
+ BeanUtils.copyProperties(goodsDto, goodsEntity);
|
|
|
+ goodsEntity.setRetailPrice(retailPrice);
|
|
|
+ goodsEntity.setStoreRetailPrice(storeRetailPrice);
|
|
|
+ goodsEntity.setDiscountedPrice(disCountedPrice);
|
|
|
+ goodsEntity.setActualPaymentAmount(goodsDto.getTotalPrice());
|
|
|
+ goodsEntity.setSellVolume(goodsDto.getSellVolume());
|
|
|
+ goodsEntity.setActivity(goodsDto.getActivity());
|
|
|
goodsEntities.add(goodsEntity);
|
|
|
} else {
|
|
|
// sku不存在
|
|
@@ -2526,7 +2543,8 @@ public class OrderServiceImpl implements OrderService {
|
|
|
totalTax = totalTax.add(tax).setScale(2, BigDecimal.ROUND_HALF_DOWN); // 计算总的税额
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ String openId = (String) param.get("openId");
|
|
|
+ String memberCode = (String) param.get("memberCode");
|
|
|
UserEntity userEntity = userDao.queryByMobile((String) userInfo.get("customPhone"));
|
|
|
if (userEntity == null) {
|
|
|
// 保存用户信息
|
|
@@ -2539,6 +2557,8 @@ public class OrderServiceImpl implements OrderService {
|
|
|
userEntity.setRegisterTime(new Date());
|
|
|
userEntity.setLastLoginTime(new Date());
|
|
|
userEntity.setIdNo((String) userInfo.get("customIDCard"));
|
|
|
+ userEntity.setOpenId(openId);
|
|
|
+ userEntity.setMemberCode(memberCode);
|
|
|
userDao.save(userEntity);
|
|
|
|
|
|
MerchUserEntity merchUserEntity = new MerchUserEntity();
|
|
@@ -2552,6 +2572,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
userEntity.setUsername((String) userInfo.get("customName"));
|
|
|
userEntity.setIdNo((String) userInfo.get("customIDCard"));
|
|
|
userEntity.setMobile((String) userInfo.get("customPhone"));
|
|
|
+ if (!org.springframework.util.StringUtils.isEmpty(openId)) {
|
|
|
+ userEntity.setOpenId(openId);
|
|
|
+ }
|
|
|
+ if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
+ userEntity.setMemberCode(memberCode);
|
|
|
+ }
|
|
|
userDao.update(userEntity);
|
|
|
}
|
|
|
|
|
@@ -2651,6 +2677,12 @@ public class OrderServiceImpl implements OrderService {
|
|
|
// 保存订单流转表
|
|
|
// 设置下单完成时间
|
|
|
processRecordEntity.setAddOrderSuccTime(order.getPay_time());
|
|
|
+ // 设置其他开始时间
|
|
|
+ Date date = new Date();
|
|
|
+ processRecordEntity.setPaymentStartTime(date);
|
|
|
+ processRecordEntity.setEleOrderStartTime(date);
|
|
|
+ processRecordEntity.setWaybillStartTime(date);
|
|
|
+
|
|
|
orderProcessRecordDao.save(processRecordEntity);
|
|
|
|
|
|
|
|
@@ -2669,7 +2701,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
saleRecordDao.save(saleRecordEntity);
|
|
|
}
|
|
|
|
|
|
- // 查询积分规则 ,默认先按消费金额1:1积分
|
|
|
+ // TODO 查询积分规则,根据积分生成规则进行增加会员积分
|
|
|
Mall2PointsRulesEntity pointsRules = null;
|
|
|
|
|
|
// 增加该会员的积分
|
|
@@ -2700,12 +2732,15 @@ public class OrderServiceImpl implements OrderService {
|
|
|
consumptionRecords.setIsUseBirthdayOffer("1"); // 没使用生日优惠
|
|
|
}*/
|
|
|
// 积分消费记录
|
|
|
- int deductionScore = (Integer) param.get("deductionScore");
|
|
|
- String memberCode = String.valueOf(param.get("memberCode"));
|
|
|
+ String deductionScoreStr = (String) param.get("deductionScore");
|
|
|
+ String scoreDeductionPriceStr = (String) param.get("scoreDeductionPrice");
|
|
|
+ Integer beforeScoreInteger = (Integer) param.get("beforeScore") ;
|
|
|
+ Integer afterScoreStrInteger = (Integer) param.get("afterScore");
|
|
|
+ int deductionScore = org.springframework.util.StringUtils.isEmpty(deductionScoreStr) ? 0 : Integer.parseInt(deductionScoreStr);
|
|
|
String memberPhone = String.valueOf(param.get("memberPhone"));
|
|
|
- BigDecimal scoreDeductionPrice = new BigDecimal(String.valueOf(param.get("scoreDeductionPrice")));
|
|
|
- Integer beforeScore = (Integer) param.get("beforeScore");
|
|
|
- Integer afterScore = (Integer) param.get("afterScore");
|
|
|
+ BigDecimal scoreDeductionPrice = org.springframework.util.StringUtils.isEmpty(scoreDeductionPriceStr) ? BigDecimal.ZERO : new BigDecimal(scoreDeductionPriceStr);
|
|
|
+ Integer beforeScore = beforeScoreInteger;
|
|
|
+ Integer afterScore = afterScoreStrInteger;
|
|
|
consumptionRecords.setBeforeScore(beforeScore);
|
|
|
consumptionRecords.setAfterScore(afterScore);
|
|
|
consumptionRecords.setOrderTotalPrice(order.getActual_price());
|
|
@@ -2718,26 +2753,13 @@ public class OrderServiceImpl implements OrderService {
|
|
|
memberConsumptionRecordsDao.save(consumptionRecords);
|
|
|
|
|
|
// 同步会员订单消费记录
|
|
|
- HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity = new HaiKongMemberOrderSyncResendEntity();
|
|
|
- try {
|
|
|
- MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
|
|
|
- memberOrderInfoSyncDTO.setPhone(memberPhone);
|
|
|
- memberOrderInfoSyncDTO.setOrderNo(order.getOrder_sn());
|
|
|
- memberOrderInfoSyncDTO.setConsumeDate(new Date());
|
|
|
- memberOrderInfoSyncDTO.setOrderAmount(order.getActual_price());
|
|
|
- memberOrderInfoSyncDTO.setOrderScore(deductionScore);
|
|
|
- BeanUtils.copyProperties(memberOrderInfoSyncDTO, haiKongMemberOrderSyncResendEntity);
|
|
|
- String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
|
|
|
- LOGGER.info("请求会员系统同步消费订单接口!请求体:{}", body);
|
|
|
- // 发送请求
|
|
|
- String memberOrderSyncResponseJson = haiKongMemberTemplate.memberOrderSync(body);
|
|
|
- LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
|
- } catch (Exception e) {
|
|
|
- LOGGER.error("请求会员系统同步消费订单接口失败!准备新增发送失败记录,等待重发!异常信息:", e);
|
|
|
- // TODO 没有请求成功,写表,重发
|
|
|
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
- haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
|
- }
|
|
|
+ syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
|
+
|
|
|
+ // 积分变动接口,下单扣减
|
|
|
+ syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
+ // 下单赠送,一元积一分
|
|
|
+ Integer score = order.getActual_price().intValue();
|
|
|
+ syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
|
|
|
|
// 生成取票码
|
|
|
PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
|
|
@@ -2960,6 +2982,71 @@ public class OrderServiceImpl implements OrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 同步会员消费记录
|
|
|
+ * @param memberPhone 会员手机号
|
|
|
+ * @param order 订单信息
|
|
|
+ * @param deductionScore 抵扣积分
|
|
|
+ */
|
|
|
+ private void syncMemberConsumeRecord(String memberPhone, OrderVo order, Integer deductionScore) {
|
|
|
+ HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity = new HaiKongMemberOrderSyncResendEntity();
|
|
|
+ MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
|
|
|
+ memberOrderInfoSyncDTO.setPhone(memberPhone);
|
|
|
+ memberOrderInfoSyncDTO.setOrderNo(order.getOrder_sn());
|
|
|
+ memberOrderInfoSyncDTO.setConsumeDate(new Date());
|
|
|
+ memberOrderInfoSyncDTO.setOrderAmount(order.getActual_price());
|
|
|
+ memberOrderInfoSyncDTO.setOrderScore(deductionScore);
|
|
|
+ BeanUtils.copyProperties(memberOrderInfoSyncDTO, haiKongMemberOrderSyncResendEntity);
|
|
|
+ try {
|
|
|
+ String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
|
|
|
+ LOGGER.info("请求会员系统同步消费订单接口!请求体:{}", body);
|
|
|
+ // 发送请求
|
|
|
+ String memberOrderSyncResponseJson = haiKongMemberTemplate.memberOrderSync(body);
|
|
|
+ haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
+ haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
|
+ LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("请求会员系统同步消费订单接口失败!准备新增发送失败记录,等待重发!异常信息:", e);
|
|
|
+ // 没有请求成功,写表,重发
|
|
|
+ haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
+ haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步会员积分变动记录
|
|
|
+ * @param openId 会员openid
|
|
|
+ * @param order 订单信息
|
|
|
+ * @param score 变动积分
|
|
|
+ */
|
|
|
+ private void syncMemberScoreChangeRecord(String openId, OrderVo order, Integer score, String changeReason, String changeEvent) {
|
|
|
+ HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity = new HaiKongMemberScoreChangeRecordEntity();
|
|
|
+ MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
|
+ String changeId = UUID.randomUUID(true).toString();
|
|
|
+ memberScoreChangeDTO.setChangeEvent(changeEvent);
|
|
|
+ memberScoreChangeDTO.setChangeId(changeId);
|
|
|
+ memberScoreChangeDTO.setChangeReason(changeReason);
|
|
|
+ memberScoreChangeDTO.setOpenId(openId);
|
|
|
+ memberScoreChangeDTO.setOutBizNo(order.getOrder_sn());
|
|
|
+ memberScoreChangeDTO.setScore(score);
|
|
|
+ BeanUtils.copyProperties(memberScoreChangeDTO, haiKongMemberScoreChangeRecordEntity);
|
|
|
+ try {
|
|
|
+ String body = JacksonUtil.toJson(memberScoreChangeDTO);
|
|
|
+ LOGGER.info("请求会员系统积分变动接口!请求体:{}", body);
|
|
|
+ String changeMemberScoreResponseJson = haiKongMemberTemplate.changeMemberScore(body);
|
|
|
+ Response<MemberScoreChangeResponseDTO> response = JacksonUtil.fromListJson(changeMemberScoreResponseJson, new TypeReference<Response<MemberScoreChangeResponseDTO>>() {});
|
|
|
+ MemberScoreChangeResponseDTO responseData = response.getData();
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setStatementId(responseData.getStatementId());
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
+ haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
|
+ LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 失败重发
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
+ haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private boolean orderQuery(OrderVo order, OrderProcessRecordEntity processRecordEntity) {
|
|
|
LOGGER.info(">>>>>>>>>>>>>>>>>>>>wxOrderQuery 微信查询接口调用");
|
|
|
String merchOrderSn = order.getMerchOrderSn();
|
|
@@ -3817,7 +3904,9 @@ public class OrderServiceImpl implements OrderService {
|
|
|
QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
|
|
|
BeanUtils.copyProperties(good, queryGoodsVo);
|
|
|
queryGoodsVo.setSku(good.getGoodsSn());
|
|
|
- queryGoodsVo.setStoreId(Integer.parseInt(storeId));
|
|
|
+ queryGoodsVo.setStoreId(Long.parseLong(storeId));
|
|
|
+ queryGoodsVo.setDisCountedPrice(BigDecimal.ZERO);
|
|
|
+ queryGoodsVo.setTotalPrice(good.getActualPaymentAmount());
|
|
|
orderTotalPrice = orderTotalPrice.add(good.getActualPaymentAmount());
|
|
|
goodsVos.add(queryGoodsVo);
|
|
|
}
|
|
@@ -4127,6 +4216,11 @@ public class OrderServiceImpl implements OrderService {
|
|
|
if (response.getSuccess()) {
|
|
|
MemberInfoDTO memberInfoDTO = JacksonUtil.fromStringJson(JacksonUtil.toJson(response.getData()), MemberInfoDTO.class);
|
|
|
assert memberInfoDTO != null : String.format("会员码:【%s】会员信息错误!%s", memberCode, JacksonUtil.toJson(response));
|
|
|
+ // 查询会员表
|
|
|
+ /*UserEntity userEntity = userService.queryByMobile(memberCode);
|
|
|
+ userEntity.setOpenId(memberInfoDTO.getOpenId());
|
|
|
+ userEntity.setMemberCode(memberCode);
|
|
|
+ userService.update(userEntity);*/
|
|
|
Integer score = memberInfoDTO.getScore();
|
|
|
if (Objects.nonNull(score) && score > 0) {
|
|
|
// 有积分
|
|
@@ -4135,6 +4229,8 @@ public class OrderServiceImpl implements OrderService {
|
|
|
calculateOrderDiscountPriceResponseVO.setOrderTotalPrice(afterDiscountPrice);
|
|
|
calculateOrderDiscountPriceResponseVO.setGoodsDetailsDtos(goodsDetailsDtos);
|
|
|
calculateOrderDiscountPriceResponseVO.setBeforeScore(score);
|
|
|
+ calculateOrderDiscountPriceResponseVO.setOpenId(memberInfoDTO.getOpenId());
|
|
|
+ calculateOrderDiscountPriceResponseVO.setMemberPhone(memberInfoDTO.getPhone());
|
|
|
// 订单完成后再添加积分消费记录,以及同步积分信息
|
|
|
return calculateOrderDiscountPriceResponseVO;
|
|
|
} else {
|