|
@@ -23,6 +23,7 @@ import com.kmall.admin.dao.vip.Mall2PointsRulesDao;
|
|
import com.kmall.admin.dto.*;
|
|
import com.kmall.admin.dto.*;
|
|
import com.kmall.admin.entity.*;
|
|
import com.kmall.admin.entity.*;
|
|
import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
|
|
import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
|
|
|
|
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity;
|
|
import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
|
|
import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
|
|
import com.kmall.admin.entity.haikong.IntegralGoBackEntity;
|
|
import com.kmall.admin.entity.haikong.IntegralGoBackEntity;
|
|
import com.kmall.admin.entity.mk.MkActivitiesEntity;
|
|
import com.kmall.admin.entity.mk.MkActivitiesEntity;
|
|
@@ -37,9 +38,7 @@ import com.kmall.admin.fromcomm.entity.SysUserEntity;
|
|
import com.kmall.admin.haikong.constant.*;
|
|
import com.kmall.admin.haikong.constant.*;
|
|
import com.kmall.admin.haikong.dto.*;
|
|
import com.kmall.admin.haikong.dto.*;
|
|
import com.kmall.admin.haikong.utils.ListUtils;
|
|
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.HaiKongMemberTemplate;
|
|
import com.kmall.admin.haikong.client.HaiKongWarehouseTemplate;
|
|
import com.kmall.admin.haikong.client.HaiKongWarehouseTemplate;
|
|
import com.kmall.admin.haikong.client.VmcShopTemplate;
|
|
import com.kmall.admin.haikong.client.VmcShopTemplate;
|
|
@@ -47,6 +46,7 @@ import com.kmall.admin.haikong.config.HaiKongProperties;
|
|
import com.kmall.admin.haikong.utils.Response;
|
|
import com.kmall.admin.haikong.utils.Response;
|
|
import com.kmall.admin.service.*;
|
|
import com.kmall.admin.service.*;
|
|
import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
|
|
import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
|
|
|
|
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeDetailRecordService;
|
|
import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
|
|
import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
|
|
import com.kmall.admin.service.mk.MkActivitiesScoreService;
|
|
import com.kmall.admin.service.mk.MkActivitiesScoreService;
|
|
import com.kmall.admin.service.mk.MkActivitiesService;
|
|
import com.kmall.admin.service.mk.MkActivitiesService;
|
|
@@ -61,7 +61,6 @@ import com.kmall.admin.utils.data.response.ResponseMessageData;
|
|
import com.kmall.admin.utils.jackson.JacksonUtil;
|
|
import com.kmall.admin.utils.jackson.JacksonUtil;
|
|
import com.kmall.admin.utils.oms.OmsSign;
|
|
import com.kmall.admin.utils.oms.OmsSign;
|
|
import com.kmall.admin.utils.pdf.BarcodeUtil;
|
|
import com.kmall.admin.utils.pdf.BarcodeUtil;
|
|
-import com.kmall.admin.haikong.vo.CalculateOrderDiscountPriceVO;
|
|
|
|
import com.kmall.admin.websocket.WebSocketServer;
|
|
import com.kmall.admin.websocket.WebSocketServer;
|
|
import com.kmall.api.entity.OrderGoodsRestoreVo;
|
|
import com.kmall.api.entity.OrderGoodsRestoreVo;
|
|
import com.kmall.api.entity.OrderGoodsVo;
|
|
import com.kmall.api.entity.OrderGoodsVo;
|
|
@@ -252,6 +251,7 @@ public class OrderServiceImpl implements OrderService {
|
|
*/
|
|
*/
|
|
@Autowired
|
|
@Autowired
|
|
private MkActivitiesPromotionService mkActivitiesPromotionService;
|
|
private MkActivitiesPromotionService mkActivitiesPromotionService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 日志记录
|
|
* 日志记录
|
|
*/
|
|
*/
|
|
@@ -269,6 +269,13 @@ public class OrderServiceImpl implements OrderService {
|
|
*/
|
|
*/
|
|
@Autowired
|
|
@Autowired
|
|
private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
|
|
private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 会员积分变动商品详情
|
|
|
|
+ */
|
|
|
|
+ @Autowired
|
|
|
|
+ private HaiKongMemberScoreChangeDetailRecordService haiKongMemberScoreChangeDetailRecordService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 接口重发信息
|
|
* 接口重发信息
|
|
*/
|
|
*/
|
|
@@ -2209,6 +2216,7 @@ public class OrderServiceImpl implements OrderService {
|
|
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.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
|
|
queryGoodsVo.setActivity((String) map.get("activity"));
|
|
queryGoodsVo.setActivity((String) map.get("activity"));
|
|
|
|
+ queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
|
|
queryGoodsVOList.add(queryGoodsVo);
|
|
queryGoodsVOList.add(queryGoodsVo);
|
|
});
|
|
});
|
|
// 将在循环中查询数据库改为一次性查询
|
|
// 将在循环中查询数据库改为一次性查询
|
|
@@ -2307,6 +2315,7 @@ public class OrderServiceImpl implements OrderService {
|
|
goodsEntity.setActualPaymentAmount(goodsDto.getTotalPrice());
|
|
goodsEntity.setActualPaymentAmount(goodsDto.getTotalPrice());
|
|
goodsEntity.setSellVolume(goodsDto.getSellVolume());
|
|
goodsEntity.setSellVolume(goodsDto.getSellVolume());
|
|
goodsEntity.setActivity(goodsDto.getActivity());
|
|
goodsEntity.setActivity(goodsDto.getActivity());
|
|
|
|
+ goodsEntity.setStoreId(storeId);
|
|
goodsEntities.add(goodsEntity);
|
|
goodsEntities.add(goodsEntity);
|
|
} else {
|
|
} else {
|
|
// sku不存在
|
|
// sku不存在
|
|
@@ -2321,7 +2330,7 @@ public class OrderServiceImpl implements OrderService {
|
|
|
|
|
|
String openId = (String) param.get("openId");
|
|
String openId = (String) param.get("openId");
|
|
String memberCode = (String) param.get("memberCode");
|
|
String memberCode = (String) param.get("memberCode");
|
|
- UserEntity userEntity = userDao.queryByOpenId(openId);
|
|
|
|
|
|
+ UserEntity userEntity = userDao.queryByMobile((String) userInfo.get("customPhone"));
|
|
if (userEntity == null) {
|
|
if (userEntity == null) {
|
|
// 保存用户信息
|
|
// 保存用户信息
|
|
userEntity = new UserEntity();
|
|
userEntity = new UserEntity();
|
|
@@ -2473,7 +2482,6 @@ public class OrderServiceImpl implements OrderService {
|
|
saleRecordEntity.setOrderSn(order.getOrder_sn());
|
|
saleRecordEntity.setOrderSn(order.getOrder_sn());
|
|
saleRecordEntity.setSallerId(userId + "");
|
|
saleRecordEntity.setSallerId(userId + "");
|
|
saleRecordEntity.setSalesTime(new Date());
|
|
saleRecordEntity.setSalesTime(new Date());
|
|
-// saleRecordEntity.setDiscountId(topicId + "");
|
|
|
|
saleRecordEntity.setCreateTime(new Date());
|
|
saleRecordEntity.setCreateTime(new Date());
|
|
saleRecordDao.save(saleRecordEntity);
|
|
saleRecordDao.save(saleRecordEntity);
|
|
}
|
|
}
|
|
@@ -2482,87 +2490,141 @@ public class OrderServiceImpl implements OrderService {
|
|
Integer userEntityId = userEntity.getId();
|
|
Integer userEntityId = userEntity.getId();
|
|
// 总的积分:基础积分
|
|
// 总的积分:基础积分
|
|
AtomicReference<Integer> memberScore = new AtomicReference<>(0);
|
|
AtomicReference<Integer> memberScore = new AtomicReference<>(0);
|
|
- List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date()).stream().sorted().collect(Collectors.toList());
|
|
|
|
- // 商品map,key===>sku value===>金额
|
|
|
|
- Map<String, BigDecimal> goodsMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, GoodsEntity::getActualPaymentAmount, (k1, k2) -> k2));
|
|
|
|
- // 订单全部的sku
|
|
|
|
- Set<String> goodsSkuList = goodsMap.keySet();
|
|
|
|
- // 保存不在按商品计算积分的sku
|
|
|
|
- List<String> nonGoodsSkuList = new ArrayList<>();
|
|
|
|
- // 保存不在按分类计算积分的sku,剩下的就按门店计算,如果门店积分规则没有设置。。。。
|
|
|
|
- List<String> nonCategorySkuList = new ArrayList<>();
|
|
|
|
- pointsRulesAndDetailVOList.forEach(pointsRulesAndDetailVO -> {
|
|
|
|
- Mall2PointsRulesEntity mall2PointsRulesEntity = pointsRulesAndDetailVO.getMall2PointsRulesEntity();
|
|
|
|
- List<Mall2RulesDto> mall2PointsRulesDetailList = pointsRulesAndDetailVO.getMall2PointsRulesDetailList();
|
|
|
|
- List<String> skuList = mall2PointsRulesDetailList.stream().map(Mall2RulesDto::getPointsRulesName).collect(Collectors.toList());
|
|
|
|
- Integer pointsType = mall2PointsRulesEntity.getPointsType();
|
|
|
|
- // 积分比例
|
|
|
|
- BigDecimal ratio = mall2PointsRulesEntity.getRatio();
|
|
|
|
- if (pointsType.equals(Constants.MemberScoreRulesEnum.TWO.getCode())) {
|
|
|
|
- // 商品,优先级最高,查询
|
|
|
|
- goodsSkuList.forEach(sku -> {
|
|
|
|
- if (skuList.contains(sku)) {
|
|
|
|
|
|
+ // 无会员码,不参与积分赠送
|
|
|
|
+ Map<String, OrderGiftScoreRulesVo> giftGoodsScoreDetailMap = new HashMap<>();
|
|
|
|
+ if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
|
+ List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date());
|
|
|
|
+ // 商品map,key===>sku value===>金额
|
|
|
|
+ Map<String, BigDecimal> goodsMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, GoodsEntity::getActualPaymentAmount, (k1, k2) -> k2));
|
|
|
|
+ // 商品数据map,key===>sku value===>商品实体
|
|
|
|
+ Map<String, GoodsEntity> goodsDataMap = goodsEntities.stream().collect(Collectors.toMap(GoodsEntity::getSku, goodsEntity -> goodsEntity, (k1, k2) -> k2));
|
|
|
|
+ // 订单全部的sku
|
|
|
|
+ Set<String> goodsSkuList = goodsMap.keySet();
|
|
|
|
+ // 订单全部商品的分类列表,只有二级分类才能设置生成规则
|
|
|
|
+ Set<Integer> categorySet = goodsEntities.stream().map(GoodsEntity::getCategoryId).collect(Collectors.toSet());
|
|
|
|
+ pointsRulesAndDetailVOList.forEach(pointsRulesAndDetailVO -> {
|
|
|
|
+ Integer pointsType = pointsRulesAndDetailVO.getPointsType();
|
|
|
|
+ // 可以是sku、门店id、分类id
|
|
|
|
+ String pointsDetailNameId = pointsRulesAndDetailVO.getPointsDetailNameId();
|
|
|
|
+ // 积分比例
|
|
|
|
+ BigDecimal ratio = pointsRulesAndDetailVO.getRatio();
|
|
|
|
+ if (pointsType.equals(Constants.MemberScoreRulesEnum.TWO.getCode())) {
|
|
|
|
+ // 商品,优先级最高,查询
|
|
|
|
+ if (goodsSkuList.contains(pointsDetailNameId)) {
|
|
// 商品积分生成规则包含这个sku
|
|
// 商品积分生成规则包含这个sku
|
|
// 订单中该sku的总金额
|
|
// 订单中该sku的总金额
|
|
- BigDecimal money = goodsMap.get(sku);
|
|
|
|
- if (ratio.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
|
|
+ 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 {
|
|
} else {
|
|
// 积分比例设置为0,该商品不记积分。
|
|
// 积分比例设置为0,该商品不记积分。
|
|
- LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", sku, ratio);
|
|
|
|
|
|
+ LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- // 不包含sku,则需要判断是否有其他规则
|
|
|
|
- nonGoodsSkuList.add(sku);
|
|
|
|
|
|
+ giftGoodsScoreDetailMap.put(pointsDetailNameId, orderGiftScoreRulesVo);
|
|
|
|
+ goodsDataMap.remove(pointsDetailNameId);
|
|
}
|
|
}
|
|
- });
|
|
|
|
|
|
|
|
- }
|
|
|
|
- if (pointsType.equals(Constants.MemberScoreRulesEnum.ONE.getCode())) {
|
|
|
|
- // 商品类别
|
|
|
|
- nonGoodsSkuList.forEach(sku -> {
|
|
|
|
- if (nonGoodsSkuList.contains(sku)) {
|
|
|
|
- // 订单中该sku的总金额
|
|
|
|
- BigDecimal money = goodsMap.get(sku);
|
|
|
|
- if (ratio.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
- // 算出所积的分
|
|
|
|
- memberScore.set(money.multiply(ratio).add(new BigDecimal(memberScore.get())).intValue());
|
|
|
|
|
|
+ }
|
|
|
|
+ if (pointsType.equals(Constants.MemberScoreRulesEnum.ONE.getCode())) {
|
|
|
|
+ Collection<GoodsEntity> goodsEntityCollection = goodsDataMap.values();
|
|
|
|
+ goodsEntityCollection.forEach(goodsEntity -> {
|
|
|
|
+ // 商品类别
|
|
|
|
+ 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) {
|
|
|
|
+ // 算出所积的分
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- nonCategorySkuList.add(sku);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- if (pointsType.equals(Constants.MemberScoreRulesEnum.ZERO.getCode())) {
|
|
|
|
- // 门店
|
|
|
|
- nonCategorySkuList.forEach(sku -> {
|
|
|
|
- if (nonCategorySkuList.contains(sku)) {
|
|
|
|
- // 订单中该sku的总金额
|
|
|
|
- BigDecimal money = goodsMap.get(sku);
|
|
|
|
- if (ratio.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
- // 算出所积的分
|
|
|
|
- memberScore.set(money.multiply(ratio).multiply(new BigDecimal(memberScore.get())).intValue());
|
|
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ if (pointsType.equals(Constants.MemberScoreRulesEnum.ZERO.getCode())) {
|
|
|
|
+ // 门店
|
|
|
|
+ Collection<GoodsEntity> goodsEntityCollection = goodsDataMap.values();
|
|
|
|
+ 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) {
|
|
|
|
+ // 算出所积的分
|
|
|
|
+ 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);
|
|
|
|
+ if (memberPointsEntity == null) {
|
|
|
|
+ memberPointsEntity = new Mall2MemberPointsEntity();
|
|
|
|
+ memberPointsEntity.setUserId(userEntityId + "");
|
|
|
|
+ memberPointsEntity.setPoints(memberScore.get());
|
|
|
|
+ memberPointsEntity.setCreaterSn(userId + "");
|
|
|
|
+ memberPointsEntity.setCreateTime(new Date());
|
|
|
|
+ memberPointsDao.save(memberPointsEntity);
|
|
|
|
+ } else {
|
|
|
|
+ memberPointsEntity.setPoints(memberScore.get() + memberPointsEntity.getPoints());
|
|
|
|
+ memberPointsEntity.setModerSn(userId + "");
|
|
|
|
+ memberPointsEntity.setModTime(new Date());
|
|
|
|
+ Integer point = 0;
|
|
|
|
+ if (Objects.isNull(memberPointsEntity.getPoints())) {
|
|
|
|
+ point = memberScore.get();
|
|
|
|
+ } else {
|
|
|
|
+ point = memberPointsEntity.getPoints() + memberScore.get();
|
|
|
|
+ }
|
|
|
|
+ memberPointsEntity.setPoints(point);
|
|
|
|
+ memberPointsDao.update(memberPointsEntity);
|
|
}
|
|
}
|
|
- });
|
|
|
|
- // 增加该会员的积分
|
|
|
|
- Mall2MemberPointsEntity memberPointsEntity = memberPointsDao.queryByUserId(userEntityId);
|
|
|
|
- if (memberPointsEntity == null) {
|
|
|
|
- memberPointsEntity = new Mall2MemberPointsEntity();
|
|
|
|
- memberPointsEntity.setUserId(userEntityId + "");
|
|
|
|
- memberPointsEntity.setPoints(memberScore.get());
|
|
|
|
- memberPointsEntity.setCreaterSn(userId + "");
|
|
|
|
- memberPointsEntity.setCreateTime(new Date());
|
|
|
|
- memberPointsDao.save(memberPointsEntity);
|
|
|
|
- } else {
|
|
|
|
- memberPointsEntity.setPoints(memberScore.get() + memberPointsEntity.getPoints());
|
|
|
|
- memberPointsEntity.setModerSn(userId + "");
|
|
|
|
- memberPointsEntity.setModTime(new Date());
|
|
|
|
- memberPointsDao.update(memberPointsEntity);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
// 增加该会员的消费记录
|
|
// 增加该会员的消费记录
|
|
Mall2MemberConsumptionRecordsEntity consumptionRecords = new Mall2MemberConsumptionRecordsEntity();
|
|
Mall2MemberConsumptionRecordsEntity consumptionRecords = new Mall2MemberConsumptionRecordsEntity();
|
|
consumptionRecords.setUserId(userEntity.getId() + "");
|
|
consumptionRecords.setUserId(userEntity.getId() + "");
|
|
@@ -2572,34 +2634,30 @@ public class OrderServiceImpl implements OrderService {
|
|
// 积分消费记录
|
|
// 积分消费记录
|
|
Integer beforeScoreInteger = (Integer) param.get("beforeScore");
|
|
Integer beforeScoreInteger = (Integer) param.get("beforeScore");
|
|
Integer afterScoreStrInteger = (Integer) param.get("afterScore");
|
|
Integer afterScoreStrInteger = (Integer) param.get("afterScore");
|
|
- int deductionScore = (Integer) param.get("deductionScore");
|
|
|
|
|
|
+ int deductionScore = org.springframework.util.StringUtils.isEmpty((String) param.get("deductionScore")) ? 0 : Integer.parseInt((String) param.get("deductionScore"));
|
|
String memberPhone = String.valueOf(param.get("memberPhone"));
|
|
String memberPhone = String.valueOf(param.get("memberPhone"));
|
|
- BigDecimal scoreDeductionPrice = BigDecimal.valueOf((Integer) param.get("scoreDeductionPrice"));
|
|
|
|
|
|
+ BigDecimal scoreDeductionPrice = new BigDecimal(org.springframework.util.StringUtils.isEmpty((String) param.get("scoreDeductionPrice")) ? "0" : (String) param.get("scoreDeductionPrice"));
|
|
consumptionRecords.setBeforeScore(beforeScoreInteger);
|
|
consumptionRecords.setBeforeScore(beforeScoreInteger);
|
|
consumptionRecords.setAfterScore(afterScoreStrInteger);
|
|
consumptionRecords.setAfterScore(afterScoreStrInteger);
|
|
- // TODO 需要新增字段:订单赠送积分
|
|
|
|
consumptionRecords.setOrderTotalPrice(order.getActual_price());
|
|
consumptionRecords.setOrderTotalPrice(order.getActual_price());
|
|
consumptionRecords.setScoreDeductionPrice(scoreDeductionPrice);
|
|
consumptionRecords.setScoreDeductionPrice(scoreDeductionPrice);
|
|
consumptionRecords.setMemberCode(memberCode);
|
|
consumptionRecords.setMemberCode(memberCode);
|
|
consumptionRecords.setMemberPhone(memberPhone);
|
|
consumptionRecords.setMemberPhone(memberPhone);
|
|
|
|
+ consumptionRecords.setOrderGiftScore(memberScore.get());
|
|
consumptionRecords.setDeductionScore(deductionScore);
|
|
consumptionRecords.setDeductionScore(deductionScore);
|
|
consumptionRecords.setCreaterSn(userId + "");
|
|
consumptionRecords.setCreaterSn(userId + "");
|
|
consumptionRecords.setCreateTime(new Date());
|
|
consumptionRecords.setCreateTime(new Date());
|
|
memberConsumptionRecordsDao.save(consumptionRecords);
|
|
memberConsumptionRecordsDao.save(consumptionRecords);
|
|
|
|
|
|
- // 同步会员订单消费记录
|
|
|
|
- /*if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
|
|
|
+ if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
|
+ // 同步会员订单消费记录
|
|
syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
|
|
+ syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
|
+ // 积分变动接口,下单扣减
|
|
|
|
+ Integer score = memberScore.get();
|
|
|
|
+ syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
}
|
|
}
|
|
|
|
|
|
- // 积分变动接口,下单扣减
|
|
|
|
- if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
|
- syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
|
- // 下单赠送,一元积一分
|
|
|
|
- Integer score = order.getActual_price().intValue();
|
|
|
|
- syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
|
|
- }*/
|
|
|
|
-
|
|
|
|
// 生成取票码
|
|
// 生成取票码
|
|
PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
|
|
PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
|
|
pickUpCodeEntity.setOrderSn(order.getOrder_sn());
|
|
pickUpCodeEntity.setOrderSn(order.getOrder_sn());
|
|
@@ -3004,7 +3062,7 @@ public class OrderServiceImpl implements OrderService {
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- LOGGER.error("请求会员系统同步消费订单接口失败!准备新增发送失败记录,等待重发!异常信息:", e);
|
|
|
|
|
|
+ LOGGER.error("请求会员系统同步消费订单接口出现异常!准备新增发送失败记录,等待重发!异常信息:", e);
|
|
// 没有请求成功,写表,重发
|
|
// 没有请求成功,写表,重发
|
|
haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
@@ -3015,9 +3073,19 @@ public class OrderServiceImpl implements OrderService {
|
|
* 同步会员积分变动记录
|
|
* 同步会员积分变动记录
|
|
* @param openId 会员openid
|
|
* @param openId 会员openid
|
|
* @param order 订单信息
|
|
* @param order 订单信息
|
|
|
|
+ * @param changeEvent 变动事件
|
|
|
|
+ * @param changeReason 变动原因
|
|
|
|
+ * @param goodsList 商品详情
|
|
|
|
+ * @param giftGoodsScoreDetailMap 赠送积分详情
|
|
* @param score 变动积分
|
|
* @param score 变动积分
|
|
*/
|
|
*/
|
|
- private void syncMemberScoreChangeRecord(String openId, OrderVo order, Integer score, String changeReason, 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();
|
|
HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity = new HaiKongMemberScoreChangeRecordEntity();
|
|
MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
String changeId = UUID.randomUUID(true).toString();
|
|
String changeId = UUID.randomUUID(true).toString();
|
|
@@ -3046,10 +3114,31 @@ public class OrderServiceImpl implements OrderService {
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
|
|
LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
|
+ LOGGER.error("请求会员系统积分变动接口出现异常!准备新增发送失败记录,等待重发!异常信息:", e);
|
|
// 失败重发
|
|
// 失败重发
|
|
haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
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(sku);
|
|
|
|
+ entity.setDeductionScore(goodsEntity.getDeductionScore());
|
|
|
|
+ return entity;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ haiKongMemberScoreChangeDetailRecordService.saveBatch(recordEntityList);
|
|
}
|
|
}
|
|
|
|
|
|
private boolean orderQuery(OrderVo order, OrderProcessRecordEntity processRecordEntity) {
|
|
private boolean orderQuery(OrderVo order, OrderProcessRecordEntity processRecordEntity) {
|
|
@@ -4009,7 +4098,16 @@ public class OrderServiceImpl implements OrderService {
|
|
// 与积分抵扣互斥的sku
|
|
// 与积分抵扣互斥的sku
|
|
List<String> promotionSkuList = new ArrayList<>();
|
|
List<String> promotionSkuList = new ArrayList<>();
|
|
// 判断活动类型并排序,再确定购物栏中商品是否满足活动条件
|
|
// 判断活动类型并排序,再确定购物栏中商品是否满足活动条件
|
|
- mkActivitiesEntityList.stream().sorted().forEach(mkActivitiesEntity -> {
|
|
|
|
|
|
+ mkActivitiesEntityList.stream().filter(mkActivitiesEntity -> {
|
|
|
|
+ if (!Constants.ActivityTopicEnum.JFDK.getTopicCode().equals(mkActivitiesEntity.getMkaTopic())) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ if (Objects.isNull(mkActivitiesEntity.getPriority())) {
|
|
|
|
+ LOGGER.error("活动:【{}】,活动ID:【{}】未设置优先级!请先设置优先级!", mkActivitiesEntity.getMkaTopic(), mkActivitiesEntity.getMkaId());
|
|
|
|
+ throw new ServiceException(String.format("活动:【%s】,活动ID:【%s】未设置优先级!请先设置优先级!", mkActivitiesEntity.getMkaTopic(), mkActivitiesEntity.getMkaId()));
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }).sorted().forEach(mkActivitiesEntity -> {
|
|
String mkaStoreId = mkActivitiesEntity.getMkaStoreId();
|
|
String mkaStoreId = mkActivitiesEntity.getMkaStoreId();
|
|
Long mkaId = mkActivitiesEntity.getMkaId();
|
|
Long mkaId = mkActivitiesEntity.getMkaId();
|
|
String mkaTopic = mkActivitiesEntity.getMkaTopic();
|
|
String mkaTopic = mkActivitiesEntity.getMkaTopic();
|
|
@@ -4047,7 +4145,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BeanUtils.copyProperties(goodsDetailsDto, goodsEntity);
|
|
BeanUtils.copyProperties(goodsDetailsDto, goodsEntity);
|
|
goodsDetailsDto.setActualPaymentAmount(activityPrice);
|
|
goodsDetailsDto.setActualPaymentAmount(activityPrice);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
- goodsDetailsDto.setActivity("限时促销");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.LSCX.getTopicName());
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(activityPrice));
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(activityPrice));
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
activityFlag.set(false);
|
|
activityFlag.set(false);
|
|
@@ -4088,7 +4186,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
|
|
goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
|
|
- goodsDetailsDto.setActivity("满赠商品");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.MZ.getTopicName());
|
|
goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
|
|
goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
|
|
goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
|
|
goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
|
|
// 添加进商品详情列表
|
|
// 添加进商品详情列表
|
|
@@ -4120,7 +4218,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
|
|
goodsDetailsDto.setActualPaymentAmount(BigDecimal.ZERO);
|
|
- goodsDetailsDto.setActivity("满赠商品");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.MZ.getTopicName());
|
|
goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
|
|
goodsDetailsDto.setGiftNumber(mkActivitiesFullGiftEntity.getGiftNumber());
|
|
goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
|
|
goodsDetailsDto.setDiscountedPrice(goodsEntity.getRetailPrice());
|
|
// 添加进商品详情列表
|
|
// 添加进商品详情列表
|
|
@@ -4177,7 +4275,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
- goodsDetailsDto.setActivity("优惠券活动");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
activityFlag.set(false);
|
|
activityFlag.set(false);
|
|
@@ -4205,7 +4303,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
- goodsDetailsDto.setActivity("优惠券活动");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
activityFlag.set(false);
|
|
activityFlag.set(false);
|
|
@@ -4234,7 +4332,7 @@ public class OrderServiceImpl implements OrderService {
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
BigDecimal tax = CalculateTax.calculateFinalTax(goodsEntity, goodsEntity.getRetailPrice(), goodsService).setScale(3, RoundingMode.HALF_UP);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setActualPaymentAmount(discountAfterPrice);
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
goodsDetailsDto.setGoodstaxes(String.valueOf(tax.multiply(new BigDecimal(goodsDetailsDto.getSellVolume()))));
|
|
- goodsDetailsDto.setActivity("优惠券活动");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(Constants.ActivityTopicEnum.YHQ.getTopicName());
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDto.setDiscountedPrice(retailPrice.subtract(discountAfterPrice));
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
goodsDetailsDtos.add(goodsDetailsDto);
|
|
activityFlag.set(false);
|
|
activityFlag.set(false);
|
|
@@ -4376,7 +4474,16 @@ public class OrderServiceImpl implements OrderService {
|
|
int scoreMayDeductionPrice = (int) (score / scoreLimit);
|
|
int scoreMayDeductionPrice = (int) (score / scoreLimit);
|
|
BigDecimal scoreMayDeductionPriceDecimal = new BigDecimal(scoreMayDeductionPrice);
|
|
BigDecimal scoreMayDeductionPriceDecimal = new BigDecimal(scoreMayDeductionPrice);
|
|
// 过滤掉参与过限时特价并且与积分抵扣互斥的sku,以及未参加积分抵扣活动的sku
|
|
// 过滤掉参与过限时特价并且与积分抵扣互斥的sku,以及未参加积分抵扣活动的sku
|
|
- goodsDetailsDtos = goodsDetailsDtos.stream().filter(goodsDetailsDto -> !promotionSkuList.contains(goodsDetailsDto.getSku()) && scoreDeductionSkuList.contains(goodsDetailsDto.getSku())).collect(Collectors.toList());
|
|
|
|
|
|
+ goodsDetailsDtos = goodsDetailsDtos.stream().filter(goodsDetailsDto -> {
|
|
|
|
+ if (!promotionSkuList.contains(goodsDetailsDto.getSku()) && scoreDeductionSkuList.contains(goodsDetailsDto.getSku())) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ // 满赠商品不参与积分分摊计算
|
|
|
|
+ if (!Constants.ActivityTopicEnum.MZ.getTopicName().equals(goodsDetailsDto.getActivity())) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
// 总分摊积分
|
|
// 总分摊积分
|
|
BigDecimal shareScore = BigDecimal.ZERO;
|
|
BigDecimal shareScore = BigDecimal.ZERO;
|
|
BigDecimal scoreIntegerDecimal = BigDecimal.valueOf(scoreInteger);
|
|
BigDecimal scoreIntegerDecimal = BigDecimal.valueOf(scoreInteger);
|
|
@@ -4386,7 +4493,7 @@ public class OrderServiceImpl implements OrderService {
|
|
GoodsDetailsDto goodsDetailsDto = goodsDetailsDtos.get(i);
|
|
GoodsDetailsDto goodsDetailsDto = goodsDetailsDtos.get(i);
|
|
// 抵扣积分分摊
|
|
// 抵扣积分分摊
|
|
int index = size - 1;
|
|
int index = size - 1;
|
|
- goodsDetailsDto.setActivity("积分抵扣");
|
|
|
|
|
|
+ goodsDetailsDto.setActivity(org.springframework.util.StringUtils.isEmpty(goodsDetailsDto.getActivity()) ? "积分抵扣" : goodsDetailsDto.getActivity() + ",积分抵扣");
|
|
String sku = goodsDetailsDto.getGoodsSn();
|
|
String sku = goodsDetailsDto.getGoodsSn();
|
|
BigDecimal scoreLimitDecimal = skuScoreLimitMap.get(sku);
|
|
BigDecimal scoreLimitDecimal = skuScoreLimitMap.get(sku);
|
|
String prodBarcode = goodsDetailsDto.getProdBarcode();
|
|
String prodBarcode = goodsDetailsDto.getProdBarcode();
|