Pārlūkot izejas kodu

订单量以及单日营业额

liude 1 gadu atpakaļ
vecāks
revīzija
38073075c6

+ 23 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/UserCouponService.java

@@ -6,6 +6,8 @@ import com.chelvc.cloud.vehicle.server.entity.UserCoupon;
 import com.chelvc.framework.common.model.Pagination;
 import com.chelvc.framework.common.model.Paging;
 
+import java.util.List;
+
 /**
  * 优惠券领取业务操作接口
  *
@@ -29,4 +31,25 @@ public interface UserCouponService extends IService<UserCoupon> {
     void changeUserCouponInformFlag(Long userId);
 
     Pagination<UserCouponDTO> selectUserCouponListByUserId(Long userId, Paging paging);
+
+    /**
+     * 查询用户得优惠卷
+     * @return
+     */
+    List<UserCouponDTO> getUserCouponList(Long userId);
+
+    /**
+     * 查询用户优惠劵信息
+     * @param couponId
+     * @param userId
+     * @return
+     */
+    UserCoupon getUserCouponInfo(Long couponId,Long userId);
+
+    /**
+     * 用户得优惠劵改为已使用
+     * @param couponId
+     * @param userId
+     */
+    void updateUserCouponUserd(UserCoupon userCoupon,Long couponId,Long userId);
 }

+ 75 - 79
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -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;
+    }
 
     /**
      * 获取该用户可以使用的优惠券

+ 25 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/UserCouponServiceImpl.java

@@ -202,4 +202,29 @@ public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCou
     private UserCouponDTO convert(UserCoupon userCoupon) {
         return UserCouponCopier.INSTANCE.copying(userCoupon);
     }
+
+
+    @Override
+    public List<UserCouponDTO> getUserCouponList(Long userId) {
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getFlag, 0);
+        return UserCouponCopier.INSTANCE.copying(baseMapper.selectList(lwq));
+    }
+
+    @Override
+    public UserCoupon getUserCouponInfo(Long couponId,Long userId){
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getCouponId, couponId);
+        return this.baseMapper.selectOne(lwq);
+    }
+
+    @Override
+    public void updateUserCouponUserd(UserCoupon userCoupon,Long couponId,Long userId){
+        LambdaQueryWrapper<UserCoupon> lwq = Wrappers.lambdaQuery();
+        lwq.eq(UserCoupon::getUserId, userId);
+        lwq.eq(UserCoupon::getCouponId, couponId);
+        this.baseMapper.update(userCoupon,lwq);
+    }
 }