|
@@ -20,22 +20,21 @@ import com.chelvc.cloud.vehicle.api.dto.OmsOrderDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.dto.OmsOrderDetailDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.dto.OmsOrderExampleDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.dto.OmsOrderItemDTO;
|
|
|
-import com.chelvc.cloud.vehicle.api.dto.OmsOrderItemExampleDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.param.OmsOrderModifyParam;
|
|
|
import com.chelvc.cloud.vehicle.api.param.OrderPagingParam;
|
|
|
-import com.chelvc.cloud.vehicle.api.service.UserCouponService;
|
|
|
import com.chelvc.cloud.vehicle.server.copier.OrderCopier;
|
|
|
-import com.chelvc.cloud.vehicle.server.dao.OmsOrderItemMapper;
|
|
|
import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
|
|
|
import com.chelvc.cloud.vehicle.server.dao.OmsOrderSettingMapper;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrderSetting;
|
|
|
+import com.chelvc.cloud.vehicle.server.entity.UserCoupon;
|
|
|
import com.chelvc.cloud.vehicle.server.service.IOmsOrderItemService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.IOmsOrderService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.OmsOrderSettingService;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.UserCouponService;
|
|
|
import com.chelvc.framework.base.context.SessionContextHolder;
|
|
|
import com.chelvc.framework.common.model.Pagination;
|
|
|
import com.chelvc.framework.common.util.StringUtils;
|
|
@@ -74,6 +73,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
List<OmsCartItemDTO> cartItemList = omsCartItemService.listPromotion(orderParam.getCartIds());
|
|
|
result.setCartItemList(cartItemList);
|
|
|
+ List<UserCouponDTO> userCouponList = this.userCouponService.getUserCouponList(userId);
|
|
|
+ result.setCouponHistoryDetailList(userCouponList);
|
|
|
// //获取用户收货地址列表
|
|
|
// List<UmsMemberReceiveAddress> memberReceiveAddressList = memberReceiveAddressService.list();
|
|
|
// result.setMemberReceiveAddressList(memberReceiveAddressList);
|
|
@@ -129,12 +130,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
}
|
|
|
} else {
|
|
|
//使用优惠券
|
|
|
- UserCouponDTO couponHistoryDetail = getUseCoupon(cartPromotionItemList, orderParam.getCouponId());
|
|
|
- if (couponHistoryDetail == null) {
|
|
|
+ UserCouponDTO userCouponDTO = getUseCoupon(cartPromotionItemList, orderParam.getCouponId());
|
|
|
+ if (userCouponDTO == null) {
|
|
|
Asserts.check(true,"该优惠券不可用");
|
|
|
}
|
|
|
//对下单商品的优惠券进行处理
|
|
|
-// handleCouponAmount(orderItemList, couponHistoryDetail);
|
|
|
+ handleCouponAmount(orderItemList, userCouponDTO);
|
|
|
}
|
|
|
//判断是否使用积分
|
|
|
if (orderParam.getUseIntegration() == null||orderParam.getUseIntegration().equals(0)) {
|
|
@@ -157,7 +158,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
// }
|
|
|
}
|
|
|
//计算order_item的实付金额
|
|
|
-// handleRealAmount(orderItemList);
|
|
|
+ handleRealAmount(orderItemList);
|
|
|
//进行库存锁定
|
|
|
// lockStock(cartPromotionItemList);
|
|
|
//根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
|
|
@@ -225,7 +226,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
omsOrderItemService.add(orderItemList);
|
|
|
//如使用优惠券更新优惠券使用状态
|
|
|
if (orderParam.getCouponId() != null) {
|
|
|
-// updateCouponStatus(orderParam.getCouponId(), userId, 1);
|
|
|
+ updateCouponStatus(orderParam.getCouponId(), userId, true);
|
|
|
}
|
|
|
//如使用积分需要扣除积分
|
|
|
// if (orderParam.getUseIntegration() != null) {
|
|
@@ -251,9 +252,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
order.setPayType(payType);
|
|
|
this.baseMapper.updateById(order);
|
|
|
//恢复所有下单商品的锁定库存,扣减真实库存
|
|
|
- List<OmsOrderItemDTO> orderDetailList = this.baseMapper.getDetail(orderId);
|
|
|
- int count = this.baseMapper.updateSkuStock(orderDetailList);
|
|
|
- return count;
|
|
|
+// List<OmsOrderItemDTO> orderDetailList = this.baseMapper.getDetail(orderId);
|
|
|
+// int count = this.baseMapper.updateSkuStock(orderDetailList);
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -279,7 +280,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
//解除订单商品库存锁定
|
|
|
// omsOrderMapper.releaseSkuStockLock(timeOutOrder.getOrderItemList());
|
|
|
//修改优惠券使用状态
|
|
|
-// updateCouponStatus(timeOutOrder.getCouponId(), timeOutOrder.getUserId(), 0);
|
|
|
+ updateCouponStatus(timeOutOrder.getCouponId(), timeOutOrder.getUserId(), false);
|
|
|
//返还使用积分
|
|
|
// if (timeOutOrder.getUseIntegration() != null) {
|
|
|
// UmsMember member = memberService.getById(timeOutOrder.getMemberId());
|
|
@@ -307,11 +308,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
orderItem.setOrderId(orderId);
|
|
|
List<OmsOrderItem> orderItemList = this.omsOrderItemService.selectByExample(orderItem);
|
|
|
//解除订单商品库存锁定
|
|
|
- if (!CollectionUtils.isEmpty(orderItemList)) {
|
|
|
- this.baseMapper.releaseSkuStockLock(orderItemList);
|
|
|
- }
|
|
|
+// if (!CollectionUtils.isEmpty(orderItemList)) {
|
|
|
+// this.baseMapper.releaseSkuStockLock(orderItemList);
|
|
|
+// }
|
|
|
//修改优惠券使用状态
|
|
|
-// updateCouponStatus(cancelOrder.getCouponId(), cancelOrder.getUserId(), 0);
|
|
|
+ updateCouponStatus(cancelOrder.getCouponId(), cancelOrder.getUserId(), false);
|
|
|
//返还使用积分
|
|
|
// if (cancelOrder.getUseIntegration() != null) {
|
|
|
// UmsMember member = memberService.getById(cancelOrder.getMemberId());
|
|
@@ -442,30 +443,26 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
return sum;
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 将优惠券信息更改为指定状态
|
|
|
-// *
|
|
|
-// * @param couponId 优惠券id
|
|
|
-// * @param memberId 会员id
|
|
|
-// * @param useStatus 0->未使用;1->已使用
|
|
|
-// */
|
|
|
-// private void updateCouponStatus(Long couponId, Long memberId, Integer useStatus) {
|
|
|
-// if (couponId == null) return;
|
|
|
-// //查询第一张优惠券
|
|
|
-// UserCouponDTO example = new omsCartItemService();
|
|
|
-// example.createCriteria().andMemberIdEqualTo(memberId)
|
|
|
-// .andCouponIdEqualTo(couponId).andUseStatusEqualTo(useStatus == 0 ? 1 : 0);
|
|
|
-// List<SmsCouponHistory> couponHistoryList = couponHistoryMapper.selectByExample(example);
|
|
|
-// if (!CollectionUtils.isEmpty(couponHistoryList)) {
|
|
|
-// SmsCouponHistory couponHistory = couponHistoryList.get(0);
|
|
|
-// couponHistory.setUseTime(new Date());
|
|
|
-// couponHistory.setUseStatus(useStatus);
|
|
|
-// couponHistoryMapper.updateByPrimaryKeySelective(couponHistory);
|
|
|
-// }
|
|
|
-// }
|
|
|
+ /**
|
|
|
+ * 将优惠券信息更改为指定状态
|
|
|
+ *
|
|
|
+ * @param couponId 优惠券id
|
|
|
+ * @param userId 会员id
|
|
|
+ * @param useStatus 0->未使用;1->已使用
|
|
|
+ */
|
|
|
+ private void updateCouponStatus(Long couponId, Long userId, Boolean useStatus) {
|
|
|
+ if (couponId == null) return;
|
|
|
+ //查询第一张优惠券
|
|
|
+ UserCoupon example = this.userCouponService.getUserCouponInfo(couponId,userId);
|
|
|
+ if (null == example){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ example.setUsed(useStatus);
|
|
|
+ this.userCouponService.updateUserCouponUserd(example,couponId,userId);
|
|
|
+ }
|
|
|
|
|
|
- private void handleRealAmount(List<OmsOrderItemDTO> orderItemList) {
|
|
|
- for (OmsOrderItemDTO orderItem : orderItemList) {
|
|
|
+ private void handleRealAmount(List<OmsOrderItem> orderItemList) {
|
|
|
+ for (OmsOrderItem orderItem : orderItemList) {
|
|
|
//原价-促销优惠-优惠券抵扣-积分抵扣
|
|
|
BigDecimal realAmount = orderItem.getGoodsPrice()
|
|
|
.subtract(orderItem.getPromotionAmount())
|
|
@@ -581,23 +578,22 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* 对优惠券优惠进行处理
|
|
|
*
|
|
|
* @param orderItemList order_item列表
|
|
|
- * @param couponHistoryDetail 可用优惠券详情
|
|
|
+ * @param userCouponDTO 可用优惠券详情
|
|
|
*/
|
|
|
-// private void handleCouponAmount(List<OmsOrderItemDTO> orderItemList, UserCouponDTO couponHistoryDetail) {
|
|
|
-// CouponDTO coupon = couponHistoryDetail.getCoupon();
|
|
|
-// if (coupon.getUseType().equals(0)) {
|
|
|
-// //全场通用
|
|
|
-// calcPerCouponAmount(orderItemList, coupon);
|
|
|
-// } else if (coupon.getUseType().equals(1)) {
|
|
|
-// //指定分类
|
|
|
-// List<OmsOrderItemDTO> couponOrderItemList = getCouponOrderItemByRelation(couponHistoryDetail, orderItemList, 0);
|
|
|
-// calcPerCouponAmount(couponOrderItemList, coupon);
|
|
|
-// } else if (coupon.getUseType().equals(2)) {
|
|
|
-// //指定商品
|
|
|
-// List<OmsOrderItemDTO> couponOrderItemList = getCouponOrderItemByRelation(couponHistoryDetail, orderItemList, 1);
|
|
|
-// calcPerCouponAmount(couponOrderItemList, coupon);
|
|
|
-// }
|
|
|
-// }
|
|
|
+ private void handleCouponAmount(List<OmsOrderItem> orderItemList, UserCouponDTO userCouponDTO) {
|
|
|
+ if (userCouponDTO.getType().equals(0)) {
|
|
|
+ //全场通用
|
|
|
+ calcPerCouponAmount(orderItemList, userCouponDTO.getCouponDTO());
|
|
|
+ } else if (userCouponDTO.getType().equals(1)) {
|
|
|
+ //指定分类
|
|
|
+ List<OmsOrderItem> couponOrderItemList = getCouponOrderItemByRelation(userCouponDTO, orderItemList, 0);
|
|
|
+ calcPerCouponAmount(couponOrderItemList, userCouponDTO.getCouponDTO());
|
|
|
+ } else if (userCouponDTO.getType().equals(2)) {
|
|
|
+ //指定商品
|
|
|
+ List<OmsOrderItem> couponOrderItemList = getCouponOrderItemByRelation(userCouponDTO, orderItemList, 1);
|
|
|
+ calcPerCouponAmount(couponOrderItemList, userCouponDTO.getCouponDTO());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 对每个下单商品进行优惠券金额分摊的计算
|
|
@@ -620,35 +616,35 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* @param orderItemList 下单商品
|
|
|
* @param type 使用关系类型:0->相关分类;1->指定商品
|
|
|
*/
|
|
|
-// private List<OmsOrderItemDTO> getCouponOrderItemByRelation(UserCouponDTO couponHistoryDetail, List<OmsOrderItemDTO> orderItemList, int type) {
|
|
|
-// List<OmsOrderItemDTO> result = new ArrayList<>();
|
|
|
-// if (type == 0) {
|
|
|
-// List<Long> categoryIdList = new ArrayList<>();
|
|
|
+ private List<OmsOrderItem> getCouponOrderItemByRelation(UserCouponDTO couponHistoryDetail, List<OmsOrderItem> orderItemList, int type) {
|
|
|
+ List<OmsOrderItem> result = new ArrayList<>();
|
|
|
+ if (type == 0) {
|
|
|
+ List<Long> categoryIdList = new ArrayList<>();
|
|
|
// for (SmsCouponProductCategoryRelation productCategoryRelation : couponHistoryDetail.getCategoryRelationList()) {
|
|
|
// categoryIdList.add(productCategoryRelation.getProductCategoryId());
|
|
|
// }
|
|
|
-// for (OmsOrderItemDTO orderItem : orderItemList) {
|
|
|
-// if (categoryIdList.contains(orderItem.getProductCategoryId())) {
|
|
|
-// result.add(orderItem);
|
|
|
-// } else {
|
|
|
-// orderItem.setCouponAmount(new BigDecimal(0));
|
|
|
-// }
|
|
|
-// }
|
|
|
-// } else if (type == 1) {
|
|
|
-// List<Long> productIdList = new ArrayList<>();
|
|
|
+ for (OmsOrderItem orderItem : orderItemList) {
|
|
|
+ if (categoryIdList.contains(orderItem.getGoodsCategoryId())) {
|
|
|
+ result.add(orderItem);
|
|
|
+ } else {
|
|
|
+ orderItem.setCouponAmount(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type == 1) {
|
|
|
+ List<Long> productIdList = new ArrayList<>();
|
|
|
// for (SmsCouponProductRelation productRelation : couponHistoryDetail.getProductRelationList()) {
|
|
|
-// productIdList.add(productRelation.getProductId());
|
|
|
-// }
|
|
|
-// for (OmsOrderItemDTO orderItem : orderItemList) {
|
|
|
-// if (productIdList.contains(orderItem.getProductId())) {
|
|
|
-// result.add(orderItem);
|
|
|
-// } else {
|
|
|
-// orderItem.setCouponAmount(new BigDecimal(0));
|
|
|
-// }
|
|
|
+// productIdList.add(productRelation.getGoodsId());
|
|
|
// }
|
|
|
-// }
|
|
|
-// return result;
|
|
|
-// }
|
|
|
+ for (OmsOrderItem orderItem : orderItemList) {
|
|
|
+ if (productIdList.contains(orderItem.getGoodsId())) {
|
|
|
+ result.add(orderItem);
|
|
|
+ } else {
|
|
|
+ orderItem.setCouponAmount(new BigDecimal(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 获取该用户可以使用的优惠券
|