|
@@ -1,23 +1,53 @@
|
|
|
package com.chelvc.cloud.vehicle.server.service.impl;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.chelvc.cloud.uc.api.model.Scope;
|
|
|
import com.chelvc.cloud.uc.api.service.EmployeeService;
|
|
|
-import com.chelvc.cloud.vehicle.api.dto.*;
|
|
|
+import com.chelvc.cloud.vehicle.api.dto.CalcAmountDTO;
|
|
|
+import com.chelvc.cloud.vehicle.api.dto.CartPromotionItemDTO;
|
|
|
+import com.chelvc.cloud.vehicle.api.dto.ConfirmOrderResultDTO;
|
|
|
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
|
|
|
+import com.chelvc.cloud.vehicle.api.dto.OmsCartItemDTO;
|
|
|
+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.UserCouponDTO;
|
|
|
import com.chelvc.cloud.vehicle.api.param.OmsOrderModifyParam;
|
|
|
import com.chelvc.cloud.vehicle.api.param.OrderPagingParam;
|
|
|
import com.chelvc.cloud.vehicle.api.util.DateTimeUtils;
|
|
|
import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
|
|
|
import com.chelvc.cloud.vehicle.server.copier.OrderCopier;
|
|
|
import com.chelvc.cloud.vehicle.server.dao.OmsOrderMapper;
|
|
|
-import com.chelvc.cloud.vehicle.server.dao.OmsOrderSettingMapper;
|
|
|
-import com.chelvc.cloud.vehicle.server.entity.*;
|
|
|
-import com.chelvc.cloud.vehicle.server.service.*;
|
|
|
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
|
|
|
+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.MerchantService;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.OmsCartItemService;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.OmsOrderSettingService;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.OrderHandleService;
|
|
|
+import com.chelvc.cloud.vehicle.server.service.UserCouponService;
|
|
|
import com.chelvc.framework.base.context.SessionContextHolder;
|
|
|
-import com.chelvc.framework.base.exception.ResourceUnavailableException;
|
|
|
import com.chelvc.framework.common.model.Pagination;
|
|
|
+import com.chelvc.framework.common.util.AssertUtils;
|
|
|
+import com.chelvc.framework.common.util.ObjectUtils;
|
|
|
import com.chelvc.framework.common.util.StringUtils;
|
|
|
-import com.chelvc.framework.database.util.PagingUtils;
|
|
|
+import com.chelvc.framework.database.context.DatabaseContextHolder;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
import org.apache.http.util.Asserts;
|
|
@@ -25,15 +55,9 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.math.RoundingMode;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
/**
|
|
|
* 订单Service业务层处理
|
|
|
- *
|
|
|
+ *
|
|
|
* @author liude
|
|
|
* @date 2023-11-08
|
|
|
*/
|
|
@@ -47,14 +71,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
|
|
|
private final OmsOrderSettingService orderSettingService;
|
|
|
|
|
|
- private OmsOrderSettingMapper omsOrderSettingMapper;
|
|
|
-
|
|
|
private final IOmsOrderItemService omsOrderItemService;
|
|
|
|
|
|
private final UserCouponService userCouponService;
|
|
|
|
|
|
- private final GoodsService goodsService;
|
|
|
-
|
|
|
private final MerchantService merchantService;
|
|
|
|
|
|
private final EmployeeService employeeService;
|
|
@@ -77,14 +97,16 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
// //获取用户积分
|
|
|
// result.setMemberIntegration(currentMember.getIntegration());
|
|
|
// //获取积分使用规则
|
|
|
-// UmsIntegrationConsumeSetting integrationConsumeSetting = integrationConsumeSettingMapper.selectByPrimaryKey(1L);
|
|
|
+// UmsIntegrationConsumeSetting integrationConsumeSetting = integrationConsumeSettingMapper.selectByPrimaryKey
|
|
|
+// (1L);
|
|
|
// result.setIntegrationConsumeSetting(integrationConsumeSetting);
|
|
|
// //计算总金额、活动优惠、应付金额
|
|
|
CalcAmountDTO calcAmount = calcCartAmount(cartItemList);
|
|
|
result.setCalcAmount(calcAmount);
|
|
|
- List<UserCouponDTO> userCouponList = this.userCouponService.getUserCouponList(userId,calcAmount.getTotalAmount());
|
|
|
+ List<UserCouponDTO> userCouponList = this.userCouponService.getUserCouponList(userId,
|
|
|
+ calcAmount.getTotalAmount());
|
|
|
result.setCouponHistoryDetailList(userCouponList);
|
|
|
- if (!StringUtils.isEmpty(orderParam.getMerchantId())){
|
|
|
+ if (!StringUtils.isEmpty(orderParam.getMerchantId())) {
|
|
|
Merchant merchant = this.merchantService.getById(orderParam.getMerchantId());
|
|
|
result.setMerchantDTO(MerchantCopier.INSTANCE.copying(merchant));
|
|
|
}
|
|
@@ -132,13 +154,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
//使用优惠券
|
|
|
UserCouponDTO userCouponDTO = getUseCoupon(cartPromotionItemList, orderParam.getCouponId());
|
|
|
if (userCouponDTO == null) {
|
|
|
- Asserts.check(true,"该优惠券不可用");
|
|
|
+ Asserts.check(true, "该优惠券不可用");
|
|
|
}
|
|
|
//对下单商品的优惠券进行处理
|
|
|
handleCouponAmount(orderItemList, userCouponDTO);
|
|
|
}
|
|
|
//判断是否使用积分
|
|
|
- if (orderParam.getUseIntegration() == null||orderParam.getUseIntegration().equals(0)) {
|
|
|
+ if (orderParam.getUseIntegration() == null || orderParam.getUseIntegration().equals(0)) {
|
|
|
//不使用积分
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
|
orderItem.setIntegrationAmount(new BigDecimal(0));
|
|
@@ -146,13 +168,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
} else {
|
|
|
//使用积分
|
|
|
BigDecimal totalAmount = calcTotalAmount(orderItemList);
|
|
|
-// BigDecimal integrationAmount = getUseIntegrationAmount(orderParam.getUseIntegration(), totalAmount, currentMember, orderParam.getCouponId() != null);
|
|
|
+// BigDecimal integrationAmount = getUseIntegrationAmount(orderParam.getUseIntegration(), totalAmount,
|
|
|
+// currentMember, orderParam.getCouponId() != null);
|
|
|
// if (integrationAmount.compareTo(new BigDecimal(0)) == 0) {
|
|
|
// Asserts.check(true,"积分不可用");
|
|
|
// } else {
|
|
|
- //可用情况下分摊到可用商品中
|
|
|
+ //可用情况下分摊到可用商品中
|
|
|
// for (OmsOrderItemDTO orderItem : orderItemList) {
|
|
|
-// BigDecimal perAmount = orderItem.getProductPrice().divide(totalAmount, 3, RoundingMode.HALF_EVEN).multiply(integrationAmount);
|
|
|
+// BigDecimal perAmount = orderItem.getProductPrice().divide(totalAmount, 3, RoundingMode
|
|
|
+// .HALF_EVEN).multiply(integrationAmount);
|
|
|
// orderItem.setIntegrationAmount(perAmount);
|
|
|
//// }
|
|
|
// }
|
|
@@ -215,7 +239,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
order.setMerchantId(orderParam.getMerchantId());
|
|
|
//设置自动收货天数
|
|
|
List<OmsOrderSetting> orderSettings = orderSettingService.listOrderSetting();
|
|
|
- if(!CollectionUtils.isEmpty(orderSettings)){
|
|
|
+ if (!CollectionUtils.isEmpty(orderSettings)) {
|
|
|
order.setAutoConfirmDay(orderSettings.get(0).getConfirmOvertime());
|
|
|
}
|
|
|
//插入order表和order_item表
|
|
@@ -232,7 +256,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
//如使用积分需要扣除积分
|
|
|
// if (orderParam.getUseIntegration() != null) {
|
|
|
// order.setUseIntegration(orderParam.getUseIntegration());
|
|
|
-// memberService.updateIntegration(currentMember.getId(), currentMember.getIntegration() - orderParam.getUseIntegration());
|
|
|
+// memberService.updateIntegration(currentMember.getId(), currentMember.getIntegration() - orderParam
|
|
|
+// .getUseIntegration());
|
|
|
// }
|
|
|
//删除购物车中的下单商品
|
|
|
deleteCartItemList(cartPromotionItemList, userId);
|
|
@@ -260,14 +285,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
|
|
|
@Override
|
|
|
public Integer cancelTimeOutOrder() {
|
|
|
- Integer count=0;
|
|
|
+ Integer count = 0;
|
|
|
//查询订单设置
|
|
|
List<OmsOrderSetting> orderSettings = orderSettingService.listOrderSetting();
|
|
|
- if(!CollectionUtils.isEmpty(orderSettings)){
|
|
|
- Asserts.check(true,"未设置订单超时设置!");
|
|
|
+ if (!CollectionUtils.isEmpty(orderSettings)) {
|
|
|
+ Asserts.check(true, "未设置订单超时设置!");
|
|
|
}
|
|
|
//查询超时、未支付的订单及订单详情
|
|
|
- List<OmsOrderDetailDTO> timeOutOrders = this.baseMapper.getTimeOutOrders(orderSettings.get(0).getNormalOrderOvertime());
|
|
|
+ List<OmsOrderDetailDTO> timeOutOrders =
|
|
|
+ this.baseMapper.getTimeOutOrders(orderSettings.get(0).getNormalOrderOvertime());
|
|
|
if (CollectionUtils.isEmpty(timeOutOrders)) {
|
|
|
return count;
|
|
|
}
|
|
@@ -285,7 +311,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
//返还使用积分
|
|
|
// if (timeOutOrder.getUseIntegration() != null) {
|
|
|
// UmsMember member = memberService.getById(timeOutOrder.getMemberId());
|
|
|
-// memberService.updateIntegration(timeOutOrder.getMemberId(), member.getIntegration() + timeOutOrder.getUseIntegration());
|
|
|
+// memberService.updateIntegration(timeOutOrder.getMemberId(), member.getIntegration() + timeOutOrder
|
|
|
+// .getUseIntegration());
|
|
|
// }
|
|
|
}
|
|
|
return timeOutOrders.size();
|
|
@@ -317,7 +344,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
//返还使用积分
|
|
|
// if (cancelOrder.getUseIntegration() != null) {
|
|
|
// UmsMember member = memberService.getById(cancelOrder.getMemberId());
|
|
|
-// memberService.updateIntegration(cancelOrder.getMemberId(), member.getIntegration() + cancelOrder.getUseIntegration());
|
|
|
+// memberService.updateIntegration(cancelOrder.getMemberId(), member.getIntegration() + cancelOrder
|
|
|
+// .getUseIntegration());
|
|
|
// }
|
|
|
}
|
|
|
}
|
|
@@ -335,56 +363,58 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
public void confirmReceiveOrder(Long orderId) {
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
OmsOrder order = this.baseMapper.selectOmsOrderById(orderId);
|
|
|
- if(!userId.equals(order.getUserId())){
|
|
|
- Asserts.check(true,"不能确认他人订单!");
|
|
|
+ if (!userId.equals(order.getUserId())) {
|
|
|
+ Asserts.check(true, "不能确认他人订单!");
|
|
|
}
|
|
|
- if(order.getStatus()!=3){
|
|
|
- Asserts.check(true,"该订单还未发货!");
|
|
|
+ if (order.getStatus() != 3) {
|
|
|
+ Asserts.check(true, "该订单还未发货!");
|
|
|
}
|
|
|
order.setStatus(4);
|
|
|
order.setConfirmStatus(1);
|
|
|
order.setReceiveTime(new Date());
|
|
|
this.baseMapper.updateById(order);
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
- public Pagination<OmsOrderDTO> getOrderPaging(OrderPagingParam param){
|
|
|
+ public Pagination<OmsOrderDTO> getOrderPaging(OrderPagingParam param) {
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
Page<OmsOrder> page = this.lambdaQuery()
|
|
|
- .eq(OmsOrder :: getStatus,param.getStatus())
|
|
|
- .orderByDesc(OmsOrder :: getCreateTime)
|
|
|
- .page(PagingUtils.convert(param.getPaging()));
|
|
|
- Pagination<OmsOrderDTO> pagination = PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
|
|
|
- pagination.getRecords().forEach(item ->{
|
|
|
+ .eq(OmsOrder::getStatus, param.getStatus())
|
|
|
+ .orderByDesc(OmsOrder::getCreateTime)
|
|
|
+ .page(DatabaseContextHolder.page(param.getPaging()));
|
|
|
+ Pagination<OmsOrderDTO> pagination = DatabaseContextHolder.pagination(page, OrderCopier.INSTANCE::copying);
|
|
|
+ pagination.getRecords().forEach(item -> {
|
|
|
item.setGoodsInfo(this.omsOrderItemService.getOrderItemByOrderId(item.getId()));
|
|
|
});
|
|
|
return pagination;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Pagination<OmsOrderDTO> getOmsOrderPaging(OrderPagingParam param){
|
|
|
+ public Pagination<OmsOrderDTO> getOmsOrderPaging(OrderPagingParam param) {
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
- if (this.employeeService.isAdmin(userId)){
|
|
|
+ Scope scope = StringUtils.ifEmpty(SessionContextHolder.getScope(), Scope::parse);
|
|
|
+ if (scope == Scope.ADMIN) {
|
|
|
Page<OmsOrder> page = this.lambdaQuery()
|
|
|
- .eq(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatus())
|
|
|
- .orderByDesc(OmsOrder :: getCreateTime)
|
|
|
- .page(PagingUtils.convert(param.getPaging()));
|
|
|
- Pagination<OmsOrderDTO> pagination = PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
|
|
|
- pagination.getRecords().forEach(item ->{
|
|
|
+ .eq(StringUtils.notEmpty(param.getStatus()), OmsOrder::getStatus, param.getStatus())
|
|
|
+ .orderByDesc(OmsOrder::getCreateTime)
|
|
|
+ .page(DatabaseContextHolder.page(param.getPaging()));
|
|
|
+ Pagination<OmsOrderDTO> pagination = DatabaseContextHolder.pagination(page, OrderCopier.INSTANCE::copying);
|
|
|
+ pagination.getRecords().forEach(item -> {
|
|
|
item.setGoodsInfo(this.omsOrderItemService.getOrderItemByOrderId(item.getId()));
|
|
|
});
|
|
|
return pagination;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
|
|
|
- if (!StringUtils.nonEmpty(merchants)){
|
|
|
+ if (ObjectUtils.isEmpty(merchants)) {
|
|
|
return null;
|
|
|
}
|
|
|
Page<OmsOrder> page = this.lambdaQuery()
|
|
|
- .eq(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatus())
|
|
|
- .in(OmsOrder :: getMerchantId,merchants)
|
|
|
- .orderByDesc(OmsOrder :: getCreateTime)
|
|
|
- .page(PagingUtils.convert(param.getPaging()));
|
|
|
- Pagination<OmsOrderDTO> pagination = PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
|
|
|
- pagination.getRecords().forEach(item ->{
|
|
|
+ .eq(StringUtils.notEmpty(param.getStatus()), OmsOrder::getStatus, param.getStatus())
|
|
|
+ .in(OmsOrder::getMerchantId, merchants)
|
|
|
+ .orderByDesc(OmsOrder::getCreateTime)
|
|
|
+ .page(DatabaseContextHolder.page(param.getPaging()));
|
|
|
+ Pagination<OmsOrderDTO> pagination = DatabaseContextHolder.pagination(page, OrderCopier.INSTANCE::copying);
|
|
|
+ pagination.getRecords().forEach(item -> {
|
|
|
item.setGoodsInfo(this.omsOrderItemService.getOrderItemByOrderId(item.getId()));
|
|
|
});
|
|
|
return pagination;
|
|
@@ -398,7 +428,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
orderItem.setOrderId(orderId);
|
|
|
List<OmsOrderItem> orderItemList = omsOrderItemService.selectByExample(orderItem);
|
|
|
OmsOrderDetailDTO orderDetail = new OmsOrderDetailDTO();
|
|
|
- BeanUtils.copyProperties(omsOrder,orderDetail);
|
|
|
+ BeanUtils.copyProperties(omsOrder, orderDetail);
|
|
|
// orderDetail.setOrderItemList(orderItemList);
|
|
|
return orderDetail;
|
|
|
}
|
|
@@ -407,14 +437,14 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
public void deleteOrder(Long orderId) {
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
OmsOrder order = this.baseMapper.selectOmsOrderById(orderId);
|
|
|
- if(!userId.equals(order.getUserId())){
|
|
|
- Asserts.check(true,"不能删除他人订单!");
|
|
|
+ if (!userId.equals(order.getUserId())) {
|
|
|
+ Asserts.check(true, "不能删除他人订单!");
|
|
|
}
|
|
|
- if(order.getStatus()==4||order.getStatus()==5){
|
|
|
+ if (order.getStatus() == 4 || order.getStatus() == 5) {
|
|
|
order.setDeleteStatus(1);
|
|
|
this.baseMapper.updateById(order);
|
|
|
- }else{
|
|
|
- Asserts.check(true,"只能删除已完成或已关闭的订单!");
|
|
|
+ } else {
|
|
|
+ Asserts.check(true, "只能删除已完成或已关闭的订单!");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -446,7 +476,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
for (OmsCartItemDTO cartPromotionItem : cartPromotionItemList) {
|
|
|
ids.add(cartPromotionItem.getId());
|
|
|
}
|
|
|
- omsCartItemService.delete(ids,userId);
|
|
|
+ omsCartItemService.delete(ids, userId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -475,18 +505,18 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* 将优惠券信息更改为指定状态
|
|
|
*
|
|
|
* @param couponId 优惠券id
|
|
|
- * @param userId 会员id
|
|
|
+ * @param userId 会员id
|
|
|
* @param useStatus 0->未使用;1->已使用
|
|
|
*/
|
|
|
private void updateCouponStatus(Long couponId, Long userId, Integer useStatus) {
|
|
|
if (couponId == null) return;
|
|
|
//查询第一张优惠券
|
|
|
- UserCoupon example = this.userCouponService.getUserCouponInfo(couponId,userId);
|
|
|
- if (null == example){
|
|
|
+ UserCoupon example = this.userCouponService.getUserCouponInfo(couponId, userId);
|
|
|
+ if (null == example) {
|
|
|
return;
|
|
|
}
|
|
|
example.setUsed(useStatus);
|
|
|
- this.userCouponService.updateUserCouponUserd(example,couponId,userId);
|
|
|
+ this.userCouponService.updateUserCouponUserd(example, couponId, userId);
|
|
|
}
|
|
|
|
|
|
private void handleRealAmount(List<OmsOrderItem> orderItemList) {
|
|
@@ -536,7 +566,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
BigDecimal integrationAmount = new BigDecimal(0);
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
|
if (orderItem.getIntegrationAmount() != null) {
|
|
|
- integrationAmount = integrationAmount.add(orderItem.getIntegrationAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
+ integrationAmount =
|
|
|
+ integrationAmount.add(orderItem.getIntegrationAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
}
|
|
|
}
|
|
|
return integrationAmount;
|
|
@@ -549,7 +580,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
BigDecimal couponAmount = new BigDecimal(0);
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
|
if (orderItem.getCouponAmount() != null) {
|
|
|
- couponAmount = couponAmount.add(orderItem.getCouponAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
+ couponAmount =
|
|
|
+ couponAmount.add(orderItem.getCouponAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
}
|
|
|
}
|
|
|
return couponAmount;
|
|
@@ -562,7 +594,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
BigDecimal promotionAmount = new BigDecimal(0);
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
|
if (orderItem.getPromotionAmount() != null) {
|
|
|
- promotionAmount = promotionAmount.add(orderItem.getPromotionAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
+ promotionAmount =
|
|
|
+ promotionAmount.add(orderItem.getPromotionAmount().multiply(new BigDecimal(orderItem.getGoodsQuantity())));
|
|
|
}
|
|
|
}
|
|
|
return promotionAmount;
|
|
@@ -576,7 +609,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* @param currentMember 使用的用户
|
|
|
* @param hasCoupon 是否已经使用优惠券
|
|
|
*/
|
|
|
-// private BigDecimal getUseIntegrationAmount(Integer useIntegration, BigDecimal totalAmount, UmsMember currentMember, boolean hasCoupon) {
|
|
|
+// private BigDecimal getUseIntegrationAmount(Integer useIntegration, BigDecimal totalAmount, UmsMember
|
|
|
+// currentMember, boolean hasCoupon) {
|
|
|
// BigDecimal zeroAmount = new BigDecimal(0);
|
|
|
// //判断用户是否有这么多积分
|
|
|
// if (useIntegration.compareTo(currentMember.getIntegration()) > 0) {
|
|
@@ -584,7 +618,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
// }
|
|
|
// //根据积分使用规则判断是否可用
|
|
|
// //是否可与优惠券共用
|
|
|
-// UmsIntegrationConsumeSetting integrationConsumeSetting = integrationConsumeSettingMapper.selectByPrimaryKey(1L);
|
|
|
+// UmsIntegrationConsumeSetting integrationConsumeSetting = integrationConsumeSettingMapper.selectByPrimaryKey
|
|
|
+// (1L);
|
|
|
// if (hasCoupon && integrationConsumeSetting.getCouponStatus().equals(0)) {
|
|
|
// //不可与优惠券共用
|
|
|
// return zeroAmount;
|
|
@@ -594,8 +629,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
// return zeroAmount;
|
|
|
// }
|
|
|
// //是否超过订单抵用最高百分比
|
|
|
-// BigDecimal integrationAmount = new BigDecimal(useIntegration).divide(new BigDecimal(integrationConsumeSetting.getUseUnit()), 2, RoundingMode.HALF_EVEN);
|
|
|
-// BigDecimal maxPercent = new BigDecimal(integrationConsumeSetting.getMaxPercentPerOrder()).divide(new BigDecimal(100), 2, RoundingMode.HALF_EVEN);
|
|
|
+// BigDecimal integrationAmount = new BigDecimal(useIntegration).divide(new BigDecimal
|
|
|
+// (integrationConsumeSetting.getUseUnit()), 2, RoundingMode.HALF_EVEN);
|
|
|
+// BigDecimal maxPercent = new BigDecimal(integrationConsumeSetting.getMaxPercentPerOrder()).divide(new
|
|
|
+// BigDecimal(100), 2, RoundingMode.HALF_EVEN);
|
|
|
// if (integrationAmount.compareTo(totalAmount.multiply(maxPercent)) > 0) {
|
|
|
// return zeroAmount;
|
|
|
// }
|
|
@@ -605,7 +642,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
/**
|
|
|
* 对优惠券优惠进行处理
|
|
|
*
|
|
|
- * @param orderItemList order_item列表
|
|
|
+ * @param orderItemList order_item列表
|
|
|
* @param userCouponDTO 可用优惠券详情
|
|
|
*/
|
|
|
private void handleCouponAmount(List<OmsOrderItem> orderItemList, UserCouponDTO userCouponDTO) {
|
|
@@ -632,7 +669,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
BigDecimal totalAmount = calcTotalAmount(orderItemList);
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
|
//(商品价格/可用商品总价)*优惠券面额
|
|
|
- BigDecimal couponAmount = orderItem.getGoodsPrice().divide(totalAmount, 3, RoundingMode.HALF_EVEN).multiply(BigDecimal.valueOf(coupon.getAmount()));
|
|
|
+ BigDecimal couponAmount =
|
|
|
+ orderItem.getGoodsPrice().divide(totalAmount, 3, RoundingMode.HALF_EVEN).multiply(BigDecimal.valueOf(coupon.getAmount()));
|
|
|
orderItem.setCouponAmount(couponAmount);
|
|
|
}
|
|
|
}
|
|
@@ -644,11 +682,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* @param orderItemList 下单商品
|
|
|
* @param type 使用关系类型:0->相关分类;1->指定商品
|
|
|
*/
|
|
|
- private List<OmsOrderItem> getCouponOrderItemByRelation(UserCouponDTO couponHistoryDetail, List<OmsOrderItem> orderItemList, int type) {
|
|
|
+ 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()) {
|
|
|
+// for (SmsCouponProductCategoryRelation productCategoryRelation : couponHistoryDetail
|
|
|
+// .getCategoryRelationList()) {
|
|
|
// categoryIdList.add(productCategoryRelation.getProductCategoryId());
|
|
|
// }
|
|
|
for (OmsOrderItem orderItem : orderItemList) {
|
|
@@ -718,7 +758,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
*/
|
|
|
private boolean hasStock(List<CartPromotionItemDTO> cartPromotionItemList) {
|
|
|
for (CartPromotionItemDTO cartPromotionItem : cartPromotionItemList) {
|
|
|
- if (cartPromotionItem.getRealStock()==null||cartPromotionItem.getRealStock() <= 0) {
|
|
|
+ if (cartPromotionItem.getRealStock() == null || cartPromotionItem.getRealStock() <= 0) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
@@ -729,13 +769,15 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
* 计算购物车中商品的价格
|
|
|
*/
|
|
|
private CalcAmountDTO calcCartAmount(List<OmsCartItemDTO> cartPromotionItemList) {
|
|
|
- CalcAmountDTO calcAmount = new CalcAmountDTO();
|
|
|
+ CalcAmountDTO calcAmount = new CalcAmountDTO();
|
|
|
calcAmount.setFreightAmount(new BigDecimal(0));
|
|
|
BigDecimal totalAmount = new BigDecimal("0");
|
|
|
BigDecimal promotionAmount = new BigDecimal("0");
|
|
|
for (OmsCartItemDTO cartPromotionItem : cartPromotionItemList) {
|
|
|
- totalAmount = totalAmount.add(cartPromotionItem.getPrice().multiply(new BigDecimal(cartPromotionItem.getQuantity())));
|
|
|
-// promotionAmount = promotionAmount.add(cartPromotionItem.getReduceAmount().multiply(new BigDecimal(cartPromotionItem.getQuantity())));
|
|
|
+ totalAmount =
|
|
|
+ totalAmount.add(cartPromotionItem.getPrice().multiply(new BigDecimal(cartPromotionItem.getQuantity())));
|
|
|
+// promotionAmount = promotionAmount.add(cartPromotionItem.getReduceAmount().multiply(new BigDecimal
|
|
|
+// (cartPromotionItem.getQuantity())));
|
|
|
}
|
|
|
calcAmount.setTotalAmount(totalAmount);
|
|
|
calcAmount.setPromotionAmount(promotionAmount);
|
|
@@ -744,48 +786,42 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String,Object> getOrderQuantity(Long merchantId){
|
|
|
- Map<String,Object> map = this.baseMapper.getOrderQuantity(merchantId);
|
|
|
- if (map.get("orderCount").toString().equals("0")){
|
|
|
- map.put("amount",0);
|
|
|
+ public Map<String, Object> getOrderQuantity(Long merchantId) {
|
|
|
+ Map<String, Object> map = this.baseMapper.getOrderQuantity(merchantId);
|
|
|
+ if (map.get("orderCount").toString().equals("0")) {
|
|
|
+ map.put("amount", 0);
|
|
|
}
|
|
|
return map;
|
|
|
}
|
|
|
+
|
|
|
@Override
|
|
|
- public Pagination<OmsOrderDTO> getMerchantOrderPaging(OrderPagingParam param){
|
|
|
+ public Pagination<OmsOrderDTO> getMerchantOrderPaging(OrderPagingParam param) {
|
|
|
Long userId = SessionContextHolder.getId();
|
|
|
List<Long> merchants = this.merchantService.getMerchantIdsByUserId(userId);
|
|
|
- if (!StringUtils.nonEmpty(merchants)){
|
|
|
+ if (ObjectUtils.isEmpty(merchants)) {
|
|
|
return null;
|
|
|
}
|
|
|
Page<OmsOrder> page = this.lambdaQuery()
|
|
|
- .in(StringUtils.nonEmpty(param.getStatus()),OmsOrder :: getStatus,param.getStatuses())
|
|
|
- .in(OmsOrder::getMerchantId,merchants)
|
|
|
- .orderByDesc(OmsOrder :: getCreateTime)
|
|
|
- .page(PagingUtils.convert(param.getPaging()));
|
|
|
- Pagination<OmsOrderDTO> pagination = PagingUtils.convert(page, OrderCopier.INSTANCE::copying);
|
|
|
- pagination.getRecords().forEach(item ->{
|
|
|
- item.setGoodsInfo(this.omsOrderItemService.getOrderItemByOrderId(item.getId()));
|
|
|
+ .in(StringUtils.notEmpty(param.getStatus()), OmsOrder::getStatus, param.getStatuses())
|
|
|
+ .in(OmsOrder::getMerchantId, merchants)
|
|
|
+ .orderByDesc(OmsOrder::getCreateTime)
|
|
|
+ .page(DatabaseContextHolder.page(param.getPaging()));
|
|
|
+ Pagination<OmsOrderDTO> pagination = DatabaseContextHolder.pagination(page, OrderCopier.INSTANCE::copying);
|
|
|
+ pagination.getRecords().forEach(item -> {
|
|
|
+ item.setGoodsInfo(this.omsOrderItemService.getOrderItemByOrderId(item.getId()));
|
|
|
});
|
|
|
return pagination;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void orderVerification(Long orderId, Long merchantId) {
|
|
|
- if(orderId == null){
|
|
|
- throw new ResourceUnavailableException("订单不存在");
|
|
|
- }
|
|
|
+ AssertUtils.available(orderId, "订单不存在");
|
|
|
OmsOrder omsOrder = baseMapper.selectById(orderId);
|
|
|
- if(omsOrder == null){
|
|
|
- throw new ResourceUnavailableException("订单不存在");
|
|
|
- }
|
|
|
- if(omsOrder.getMerchantId() == null || !omsOrder.getMerchantId().equals(merchantId)){
|
|
|
- throw new ResourceUnavailableException("该订单商品不属于此商家");
|
|
|
- }
|
|
|
+ AssertUtils.available(omsOrder, "订单不存在");
|
|
|
+ AssertUtils.available(omsOrder.getMerchantId() != null && omsOrder.getMerchantId().equals(merchantId),
|
|
|
+ "该订单商品不属于此商家");
|
|
|
Integer status = omsOrder.getStatus();
|
|
|
- if(status != 1){
|
|
|
- throw new ResourceUnavailableException("该订单不可用");
|
|
|
- }
|
|
|
+ AssertUtils.available(status == 1, "该订单不可用");
|
|
|
orderHandleService.handleOrder(omsOrder);
|
|
|
}
|
|
|
|