|
@@ -38,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;
|
|
@@ -63,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;
|
|
@@ -2494,6 +2491,7 @@ public class OrderServiceImpl implements OrderService {
|
|
// 总的积分:基础积分
|
|
// 总的积分:基础积分
|
|
AtomicReference<Integer> memberScore = new AtomicReference<>(0);
|
|
AtomicReference<Integer> memberScore = new AtomicReference<>(0);
|
|
// 无会员码,不参与积分赠送
|
|
// 无会员码,不参与积分赠送
|
|
|
|
+ Map<String, OrderGiftScoreRulesVo> giftGoodsScoreDetailMap = new HashMap<>();
|
|
if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date());
|
|
List<PointsRulesAndDetailVO> pointsRulesAndDetailVOList = mall2PointsRulesService.queryListByTime(new Date());
|
|
// 商品map,key===>sku value===>金额
|
|
// 商品map,key===>sku value===>金额
|
|
@@ -2516,13 +2514,21 @@ public class OrderServiceImpl implements OrderService {
|
|
// 商品积分生成规则包含这个sku
|
|
// 商品积分生成规则包含这个sku
|
|
// 订单中该sku的总金额
|
|
// 订单中该sku的总金额
|
|
BigDecimal money = goodsMap.get(pointsDetailNameId);
|
|
BigDecimal money = goodsMap.get(pointsDetailNameId);
|
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.TWO.getCode());
|
|
if (ratio.compareTo(BigDecimal.ZERO) > 0) {
|
|
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:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
LOGGER.info("商品SKU:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
}
|
|
}
|
|
|
|
+ giftGoodsScoreDetailMap.put(pointsDetailNameId, orderGiftScoreRulesVo);
|
|
goodsDataMap.remove(pointsDetailNameId);
|
|
goodsDataMap.remove(pointsDetailNameId);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2533,17 +2539,25 @@ public class OrderServiceImpl implements OrderService {
|
|
// 商品类别
|
|
// 商品类别
|
|
Integer categoryId = goodsEntity.getCategoryId();
|
|
Integer categoryId = goodsEntity.getCategoryId();
|
|
String sku = goodsEntity.getSku();
|
|
String sku = goodsEntity.getSku();
|
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.ONE.getCode());
|
|
if (categorySet.contains(categoryId)) {
|
|
if (categorySet.contains(categoryId)) {
|
|
if (categoryId.equals(Integer.parseInt(pointsDetailNameId))) {
|
|
if (categoryId.equals(Integer.parseInt(pointsDetailNameId))) {
|
|
// 订单中该sku的总金额
|
|
// 订单中该sku的总金额
|
|
BigDecimal money = goodsMap.get(sku);
|
|
BigDecimal money = goodsMap.get(sku);
|
|
if (ratio.compareTo(BigDecimal.ZERO) > 0) {
|
|
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("分类:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
LOGGER.info("分类:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
|
|
+ orderGiftScoreRulesVo.setGiftScore(0);
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateRatio(BigDecimal.ZERO);
|
|
}
|
|
}
|
|
|
|
+ giftGoodsScoreDetailMap.put(sku, orderGiftScoreRulesVo);
|
|
goodsDataMap.remove(sku);
|
|
goodsDataMap.remove(sku);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -2555,20 +2569,37 @@ public class OrderServiceImpl implements OrderService {
|
|
goodsEntityCollection.forEach(goodsEntity -> {
|
|
goodsEntityCollection.forEach(goodsEntity -> {
|
|
Integer storeId1 = goodsEntity.getStoreId();
|
|
Integer storeId1 = goodsEntity.getStoreId();
|
|
String sku = goodsEntity.getSku();
|
|
String sku = goodsEntity.getSku();
|
|
|
|
+ OrderGiftScoreRulesVo orderGiftScoreRulesVo = new OrderGiftScoreRulesVo();
|
|
|
|
+ orderGiftScoreRulesVo.setGenerateType(Constants.MemberScoreRulesEnum.ZERO.getCode());
|
|
if (storeId.equals(storeId1)) {
|
|
if (storeId.equals(storeId1)) {
|
|
// 订单中该sku的总金额
|
|
// 订单中该sku的总金额
|
|
BigDecimal money = goodsMap.get(sku);
|
|
BigDecimal money = goodsMap.get(sku);
|
|
if (ratio.compareTo(BigDecimal.ZERO) != 0) {
|
|
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("门店:【{}】,积分生成规则设置积分比例为:{},故不产生积分!", pointsDetailNameId, ratio);
|
|
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);
|
|
Mall2MemberPointsEntity memberPointsEntity = memberPointsDao.queryByUserId(userEntityId);
|
|
@@ -2621,10 +2652,10 @@ public class OrderServiceImpl implements OrderService {
|
|
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, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
|
|
|
+ syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
// 积分变动接口,下单扣减
|
|
// 积分变动接口,下单扣减
|
|
Integer score = memberScore.get();
|
|
Integer score = memberScore.get();
|
|
- syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
|
|
|
|
+ syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, giftGoodsScoreDetailMap, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
|
|
}
|
|
}
|
|
|
|
|
|
// 生成取票码
|
|
// 生成取票码
|
|
@@ -3045,9 +3076,16 @@ public class OrderServiceImpl implements OrderService {
|
|
* @param changeEvent 变动事件
|
|
* @param changeEvent 变动事件
|
|
* @param changeReason 变动原因
|
|
* @param changeReason 变动原因
|
|
* @param goodsList 商品详情
|
|
* @param goodsList 商品详情
|
|
|
|
+ * @param giftGoodsScoreDetailMap 赠送积分详情
|
|
* @param score 变动积分
|
|
* @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();
|
|
HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity = new HaiKongMemberScoreChangeRecordEntity();
|
|
MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
|
|
String changeId = UUID.randomUUID(true).toString();
|
|
String changeId = UUID.randomUUID(true).toString();
|
|
@@ -3081,14 +3119,22 @@ public class OrderServiceImpl implements OrderService {
|
|
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 -> {
|
|
List<HaiKongMemberScoreChangeDetailRecordEntity> recordEntityList = goodsList.stream().map(goodsEntity -> {
|
|
HaiKongMemberScoreChangeDetailRecordEntity entity = new HaiKongMemberScoreChangeDetailRecordEntity();
|
|
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.setOrderSn(order.getOrder_sn());
|
|
entity.setRetailPrice(goodsEntity.getRetailPrice());
|
|
entity.setRetailPrice(goodsEntity.getRetailPrice());
|
|
entity.setActualPrice(goodsEntity.getTotalPrice());
|
|
entity.setActualPrice(goodsEntity.getTotalPrice());
|
|
entity.setProductBarcode(goodsEntity.getProdBarcode());
|
|
entity.setProductBarcode(goodsEntity.getProdBarcode());
|
|
entity.setSellVolume(goodsEntity.getSellVolume());
|
|
entity.setSellVolume(goodsEntity.getSellVolume());
|
|
- entity.setSku(goodsEntity.getSku());
|
|
|
|
|
|
+ entity.setSku(sku);
|
|
entity.setDeductionScore(goodsEntity.getDeductionScore());
|
|
entity.setDeductionScore(goodsEntity.getDeductionScore());
|
|
return entity;
|
|
return entity;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|