|
@@ -1366,7 +1366,7 @@ public class OrderServiceImpl implements OrderService {
|
|
productInfo.setStockNum(productInfo.getStockNum() - cartEntity.getNumber());
|
|
productInfo.setStockNum(productInfo.getStockNum() - cartEntity.getNumber());
|
|
productInfo.setStoreId(Long.valueOf(storeId));
|
|
productInfo.setStoreId(Long.valueOf(storeId));
|
|
productInfo.addSellVolume();
|
|
productInfo.addSellVolume();
|
|
- productStoreRelaDao.updateStockNum(productInfo);//修改普通商品库存
|
|
|
|
|
|
+ productStoreRelaDao.updateStockNumByStoreIdAndSku(productInfo);//修改普通商品库存
|
|
|
|
|
|
if (goodsEntity != null) {
|
|
if (goodsEntity != null) {
|
|
goodsEntity.setGoodsNumber(goodsEntity.getGoodsNumber() - cartEntity.getNumber());
|
|
goodsEntity.setGoodsNumber(goodsEntity.getGoodsNumber() - cartEntity.getNumber());
|
|
@@ -2322,7 +2322,7 @@ public class OrderServiceImpl implements OrderService {
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- @Transactional
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
public synchronized Map offlineRetailSubmit(Map param, SysUserEntity user) {
|
|
public synchronized Map offlineRetailSubmit(Map param, SysUserEntity user) {
|
|
// 解析订单数据 List
|
|
// 解析订单数据 List
|
|
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList");
|
|
List<LinkedHashMap> goodsList = (List<LinkedHashMap>) param.get("goodsList");
|
|
@@ -2459,10 +2459,10 @@ public class OrderServiceImpl implements OrderService {
|
|
// 当前出区数
|
|
// 当前出区数
|
|
Integer exitRegionNumber = goodsDto.getExitRegionNumber();
|
|
Integer exitRegionNumber = goodsDto.getExitRegionNumber();
|
|
// 保税仓库存 + 门店库存 - 出区数 >= 购买数
|
|
// 保税仓库存 + 门店库存 - 出区数 >= 购买数
|
|
- if (!((warehouseStock + goodsNumber) - exitRegionNumber >= sellVolume)) {
|
|
|
|
|
|
+ if (!((warehouseStock + stockNum) - exitRegionNumber >= sellVolume)) {
|
|
// 库存不足
|
|
// 库存不足
|
|
- LOGGER.error("sku:【{}】库存不足,门店可用库存:【{}】,仓库可用库存:【{}】,购买数量:【{}】", sku, goodsNumber, warehouseStock, sellVolume);
|
|
|
|
- throw new ServiceException(String.format("sku:【%s】库存不足,门店可用库存:【%s】,仓库可用库存:【%s】,购买数量:【%s】", sku, goodsNumber, warehouseStock, sellVolume));
|
|
|
|
|
|
+ LOGGER.error("sku:【{}】库存不足,门店可用库存:【{}】,仓库可用库存:【{}】,购买数量:【{}】", sku, stockNum, warehouseStock, sellVolume);
|
|
|
|
+ throw new ServiceException(String.format("sku:【%s】库存不足,门店可用库存:【%s】,仓库可用库存:【%s】,购买数量:【%s】", sku, stockNum, warehouseStock, sellVolume));
|
|
}
|
|
}
|
|
// 门店库存变化记录
|
|
// 门店库存变化记录
|
|
StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
|
|
StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
|
|
@@ -2472,8 +2472,8 @@ public class OrderServiceImpl implements OrderService {
|
|
storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(goodsDto.getStoreId())));
|
|
storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(goodsDto.getStoreId())));
|
|
storeMngChangeEntity.setMerchSn(goodsDto.getMerchSn());
|
|
storeMngChangeEntity.setMerchSn(goodsDto.getMerchSn());
|
|
storeMngChangeEntity.setStoreChangeNum(sellVolume);
|
|
storeMngChangeEntity.setStoreChangeNum(sellVolume);
|
|
- storeMngChangeEntity.setStoreOriginalNum(goodsDto.getStockNum());
|
|
|
|
- storeMngChangeEntity.setStoreValidNum(goodsDto.getStockNum() - sellVolume);
|
|
|
|
|
|
+ storeMngChangeEntity.setStoreOriginalNum(stockNum);
|
|
|
|
+ storeMngChangeEntity.setStoreValidNum(stockNum - sellVolume);
|
|
storeMngChangeEntity.setCreateTime(new Date());
|
|
storeMngChangeEntity.setCreateTime(new Date());
|
|
storeMngChangeEntity.setModTime(new Date());
|
|
storeMngChangeEntity.setModTime(new Date());
|
|
storeMngChangeEntity.setCreaterSn(user.getUsername());
|
|
storeMngChangeEntity.setCreaterSn(user.getUsername());
|
|
@@ -2481,7 +2481,7 @@ public class OrderServiceImpl implements OrderService {
|
|
storeMngChangeEntity.setIsValid(0);
|
|
storeMngChangeEntity.setIsValid(0);
|
|
storeMngChangeDao.save(storeMngChangeEntity);
|
|
storeMngChangeDao.save(storeMngChangeEntity);
|
|
|
|
|
|
- int validNum = goodsDto.getStockNum() - sellVolume;
|
|
|
|
|
|
+ int validNum = stockNum - sellVolume;
|
|
// 园区库存变化记录
|
|
// 园区库存变化记录
|
|
MngChangeEntity mngChangeEntity = new MngChangeEntity();
|
|
MngChangeEntity mngChangeEntity = new MngChangeEntity();
|
|
mngChangeEntity.setThirdPartyMerchCode(goodsDto.getThirdPartyMerchCode());
|
|
mngChangeEntity.setThirdPartyMerchCode(goodsDto.getThirdPartyMerchCode());
|
|
@@ -2503,9 +2503,9 @@ public class OrderServiceImpl implements OrderService {
|
|
// 如果园区库存数量小于等于0, 则不更新园区库存, 园区库存只做参考
|
|
// 如果园区库存数量小于等于0, 则不更新园区库存, 园区库存只做参考
|
|
int diff = Math.max(goodsNumber - sellVolume, 0);
|
|
int diff = Math.max(goodsNumber - sellVolume, 0);
|
|
GoodsEntity goodsEntity = new GoodsEntity();
|
|
GoodsEntity goodsEntity = new GoodsEntity();
|
|
|
|
+ BeanUtils.copyProperties(goodsDto, goodsEntity);
|
|
goodsEntity.setGoodsNumber(diff);
|
|
goodsEntity.setGoodsNumber(diff);
|
|
goodsEntity.setLastSaleTime(new Date());
|
|
goodsEntity.setLastSaleTime(new Date());
|
|
- BeanUtils.copyProperties(goodsDto, goodsEntity);
|
|
|
|
goodsService.updateStockNumberByProductCodeAndSku(goodsEntity);
|
|
goodsService.updateStockNumberByProductCodeAndSku(goodsEntity);
|
|
// 门店库存
|
|
// 门店库存
|
|
ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity();
|
|
ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity();
|
|
@@ -2514,7 +2514,7 @@ public class OrderServiceImpl implements OrderService {
|
|
productStoreRelaEntity.setStoreId(storeId.longValue());
|
|
productStoreRelaEntity.setStoreId(storeId.longValue());
|
|
productStoreRelaEntity.setSellVolume(goodsDto.getSellVolume() + sellVolume);
|
|
productStoreRelaEntity.setSellVolume(goodsDto.getSellVolume() + sellVolume);
|
|
productStoreRelaEntity.setLastSaleTime(new Date());
|
|
productStoreRelaEntity.setLastSaleTime(new Date());
|
|
- productStoreRelaService.updateStockNum(productStoreRelaEntity);//修改普通商品库存
|
|
|
|
|
|
+ productStoreRelaService.updateStockNumByStoreIdAndSku(productStoreRelaEntity);//修改普通商品库存
|
|
|
|
|
|
BigDecimal retailPrice = goodsDto.getRetailPrice(); // 单价
|
|
BigDecimal retailPrice = goodsDto.getRetailPrice(); // 单价
|
|
BigDecimal storeRetailPrice = goodsDto.getRetailPrice(); // 单价
|
|
BigDecimal storeRetailPrice = goodsDto.getRetailPrice(); // 单价
|
|
@@ -2753,13 +2753,17 @@ public class OrderServiceImpl implements OrderService {
|
|
memberConsumptionRecordsDao.save(consumptionRecords);
|
|
memberConsumptionRecordsDao.save(consumptionRecords);
|
|
|
|
|
|
// 同步会员订单消费记录
|
|
// 同步会员订单消费记录
|
|
- syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
|
|
|
|
+ if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
|
|
|
|
+ syncMemberConsumeRecord(memberPhone, order, deductionScore);
|
|
|
|
+ }
|
|
|
|
|
|
// 积分变动接口,下单扣减
|
|
// 积分变动接口,下单扣减
|
|
- syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
|
|
|
|
- // 下单赠送,一元积一分
|
|
|
|
- Integer score = order.getActual_price().intValue();
|
|
|
|
- syncMemberScoreChangeRecord(openId, order, score, "下单赠送", 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();
|
|
@@ -3002,7 +3006,13 @@ public class OrderServiceImpl implements OrderService {
|
|
LOGGER.info("请求会员系统同步消费订单接口!请求体:{}", body);
|
|
LOGGER.info("请求会员系统同步消费订单接口!请求体:{}", body);
|
|
// 发送请求
|
|
// 发送请求
|
|
String memberOrderSyncResponseJson = haiKongMemberTemplate.memberOrderSync(body);
|
|
String memberOrderSyncResponseJson = haiKongMemberTemplate.memberOrderSync(body);
|
|
- haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
|
|
|
+ Response<Long> response = JacksonUtil.fromListJson(memberOrderSyncResponseJson, new TypeReference<Response<Long>>() {});
|
|
|
|
+ if (Objects.nonNull(response) && response.getSuccess()) {
|
|
|
|
+ haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
|
|
|
|
+ haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
|
+ } else {
|
|
|
|
+ haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
|
+ }
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
haiKongMemberOrderSyncResendService.save(haiKongMemberOrderSyncResendEntity);
|
|
LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
LOGGER.info("请求会员系统同步消费订单接口成功!响应数据:{}", memberOrderSyncResponseJson);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -3035,9 +3045,13 @@ public class OrderServiceImpl implements OrderService {
|
|
LOGGER.info("请求会员系统积分变动接口!请求体:{}", body);
|
|
LOGGER.info("请求会员系统积分变动接口!请求体:{}", body);
|
|
String changeMemberScoreResponseJson = haiKongMemberTemplate.changeMemberScore(body);
|
|
String changeMemberScoreResponseJson = haiKongMemberTemplate.changeMemberScore(body);
|
|
Response<MemberScoreChangeResponseDTO> response = JacksonUtil.fromListJson(changeMemberScoreResponseJson, new TypeReference<Response<MemberScoreChangeResponseDTO>>() {});
|
|
Response<MemberScoreChangeResponseDTO> response = JacksonUtil.fromListJson(changeMemberScoreResponseJson, new TypeReference<Response<MemberScoreChangeResponseDTO>>() {});
|
|
- MemberScoreChangeResponseDTO responseData = response.getData();
|
|
|
|
- haiKongMemberScoreChangeRecordEntity.setStatementId(responseData.getStatementId());
|
|
|
|
- haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
|
|
|
+ if (Objects.nonNull(response) && response.getSuccess()) {
|
|
|
|
+ MemberScoreChangeResponseDTO responseData = response.getData();
|
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setStatementId(responseData.getStatementId());
|
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
|
|
|
|
+ } else {
|
|
|
|
+ haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
|
|
|
|
+ }
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
|
|
LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
|
|
LOGGER.info("请求会员系统积分变动接口成功!响应数据:{}", changeMemberScoreResponseJson);
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -4442,7 +4456,7 @@ public class OrderServiceImpl implements OrderService {
|
|
//订单价格计算:订单的总价+运费
|
|
//订单价格计算:订单的总价+运费
|
|
for (GoodsEntity goodsEntity : goodsList) {
|
|
for (GoodsEntity goodsEntity : goodsList) {
|
|
goodsTotalPrice = goodsTotalPrice
|
|
goodsTotalPrice = goodsTotalPrice
|
|
- .add(goodsEntity.getRetailPrice().multiply(new BigDecimal(goodsEntity.getGoodsNumber()))).setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
+ .add(goodsEntity.getRetailPrice().multiply(new BigDecimal(goodsEntity.getSellVolume()))).setScale(2, RoundingMode.HALF_UP);
|
|
fullCutCouponDec = fullCutCouponDec
|
|
fullCutCouponDec = fullCutCouponDec
|
|
.add(goodsEntity.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP);
|
|
.add(goodsEntity.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP);
|
|
actualPrice = actualPrice
|
|
actualPrice = actualPrice
|
|
@@ -4562,7 +4576,7 @@ public class OrderServiceImpl implements OrderService {
|
|
orderGoodsVo.setDiscountedPrice(goodsDto.getDiscountedPrice());
|
|
orderGoodsVo.setDiscountedPrice(goodsDto.getDiscountedPrice());
|
|
orderGoodsVo.setActualPaymentAmount(goodsDto.getActualPaymentAmount());
|
|
orderGoodsVo.setActualPaymentAmount(goodsDto.getActualPaymentAmount());
|
|
|
|
|
|
- orderGoodsVo.setNumber(goodsDto.getGoodsNumber());
|
|
|
|
|
|
+ orderGoodsVo.setNumber(goodsDto.getSellVolume());
|
|
// orderGoodsVo.setGoods_specification_name_value(goodsDto.get);
|
|
// orderGoodsVo.setGoods_specification_name_value(goodsDto.get);
|
|
// orderGoodsVo.setGoods_specification_ids(goodsItem.getGoods_specification_ids());
|
|
// orderGoodsVo.setGoods_specification_ids(goodsItem.getGoods_specification_ids());
|
|
orderGoodsVo.setOrderBizType(Dict.orderBizType.item_10.getItem());
|
|
orderGoodsVo.setOrderBizType(Dict.orderBizType.item_10.getItem());
|
|
@@ -4574,7 +4588,7 @@ public class OrderServiceImpl implements OrderService {
|
|
orderGoodsVo.setSku(goodsDto.getSku());
|
|
orderGoodsVo.setSku(goodsDto.getSku());
|
|
|
|
|
|
|
|
|
|
- BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getGoodsNumber()));
|
|
|
|
|
|
+ BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getSellVolume()));
|
|
BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
|
|
BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
|
|
BigDecimal rate = goodsTotal.divide(orderInfo.getGoods_price(), 2, BigDecimal.ROUND_HALF_UP);//当前商品总价/订单总价(不含运费、不含优惠券)
|
|
BigDecimal rate = goodsTotal.divide(orderInfo.getGoods_price(), 2, BigDecimal.ROUND_HALF_UP);//当前商品总价/订单总价(不含运费、不含优惠券)
|
|
BigDecimal freightPrice = BigDecimal.valueOf(orderInfo.getFreight_price());
|
|
BigDecimal freightPrice = BigDecimal.valueOf(orderInfo.getFreight_price());
|